From 02704133f47b1dc7a6256ec9a74fc2f70c5f1c31 Mon Sep 17 00:00:00 2001 From: jenstandstad Date: Sat, 11 Apr 2026 09:21:22 +0200 Subject: [PATCH] Initial commit after recreate --- README.md | 100 + content-budget.md | 378 + deploy.sh | 9 + deployment.md | 679 + dist/assets/ChartSingle-B5EnycUf.js | 1 + dist/assets/DefinitionCard-DjuSxCYC.js | 1 + dist/assets/EquationFocus-CZCQ_h0W.js | 1 + dist/assets/FullscreenSplit-Piv2MROz.js | 1 + dist/assets/FullscreenVideo-T7AJva9H.js | 1 + .../FullscreenVideoCenterCaption-Bbw83wap.js | 1 + dist/assets/FullscreenVideoTitle-DvKvZc4X.js | 1 + dist/assets/GlitchComponentFrame-CM7hKmoe.js | 1 + dist/assets/ProcessFlow-B2obDIQa.js | 1 + dist/assets/QuoteImage-C0EQ3Yny.js | 1 + dist/assets/SquareVideo-GgREJSQR.js | 1 + dist/assets/SquareYellow-DRGJP0IQ.js | 1 + dist/assets/index-D2K-duz6.js | 40 + dist/assets/index-DF-iGj8k.css | 1 + .../glitch/glitch_assumption_toggle/.DS_Store | Bin 0 -> 8196 bytes .../glitch_assumption_toggle/Component.d.ts | 2 + .../assumption-toggle.js | 560 + .../assumption-toggle.js.map | 1 + dist/glitch/glitch_assumption_toggle/dev.d.ts | 1 + .../devHostBridge.d.ts | 8 + .../glitch.manifest.json | 14 + .../glitch_assumption_toggle/hostBridge.d.ts | 17 + .../glitch_assumption_toggle/index.d.ts | 6 + .../glitch_assumption_toggle/sounds/.DS_Store | Bin 0 -> 6148 bytes .../sounds/blblblbl.m4a | Bin 0 -> 106893 bytes .../sounds/blblblbl.mp3 | Bin 0 -> 44488 bytes .../sounds/blblblbl2.m4a | Bin 0 -> 97799 bytes .../sounds/blblblbl2.mp3 | Bin 0 -> 40994 bytes .../glitch_assumption_toggle/types.d.ts | 56 + .../glitch_ccd/assets/index-D02Mu-Ij.js | 9 + .../glitch_ccd/assets/index-Da7gUXQx.css | 1 + dist/glitch/glitch_ccd/glitch.manifest.json | 14 + dist/glitch/glitch_ccd/glitchhunterlogo.png | Bin 0 -> 127449 bytes dist/glitch/glitch_ccd/index.html | 13 + .../glitch_chess_analogy/chess_analogy.js | 439 + .../glitch_chess_analogy/chess_analogy.js.map | 1 + .../glitch_chess_analogy/glitch.manifest.json | 15 + .../assets/blblblbl-BrzQxThI.m4a | Bin 0 -> 106893 bytes .../assets/blblblbl-D60GLrQ8.mp3 | Bin 0 -> 44488 bytes .../glitch_gallery/assets/index-B1PtMIUq.js | 1 + .../glitch_gallery/assets/index-B7Erow2S.css | 1 + .../glitch_gallery/assets/index-BOUPxVBe.js | 1 + .../glitch_gallery/assets/index-Bdi24PkQ.css | 1 + .../glitch_gallery/assets/index-Be41ZfS7.js | 1 + .../glitch_gallery/assets/index-BoeEa7xH.css | 1 + .../glitch_gallery/assets/index-C2PFO5cD.css | 1 + .../glitch_gallery/assets/index-C370CA0j.js | 125 + .../glitch_gallery/assets/index-CDPygLjY.js | 1 + .../glitch_gallery/assets/index-CEeZxcxj.js | 4031 +++++ .../glitch_gallery/assets/index-CMvlyyxu.js | 1 + .../glitch_gallery/assets/index-CRhmqMwz.js | 10 + .../glitch_gallery/assets/index-CwQ-ysLn.js | 1 + .../glitch_gallery/assets/index-D0SeHWP2.css | 1 + .../glitch_gallery/assets/index-DOIp2aoq.css | 1 + .../glitch_gallery/assets/index-DOdpM0HQ.js | 1 + .../glitch_gallery/assets/index-DczjPplt.css | 1 + .../glitch_gallery/assets/index-DnqmHVBx.js | 1 + .../glitch_gallery/assets/index-MgCr_Urj.js | 1 + .../glitch_gallery/assets/index-WVFKiT6G.css | 1 + .../glitch_gallery/assets/index-hWn6tbl7.css | 1 + .../glitch_gallery/assets/index-mpZwhQDb.css | 1 + .../assets/technoborder-4brzcuN1.png | Bin 0 -> 846039 bytes .../glitch_gallery/glitch.manifest.json | 14 + dist/glitch/glitch_gallery/index.html | 16 + .../glitch.manifest.json | 14 + .../glitch_level_questions/level-questions.js | 523 + .../level-questions.js.map | 1 + dist/glitch/glitch_lightlane/Component.d.ts | 14 + .../components/DiophantineVectors.d.ts | 10 + .../components/FanoSweepPanel.d.ts | 22 + .../components/OrbitingObject.d.ts | 12 + .../components/PoissonShell.d.ts | 3 + .../components/PulsingSphere.d.ts | 6 + .../components/SamplingSystem.d.ts | 29 + .../components/TargetDisc.d.ts | 6 + .../components/VectorArrow.d.ts | 7 + dist/glitch/glitch_lightlane/dev.d.ts | 1 + .../glitch_lightlane/devHostBridge.d.ts | 8 + .../glitch_lightlane/glitch.manifest.json | 14 + dist/glitch/glitch_lightlane/hostBridge.d.ts | 17 + dist/glitch/glitch_lightlane/index.d.ts | 5 + dist/glitch/glitch_lightlane/lightlane.js | 2805 +++ dist/glitch/glitch_lightlane/lightlane.js.map | 1 + dist/glitch/glitch_lightlane/presets.d.ts | 94 + dist/glitch/glitch_lightlane/types.d.ts | 82 + dist/glitch/glitch_lightlane/vectors.d.ts | 2 + dist/glitch/glitch_lightlane/vite.svg | 1 + .../glitch.manifest.json | 14 + .../migration-paradox.js | 422 + .../migration-paradox.js.map | 1 + .../glitch_onboarding/glitch.manifest.json | 14 + dist/glitch/glitch_onboarding/onboarding.js | 847 + .../glitch_onboarding/onboarding.js.map | 1 + .../glitch_onboarding2/glitch.manifest.json | 14 + dist/glitch/glitch_onboarding2/onboarding2.js | 212 + .../glitch_onboarding2/onboarding2.js.map | 1 + .../glitch.manifest.json | 14 + .../glitch_sphere_paradox/sphere-paradox.js | 352 + .../sphere-paradox.js.map | 1 + .../glitch.manifest.json | 14 + dist/glitch/glitch_voxel_universe/host.js | 29 + dist/glitch/glitch_voxel_universe/index.html | 34 + .../glitch_voxel_universe/voxel_universe.js | 14400 ++++++++++++++++ .../voxel_universe.js.map | 1 + dist/index.html | 16 + dist/lectures/rethinking-econ-ep1.json | 309 + .../glitch/glitch_assumption_toggle/.DS_Store | Bin 0 -> 8196 bytes .../glitch_assumption_toggle/Component.d.ts | 2 + .../assumption-toggle.js | 560 + .../assumption-toggle.js.map | 1 + .../glitch/glitch_assumption_toggle/dev.d.ts | 1 + .../devHostBridge.d.ts | 8 + .../glitch.manifest.json | 14 + .../glitch_assumption_toggle/hostBridge.d.ts | 17 + .../glitch_assumption_toggle/index.d.ts | 6 + .../glitch_assumption_toggle/sounds/.DS_Store | Bin 0 -> 6148 bytes .../sounds/blblblbl.m4a | Bin 0 -> 106893 bytes .../sounds/blblblbl.mp3 | Bin 0 -> 44488 bytes .../sounds/blblblbl2.m4a | Bin 0 -> 97799 bytes .../sounds/blblblbl2.mp3 | Bin 0 -> 40994 bytes .../glitch_assumption_toggle/types.d.ts | 56 + .../glitch_ccd/assets/index-D02Mu-Ij.js | 9 + .../glitch_ccd/assets/index-Da7gUXQx.css | 1 + .../glitch/glitch_ccd/glitch.manifest.json | 14 + .../glitch/glitch_ccd/glitchhunterlogo.png | Bin 0 -> 127449 bytes dist/vendor/glitch/glitch_ccd/index.html | 13 + .../glitch_chess_analogy/chess_analogy.js | 439 + .../glitch_chess_analogy/chess_analogy.js.map | 1 + .../glitch_chess_analogy/glitch.manifest.json | 15 + .../assets/blblblbl-BrzQxThI.m4a | Bin 0 -> 106893 bytes .../assets/blblblbl-D60GLrQ8.mp3 | Bin 0 -> 44488 bytes .../glitch_gallery/assets/index-B1PtMIUq.js | 1 + .../glitch_gallery/assets/index-B7Erow2S.css | 1 + .../glitch_gallery/assets/index-BOUPxVBe.js | 1 + .../glitch_gallery/assets/index-Bdi24PkQ.css | 1 + .../glitch_gallery/assets/index-Be41ZfS7.js | 1 + .../glitch_gallery/assets/index-BoeEa7xH.css | 1 + .../glitch_gallery/assets/index-C2PFO5cD.css | 1 + .../glitch_gallery/assets/index-C370CA0j.js | 125 + .../glitch_gallery/assets/index-CDPygLjY.js | 1 + .../glitch_gallery/assets/index-CEeZxcxj.js | 4031 +++++ .../glitch_gallery/assets/index-CMvlyyxu.js | 1 + .../glitch_gallery/assets/index-CRhmqMwz.js | 10 + .../glitch_gallery/assets/index-CwQ-ysLn.js | 1 + .../glitch_gallery/assets/index-D0SeHWP2.css | 1 + .../glitch_gallery/assets/index-DOIp2aoq.css | 1 + .../glitch_gallery/assets/index-DOdpM0HQ.js | 1 + .../glitch_gallery/assets/index-DczjPplt.css | 1 + .../glitch_gallery/assets/index-DnqmHVBx.js | 1 + .../glitch_gallery/assets/index-MgCr_Urj.js | 1 + .../glitch_gallery/assets/index-WVFKiT6G.css | 1 + .../glitch_gallery/assets/index-hWn6tbl7.css | 1 + .../glitch_gallery/assets/index-mpZwhQDb.css | 1 + .../assets/technoborder-4brzcuN1.png | Bin 0 -> 846039 bytes .../glitch_gallery/glitch.manifest.json | 14 + dist/vendor/glitch/glitch_gallery/index.html | 16 + .../glitch.manifest.json | 14 + .../glitch_level_questions/level-questions.js | 523 + .../level-questions.js.map | 1 + .../glitch/glitch_lightlane/Component.d.ts | 14 + .../components/DiophantineVectors.d.ts | 10 + .../components/FanoSweepPanel.d.ts | 22 + .../components/OrbitingObject.d.ts | 12 + .../components/PoissonShell.d.ts | 3 + .../components/PulsingSphere.d.ts | 6 + .../components/SamplingSystem.d.ts | 29 + .../components/TargetDisc.d.ts | 6 + .../components/VectorArrow.d.ts | 7 + dist/vendor/glitch/glitch_lightlane/dev.d.ts | 1 + .../glitch_lightlane/devHostBridge.d.ts | 8 + .../glitch_lightlane/glitch.manifest.json | 14 + .../glitch/glitch_lightlane/hostBridge.d.ts | 17 + .../vendor/glitch/glitch_lightlane/index.d.ts | 5 + .../glitch/glitch_lightlane/lightlane.js | 2805 +++ .../glitch/glitch_lightlane/lightlane.js.map | 1 + .../glitch/glitch_lightlane/presets.d.ts | 94 + .../vendor/glitch/glitch_lightlane/types.d.ts | 82 + .../glitch/glitch_lightlane/vectors.d.ts | 2 + dist/vendor/glitch/glitch_lightlane/vite.svg | 1 + .../glitch.manifest.json | 14 + .../migration-paradox.js | 422 + .../migration-paradox.js.map | 1 + .../glitch_onboarding/glitch.manifest.json | 14 + .../glitch/glitch_onboarding/onboarding.js | 847 + .../glitch_onboarding/onboarding.js.map | 1 + .../glitch_onboarding2/glitch.manifest.json | 14 + .../glitch/glitch_onboarding2/onboarding2.js | 212 + .../glitch_onboarding2/onboarding2.js.map | 1 + .../glitch.manifest.json | 14 + .../glitch_sphere_paradox/sphere-paradox.js | 352 + .../sphere-paradox.js.map | 1 + .../glitch.manifest.json | 14 + .../glitch/glitch_voxel_universe/host.js | 29 + .../glitch/glitch_voxel_universe/index.html | 34 + .../glitch_voxel_universe/voxel_universe.js | 14400 ++++++++++++++++ .../voxel_universe.js.map | 1 + dist/vendor/gnommoplayer.css | 1 + dist/vendor/gnommoplayer.js | 2425 +++ dist/vendor/lectures/rethinking-econ-ep1.json | 309 + index.html | 15 + package-lock.json | 2898 ++++ package.json | 36 + packages/slide-contracts/package.json | 9 + packages/slide-contracts/src/budgets.d.ts | 13 + packages/slide-contracts/src/budgets.js | 138 + packages/slide-contracts/src/budgets.ts | 153 + packages/slide-contracts/src/index.d.ts | 3 + packages/slide-contracts/src/index.js | 3 + packages/slide-contracts/src/index.ts | 3 + packages/slide-contracts/src/metadata.d.ts | 40 + packages/slide-contracts/src/metadata.js | 546 + packages/slide-contracts/src/metadata.ts | 633 + packages/slide-contracts/src/templates.d.ts | 144 + packages/slide-contracts/src/templates.js | 14 + packages/slide-contracts/src/templates.ts | 197 + .../glitch/glitch_assumption_toggle/.DS_Store | Bin 0 -> 8196 bytes .../glitch_assumption_toggle/Component.d.ts | 2 + .../assumption-toggle.js | 560 + .../assumption-toggle.js.map | 1 + .../glitch/glitch_assumption_toggle/dev.d.ts | 1 + .../devHostBridge.d.ts | 8 + .../glitch.manifest.json | 14 + .../glitch_assumption_toggle/hostBridge.d.ts | 17 + .../glitch_assumption_toggle/index.d.ts | 6 + .../glitch_assumption_toggle/sounds/.DS_Store | Bin 0 -> 6148 bytes .../sounds/blblblbl.m4a | Bin 0 -> 106893 bytes .../sounds/blblblbl.mp3 | Bin 0 -> 44488 bytes .../sounds/blblblbl2.m4a | Bin 0 -> 97799 bytes .../sounds/blblblbl2.mp3 | Bin 0 -> 40994 bytes .../glitch_assumption_toggle/types.d.ts | 56 + .../glitch_ccd/assets/index-D02Mu-Ij.js | 9 + .../glitch_ccd/assets/index-Da7gUXQx.css | 1 + public/glitch/glitch_ccd/glitch.manifest.json | 14 + public/glitch/glitch_ccd/glitchhunterlogo.png | Bin 0 -> 127449 bytes public/glitch/glitch_ccd/index.html | 13 + .../glitch_chess_analogy/chess_analogy.js | 439 + .../glitch_chess_analogy/chess_analogy.js.map | 1 + .../glitch_chess_analogy/glitch.manifest.json | 15 + .../assets/blblblbl-BrzQxThI.m4a | Bin 0 -> 106893 bytes .../assets/blblblbl-D60GLrQ8.mp3 | Bin 0 -> 44488 bytes .../glitch_gallery/assets/index-B1PtMIUq.js | 1 + .../glitch_gallery/assets/index-B7Erow2S.css | 1 + .../glitch_gallery/assets/index-BOUPxVBe.js | 1 + .../glitch_gallery/assets/index-Bdi24PkQ.css | 1 + .../glitch_gallery/assets/index-Be41ZfS7.js | 1 + .../glitch_gallery/assets/index-BoeEa7xH.css | 1 + .../glitch_gallery/assets/index-C2PFO5cD.css | 1 + .../glitch_gallery/assets/index-C370CA0j.js | 125 + .../glitch_gallery/assets/index-CDPygLjY.js | 1 + .../glitch_gallery/assets/index-CEeZxcxj.js | 4031 +++++ .../glitch_gallery/assets/index-CMvlyyxu.js | 1 + .../glitch_gallery/assets/index-CRhmqMwz.js | 10 + .../glitch_gallery/assets/index-CwQ-ysLn.js | 1 + .../glitch_gallery/assets/index-D0SeHWP2.css | 1 + .../glitch_gallery/assets/index-DOIp2aoq.css | 1 + .../glitch_gallery/assets/index-DOdpM0HQ.js | 1 + .../glitch_gallery/assets/index-DczjPplt.css | 1 + .../glitch_gallery/assets/index-DnqmHVBx.js | 1 + .../glitch_gallery/assets/index-MgCr_Urj.js | 1 + .../glitch_gallery/assets/index-WVFKiT6G.css | 1 + .../glitch_gallery/assets/index-hWn6tbl7.css | 1 + .../glitch_gallery/assets/index-mpZwhQDb.css | 1 + .../assets/technoborder-4brzcuN1.png | Bin 0 -> 846039 bytes .../glitch_gallery/glitch.manifest.json | 14 + public/glitch/glitch_gallery/index.html | 16 + .../glitch.manifest.json | 14 + .../glitch_level_questions/level-questions.js | 523 + .../level-questions.js.map | 1 + public/glitch/glitch_lightlane/Component.d.ts | 14 + .../components/DiophantineVectors.d.ts | 10 + .../components/FanoSweepPanel.d.ts | 22 + .../components/OrbitingObject.d.ts | 12 + .../components/PoissonShell.d.ts | 3 + .../components/PulsingSphere.d.ts | 6 + .../components/SamplingSystem.d.ts | 29 + .../components/TargetDisc.d.ts | 6 + .../components/VectorArrow.d.ts | 7 + public/glitch/glitch_lightlane/dev.d.ts | 1 + .../glitch_lightlane/devHostBridge.d.ts | 8 + .../glitch_lightlane/glitch.manifest.json | 14 + .../glitch/glitch_lightlane/hostBridge.d.ts | 17 + public/glitch/glitch_lightlane/index.d.ts | 5 + public/glitch/glitch_lightlane/lightlane.js | 2805 +++ .../glitch/glitch_lightlane/lightlane.js.map | 1 + public/glitch/glitch_lightlane/presets.d.ts | 94 + public/glitch/glitch_lightlane/types.d.ts | 82 + public/glitch/glitch_lightlane/vectors.d.ts | 2 + public/glitch/glitch_lightlane/vite.svg | 1 + .../glitch.manifest.json | 14 + .../migration-paradox.js | 422 + .../migration-paradox.js.map | 1 + .../glitch_onboarding/glitch.manifest.json | 14 + public/glitch/glitch_onboarding/onboarding.js | 847 + .../glitch_onboarding/onboarding.js.map | 1 + .../glitch_onboarding2/glitch.manifest.json | 14 + .../glitch/glitch_onboarding2/onboarding2.js | 212 + .../glitch_onboarding2/onboarding2.js.map | 1 + .../glitch.manifest.json | 14 + .../glitch_sphere_paradox/sphere-paradox.js | 352 + .../sphere-paradox.js.map | 1 + .../glitch.manifest.json | 14 + public/glitch/glitch_voxel_universe/host.js | 29 + .../glitch/glitch_voxel_universe/index.html | 34 + .../glitch_voxel_universe/voxel_universe.js | 14400 ++++++++++++++++ .../voxel_universe.js.map | 1 + public/lectures/rethinking-econ-ep1.json | 309 + scripts/deploy-vendor.mjs | 96 + slide-preview-integration.md | 292 + slide-template-guidelines.md | 247 + src/App.tsx | 113 + src/components/EventLogPanel.tsx | 64 + src/components/GlitchSlideCarousel.test.tsx | 45 + src/components/GlitchSlideCarousel.tsx | 74 + src/components/GlitchSlideRenderer.test.tsx | 127 + src/components/GlitchSlideRenderer.tsx | 74 + src/components/GlitchSlideThumbnail.tsx | 64 + src/components/LecturePlayer.test.tsx | 328 + src/components/LecturePlayer.tsx | 1121 ++ src/components/LoadedGlitchSlide.tsx | 84 + src/components/PlayResumeControl.tsx | 43 + src/components/SlideErrorBoundary.tsx | 43 + src/components/SlideOverlayHost.tsx | 103 + src/components/VideoSkeletonPlayer.tsx | 163 + src/index.ts | 1 + src/lib-entry.ts | 3 + src/lib/eventLogger.ts | 9 + src/lib/gestureController.test.ts | 83 + src/lib/gestureController.ts | 80 + src/lib/glitchComponentUrl.ts | 28 + src/lib/mathJax.ts | 91 + src/lib/presentationApi.ts | 48 + src/lib/slideRegistry.ts | 61 + src/lib/slideTemplateMetadata.test.ts | 39 + src/lib/timeline.test.ts | 127 + src/lib/timeline.ts | 157 + src/lib/videoPreload.ts | 20 + src/lib/voteApi.ts | 35 + src/main.tsx | 10 + src/player/index.ts | 79 + src/player/styles.css | 1 + src/slides/ChartSingle.tsx | 82 + src/slides/DefinitionCard.tsx | 27 + src/slides/EquationFocus.tsx | 88 + src/slides/FallbackSlide.tsx | 16 + src/slides/FullscreenSplit.tsx | 34 + src/slides/FullscreenVideo.tsx | 84 + src/slides/FullscreenVideoCenterCaption.tsx | 84 + src/slides/FullscreenVideoTitle.tsx | 84 + src/slides/GdpVsSecurity3D.tsx | 47 + src/slides/GdpVsSecurityBasic.tsx | 33 + src/slides/GdpVsSecuritySplit.tsx | 30 + src/slides/GlitchComponentFrame.test.tsx | 56 + src/slides/GlitchComponentFrame.tsx | 44 + src/slides/ProcessFlow.tsx | 39 + src/slides/QuoteImage.tsx | 36 + src/slides/SquareVideo.tsx | 78 + src/slides/SquareYellow.tsx | 24 + src/slides/TemplateHeader.test.tsx | 88 + src/slides/VideoSlides.test.tsx | 102 + src/styles.css | 1954 +++ src/test/setup.ts | 13 + src/types/events.ts | 51 + src/types/lecture.ts | 72 + src/types/player.ts | 35 + src/vite-env.d.ts | 9 + tsconfig.app.json | 25 + tsconfig.app.tsbuildinfo | 1 + tsconfig.json | 11 + tsconfig.node.json | 15 + tsconfig.node.tsbuildinfo | 1 + vite.config.d.ts | 2 + vite.config.js | 57 + vite.config.ts | 75 + vite.lib.config.ts | 48 + 378 files changed, 93091 insertions(+) create mode 100644 README.md create mode 100644 content-budget.md create mode 100755 deploy.sh create mode 100644 deployment.md create mode 100644 dist/assets/ChartSingle-B5EnycUf.js create mode 100644 dist/assets/DefinitionCard-DjuSxCYC.js create mode 100644 dist/assets/EquationFocus-CZCQ_h0W.js create mode 100644 dist/assets/FullscreenSplit-Piv2MROz.js create mode 100644 dist/assets/FullscreenVideo-T7AJva9H.js create mode 100644 dist/assets/FullscreenVideoCenterCaption-Bbw83wap.js create mode 100644 dist/assets/FullscreenVideoTitle-DvKvZc4X.js create mode 100644 dist/assets/GlitchComponentFrame-CM7hKmoe.js create mode 100644 dist/assets/ProcessFlow-B2obDIQa.js create mode 100644 dist/assets/QuoteImage-C0EQ3Yny.js create mode 100644 dist/assets/SquareVideo-GgREJSQR.js create mode 100644 dist/assets/SquareYellow-DRGJP0IQ.js create mode 100644 dist/assets/index-D2K-duz6.js create mode 100644 dist/assets/index-DF-iGj8k.css create mode 100644 dist/glitch/glitch_assumption_toggle/.DS_Store create mode 100644 dist/glitch/glitch_assumption_toggle/Component.d.ts create mode 100644 dist/glitch/glitch_assumption_toggle/assumption-toggle.js create mode 100644 dist/glitch/glitch_assumption_toggle/assumption-toggle.js.map create mode 100644 dist/glitch/glitch_assumption_toggle/dev.d.ts create mode 100644 dist/glitch/glitch_assumption_toggle/devHostBridge.d.ts create mode 100644 dist/glitch/glitch_assumption_toggle/glitch.manifest.json create mode 100644 dist/glitch/glitch_assumption_toggle/hostBridge.d.ts create mode 100644 dist/glitch/glitch_assumption_toggle/index.d.ts create mode 100644 dist/glitch/glitch_assumption_toggle/sounds/.DS_Store create mode 100644 dist/glitch/glitch_assumption_toggle/sounds/blblblbl.m4a create mode 100644 dist/glitch/glitch_assumption_toggle/sounds/blblblbl.mp3 create mode 100644 dist/glitch/glitch_assumption_toggle/sounds/blblblbl2.m4a create mode 100644 dist/glitch/glitch_assumption_toggle/sounds/blblblbl2.mp3 create mode 100644 dist/glitch/glitch_assumption_toggle/types.d.ts create mode 100644 dist/glitch/glitch_ccd/assets/index-D02Mu-Ij.js create mode 100644 dist/glitch/glitch_ccd/assets/index-Da7gUXQx.css create mode 100644 dist/glitch/glitch_ccd/glitch.manifest.json create mode 100644 dist/glitch/glitch_ccd/glitchhunterlogo.png create mode 100644 dist/glitch/glitch_ccd/index.html create mode 100644 dist/glitch/glitch_chess_analogy/chess_analogy.js create mode 100644 dist/glitch/glitch_chess_analogy/chess_analogy.js.map create mode 100644 dist/glitch/glitch_chess_analogy/glitch.manifest.json create mode 100644 dist/glitch/glitch_gallery/assets/blblblbl-BrzQxThI.m4a create mode 100644 dist/glitch/glitch_gallery/assets/blblblbl-D60GLrQ8.mp3 create mode 100644 dist/glitch/glitch_gallery/assets/index-B1PtMIUq.js create mode 100644 dist/glitch/glitch_gallery/assets/index-B7Erow2S.css create mode 100644 dist/glitch/glitch_gallery/assets/index-BOUPxVBe.js create mode 100644 dist/glitch/glitch_gallery/assets/index-Bdi24PkQ.css create mode 100644 dist/glitch/glitch_gallery/assets/index-Be41ZfS7.js create mode 100644 dist/glitch/glitch_gallery/assets/index-BoeEa7xH.css create mode 100644 dist/glitch/glitch_gallery/assets/index-C2PFO5cD.css create mode 100644 dist/glitch/glitch_gallery/assets/index-C370CA0j.js create mode 100644 dist/glitch/glitch_gallery/assets/index-CDPygLjY.js create mode 100644 dist/glitch/glitch_gallery/assets/index-CEeZxcxj.js create mode 100644 dist/glitch/glitch_gallery/assets/index-CMvlyyxu.js create mode 100644 dist/glitch/glitch_gallery/assets/index-CRhmqMwz.js create mode 100644 dist/glitch/glitch_gallery/assets/index-CwQ-ysLn.js create mode 100644 dist/glitch/glitch_gallery/assets/index-D0SeHWP2.css create mode 100644 dist/glitch/glitch_gallery/assets/index-DOIp2aoq.css create mode 100644 dist/glitch/glitch_gallery/assets/index-DOdpM0HQ.js create mode 100644 dist/glitch/glitch_gallery/assets/index-DczjPplt.css create mode 100644 dist/glitch/glitch_gallery/assets/index-DnqmHVBx.js create mode 100644 dist/glitch/glitch_gallery/assets/index-MgCr_Urj.js create mode 100644 dist/glitch/glitch_gallery/assets/index-WVFKiT6G.css create mode 100644 dist/glitch/glitch_gallery/assets/index-hWn6tbl7.css create mode 100644 dist/glitch/glitch_gallery/assets/index-mpZwhQDb.css create mode 100644 dist/glitch/glitch_gallery/assets/technoborder-4brzcuN1.png create mode 100644 dist/glitch/glitch_gallery/glitch.manifest.json create mode 100644 dist/glitch/glitch_gallery/index.html create mode 100644 dist/glitch/glitch_level_questions/glitch.manifest.json create mode 100644 dist/glitch/glitch_level_questions/level-questions.js create mode 100644 dist/glitch/glitch_level_questions/level-questions.js.map create mode 100644 dist/glitch/glitch_lightlane/Component.d.ts create mode 100644 dist/glitch/glitch_lightlane/components/DiophantineVectors.d.ts create mode 100644 dist/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts create mode 100644 dist/glitch/glitch_lightlane/components/OrbitingObject.d.ts create mode 100644 dist/glitch/glitch_lightlane/components/PoissonShell.d.ts create mode 100644 dist/glitch/glitch_lightlane/components/PulsingSphere.d.ts create mode 100644 dist/glitch/glitch_lightlane/components/SamplingSystem.d.ts create mode 100644 dist/glitch/glitch_lightlane/components/TargetDisc.d.ts create mode 100644 dist/glitch/glitch_lightlane/components/VectorArrow.d.ts create mode 100644 dist/glitch/glitch_lightlane/dev.d.ts create mode 100644 dist/glitch/glitch_lightlane/devHostBridge.d.ts create mode 100644 dist/glitch/glitch_lightlane/glitch.manifest.json create mode 100644 dist/glitch/glitch_lightlane/hostBridge.d.ts create mode 100644 dist/glitch/glitch_lightlane/index.d.ts create mode 100644 dist/glitch/glitch_lightlane/lightlane.js create mode 100644 dist/glitch/glitch_lightlane/lightlane.js.map create mode 100644 dist/glitch/glitch_lightlane/presets.d.ts create mode 100644 dist/glitch/glitch_lightlane/types.d.ts create mode 100644 dist/glitch/glitch_lightlane/vectors.d.ts create mode 100644 dist/glitch/glitch_lightlane/vite.svg create mode 100644 dist/glitch/glitch_migration_paradox/glitch.manifest.json create mode 100644 dist/glitch/glitch_migration_paradox/migration-paradox.js create mode 100644 dist/glitch/glitch_migration_paradox/migration-paradox.js.map create mode 100644 dist/glitch/glitch_onboarding/glitch.manifest.json create mode 100644 dist/glitch/glitch_onboarding/onboarding.js create mode 100644 dist/glitch/glitch_onboarding/onboarding.js.map create mode 100644 dist/glitch/glitch_onboarding2/glitch.manifest.json create mode 100644 dist/glitch/glitch_onboarding2/onboarding2.js create mode 100644 dist/glitch/glitch_onboarding2/onboarding2.js.map create mode 100644 dist/glitch/glitch_sphere_paradox/glitch.manifest.json create mode 100644 dist/glitch/glitch_sphere_paradox/sphere-paradox.js create mode 100644 dist/glitch/glitch_sphere_paradox/sphere-paradox.js.map create mode 100644 dist/glitch/glitch_voxel_universe/glitch.manifest.json create mode 100644 dist/glitch/glitch_voxel_universe/host.js create mode 100644 dist/glitch/glitch_voxel_universe/index.html create mode 100644 dist/glitch/glitch_voxel_universe/voxel_universe.js create mode 100644 dist/glitch/glitch_voxel_universe/voxel_universe.js.map create mode 100644 dist/index.html create mode 100644 dist/lectures/rethinking-econ-ep1.json create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/.DS_Store create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/Component.d.ts create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/assumption-toggle.js create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/assumption-toggle.js.map create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/dev.d.ts create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/devHostBridge.d.ts create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/hostBridge.d.ts create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/index.d.ts create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/sounds/.DS_Store create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/sounds/blblblbl.m4a create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/sounds/blblblbl.mp3 create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/sounds/blblblbl2.m4a create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/sounds/blblblbl2.mp3 create mode 100644 dist/vendor/glitch/glitch_assumption_toggle/types.d.ts create mode 100644 dist/vendor/glitch/glitch_ccd/assets/index-D02Mu-Ij.js create mode 100644 dist/vendor/glitch/glitch_ccd/assets/index-Da7gUXQx.css create mode 100644 dist/vendor/glitch/glitch_ccd/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_ccd/glitchhunterlogo.png create mode 100644 dist/vendor/glitch/glitch_ccd/index.html create mode 100644 dist/vendor/glitch/glitch_chess_analogy/chess_analogy.js create mode 100644 dist/vendor/glitch/glitch_chess_analogy/chess_analogy.js.map create mode 100644 dist/vendor/glitch/glitch_chess_analogy/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_gallery/assets/blblblbl-BrzQxThI.m4a create mode 100644 dist/vendor/glitch/glitch_gallery/assets/blblblbl-D60GLrQ8.mp3 create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-B1PtMIUq.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-B7Erow2S.css create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-BOUPxVBe.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-Bdi24PkQ.css create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-Be41ZfS7.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-BoeEa7xH.css create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-C2PFO5cD.css create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-C370CA0j.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-CDPygLjY.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-CEeZxcxj.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-CMvlyyxu.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-CRhmqMwz.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-CwQ-ysLn.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-D0SeHWP2.css create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-DOIp2aoq.css create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-DOdpM0HQ.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-DczjPplt.css create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-DnqmHVBx.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-MgCr_Urj.js create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-WVFKiT6G.css create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-hWn6tbl7.css create mode 100644 dist/vendor/glitch/glitch_gallery/assets/index-mpZwhQDb.css create mode 100644 dist/vendor/glitch/glitch_gallery/assets/technoborder-4brzcuN1.png create mode 100644 dist/vendor/glitch/glitch_gallery/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_gallery/index.html create mode 100644 dist/vendor/glitch/glitch_level_questions/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_level_questions/level-questions.js create mode 100644 dist/vendor/glitch/glitch_level_questions/level-questions.js.map create mode 100644 dist/vendor/glitch/glitch_lightlane/Component.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/components/DiophantineVectors.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/components/OrbitingObject.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/components/PoissonShell.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/components/PulsingSphere.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/components/SamplingSystem.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/components/TargetDisc.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/components/VectorArrow.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/dev.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/devHostBridge.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_lightlane/hostBridge.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/index.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/lightlane.js create mode 100644 dist/vendor/glitch/glitch_lightlane/lightlane.js.map create mode 100644 dist/vendor/glitch/glitch_lightlane/presets.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/types.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/vectors.d.ts create mode 100644 dist/vendor/glitch/glitch_lightlane/vite.svg create mode 100644 dist/vendor/glitch/glitch_migration_paradox/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_migration_paradox/migration-paradox.js create mode 100644 dist/vendor/glitch/glitch_migration_paradox/migration-paradox.js.map create mode 100644 dist/vendor/glitch/glitch_onboarding/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_onboarding/onboarding.js create mode 100644 dist/vendor/glitch/glitch_onboarding/onboarding.js.map create mode 100644 dist/vendor/glitch/glitch_onboarding2/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_onboarding2/onboarding2.js create mode 100644 dist/vendor/glitch/glitch_onboarding2/onboarding2.js.map create mode 100644 dist/vendor/glitch/glitch_sphere_paradox/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_sphere_paradox/sphere-paradox.js create mode 100644 dist/vendor/glitch/glitch_sphere_paradox/sphere-paradox.js.map create mode 100644 dist/vendor/glitch/glitch_voxel_universe/glitch.manifest.json create mode 100644 dist/vendor/glitch/glitch_voxel_universe/host.js create mode 100644 dist/vendor/glitch/glitch_voxel_universe/index.html create mode 100644 dist/vendor/glitch/glitch_voxel_universe/voxel_universe.js create mode 100644 dist/vendor/glitch/glitch_voxel_universe/voxel_universe.js.map create mode 100644 dist/vendor/gnommoplayer.css create mode 100644 dist/vendor/gnommoplayer.js create mode 100644 dist/vendor/lectures/rethinking-econ-ep1.json create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 packages/slide-contracts/package.json create mode 100644 packages/slide-contracts/src/budgets.d.ts create mode 100644 packages/slide-contracts/src/budgets.js create mode 100644 packages/slide-contracts/src/budgets.ts create mode 100644 packages/slide-contracts/src/index.d.ts create mode 100644 packages/slide-contracts/src/index.js create mode 100644 packages/slide-contracts/src/index.ts create mode 100644 packages/slide-contracts/src/metadata.d.ts create mode 100644 packages/slide-contracts/src/metadata.js create mode 100644 packages/slide-contracts/src/metadata.ts create mode 100644 packages/slide-contracts/src/templates.d.ts create mode 100644 packages/slide-contracts/src/templates.js create mode 100644 packages/slide-contracts/src/templates.ts create mode 100644 public/glitch/glitch_assumption_toggle/.DS_Store create mode 100644 public/glitch/glitch_assumption_toggle/Component.d.ts create mode 100644 public/glitch/glitch_assumption_toggle/assumption-toggle.js create mode 100644 public/glitch/glitch_assumption_toggle/assumption-toggle.js.map create mode 100644 public/glitch/glitch_assumption_toggle/dev.d.ts create mode 100644 public/glitch/glitch_assumption_toggle/devHostBridge.d.ts create mode 100644 public/glitch/glitch_assumption_toggle/glitch.manifest.json create mode 100644 public/glitch/glitch_assumption_toggle/hostBridge.d.ts create mode 100644 public/glitch/glitch_assumption_toggle/index.d.ts create mode 100644 public/glitch/glitch_assumption_toggle/sounds/.DS_Store create mode 100644 public/glitch/glitch_assumption_toggle/sounds/blblblbl.m4a create mode 100644 public/glitch/glitch_assumption_toggle/sounds/blblblbl.mp3 create mode 100644 public/glitch/glitch_assumption_toggle/sounds/blblblbl2.m4a create mode 100644 public/glitch/glitch_assumption_toggle/sounds/blblblbl2.mp3 create mode 100644 public/glitch/glitch_assumption_toggle/types.d.ts create mode 100644 public/glitch/glitch_ccd/assets/index-D02Mu-Ij.js create mode 100644 public/glitch/glitch_ccd/assets/index-Da7gUXQx.css create mode 100644 public/glitch/glitch_ccd/glitch.manifest.json create mode 100644 public/glitch/glitch_ccd/glitchhunterlogo.png create mode 100644 public/glitch/glitch_ccd/index.html create mode 100644 public/glitch/glitch_chess_analogy/chess_analogy.js create mode 100644 public/glitch/glitch_chess_analogy/chess_analogy.js.map create mode 100644 public/glitch/glitch_chess_analogy/glitch.manifest.json create mode 100644 public/glitch/glitch_gallery/assets/blblblbl-BrzQxThI.m4a create mode 100644 public/glitch/glitch_gallery/assets/blblblbl-D60GLrQ8.mp3 create mode 100644 public/glitch/glitch_gallery/assets/index-B1PtMIUq.js create mode 100644 public/glitch/glitch_gallery/assets/index-B7Erow2S.css create mode 100644 public/glitch/glitch_gallery/assets/index-BOUPxVBe.js create mode 100644 public/glitch/glitch_gallery/assets/index-Bdi24PkQ.css create mode 100644 public/glitch/glitch_gallery/assets/index-Be41ZfS7.js create mode 100644 public/glitch/glitch_gallery/assets/index-BoeEa7xH.css create mode 100644 public/glitch/glitch_gallery/assets/index-C2PFO5cD.css create mode 100644 public/glitch/glitch_gallery/assets/index-C370CA0j.js create mode 100644 public/glitch/glitch_gallery/assets/index-CDPygLjY.js create mode 100644 public/glitch/glitch_gallery/assets/index-CEeZxcxj.js create mode 100644 public/glitch/glitch_gallery/assets/index-CMvlyyxu.js create mode 100644 public/glitch/glitch_gallery/assets/index-CRhmqMwz.js create mode 100644 public/glitch/glitch_gallery/assets/index-CwQ-ysLn.js create mode 100644 public/glitch/glitch_gallery/assets/index-D0SeHWP2.css create mode 100644 public/glitch/glitch_gallery/assets/index-DOIp2aoq.css create mode 100644 public/glitch/glitch_gallery/assets/index-DOdpM0HQ.js create mode 100644 public/glitch/glitch_gallery/assets/index-DczjPplt.css create mode 100644 public/glitch/glitch_gallery/assets/index-DnqmHVBx.js create mode 100644 public/glitch/glitch_gallery/assets/index-MgCr_Urj.js create mode 100644 public/glitch/glitch_gallery/assets/index-WVFKiT6G.css create mode 100644 public/glitch/glitch_gallery/assets/index-hWn6tbl7.css create mode 100644 public/glitch/glitch_gallery/assets/index-mpZwhQDb.css create mode 100644 public/glitch/glitch_gallery/assets/technoborder-4brzcuN1.png create mode 100644 public/glitch/glitch_gallery/glitch.manifest.json create mode 100644 public/glitch/glitch_gallery/index.html create mode 100644 public/glitch/glitch_level_questions/glitch.manifest.json create mode 100644 public/glitch/glitch_level_questions/level-questions.js create mode 100644 public/glitch/glitch_level_questions/level-questions.js.map create mode 100644 public/glitch/glitch_lightlane/Component.d.ts create mode 100644 public/glitch/glitch_lightlane/components/DiophantineVectors.d.ts create mode 100644 public/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts create mode 100644 public/glitch/glitch_lightlane/components/OrbitingObject.d.ts create mode 100644 public/glitch/glitch_lightlane/components/PoissonShell.d.ts create mode 100644 public/glitch/glitch_lightlane/components/PulsingSphere.d.ts create mode 100644 public/glitch/glitch_lightlane/components/SamplingSystem.d.ts create mode 100644 public/glitch/glitch_lightlane/components/TargetDisc.d.ts create mode 100644 public/glitch/glitch_lightlane/components/VectorArrow.d.ts create mode 100644 public/glitch/glitch_lightlane/dev.d.ts create mode 100644 public/glitch/glitch_lightlane/devHostBridge.d.ts create mode 100644 public/glitch/glitch_lightlane/glitch.manifest.json create mode 100644 public/glitch/glitch_lightlane/hostBridge.d.ts create mode 100644 public/glitch/glitch_lightlane/index.d.ts create mode 100644 public/glitch/glitch_lightlane/lightlane.js create mode 100644 public/glitch/glitch_lightlane/lightlane.js.map create mode 100644 public/glitch/glitch_lightlane/presets.d.ts create mode 100644 public/glitch/glitch_lightlane/types.d.ts create mode 100644 public/glitch/glitch_lightlane/vectors.d.ts create mode 100644 public/glitch/glitch_lightlane/vite.svg create mode 100644 public/glitch/glitch_migration_paradox/glitch.manifest.json create mode 100644 public/glitch/glitch_migration_paradox/migration-paradox.js create mode 100644 public/glitch/glitch_migration_paradox/migration-paradox.js.map create mode 100644 public/glitch/glitch_onboarding/glitch.manifest.json create mode 100644 public/glitch/glitch_onboarding/onboarding.js create mode 100644 public/glitch/glitch_onboarding/onboarding.js.map create mode 100644 public/glitch/glitch_onboarding2/glitch.manifest.json create mode 100644 public/glitch/glitch_onboarding2/onboarding2.js create mode 100644 public/glitch/glitch_onboarding2/onboarding2.js.map create mode 100644 public/glitch/glitch_sphere_paradox/glitch.manifest.json create mode 100644 public/glitch/glitch_sphere_paradox/sphere-paradox.js create mode 100644 public/glitch/glitch_sphere_paradox/sphere-paradox.js.map create mode 100644 public/glitch/glitch_voxel_universe/glitch.manifest.json create mode 100644 public/glitch/glitch_voxel_universe/host.js create mode 100644 public/glitch/glitch_voxel_universe/index.html create mode 100644 public/glitch/glitch_voxel_universe/voxel_universe.js create mode 100644 public/glitch/glitch_voxel_universe/voxel_universe.js.map create mode 100644 public/lectures/rethinking-econ-ep1.json create mode 100644 scripts/deploy-vendor.mjs create mode 100644 slide-preview-integration.md create mode 100644 slide-template-guidelines.md create mode 100644 src/App.tsx create mode 100644 src/components/EventLogPanel.tsx create mode 100644 src/components/GlitchSlideCarousel.test.tsx create mode 100644 src/components/GlitchSlideCarousel.tsx create mode 100644 src/components/GlitchSlideRenderer.test.tsx create mode 100644 src/components/GlitchSlideRenderer.tsx create mode 100644 src/components/GlitchSlideThumbnail.tsx create mode 100644 src/components/LecturePlayer.test.tsx create mode 100644 src/components/LecturePlayer.tsx create mode 100644 src/components/LoadedGlitchSlide.tsx create mode 100644 src/components/PlayResumeControl.tsx create mode 100644 src/components/SlideErrorBoundary.tsx create mode 100644 src/components/SlideOverlayHost.tsx create mode 100644 src/components/VideoSkeletonPlayer.tsx create mode 100644 src/index.ts create mode 100644 src/lib-entry.ts create mode 100644 src/lib/eventLogger.ts create mode 100644 src/lib/gestureController.test.ts create mode 100644 src/lib/gestureController.ts create mode 100644 src/lib/glitchComponentUrl.ts create mode 100644 src/lib/mathJax.ts create mode 100644 src/lib/presentationApi.ts create mode 100644 src/lib/slideRegistry.ts create mode 100644 src/lib/slideTemplateMetadata.test.ts create mode 100644 src/lib/timeline.test.ts create mode 100644 src/lib/timeline.ts create mode 100644 src/lib/videoPreload.ts create mode 100644 src/lib/voteApi.ts create mode 100644 src/main.tsx create mode 100644 src/player/index.ts create mode 100644 src/player/styles.css create mode 100644 src/slides/ChartSingle.tsx create mode 100644 src/slides/DefinitionCard.tsx create mode 100644 src/slides/EquationFocus.tsx create mode 100644 src/slides/FallbackSlide.tsx create mode 100644 src/slides/FullscreenSplit.tsx create mode 100644 src/slides/FullscreenVideo.tsx create mode 100644 src/slides/FullscreenVideoCenterCaption.tsx create mode 100644 src/slides/FullscreenVideoTitle.tsx create mode 100644 src/slides/GdpVsSecurity3D.tsx create mode 100644 src/slides/GdpVsSecurityBasic.tsx create mode 100644 src/slides/GdpVsSecuritySplit.tsx create mode 100644 src/slides/GlitchComponentFrame.test.tsx create mode 100644 src/slides/GlitchComponentFrame.tsx create mode 100644 src/slides/ProcessFlow.tsx create mode 100644 src/slides/QuoteImage.tsx create mode 100644 src/slides/SquareVideo.tsx create mode 100644 src/slides/SquareYellow.tsx create mode 100644 src/slides/TemplateHeader.test.tsx create mode 100644 src/slides/VideoSlides.test.tsx create mode 100644 src/styles.css create mode 100644 src/test/setup.ts create mode 100644 src/types/events.ts create mode 100644 src/types/lecture.ts create mode 100644 src/types/player.ts create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.app.tsbuildinfo create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 tsconfig.node.tsbuildinfo create mode 100644 vite.config.d.ts create mode 100644 vite.config.js create mode 100644 vite.config.ts create mode 100644 vite.lib.config.ts diff --git a/README.md b/README.md new file mode 100644 index 0000000..16eeb2f --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +# Gnommo Player + +This project is a proof of concept for an interactive lecture player. + +## Reusable Player Surface + +The player is now organized so it can be embedded in a larger React app such as GnommoEditor. + +The intended host integration looks like this: + +```tsx +import { + GlitchPlayer, + defaultSlideRegistry, + createSessionId, + type PresentationDefinition, + type VoteRequest +} from "./player"; +import "./player/styles.css"; + +function GnommoEditorPreview({ + presentation, + onVoteCommit +}: { + presentation: PresentationDefinition; + onVoteCommit: (vote: VoteRequest) => Promise | void; +}) { + return ( + + ); +} +``` + +The key boundary is: + +- the host app fetches the presentation +- the host app provides the slide registry +- the host app owns vote/event persistence +- the player owns playback, timing, layout, gestures, and rendering + +## Why This Exists + +The goal is not just to make ordinary videos or ordinary slide decks. + +The goal is to build a pipeline for AI-assisted lecture creation, where a lecture can eventually become a normal YouTube video, but starts as a richer structured presentation format. + +The underlying idea is: + +- A creator writes a lecture script in a web-based presentation editor, similar to Keynote. +- The creator defines a timed slide show and only decides high-level layout behavior, such as whether a slide should be square or fullscreen. +- The creator records talking-head video segments and uploads them. +- Those segments are stitched into a continuous lecture timeline and transcribed. +- The spoken words become the scaffold for when slide events should happen. +- The actual slide contents can then be generated or refined by AI using available templates. + +That slide content does not need to be limited to static slides. A slide may be: + +- a React component +- a chart or visualization +- an image +- a 3D scene +- an interactive explanatory surface + +This creates a new kind of lecture format: + +- the talking head provides narrative continuity +- the slide layer provides rich explanation +- the viewer can inspect, manipulate, and compare alternate variants of the same explanation + +## Product Vision + +The long-term vision is a system for authoring lectures as structured, interactive presentations first, and rendering them into linear video later. + +That means: + +- creators can use AI to help generate visual explanations +- multiple candidate slide variants can compete for the same moment in the lecture +- viewers can browse or interact with those variants +- the format can later crystallize into a fixed canonical video suitable for YouTube + +## Why The Player Matters + +This player is the runtime for that format. + +It proves that a lecture can be represented as: + +- stitched talking-head video segments +- timed slide events on a continuous timeline +- square or fullscreen slide presentation modes +- interactive slide content +- variant selection and future preference learning + +In short: + +This project exists to explore an AI-assisted interactive lecture format that can begin as a live structured presentation and later become a standard video. diff --git a/content-budget.md b/content-budget.md new file mode 100644 index 0000000..c5afe15 --- /dev/null +++ b/content-budget.md @@ -0,0 +1,378 @@ +# GlitchSlide Content Budget + +This document defines content budgets for GlitchPlayer slide templates. + +The goal is not just to keep slides short. The goal is to force clarity. + +A good GlitchSlide should: + +- express one visual idea +- support the spoken script rather than repeat it +- fit the template cleanly +- be short enough to scan instantly +- be specific enough that an AI can generate it reliably + +These limits are for both human authors and AI agents. + +## Core Principle + +Every slide should answer one of these: + +- What is the one thing I want the viewer to notice? +- What is the one comparison I want the viewer to hold? +- What is the one definition I want the viewer to remember? +- What is the one process I want the viewer to understand? + +If a slide tries to do two or three of these at once, it should usually be split. + +## Global Rules + +Across all templates: + +- Prefer one idea per slide. +- Do not restate the exact sentence currently being spoken. +- Assume the narration carries detail; the slide carries structure. +- Keep wording concrete and visual. +- Prefer nouns and verbs over abstract qualifiers. +- Avoid paragraphs unless the template is specifically meant for prose. +- If a slide uses an image, the image should do explanatory work, not decorative work. + +## Character Budgets + +These are hard or near-hard limits. + +- `header`: target 8-28 characters, hard max 36 +- `title`: target 12-36 characters, hard max 48 +- `eyebrow`: target 6-18 characters, hard max 24 +- `body`: target 18-48 characters, hard max 60 +- `quote`: target 18-55 characters, hard max 72 +- `definition`: target 20-55 characters, hard max 70 +- `example`: target 16-45 characters, hard max 60 +- `step label`: target 8-24 characters, hard max 32 +- `chart label`: target 4-12 characters, hard max 14 +- `latexString`: one expression only, hard max 80 characters unless clearly justified + +Important: + +- The hard max exists only for edge cases. +- The target range is the real design intention. + +## Template Budgets + +### 1. `SquareYellow` + +Purpose: + +- one strong image +- one short framing phrase + +Fields: + +- `header` +- `imageSrc` +- `imageAlt` + +Budget: + +- `header`: target 10-24 characters, hard max 32 +- no body text +- image must carry the explanatory weight + +Good: + +- `GROWTH LOOKS FINE` +- `LIFE FEELS TIGHT` +- `OUTPUT IS NOT SECURITY` + +Bad: + +- `This chart suggests that maybe people do not experience economic growth as safety` + +### 2. `FullscreenSplit` + +Purpose: + +- one image +- one short text block +- often used for transitions and seam masking + +Fields: + +- `eyebrow` +- `title` +- `body` +- `imageSrc` +- `imageAlt` +- `imagePosition` + +Budget: + +- `eyebrow`: target 6-14 characters +- `title`: target 16-34 characters, hard max 44 +- `body`: target 18-42 characters, hard max 56 +- title + body together should usually stay under 75 characters + +Good: + +- title: `Fullscreen hides the stitch` +- body: `The talk keeps moving underneath.` + +Bad: + +- title: `A fullscreen explanatory slide can be used to conceal the visible segment transition` + +### 3. `EquationFocus` + +Purpose: + +- one mathematical expression +- one short framing line + +Fields: + +- `eyebrow` +- `title` +- `latexString` +- `annotation` + +Budget: + +- `title`: target 14-32 characters +- `latexString`: one expression only +- `annotation`: target 18-42 characters, hard max 56 + +Rules: + +- no derivations +- no multi-line proofs +- no second equation unless the template changes +- use this slide only when the equation itself is the visual object + +Good: + +- title: `Definition of the mean` +- latex: `\\bar{x} = \\frac{1}{N}\\sum_{i=0}^{N} x_i` +- annotation: `Add values. Divide by count.` + +### 4. `QuoteImage` + +Purpose: + +- a short line worth holding in memory +- reinforced by a meaningful image + +Fields: + +- `eyebrow` +- `quote` +- `attribution` +- `imageSrc` +- `imageAlt` +- `imagePosition` + +Budget: + +- `quote`: target 20-50 characters, hard max 70 +- `attribution`: target 4-18 characters, hard max 24 + +Rules: + +- prefer one sentence +- avoid long punctuation-heavy quotes +- the quote should be memorable enough to stand alone + +### 5. `ChartSingle` + +Purpose: + +- one simple directional comparison + +Fields: + +- `eyebrow` +- `title` +- `body` +- `points[]` + +Budget: + +- `title`: target 14-30 characters +- `body`: target 12-36 characters, hard max 48 +- number of bars: 3-5 preferred, hard max 6 +- each `label`: target 4-10 characters + +Rules: + +- if the story requires 2+ caveats, this is the wrong template +- if the chart needs a legend, it is probably too complex +- if the spoken narration explains the trend, the body can be extremely short + +### 6. `ProcessFlow` + +Purpose: + +- show a sequence +- show a pipeline + +Fields: + +- `eyebrow` +- `title` +- `steps[]` + +Budget: + +- `title`: target 14-34 characters +- steps: 3-5 preferred, hard max 6 +- each step: target 8-22 characters, hard max 30 + +Rules: + +- each step should be a short action phrase +- do not use full sentences +- if the process is too dense, break it into two slides + +Good: + +- `Write the script` +- `Record the talk` +- `Align slide cues` +- `Compare variants` + +### 7. `DefinitionCard` + +Purpose: + +- define one important term + +Fields: + +- `eyebrow` +- `term` +- `definition` +- `example` + +Budget: + +- `term`: target 6-22 characters +- `definition`: target 20-50 characters, hard max 65 +- `example`: target 16-40 characters, hard max 52 + +Rules: + +- the definition should feel like a distilled sentence +- the example should be concrete, not another abstraction + +## AI Authoring Strategy + +An AI agent that knows the full script should not begin by writing slide text. + +It should do this: + +1. Segment the script into beats. +2. Decide whether a beat needs a slide at all. +3. For each beat, decide the job of the slide: + - emphasize + - compare + - define + - quantify + - show process + - frame transition +4. Choose the simplest template that can do that job. +5. Generate the shortest possible text that still makes the visual legible. +6. Generate or choose an image only if the image advances the concept. +7. Reject outputs that exceed the template budget. + +The AI should think: + +- What information is already handled by the narration? +- What should the viewer be able to grasp in under one second? +- What can be implied visually instead of written? + +## AI Success Criteria + +An AI agent is successful when it produces slides that: + +- are shorter than a human expects +- fit the template cleanly +- create contrast with the spoken script instead of duplication +- feel intentional at a glance +- are consistent across many variants + +The AI is not successful when it: + +- fills every available text field +- writes explanatory paragraphs +- repeats what the speaker is already saying +- chooses verbose abstraction over concrete contrast +- generates decorative images unrelated to the spoken idea + +## Content Selection Heuristics + +When an AI has the full script, it should prefer: + +- compression over coverage +- framing over redundancy +- contrast over completeness +- structure over explanation + +Examples: + +- If the script explains a formula, the slide should show the formula and one short gloss. +- If the script gives a long example, the slide should usually show only the key noun, image, or comparison. +- If the speaker is already listing steps verbally, the slide should show only the short step labels. + +## Image Guidance + +For templates with images: + +- images should represent the concept, not merely the topic +- avoid generic “people in office” stock unless the point is collaboration itself +- prefer clear compositional silhouettes and readable subjects +- image prompts should be optimized for one strong central concept + +Bad image prompt: + +- `A professional office environment showing people working together in a modern setting` + +Better image prompt: + +- `Overhead crowd crossing a city square, motion blur, sense of pressure` + +## Validation Rules + +Before accepting a slide, a human or AI validator should check: + +- does each field stay within budget? +- does the text visually fit the template? +- is the slide saying one thing? +- is the slide too close to the spoken line? +- does the image help? +- would removing 20% of the words improve it? + +If the answer to the last question is yes, revise it. + +## Recommended Future Enforcement + +Later, GnommoEditor should encode these budgets in schema or validation rules. + +That would let: + +- human authors get inline warnings +- AI agents get explicit failure signals +- slide generation become more predictable + +Recommended future shape: + +- every template exposes field budgets +- editors validate them live +- AI generators receive the budgets as part of the prompt contract +- ranking systems can penalize overcrowded slides + +## Bottom Line + +The content budget is not an inconvenience. + +It is the mechanism that forces both humans and AI to become visually intelligent. + +Shorter slides are harder to write, but much easier to understand. diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..a29990a --- /dev/null +++ b/deploy.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +TARGET="${1:-all}" + +cd "$ROOT_DIR" +node scripts/deploy-vendor.mjs "$TARGET" "${@:2}" diff --git a/deployment.md b/deployment.md new file mode 100644 index 0000000..7212d13 --- /dev/null +++ b/deployment.md @@ -0,0 +1,679 @@ +# Deploying GlitchPlayer Into Another React + Vite App + +This guide explains how to include `GlitchPlayer` inside another user interface that is also built with React and Vite. + +The target mental model is: + +- your host app owns routing, fetching, auth, persistence, and editor UI +- `GlitchPlayer` owns presentation playback, responsive layout, slide rendering, gesture handling, pause/resume behavior, and voting UI + +In other words, `GlitchPlayer` should behave like an embeddable runtime surface inside a larger product such as GnommoEditor. + +For editor integrations, this package also exposes: + +- `GlitchSlideRenderer` +- `GlitchSlideThumbnail` + +For template pickers, prefer the normalized availability exports: + +- `slideTemplateAvailabilityList` +- `slideTemplateAvailabilityByDisplayMode` + +These expand templates by display mode. If a template supports both `square` and `fullscreen`, it appears once for each supported format. + +## 1. What The Host App Must Provide + +To render `GlitchPlayer`, the host app needs to provide: + +- a `presentation` object +- a `slideRegistry` +- an optional player mode +- an optional target slide id +- an optional vote handler +- an optional player event handler +- an optional session id + +Today, the public player surface is exported from: + +- [src/player/index.ts](/Users/jenstandstad/Projects/gnommoplayer/src/player/index.ts) + +The primary component is: + +- `GlitchPlayer` +- `GlitchSlideRenderer` +- `GlitchSlideThumbnail` + +The key types are: + +- `PresentationDefinition` +- `SlideRegistry` +- `VoteRequest` +- `ClientEvent` + +For editor-driven slide forms and template pickers, this package also exports: + +- `slideTemplateDefinitions` +- `slideTemplateDefinitionList` +- `slideTemplateAvailabilityList` +- `slideTemplateAvailabilityByDisplayMode` +- `slideTemplateDrafts` +- `slideTemplateBudgets` + +For hosted interactive Glitch components, the player also supports a base URL convention: + +- `VITE_GLITCH_COMPONENT_BASE_URL` + +If a `GlitchComponentFrame` slide omits `componentUrl`, the player resolves the iframe source as: + +- `${VITE_GLITCH_COMPONENT_BASE_URL || "/glitch"}/glitch_${componentId.replace(/-/g, "_")}/index.html` + +That matches the pattern where built Glitch component assets are copied into `public/glitch/...`. + +## 2. Public API + +Current host usage looks like this: + +```tsx +import { + GlitchPlayer, + GlitchSlideThumbnail, + createSessionId, + defaultSlideRegistry, + type PresentationDefinition, + type Slide, + type VoteRequest, + type ClientEvent +} from "gnommoplayer"; +import "gnommoplayer/player/styles.css"; + +interface PlayerHostProps { + presentation: PresentationDefinition; +} + +export function PlayerHost({ presentation }: PlayerHostProps) { + async function handleVoteCommit(vote: VoteRequest) { + await fetch(`/api/presentations/${presentation.id}/votes`, { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(vote) + }); + } + + function handlePlayerEvent(event: ClientEvent) { + console.log("[glitch-player-event]", event); + } + + return ( + + ); +} +``` + +## 2.1 Rendering Slide Thumbnails In An Editor + +Use `GlitchSlideThumbnail` for slide lists, cards, and inspector previews. It renders the actual slide component without video playback or player chrome. + +```tsx +function SlideCard({ + presentationId, + slide, +}: { + presentationId: string; + slide: Slide; +}) { + return ( + + ); +} +``` + +Use `GlitchSlideRenderer` when you want a larger slide-only render surface without the surrounding player. + +## 2.1 Previewing A Specific Slide + +For editor workflows, `GlitchPlayer` can start in a slide-targeted preview mode. + +Use: + +- `mode="slide-preview"` +- `targetSlideId="some-slide-id"` + +Example: + +```tsx + +``` + +That mode is useful when: + +- an editor wants to preview one slide in context +- a template author wants to inspect a specific candidate +- GnommoEditor wants to jump directly to the currently selected slide in the timeline + +## 3. Installation Strategy + +There are two practical ways to use `GlitchPlayer` inside another Vite app. + +### Option A: Local workspace dependency + +Use this when the host app and `gnommoplayer` live side-by-side during active development. + +Example: + +```json +{ + "dependencies": { + "gnommoplayer": "file:../gnommoplayer" + } +} +``` + +Then install as usual: + +```bash +npm install +``` + +This is the easiest path while GlitchPlayer is still evolving rapidly. + +### Option B: Internal package + +Use this when the player should be versioned and consumed more formally. + +That usually means: + +- adding a proper package export map +- producing a distributable build +- publishing to a private npm registry or workspace package feed + +This repo is not fully packaged for that yet, but the code is now organized in a way that makes that a straightforward next step. + +### Option C: Built Files Only + +Use this when another agent or deployment process is only allowed to fetch compiled assets from this repo. + +Build the vendor assets with: + +```bash +npm run build:lib +``` + +Or simply run: + +```bash +npm run build +``` + +which now builds both the demo app and the vendor assets in one pass. + +That produces these stable files: + +- `dist/vendor/gnommoplayer.js` +- `dist/vendor/gnommoplayer.css` + +This is the best path for GnommoEditor if the integration process is only allowed to pull built artifacts rather than source files. + +## 3.1 Local Deployment Commands + +This repo includes a deployment helper that copies the latest built vendor bundle into sibling apps. + +Available commands: + +```bash +npm run deploy:editor +npm run deploy:web +npm run deploy:all +./deploy.sh editor +./deploy.sh web +./deploy.sh all +``` + +The shell wrapper is useful when you just want a short deploy command from the repo root: + +```bash +./deploy.sh +``` + +That defaults to: + +```bash +npm run deploy:all +``` + +The npm commands are still available too: + +```bash +npm run deploy:editor +npm run deploy:web +npm run deploy:all +``` + +These commands: + +- run `npm run build:lib` +- ensure the vendor artifacts exist +- copy the latest bundle into the target app + +Current target paths: + +- `../gnommoeditor/src/vendor/gnommoplayer` +- `../gnommoweb/src/vendor/gnommoplayer` + +The underlying script lives at: + +- [scripts/deploy-vendor.mjs](/Users/jenstandstad/Projects/gnommoplayer/scripts/deploy-vendor.mjs) + +You can also call it directly: + +```bash +node scripts/deploy-vendor.mjs editor +node scripts/deploy-vendor.mjs web +node scripts/deploy-vendor.mjs all +node scripts/deploy-vendor.mjs all --skip-build +``` + +Use `--skip-build` only when you know `dist/vendor/` already contains the bundle you want to publish. + +## 4. Styling Requirements + +Import the player stylesheet once in the host app: + +```tsx +import "gnommoplayer/player/styles.css"; +``` + +If the host app is consuming built files directly instead of the source package, import the compiled vendor assets instead: + +```tsx +import "../vendor/gnommoplayer/gnommoplayer.css"; +import { + GlitchPlayer, + GlitchSlideThumbnail, + defaultSlideRegistry +} from "../vendor/gnommoplayer/gnommoplayer.js"; +``` + +Inside this repo, that stylesheet entry currently lives at: + +- [src/player/styles.css](/Users/jenstandstad/Projects/gnommoplayer/src/player/styles.css) + +Important notes: + +- The player expects to own its own visual surface. +- The host should avoid wrapping it in containers that impose additional padding, border radius, or clipping unless that is intentional. +- The player uses viewport-aware layout logic and expects enough room to center its stage within the available host surface. + +Recommended host wrapper: + +```tsx +export function PlayerScreen({ children }: { children: React.ReactNode }) { + return ( +
+ {children} +
+ ); +} +``` + +If the host app has its own page chrome, toolbars, or inspector panels, mount the player inside a dedicated content region rather than inside an arbitrary card component. + +## 4.1 Built-File Vendor Workflow + +For a sibling React + Vite app that is only allowed to fetch built files, the cleanest integration flow is: + +1. Run `npm run build:lib` in `gnommoplayer` +2. Copy: + - `dist/vendor/gnommoplayer.js` + - `dist/vendor/gnommoplayer.css` +3. Place them in a vendor folder inside the host app, for example: + - `src/vendor/gnommoplayer/gnommoplayer.js` + - `src/vendor/gnommoplayer/gnommoplayer.css` +4. Import the CSS once near the app root +5. Import the JS module where the host renders the player or thumbnails + +The built JS bundle already inlines the dynamic slide imports, so the host does not need to manage extra chunk files for the standard slide set. + +## 5. Presentation Data Contract + +`GlitchPlayer` expects a `PresentationDefinition`. + +That type is currently defined in: + +- [src/types/lecture.ts](/Users/jenstandstad/Projects/gnommoplayer/src/types/lecture.ts) + +At the moment, `PresentationDefinition` is an alias for the existing internal `LectureDefinition` shape. + +The important fields are: + +```ts +interface PresentationDefinition { + id: string; + title: string; + version: string; + durationSec: number; + segments: VideoSegment[]; + slides: Slide[]; +} +``` + +Each presentation needs: + +- ordered video segments +- timed slides +- one or more `glitchSlides` per logical slide +- valid `componentKey` values that exist in the registry supplied by the host + +## 6. Loading Presentations In The Host App + +The host app should fetch presentation data before rendering `GlitchPlayer`. + +Example host loader: + +```tsx +import { useEffect, useState } from "react"; +import { GlitchPlayer, type PresentationDefinition } from "gnommoplayer"; + +export function PresentationRoute({ + presentationId +}: { + presentationId: string; +}) { + const [presentation, setPresentation] = + useState(null); + const [error, setError] = useState(null); + + useEffect(() => { + let cancelled = false; + + fetch(`/api/presentations/${presentationId}`) + .then(async (response) => { + if (!response.ok) { + throw new Error(`Failed to load presentation ${presentationId}`); + } + + return (await response.json()) as PresentationDefinition; + }) + .then((data) => { + if (!cancelled) { + setPresentation(data); + } + }) + .catch((caughtError: unknown) => { + if (!cancelled) { + setError( + caughtError instanceof Error + ? caughtError.message + : "Could not load presentation." + ); + } + }); + + return () => { + cancelled = true; + }; + }, [presentationId]); + + if (error) { + return
{error}
; + } + + if (!presentation) { + return
Loading…
; + } + + return ( + + ); +} +``` + +## 7. Slide Registry Integration + +The registry maps `componentKey` strings from presentation data to lazily-loaded React modules. + +It looks like this: + +```ts +type SlideRegistry = Record< + string, + () => Promise<{ default: React.ComponentType }> +>; +``` + +In this repo, the built-in demo registry lives at: + +- [src/lib/slideRegistry.ts](/Users/jenstandstad/Projects/gnommoplayer/src/lib/slideRegistry.ts) + +Example host registry: + +```tsx +import type { SlideRegistry } from "gnommoplayer"; + +export const gnommoEditorSlideRegistry: SlideRegistry = { + SquareYellow: () => import("./slides/SquareYellow"), + FullscreenSplit: () => import("./slides/FullscreenSplit"), + RevenueChart: () => import("./slides/RevenueChart"), + OrbitalModel3D: () => import("./slides/OrbitalModel3D") +}; +``` + +Rules to keep in mind: + +- Every `componentKey` referenced by the presentation must exist in the registry. +- Components should be deterministic and reasonably lightweight. +- Prefer `componentKey + props` over arbitrary runtime code from a database. +- If the host supports custom submitted code, that code should be reviewed or sandboxed before entering the public registry. + +## 8. Vote Handling + +The player can emit vote requests through `onVoteCommit`. + +That callback receives a `VoteRequest`: + +```ts +interface VoteRequest { + lectureId: string; + slideId: string; + previousGlitchSlideId: string; + selectedGlitchSlideId: string; + voteDirection?: "up" | "down"; + sessionId: string; + timestamp: string; + deviceContext: DeviceContext; +} +``` + +Even though the field is still named `lectureId` internally, treat it as the presentation id for integration purposes. + +Recommended host behavior: + +- send the vote request to your own API +- include auth/session context on the server side +- do not block the UI longer than necessary +- log failures, but keep playback usable + +Example: + +```tsx +async function handleVoteCommit(vote: VoteRequest) { + const response = await fetch(`/api/presentations/${vote.lectureId}/votes`, { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(vote) + }); + + if (!response.ok) { + throw new Error("Vote request failed."); + } +} +``` + +## 9. Player Events + +The host can also listen to runtime events via `onEvent`. + +Current events include things like: + +- `lecture_loaded` +- `segment_changed` +- `slide_activated` +- `soft_pause_started` +- `soft_pause_ended` +- `glitch_slide_changed` +- `vote_committed` + +This is useful for: + +- analytics +- debugging +- editor preview tooling +- QA capture + +Example: + +```tsx +function handlePlayerEvent(event: ClientEvent) { + if (event.type === "slide_activated") { + console.log("Active slide:", event.slideId, event.glitchSlideId); + } +} +``` + +## 10. Recommended Host Layout + +For a host app like GnommoEditor, a strong integration pattern is: + +- app shell owns toolbar, navigation, inspector, and editor panels +- central preview region owns the player mount +- the player fills that preview region + +Example: + +```tsx +export function EditorPreviewPane({ + presentation +}: { + presentation: PresentationDefinition; +}) { + return ( +
+ +
+ ); +} +``` + +Important: + +- make sure the containing region allows height to collapse properly with `min-height: 0` when used inside flex or grid shells +- avoid nesting inside containers with accidental `overflow: hidden` unless intended +- avoid wrapping the player in padded cards, because the player already frames its own stage + +## 11. Vite Considerations + +If the host app is also using Vite: + +- dynamic `import()` for slide components will work well +- CSS import from the player should be straightforward +- local workspace dependency is usually the easiest during development + +Potential issues to watch: + +- duplicated React versions between host and player +- CSS ordering conflicts if the host imports many global styles after the player stylesheet +- path alias assumptions if you later move this from repo-local import to packaged dependency + +Recommended safeguards: + +- keep React and ReactDOM deduped in the workspace +- import player styles at the app shell level +- keep slide modules in the host app, not hidden inside the player package, if GnommoEditor should own template evolution + +## 12. Minimal GnommoEditor Integration Plan + +If the target is GnommoEditor, the simplest inclusion path is: + +1. Add `gnommoplayer` as a workspace or file dependency. +2. Import `GlitchPlayer` and `player/styles.css`. +3. Fetch the current presentation from GnommoEditor’s backend. +4. Build a host-owned slide registry matching the templates GnommoEditor supports. +5. Pass vote commits into a GnommoEditor API endpoint. +6. Optionally use `onEvent` to power preview analytics or editor debugging. + +That gives GnommoEditor responsibility for: + +- data +- registry +- persistence +- product shell + +And leaves GlitchPlayer responsible for: + +- playback +- timeline +- responsive stage layout +- slide rendering +- drag browsing +- voting interaction UI + +## 13. Suggested Next Steps Before Production Embedding + +Before using this as a stable shared dependency, I recommend: + +1. Rename remaining internal `lecture*` event/type fields to `presentation*` where possible. +2. Add a package export map for `src/player/index.ts`. +3. Add a small integration example app or Storybook-like preview host. +4. Add a few host-level visual regression tests for portrait and landscape framing. +5. Decide whether the player package or the host app owns built-in default slide templates. + +## 14. Current Reality Check + +Right now, GlitchPlayer is reusable enough to embed in another React + Vite app, especially in a workspace-style setup. + +It is not yet a polished published library, but it already has the right architectural boundary: + +- host app provides presentation + registry + persistence +- GlitchPlayer provides runtime playback and interaction + +That is the correct seam for moving this into GnommoEditor. diff --git a/dist/assets/ChartSingle-B5EnycUf.js b/dist/assets/ChartSingle-B5EnycUf.js new file mode 100644 index 0000000..3f5bc8d --- /dev/null +++ b/dist/assets/ChartSingle-B5EnycUf.js @@ -0,0 +1 @@ +import{j as a}from"./index-D2K-duz6.js";function h(s){if(!Array.isArray(s)||s.length===0)return[{label:"Security",value:72,color:"#111"},{label:"Trust",value:58,color:"rgba(17, 17, 17, 0.72)"},{label:"Growth",value:44,color:"rgba(17, 17, 17, 0.52)"}];const c=[];return s.forEach((e,n)=>{if(!e||typeof e!="object")return;const l=e,t=Number(l.value);c.push({label:String(l.label??`Series ${n+1}`),value:Number.isFinite(t)?Math.max(0,t):0,color:typeof l.color=="string"?l.color:void 0})}),c.length>0?c:[{label:"Security",value:72,color:"#111"},{label:"Trust",value:58,color:"rgba(17, 17, 17, 0.72)"},{label:"Growth",value:44,color:"rgba(17, 17, 17, 0.52)"}]}function u({props:s,paused:c}){const e=s,n=String(e.header??e.eyebrow??"Chart single"),l=String(e.title??"One chart, one comparison"),t=String(e.body??"Use one chart for one contrast."),o=h(e.points),i=Math.max(...o.map(r=>r.value),1);return a.jsx("article",{className:`chart-single ${c?"chart-single--paused":""}`,children:a.jsxs("div",{className:"chart-single__content",children:[a.jsxs("div",{className:"chart-single__copy",children:[a.jsx("p",{className:"chart-single__eyebrow",children:n}),a.jsx("h2",{className:"chart-single__title",children:l}),a.jsx("p",{className:"chart-single__body",children:t})]}),a.jsx("div",{className:"chart-single__plot",role:"img","aria-label":l,children:o.map(r=>a.jsxs("div",{className:"chart-single__row",children:[a.jsx("span",{className:"chart-single__label",children:r.label}),a.jsx("div",{className:"chart-single__bar-track",children:a.jsx("div",{className:"chart-single__bar-fill",style:{width:`${r.value/i*100}%`,background:r.color??"#111"}})}),a.jsx("span",{className:"chart-single__value",children:r.value})]},r.label))})]})})}export{u as default}; diff --git a/dist/assets/DefinitionCard-DjuSxCYC.js b/dist/assets/DefinitionCard-DjuSxCYC.js new file mode 100644 index 0000000..cd3717f --- /dev/null +++ b/dist/assets/DefinitionCard-DjuSxCYC.js @@ -0,0 +1 @@ +import{j as e}from"./index-D2K-duz6.js";function o({props:n,paused:t}){const i=n,a=String(i.header??i.eyebrow??"Definition"),r=String(i.term??"Crystallization"),d=String(i.definition??"An interactive talk becomes a fixed video."),s=String(i.example??"Same source. Cleaner final cut.");return e.jsx("article",{className:`definition-card ${t?"definition-card--paused":""}`,children:e.jsxs("div",{className:"definition-card__content",children:[e.jsx("p",{className:"definition-card__eyebrow",children:a}),e.jsx("h2",{className:"definition-card__term",children:r}),e.jsx("p",{className:"definition-card__definition",children:d}),e.jsx("p",{className:"definition-card__example",children:s})]})})}export{o as default}; diff --git a/dist/assets/EquationFocus-CZCQ_h0W.js b/dist/assets/EquationFocus-CZCQ_h0W.js new file mode 100644 index 0000000..88da11e --- /dev/null +++ b/dist/assets/EquationFocus-CZCQ_h0W.js @@ -0,0 +1 @@ +import{r as w,j as i}from"./index-D2K-duz6.js";const y="glitch-player-mathjax",E="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js";let x=null;function M(){var d;return typeof window>"u"||typeof document>"u"||(d=window.MathJax)!=null&&d.typesetPromise?Promise.resolve():x||(x=new Promise((s,u)=>{var l;window.MathJax=window.MathJax??{};const n=document.getElementById(y),a=()=>{var e,c;n&&(n.dataset.loaded="true");const f=(c=(e=window.MathJax)==null?void 0:e.startup)==null?void 0:c.promise;if(f){f.then(()=>s()).catch(u);return}s()};if(n){if(n.dataset.loaded==="true"||(l=window.MathJax)!=null&&l.typesetPromise){a();return}n.addEventListener("load",a,{once:!0}),n.addEventListener("error",()=>u(new Error("Failed to load MathJax.")),{once:!0});return}const t=document.createElement("script");t.id=y,t.async=!0,t.src=E,t.addEventListener("load",()=>{t.dataset.loaded="true",a()},{once:!0}),t.addEventListener("error",()=>u(new Error("Failed to load MathJax.")),{once:!0}),document.head.appendChild(t)}),x)}function g({props:d,latexString:s,displayMode:u,paused:n}){const a=d,t=String(a.header??a.eyebrow??"Equation focus"),l=String(a.title??"Definition of the mean"),f=String(a.annotation??"The mean is the total of all observations divided by the number of observations."),e=w.useRef(null),[c,p]=w.useState("loading");return w.useEffect(()=>{const J=e.current,_=s??String.raw`\bar{x} = \frac{1}{N}\sum_{i=0}^{N} x_i`;if(!J)return;let h=!1;return p("loading"),M().then(async()=>{var r,q,m,v;if(h||!e.current)return;const o=e.current;o.textContent=`\\[${_}\\]`,(q=(r=window.MathJax)==null?void 0:r.typesetClear)==null||q.call(r,[o]),await((v=(m=window.MathJax)==null?void 0:m.typesetPromise)==null?void 0:v.call(m,[o])),h||p("ready")}).catch(()=>{!h&&e.current&&(e.current.textContent=_,p("error"))}),()=>{var o,r;h=!0,e.current&&((r=(o=window.MathJax)==null?void 0:o.typesetClear)==null||r.call(o,[e.current]))}},[s]),i.jsx("article",{className:`equation-focus equation-focus--${u} ${n?"equation-focus--paused":""}`,children:i.jsxs("div",{className:"equation-focus__content",children:[i.jsx("p",{className:"equation-focus__eyebrow",children:t}),i.jsx("h2",{className:"equation-focus__title",children:l}),i.jsx("div",{className:"equation-focus__equation-frame",children:i.jsx("div",{ref:e,className:`equation-focus__equation equation-focus__equation--mathjax ${c==="loading"?"equation-focus__equation--loading":""} ${c==="error"?"equation-focus__equation--error":""}`,"aria-live":"polite"})}),i.jsx("p",{className:"equation-focus__annotation",children:f})]})})}export{g as default}; diff --git a/dist/assets/FullscreenSplit-Piv2MROz.js b/dist/assets/FullscreenSplit-Piv2MROz.js new file mode 100644 index 0000000..c0d3754 --- /dev/null +++ b/dist/assets/FullscreenSplit-Piv2MROz.js @@ -0,0 +1 @@ +import{j as e}from"./index-D2K-duz6.js";function m({props:t,paused:i}){const s=t,n=String(s.eyebrow??"Fullscreen split"),l=String(s.title??"One image. One idea."),a=String(s.body??"Fullscreen keeps the seam invisible."),c=String(s.imageSrc??"https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=1200&q=80"),r=String(s.imageAlt??l),p=s.imagePosition==="right"?"right":"left";return e.jsxs("article",{className:`fullscreen-split ${i?"fullscreen-split--paused":""} fullscreen-split--image-${p}`,children:[e.jsx("div",{className:"fullscreen-split__panel fullscreen-split__panel--image",children:e.jsx("img",{className:"fullscreen-split__image",src:c,alt:r})}),e.jsx("div",{className:"fullscreen-split__panel fullscreen-split__panel--text",children:e.jsxs("div",{className:"fullscreen-split__text",children:[e.jsx("p",{className:"fullscreen-split__eyebrow",children:n}),e.jsx("h2",{className:"fullscreen-split__title",children:l}),e.jsx("p",{className:"fullscreen-split__body",children:a})]})})]})}export{m as default}; diff --git a/dist/assets/FullscreenVideo-T7AJva9H.js b/dist/assets/FullscreenVideo-T7AJva9H.js new file mode 100644 index 0000000..b023b2c --- /dev/null +++ b/dist/assets/FullscreenVideo-T7AJva9H.js @@ -0,0 +1 @@ +import{r as m,j as s}from"./index-D2K-duz6.js";function y({props:x,paused:u,onMediaLoadingChange:r}){const l=x,v=String(l.header??"").trim(),S=String(l.caption??"").trim(),c=String(l.videoSrc??"").trim(),_=String(l.posterSrc??"").trim(),f=m.useRef(null);return m.useEffect(()=>{const t=f.current;if(!t)return;if(u){t.pause();return}const p=t.play();p&&typeof p.catch=="function"&&p.catch(()=>{})},[u,c]),m.useEffect(()=>{if(!c){r==null||r(!1);return}return r==null||r(!0),()=>{r==null||r(!1);const t=f.current;t&&(t.pause(),t.currentTime=0)}},[r,c]),s.jsxs("article",{className:`fullscreen-video ${u?"fullscreen-video--paused":""}`,children:[s.jsx("video",{ref:f,className:"fullscreen-video__media",src:c,poster:_||void 0,autoPlay:!0,playsInline:!0,preload:"metadata",controls:!1,onLoadedData:()=>r==null?void 0:r(!1),onCanPlay:()=>r==null?void 0:r(!1),onPlaying:()=>r==null?void 0:r(!1),onLoadStart:()=>r==null?void 0:r(!0),onWaiting:()=>r==null?void 0:r(!0),onStalled:()=>r==null?void 0:r(!0),onSuspend:()=>r==null?void 0:r(!1),onEnded:()=>r==null?void 0:r(!1),onError:()=>r==null?void 0:r(!1)}),v?s.jsx("div",{className:"fullscreen-video__chrome",children:s.jsx("p",{className:"fullscreen-video__header",children:v})}):null,S?s.jsx("p",{className:"fullscreen-video__caption",children:S}):null]})}export{y as default}; diff --git a/dist/assets/FullscreenVideoCenterCaption-Bbw83wap.js b/dist/assets/FullscreenVideoCenterCaption-Bbw83wap.js new file mode 100644 index 0000000..2b8c7e7 --- /dev/null +++ b/dist/assets/FullscreenVideoCenterCaption-Bbw83wap.js @@ -0,0 +1 @@ +import{r as v,j as c}from"./index-D2K-duz6.js";function j({props:S,paused:l,onMediaLoadingChange:t}){const u=S,m=String(u.caption??"").trim(),s=String(u.videoSrc??"").trim(),x=String(u.posterSrc??"").trim(),f=v.useRef(null);return v.useEffect(()=>{const r=f.current;if(!r)return;if(l){r.pause();return}const p=r.play();p&&typeof p.catch=="function"&&p.catch(()=>{})},[l,s]),v.useEffect(()=>{if(!s){t==null||t(!1);return}return t==null||t(!0),()=>{t==null||t(!1);const r=f.current;r&&(r.pause(),r.currentTime=0)}},[t,s]),c.jsxs("article",{className:`fullscreen-video-center-caption ${l?"fullscreen-video-center-caption--paused":""}`,children:[c.jsx("video",{ref:f,className:"fullscreen-video-center-caption__media",src:s,poster:x||void 0,autoPlay:!0,playsInline:!0,preload:"metadata",controls:!1,onLoadedData:()=>t==null?void 0:t(!1),onCanPlay:()=>t==null?void 0:t(!1),onPlaying:()=>t==null?void 0:t(!1),onLoadStart:()=>t==null?void 0:t(!0),onWaiting:()=>t==null?void 0:t(!0),onStalled:()=>t==null?void 0:t(!0),onSuspend:()=>t==null?void 0:t(!1),onEnded:()=>t==null?void 0:t(!1),onError:()=>t==null?void 0:t(!1)}),m?c.jsx("div",{className:"fullscreen-video-center-caption__overlay",children:c.jsx("p",{className:"fullscreen-video-center-caption__caption",children:m})}):null]})}export{j as default}; diff --git a/dist/assets/FullscreenVideoTitle-DvKvZc4X.js b/dist/assets/FullscreenVideoTitle-DvKvZc4X.js new file mode 100644 index 0000000..d5af70b --- /dev/null +++ b/dist/assets/FullscreenVideoTitle-DvKvZc4X.js @@ -0,0 +1 @@ +import{r as p,j as l}from"./index-D2K-duz6.js";const y="No need to be discrete";function _({props:m,paused:c,onMediaLoadingChange:t}){const u=m,S=String(u.title??"").trim()||y,s=String(u.videoSrc??"").trim(),x=String(u.posterSrc??"").trim(),f=p.useRef(null);return p.useEffect(()=>{const r=f.current;if(!r)return;if(c){r.pause();return}const v=r.play();v&&typeof v.catch=="function"&&v.catch(()=>{})},[c,s]),p.useEffect(()=>{if(!s){t==null||t(!1);return}return t==null||t(!0),()=>{t==null||t(!1);const r=f.current;r&&(r.pause(),r.currentTime=0)}},[t,s]),l.jsxs("article",{className:`fullscreen-video-title ${c?"fullscreen-video-title--paused":""}`,children:[l.jsx("video",{ref:f,className:"fullscreen-video-title__media",src:s,poster:x||void 0,autoPlay:!0,playsInline:!0,preload:"metadata",controls:!1,onLoadedData:()=>t==null?void 0:t(!1),onCanPlay:()=>t==null?void 0:t(!1),onPlaying:()=>t==null?void 0:t(!1),onLoadStart:()=>t==null?void 0:t(!0),onWaiting:()=>t==null?void 0:t(!0),onStalled:()=>t==null?void 0:t(!0),onSuspend:()=>t==null?void 0:t(!1),onEnded:()=>t==null?void 0:t(!1),onError:()=>t==null?void 0:t(!1)}),l.jsx("div",{className:"fullscreen-video-title__overlay",children:l.jsx("h2",{className:"fullscreen-video-title__title",children:S})})]})}export{_ as default}; diff --git a/dist/assets/GlitchComponentFrame-CM7hKmoe.js b/dist/assets/GlitchComponentFrame-CM7hKmoe.js new file mode 100644 index 0000000..12a90a6 --- /dev/null +++ b/dist/assets/GlitchComponentFrame-CM7hKmoe.js @@ -0,0 +1 @@ +import{j as t}from"./index-D2K-duz6.js";function s(e){return e.replace(/\/+$/,"")}function m(){return s("/glitch")}function p(e){return`glitch_${e.replace(/-/g,"_")}`}function h(e,o){const c=o==null?void 0:o.trim();if(c)return c;const n=m(),l=p(e);return`${n}/${l}/index.html`}function f({props:e,displayMode:o,paused:c}){const n=e,l=String(n.header??"Interactive component"),r=String(n.componentId??"glitch-component"),i=h(r,String(n.componentUrl??"").trim()),a=String(n.caption??"Explore the model directly inside the slide.");return t.jsxs("article",{className:`glitch-component-frame glitch-component-frame--${o} ${c?"glitch-component-frame--paused":""}`,children:[t.jsxs("div",{className:"glitch-component-frame__chrome",children:[t.jsx("p",{className:"glitch-component-frame__eyebrow",children:l}),t.jsx("p",{className:"glitch-component-frame__id",children:r})]}),t.jsx("div",{className:"glitch-component-frame__viewport",children:t.jsx("iframe",{className:"glitch-component-frame__iframe",src:i,title:l||r,loading:"lazy",allow:"fullscreen; autoplay; xr-spatial-tracking",sandbox:"allow-scripts allow-same-origin allow-pointer-lock allow-popups allow-forms"})}),t.jsx("p",{className:"glitch-component-frame__caption",children:a})]})}export{f as default}; diff --git a/dist/assets/ProcessFlow-B2obDIQa.js b/dist/assets/ProcessFlow-B2obDIQa.js new file mode 100644 index 0000000..3f904fd --- /dev/null +++ b/dist/assets/ProcessFlow-B2obDIQa.js @@ -0,0 +1 @@ +import{j as s}from"./index-D2K-duz6.js";function i(e){return!Array.isArray(e)||e.length===0?["Record talking-head segments","Align transcript to timeline","Generate slide variants","Play, compare, and refine"]:e.map(r=>String(r))}function d({props:e,paused:r}){const o=e,l=String(o.eyebrow??"Process flow"),a=String(o.title??"How it becomes a video"),n=i(o.steps);return s.jsx("article",{className:`process-flow ${r?"process-flow--paused":""}`,children:s.jsxs("div",{className:"process-flow__content",children:[s.jsx("p",{className:"process-flow__eyebrow",children:l}),s.jsx("h2",{className:"process-flow__title",children:a}),s.jsx("div",{className:"process-flow__steps",children:n.map((t,c)=>s.jsxs("div",{className:"process-flow__step",children:[s.jsx("span",{className:"process-flow__index",children:c+1}),s.jsx("p",{className:"process-flow__label",children:t})]},`${c}-${t}`))})]})})}export{d as default}; diff --git a/dist/assets/QuoteImage-C0EQ3Yny.js b/dist/assets/QuoteImage-C0EQ3Yny.js new file mode 100644 index 0000000..8341e3c --- /dev/null +++ b/dist/assets/QuoteImage-C0EQ3Yny.js @@ -0,0 +1 @@ +import{j as e}from"./index-D2K-duz6.js";function l({props:i,paused:o}){const t=i,s=String(t.eyebrow??"Quote image"),a=String(t.quote??"Good explanation makes hard ideas feel graspable."),m=String(t.attribution??"Glitch University"),n=String(t.imageSrc??"https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=1200&q=80"),r=String(t.imageAlt??a),g=t.imagePosition==="right"?"right":"left";return e.jsxs("article",{className:`quote-image ${o?"quote-image--paused":""} quote-image--image-${g}`,children:[e.jsx("div",{className:"quote-image__panel quote-image__panel--image",children:e.jsx("img",{className:"quote-image__image",src:n,alt:r})}),e.jsx("div",{className:"quote-image__panel quote-image__panel--quote",children:e.jsxs("div",{className:"quote-image__content",children:[e.jsx("p",{className:"quote-image__eyebrow",children:s}),e.jsxs("blockquote",{className:"quote-image__quote",children:['"',a,'"']}),e.jsx("p",{className:"quote-image__attribution",children:m})]})})]})}export{l as default}; diff --git a/dist/assets/SquareVideo-GgREJSQR.js b/dist/assets/SquareVideo-GgREJSQR.js new file mode 100644 index 0000000..225c229 --- /dev/null +++ b/dist/assets/SquareVideo-GgREJSQR.js @@ -0,0 +1 @@ +import{r as f,j as p}from"./index-D2K-duz6.js";function y({props:m,paused:c,onMediaLoadingChange:r}){const v=m,s=String(v.videoSrc??"").trim(),S=String(v.posterSrc??"").trim(),u=f.useRef(null);return f.useEffect(()=>{const t=u.current;if(!t)return;if(c){t.pause();return}const l=t.play();l&&typeof l.catch=="function"&&l.catch(()=>{})},[c,s]),f.useEffect(()=>{if(!s){r==null||r(!1);return}return r==null||r(!0),()=>{r==null||r(!1);const t=u.current;t&&(t.pause(),t.currentTime=0)}},[r,s]),p.jsx("article",{className:`square-video ${c?"square-video--paused":""}`,children:p.jsx("div",{className:"square-video__frame",children:p.jsx("video",{ref:u,className:"square-video__media",src:s,poster:S||void 0,autoPlay:!0,preload:"metadata",playsInline:!0,controls:!1,onLoadedData:()=>r==null?void 0:r(!1),onCanPlay:()=>r==null?void 0:r(!1),onPlaying:()=>r==null?void 0:r(!1),onLoadStart:()=>r==null?void 0:r(!0),onWaiting:()=>r==null?void 0:r(!0),onStalled:()=>r==null?void 0:r(!0),onSuspend:()=>r==null?void 0:r(!1),onEnded:()=>r==null?void 0:r(!1),onError:()=>r==null?void 0:r(!1)})})})}export{y as default}; diff --git a/dist/assets/SquareYellow-DRGJP0IQ.js b/dist/assets/SquareYellow-DRGJP0IQ.js new file mode 100644 index 0000000..a9e48de --- /dev/null +++ b/dist/assets/SquareYellow-DRGJP0IQ.js @@ -0,0 +1 @@ +import{j as a}from"./index-D2K-duz6.js";function m({props:s,paused:r}){const e=s,t=String(e.header??"Square yellow"),i=String(e.imageSrc??"https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=1200&q=80"),l=String(e.imageAlt??t);return a.jsx("article",{className:`square-slide square-slide--yellow ${r?"square-slide--paused":""}`,children:a.jsx("div",{className:"square-slide__image-frame",children:a.jsx("img",{className:"square-slide__image",src:i,alt:l})})})}export{m as default}; diff --git a/dist/assets/index-D2K-duz6.js b/dist/assets/index-D2K-duz6.js new file mode 100644 index 0000000..060fae6 --- /dev/null +++ b/dist/assets/index-D2K-duz6.js @@ -0,0 +1,40 @@ +var cd=Object.defineProperty;var dd=(e,t,n)=>t in e?cd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var _u=(e,t,n)=>dd(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const i of l)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(l){const i={};return l.integrity&&(i.integrity=l.integrity),l.referrerPolicy&&(i.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?i.credentials="include":l.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(l){if(l.ep)return;l.ep=!0;const i=n(l);fetch(l.href,i)}})();function fd(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Hs={exports:{}},Pl={},Ws={exports:{}},O={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var vr=Symbol.for("react.element"),pd=Symbol.for("react.portal"),md=Symbol.for("react.fragment"),hd=Symbol.for("react.strict_mode"),vd=Symbol.for("react.profiler"),yd=Symbol.for("react.provider"),gd=Symbol.for("react.context"),Sd=Symbol.for("react.forward_ref"),wd=Symbol.for("react.suspense"),kd=Symbol.for("react.memo"),_d=Symbol.for("react.lazy"),xu=Symbol.iterator;function xd(e){return e===null||typeof e!="object"?null:(e=xu&&e[xu]||e["@@iterator"],typeof e=="function"?e:null)}var Qs={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Ks=Object.assign,Gs={};function Tn(e,t,n){this.props=e,this.context=t,this.refs=Gs,this.updater=n||Qs}Tn.prototype.isReactComponent={};Tn.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Tn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Ys(){}Ys.prototype=Tn.prototype;function So(e,t,n){this.props=e,this.context=t,this.refs=Gs,this.updater=n||Qs}var wo=So.prototype=new Ys;wo.constructor=So;Ks(wo,Tn.prototype);wo.isPureReactComponent=!0;var Eu=Array.isArray,qs=Object.prototype.hasOwnProperty,ko={current:null},Xs={key:!0,ref:!0,__self:!0,__source:!0};function Zs(e,t,n){var r,l={},i=null,o=null;if(t!=null)for(r in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(i=""+t.key),t)qs.call(t,r)&&!Xs.hasOwnProperty(r)&&(l[r]=t[r]);var s=arguments.length-2;if(s===1)l.children=n;else if(1>>1,q=g[B];if(0>>1;Bl(en,j))bl(je,en)?(g[B]=je,g[b]=j,B=b):(g[B]=en,g[$e]=j,B=$e);else if(bl(je,j))g[B]=je,g[b]=j,B=b;else break e}}return z}function l(g,z){var j=g.sortIndex-z.sortIndex;return j!==0?j:g.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var u=[],c=[],h=1,m=null,p=3,v=!1,k=!1,_=!1,F=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,a=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function d(g){for(var z=n(c);z!==null;){if(z.callback===null)r(c);else if(z.startTime<=g)r(c),z.sortIndex=z.expirationTime,t(u,z);else break;z=n(c)}}function y(g){if(_=!1,d(g),!k)if(n(u)!==null)k=!0,Pe(C);else{var z=n(c);z!==null&&ht(y,z.startTime-g)}}function C(g,z){k=!1,_&&(_=!1,f(T),T=-1),v=!0;var j=p;try{for(d(z),m=n(u);m!==null&&(!(m.expirationTime>z)||g&&!Se());){var B=m.callback;if(typeof B=="function"){m.callback=null,p=m.priorityLevel;var q=B(m.expirationTime<=z);z=e.unstable_now(),typeof q=="function"?m.callback=q:m===n(u)&&r(u),d(z)}else r(u);m=n(u)}if(m!==null)var vt=!0;else{var $e=n(c);$e!==null&&ht(y,$e.startTime-z),vt=!1}return vt}finally{m=null,p=j,v=!1}}var N=!1,E=null,T=-1,W=5,R=-1;function Se(){return!(e.unstable_now()-Rg||125B?(g.sortIndex=j,t(c,g),n(u)===null&&g===n(c)&&(_?(f(T),T=-1):_=!0,ht(y,j-B))):(g.sortIndex=q,t(u,g),k||v||(k=!0,Pe(C))),g},e.unstable_shouldYield=Se,e.unstable_wrapCallback=function(g){var z=p;return function(){var j=p;p=z;try{return g.apply(this,arguments)}finally{p=j}}}})(na);ta.exports=na;var Od=ta.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Dd=I,Le=Od;function S(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),xi=Object.prototype.hasOwnProperty,Fd=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Pu={},Nu={};function Ud(e){return xi.call(Nu,e)?!0:xi.call(Pu,e)?!1:Fd.test(e)?Nu[e]=!0:(Pu[e]=!0,!1)}function Vd(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Ad(e,t,n,r){if(t===null||typeof t>"u"||Vd(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function ge(e,t,n,r,l,i,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=o}var ae={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ae[e]=new ge(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ae[t]=new ge(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ae[e]=new ge(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ae[e]=new ge(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ae[e]=new ge(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ae[e]=new ge(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ae[e]=new ge(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ae[e]=new ge(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ae[e]=new ge(e,5,!1,e.toLowerCase(),null,!1,!1)});var xo=/[\-:]([a-z])/g;function Eo(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(xo,Eo);ae[t]=new ge(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(xo,Eo);ae[t]=new ge(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(xo,Eo);ae[t]=new ge(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ae[e]=new ge(e,1,!1,e.toLowerCase(),null,!1,!1)});ae.xlinkHref=new ge("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ae[e]=new ge(e,1,!1,e.toLowerCase(),null,!0,!0)});function Co(e,t,n,r){var l=ae.hasOwnProperty(t)?ae[t]:null;(l!==null?l.type!==0:r||!(2s||l[o]!==i[s]){var u=` +`+l[o].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=o&&0<=s);break}}}finally{Xl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?An(e):""}function $d(e){switch(e.tag){case 5:return An(e.type);case 16:return An("Lazy");case 13:return An("Suspense");case 19:return An("SuspenseList");case 0:case 2:case 15:return e=Zl(e.type,!1),e;case 11:return e=Zl(e.type.render,!1),e;case 1:return e=Zl(e.type,!0),e;default:return""}}function Ni(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case rn:return"Fragment";case nn:return"Portal";case Ei:return"Profiler";case Po:return"StrictMode";case Ci:return"Suspense";case Pi:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ia:return(e.displayName||"Context")+".Consumer";case la:return(e._context.displayName||"Context")+".Provider";case No:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case To:return t=e.displayName||null,t!==null?t:Ni(e.type)||"Memo";case St:t=e._payload,e=e._init;try{return Ni(e(t))}catch{}}return null}function Bd(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ni(t);case 8:return t===Po?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function jt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ua(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Hd(e){var t=ua(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(o){r=""+o,i.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Ir(e){e._valueTracker||(e._valueTracker=Hd(e))}function sa(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ua(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function nl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Ti(e,t){var n=t.checked;return G({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Iu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=jt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function aa(e,t){t=t.checked,t!=null&&Co(e,"checked",t,!1)}function Ii(e,t){aa(e,t);var n=jt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Li(e,t.type,n):t.hasOwnProperty("defaultValue")&&Li(e,t.type,jt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Lu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Li(e,t,n){(t!=="number"||nl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var $n=Array.isArray;function hn(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=Lr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function er(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Wn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Wd=["Webkit","ms","Moz","O"];Object.keys(Wn).forEach(function(e){Wd.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Wn[t]=Wn[e]})});function pa(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Wn.hasOwnProperty(e)&&Wn[e]?(""+t).trim():t+"px"}function ma(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=pa(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Qd=G({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ji(e,t){if(t){if(Qd[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(S(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(S(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(S(61))}if(t.style!=null&&typeof t.style!="object")throw Error(S(62))}}function Ri(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Oi=null;function Io(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Di=null,vn=null,yn=null;function ju(e){if(e=Sr(e)){if(typeof Di!="function")throw Error(S(280));var t=e.stateNode;t&&(t=zl(t),Di(e.stateNode,e.type,t))}}function ha(e){vn?yn?yn.push(e):yn=[e]:vn=e}function va(){if(vn){var e=vn,t=yn;if(yn=vn=null,ju(e),t)for(e=0;e>>=0,e===0?32:31-(nf(e)/rf|0)|0}var zr=64,Mr=4194304;function Bn(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ol(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,i=e.pingedLanes,o=n&268435455;if(o!==0){var s=o&~l;s!==0?r=Bn(s):(i&=o,i!==0&&(r=Bn(i)))}else o=n&~l,o!==0?r=Bn(o):i!==0&&(r=Bn(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,i=t&-t,l>=i||l===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function yr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ge(t),e[t]=n}function sf(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Kn),Bu=" ",Hu=!1;function Da(e,t){switch(e){case"keyup":return Df.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fa(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ln=!1;function Uf(e,t){switch(e){case"compositionend":return Fa(t);case"keypress":return t.which!==32?null:(Hu=!0,Bu);case"textInput":return e=t.data,e===Bu&&Hu?null:e;default:return null}}function Vf(e,t){if(ln)return e==="compositionend"||!Fo&&Da(e,t)?(e=Ra(),Gr=Ro=xt=null,ln=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Gu(n)}}function $a(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?$a(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ba(){for(var e=window,t=nl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=nl(e.document)}return t}function Uo(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Yf(e){var t=Ba(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&$a(n.ownerDocument.documentElement,n)){if(r!==null&&Uo(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,i=Math.min(r.start,l);r=r.end===void 0?i:Math.min(r.end,l),!e.extend&&i>r&&(l=r,r=i,i=l),l=Yu(n,i);var o=Yu(n,r);l&&o&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,on=null,Bi=null,Yn=null,Hi=!1;function qu(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Hi||on==null||on!==nl(r)||(r=on,"selectionStart"in r&&Uo(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Yn&&or(Yn,r)||(Yn=r,r=al(Bi,"onSelect"),0an||(e.current=qi[an],qi[an]=null,an--)}function V(e,t){an++,qi[an]=e.current,e.current=t}var Rt={},me=Dt(Rt),xe=Dt(!1),Gt=Rt;function _n(e,t){var n=e.type.contextTypes;if(!n)return Rt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},i;for(i in n)l[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function Ee(e){return e=e.childContextTypes,e!=null}function dl(){$(xe),$(me)}function ns(e,t,n){if(me.current!==Rt)throw Error(S(168));V(me,t),V(xe,n)}function Za(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(S(108,Bd(e)||"Unknown",l));return G({},n,r)}function fl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Rt,Gt=me.current,V(me,e),V(xe,xe.current),!0}function rs(e,t,n){var r=e.stateNode;if(!r)throw Error(S(169));n?(e=Za(e,t,Gt),r.__reactInternalMemoizedMergedChildContext=e,$(xe),$(me),V(me,e)):$(xe),V(xe,n)}var ot=null,Ml=!1,di=!1;function Ja(e){ot===null?ot=[e]:ot.push(e)}function op(e){Ml=!0,Ja(e)}function Ft(){if(!di&&ot!==null){di=!0;var e=0,t=U;try{var n=ot;for(U=1;e>=o,l-=o,ut=1<<32-Ge(t)+l|n<T?(W=E,E=null):W=E.sibling;var R=p(f,E,d[T],y);if(R===null){E===null&&(E=W);break}e&&E&&R.alternate===null&&t(f,E),a=i(R,a,T),N===null?C=R:N.sibling=R,N=R,E=W}if(T===d.length)return n(f,E),H&&At(f,T),C;if(E===null){for(;TT?(W=E,E=null):W=E.sibling;var Se=p(f,E,R.value,y);if(Se===null){E===null&&(E=W);break}e&&E&&Se.alternate===null&&t(f,E),a=i(Se,a,T),N===null?C=Se:N.sibling=Se,N=Se,E=W}if(R.done)return n(f,E),H&&At(f,T),C;if(E===null){for(;!R.done;T++,R=d.next())R=m(f,R.value,y),R!==null&&(a=i(R,a,T),N===null?C=R:N.sibling=R,N=R);return H&&At(f,T),C}for(E=r(f,E);!R.done;T++,R=d.next())R=v(E,f,T,R.value,y),R!==null&&(e&&R.alternate!==null&&E.delete(R.key===null?T:R.key),a=i(R,a,T),N===null?C=R:N.sibling=R,N=R);return e&&E.forEach(function(Ut){return t(f,Ut)}),H&&At(f,T),C}function F(f,a,d,y){if(typeof d=="object"&&d!==null&&d.type===rn&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case Tr:e:{for(var C=d.key,N=a;N!==null;){if(N.key===C){if(C=d.type,C===rn){if(N.tag===7){n(f,N.sibling),a=l(N,d.props.children),a.return=f,f=a;break e}}else if(N.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===St&&os(C)===N.type){n(f,N.sibling),a=l(N,d.props),a.ref=Fn(f,N,d),a.return=f,f=a;break e}n(f,N);break}else t(f,N);N=N.sibling}d.type===rn?(a=Kt(d.props.children,f.mode,y,d.key),a.return=f,f=a):(y=tl(d.type,d.key,d.props,null,f.mode,y),y.ref=Fn(f,a,d),y.return=f,f=y)}return o(f);case nn:e:{for(N=d.key;a!==null;){if(a.key===N)if(a.tag===4&&a.stateNode.containerInfo===d.containerInfo&&a.stateNode.implementation===d.implementation){n(f,a.sibling),a=l(a,d.children||[]),a.return=f,f=a;break e}else{n(f,a);break}else t(f,a);a=a.sibling}a=Si(d,f.mode,y),a.return=f,f=a}return o(f);case St:return N=d._init,F(f,a,N(d._payload),y)}if($n(d))return k(f,a,d,y);if(Mn(d))return _(f,a,d,y);Vr(f,d)}return typeof d=="string"&&d!==""||typeof d=="number"?(d=""+d,a!==null&&a.tag===6?(n(f,a.sibling),a=l(a,d),a.return=f,f=a):(n(f,a),a=gi(d,f.mode,y),a.return=f,f=a),o(f)):n(f,a)}return F}var En=nc(!0),rc=nc(!1),hl=Dt(null),vl=null,fn=null,Bo=null;function Ho(){Bo=fn=vl=null}function Wo(e){var t=hl.current;$(hl),e._currentValue=t}function Ji(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Sn(e,t){vl=e,Bo=fn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(_e=!0),e.firstContext=null)}function Ve(e){var t=e._currentValue;if(Bo!==e)if(e={context:e,memoizedValue:t,next:null},fn===null){if(vl===null)throw Error(S(308));fn=e,vl.dependencies={lanes:0,firstContext:e}}else fn=fn.next=e;return t}var Ht=null;function Qo(e){Ht===null?Ht=[e]:Ht.push(e)}function lc(e,t,n,r){var l=t.interleaved;return l===null?(n.next=n,Qo(t)):(n.next=l.next,l.next=n),t.interleaved=n,ft(e,r)}function ft(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var wt=!1;function Ko(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function ic(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function at(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function It(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,D&2){var l=r.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),r.pending=t,ft(e,n)}return l=r.interleaved,l===null?(t.next=t,Qo(r)):(t.next=l.next,l.next=t),r.interleaved=t,ft(e,n)}function qr(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,zo(e,n)}}function us(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var l=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};i===null?l=i=o:i=i.next=o,n=n.next}while(n!==null);i===null?l=i=t:i=i.next=t}else l=i=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function yl(e,t,n,r){var l=e.updateQueue;wt=!1;var i=l.firstBaseUpdate,o=l.lastBaseUpdate,s=l.shared.pending;if(s!==null){l.shared.pending=null;var u=s,c=u.next;u.next=null,o===null?i=c:o.next=c,o=u;var h=e.alternate;h!==null&&(h=h.updateQueue,s=h.lastBaseUpdate,s!==o&&(s===null?h.firstBaseUpdate=c:s.next=c,h.lastBaseUpdate=u))}if(i!==null){var m=l.baseState;o=0,h=c=u=null,s=i;do{var p=s.lane,v=s.eventTime;if((r&p)===p){h!==null&&(h=h.next={eventTime:v,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var k=e,_=s;switch(p=t,v=n,_.tag){case 1:if(k=_.payload,typeof k=="function"){m=k.call(v,m,p);break e}m=k;break e;case 3:k.flags=k.flags&-65537|128;case 0:if(k=_.payload,p=typeof k=="function"?k.call(v,m,p):k,p==null)break e;m=G({},m,p);break e;case 2:wt=!0}}s.callback!==null&&s.lane!==0&&(e.flags|=64,p=l.effects,p===null?l.effects=[s]:p.push(s))}else v={eventTime:v,lane:p,tag:s.tag,payload:s.payload,callback:s.callback,next:null},h===null?(c=h=v,u=m):h=h.next=v,o|=p;if(s=s.next,s===null){if(s=l.shared.pending,s===null)break;p=s,s=p.next,p.next=null,l.lastBaseUpdate=p,l.shared.pending=null}}while(!0);if(h===null&&(u=m),l.baseState=u,l.firstBaseUpdate=c,l.lastBaseUpdate=h,t=l.shared.interleaved,t!==null){l=t;do o|=l.lane,l=l.next;while(l!==t)}else i===null&&(l.shared.lanes=0);Xt|=o,e.lanes=o,e.memoizedState=m}}function ss(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=pi.transition;pi.transition={};try{e(!1),t()}finally{U=n,pi.transition=r}}function _c(){return Ae().memoizedState}function cp(e,t,n){var r=zt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},xc(e))Ec(t,n);else if(n=lc(e,t,n,r),n!==null){var l=ve();Ye(n,e,r,l),Cc(n,t,r)}}function dp(e,t,n){var r=zt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(xc(e))Ec(t,l);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var o=t.lastRenderedState,s=i(o,n);if(l.hasEagerState=!0,l.eagerState=s,qe(s,o)){var u=t.interleaved;u===null?(l.next=l,Qo(t)):(l.next=u.next,u.next=l),t.interleaved=l;return}}catch{}finally{}n=lc(e,t,l,r),n!==null&&(l=ve(),Ye(n,e,r,l),Cc(n,t,r))}}function xc(e){var t=e.alternate;return e===K||t!==null&&t===K}function Ec(e,t){qn=Sl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Cc(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,zo(e,n)}}var wl={readContext:Ve,useCallback:de,useContext:de,useEffect:de,useImperativeHandle:de,useInsertionEffect:de,useLayoutEffect:de,useMemo:de,useReducer:de,useRef:de,useState:de,useDebugValue:de,useDeferredValue:de,useTransition:de,useMutableSource:de,useSyncExternalStore:de,useId:de,unstable_isNewReconciler:!1},fp={readContext:Ve,useCallback:function(e,t){return Je().memoizedState=[e,t===void 0?null:t],e},useContext:Ve,useEffect:cs,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Zr(4194308,4,yc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Zr(4194308,4,e,t)},useInsertionEffect:function(e,t){return Zr(4,2,e,t)},useMemo:function(e,t){var n=Je();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Je();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=cp.bind(null,K,e),[r.memoizedState,e]},useRef:function(e){var t=Je();return e={current:e},t.memoizedState=e},useState:as,useDebugValue:eu,useDeferredValue:function(e){return Je().memoizedState=e},useTransition:function(){var e=as(!1),t=e[0];return e=ap.bind(null,e[1]),Je().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=K,l=Je();if(H){if(n===void 0)throw Error(S(407));n=n()}else{if(n=t(),oe===null)throw Error(S(349));qt&30||ac(r,t,n)}l.memoizedState=n;var i={value:n,getSnapshot:t};return l.queue=i,cs(dc.bind(null,r,i,e),[e]),r.flags|=2048,mr(9,cc.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Je(),t=oe.identifierPrefix;if(H){var n=st,r=ut;n=(r&~(1<<32-Ge(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=fr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=o.createElement(n,{is:r.is}):(e=o.createElement(n),n==="select"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,n),e[be]=t,e[ar]=r,Oc(e,t,!1,!1),t.stateNode=e;e:{switch(o=Ri(n,r),n){case"dialog":A("cancel",e),A("close",e),l=r;break;case"iframe":case"object":case"embed":A("load",e),l=r;break;case"video":case"audio":for(l=0;lNn&&(t.flags|=128,r=!0,Un(i,!1),t.lanes=4194304)}else{if(!r)if(e=gl(o),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Un(i,!0),i.tail===null&&i.tailMode==="hidden"&&!o.alternate&&!H)return fe(t),null}else 2*J()-i.renderingStartTime>Nn&&n!==1073741824&&(t.flags|=128,r=!0,Un(i,!1),t.lanes=4194304);i.isBackwards?(o.sibling=t.child,t.child=o):(n=i.last,n!==null?n.sibling=o:t.child=o,i.last=o)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=J(),t.sibling=null,n=Q.current,V(Q,r?n&1|2:n&1),t):(fe(t),null);case 22:case 23:return ou(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Ne&1073741824&&(fe(t),t.subtreeFlags&6&&(t.flags|=8192)):fe(t),null;case 24:return null;case 25:return null}throw Error(S(156,t.tag))}function wp(e,t){switch(Ao(t),t.tag){case 1:return Ee(t.type)&&dl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Cn(),$(xe),$(me),qo(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Yo(t),null;case 13:if($(Q),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(S(340));xn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return $(Q),null;case 4:return Cn(),null;case 10:return Wo(t.type._context),null;case 22:case 23:return ou(),null;case 24:return null;default:return null}}var $r=!1,pe=!1,kp=typeof WeakSet=="function"?WeakSet:Set,P=null;function pn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Y(e,t,r)}else n.current=null}function uo(e,t,n){try{n()}catch(r){Y(e,t,r)}}var ks=!1;function _p(e,t){if(Wi=ul,e=Ba(),Uo(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var o=0,s=-1,u=-1,c=0,h=0,m=e,p=null;t:for(;;){for(var v;m!==n||l!==0&&m.nodeType!==3||(s=o+l),m!==i||r!==0&&m.nodeType!==3||(u=o+r),m.nodeType===3&&(o+=m.nodeValue.length),(v=m.firstChild)!==null;)p=m,m=v;for(;;){if(m===e)break t;if(p===n&&++c===l&&(s=o),p===i&&++h===r&&(u=o),(v=m.nextSibling)!==null)break;m=p,p=m.parentNode}m=v}n=s===-1||u===-1?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(Qi={focusedElem:e,selectionRange:n},ul=!1,P=t;P!==null;)if(t=P,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,P=e;else for(;P!==null;){t=P;try{var k=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(k!==null){var _=k.memoizedProps,F=k.memoizedState,f=t.stateNode,a=f.getSnapshotBeforeUpdate(t.elementType===t.type?_:We(t.type,_),F);f.__reactInternalSnapshotBeforeUpdate=a}break;case 3:var d=t.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(S(163))}}catch(y){Y(t,t.return,y)}if(e=t.sibling,e!==null){e.return=t.return,P=e;break}P=t.return}return k=ks,ks=!1,k}function Xn(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var i=l.destroy;l.destroy=void 0,i!==void 0&&uo(t,n,i)}l=l.next}while(l!==r)}}function Ol(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function so(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Uc(e){var t=e.alternate;t!==null&&(e.alternate=null,Uc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[be],delete t[ar],delete t[Yi],delete t[lp],delete t[ip])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Vc(e){return e.tag===5||e.tag===3||e.tag===4}function _s(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Vc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ao(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=cl));else if(r!==4&&(e=e.child,e!==null))for(ao(e,t,n),e=e.sibling;e!==null;)ao(e,t,n),e=e.sibling}function co(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(co(e,t,n),e=e.sibling;e!==null;)co(e,t,n),e=e.sibling}var ue=null,Qe=!1;function gt(e,t,n){for(n=n.child;n!==null;)Ac(e,t,n),n=n.sibling}function Ac(e,t,n){if(et&&typeof et.onCommitFiberUnmount=="function")try{et.onCommitFiberUnmount(Nl,n)}catch{}switch(n.tag){case 5:pe||pn(n,t);case 6:var r=ue,l=Qe;ue=null,gt(e,t,n),ue=r,Qe=l,ue!==null&&(Qe?(e=ue,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):ue.removeChild(n.stateNode));break;case 18:ue!==null&&(Qe?(e=ue,n=n.stateNode,e.nodeType===8?ci(e.parentNode,n):e.nodeType===1&&ci(e,n),lr(e)):ci(ue,n.stateNode));break;case 4:r=ue,l=Qe,ue=n.stateNode.containerInfo,Qe=!0,gt(e,t,n),ue=r,Qe=l;break;case 0:case 11:case 14:case 15:if(!pe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var i=l,o=i.destroy;i=i.tag,o!==void 0&&(i&2||i&4)&&uo(n,t,o),l=l.next}while(l!==r)}gt(e,t,n);break;case 1:if(!pe&&(pn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){Y(n,t,s)}gt(e,t,n);break;case 21:gt(e,t,n);break;case 22:n.mode&1?(pe=(r=pe)||n.memoizedState!==null,gt(e,t,n),pe=r):gt(e,t,n);break;default:gt(e,t,n)}}function xs(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new kp),t.forEach(function(r){var l=zp.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function He(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=o),r&=~i}if(r=l,r=J()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Ep(r/1960))-r,10e?16:e,Et===null)var r=!1;else{if(e=Et,Et=null,xl=0,D&6)throw Error(S(331));var l=D;for(D|=4,P=e.current;P!==null;){var i=P,o=i.child;if(P.flags&16){var s=i.deletions;if(s!==null){for(var u=0;uJ()-lu?Qt(e,0):ru|=n),Ce(e,t)}function Yc(e,t){t===0&&(e.mode&1?(t=Mr,Mr<<=1,!(Mr&130023424)&&(Mr=4194304)):t=1);var n=ve();e=ft(e,t),e!==null&&(yr(e,t,n),Ce(e,n))}function Lp(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Yc(e,n)}function zp(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(S(314))}r!==null&&r.delete(t),Yc(e,n)}var qc;qc=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||xe.current)_e=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return _e=!1,gp(e,t,n);_e=!!(e.flags&131072)}else _e=!1,H&&t.flags&1048576&&ba(t,ml,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Jr(e,t),e=t.pendingProps;var l=_n(t,me.current);Sn(t,n),l=Zo(null,t,r,e,l,n);var i=Jo();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ee(r)?(i=!0,fl(t)):i=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Ko(t),l.updater=Rl,t.stateNode=l,l._reactInternals=t,eo(t,r,e,n),t=ro(null,t,r,!0,i,n)):(t.tag=0,H&&i&&Vo(t),he(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Jr(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=jp(r),e=We(r,e),l){case 0:t=no(null,t,r,e,n);break e;case 1:t=gs(null,t,r,e,n);break e;case 11:t=vs(null,t,r,e,n);break e;case 14:t=ys(null,t,r,We(r.type,e),n);break e}throw Error(S(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:We(r,l),no(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:We(r,l),gs(e,t,r,l,n);case 3:e:{if(Mc(t),e===null)throw Error(S(387));r=t.pendingProps,i=t.memoizedState,l=i.element,ic(e,t),yl(t,r,null,n);var o=t.memoizedState;if(r=o.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){l=Pn(Error(S(423)),t),t=Ss(e,t,r,n,l);break e}else if(r!==l){l=Pn(Error(S(424)),t),t=Ss(e,t,r,n,l);break e}else for(Te=Tt(t.stateNode.containerInfo.firstChild),Ie=t,H=!0,Ke=null,n=rc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(xn(),r===l){t=pt(e,t,n);break e}he(e,t,r,n)}t=t.child}return t;case 5:return oc(t),e===null&&Zi(t),r=t.type,l=t.pendingProps,i=e!==null?e.memoizedProps:null,o=l.children,Ki(r,l)?o=null:i!==null&&Ki(r,i)&&(t.flags|=32),zc(e,t),he(e,t,o,n),t.child;case 6:return e===null&&Zi(t),null;case 13:return jc(e,t,n);case 4:return Go(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=En(t,null,r,n):he(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:We(r,l),vs(e,t,r,l,n);case 7:return he(e,t,t.pendingProps,n),t.child;case 8:return he(e,t,t.pendingProps.children,n),t.child;case 12:return he(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,i=t.memoizedProps,o=l.value,V(hl,r._currentValue),r._currentValue=o,i!==null)if(qe(i.value,o)){if(i.children===l.children&&!xe.current){t=pt(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var s=i.dependencies;if(s!==null){o=i.child;for(var u=s.firstContext;u!==null;){if(u.context===r){if(i.tag===1){u=at(-1,n&-n),u.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var h=c.pending;h===null?u.next=u:(u.next=h.next,h.next=u),c.pending=u}}i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),Ji(i.return,n,t),s.lanes|=n;break}u=u.next}}else if(i.tag===10)o=i.type===t.type?null:i.child;else if(i.tag===18){if(o=i.return,o===null)throw Error(S(341));o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),Ji(o,n,t),o=i.sibling}else o=i.child;if(o!==null)o.return=i;else for(o=i;o!==null;){if(o===t){o=null;break}if(i=o.sibling,i!==null){i.return=o.return,o=i;break}o=o.return}i=o}he(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Sn(t,n),l=Ve(l),r=r(l),t.flags|=1,he(e,t,r,n),t.child;case 14:return r=t.type,l=We(r,t.pendingProps),l=We(r.type,l),ys(e,t,r,l,n);case 15:return Ic(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:We(r,l),Jr(e,t),t.tag=1,Ee(r)?(e=!0,fl(t)):e=!1,Sn(t,n),Pc(t,r,l),eo(t,r,l,n),ro(null,t,r,!0,e,n);case 19:return Rc(e,t,n);case 22:return Lc(e,t,n)}throw Error(S(156,t.tag))};function Xc(e,t){return xa(e,t)}function Mp(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Fe(e,t,n,r){return new Mp(e,t,n,r)}function su(e){return e=e.prototype,!(!e||!e.isReactComponent)}function jp(e){if(typeof e=="function")return su(e)?1:0;if(e!=null){if(e=e.$$typeof,e===No)return 11;if(e===To)return 14}return 2}function Mt(e,t){var n=e.alternate;return n===null?(n=Fe(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function tl(e,t,n,r,l,i){var o=2;if(r=e,typeof e=="function")su(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case rn:return Kt(n.children,l,i,t);case Po:o=8,l|=8;break;case Ei:return e=Fe(12,n,t,l|2),e.elementType=Ei,e.lanes=i,e;case Ci:return e=Fe(13,n,t,l),e.elementType=Ci,e.lanes=i,e;case Pi:return e=Fe(19,n,t,l),e.elementType=Pi,e.lanes=i,e;case oa:return Fl(n,l,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case la:o=10;break e;case ia:o=9;break e;case No:o=11;break e;case To:o=14;break e;case St:o=16,r=null;break e}throw Error(S(130,e==null?e:typeof e,""))}return t=Fe(o,n,t,l),t.elementType=e,t.type=r,t.lanes=i,t}function Kt(e,t,n,r){return e=Fe(7,e,r,t),e.lanes=n,e}function Fl(e,t,n,r){return e=Fe(22,e,r,t),e.elementType=oa,e.lanes=n,e.stateNode={isHidden:!1},e}function gi(e,t,n){return e=Fe(6,e,null,t),e.lanes=n,e}function Si(e,t,n){return t=Fe(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Rp(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=bl(0),this.expirationTimes=bl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=bl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function au(e,t,n,r,l,i,o,s,u){return e=new Rp(e,t,n,s,u),t===1?(t=1,i===!0&&(t|=8)):t=0,i=Fe(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ko(i),e}function Op(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ed)}catch(e){console.error(e)}}ed(),ea.exports=ze;var Ap=ea.exports,zs=Ap;_i.createRoot=zs.createRoot,_i.hydrateRoot=zs.hydrateRoot;const $p="rethinking-econ-ep1";function Bp(e){const t=typeof window>"u"?"":window.location.search,n=new URLSearchParams(t);return n.get("presentationId")??n.get("lectureId")??$p}function Hp(e){const t=typeof window>"u"?"":window.location.search;return new URLSearchParams(t).get("mode")==="slide-preview"?"slide-preview":"playback"}function Wp(e){const t=typeof window>"u"?"":window.location.search;return new URLSearchParams(t).get("slideId")??void 0}async function Qp(e){const t=await fetch(`/api/presentations/${encodeURIComponent(e)}`);if(!t.ok)throw new Error(`Presentation fetch failed with ${t.status} for ${e}`);return await t.json()}function vo(e){return e==="mobile-portrait"?"horizontal":"vertical"}function Kp({baselineIndex:e,dragDistance:t,totalCandidates:n,dragSpan:r}){if(n<=1)return 0;const l=Math.max(r,120),i=l*.25,o=Math.abs(t),s=Math.sign(t),u=os.id===n.id);return w.jsxs("div",{className:`carousel-hud ${r?"carousel-hud--inspect":""}`,"aria-live":"polite",children:[w.jsx("div",{className:"carousel-hud__track","aria-label":"Glitch slide candidates",children:e.map((s,u)=>w.jsx("span",{className:`carousel-hud__dot ${s.id===n.id?"carousel-hud__dot--active":""}`,title:`${s.id} (${Math.round(s.score*100)} score)`,children:u+1},s.id))}),r?w.jsxs("div",{className:"carousel-hud__detail",children:[w.jsxs("div",{className:"carousel-hud__header",children:[w.jsx("span",{children:t==="fullscreen"?"Fullscreen":"Square"}),w.jsx("span",{children:l?"Browsing alternates":"Inspecting"})]}),n.authorName?w.jsxs("p",{className:"carousel-hud__author",children:["By ",n.authorName]}):null,w.jsxs("div",{className:"carousel-hud__footer",children:[w.jsx("strong",{children:n.id}),w.jsxs("span",{children:[o+1,"/",e.length]})]})]}):null]})}function qp({pauseMode:e,pendingVote:t,onResume:n,onPause:r}){const l=e==="playing",i=l?"Pause playback":t?"Resume playback and record vote":"Resume playback";return w.jsx("div",{className:"resume-control",children:w.jsx("button",{type:"button",className:"resume-control__button","aria-label":i,title:i,onClick:l?r:n,children:w.jsx("span",{className:`resume-control__icon ${l?"resume-control__icon--pause":"resume-control__icon--play"}`,"aria-hidden":"true"})})})}const Xp="modulepreload",Zp=function(e){return"/"+e},Ms={},Re=function(t,n,r){let l=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),s=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));l=Promise.allSettled(n.map(u=>{if(u=Zp(u),u in Ms)return;Ms[u]=!0;const c=u.endsWith(".css"),h=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${h}`))return;const m=document.createElement("link");if(m.rel=c?"stylesheet":Xp,c||(m.as="script"),m.crossOrigin="",m.href=u,s&&m.setAttribute("nonce",s),document.head.appendChild(m),c)return new Promise((p,v)=>{m.addEventListener("load",p),m.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${u}`)))})}))}function i(o){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=o,window.dispatchEvent(s),!s.defaultPrevented)throw o}return l.then(o=>{for(const s of o||[])s.status==="rejected"&&i(s.reason);return t().catch(i)})},js=new Map,Jp={ChartSingle:()=>Re(()=>import("./ChartSingle-B5EnycUf.js"),[]),DefinitionCard:()=>Re(()=>import("./DefinitionCard-DjuSxCYC.js"),[]),EquationFocus:()=>Re(()=>import("./EquationFocus-CZCQ_h0W.js"),[]),FullscreenSplit:()=>Re(()=>import("./FullscreenSplit-Piv2MROz.js"),[]),FullscreenVideo:()=>Re(()=>import("./FullscreenVideo-T7AJva9H.js"),[]),FullscreenVideoCenterCaption:()=>Re(()=>import("./FullscreenVideoCenterCaption-Bbw83wap.js"),[]),FullscreenVideoTitle:()=>Re(()=>import("./FullscreenVideoTitle-DvKvZc4X.js"),[]),GlitchComponentFrame:()=>Re(()=>import("./GlitchComponentFrame-CM7hKmoe.js"),[]),ProcessFlow:()=>Re(()=>import("./ProcessFlow-B2obDIQa.js"),[]),QuoteImage:()=>Re(()=>import("./QuoteImage-C0EQ3Yny.js"),[]),SquareVideo:()=>Re(()=>import("./SquareVideo-GgREJSQR.js"),[]),SquareYellow:()=>Re(()=>import("./SquareYellow-DRGJP0IQ.js"),[])};function td(e,t){const n=js.get(t);if(n)return n;const r=e[t];if(!r)return Promise.reject(new Error(`Unknown slide component: ${t}`));const l=r();return js.set(t,l),l}async function Rs(e,t){const n=new Set;t.forEach(r=>{r.glitchSlides.forEach(l=>{n.add(l.componentKey)})}),await Promise.allSettled([...n].map(r=>td(e,r)))}class bp extends I.Component{constructor(){super(...arguments);_u(this,"state",{hasError:!1})}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(n,r){console.error("Slide runtime crashed",n,r)}componentDidUpdate(n){n.children!==this.props.children&&this.state.hasError&&this.setState({hasError:!1})}render(){return this.state.hasError?this.props.fallback:this.props.children}}function wi({reason:e}){return w.jsxs("article",{className:"fallback-slide",children:[w.jsx("p",{className:"eyebrow",children:"Fallback slide"}),w.jsx("h3",{children:"Component unavailable"}),w.jsx("p",{children:"The player kept running even though this candidate could not render."}),e?w.jsx("code",{children:e}):null]})}function Os({lectureId:e,slide:t,glitchSlide:n,slideRegistry:r,paused:l,onMediaLoadingChange:i}){const[o,s]=I.useState(null),[u,c]=I.useState(null);I.useEffect(()=>{let m=!1;return c(null),s(null),td(r,n.componentKey).then(p=>{m||(c(null),s(()=>p.default))}).catch(p=>{m||(s(null),c(p instanceof Error?p.message:"Failed to load slide component."))}),()=>{m=!0}},[n.componentKey,r]);const h={lectureId:e,slideId:t.id,glitchSlideId:n.id,displayMode:t.displayMode,props:n.props,latexString:n.latexString,paused:l,onMediaLoadingChange:i};return w.jsx(bp,{fallback:w.jsx(wi,{reason:u}),children:o?w.jsx(o,{...h}):u?w.jsx(wi,{reason:u}):w.jsx(wi,{reason:"Loading candidate module..."})})}function em({lectureId:e,slide:t,glitchSlide:n,candidates:r,slideRegistry:l,paused:i,isInspecting:o,isSettling:s,viewportMode:u,dragBaselineGlitchSlideId:c,dragOffsetPx:h,onMediaLoadingChange:m}){const p=vo(u),v=r.findIndex(d=>d.id===n.id),k=r.findIndex(d=>d.id===c),_=r.length>1,F=o&&k!==-1?k:Math.max(v,0),f=o?h:0,a=p==="horizontal"?`translate3d(calc(${-F*100}% + ${f}px), 0, 0)`:`translate3d(0, calc(${-F*100}% + ${f}px), 0)`;return w.jsx("div",{className:`slide-host slide-host--${t.displayMode} ${o?"slide-host--inspect":""}`,"data-testid":`slide-host-${t.displayMode}`,children:_?w.jsx("div",{className:"slide-host__viewport",children:w.jsx("div",{className:`slide-host__track slide-host__track--${p} ${s?"slide-host__track--settling":""}`,style:{transform:a},children:r.map(d=>w.jsx("div",{className:`slide-host__item ${d.id===n.id?"slide-host__item--active":""}`,children:w.jsx(Os,{lectureId:e,slide:t,glitchSlide:d,slideRegistry:l,paused:i||d.id!==n.id,onMediaLoadingChange:d.id===n.id?m:void 0})},d.id))})}):w.jsx(Os,{lectureId:e,slide:t,glitchSlide:n,slideRegistry:l,paused:i,onMediaLoadingChange:m})})}function Ds(e,t){return Math.min(t,Math.max(0,e))}function tm(e,t){for(const n of e)if(t>=n.startTimeSec&&tr.id===t);return n===-1?null:e[n+1]??null}function rm(e,t){return Math.min(e.durationSec,Math.max(0,t-e.startTimeSec))}function lm(e,t,n){var i;const r=e.findIndex(o=>o.id===t);if(r===-1)return n;const l=e[r];return l.endTimeSec!=null?l.endTimeSec:((i=e[r+1])==null?void 0:i.startTimeSec)??n}function yo(e,t,n){for(const r of e){if(r.startTimeSec==null)continue;const l=lm(e,r.id,n);if(t>=r.startTimeSec&&tl.orientation===t);if(n.length>0)return n;const r=e.glitchSlides.filter(l=>!l.orientation||l.orientation==="any");return r.length>0?r:e.glitchSlides}function im(e,t,n){const r=nd(e,t);if(n){const i=r.find(o=>o.id===n);if(i)return i}return[...r].sort((i,o)=>o.score-i.score)[0]}function om(e,t,n,r){const l=yo(e,t,n),i=l?e.findIndex(o=>o.id===l.id):-1;return e.slice(i+1,i+1+r)}function Fs(e,t){try{const n=e.play();n&&typeof n.catch=="function"&&n.catch(()=>{t()})}catch{t()}}function um({segment:e,nextSegment:t,globalTimeSec:n,lectureDurationSec:r,pauseMode:l,viewportMode:i,onGlobalTimeChange:o,onSegmentError:s,onAutoplayBlocked:u,onTogglePlayback:c}){const h=I.useRef(null),m=I.useRef(0),p=e?rm(e,n):0;return I.useEffect(()=>{const v=h.current;if(!v||!e)return;Math.abs(v.currentTime-p)>.45&&(v.currentTime=p,m.current=p)},[p,e==null?void 0:e.id]),I.useEffect(()=>{const v=h.current;if(v){if(l==="playing"){Fs(v,u);return}v.pause()}},[u,l,e==null?void 0:e.id]),e?w.jsxs("div",{className:`video-stage video-stage--${i}`,children:[w.jsxs("div",{className:"video-stage__window",role:"button",tabIndex:0,"aria-label":l==="playing"?"Pause video":"Resume video",onClick:c,onKeyDown:v=>{(v.key===" "||v.key==="Enter")&&(v.preventDefault(),c())},children:[w.jsx("video",{ref:h,className:"video-stage__video",preload:"auto",autoPlay:!0,muted:!0,playsInline:!0,controls:!1,poster:e.poster,src:e.src,onLoadedMetadata:v=>{const k=v.currentTarget;k.currentTime=p,m.current=p,l==="playing"&&Fs(k,u)},onTimeUpdate:v=>{const k=v.currentTarget,_=Math.min(k.currentTime,e.durationSec);m.current=_,o(e.startTimeSec+_),_>=e.durationSec-.08&&e.startTimeSec+e.durationSec{o(e.startTimeSec+e.durationSec)},onError:()=>{s(`Failed to load ${e.id}. Retry by resuming playback.`)}},e.id),w.jsxs("div",{className:"video-stage__meta",children:[w.jsx("span",{children:e.id}),w.jsxs("span",{children:[Math.min(m.current,e.durationSec).toFixed(1)," /"," ",e.durationSec.toFixed(1),"s"]})]})]}),w.jsxs("div",{className:"video-stage__next",children:[w.jsx("span",{children:"Up next"}),w.jsx("strong",{children:(t==null?void 0:t.id)??"End of lecture"})]})]}):w.jsx("div",{className:`video-stage video-stage--${i}`,children:w.jsxs("div",{className:"video-stage__placeholder",children:[w.jsx("p",{className:"eyebrow",children:"Video pending"}),w.jsx("p",{children:"No active segment is available at this lecture time."})]})})}function lt(e,t){console.log("[player-event]",t),e==null||e(t)}const Us=new Set;function go(e){if(typeof document>"u"||Us.has(e.id))return;const t=document.createElement("video");t.preload="metadata",t.src=e.src,Us.add(e.id)}function sm(e){e.forEach(t=>{go(t)})}function am(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`sess-${Math.random().toString(36).slice(2,10)}`}function Vs(e){var n;if(typeof navigator>"u")return{viewportMode:e,userAgent:"server",platform:"server"};const t=navigator;return{viewportMode:e,userAgent:navigator.userAgent,platform:((n=t.userAgentData)==null?void 0:n.platform)??navigator.platform}}async function cm(e,t){await new Promise(n=>window.setTimeout(n,160)),console.log("[vote-api]",t)}const dm=220,fm=1600;function ki(e,t){return`${e}:${t}`}function As(e,t){return e<=900?t>=e?"mobile-portrait":"mobile-landscape":"desktop"}function $s(e,t,n){const r=rd(e,t,n);return!r||r.startTimeSec==null?0:r.startTimeSec}function rd(e,t,n){return t?e.slides.find(r=>r.id===t)??null:typeof n=="number"&&n>=0&&n$s(u,r,l)),[m,p]=I.useState(n==="slide-preview"),[v,k]=I.useState({}),[_,F]=I.useState(null),[f,a]=I.useState(!1),[d,y]=I.useState(null),[C,N]=I.useState(!1),[E,T]=I.useState(!1),[W,R]=I.useState(!1),[Se,Ut]=I.useState(null),[te,kr]=I.useState(()=>typeof window>"u"||typeof document>"u"?"desktop":As(document.documentElement.clientWidth,document.documentElement.clientHeight)),[_r]=I.useState(()=>s??`sess-${Math.random().toString(36).slice(2,10)}`),[Pe,ht]=I.useState({isScrubbing:!1,previewTimeSec:0,resumeWasManuallyPaused:!1}),[g,z]=I.useState({pointerId:null,startX:0,startY:0,dragSpan:320,dragOffsetPx:0,isSettling:!1,resumeWasManuallyPaused:!1,baselineGlitchSlideId:null,previewGlitchSlideId:null}),[j,B]=I.useState(!0),q=I.useRef(null),vt=I.useRef(null),$e=I.useRef(null),en=I.useRef(!1),b=I.useRef(null),je=I.useRef(null),Be=tm(u.segments,c),xr=Be?nm(u.segments,Be.id):null,L=(n==="slide-preview"?rd(u,r,l):null)??yo(u.slides,c,u.durationSec),nt=L?nd(L,te):[],ld=L?v[ki(L.id,te)]:void 0,le=L?im(L,te,ld):null,X=(L?nt.find(x=>x.id===g.previewGlitchSlideId)??null:null)??le,Vt=m?"full-paused":Pe.isScrubbing||E||g.isSettling||W?"soft-paused":"playing",Bl=Pe.isScrubbing?Pe.previewTimeSec:c,Hl=yo(u.slides,Bl,u.durationSec),pu=E||g.isSettling,id=m||Pe.isScrubbing||E||g.isSettling||j,od=(L==null?void 0:L.displayMode)==="fullscreen",mu=(L==null?void 0:L.displayMode)==="square"&&X&&(X.componentKey==="SquareYellow"||X.componentKey==="SquareVideo")&&typeof X.props.header=="string"?X.props.header:null;L&&v[ki(L.id,te)],I.useEffect(()=>{const x=q.current;if(!x||typeof ResizeObserver>"u")return;const M=new ResizeObserver(Z=>{const rt=Z[0];rt&&kr(As(rt.contentRect.width,rt.contentRect.height))});return M.observe(x),()=>{M.disconnect()}},[]),I.useEffect(()=>{const x=$s(u,r,l);h(x),p(n==="slide-preview"),a(!1),y(null),F(null),R(!1)},[u.id,u.slides,n,r,l]),I.useEffect(()=>{R(!1)},[L==null?void 0:L.id,X==null?void 0:X.id]),I.useEffect(()=>{lt(i,{type:"lecture_loaded",lectureId:u.id})},[u.id,i]),I.useEffect(()=>{Be&&(go(Be),xr&&go(xr))},[Be,xr]),I.useEffect(()=>{sm(u.segments.slice(0,2))},[u.segments]),I.useEffect(()=>{if(!L)return;Rs(t,[L]);const x=om(u.slides,c,u.durationSec,2);Rs(t,x)},[L,c,u.durationSec,u.slides,t]),I.useEffect(()=>{if(!Be){vt.current=null;return}vt.current!==Be.id&&(vt.current=Be.id,lt(i,{type:"segment_changed",lectureId:u.id,segmentId:Be.id,atSec:Number(c.toFixed(2))}))},[Be,c,u.id,i]),I.useEffect(()=>{const x=L&&X?`${L.id}:${X.id}`:null;if(!x){$e.current=null;return}$e.current!==x&&(L&&X&<(i,{type:"slide_activated",lectureId:u.id,slideId:L.id,glitchSlideId:X.id,atSec:Number(c.toFixed(2))}),$e.current=x)},[X,L,c,u.id,i]),I.useEffect(()=>{z(x=>({...x,dragOffsetPx:0,isSettling:!1,baselineGlitchSlideId:(le==null?void 0:le.id)??null,previewGlitchSlideId:null})),T(!1)},[L==null?void 0:L.id]),I.useEffect(()=>{g.pointerId!==null||g.isSettling||E||z(x=>({...x,baselineGlitchSlideId:(le==null?void 0:le.id)??null,previewGlitchSlideId:null}))},[le==null?void 0:le.id,g.pointerId,g.isSettling,E]),I.useEffect(()=>{const x=M=>{if(M.key!==" "&&M.key.toLowerCase()!=="k")return;const Z=document.activeElement;Z&&["INPUT","TEXTAREA","BUTTON"].includes(Z.tagName)||(M.preventDefault(),Vt==="playing"?p(!0):Kl())};return window.addEventListener("keydown",x),()=>{window.removeEventListener("keydown",x)}},[Vt,_,L,X,c]),I.useEffect(()=>()=>{b.current!==null&&window.clearTimeout(b.current),je.current!==null&&window.clearTimeout(je.current)},[]);function yt(){B(!0),je.current!==null&&(window.clearTimeout(je.current),je.current=null),!(m||Pe.isScrubbing||E||g.isSettling)&&(je.current=window.setTimeout(()=>{B(!1),je.current=null},fm))}I.useEffect(()=>{yt()},[m,Pe.isScrubbing,E,g.isSettling]);function Wl(x){h(Ds(x,u.durationSec))}function hu(){yt(),a(!1),p(!0),ht({isScrubbing:!0,previewTimeSec:c,resumeWasManuallyPaused:m})}function ud(x){const M=Ds(Number(x),u.durationSec);ht(Z=>({...Z,previewTimeSec:M})),Wl(M)}function Er(){ht(x=>({...x,isScrubbing:!1}))}function vu(x){yt(),a(!1),p(!0),b.current!==null&&(window.clearTimeout(b.current),b.current=null),T(!1),ht(M=>({...M,isScrubbing:!1,previewTimeSec:x})),z(M=>({...M,pointerId:null,dragOffsetPx:0,isSettling:!1,previewGlitchSlideId:null})),Wl(x)}function zn(){b.current!==null&&(window.clearTimeout(b.current),b.current=null),z(x=>({...x,pointerId:null,dragOffsetPx:0,isSettling:!1,previewGlitchSlideId:null})),T(!1)}function yu(x,M){b.current!==null&&window.clearTimeout(b.current),T(!1),z(Z=>({...Z,pointerId:null,dragOffsetPx:x,isSettling:!0})),b.current=window.setTimeout(()=>{b.current=null,M()},dm)}function sd(x){if(!L||!le)return;yt(),a(!1);const M=x.currentTarget.getBoundingClientRect();typeof x.currentTarget.setPointerCapture=="function"&&x.currentTarget.setPointerCapture(x.pointerId);const Z=vo(te);z({pointerId:x.pointerId,startX:x.clientX,startY:x.clientY,dragSpan:Math.max(Z==="horizontal"?M.width:M.height,240),dragOffsetPx:0,isSettling:!1,resumeWasManuallyPaused:m,baselineGlitchSlideId:le.id,previewGlitchSlideId:null})}function ad(x){if(!L||g.pointerId!==x.pointerId)return;const M=vo(te),Z=x.clientX-g.startX,rt=x.clientY-g.startY,Xe=M==="horizontal"?Z:rt;if(!E&&Math.abs(Xe)<24)return;yt(),E||(T(!0),g.resumeWasManuallyPaused||lt(i,{type:"soft_pause_started",lectureId:u.id,slideId:L.id,atSec:Number(c.toFixed(2))}));const ce=nt.findIndex(Gl=>Gl.id===g.baselineGlitchSlideId),Cr=Math.min(Math.max(Xe,-(nt.length-1-Math.max(ce,0))*g.dragSpan),Math.max(ce,0)*g.dragSpan),Pr=Kp({baselineIndex:ce===-1?0:ce,dragDistance:-Cr,totalCandidates:nt.length,dragSpan:g.dragSpan}),we=nt[Pr];we&&we.id!==g.previewGlitchSlideId&&we.id!==g.baselineGlitchSlideId&<(i,{type:"glitch_slide_changed",lectureId:u.id,slideId:L.id,from:g.previewGlitchSlideId??g.baselineGlitchSlideId??we.id,to:we.id,atSec:Number(c.toFixed(2))}),z(Gl=>({...Gl,dragOffsetPx:Cr,previewGlitchSlideId:(we==null?void 0:we.id)??null}))}function Ql(x){if(!L||g.pointerId!==x){zn();return}const M=g.previewGlitchSlideId??g.baselineGlitchSlideId??(le==null?void 0:le.id)??null,Z=g.baselineGlitchSlideId??(le==null?void 0:le.id)??null,rt=Gp(Z,M);if(!E){if(L.displayMode==="fullscreen"){zn(),Su();return}zn();return}if(!rt){const Xe=g.resumeWasManuallyPaused;yu(0,()=>{Xe||lt(i,{type:"soft_pause_ended",lectureId:u.id,slideId:L.id,atSec:Number(c.toFixed(2))}),Xe||F(null),zn()});return}if(Z&&M){k(we=>({...we,[ki(L.id,te)]:M}));const Xe=nt.findIndex(we=>we.id===Z),ce=nt.findIndex(we=>we.id===M),Cr=Xe===-1||ce===-1?0:(Xe-ce)*g.dragSpan,Pr=g.resumeWasManuallyPaused;yu(Cr,()=>{Pr||lt(i,{type:"soft_pause_ended",lectureId:u.id,slideId:L.id,atSec:Number(c.toFixed(2))}),Pr||F(null),zn()})}}async function Kl(){if(a(!1),_){const x={lectureId:_.lectureId,slideId:_.slideId,previousGlitchSlideId:_.previousGlitchSlideId,selectedGlitchSlideId:_.selectedGlitchSlideId,sessionId:_r,timestamp:new Date().toISOString(),deviceContext:Vs(te)};await(o==null?void 0:o(x)),lt(i,{type:"vote_committed",lectureId:x.lectureId,slideId:x.slideId,selectedGlitchSlideId:x.selectedGlitchSlideId,previousGlitchSlideId:x.previousGlitchSlideId,atSec:Number(c.toFixed(2))}),F(null)}p(!1)}async function gu(x){if(!L||!X||C)return;N(!0),y(x);const M={lectureId:u.id,slideId:L.id,previousGlitchSlideId:X.id,selectedGlitchSlideId:X.id,voteDirection:x,sessionId:_r,timestamp:new Date().toISOString(),deviceContext:Vs(te)};try{await(o==null?void 0:o(M)),lt(i,{type:"vote_committed",lectureId:M.lectureId,slideId:M.slideId,selectedGlitchSlideId:M.selectedGlitchSlideId,previousGlitchSlideId:M.previousGlitchSlideId,voteDirection:x,atSec:Number(c.toFixed(2))})}finally{N(!1)}}function Su(){if(yt(),Vt==="playing"){p(!0),y(null),a(!0);return}m&&Kl()}function wu(x){return!f||!L||!X||L.displayMode!==x?null:w.jsx("div",{className:`lecture-player__vote-overlay lecture-player__vote-overlay--${x}`,role:"dialog","aria-label":"Vote on slide",onClick:M=>M.stopPropagation(),children:w.jsxs("div",{className:"lecture-player__vote-panel",children:[w.jsx("p",{className:"lecture-player__vote-label",children:"Rate This Slide"}),w.jsxs("div",{className:"lecture-player__vote-actions",children:[w.jsx("button",{type:"button",className:`lecture-player__vote-button ${d==="up"?"lecture-player__vote-button--active":""}`,onClick:M=>{M.stopPropagation(),gu("up")},disabled:C,children:"Upvote"}),w.jsx("button",{type:"button",className:`lecture-player__vote-button ${d==="down"?"lecture-player__vote-button--active":""}`,onClick:M=>{M.stopPropagation(),gu("down")},disabled:C,children:"Downvote"})]})]})})}function ku(x){return!L||!X?x==="fullscreen"?null:w.jsxs("div",{className:"lecture-player__empty",children:[w.jsx("p",{className:"eyebrow",children:"No slide available"}),w.jsx("p",{children:"Enroll at glitch.university, and help make this slide!."})]}):L.displayMode!==x?x==="fullscreen"?null:w.jsx("div",{className:"lecture-player__empty lecture-player__empty--muted","aria-hidden":"true"}):w.jsxs("div",{className:"lecture-player__gesture-layer",onPointerDown:sd,onPointerMove:ad,onPointerUp:M=>Ql(M.pointerId),onPointerCancel:M=>Ql(M.pointerId),onPointerLeave:M=>{E&&Ql(M.pointerId)},children:[w.jsx(em,{lectureId:u.id,slide:L,glitchSlide:X,candidates:nt,slideRegistry:t,paused:Vt!=="playing",isInspecting:pu,isSettling:g.isSettling,viewportMode:te,dragBaselineGlitchSlideId:g.baselineGlitchSlideId,dragOffsetPx:g.dragOffsetPx,onMediaLoadingChange:R}),w.jsx(Yp,{candidates:nt,displayMode:L.displayMode,activeGlitchSlide:X,isInspecting:pu,isDragging:E,viewportMode:te})]})}return w.jsx("div",{ref:q,className:`lecture-player lecture-player--${te} ${(L==null?void 0:L.displayMode)==="fullscreen"?"lecture-player--fullscreen":""}`,"data-testid":"lecture-player",children:w.jsx("div",{className:"lecture-player__stage",children:w.jsxs("div",{className:"lecture-player__stage-frame",onPointerMove:()=>{!E&&!Pe.isScrubbing&&yt()},onPointerDown:()=>yt(),children:[w.jsx(um,{segment:Be,nextSegment:xr,globalTimeSec:c,lectureDurationSec:u.durationSec,pauseMode:Vt,viewportMode:te,onTogglePlayback:Su,onAutoplayBlocked:()=>{en.current||(en.current=!0,p(!0))},onSegmentError:x=>Ut(x),onGlobalTimeChange:Wl}),mu?w.jsx("div",{className:"lecture-player__square-header","aria-live":"polite",children:mu}):null,w.jsxs("div",{className:"lecture-player__slide-shell",children:[ku("square"),wu("square")]}),od?w.jsxs("div",{className:"lecture-player__fullscreen-layer",children:[ku("fullscreen"),wu("fullscreen")]}):null,Vt!=="playing"?w.jsx("div",{className:"lecture-player__overlay-control",children:w.jsx(qp,{pauseMode:Vt,pendingVote:_,onResume:()=>{Kl()},onPause:()=>p(!0)})}):null,id?w.jsxs("div",{className:"lecture-player__scrubber",style:{"--scrub-progress":`${u.durationSec>0?Bl/u.durationSec*100:0}%`},children:[w.jsx("div",{className:"lecture-player__scrubber-markers","aria-label":"Slide markers",children:u.slides.map((x,M)=>{const Z=x.startTimeSec;if(Z==null)return null;const rt=u.durationSec>0?Z/u.durationSec*100:0,Xe=(Hl==null?void 0:Hl.id)===x.id;return w.jsx("button",{type:"button",className:`lecture-player__scrubber-marker ${Xe?"lecture-player__scrubber-marker--active":""}`,style:{"--marker-progress":`${rt}%`},"aria-label":`S${M+1}`,onPointerDown:ce=>{ce.preventDefault(),ce.stopPropagation(),vu(Z)},onPointerUp:ce=>{ce.preventDefault(),ce.stopPropagation()},onClick:ce=>{ce.preventDefault(),ce.stopPropagation(),vu(Z)},children:w.jsxs("span",{className:"lecture-player__scrubber-marker-label",children:["S",M+1]})},x.id)})}),w.jsx("input",{type:"range",min:0,max:u.durationSec,step:.01,value:Bl,className:"lecture-player__scrubber-input","aria-label":"Lecture timeline",onPointerDown:x=>{x.stopPropagation(),hu()},onChange:x=>ud(x.currentTarget.value),onPointerUp:()=>Er(),onPointerCancel:()=>Er(),onBlur:()=>{Pe.isScrubbing&&Er()},onKeyDown:()=>{Pe.isScrubbing||hu()},onKeyUp:()=>Er()})]}):null,Se?w.jsxs("div",{className:"lecture-player__alert lecture-player__alert--overlay",role:"alert",children:[w.jsx("strong",{children:"Segment error:"})," ",Se]}):null]})})})}var mm={SquareYellow:{componentKey:"SquareYellow",label:"Square image + header",description:"Square image with a short external header.",displayMode:"square",fields:[{name:"header",type:"text",label:"Header",placeholder:"Short headline",required:!0},{name:"imageSrc",type:"image",label:"Image",placeholder:"https://...",required:!0},{name:"imageAlt",type:"text",label:"Alt text",placeholder:"Describe the image",required:!0}]},SquareVideo:{componentKey:"SquareVideo",label:"Square video + header",description:"Square video inside a framed square slide with a short header.",displayMode:"square",fields:[{name:"header",type:"text",label:"Header",placeholder:"Short headline",required:!0},{name:"videoSrc",type:"video",label:"Video",placeholder:"https://...",required:!0},{name:"posterSrc",type:"image",label:"Poster image",placeholder:"https://..."}]},FullscreenSplit:{componentKey:"FullscreenSplit",label:"Fullscreen split",description:"Two-panel fullscreen slide with image and text.",displayMode:"fullscreen",fields:[{name:"header",type:"text",label:"Header",placeholder:"Short header"},{name:"title",type:"text",label:"Title",placeholder:"Main title",required:!0},{name:"body",type:"textarea",label:"Body",placeholder:"Short supporting text",required:!0},{name:"imageSrc",type:"image",label:"Image",placeholder:"https://...",required:!0},{name:"imageAlt",type:"text",label:"Alt text",placeholder:"Describe the image",required:!0},{name:"imagePosition",type:"text",label:"Image position",placeholder:"left or right"}]},FullscreenVideo:{componentKey:"FullscreenVideo",label:"Fullscreen video",description:"Full-bleed video slide with optional overlay text.",displayMode:"fullscreen",fields:[{name:"header",type:"text",label:"Header",placeholder:"Short header"},{name:"videoSrc",type:"video",label:"Video",placeholder:"https://...",required:!0},{name:"posterSrc",type:"image",label:"Poster image",placeholder:"https://..."},{name:"caption",type:"textarea",label:"Caption",placeholder:"Short framing note"}]},FullscreenVideoTitle:{componentKey:"FullscreenVideoTitle",label:"Fullscreen video + title",description:"Full-bleed video with one oversized overlaid title.",displayMode:"fullscreen",fields:[{name:"title",type:"text",label:"Title",placeholder:"No need to be discrete"},{name:"videoSrc",type:"video",label:"Video",placeholder:"https://...",required:!0},{name:"posterSrc",type:"image",label:"Poster image",placeholder:"https://..."}]},FullscreenVideoCenterCaption:{componentKey:"FullscreenVideoCenterCaption",label:"Fullscreen video + centered caption",description:"Full-bleed video with one oversized centered caption.",displayMode:"fullscreen",fields:[{name:"caption",type:"text",label:"Caption",placeholder:"Short centered statement"},{name:"videoSrc",type:"video",label:"Video",placeholder:"https://...",required:!0},{name:"posterSrc",type:"image",label:"Poster image",placeholder:"https://..."}]},EquationFocus:{componentKey:"EquationFocus",label:"Equation focus",description:"One display equation with a short annotation.",displayMode:"fullscreen",supportedDisplayModes:["square","fullscreen"],fields:[{name:"header",type:"text",label:"Header",placeholder:"Short header"},{name:"title",type:"text",label:"Title",placeholder:"What does the equation show?",required:!0},{name:"latexString",type:"latex",label:"LaTeX equation",placeholder:"\\bar{x} = \\frac{1}{N}\\sum_{i=0}^{N} x_i",required:!0},{name:"annotation",type:"textarea",label:"Annotation",placeholder:"One short explanation"}]},QuoteImage:{componentKey:"QuoteImage",label:"Quote + image",description:"Strong quote paired with one image.",displayMode:"fullscreen",fields:[{name:"eyebrow",type:"text",label:"Eyebrow",placeholder:"Optional eyebrow"},{name:"quote",type:"textarea",label:"Quote",placeholder:"Short quote",required:!0},{name:"attribution",type:"text",label:"Attribution",placeholder:"Person or source"},{name:"imageSrc",type:"image",label:"Image",placeholder:"https://...",required:!0},{name:"imageAlt",type:"text",label:"Alt text",placeholder:"Describe the image",required:!0},{name:"imagePosition",type:"text",label:"Image position",placeholder:"left or right"}]},ChartSingle:{componentKey:"ChartSingle",label:"Single chart",description:"One compact chart with a short framing line.",displayMode:"fullscreen",fields:[{name:"header",type:"text",label:"Header",placeholder:"Short header"},{name:"title",type:"text",label:"Title",placeholder:"Chart title",required:!0},{name:"body",type:"textarea",label:"Body",placeholder:"Short interpretation"},{name:"points",type:"lines",label:"Data points",placeholder:"Label: value",description:"One point per line. Format each line as label: value."}]},ProcessFlow:{componentKey:"ProcessFlow",label:"Process flow",description:"Short pipeline with 3 to 5 steps.",displayMode:"fullscreen",fields:[{name:"eyebrow",type:"text",label:"Eyebrow",placeholder:"Optional eyebrow"},{name:"title",type:"text",label:"Title",placeholder:"Process title",required:!0},{name:"steps",type:"lines",label:"Steps",placeholder:"One step per line",required:!0}]},DefinitionCard:{componentKey:"DefinitionCard",label:"Definition card",description:"Term, definition, and optional example.",displayMode:"fullscreen",fields:[{name:"header",type:"text",label:"Header",placeholder:"Short header"},{name:"term",type:"text",label:"Term",placeholder:"Key term",required:!0},{name:"definition",type:"textarea",label:"Definition",placeholder:"Short definition",required:!0},{name:"example",type:"textarea",label:"Example",placeholder:"Optional example"}]},GlitchComponentFrame:{componentKey:"GlitchComponentFrame",label:"Interactive Glitch component",description:"Hosted Glitch component embedded inside the slide surface.",displayMode:"fullscreen",fields:[{name:"header",type:"text",label:"Header",placeholder:"Short header"},{name:"componentId",type:"text",label:"Component id",placeholder:"lightlane",required:!0},{name:"componentUrl",type:"text",label:"Component URL",placeholder:"Optional hosted URL",description:"Optional URL for iframe-hosted components. Leave empty for known local component ids."},{name:"caption",type:"textarea",label:"Caption",placeholder:"Short framing note"}]}},hm=Object.values(mm),Bs=hm.flatMap(function(e){var t,n=(t=e.supportedDisplayModes)!==null&&t!==void 0?t:[e.displayMode];return n.map(function(r){return{componentKey:e.componentKey,label:e.label,description:e.description,displayMode:r,fields:e.fields}})});Bs.filter(function(e){return e.displayMode==="square"}),Bs.filter(function(e){return e.displayMode==="fullscreen"});function vm(){const[e]=I.useState(()=>Bp()),[t]=I.useState(()=>Hp()),[n]=I.useState(()=>Wp()),[r,l]=I.useState(null),[i,o]=I.useState(!0),[s,u]=I.useState(null),[c]=I.useState(()=>am()),h=I.useCallback(async m=>{r&&await cm(r.id,m)},[r]);return I.useEffect(()=>{let m=!1;return Qp(e).then(p=>{m||l(p)}).catch(p=>{m||u(p instanceof Error?p.message:"Could not load presentation fixture.")}).finally(()=>{m||o(!1)}),()=>{m=!0}},[e]),i?w.jsx("main",{className:"app-shell app-shell--player-only",children:w.jsxs("section",{className:"app-panel app-panel--fallback",children:[w.jsx("p",{className:"eyebrow",children:"Loading"}),w.jsx("h1",{children:"Glitch Presentation Layer POC"}),w.jsxs("p",{children:["Fetching presentation ",w.jsx("strong",{children:e})," from the mock API and warming the player shell."]})]})}):s||!r?w.jsx("main",{className:"app-shell app-shell--player-only",children:w.jsxs("section",{className:"app-panel app-panel--fallback",children:[w.jsx("p",{className:"eyebrow",children:"Load failure"}),w.jsx("h1",{children:"Glitch Presentation Layer POC"}),w.jsx("p",{children:s??"Presentation data is unavailable."})]})}):w.jsx("main",{className:"app-shell app-shell--player-only",children:w.jsx("section",{className:"app-panel app-panel--player-only",children:w.jsx(pm,{presentation:r,slideRegistry:Jp,mode:t,targetSlideId:n,initialSessionId:c,onVoteCommit:h})})})}_i.createRoot(document.getElementById("root")).render(w.jsx(Td.StrictMode,{children:w.jsx(vm,{})}));export{w as j,I as r}; diff --git a/dist/assets/index-DF-iGj8k.css b/dist/assets/index-DF-iGj8k.css new file mode 100644 index 0000000..6fa161b --- /dev/null +++ b/dist/assets/index-DF-iGj8k.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Russo+One&display=swap";:root{color-scheme:light;font-family:Russo One,Avenir Next,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#102542;background:radial-gradient(circle at top,rgba(240,199,135,.34),transparent 28%),linear-gradient(180deg,#f7f3e9,#f2ebe0 48%,#e8eef2);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--surface: rgba(255, 255, 255, .78);--surface-strong: rgba(255, 255, 255, .92);--ink: #102542;--muted: #4f647d;--accent: #de6b48;--accent-soft: #f2cc8f;--outline: rgba(16, 37, 66, .12);--shadow: 0 24px 80px rgba(36, 40, 74, .16);--radius-xl: 32px;--radius-lg: 24px;--radius-md: 18px}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-height:100vh;color:var(--ink)}button,input,textarea,select{font:inherit}button{cursor:pointer}.app-shell{display:grid;gap:1.25rem;min-height:100vh;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left))}.app-shell--player-only{display:block;min-height:100vh;padding:0}.app-panel{background:var(--surface);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--outline);border-radius:var(--radius-xl);box-shadow:var(--shadow);padding:1.25rem}.app-panel--player-only{display:grid;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;min-height:100vh}.app-panel--fallback{margin:1rem;border-radius:0}.app-panel--player{display:grid;gap:1.25rem}.app-header{display:grid;gap:1rem}.app-header h1{margin:.25rem 0 .5rem;font-size:clamp(1.8rem,3vw,3rem);line-height:1.04}.app-header p{margin:0;max-width:70ch;color:var(--muted)}.app-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin:0}.app-stats div{border-radius:var(--radius-md);padding:.9rem 1rem;background:var(--surface-strong)}.app-stats dt{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.app-stats dd{margin:.35rem 0 0;font-size:1.5rem;font-weight:700}.eyebrow{margin:0;font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:var(--accent)}.lecture-player{display:grid;place-items:center;container-type:size;gap:0;--stage-width-ratio: 16;--stage-height-ratio: 9;--player-font-size: clamp(10px, 1.45cqi, 18px);--square-header-size: 300%;--header-gap: 1rem;--stage-gap: 0rem;--video-size: 30.5%;width:100%;height:100%;min-width:0;min-height:0;padding:0;border:0;border-radius:0;background:#6c6c6c;box-shadow:none;overflow:hidden}.lecture-player__stage{position:relative;container-type:inline-size;width:min(calc(100cqw - 16px),calc((100cqh - 16px) * var(--stage-width-ratio) / var(--stage-height-ratio)));aspect-ratio:var(--stage-width-ratio) / var(--stage-height-ratio);max-width:100%;max-height:100%;min-height:0}.lecture-player__stage-frame{position:relative;width:100%;height:100%;min-height:0;overflow:hidden;background:#000;font-size:var(--player-font-size)}.lecture-player__slide-shell{position:absolute;top:var(--stage-gap);right:var(--stage-gap);bottom:var(--stage-gap);left:calc(var(--video-size) + (var(--stage-gap) * 2));min-height:0;overflow:hidden;margin:1%}.lecture-player__fullscreen-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;overflow:hidden}.lecture-player__square-header{position:absolute;z-index:4;left:var(--stage-gap);top:var(--header-gap);width:var(--video-size);padding:0 .3rem;color:#ffbd16;font-family:Russo One,Avenir Next,Segoe UI,sans-serif;font-size:var(--square-header-size);line-height:1.1;letter-spacing:.04em;text-align:center;text-transform:uppercase;text-wrap:balance;text-shadow:0 3px 14px rgba(0,0,0,.52)}.lecture-player__gesture-layer{position:relative;height:100%;overflow:hidden;touch-action:none}.lecture-player__empty{display:grid;place-items:center;width:100%;height:100%;min-height:0;padding:clamp(1.5rem,4vw,3rem);border-radius:0;border:0;background:#ffbd16;text-align:center;color:#111;overflow:hidden}.lecture-player__empty p{margin:0;max-width:24ch;font-size:96%;line-height:1.08}.lecture-player__empty .eyebrow{color:#111111ad}.video-stage{position:absolute;z-index:2;display:grid;gap:.75rem;left:var(--stage-gap);top:73%;transform:translateY(-50%);width:var(--video-size)}.video-stage__window{position:relative;aspect-ratio:1 / 1;overflow:hidden;border-radius:0;background:#000;border:1px solid rgba(255,255,255,.26);box-shadow:0 18px 42px #10254261}.video-stage__video,.video-stage__placeholder{width:100%;height:100%;object-fit:cover}.video-stage__placeholder{display:grid;place-items:center;padding:1rem;text-align:center;color:#fdfdfd}.video-stage__meta{position:absolute;inset:auto .8rem .8rem .8rem;display:flex;justify-content:space-between;color:#102542;z-index:3}.video-stage__meta span,.video-stage__next{padding:.38rem .65rem;border-radius:0;background:#ffffffa6;border:1px solid rgba(16,37,66,.08);font-size:72%;letter-spacing:.03em}.video-stage__next{justify-self:center}.slide-host{position:relative;z-index:1;display:grid;align-items:center;container-type:inline-size;min-height:100%;height:100%;font-size:clamp(8px,2cqi,20px);overflow:hidden;transition:transform .18s ease,opacity .18s ease;--slide-padding: clamp(.6em, 3.6cqi, 1.4em);--slide-gap: clamp(.35em, 1.8cqi, .9em);--slide-kicker-size: .78em;--slide-meta-size: .86em;--slide-body-size: 1em;--slide-title-size: 1.7em;--slide-title-compact-size: 1.45em;--slide-quote-size: 2.4em;--slide-equation-size: 2.8em}.slide-host--square{min-height:0;padding:.25rem;font-size:clamp(8px,2.55cqi,22px);--slide-body-size: .98em;--slide-title-size: 1.58em;--slide-title-compact-size: 1.34em;--slide-quote-size: 2.1em;--slide-equation-size: 2.45em}.slide-host--fullscreen{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;padding:.5rem;font-size:clamp(9px,1.75cqi,22px)}.slide-host--inspect{transform:scale(.985)}.slide-host__viewport{position:relative;width:100%;height:100%;overflow:hidden}.slide-host__track{width:100%;height:100%;will-change:transform}.slide-host__track--settling{transition:transform .22s cubic-bezier(.2,.9,.2,1)}.slide-host__track--horizontal{display:grid;grid-auto-flow:column;grid-auto-columns:100%}.slide-host__track--vertical{display:grid;grid-auto-flow:row;grid-auto-rows:100%}.slide-host__item{width:100%;height:100%;min-height:0}.glitch-slide-renderer{position:relative;width:100%;height:100%;min-height:0}.glitch-slide-thumbnail{display:grid;container-type:inline-size;gap:.45rem;width:100%;min-width:0;font-size:clamp(7px,2.1cqi,16px);color:#111}.glitch-slide-thumbnail__header{margin:0;color:#ffbd16;font-size:.92em;line-height:.9;letter-spacing:.045em;text-transform:uppercase;text-wrap:balance}.glitch-slide-thumbnail__surface{position:relative;width:100%;overflow:hidden;background:#000}.glitch-slide-thumbnail--square .glitch-slide-thumbnail__surface{aspect-ratio:1 / 1}.glitch-slide-thumbnail--fullscreen .glitch-slide-thumbnail__surface{aspect-ratio:16 / 9}.glitch-slide-thumbnail__surface>.glitch-slide-renderer{position:absolute;top:0;right:0;bottom:0;left:0}.slide-card,.split-slide,.fallback-slide,.basic-slide,.fullscreen-split{width:100%;height:100%;min-height:100%;border-radius:0;background:#ffbd16;color:#111;border:0;box-shadow:none;overflow:hidden}.square-slide{display:grid;place-items:center;width:100%;height:100%;min-height:100%;padding:var(--slide-padding);overflow:hidden}.square-slide--yellow{background:#ffbd16}.square-slide--paused{filter:saturate(.92)}.square-slide__image-frame{width:min(100%,100cqh);max-width:100%;max-height:100%;aspect-ratio:1 / 1;overflow:hidden;background:#ffffff29}.square-slide__image{width:100%;height:100%;display:block;object-fit:cover;aspect-ratio:1 / 1}.square-video{display:grid;place-items:center;width:100%;height:100%;min-height:100%;padding:var(--slide-padding);background:#ffbd16}.square-video--paused{filter:saturate(.92)}.square-video__frame{width:min(100%,100cqh);max-width:100%;max-height:100%;aspect-ratio:1 / 1;overflow:hidden;background:#ffffff29}.square-video__media{display:block;width:100%;height:100%;object-fit:cover;object-position:center;background:#000}.equation-focus,.quote-image,.chart-single,.process-flow,.definition-card,.glitch-component-frame{width:100%;height:100%;min-height:100%;background:#ffbd16;color:#111;overflow:hidden}.equation-focus__content,.chart-single__content,.process-flow__content,.definition-card__content,.glitch-component-frame__content{display:grid;height:100%;padding:var(--slide-padding)}.equation-focus__eyebrow,.quote-image__eyebrow,.chart-single__eyebrow,.process-flow__eyebrow,.definition-card__eyebrow,.glitch-component-frame__eyebrow{margin:0;font-size:var(--slide-kicker-size);letter-spacing:.12em;text-transform:uppercase;color:#111111a3}.equation-focus__title,.chart-single__title,.process-flow__title,.definition-card__term,.glitch-component-frame__title{margin:0;font-size:var(--slide-title-size);line-height:1.1;text-transform:uppercase}.chart-single__title{font-size:calc(var(--slide-title-size) * 1.05)}.equation-focus__content{align-content:center;gap:var(--slide-gap)}.equation-focus--square .equation-focus__content{align-content:stretch;justify-items:center;text-align:center;padding:var(--slide-padding);gap:var(--slide-gap)}.equation-focus--square .equation-focus__eyebrow{font-size:calc(var(--slide-kicker-size) * .92)}.equation-focus--square .equation-focus__title{max-width:10ch;font-size:var(--slide-title-compact-size)}.equation-focus__equation-frame{padding:calc(var(--slide-padding) * .9);border:1px solid rgba(17,17,17,.24);background:#ffffff2e}.equation-focus--square .equation-focus__equation-frame{width:100%;padding:calc(var(--slide-padding) * .7)}.equation-focus__equation{display:block;overflow-wrap:anywhere;font-family:Times New Roman,serif;font-size:var(--slide-equation-size);font-style:italic;line-height:1.02;text-align:center}.equation-focus__equation--mathjax{min-height:clamp(5rem,12vw,8.5rem);display:grid;place-items:center;padding:.4rem;font-style:normal;overflow:hidden}.equation-focus--square .equation-focus__equation{font-size:calc(var(--slide-equation-size) * .82)}.equation-focus--square .equation-focus__equation--mathjax{min-height:clamp(3.8rem,9vw,5.8rem)}.equation-focus__equation--mathjax mjx-container{margin:0;max-width:100%;overflow-x:auto;overflow-y:hidden}.equation-focus__equation--loading,.equation-focus__equation--error{font-size:calc(var(--slide-body-size) * 1.08);line-height:1.08;color:#111111db}.equation-focus__equation--loading:before{content:"Loading equation…"}.equation-focus__annotation,.chart-single__body,.definition-card__definition,.definition-card__example{margin:0;max-width:30ch;font-size:var(--slide-body-size);line-height:1.08}.equation-focus--square .equation-focus__annotation{max-width:22ch;font-size:calc(var(--slide-body-size) * .94)}.chart-single__body{font-size:calc(var(--slide-body-size) * 1.08)}.quote-image{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.quote-image--image-right .quote-image__panel--image{order:2}.quote-image--image-right .quote-image__panel--quote{order:1}.quote-image__panel{min-width:0;min-height:0}.quote-image__panel--image{background:#ffffff24}.quote-image__image{width:100%;height:100%;display:block;object-fit:cover}.quote-image__panel--quote{display:grid;place-items:center;padding:var(--slide-padding)}.quote-image__content{display:grid;gap:var(--slide-gap);width:100%}.quote-image__quote{margin:0;max-width:14ch;font-size:var(--slide-quote-size);line-height:.94}.quote-image__attribution{margin:0;font-size:calc(var(--slide-body-size) * 1.3);letter-spacing:.06em;text-transform:uppercase}.chart-single__content{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:var(--slide-gap);align-items:center}.chart-single__copy{display:grid;gap:1.1rem;align-content:center}.chart-single__plot{display:grid;gap:1rem;align-content:center}.chart-single__row{display:grid;grid-template-columns:minmax(0,5.8rem) minmax(0,1fr) auto;gap:.75rem;align-items:center}.chart-single__label,.chart-single__value{font-size:var(--slide-body-size);letter-spacing:.06em;text-transform:uppercase}.chart-single__bar-track{height:1.2rem;background:#11111124;overflow:hidden}.chart-single__bar-fill{height:100%}.process-flow__content{align-content:center;gap:var(--slide-gap)}.process-flow__steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.8rem}.process-flow__step{display:grid;gap:.7rem;align-content:start;min-height:8.5rem;padding:1rem;background:#ffffff2e;border:1px solid rgba(17,17,17,.18)}.process-flow__index{display:inline-grid;place-items:center;width:2rem;height:2rem;background:#111;color:#ffbd16;font-size:var(--slide-meta-size)}.process-flow__label{margin:0;font-size:var(--slide-body-size);line-height:1.04}.definition-card__content{align-content:center;gap:clamp(.8rem,1.5vw,1.2rem)}.definition-card__term{max-width:10ch}.definition-card__definition{max-width:22ch}.definition-card__example{max-width:24ch;padding-top:.8rem;border-top:1px solid rgba(17,17,17,.24);color:#111c}.glitch-component-frame{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:clamp(.75rem,1.6vw,1.1rem);padding:clamp(.85rem,2vw,1.4rem)}.glitch-component-frame--fullscreen{position:relative;display:block;padding:0}.glitch-component-frame__chrome{display:flex;justify-content:space-between;align-items:end;gap:.75rem}.glitch-component-frame--fullscreen .glitch-component-frame__chrome{position:absolute;top:clamp(.6rem,1.5vw,1rem);left:clamp(.6rem,1.5vw,1rem);right:clamp(.6rem,1.5vw,1rem);z-index:2;pointer-events:none}.glitch-component-frame--fullscreen .glitch-component-frame__eyebrow,.glitch-component-frame--fullscreen .glitch-component-frame__id{padding:.28rem .5rem;background:#0000008f;color:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.glitch-component-frame__id{margin:0;font-size:var(--slide-kicker-size);letter-spacing:.08em;text-transform:uppercase;color:#111111bd}.glitch-component-frame__viewport{position:relative;min-height:0;overflow:hidden;border:1px solid rgba(17,17,17,.24);background:#ffffff29}.glitch-component-frame--fullscreen .glitch-component-frame__viewport{position:absolute;top:0;right:0;bottom:0;left:0;border:0;background:#000}.glitch-component-frame__iframe{display:block;width:100%;height:100%;min-height:100%;border:0;background:#000}.glitch-component-frame__caption{margin:0;max-width:28ch;font-size:var(--slide-body-size);line-height:1.08;color:#111111d6}.glitch-component-frame--fullscreen .glitch-component-frame__caption{position:absolute;left:clamp(.6rem,1.5vw,1rem);right:auto;bottom:clamp(.6rem,1.5vw,1rem);z-index:2;max-width:32ch;padding:.36rem .56rem;background:#0000008f;color:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none}.equation-focus--paused,.quote-image--paused,.chart-single--paused,.process-flow--paused,.definition-card--paused,.glitch-component-frame--paused{filter:saturate(.92)}.fullscreen-video{position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;background:#000}.fullscreen-video__media{display:block;width:100%;height:100%;object-fit:cover;background:#000}.fullscreen-video__chrome{position:absolute;top:clamp(.6rem,1.5vw,1rem);left:clamp(.6rem,1.5vw,1rem);right:clamp(.6rem,1.5vw,1rem);z-index:2;pointer-events:none}.fullscreen-video__header{display:inline-block;margin:0;padding:.28rem .5rem;background:#0000008f;color:#ffffffeb;font-size:var(--slide-kicker-size);letter-spacing:.12em;text-transform:uppercase;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.fullscreen-video__caption{position:absolute;left:clamp(.6rem,1.5vw,1rem);right:auto;bottom:clamp(.6rem,1.5vw,1rem);z-index:2;margin:0;max-width:32ch;padding:.36rem .56rem;background:#0000008f;color:#ffffffeb;font-size:var(--slide-body-size);line-height:1.08;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none}.fullscreen-video--paused{filter:saturate(.92)}.fullscreen-video-title{position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;background:#000}.fullscreen-video-title__media{display:block;width:100%;height:100%;object-fit:cover;background:#000}.fullscreen-video-title__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--slide-padding);background:linear-gradient(to bottom,#0000002e,#00000014 35%,#0000004d);pointer-events:none}.fullscreen-video-title__title{margin:0;max-width:10ch;color:#ffbd16;font-size:5em;line-height:.9;letter-spacing:.02em;text-align:center;text-transform:uppercase;text-wrap:balance;text-shadow:0 .08em .24em rgba(0,0,0,.65),0 0 .5em rgba(0,0,0,.2)}.fullscreen-video-title--paused{filter:saturate(.92)}.fullscreen-video-center-caption{position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;background:#000}.fullscreen-video-center-caption__media{display:block;width:100%;height:100%;object-fit:cover;background:#000}.fullscreen-video-center-caption__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--slide-padding);pointer-events:none}.fullscreen-video-center-caption__caption{margin:0;max-width:12ch;color:#ffbd16;font-size:5em;line-height:1.1;letter-spacing:.01em;text-align:center;text-wrap:balance;text-shadow:0 .08em .26em rgba(0,0,0,.7),0 0 .5em rgba(0,0,0,.24)}.fullscreen-video-center-caption--paused{filter:saturate(.92)}.fullscreen-split{display:grid;place-items:center;padding:var(--slide-padding)}.fullscreen-split__panel{overflow:hidden;aspect-ratio:1 / 1}.fullscreen-split__panel--image{background:#ffffff1f}.fullscreen-split__panel--text{display:grid;place-items:center;padding:var(--slide-padding);background:#f5b008}.fullscreen-split__image{width:100%;height:100%;display:block;object-fit:cover}.fullscreen-split__text{display:grid;align-content:center;gap:var(--slide-gap);width:100%;height:100%}.fullscreen-split__eyebrow{margin:0;font-size:calc(var(--slide-kicker-size) * 1.18);letter-spacing:.12em;text-transform:uppercase;color:#111111ad}.fullscreen-split__title{margin:0;max-width:11ch;font-size:var(--slide-title-size);line-height:1.1;letter-spacing:.01em;text-transform:uppercase}.fullscreen-split__body{margin:0;max-width:24ch;font-size:calc(var(--slide-body-size) * 1.15);line-height:1.08}.slide-card,.fallback-slide,.basic-slide{display:grid;align-content:center;gap:var(--slide-gap);padding:var(--slide-padding)}.slide-card h2,.fallback-slide h3,.basic-slide__title{margin:0;font-size:var(--slide-title-size);line-height:1.1;text-transform:uppercase}.slide-card p,.fallback-slide p,.basic-slide__body,.basic-slide__eyebrow,.basic-slide__kicker{margin:0;max-width:28ch;font-size:var(--slide-body-size)}.slide-card--paused,.split-slide--paused,.basic-slide--paused{filter:saturate(.92)}.slide-card--kinetic{position:relative;overflow:hidden;background:radial-gradient(circle at 18% 20%,rgba(255,243,196,.86),transparent 24%),radial-gradient(circle at 80% 72%,rgba(255,255,255,.18),transparent 26%),linear-gradient(135deg,#ffbd16,#f5b008);color:#111;transform-style:preserve-3d}.slide-card__orbs{position:absolute;inset:auto -3rem -2rem auto;display:grid;gap:1rem}.slide-card__orbs span{width:5rem;height:5rem;border-radius:50%;background:#1111111f;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.slide-card .eyebrow,.fallback-slide .eyebrow{color:#111111ad}.split-slide{display:grid;grid-template-columns:1fr auto 1fr;overflow:hidden}.split-slide__panel{display:grid;align-content:center;justify-items:center;gap:var(--slide-gap);padding:var(--slide-padding)}.split-slide__panel span{font-size:var(--slide-kicker-size);letter-spacing:.12em;text-transform:uppercase;color:#111111ad}.split-slide__panel strong{font-size:var(--slide-title-size);text-align:center;line-height:1.02;text-transform:uppercase}.split-slide__panel--left{background:linear-gradient(180deg,#ffc72c,#ffbd16)}.split-slide__panel--right{background:linear-gradient(180deg,#f7b61f,#eaa300)}.split-slide__divider{width:1px;background:#11111152}.fallback-slide{background:linear-gradient(180deg,#ffc72c,#ffbd16)}.fallback-slide code{overflow-wrap:anywhere;color:#111111ad}.basic-slide{padding:var(--slide-padding)}.basic-slide__content{display:grid;align-content:center;gap:var(--slide-gap);height:100%}.basic-slide__eyebrow,.basic-slide__kicker{font-size:var(--slide-kicker-size);letter-spacing:.12em;text-transform:uppercase;color:#111111ad}.basic-slide__title{max-width:10ch}.basic-slide__body{max-width:26ch;line-height:1.12}.basic-slide__accent-bar{width:min(18rem,54%);height:.7rem;background:#111}.carousel-hud{position:absolute;inset:auto 1rem 1rem 1rem;z-index:6;display:grid;gap:.35rem;justify-items:center;max-width:min(24rem,calc(100% - 2rem));padding:.55rem .75rem;border-radius:0;background:#0000009e;color:#fff;box-shadow:0 12px 24px #0000003d;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.carousel-hud--inspect{background:#000c}.carousel-hud__header,.carousel-hud__footer{display:flex;justify-content:space-between;gap:.75rem;width:100%;font-size:82%}.carousel-hud__cue,.carousel-hud__detail{display:grid;gap:.25rem;width:100%}.carousel-hud__author{margin:0;width:100%;font-size:78%;line-height:1.1;text-align:center;color:#ffffffdb}.carousel-hud__cue{justify-items:center;font-size:76%;letter-spacing:.08em;text-transform:uppercase}.carousel-hud__swipe{color:#ffbd16;font-size:84%}.carousel-hud__swipe--vertical{line-height:1}.carousel-hud__track{display:flex;gap:.5rem;justify-content:center}.carousel-hud__dot{display:inline-grid;place-items:center;width:.55rem;height:.55rem;min-width:0;min-height:0;padding:0;border-radius:0;background:#ffffff24;font-size:0}.carousel-hud__dot--active{background:#ffbd16;color:transparent}.resume-control{display:grid;place-items:center;width:100%;height:100%}.resume-control__button{display:grid;place-items:center;width:clamp(3.6rem,11vw,5.4rem);aspect-ratio:1 / 1;padding:0;border:1px solid rgba(255,255,255,.34);border-radius:999px;background:#0000009e;color:#fff;box-shadow:0 16px 28px #00000047;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.resume-control__button:hover{background:#000000c2}.resume-control__button:focus-visible{outline:3px solid rgb(255,189,22);outline-offset:4px}.resume-control__icon{display:block}.resume-control__icon--play{width:0;height:0;margin-left:.18rem;border-top:.85rem solid transparent;border-bottom:.85rem solid transparent;border-left:1.4rem solid #fff}.resume-control__icon--pause{width:1.35rem;height:1.7rem;background:linear-gradient(90deg,#fff 0 36%,transparent 36% 64%,#fff 64% 100%)}kbd{padding:.1rem .4rem;border-radius:0;background:#ffffff2e;border:1px solid rgba(255,255,255,.28)}.lecture-player__alert{padding:.9rem 1rem;border-radius:0;background:#fff0f0eb;border:1px solid rgba(194,45,58,.16)}.lecture-player__alert--overlay{position:absolute;left:1rem;right:1rem;bottom:1rem;z-index:8}.lecture-player__overlay-control{position:absolute;z-index:7;left:var(--stage-gap);top:calc(67% - (var(--video-size) / 2));width:var(--video-size);height:var(--video-size);display:grid;place-items:center;pointer-events:none}.lecture-player__overlay-control .resume-control__button{pointer-events:auto}.lecture-player__scrubber{position:absolute;left:.65rem;right:.65rem;bottom:.35rem;z-index:9;display:grid;gap:.28rem;padding:.28rem .5rem .34rem;background:#000000b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.lecture-player__scrubber-input{width:100%;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;touch-action:none;position:relative;z-index:1}.lecture-player__scrubber-input:focus-visible{outline:none}.lecture-player__scrubber-input::-webkit-slider-runnable-track{height:.28rem;background:linear-gradient(90deg,rgb(255,189,22) 0 var(--scrub-progress),rgba(255,255,255,.24) var(--scrub-progress) 100%)}.lecture-player__scrubber-input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.05rem;height:1.05rem;margin-top:-.39rem;border:1px solid #111;border-radius:999px;background:#ffbd16;box-shadow:0 0 0 2px #00000047}.lecture-player__scrubber-input::-moz-range-track{height:.28rem;background:#ffffff3d}.lecture-player__scrubber-input::-moz-range-progress{height:.28rem;background:#ffbd16}.lecture-player__scrubber-input::-moz-range-thumb{width:1.05rem;height:1.05rem;border:1px solid #111;border-radius:999px;background:#ffbd16;box-shadow:0 0 0 2px #00000047}.lecture-player__scrubber-markers{position:relative;height:1.1rem;z-index:2}.lecture-player__scrubber-marker{position:absolute;left:var(--marker-progress);top:0;transform:translate(-50%);display:grid;gap:.12rem;justify-items:center;min-width:2rem;padding:0;border:0;background:transparent;color:#ffffffd1}.lecture-player__scrubber-marker:before{content:"";width:.12rem;height:.4rem;background:#ffbd16c7}.lecture-player__scrubber-marker-label{display:inline-grid;place-items:center;min-width:1.6rem;padding:.08rem .28rem;background:#ffffff1f;font-size:58%;letter-spacing:.08em;text-transform:uppercase}.lecture-player__scrubber-marker:hover .lecture-player__scrubber-marker-label,.lecture-player__scrubber-marker:focus-visible .lecture-player__scrubber-marker-label{background:#ffbd1661;color:#fff}.lecture-player__scrubber-marker--active .lecture-player__scrubber-marker-label{background:#ffbd16;color:#111}.lecture-player__scrubber-marker:focus-visible{outline:2px solid rgba(255,189,22,.82);outline-offset:2px}.lecture-player__scrubber-marker--active:before{background:#ffbd16}.lecture-player__empty--muted{opacity:0;pointer-events:none}.lecture-player__vote-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;display:grid;place-items:center;padding:clamp(1rem,2.6vw,2rem);background:#0000008f;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.lecture-player__vote-overlay--square,.lecture-player__vote-overlay--fullscreen{top:0;right:0;bottom:0;left:0}.lecture-player__vote-panel{display:grid;gap:clamp(.8rem,1.8vw,1.2rem);justify-items:center;width:min(100%,28rem);padding:clamp(1rem,2.4vw,1.6rem);background:#000000b8;border:1px solid rgba(255,255,255,.14);box-shadow:0 16px 36px #00000057}.lecture-player__vote-label{margin:0;color:#ffbd16;font-size:102%;letter-spacing:.08em;text-transform:uppercase;text-align:center}.lecture-player__vote-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.8rem;width:100%}.lecture-player__vote-button{min-width:clamp(8.25rem,20vw,10.5rem);padding:.68rem .95rem;border:1px solid rgba(255,255,255,.28);background:#ffffff14;color:#fff;font-size:86%;text-transform:uppercase;letter-spacing:.05em;transition:background .14s ease,border-color .14s ease,color .14s ease}.lecture-player__vote-button:hover:not(:disabled){background:#ffbd162e;border-color:#ffbd1694}.lecture-player__vote-button:focus-visible{outline:2px solid rgb(255,189,22);outline-offset:2px}.lecture-player__vote-button:disabled{opacity:.6;cursor:progress}.lecture-player__vote-button--active{background:#ffbd16;border-color:#ffbd16;color:#111}.lecture-player--mobile-landscape{--stage-gap: .75rem;--square-header-size: 300%}.lecture-player--mobile-landscape .video-stage{top:auto;bottom:var(--stage-gap);left:var(--stage-gap);transform:none;width:var(--video-size)}.lecture-player--mobile-landscape .lecture-player__slide-shell{top:var(--stage-gap);right:var(--stage-gap);bottom:var(--stage-gap);left:auto;width:calc((100% - (var(--stage-gap) * 2)) * .67);height:auto;transform:none}.lecture-player--mobile-landscape .lecture-player__overlay-control{left:var(--stage-gap);top:auto;bottom:var(--stage-gap);width:var(--video-size);height:var(--video-size)}.lecture-player--mobile-landscape .lecture-player__scrubber{left:.55rem;right:.55rem;bottom:.3rem}.lecture-player--mobile-landscape .lecture-player__square-header{top:var(--stage-gap);left:var(--stage-gap);width:var(--video-size);padding:0 .25rem;line-height:.9;letter-spacing:.05em}.lecture-player--mobile-landscape .slide-host,.lecture-player--mobile-landscape .slide-host--square,.lecture-player--mobile-landscape .lecture-player__gesture-layer{width:100%;height:100%;min-height:0}.lecture-player--mobile-landscape .slide-host--square{padding:0}.lecture-player--desktop .fullscreen-split,.lecture-player--mobile-landscape .fullscreen-split{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);align-content:center;justify-content:center;gap:clamp(1rem,2.2vw,1.6rem)}.lecture-player--desktop .fullscreen-split--image-right .fullscreen-split__panel--image,.lecture-player--mobile-landscape .fullscreen-split--image-right .fullscreen-split__panel--image{order:2}.lecture-player--desktop .fullscreen-split--image-right .fullscreen-split__panel--text,.lecture-player--mobile-landscape .fullscreen-split--image-right .fullscreen-split__panel--text{order:1}.lecture-player--desktop .quote-image,.lecture-player--mobile-landscape .quote-image{grid-template-columns:repeat(2,minmax(0,1fr))}.lecture-player--mobile-portrait{--stage-width-ratio: 1;--stage-height-ratio: 2;--stage-gap: 0;--player-font-size: clamp(9px, 2.5cqi, 16px);--square-header-size: 300%;--video-size: 100%}.lecture-player--mobile-portrait .video-stage{top:auto;bottom:0;left:50%;transform:none;width:var(--video-size);height:50%;gap:0;margin-left:-50%}.lecture-player--mobile-portrait .video-stage__window{width:100%;height:100%}.lecture-player--mobile-portrait .video-stage__next{display:none}.lecture-player--mobile-portrait .lecture-player__slide-shell{top:0;left:0;right:0;bottom:50%}.lecture-player--mobile-portrait .lecture-player__gesture-layer,.lecture-player--mobile-portrait .slide-host,.lecture-player--mobile-portrait .slide-host--square{width:100%;height:100%;min-height:0;padding:0}.lecture-player--mobile-portrait .slide-host--fullscreen{top:0;right:0;bottom:0;left:0;padding:0}.lecture-player--mobile-portrait .lecture-player__fullscreen-layer{top:0;right:0;bottom:0;left:0}.lecture-player--mobile-portrait .lecture-player__square-header{top:auto;left:.9rem;right:.9rem;width:auto;top:calc(52% - .1rem);line-height:.88;letter-spacing:.045em}.lecture-player--mobile-portrait .lecture-player__overlay-control{left:0;right:0;top:auto;bottom:0;width:100%;height:50%}.lecture-player--mobile-portrait .lecture-player__scrubber{left:.35rem;right:.35rem;bottom:.18rem;padding-bottom:calc(.28rem + env(safe-area-inset-bottom))}.lecture-player--mobile-portrait .lecture-player__scrubber-marker-label{min-width:1.4rem;font-size:54%}.lecture-player--mobile-portrait .slide-card,.lecture-player--mobile-portrait .split-slide,.lecture-player--mobile-portrait .fallback-slide,.lecture-player--mobile-portrait .fullscreen-split,.lecture-player--mobile-portrait .equation-focus,.lecture-player--mobile-portrait .quote-image,.lecture-player--mobile-portrait .chart-single,.lecture-player--mobile-portrait .process-flow,.lecture-player--mobile-portrait .definition-card,.lecture-player--mobile-portrait .glitch-component-frame,.lecture-player--mobile-portrait .lecture-player__empty{border-radius:0;box-shadow:none}.lecture-player--mobile-portrait .quote-image,.lecture-player--mobile-portrait .chart-single__content{grid-template-columns:1fr}.lecture-player--mobile-portrait .quote-image__panel--quote,.lecture-player--mobile-portrait .equation-focus__content,.lecture-player--mobile-portrait .chart-single__content,.lecture-player--mobile-portrait .process-flow__content,.lecture-player--mobile-portrait .definition-card__content,.lecture-player--mobile-portrait .glitch-component-frame__content{padding:.9rem}.lecture-player--mobile-portrait .quote-image__quote{max-width:12ch;font-size:var(--slide-quote-size)}.lecture-player--mobile-portrait .equation-focus__equation--mathjax{min-height:4.6rem;padding:.2rem}.lecture-player--mobile-portrait .equation-focus__title,.lecture-player--mobile-portrait .chart-single__title,.lecture-player--mobile-portrait .process-flow__title,.lecture-player--mobile-portrait .definition-card__term,.lecture-player--mobile-portrait .glitch-component-frame__title{font-size:var(--slide-title-size)}.lecture-player--mobile-portrait .equation-focus__annotation,.lecture-player--mobile-portrait .chart-single__body,.lecture-player--mobile-portrait .definition-card__definition,.lecture-player--mobile-portrait .definition-card__example,.lecture-player--mobile-portrait .process-flow__label,.lecture-player--mobile-portrait .glitch-component-frame__caption{font-size:var(--slide-body-size)}.lecture-player--mobile-portrait .chart-single__row{grid-template-columns:minmax(0,4.8rem) minmax(0,1fr) auto;gap:.5rem}.lecture-player--mobile-portrait .process-flow__steps{grid-template-columns:repeat(2,minmax(0,1fr))}.lecture-player--mobile-portrait .slide-card,.lecture-player--mobile-portrait .fallback-slide{align-content:center}.lecture-player--mobile-portrait .split-slide__panel{min-height:0}.lecture-player--mobile-portrait .fullscreen-split{align-content:center;gap:.9rem;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,1.5fr)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}} diff --git a/dist/glitch/glitch_assumption_toggle/.DS_Store b/dist/glitch/glitch_assumption_toggle/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e1383dedac9e61c80d39cb7dc3bbe2f39d97c2d8 GIT binary patch literal 8196 zcmeHMU2GIp6u#fIlo>kE0g9Bm6BZVNkOkUO((-4ve+mc`*p~iKSax?tIxss^c4oIg zX>3e>&N;YH&Qpf4thCK%%bQRB}8KKP>Y;F-Czgtk;)41qW|nS1WN z=bU@*Irlqr_slZJ&|1*y8LMH8iS&3>sif*Q#p8R=q#^_(5>b#oV;XZZ!_H8~v@?^W z!-3EPp$9?_gdPYz5PINl@BrP}UJ<9b_c=GLLl1-=_+NU!dp|_!@n|BTW1RZ04yybV zfM_`l`-R$+2lzVCfF=Su#;LDLbMou~fhvL&16-Z>QBRy`BA{cOa&-o-&Je7OAVYz_ zI_X7yafSq^VI6uP^uS~fc)5E8bC}Hv%$ktDU&suZhU3=NeGQ?kd|JhHQ4}l1eaS(4 zIO(R{g43GL@AZ0Jwryrg?Q~|3p%15&>NeYQ(}tzzeFa0)No1hMurzzP)h<|?Np1*&mjRnO z!LU;ktMf?3G>+>u zR^?>#wrTFP9mAWZuh-R&x*l&5tGC~=^KP3zSxQj~j=o!`xs0OTPBS{a1}*6+R^MWn z*MxL-*8GJ_9$4AXv@y}KW&5rxRm$u+bE{>!pAN!ujYkbV-#u(-?qFZq$?BG7SO=mR42W?=8D6?YNyoxF02$*2~9$?uwK|8 z><~JIULh?U5^Ny|E1?vp`${HrDjXv^G2DW$hr-$0hg;;~&0Dt0+wPfgyE=;p*u4AZ zN0+Wx-PpXTyu@5UpmL<&wt@Vjz-WQ{~2sFd+;JklhI3V3I|yiuZHRLXf* zl@pSrFuxONi*$$-P>T3pA^j@5#(rYIu^WW+S(u9&EJGdP`$25R4nnwx?{4fz3Tb4Z zAqNXXI6_!Ifl)k$F+7f^2ipjiX+SWmu zyR^6QTbsI9##uF9{@*e6_y4IU2sxn#LJ!>Y9zc0}vb~kenCb=M<=Rnt4$$KjPi~A; vUxg|^9VhCi<3w-%VMy&LiF!JTfR1rWBUJAAhk!f$b345M!~6eky#N0OC;`Vb literal 0 HcmV?d00001 diff --git a/dist/glitch/glitch_assumption_toggle/Component.d.ts b/dist/glitch/glitch_assumption_toggle/Component.d.ts new file mode 100644 index 0000000..8531372 --- /dev/null +++ b/dist/glitch/glitch_assumption_toggle/Component.d.ts @@ -0,0 +1,2 @@ +import type { GlitchComponentProps } from './types'; +export default function AssumptionToggle({ config, onComplete, onProgress, theme, className, host }: GlitchComponentProps): import("react/jsx-runtime").JSX.Element; diff --git a/dist/glitch/glitch_assumption_toggle/assumption-toggle.js b/dist/glitch/glitch_assumption_toggle/assumption-toggle.js new file mode 100644 index 0000000..61be7ec --- /dev/null +++ b/dist/glitch/glitch_assumption_toggle/assumption-toggle.js @@ -0,0 +1,560 @@ +(function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode('.gc-assumption-toggle{--shell-bg: radial-gradient(circle at top, rgba(40, 58, 34, .35), transparent 42%), linear-gradient(180deg, #070a08, #0f160f 58%, #090b09);--screen-bg: #616161;--screen-error: #7f1d1d;--screen-glow: rgba(0, 0, 0, .5);--text-primary: var(--gc-text, #0f172a);--text-secondary: var(--gc-text-muted, #6bff5b);--accent-color: var(--gc-accent, #1c6a00);--panel-green: var(--gc-primary, #248a00);--panel-white: rgba(255, 255, 255, .92);--font-display: "Russo One", sans-serif;--font-ui: "VT323", sans-serif;color:var(--text-primary);width:100%}.gc-assumption-toggle *,.gc-assumption-toggle *:before,.gc-assumption-toggle *:after{box-sizing:border-box}.gc-assumption-toggle .component-shell{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px 0;background:var(--shell-bg)}.gc-assumption-toggle .main-wrapper{width:min(100%,1000px);aspect-ratio:1000 / 678;background-image:var(--assumption-frame-image);background-position:center;background-repeat:no-repeat;background-size:100% 100%;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .crt-screen{position:relative;width:51.8%;height:66.3%;transform:translateY(.6%);background:var(--screen-bg);border-radius:7.5%;display:flex;justify-content:center;align-items:center;overflow:hidden;box-shadow:inset 0 0 40px var(--screen-glow);transition:background-color .4s ease}.gc-assumption-toggle .crt-screen.paradox-errors{background:var(--screen-error)}.gc-assumption-toggle .crt-screen:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(rgba(18,16,16,0) 50%,rgba(0,0,0,.24) 50%),linear-gradient(90deg,rgba(255,0,0,.05),rgba(0,255,0,.02),rgba(0,0,255,.05));background-size:100% 2px,3px 100%;pointer-events:none;z-index:20}.gc-assumption-toggle .slides-wrapper{width:100%;height:100%;display:flex;justify-content:center;align-items:center;transform-origin:center}.gc-assumption-toggle .slide{width:100%;height:100%;padding:20px;display:flex;flex-direction:column;justify-content:center;align-items:center}.gc-assumption-toggle .slide-splash{text-align:center}.gc-assumption-toggle .splash-content h1{margin:0 0 18px;font-size:clamp(1.4rem,2.7vw,2.2rem);line-height:1.3;color:var(--text-primary);font-family:var(--font-display);font-weight:400;text-transform:uppercase;text-shadow:0 0 4px rgba(0,0,0,.35)}.gc-assumption-toggle .splash-content h2{margin:0 0 42px;color:var(--text-secondary);font-size:clamp(1rem,1.5vw,1.2rem);font-weight:400;letter-spacing:.08em;font-family:var(--font-ui)}.gc-assumption-toggle .widget-header h1{margin:0 0 18px;color:var(--text-secondary);font-size:clamp(1.4rem,2.5vw,1.8rem);font-weight:400;letter-spacing:.05em;text-transform:uppercase;font-family:var(--font-display);text-shadow:0 0 5px rgba(255,255,255,.35)}.gc-assumption-toggle .switch-group{width:100%;display:flex;flex-direction:column;gap:18px;padding:0 24px}.gc-assumption-toggle .switch-item{width:100%}.gc-assumption-toggle .switch-input{position:absolute;opacity:0;pointer-events:none}.gc-assumption-toggle .toggle-track{position:relative;width:100%;min-height:58px;padding:4px;display:flex;align-items:stretch;justify-content:space-between;gap:8px;border-radius:28px;cursor:pointer;overflow:hidden;border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.4)}.gc-assumption-toggle .toggle-track:before{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:calc(50% - 4px);border-radius:24px;background:var(--panel-green);transition:transform .35s cubic-bezier(.16,1,.3,1)}.gc-assumption-toggle .switch-input:checked+.toggle-track:before{transform:translate(100%)}.gc-assumption-toggle .option-left,.gc-assumption-toggle .option-right{position:relative;z-index:1;flex:1;display:flex;align-items:center;justify-content:center;text-align:center;padding:10px 8px;color:#ffffff9e;font-size:clamp(.78rem,2vw,1.4rem);font-weight:500;letter-spacing:.04em;line-height:1.15;font-family:var(--font-ui);transition:color .25s ease,font-weight .25s ease}.gc-assumption-toggle .switch-input:not(:checked)+.toggle-track .option-left,.gc-assumption-toggle .switch-input:checked+.toggle-track .option-right{color:#fff;font-weight:700}.gc-assumption-toggle .action-button{margin-top:24px;border:none;border-radius:8px;padding:12px 32px;background:var(--accent-color);color:#fff;cursor:pointer;text-transform:uppercase;font-family:var(--font-display);font-size:clamp(1rem,2vw,1.35rem);font-weight:400;letter-spacing:.06em;box-shadow:0 4px #00000047;transition:transform .12s ease,box-shadow .12s ease,opacity .2s ease}.gc-assumption-toggle .action-button:hover{opacity:.92}.gc-assumption-toggle .action-button:active{transform:translateY(3px);box-shadow:none}.gc-assumption-toggle .action-button.secondary{font-size:1rem;padding:7px 88px;color:var(--text-secondary);background:transparent;border:2px solid var(--text-secondary);box-shadow:none}.gc-assumption-toggle .bottom-container{width:100%;height:100%;display:flex;flex-direction:column;gap:16px}.gc-assumption-toggle .slide-processing{justify-content:flex-start;padding:26px 20px 20px}.gc-assumption-toggle .processing-shell{width:100%;height:100%;display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:18px;background:linear-gradient(180deg,rgba(4,18,7,.96),rgba(7,24,12,.92)),radial-gradient(circle at top,rgba(87,255,143,.14),transparent 40%);border:1px solid rgba(120,255,154,.22);box-shadow:inset 0 0 28px #00000047}.gc-assumption-toggle .processing-header{display:flex;align-items:center;gap:10px}.gc-assumption-toggle .processing-led{width:10px;height:10px;border-radius:999px;background:#5cff8b;box-shadow:0 0 10px #5cff8be6;animation:assumption-led-pulse 1.2s ease-in-out infinite}.gc-assumption-toggle .processing-header h2{margin:0;color:#dfffe7;font-family:var(--font-display);font-size:clamp(1.05rem,2vw,1.3rem);font-weight:400;letter-spacing:.06em;text-transform:uppercase}.gc-assumption-toggle .processing-subtitle{color:#b6ffc6b8;font-family:var(--font-ui);font-size:clamp(.88rem,1.6vw,1rem);letter-spacing:.05em;text-transform:uppercase}.gc-assumption-toggle .processing-terminal{flex:1;min-height:0;padding:14px 16px;border-radius:14px;background:linear-gradient(180deg,rgba(3,9,4,.94),rgba(7,16,8,.96)),repeating-linear-gradient(180deg,rgba(255,255,255,.02) 0,rgba(255,255,255,.02) 1px,transparent 1px,transparent 18px);border:1px solid rgba(120,255,154,.12);overflow:hidden}.gc-assumption-toggle .processing-line{display:flex;align-items:baseline;gap:8px;min-height:1.45em;color:#b7ffca;font-family:var(--font-ui);font-size:clamp(1rem,1.8vw,1.18rem);letter-spacing:.04em;line-height:1.35;word-break:break-word}.gc-assumption-toggle .processing-line+.processing-line{margin-top:4px}.gc-assumption-toggle .processing-line-active{color:#edfff2}.gc-assumption-toggle .processing-prompt{flex:0 0 auto;color:#5cff8b;font-family:var(--font-display)}.gc-assumption-toggle .processing-cursor{display:inline-block;width:9px;height:1.05em;margin-left:2px;vertical-align:text-bottom;background:#74ff97;box-shadow:0 0 8px #74ff97a6;animation:assumption-cursor-blink .9s steps(1) infinite}.gc-assumption-toggle .visualization-container,.gc-assumption-toggle .result-container{width:100%;border-radius:16px}.gc-assumption-toggle .visualization-container{flex:1.5;min-height:0;display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(255,255,255,.05);background:rgba(0,0,0,.32)}.gc-assumption-toggle .result-container{position:relative;flex:1;min-height:0;padding:18px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:rgba(255,255,255,.32);border:1px solid rgba(0,0,0,.08);text-align:center}.gc-assumption-toggle .summary-box{width:100%}.gc-assumption-toggle .summary-label{display:block;margin-bottom:8px;color:var(--text-secondary);font-size:.84rem;letter-spacing:.08em;text-transform:uppercase;font-family:var(--font-display)}.gc-assumption-toggle .summary-value{display:block;color:var(--text-primary);font-size:clamp(.9rem,1.5vw,1rem);letter-spacing:.04em;line-height:1.4;font-family:var(--font-ui)}.gc-assumption-toggle .result-value{display:block;width:100%;margin-top:4px;font-size:clamp(1.7rem,3vw,2rem);font-weight:400;letter-spacing:.05em;background-clip:text;-webkit-background-clip:text;color:transparent;font-family:var(--font-display)}.gc-assumption-toggle .result-stable{background-image:linear-gradient(90deg,#064e3b,#16a34a)}.gc-assumption-toggle .result-warning{background-image:linear-gradient(90deg,#7c2d12,#d97706)}.gc-assumption-toggle .result-paradox{background-image:linear-gradient(90deg,#831843,#be185d)}.gc-assumption-toggle .result-uncertain{background-image:linear-gradient(90deg,#4338ca,#7c3aed)}.gc-assumption-toggle .result-description{display:block;width:100%;margin-top:4px;color:#000;font-size:clamp(.96rem,1.8vw,1.08rem);letter-spacing:.03em;line-height:1.35;font-family:var(--font-ui)}.gc-assumption-toggle .intermediate-result{margin-top:14px;color:var(--text-secondary);font-size:.76rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-family:var(--font-display)}.gc-assumption-toggle .art-canvas{position:relative;width:100%;height:100%;min-height:160px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .art-canvas:after{content:"";position:absolute;width:8px;height:8px;border-radius:999px;background:#ffffff;box-shadow:0 0 12px #ffffffe6}.gc-assumption-toggle .art-canvas.paradox-point:after,.gc-assumption-toggle .art-canvas.paradox-chunk:after{display:none}.gc-assumption-toggle .cube-wrapper{position:relative;width:64px;height:64px;perspective:400px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .cube{position:relative;width:64px;height:64px;transform-style:preserve-3d;animation:assumption-slow-spin 10s linear infinite}.gc-assumption-toggle .face{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.05)}.gc-assumption-toggle .cube .front{transform:translateZ(32px)}.gc-assumption-toggle .cube .back{transform:rotateY(180deg) translateZ(32px)}.gc-assumption-toggle .cube .right{transform:rotateY(90deg) translateZ(32px)}.gc-assumption-toggle .cube .left{transform:rotateY(-90deg) translateZ(32px)}.gc-assumption-toggle .cube .top{transform:rotateX(90deg) translateZ(32px)}.gc-assumption-toggle .cube .bottom{transform:rotateX(-90deg) translateZ(32px)}.gc-assumption-toggle .particle-point{position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:999px;transform:translate(-50%,-50%);background:#a10356;box-shadow:0 0 12px #a10356}.gc-assumption-toggle .info-arrow{position:absolute;left:-70px;top:50%;transform:translateY(-50%);display:flex;align-items:center;opacity:0;animation:assumption-arrow-enter .9s ease forwards .3s}.gc-assumption-toggle .arrow-line{width:34px;height:2px;background:#a10356;box-shadow:0 0 5px #a10356}.gc-assumption-toggle .arrow-head{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid #a10356}.gc-assumption-toggle .infinite-symbol{position:absolute;top:-25px;left:8px;color:#a10356;font-size:1.4rem;font-weight:700;text-shadow:0 0 10px rgba(161,3,86,.45)}.gc-assumption-toggle .chakana-wrapper{position:relative;width:90px;height:90px;transform-style:preserve-3d;transform:rotateX(-30deg) rotateY(45deg);animation:assumption-float 6s ease-in-out infinite}.gc-assumption-toggle .gold-cube{position:absolute;width:42px;height:42px;transform-style:preserve-3d}.gc-assumption-toggle .gold-cube.center{transform:translate(24px,24px)}.gc-assumption-toggle .gold-cube.top-arm{transform:translate(24px,-14px)}.gc-assumption-toggle .gold-cube.bottom-arm{transform:translate(24px,62px)}.gc-assumption-toggle .gold-cube.left-arm{transform:translate(-14px,24px)}.gc-assumption-toggle .gold-cube.right-arm{transform:translate(62px,24px)}.gc-assumption-toggle .gold-cube .face{background:linear-gradient(135deg,#fcd34d 0%,#fbbf24 50%,#d97706 100%);border-color:#0000002e}.gc-assumption-toggle .gold-cube .front{transform:translateZ(21px)}.gc-assumption-toggle .gold-cube .back{transform:rotateY(180deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .right{transform:rotateY(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .left{transform:rotateY(-90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .top{transform:rotateX(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .bottom{transform:rotateX(-90deg) translateZ(21px)}.gc-assumption-toggle .chaos-wrapper{position:relative;width:120px;height:120px;perspective:600px}.gc-assumption-toggle .central-source{position:absolute;left:50%;top:50%;width:22px;height:22px;transform-style:preserve-3d;transform:translate(-50%,-50%);animation:assumption-pulsar 2.1s ease-out infinite}.gc-assumption-toggle .central-source .face{background:#a10356;border:1px solid rgba(255,255,255,.78);box-shadow:0 0 15px #c084fc}.gc-assumption-toggle .central-source .front{transform:translateZ(11px)}.gc-assumption-toggle .central-source .back{transform:rotateY(180deg) translateZ(11px)}.gc-assumption-toggle .central-source .right{transform:rotateY(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .left{transform:rotateY(-90deg) translateZ(11px)}.gc-assumption-toggle .central-source .top{transform:rotateX(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .bottom{transform:rotateX(-90deg) translateZ(11px)}.gc-assumption-toggle .debris-cube{position:absolute;left:50%;top:50%;width:10px;height:10px;transform-style:preserve-3d}.gc-assumption-toggle .debris-cube .face{background:linear-gradient(45deg,#c084fc,#a10356);border:1px solid rgba(255,255,255,.4)}.gc-assumption-toggle .debris-cube .front{transform:translateZ(5px)}.gc-assumption-toggle .debris-cube .back{transform:rotateY(180deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .right{transform:rotateY(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .left{transform:rotateY(-90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .top{transform:rotateX(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .bottom{transform:rotateX(-90deg) translateZ(5px)}.gc-assumption-toggle .d-0{animation:assumption-explode-0 2.1s linear infinite}.gc-assumption-toggle .d-1{animation:assumption-explode-1 2.3s linear infinite .2s}.gc-assumption-toggle .d-2{animation:assumption-explode-2 1.9s linear infinite .4s}.gc-assumption-toggle .d-3{animation:assumption-explode-3 2.4s linear infinite .1s}.gc-assumption-toggle .d-4{animation:assumption-explode-4 2.1s linear infinite .5s}.gc-assumption-toggle .d-5{animation:assumption-explode-5 1.9s linear infinite .25s}.gc-assumption-toggle .d-6{animation:assumption-explode-6 2.25s linear infinite .45s}.gc-assumption-toggle .d-7{animation:assumption-explode-7 2.4s linear infinite .15s}.gc-assumption-toggle .d-8{animation:assumption-explode-8 1.75s linear infinite .65s}.gc-assumption-toggle .d-9{animation:assumption-explode-9 2.5s linear infinite .1s}.gc-assumption-toggle .signal-orbit,.gc-assumption-toggle .field-node{position:relative;width:112px;height:112px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .signal-ring,.gc-assumption-toggle .field-ring{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-ring{top:22px;right:22px;bottom:22px;left:22px;border:2px dashed rgba(255,255,255,.45);animation:assumption-rotate 7s linear infinite}.gc-assumption-toggle .signal-axis{position:absolute;width:100px;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent);transform:rotate(-25deg)}.gc-assumption-toggle .signal-dot,.gc-assumption-toggle .field-core{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-dot{width:14px;height:14px;background:#ffcc66;box-shadow:0 0 18px #ffcc66b3}.gc-assumption-toggle .signal-cube{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#f5d565,#e08e18);box-shadow:0 0 22px #e08e1899}.gc-assumption-toggle .signal-orbit-point .signal-dot{animation:assumption-jitter .22s infinite}.gc-assumption-toggle .signal-orbit-chunk .signal-cube{animation:assumption-tilt 2.8s ease-in-out infinite}.gc-assumption-toggle .field-ring-outer{top:10px;right:10px;bottom:10px;left:10px;border:1px solid rgba(123,245,186,.38)}.gc-assumption-toggle .field-ring-inner{top:28px;right:28px;bottom:28px;left:28px;border:1px dashed rgba(123,245,186,.55);animation:assumption-rotate 9s linear infinite reverse}.gc-assumption-toggle .field-core{width:16px;height:16px;background:#4ade80;box-shadow:0 0 18px #4ade80cc}.gc-assumption-toggle .field-core-chunk{width:30px;height:30px;border-radius:10px;background:linear-gradient(135deg,#4ade80,#16a34a)}.gc-assumption-toggle .field-question{position:absolute;top:12px;right:16px;color:#ffffffd9;font-size:1.4rem;font-weight:700}.gc-assumption-toggle .crt-collapse{animation:assumption-crt-collapse .1s cubic-bezier(.25,.46,.45,.94) forwards}.gc-assumption-toggle .crt-expand{animation:assumption-crt-expand .1s cubic-bezier(.25,.46,.45,.94) forwards}@keyframes assumption-crt-collapse{0%{transform:scaleY(1)}60%{transform:scaleY(.1)}to{transform:scaleY(.005)}}@keyframes assumption-crt-expand{0%{transform:scaleY(.005)}60%{transform:scaleY(.1)}to{transform:scaleY(1)}}@keyframes assumption-slow-spin{0%{transform:rotateX(-20deg) rotateY(0)}to{transform:rotateX(-20deg) rotateY(360deg)}}@keyframes assumption-arrow-enter{0%{opacity:0;transform:translate(-12px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes assumption-float{0%{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}50%{transform:rotateX(-30deg) rotateY(45deg) translateY(-10px)}to{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}}@keyframes assumption-pulsar{0%{transform:translate(-50%,-50%) scale3d(.15,.15,.15) rotate(0);opacity:0}50%{transform:translate(-50%,-50%) scale3d(1.45,1.45,1.45) rotate(180deg);opacity:1}to{transform:translate(-50%,-50%) scale3d(3,3,3) rotate(360deg);opacity:0}}@keyframes assumption-explode-0{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(56px,54px) rotate(360deg)}}@keyframes assumption-explode-1{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-72px,48px) rotate(-180deg)}}@keyframes assumption-explode-2{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(30px,-84px) rotate(90deg)}}@keyframes assumption-explode-3{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-58px,-44px) rotate(-270deg)}}@keyframes assumption-explode-4{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(12px,74px) rotate(45deg)}}@keyframes assumption-explode-5{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-92px,6px) rotate(-45deg)}}@keyframes assumption-explode-6{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(48px,-54px) rotate(120deg)}}@keyframes assumption-explode-7{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-64px,58px) rotate(200deg)}}@keyframes assumption-explode-8{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(74px,18px) rotate(-100deg)}}@keyframes assumption-explode-9{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-26px,-82px) rotate(60deg)}}@keyframes assumption-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes assumption-jitter{0%{transform:translate(0)}25%{transform:translate(1px,1px)}50%{transform:translate(-1px,-1px)}75%{transform:translate(-1px,1px)}to{transform:translate(1px,-1px)}}@keyframes assumption-tilt{0%{transform:rotate(0) scale(1)}50%{transform:rotate(18deg) scale(1.08)}to{transform:rotate(0) scale(1)}}@keyframes assumption-cursor-blink{0%,45%{opacity:1}46%,to{opacity:0}}@keyframes assumption-led-pulse{0%,to{opacity:.5;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}@media (max-width: 900px){.gc-assumption-toggle .component-shell{padding:12px 0}.gc-assumption-toggle .switch-group{gap:12px;padding:0 14px}.gc-assumption-toggle .toggle-track{min-height:50px}.gc-assumption-toggle .action-button{padding:10px 22px}.gc-assumption-toggle .action-button.secondary{padding:6px 36px}.gc-assumption-toggle .result-container{padding:14px}.gc-assumption-toggle .intermediate-result{margin-top:10px;font-size:.68rem}.gc-assumption-toggle .slide-processing{padding:18px 14px 14px}.gc-assumption-toggle .processing-shell,.gc-assumption-toggle .processing-terminal{padding:12px}}.gc-assumption-toggle .visualization-container{background:radial-gradient(circle at 50% 30%,rgba(156,255,197,.12),transparent 42%),linear-gradient(180deg,rgba(9,19,13,.9),rgba(6,12,8,.96))}.gc-assumption-toggle .result-container{background:linear-gradient(180deg,rgba(247,252,248,.92),rgba(220,237,226,.94));border:1px solid rgba(8,33,18,.12);box-shadow:inset 0 1px #ffffff59}.gc-assumption-toggle .summary-box{padding:4px 0}.gc-assumption-toggle .summary-value{color:#0f2d18}.gc-assumption-toggle .intermediate-result{padding:7px 12px;border-radius:999px;color:#d9ffe5;background:linear-gradient(180deg,rgba(7,27,14,.92),rgba(12,40,20,.94));border:1px solid rgba(120,255,154,.18);box-shadow:inset 0 1px #ffffff14,0 8px 20px #0000001f;opacity:1}.gc-assumption-toggle .digital-lattice{position:relative;width:150px;height:150px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .digital-grid{position:absolute;top:20px;right:20px;bottom:20px;left:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;transform:rotate(45deg)}.gc-assumption-toggle .digital-cell{border-radius:10px;background:linear-gradient(135deg,rgba(246,203,77,.25),rgba(201,128,16,.68)),linear-gradient(180deg,rgba(255,255,255,.14),rgba(0,0,0,.1));border:1px solid rgba(255,222,118,.35);box-shadow:inset 0 1px #ffffff1a,0 0 18px #f6b7311f;animation:assumption-digital-flicker 2.6s ease-in-out infinite}.gc-assumption-toggle .digital-cell-core{background:linear-gradient(135deg,rgba(255,235,142,.8),rgba(240,156,22,.92)),linear-gradient(180deg,rgba(255,255,255,.18),rgba(0,0,0,.06));box-shadow:0 0 26px #ffd86ba6,inset 0 0 12px #fff3}.gc-assumption-toggle .digital-cell-0{animation-delay:.05s}.gc-assumption-toggle .digital-cell-1{animation-delay:.25s}.gc-assumption-toggle .digital-cell-2{animation-delay:.55s}.gc-assumption-toggle .digital-cell-3{animation-delay:.35s}.gc-assumption-toggle .digital-cell-4{animation-delay:.12s}.gc-assumption-toggle .digital-cell-5{animation-delay:.68s}.gc-assumption-toggle .digital-cell-6{animation-delay:.44s}.gc-assumption-toggle .digital-cell-7{animation-delay:.2s}.gc-assumption-toggle .digital-cell-8{animation-delay:.78s}.gc-assumption-toggle .digital-core{position:relative;z-index:2;width:54px;height:54px;border-radius:16px;border:1px solid rgba(255,230,136,.45);background:radial-gradient(circle at 35% 35%,rgba(255,248,202,.45),transparent 55%),linear-gradient(145deg,rgba(98,64,8,.92),rgba(236,167,24,.92));box-shadow:0 0 34px #efb83c5c,inset 0 0 20px #fff6ae33;transform:rotate(45deg)}.gc-assumption-toggle .digital-core-dot{position:absolute;top:18px;right:18px;bottom:18px;left:18px;border-radius:12px;background:rgba(255,248,210,.94);box-shadow:0 0 18px #fff5be99}.gc-assumption-toggle .digital-scan{position:absolute;z-index:1;border-radius:999px;background:rgba(145,255,191,.18)}.gc-assumption-toggle .digital-scan-horizontal{width:132px;height:2px;animation:assumption-digital-scan-x 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-scan-vertical{width:2px;height:132px;animation:assumption-digital-scan-y 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-aura{position:absolute;top:6px;right:6px;bottom:6px;left:6px;border-radius:28px;border:1px solid rgba(255,226,118,.18);box-shadow:0 0 34px #f5bc3f26}.gc-assumption-toggle .physics-observatory{position:relative;width:158px;height:158px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .physics-grid{position:absolute;top:10px;right:10px;bottom:10px;left:10px;border-radius:999px;background:radial-gradient(circle,rgba(151,244,209,.09),transparent 58%),repeating-radial-gradient(circle,rgba(255,255,255,.09) 0 1px,transparent 1px 18px);-webkit-mask-image:radial-gradient(circle,black 58%,transparent 78%);mask-image:radial-gradient(circle,black 58%,transparent 78%);opacity:.75}.gc-assumption-toggle .physics-halo{position:absolute;border-radius:999px;border:1px solid rgba(157,253,224,.28)}.gc-assumption-toggle .physics-halo-outer{top:8px;right:8px;bottom:8px;left:8px;animation:assumption-rotate 18s linear infinite}.gc-assumption-toggle .physics-halo-inner{top:28px;right:28px;bottom:28px;left:28px;border-style:dashed;border-color:#76edc68a;animation:assumption-rotate 12s linear infinite reverse}.gc-assumption-toggle .physics-core-shell{position:absolute;width:54px;height:54px;border-radius:999px;background:radial-gradient(circle at 35% 35%,rgba(255,255,255,.4),transparent 52%),linear-gradient(180deg,rgba(27,92,69,.88),rgba(10,36,28,.95));box-shadow:inset 0 0 22px #b2ffe429,0 0 34px #54d9a452}.gc-assumption-toggle .physics-core-shell-chunk{border-radius:18px;transform:rotate(45deg)}.gc-assumption-toggle .physics-core-point{position:absolute;top:17px;right:17px;bottom:17px;left:17px;border-radius:999px;background:radial-gradient(circle,#baffe6 0%,#4ade80 48%,#16825b 100%);box-shadow:0 0 22px #85ffcca6,0 0 42px #5adca242}.gc-assumption-toggle .physics-core-chunk{border-radius:9px}.gc-assumption-toggle .physics-orbit{position:absolute;width:10px;height:10px;border-radius:999px;background:linear-gradient(180deg,#f2fff9,#89ffd0);box-shadow:0 0 16px #89ffd094}.gc-assumption-toggle .physics-orbit-1{animation:assumption-orbit-one 6.4s linear infinite}.gc-assumption-toggle .physics-orbit-2{width:8px;height:8px;background:linear-gradient(180deg,#fff6d7,#ffcf69);box-shadow:0 0 14px #ffcf698c;animation:assumption-orbit-two 8.2s linear infinite reverse}.gc-assumption-toggle .physics-orbit-3{width:6px;height:6px;background:linear-gradient(180deg,#dffcff,#73d4ff);box-shadow:0 0 12px #73d4ff80;animation:assumption-orbit-three 10s linear infinite}.gc-assumption-toggle .physics-question-ring{position:absolute;top:44px;right:44px;bottom:44px;left:44px;display:flex;justify-content:center;align-items:center;border-radius:999px;border:1px dashed rgba(255,241,171,.28)}.gc-assumption-toggle .physics-question{color:#fff8d2f0;font-size:1.2rem;font-weight:700;text-shadow:0 0 12px rgba(255,226,130,.35)}@keyframes assumption-digital-flicker{0%,to{opacity:.72;transform:scale(1)}35%{opacity:1;transform:scale(1.04)}60%{opacity:.84;transform:scale(.98)}}@keyframes assumption-digital-scan-x{0%,to{transform:translateY(-48px);opacity:.2}50%{transform:translateY(48px);opacity:.9}}@keyframes assumption-digital-scan-y{0%,to{transform:translate(-48px);opacity:.18}50%{transform:translate(48px);opacity:.88}}@keyframes assumption-orbit-one{0%{transform:rotate(0) translate(54px) rotate(0)}to{transform:rotate(360deg) translate(54px) rotate(-360deg)}}@keyframes assumption-orbit-two{0%{transform:rotate(40deg) translate(34px) translateY(-14px) rotate(0)}to{transform:rotate(400deg) translate(34px) translateY(-14px) rotate(-360deg)}}@keyframes assumption-orbit-three{0%{transform:rotate(-20deg) translate(64px) translateY(4px) rotate(0)}to{transform:rotate(340deg) translate(64px) translateY(4px) rotate(-360deg)}}')),document.head.appendChild(t)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})(); +import { jsx as A, jsxs as B } from "react/jsx-runtime"; +import { useState as h, useRef as O, useEffect as a } from "react"; +const HA = "data:image/png;base64,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", cA = "glitch:play-sound", QA = "glitch:stop-sound", FA = "glitch:host:", P = { + click: "ui.button_click", + hover: "ui.button_hover", + computeStart: "machine.compute_start", + computeStep: "machine.compute_step", + computeDone: "machine.compute_done", + verdictStable: "machine.verdict_stable", + verdictAlert: "machine.verdict_alert" +}; +function J(w, C) { + typeof window > "u" || window.dispatchEvent(new CustomEvent(w, { detail: C })); +} +function o(w, C, D) { + try { + if (w != null && w.playSound) { + w.playSound(C, D); + return; + } + } catch { + } + J(cA, { id: C, payload: D }); +} +function Z(w, C, D) { + try { + if (w != null && w.stopSound) { + w.stopSound(C, D); + return; + } + } catch { + } + J(QA, { id: C, payload: D }); +} +function z(w, C, D) { + try { + if (w != null && w.emit) { + w.emit(C, D); + return; + } + } catch { + } + J(`${FA}${C}`, D); +} +const v = { + continuousUniverse: !0, + infinitePrecision: !0, + chunkParticles: !1 +}, E = { + "000": { + outcome: "Paradoxical", + intermediate: "Very very much information.", + description: "Space is supposed to be discrete, but each cell must contain ar arbitrary amount of information.", + visualClass: "paradox-point", + tone: "paradox" + }, + "001": { + outcome: "Digital Physics", + intermediate: "Instruction programs remain finite.", + description: "Stable but requires continuous rotational symmetry to be emergent", + visualClass: "stable-chunk", + tone: "stable" + }, + "010": { + outcome: "#1 Memory Paradox", + intermediate: "Move sets can scale to infinite length", + description: "Infinte memory per cell", + visualClass: "paradox-point", + tone: "paradox" + }, + "011": { + outcome: "#2 Memory Paradox", + intermediate: "Move sets can scale to infinite length", + description: "Chunky particles must grow without bound to hold infinite move set", + visualClass: "paradox-chunk", + tone: "paradox" + }, + 100: { + outcome: "Paradoxical", + intermediate: "Chunky geometry implies discrete space", + description: "A continuous universe with chunky particles spanning fundamental cells is a constadiction.", + visualClass: "non-standard-particle-point", + tone: "warning" + }, + 101: { + outcome: "Paradoxical", + intermediate: "The geometry breaks isotropy.", + description: "Continuous universe plus chunk particles that imply discrete space is a constradiction.", + visualClass: "non-standard-particle-chunk", + tone: "warning" + }, + 110: { + outcome: "Standard Physics", + intermediate: "The model remains isotropic.", + description: "Continuous space with infinite precision preserves the canonical picture.", + visualClass: "standard-particle-point", + tone: "stable" + }, + 111: { + outcome: "Contradictory", + intermediate: "Continuous universe cannot be combined with chunk particles.", + description: "Chunky cannot be not chunky", + visualClass: "standard-particle-chunk", + tone: "uncertain" + } +}, p = { + "000": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Point state exceeds single-cell information budget" }, + { label: "Verdict trace", value: "Single cell must have arbitrary information capacity" } + ], + "001": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Chunk particle geometry engaged" }, + { label: "Consistency check", value: "State remains compressible under finite instruction length" }, + { label: "Verdict trace", value: "Digital physics interpretation remains internally stable" } + ], + "010": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Each lattice cell requires unbounded memory" }, + { label: "Verdict trace", value: "Inconsistent with isotropy" } + ], + "011": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Chunk particle" }, + { label: "Consistency check", value: "Particles grow to express information" }, + { label: "Verdict trace", value: "Chunk particles grow to infinite size" } + ], + 100: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Severely demotivated" }, + { label: "Verdict trace", value: "No explanation for rejecting CRS. Smell detected." } + ], + 101: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Chunk particle geometry engaged" }, + { label: "Consistency check", value: "Space is quantized but cells infinitely small" }, + { label: "Verdict trace", value: "Non-standard hybrid geometry. Smell detected" } + ], + 110: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Canonical isotropic field picture remains intact" }, + { label: "Verdict trace", value: "Standard physics baseline recovered successfully" } + ], + 111: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Chunk particle geometry engaged" }, + { label: "Consistency check", value: "Inconsistent." }, + { label: "Verdict trace", value: "Chunk particle cannot be not chunky" } + ] +}; +function r(w, C) { + return typeof w == "boolean" ? w : C; +} +function f(w) { + return { + continuousUniverse: r(w == null ? void 0 : w.continuousUniverse, v.continuousUniverse), + infinitePrecision: r(w == null ? void 0 : w.infinitePrecision, v.infinitePrecision), + chunkParticles: r(w == null ? void 0 : w.chunkParticles, v.chunkParticles) + }; +} +function t(w) { + return [ + w.continuousUniverse ? "1" : "0", + w.infinitePrecision ? "1" : "0", + w.chunkParticles ? "1" : "0" + ].join(""); +} +function R(w) { + const C = w.continuousUniverse ? "Continuous universe" : "Discrete universe", D = w.infinitePrecision ? "Infinite precision" : "Finite precision", s = w.chunkParticles ? "Chunk particles" : "Point particles"; + return `${C} + ${D} + ${s}`; +} +function PA(w) { + return w.tone === "stable" ? 100 : w.tone === "uncertain" ? 60 : w.tone === "warning" ? 40 : 20; +} +function MA({ visualClass: w }) { + return w === "paradox-point" ? /* @__PURE__ */ B("div", { className: "cube-wrapper", children: [ + /* @__PURE__ */ B("div", { className: "cube", children: [ + /* @__PURE__ */ A("div", { className: "face front" }), + /* @__PURE__ */ A("div", { className: "face back" }), + /* @__PURE__ */ A("div", { className: "face right" }), + /* @__PURE__ */ A("div", { className: "face left" }), + /* @__PURE__ */ A("div", { className: "face top" }), + /* @__PURE__ */ A("div", { className: "face bottom" }), + /* @__PURE__ */ A("div", { className: "particle-point" }) + ] }), + /* @__PURE__ */ B("div", { className: "info-arrow", children: [ + /* @__PURE__ */ A("div", { className: "arrow-line" }), + /* @__PURE__ */ A("div", { className: "arrow-head" }), + /* @__PURE__ */ A("span", { className: "infinite-symbol", children: "∞" }) + ] }) + ] }) : w === "stable-chunk" ? /* @__PURE__ */ B("div", { className: "digital-lattice", children: [ + /* @__PURE__ */ A("div", { className: "digital-grid", children: Array.from({ length: 9 }, (C, D) => /* @__PURE__ */ A( + "span", + { + className: `digital-cell digital-cell-${D}${D === 4 ? " digital-cell-core" : ""}` + }, + D + )) }), + /* @__PURE__ */ A("div", { className: "digital-core", children: /* @__PURE__ */ A("span", { className: "digital-core-dot" }) }), + /* @__PURE__ */ A("div", { className: "digital-scan digital-scan-horizontal" }), + /* @__PURE__ */ A("div", { className: "digital-scan digital-scan-vertical" }), + /* @__PURE__ */ A("div", { className: "digital-aura" }) + ] }) : w === "paradox-chunk" ? /* @__PURE__ */ B("div", { className: "chaos-wrapper", children: [ + /* @__PURE__ */ B("div", { className: "central-source", children: [ + /* @__PURE__ */ A("div", { className: "face front" }), + /* @__PURE__ */ A("div", { className: "face back" }), + /* @__PURE__ */ A("div", { className: "face right" }), + /* @__PURE__ */ A("div", { className: "face left" }), + /* @__PURE__ */ A("div", { className: "face top" }), + /* @__PURE__ */ A("div", { className: "face bottom" }) + ] }), + Array.from({ length: 10 }, (C, D) => /* @__PURE__ */ B("div", { className: `debris-cube d-${D}`, children: [ + /* @__PURE__ */ A("div", { className: "face front" }), + /* @__PURE__ */ A("div", { className: "face back" }), + /* @__PURE__ */ A("div", { className: "face right" }), + /* @__PURE__ */ A("div", { className: "face left" }), + /* @__PURE__ */ A("div", { className: "face top" }), + /* @__PURE__ */ A("div", { className: "face bottom" }) + ] }, D)) + ] }) : w === "non-standard-particle-point" ? /* @__PURE__ */ B("div", { className: "signal-orbit signal-orbit-point", children: [ + /* @__PURE__ */ A("div", { className: "signal-ring" }), + /* @__PURE__ */ A("div", { className: "signal-dot" }), + /* @__PURE__ */ A("div", { className: "signal-axis" }) + ] }) : w === "non-standard-particle-chunk" ? /* @__PURE__ */ B("div", { className: "signal-orbit signal-orbit-chunk", children: [ + /* @__PURE__ */ A("div", { className: "signal-ring" }), + /* @__PURE__ */ A("div", { className: "signal-cube" }), + /* @__PURE__ */ A("div", { className: "signal-axis" }) + ] }) : w === "standard-particle-point" ? /* @__PURE__ */ B("div", { className: "physics-observatory", children: [ + /* @__PURE__ */ A("div", { className: "physics-grid" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-outer" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-inner" }), + /* @__PURE__ */ A("div", { className: "physics-core-shell", children: /* @__PURE__ */ A("div", { className: "physics-core-point" }) }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-1" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-2" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-3" }) + ] }) : /* @__PURE__ */ B("div", { className: "physics-observatory physics-observatory-chunk", children: [ + /* @__PURE__ */ A("div", { className: "physics-grid" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-outer" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-inner" }), + /* @__PURE__ */ A("div", { className: "physics-core-shell physics-core-shell-chunk", children: /* @__PURE__ */ A("div", { className: "physics-core-point physics-core-chunk" }) }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-1" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-2" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-3" }), + /* @__PURE__ */ A("div", { className: "physics-question-ring", children: /* @__PURE__ */ A("span", { className: "physics-question", children: "?" }) }) + ] }); +} +function xA({ + config: w, + onComplete: C, + onProgress: D, + theme: s, + className: d, + host: c +}) { + const [G, S] = h(() => f(w.params)), [x, q] = h("splash"), [T, N] = h(""), [j, $] = h(() => E[t(f(w.params))]), [H, _] = h(() => t(f(w.params))), [X, AA] = h( + () => R(f(w.params)) + ), [wA, V] = h([]), [DA, K] = h(""), k = O([]), i = O(c), b = O(C), W = O(D); + a(() => { + S(f(w.params)); + }, [w.params]), a(() => { + i.current = c, b.current = C, W.current = D; + }, [c, C, D]), a(() => { + if (x !== "processing") + return; + const g = p[H] ?? []; + let Y = !1; + V([]), K(""); + const Q = (e, y) => { + if (Y) + return; + if (e >= g.length) { + L(() => { + if (Y) + return; + const F = E[H]; + o(i.current, P.computeDone, { state: H }), I("result", () => { + var m; + (m = W.current) == null || m.call(W, 100), o( + i.current, + F.tone === "stable" ? P.verdictStable : P.verdictAlert, + { state: H, outcome: F.outcome } + ), z(i.current, "verdict-ready", { + state: H, + outcome: F.outcome, + tone: F.tone + }), b.current({ + success: !0, + score: PA(F), + data: { + assumptions: X, + state: H, + outcome: F.outcome, + intermediate: F.intermediate, + description: F.description, + processingTrace: p[H].map((u) => `${u.label}: ${u.value}`) + } + }); + }); + }, 520); + return; + } + const U = `${g[e].label}: ${g[e].value}`; + if (y <= U.length) { + y === 0 && o(i.current, P.computeStep, { state: H, lineIndex: e }), K(U.slice(0, y)), L(() => Q(e, y + 1), 24); + return; + } + V((F) => [...F, U]), K(""), e === g.length - 1 && Z(i.current, P.computeStep, { state: H, lineIndex: e }), L(() => Q(e + 1, 0), 170); + }; + return L(() => Q(0, 0), 180), () => { + Y = !0, Z(i.current, P.computeStep, { state: H }); + }; + }, [X, H, x]), a(() => () => { + n(); + }, []); + function n() { + for (const g of k.current) + window.clearTimeout(g); + k.current = []; + } + function L(g, Y) { + const Q = window.setTimeout(g, Y); + k.current.push(Q); + } + function I(g, Y) { + n(), N("crt-collapse"), L(() => { + q(g), Y == null || Y(), N("crt-expand"), L(() => { + N(""); + }, 110); + }, 110); + } + function l(g, Y) { + S((Q) => ({ ...Q, [g]: Y })), o(c, P.click, { control: g, value: Y }); + } + function M(g) { + o(c, P.hover, { target: g }); + } + function gA() { + z(c, "session-started", { component: w.name, id: w.id }), D == null || D(10), I("controls"); + } + function BA() { + const g = t(G), Y = E[g], Q = R(G); + _(g), AA(Q), $(Y), o(c, P.computeStart, { state: g }), z(c, "processing-started", { + state: g, + assumptions: Q + }), D == null || D(45), I("processing", () => { + D == null || D(70); + }); + } + function sA() { + n(), Z(c, P.computeStep, { state: H }), z(c, "returned-to-controls", { state: H }), D == null || D(20), I("controls"); + } + R(G); + const CA = x === "result" && j.visualClass.includes("paradox"), YA = { + "--gc-primary": (s == null ? void 0 : s.primary) || "#248a00", + "--gc-accent": (s == null ? void 0 : s.accent) || "#1c6a00", + "--gc-bg": (s == null ? void 0 : s.bg) || "#ffffff", + "--gc-bg-secondary": (s == null ? void 0 : s.bgSecondary) || "#616161", + "--gc-text": (s == null ? void 0 : s.text) || "#0f172a", + "--gc-text-muted": (s == null ? void 0 : s.textMuted) || "#eaffd8", + "--gc-border": (s == null ? void 0 : s.border) || "rgba(255,255,255,0.12)", + "--assumption-frame-image": `url(${HA})` + }; + return /* @__PURE__ */ A("div", { className: `gc-assumption-toggle ${d || ""}`.trim(), style: YA, children: /* @__PURE__ */ A("div", { className: "component-shell", children: /* @__PURE__ */ A("div", { className: "main-wrapper", children: /* @__PURE__ */ A("div", { className: `crt-screen ${CA ? "paradox-errors" : ""}`, children: /* @__PURE__ */ B("div", { className: `slides-wrapper ${T}`, children: [ + x === "splash" && /* @__PURE__ */ A("div", { className: "slide slide-splash", children: /* @__PURE__ */ B("div", { className: "splash-content", children: [ + /* @__PURE__ */ A("h1", { children: "Foundational Assumption Recombinator Tool" }), + /* @__PURE__ */ A("h2", { children: "v1.0" }), + /* @__PURE__ */ A( + "button", + { + type: "button", + className: "action-button", + onClick: gA, + onMouseEnter: () => M("initialize"), + onFocus: () => M("initialize"), + children: "Initialize" + } + ) + ] }) }), + x === "controls" && /* @__PURE__ */ B("div", { className: "slide slide-controls", children: [ + /* @__PURE__ */ A("div", { className: "widget-header", children: /* @__PURE__ */ A("h1", { children: "Settings" }) }), + /* @__PURE__ */ B("div", { className: "switch-group", children: [ + /* @__PURE__ */ B("div", { className: "switch-item", children: [ + /* @__PURE__ */ A( + "input", + { + id: `${w.id}-toggle-universe`, + className: "switch-input", + type: "checkbox", + checked: G.continuousUniverse, + onChange: (g) => l("continuousUniverse", g.target.checked) + } + ), + /* @__PURE__ */ B( + "label", + { + className: "toggle-track", + htmlFor: `${w.id}-toggle-universe`, + onMouseEnter: () => M("toggle-universe"), + children: [ + /* @__PURE__ */ A("span", { className: "option-left", children: "Discrete Universe" }), + /* @__PURE__ */ A("span", { className: "option-right", children: "Continuous Universe" }) + ] + } + ) + ] }), + /* @__PURE__ */ B("div", { className: "switch-item", children: [ + /* @__PURE__ */ A( + "input", + { + id: `${w.id}-toggle-precision`, + className: "switch-input", + type: "checkbox", + checked: G.infinitePrecision, + onChange: (g) => l("infinitePrecision", g.target.checked) + } + ), + /* @__PURE__ */ B( + "label", + { + className: "toggle-track", + htmlFor: `${w.id}-toggle-precision`, + onMouseEnter: () => M("toggle-precision"), + children: [ + /* @__PURE__ */ A("span", { className: "option-left", children: "Finite Precision" }), + /* @__PURE__ */ A("span", { className: "option-right", children: "Infinite Precision" }) + ] + } + ) + ] }), + /* @__PURE__ */ B("div", { className: "switch-item", children: [ + /* @__PURE__ */ A( + "input", + { + id: `${w.id}-toggle-particles`, + className: "switch-input", + type: "checkbox", + checked: G.chunkParticles, + onChange: (g) => l("chunkParticles", g.target.checked) + } + ), + /* @__PURE__ */ B( + "label", + { + className: "toggle-track", + htmlFor: `${w.id}-toggle-particles`, + onMouseEnter: () => M("toggle-particles"), + children: [ + /* @__PURE__ */ A("span", { className: "option-left", children: "Point Particles" }), + /* @__PURE__ */ A("span", { className: "option-right", children: "Chunk Particles" }) + ] + } + ) + ] }) + ] }), + /* @__PURE__ */ A( + "button", + { + type: "button", + className: "action-button", + onClick: BA, + onMouseEnter: () => M("simulate"), + onFocus: () => M("simulate"), + children: "Simulate" + } + ) + ] }), + x === "result" && /* @__PURE__ */ B("div", { className: "slide slide-result", children: [ + /* @__PURE__ */ B("div", { className: "bottom-container", children: [ + /* @__PURE__ */ A("div", { className: "visualization-container", children: /* @__PURE__ */ A("div", { className: `art-canvas ${j.visualClass}`, children: /* @__PURE__ */ A(MA, { visualClass: j.visualClass }) }) }), + /* @__PURE__ */ B("div", { className: "result-container", children: [ + /* @__PURE__ */ A("div", { className: "summary-box", children: /* @__PURE__ */ A("span", { className: `result-value result-${j.tone}`, children: j.outcome }) }), + /* @__PURE__ */ A("div", { className: "summary-box", children: /* @__PURE__ */ A("div", { className: "intermediate-result", children: j.intermediate }) }), + /* @__PURE__ */ A("span", { className: "result-description", children: j.description }) + ] }) + ] }), + /* @__PURE__ */ A( + "button", + { + type: "button", + className: "action-button secondary", + onClick: sA, + onMouseEnter: () => M("back"), + onFocus: () => M("back"), + children: "Back" + } + ) + ] }), + x === "processing" && /* @__PURE__ */ A("div", { className: "slide slide-processing", children: /* @__PURE__ */ B("div", { className: "processing-shell", children: [ + /* @__PURE__ */ B("div", { className: "processing-header", children: [ + /* @__PURE__ */ A("span", { className: "processing-led" }), + /* @__PURE__ */ A("h2", { children: "Computing Assumption Matrix" }) + ] }), + /* @__PURE__ */ A("div", { className: "processing-subtitle", children: "Applying Constructor Theoretic Constraints" }), + /* @__PURE__ */ B("div", { className: "processing-terminal", children: [ + wA.map((g, Y) => /* @__PURE__ */ B("div", { className: "processing-line", children: [ + /* @__PURE__ */ A("span", { className: "processing-prompt", children: ">" }), + /* @__PURE__ */ A("span", { children: g }) + ] }, `${g}-${Y}`)), + /* @__PURE__ */ B("div", { className: "processing-line processing-line-active", children: [ + /* @__PURE__ */ A("span", { className: "processing-prompt", children: ">" }), + /* @__PURE__ */ A("span", { children: DA }), + /* @__PURE__ */ A("span", { className: "processing-cursor" }) + ] }) + ] }) + ] }) }) + ] }) }) }) }) }); +} +const jA = { + name: "assumption-toggle", + displayName: "Assumption Toggle", + version: "1.0.0", + paramSchema: { + continuousUniverse: { + type: "boolean", + label: "Continuous Universe", + description: "Toggle between a discrete and continuous universe model.", + default: !0 + }, + infinitePrecision: { + type: "boolean", + label: "Infinite Precision", + description: "Toggle between finite and infinite precision.", + default: !0 + }, + chunkParticles: { + type: "boolean", + label: "Chunk Particles", + description: "Toggle between point particles and chunk particles.", + default: !1 + } + }, + defaultParams: { + continuousUniverse: !0, + infinitePrecision: !0, + chunkParticles: !1 + } +}; +export { + xA as default, + jA as metadata +}; +//# sourceMappingURL=assumption-toggle.js.map diff --git a/dist/glitch/glitch_assumption_toggle/assumption-toggle.js.map b/dist/glitch/glitch_assumption_toggle/assumption-toggle.js.map new file mode 100644 index 0000000..d52bfd3 --- /dev/null +++ b/dist/glitch/glitch_assumption_toggle/assumption-toggle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assumption-toggle.js","sources":["../technoborder.png","../src/hostBridge.ts","../src/Component.tsx","../src/index.tsx"],"sourcesContent":["export default \"data:image/png;base64,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\"","import type { GlitchHostBridge } from './types';\n\nexport const HOST_SOUND_EVENT = 'glitch:play-sound';\nexport const HOST_STOP_SOUND_EVENT = 'glitch:stop-sound';\nexport const HOST_EMIT_PREFIX = 'glitch:host:';\n\nexport const SOUND_IDS = {\n click: 'ui.button_click',\n hover: 'ui.button_hover',\n computeStart: 'machine.compute_start',\n computeStep: 'machine.compute_step',\n computeDone: 'machine.compute_done',\n verdictStable: 'machine.verdict_stable',\n verdictAlert: 'machine.verdict_alert'\n} as const;\n\nexport type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS];\n\nfunction dispatchWindowEvent(type: string, detail: T) {\n if (typeof window === 'undefined') return;\n window.dispatchEvent(new CustomEvent(type, { detail }));\n}\n\nexport function safePlaySound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.playSound) {\n host.playSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_SOUND_EVENT, { id, payload });\n}\n\nexport function safeStopSound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.stopSound) {\n host.stopSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_STOP_SOUND_EVENT, { id, payload });\n}\n\nexport function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown) {\n try {\n if (host?.emit) {\n host.emit(type, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(`${HOST_EMIT_PREFIX}${type}`, payload);\n}\n","import { useEffect, useRef, useState, type CSSProperties } from 'react';\nimport frameImage from '../technoborder.png';\nimport { SOUND_IDS, safeEmit, safePlaySound, safeStopSound } from './hostBridge';\nimport type { GlitchComponentProps } from './types';\n\ntype Screen = 'splash' | 'controls' | 'processing' | 'result';\ntype ProcessingLine = {\n label: string;\n value: string;\n};\ntype TransitionState = '' | 'crt-collapse' | 'crt-expand';\ntype VisualClass =\n | 'paradox-point'\n | 'stable-chunk'\n | 'paradox-chunk'\n | 'non-standard-particle-point'\n | 'non-standard-particle-chunk'\n | 'standard-particle-point'\n | 'standard-particle-chunk';\ntype OutcomeTone = 'stable' | 'warning' | 'paradox' | 'uncertain';\n\ntype ToggleState = {\n continuousUniverse: boolean;\n infinitePrecision: boolean;\n chunkParticles: boolean;\n};\n\ntype OutcomeDefinition = {\n outcome: string;\n description: string;\n intermediate: string;\n visualClass: VisualClass;\n tone: OutcomeTone;\n};\n\nconst DEFAULT_STATE: ToggleState = {\n continuousUniverse: true,\n infinitePrecision: true,\n chunkParticles: false\n};\n\nconst OUTCOMES: Record = {\n '000': {\n outcome: 'Paradoxical',\n intermediate: 'Very very much information.',\n description: 'Space is supposed to be discrete, but each cell must contain ar arbitrary amount of information.',\n visualClass: 'paradox-point',\n tone: 'paradox'\n },\n '001': {\n outcome: 'Digital Physics',\n intermediate: 'Instruction programs remain finite.',\n description: 'Stable but requires continuous rotational symmetry to be emergent',\n visualClass: 'stable-chunk',\n tone: 'stable'\n },\n '010': {\n outcome: '#1 Memory Paradox',\n intermediate: 'Move sets can scale to infinite length',\n description: 'Infinte memory per cell',\n visualClass: 'paradox-point',\n tone: 'paradox'\n },\n '011': {\n outcome: '#2 Memory Paradox',\n intermediate: 'Move sets can scale to infinite length',\n description: 'Chunky particles must grow without bound to hold infinite move set',\n visualClass: 'paradox-chunk',\n tone: 'paradox'\n },\n '100': {\n outcome: 'Paradoxical',\n intermediate: 'Chunky geometry implies discrete space',\n description: 'A continuous universe with chunky particles spanning fundamental cells is a constadiction.',\n visualClass: 'non-standard-particle-point',\n tone: 'warning'\n },\n '101': {\n outcome: 'Paradoxical',\n intermediate: 'The geometry breaks isotropy.',\n description: 'Continuous universe plus chunk particles that imply discrete space is a constradiction.',\n visualClass: 'non-standard-particle-chunk',\n tone: 'warning'\n },\n '110': {\n outcome: 'Standard Physics',\n intermediate: 'The model remains isotropic.',\n description: 'Continuous space with infinite precision preserves the canonical picture.',\n visualClass: 'standard-particle-point',\n tone: 'stable'\n },\n '111': {\n outcome: 'Contradictory',\n intermediate: 'Continuous universe cannot be combined with chunk particles.',\n description: 'Chunky cannot be not chunky',\n visualClass: 'standard-particle-chunk',\n tone: 'uncertain'\n }\n};\n\nconst PROCESSING_LOGS: Record = {\n \"000\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Point state exceeds single-cell information budget\" },\n { label: \"Verdict trace\", value: \"Single cell must have arbitrary information capacity\" }\n ],\n \"001\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Chunk particle geometry engaged\" },\n { label: \"Consistency check\", value: \"State remains compressible under finite instruction length\" },\n { label: \"Verdict trace\", value: \"Digital physics interpretation remains internally stable\" }\n ],\n \"010\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Each lattice cell requires unbounded memory\" },\n { label: \"Verdict trace\", value: \"Inconsistent with isotropy\" }\n ],\n \"011\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Chunk particle\" },\n { label: \"Consistency check\", value: \"Particles grow to express information\" },\n { label: \"Verdict trace\", value: \"Chunk particles grow to infinite size\" }\n ],\n \"100\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Severely demotivated\" },\n { label: \"Verdict trace\", value: \"No explanation for rejecting CRS. Smell detected.\" }\n ],\n \"101\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Chunk particle geometry engaged\" },\n { label: \"Consistency check\", value: \"Space is quantized but cells infinitely small\" },\n { label: \"Verdict trace\", value: \"Non-standard hybrid geometry. Smell detected\" }\n ],\n \"110\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Canonical isotropic field picture remains intact\" },\n { label: \"Verdict trace\", value: \"Standard physics baseline recovered successfully\" }\n ],\n \"111\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Chunk particle geometry engaged\" },\n { label: \"Consistency check\", value: \"Inconsistent.\" },\n { label: \"Verdict trace\", value: \"Chunk particle cannot be not chunky\" }\n ]\n};\n\nfunction coerceBoolean(value: unknown, fallback: boolean) {\n if (typeof value === 'boolean') return value;\n return fallback;\n}\n\nfunction readToggleState(params: Record | undefined): ToggleState {\n return {\n continuousUniverse: coerceBoolean(params?.continuousUniverse, DEFAULT_STATE.continuousUniverse),\n infinitePrecision: coerceBoolean(params?.infinitePrecision, DEFAULT_STATE.infinitePrecision),\n chunkParticles: coerceBoolean(params?.chunkParticles, DEFAULT_STATE.chunkParticles)\n };\n}\n\nfunction buildStateKey(state: ToggleState) {\n return [\n state.continuousUniverse ? '1' : '0',\n state.infinitePrecision ? '1' : '0',\n state.chunkParticles ? '1' : '0'\n ].join('');\n}\n\nfunction buildAssumptionsText(state: ToggleState) {\n const universe = state.continuousUniverse ? 'Continuous universe' : 'Discrete universe';\n const precision = state.infinitePrecision ? 'Infinite precision' : 'Finite precision';\n const particles = state.chunkParticles ? 'Chunk particles' : 'Point particles';\n return `${universe} + ${precision} + ${particles}`;\n}\n\nfunction getScore(outcome: OutcomeDefinition) {\n if (outcome.tone === 'stable') return 100;\n if (outcome.tone === 'uncertain') return 60;\n if (outcome.tone === 'warning') return 40;\n return 20;\n}\n\nfunction Visualization({ visualClass }: { visualClass: VisualClass }) {\n if (visualClass === 'paradox-point') {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n );\n }\n\n if (visualClass === 'stable-chunk') {\n return (\n
\n
\n {Array.from({ length: 9 }, (_, index) => (\n \n ))}\n
\n
\n \n
\n
\n
\n
\n
\n );\n }\n\n if (visualClass === 'paradox-chunk') {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n {Array.from({ length: 10 }, (_, index) => (\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n );\n }\n\n if (visualClass === 'non-standard-particle-point') {\n return (\n
\n
\n
\n
\n
\n );\n }\n\n if (visualClass === 'non-standard-particle-chunk') {\n return (\n
\n
\n
\n
\n
\n );\n }\n\n if (visualClass === 'standard-particle-point') {\n return (\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n );\n }\n\n return (\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n ?\n
\n
\n );\n}\n\nexport default function AssumptionToggle({\n config,\n onComplete,\n onProgress,\n theme,\n className,\n host\n}: GlitchComponentProps) {\n const [toggleState, setToggleState] = useState(() => readToggleState(config.params));\n const [screen, setScreen] = useState('splash');\n const [transitionState, setTransitionState] = useState('');\n const [result, setResult] = useState(() => OUTCOMES[buildStateKey(readToggleState(config.params))]);\n const [processingKey, setProcessingKey] = useState(() => buildStateKey(readToggleState(config.params)));\n const [processingAssumptions, setProcessingAssumptions] = useState(() =>\n buildAssumptionsText(readToggleState(config.params))\n );\n const [completedLines, setCompletedLines] = useState([]);\n const [activeLine, setActiveLine] = useState('');\n const timeoutsRef = useRef([]);\n const hostRef = useRef(host);\n const onCompleteRef = useRef(onComplete);\n const onProgressRef = useRef(onProgress);\n\n useEffect(() => {\n setToggleState(readToggleState(config.params));\n }, [config.params]);\n\n useEffect(() => {\n hostRef.current = host;\n onCompleteRef.current = onComplete;\n onProgressRef.current = onProgress;\n }, [host, onComplete, onProgress]);\n\n useEffect(() => {\n if (screen !== 'processing') return;\n\n const lines = PROCESSING_LOGS[processingKey] ?? [];\n let cancelled = false;\n\n setCompletedLines([]);\n setActiveLine('');\n\n const typeLine = (lineIndex: number, charIndex: number) => {\n if (cancelled) return;\n\n if (lineIndex >= lines.length) {\n queueTimeout(() => {\n if (cancelled) return;\n const finalResult = OUTCOMES[processingKey];\n safePlaySound(hostRef.current, SOUND_IDS.computeDone, { state: processingKey });\n runTransition('result', () => {\n onProgressRef.current?.(100);\n safePlaySound(\n hostRef.current,\n finalResult.tone === 'stable' ? SOUND_IDS.verdictStable : SOUND_IDS.verdictAlert,\n { state: processingKey, outcome: finalResult.outcome }\n );\n safeEmit(hostRef.current, 'verdict-ready', {\n state: processingKey,\n outcome: finalResult.outcome,\n tone: finalResult.tone\n });\n onCompleteRef.current({\n success: true,\n score: getScore(finalResult),\n data: {\n assumptions: processingAssumptions,\n state: processingKey,\n outcome: finalResult.outcome,\n intermediate: finalResult.intermediate,\n description: finalResult.description,\n processingTrace: PROCESSING_LOGS[processingKey].map((entry) => `${entry.label}: ${entry.value}`)\n }\n });\n });\n }, 520);\n return;\n }\n\n const fullLine = `${lines[lineIndex].label}: ${lines[lineIndex].value}`;\n\n if (charIndex <= fullLine.length) {\n if (charIndex === 0) {\n safePlaySound(hostRef.current, SOUND_IDS.computeStep, { state: processingKey, lineIndex });\n }\n setActiveLine(fullLine.slice(0, charIndex));\n queueTimeout(() => typeLine(lineIndex, charIndex + 1), 24);\n return;\n }\n\n setCompletedLines((current) => [...current, fullLine]);\n setActiveLine('');\n if (lineIndex === lines.length - 1) {\n safeStopSound(hostRef.current, SOUND_IDS.computeStep, { state: processingKey, lineIndex });\n }\n queueTimeout(() => typeLine(lineIndex + 1, 0), 170);\n };\n\n queueTimeout(() => typeLine(0, 0), 180);\n\n return () => {\n cancelled = true;\n safeStopSound(hostRef.current, SOUND_IDS.computeStep, { state: processingKey });\n };\n }, [processingAssumptions, processingKey, screen]);\n\n useEffect(() => {\n return () => {\n clearQueuedTimeouts();\n };\n }, []);\n\n function clearQueuedTimeouts() {\n for (const timeout of timeoutsRef.current) {\n window.clearTimeout(timeout);\n }\n timeoutsRef.current = [];\n }\n\n function queueTimeout(callback: () => void, delay: number) {\n const timeout = window.setTimeout(callback, delay);\n timeoutsRef.current.push(timeout);\n }\n\n function runTransition(nextScreen: Screen, onSwapped?: () => void) {\n clearQueuedTimeouts();\n setTransitionState('crt-collapse');\n queueTimeout(() => {\n setScreen(nextScreen);\n onSwapped?.();\n setTransitionState('crt-expand');\n queueTimeout(() => {\n setTransitionState('');\n }, 110);\n }, 110);\n }\n\n function setToggle(key: K, value: ToggleState[K]) {\n setToggleState(current => ({ ...current, [key]: value }));\n safePlaySound(host, SOUND_IDS.click, { control: key, value });\n }\n\n function handleUiHover(target: string) {\n safePlaySound(host, SOUND_IDS.hover, { target });\n }\n\n function handleInitialize() {\n safeEmit(host, 'session-started', { component: config.name, id: config.id });\n onProgress?.(10);\n runTransition('controls');\n }\n\n function handleSimulate() {\n const nextKey = buildStateKey(toggleState);\n const nextResult = OUTCOMES[nextKey];\n const nextAssumptions = buildAssumptionsText(toggleState);\n setProcessingKey(nextKey);\n setProcessingAssumptions(nextAssumptions);\n setResult(nextResult);\n safePlaySound(host, SOUND_IDS.computeStart, { state: nextKey });\n safeEmit(host, 'processing-started', {\n state: nextKey,\n assumptions: nextAssumptions\n });\n onProgress?.(45);\n runTransition('processing', () => {\n onProgress?.(70);\n });\n }\n\n function handleBack() {\n clearQueuedTimeouts();\n safeStopSound(host, SOUND_IDS.computeStep, { state: processingKey });\n safeEmit(host, 'returned-to-controls', { state: processingKey });\n onProgress?.(20);\n runTransition('controls');\n }\n\n const assumptionsText = buildAssumptionsText(toggleState);\n const showParadoxScreen = screen === 'result' && result.visualClass.includes('paradox');\n const rootStyle = {\n '--gc-primary': theme?.primary || '#248a00',\n '--gc-accent': theme?.accent || '#1c6a00',\n '--gc-bg': theme?.bg || '#ffffff',\n '--gc-bg-secondary': theme?.bgSecondary || '#616161',\n '--gc-text': theme?.text || '#0f172a',\n '--gc-text-muted': theme?.textMuted || '#eaffd8',\n '--gc-border': theme?.border || 'rgba(255,255,255,0.12)',\n '--assumption-frame-image': `url(${frameImage})`\n } as CSSProperties;\n\n return (\n
\n
\n
\n
\n
\n {screen === 'splash' && (\n
\n
\n

Foundational Assumption Recombinator Tool

\n

v1.0

\n handleUiHover('initialize')}\n onFocus={() => handleUiHover('initialize')}\n >\n Initialize\n \n
\n
\n )}\n\n {screen === 'controls' && (\n
\n
\n

Settings

\n
\n\n
\n
\n setToggle('continuousUniverse', event.target.checked)}\n />\n handleUiHover('toggle-universe')}\n >\n Discrete Universe\n Continuous Universe\n \n
\n\n
\n setToggle('infinitePrecision', event.target.checked)}\n />\n handleUiHover('toggle-precision')}\n >\n Finite Precision\n Infinite Precision\n \n
\n\n
\n setToggle('chunkParticles', event.target.checked)}\n />\n handleUiHover('toggle-particles')}\n >\n Point Particles\n Chunk Particles\n \n
\n
\n\n handleUiHover('simulate')}\n onFocus={() => handleUiHover('simulate')}\n >\n Simulate\n \n
\n )}\n\n {screen === 'result' && (\n
\n
\n
\n
\n \n
\n
\n\n
\n \n
\n {result.outcome}\n
\n\n
\n \n
{result.intermediate}
\n
\n {result.description}\n
\n\n \n
\n\n handleUiHover('back')}\n onFocus={() => handleUiHover('back')}\n >\n Back\n \n
\n )}\n\n {screen === 'processing' && (\n
\n
\n
\n \n

Computing Assumption Matrix

\n
\n
Applying Constructor Theoretic Constraints
\n
\n {completedLines.map((line, index) => (\n
\n >\n {line}\n
\n ))}\n
\n >\n {activeLine}\n \n
\n
\n
\n
\n )}\n
\n
\n
\n
\n
\n );\n}\n","import './styles.css';\nimport Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'assumption-toggle',\n displayName: 'Assumption Toggle',\n version: '1.0.0',\n paramSchema: {\n continuousUniverse: {\n type: 'boolean',\n label: 'Continuous Universe',\n description: 'Toggle between a discrete and continuous universe model.',\n default: true\n },\n infinitePrecision: {\n type: 'boolean',\n label: 'Infinite Precision',\n description: 'Toggle between finite and infinite precision.',\n default: true\n },\n chunkParticles: {\n type: 'boolean',\n label: 'Chunk Particles',\n description: 'Toggle between point particles and chunk particles.',\n default: false\n }\n },\n defaultParams: {\n continuousUniverse: true,\n infinitePrecision: true,\n chunkParticles: false\n }\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult\n} from './types';\n"],"names":["frameImage","HOST_SOUND_EVENT","HOST_STOP_SOUND_EVENT","HOST_EMIT_PREFIX","SOUND_IDS","dispatchWindowEvent","type","detail","safePlaySound","host","id","payload","safeStopSound","safeEmit","DEFAULT_STATE","OUTCOMES","PROCESSING_LOGS","coerceBoolean","value","fallback","readToggleState","params","buildStateKey","state","buildAssumptionsText","universe","precision","particles","getScore","outcome","Visualization","visualClass","jsxs","jsx","_","index","AssumptionToggle","config","onComplete","onProgress","theme","className","toggleState","setToggleState","useState","screen","setScreen","transitionState","setTransitionState","result","setResult","processingKey","setProcessingKey","processingAssumptions","setProcessingAssumptions","completedLines","setCompletedLines","activeLine","setActiveLine","timeoutsRef","useRef","hostRef","onCompleteRef","onProgressRef","useEffect","lines","cancelled","typeLine","lineIndex","charIndex","queueTimeout","finalResult","runTransition","_a","entry","fullLine","current","clearQueuedTimeouts","timeout","callback","delay","nextScreen","onSwapped","setToggle","key","handleUiHover","target","handleInitialize","handleSimulate","nextKey","nextResult","nextAssumptions","handleBack","showParadoxScreen","rootStyle","event","line","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/glitch/glitch_assumption_toggle/dev.d.ts b/dist/glitch/glitch_assumption_toggle/dev.d.ts new file mode 100644 index 0000000..2c068e0 --- /dev/null +++ b/dist/glitch/glitch_assumption_toggle/dev.d.ts @@ -0,0 +1 @@ +import './dev-theme.css'; diff --git a/dist/glitch/glitch_assumption_toggle/devHostBridge.d.ts b/dist/glitch/glitch_assumption_toggle/devHostBridge.d.ts new file mode 100644 index 0000000..3fba17e --- /dev/null +++ b/dist/glitch/glitch_assumption_toggle/devHostBridge.d.ts @@ -0,0 +1,8 @@ +import type { GlitchHostBridge } from './types'; +export type DevHostBridgeOptions = { + isMuted?: () => boolean; + onSound?: (id: string, payload?: Record) => void; + onEmit?: (type: string, payload?: unknown) => void; +}; +export declare function createDevHostBridge(options?: DevHostBridgeOptions): GlitchHostBridge; +export declare function attachWindowSoundBridge(host: GlitchHostBridge): () => void; diff --git a/dist/glitch/glitch_assumption_toggle/glitch.manifest.json b/dist/glitch/glitch_assumption_toggle/glitch.manifest.json new file mode 100644 index 0000000..15df320 --- /dev/null +++ b/dist/glitch/glitch_assumption_toggle/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "assumption-toggle", + "displayName": "Assumption Toggle", + "version": "1.0.0", + "folderName": "glitch_assumption_toggle", + "packageName": "@nommo/assumption-toggle", + "entry": "dist/assumption-toggle.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "crt", + "logic" + ] +} diff --git a/dist/glitch/glitch_assumption_toggle/hostBridge.d.ts b/dist/glitch/glitch_assumption_toggle/hostBridge.d.ts new file mode 100644 index 0000000..fa85f46 --- /dev/null +++ b/dist/glitch/glitch_assumption_toggle/hostBridge.d.ts @@ -0,0 +1,17 @@ +import type { GlitchHostBridge } from './types'; +export declare const HOST_SOUND_EVENT = "glitch:play-sound"; +export declare const HOST_STOP_SOUND_EVENT = "glitch:stop-sound"; +export declare const HOST_EMIT_PREFIX = "glitch:host:"; +export declare const SOUND_IDS: { + readonly click: "ui.button_click"; + readonly hover: "ui.button_hover"; + readonly computeStart: "machine.compute_start"; + readonly computeStep: "machine.compute_step"; + readonly computeDone: "machine.compute_done"; + readonly verdictStable: "machine.verdict_stable"; + readonly verdictAlert: "machine.verdict_alert"; +}; +export type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS]; +export declare function safePlaySound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeStopSound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown): void; diff --git a/dist/glitch/glitch_assumption_toggle/index.d.ts b/dist/glitch/glitch_assumption_toggle/index.d.ts new file mode 100644 index 0000000..40a25ac --- /dev/null +++ b/dist/glitch/glitch_assumption_toggle/index.d.ts @@ -0,0 +1,6 @@ +import './styles.css'; +import Component from './Component'; +import type { GlitchComponentMetadata } from './types'; +export default Component; +export declare const metadata: GlitchComponentMetadata; +export type { GlitchComponentProps, GlitchComponentConfig, GlitchComponentResult } from './types'; diff --git a/dist/glitch/glitch_assumption_toggle/sounds/.DS_Store b/dist/glitch/glitch_assumption_toggle/sounds/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0qxn%n!URkn6(-IdLXz?4p9YLOEGEzN0F2CFOz}@* z7fY^MAXdV-@MOS0o%BAr=o?cYgC-FmsfDb5b#q?epY*>$BQz;NDE9{ALYI%+m{mn0 z^w@}Gp!up@L?w+Z6MYGo9LggCblLo`F%VD~UHIpiXqFXJX!UQn04pCzr34YYByuy_ zxFq!zVfYwQs9#$D#}-ODL8c(zAbH5pMif~LAzu+Wk1E$!l3gtA42h&s6PCoPJ&h{h z|5*Q(LRc^}U!4m(s10bN^Vgi9=DM-kYu^8N+ai*+MTwt)w$lOdc7GRJRF(fD=_*8_T z^a+maBH12JjQ`i(|NRu8By&Mhmi!$80(xvh@$yjv8pVQ3g5`G z`sm=C>~r8+s2fKHyaKejkOHEFB!_%681Vo2LjsD7#ch`fBoIPDcFOmUAFL>`=iV!6 zvZ(9jzw=&I)bQCVV9IQR-?+%&IY0BiPlfn@9032EE`J{0_&X3#x`Ie^uK>n>|0h?6Wa#sr6v5tkJ2AR8R8J zN=+4#*Mx3`)*MaRv^4Ezq+GKkT3t&_%_fHM#PR}RZyIv;0^y3G#PYTZgXS@@??FnC zG^@`1{k_f;1-%w0#1aI{3Cb)wHSl-^&Gy$XXzQ0!p7X|$(lq43`*xot-4K(_>C
    tZiG$@j?7#tFVE`l$F&?9L4}Zqm^hiTbOaV2N}o{smC@g44Gpp6Bv5Zid(+xN1}V&X+u z-*L1vXC^(dQ#(4}XS4--3oBt>wr!+CQdi1@&Tmc?bGP|RUgBFkMh~{P#L(=y28@D* zk0#Im!6gDP5=PyAfrf<|7j9e#p?P0K*7((>j=J_LpFRA!lgUylK6VOcPqZH}WI8uN zZ`hagXnn1Zl7J2k+_mu`XCsR zX$Ve{(~!}%NNnYCcr`R5u&<9i)%$p~Z}&NatmiZ4bd!;&8B)8qbxqQB;uP|d?XfS~ zOg+i3$7E^W!}k^V%SvbY^2vaS+J|q#6y}i}hmTqAhqxYB*gledbuofr&y~B9_6fG| z$6el`mezrA?pD=mCK9})NZal|tDPq2CUW%KpW&R&A_Jqs!9FG`MEtJP-Zle<$h2@z z3!XeT2!jiB;iR0|DowPLYHLhz%w~(zoZ(unPP=%E$vZIc_pKs8_nWP7)wqWn%mh{n z+UMnme^bZ|6F3{onfPJ~gb%x5Sv^;JTSH39kPQ*aZM9tS$W&ALHB@eTmQP-9S?{}< ztwtWqV@IypgFg`qj~Qz-XhbVETJWFo=*N{HU7U{ZuG2}42}AE*=;{ou>kV=AG}kjP z`Jzuq)J@NSc)zGo(%{<7o^e}$offyW`ujr_jPo>T{QlWsJ)c6@#@ zx~s)sbeSFSQ&dOGty$Q0ePaS$J^0j5dTV7XVk5ajlPCNINJNKtT@#0%BEgI-o4^`Q zre<#PygWdMS{r>I*gXIO0u2Dh_y@iG^|Lez_)wvb&mURyocGJf<2xN$m7ei*qMC}A z%I#xaWv~A07D9e-E>NoI(<2a#j?IP{uCTr3l_MpbPUHNq`b*B>Uuo8i$%sWdqKv4{ zQ%7DQRrx51&`jV42t<*ReMH-i(0>9&nRX!RET`ex45>h5kNPiR+H-B|FGM|CrYYyEu{K?3oO zX7^9%8&yKT?=X`hYy7HCU8SIgA|##WfhX{nGh16`pzz3-9h0qNJgTUxfSJvF(In=Y zdp*u*S4obeFCR>F2}{c=tscirnv|1Ajm0a{@4nHT9X_s_L_myoe{OLepA%2ExCYGX zN^SVdpUJO@B3fH~ovRf3r6s-av^xGGad;-*=FDrsL_?Bq@*uy~ReuPJy~#XDh`Sj&gIX65>2X$r1-k;OP;39|USF~@`2FY7FZ)S-Y{>3@2!hPI%E@2*BF57o1 zZ9kC;!R+n8Crb<Wm!q$K`iCJ)vzvB@H@2^d z)C#)K==3;~m(1ye!)JMV`fY2m^WM>89um!kW<9FJVVxOAX)NM$g;d*BQllUQ3$(uF z!1t0W&J&$}rWPBX<=Ey~GCaiRK{l`!hVeMB{1ob%Mr>FmpZa$iq+u_hk9~^kS=0HV zMbCH9>jHPQ3VWw<=Dh%$$xv$?|8SX z8tgq}jppY!%dnj(&T>vNvyEM*pMbpUeqVJzpeQ7fx49iAxal~zzTc+3c`NZp9$I{8 zU3dFW=!Rc*$KGkumM!}GqKqi#9%8s<`Ta0Bv--~>+t^@Hyq5Bjslp!=WKqN-Vt>M2 zQsT}EKj|38Zl=0qp61tE{f>LCOLnZ>aiM${dN=2p{jjATE)?FN1$|8Sm@%Q-GPqub zFE3M7e8~S2(hz4;?kapf-VkR}TtK(TK2XM`y{Yb%mg;!!oV}^J=hgA^tnW5w`@}`# zgza=GL$&D%T8?AO$XKP3Rut#;G8#*88!0#@gS-j(Icc2MW?Eb7gGEloCQArJdF=Ga zNZ!Drh>jeD1_J9R?u)=!W^n4byMz+#AOi~nVd>7bZ_WvfYEfh+$PkfYv{`WyaglI`eaNM5PawLBfOr zYy8V|Qscy-^Dgtbyl$e3Eb-%ZeJxtL-I6mGw%jVZ?z5I#bCT2YXVgiLwsSsxsF9>i z-Ci=HNRE}av8EmjDQC#gzUZTdRj`&Em^E&O@Hi6v=2M#15w2hdccthHfn{;Cj{b|B ztVx#l%o0*f<&*Lvo=iY;?9BDUE6nA3%XTxzJW=HL1GG~;^^E&J*f{`0{ZFiAzA~Y zx0aY7a-B>OoRXc?;s#faRK?(mTtQEp)`mrqgbISzOqAVm7kUsCmI%X(Q6*@$oV`xWn-uzEMM zR5DpWBL8G9OnLOM0-j|{KX@*5IzEFqt?rEcC_TH^aE+e9h{jh^Z&O`^t0hXx+rHC0 zgN2JRkt%UvweI_Um0f_bW@7swYYS#MT$a4gTYfy6wawd_0n$iW@IM?Y%morjah+VzSV)-r0 zD1bTEo5ouxNGO;kpQo3{XEr3h%mWn!BUXvsUw6mc^3kwtGb7LCUD zv<8H^qz-o2grWdx5$=G?^{%qbSWwHO_i%CW8&=t;b8*r|v=ZeQ>J6YhZa{wF`o zUn^(Bf{%(cEGSoAo#nIkd$`T9-t@Y?l-|Wix&=_}N>xtVwFH9;vWgQiZ-_j{)WQWY zskXNmaK`^Cn)u9x#)v1_HAfkhZ%*eo9zUDipQ4FHvh^rTnV0Y4mdVL?I<+}s0wlt}G*rGdZ14VNRHJHudb?qs z|2hp$i3sH=EA9E90lms$l#+eyVQgsOj$boWm2Cq|Z$d^<6JBQ49T89~U`DHoUE7+g z8MDJi7K(UrvKm~JEnb$sVVBo`)#V5eb5vJ?PvR!7h$L~|EW!)m$!dRZP0>`+9OTfr zVskT3Yb+#=I&!3Jsw6dfYbDC+lTFO#c;)TP6Oe#>M^&es`UqkzA56%;A}ss3MVAai zxC#>M9*78~3asx7FZGc_$Uph`@-H;**;En;$*OF(74Bxb+Q6RuNUMxi%i&J#Rx$-k z7iKjooVIn&XN+y|jpT54n$B>I`beD(_>YhHu$Q=D|1?nQjvn~A+nmd$w{zW!%x8JS zSkI@S*C;Ou6n!_n%D-UDx`9)Y48Rk*pn2YeqQN36&?hpU7B}P2@AKN=S?BWz`uw!x z4R`7Xtu2r=CxHe5}LsaNSo`Yc6S>HNF;!nVpoK-Y^HL!yi7r4ad?k zIWWEpvTze-`gG#XrjsUBrlqQuPJ6hy#Yq{LxfnvuIpeIUq5m=!nnnVO1b;y`Dnun- zxF8cukd`f&I>y8rDo7yovucjij_nf$XBMg5cNMJf;liEUDBFD?ZeDYO>Bw4+&-L$&om7jfgz5lQxL7f?F6D&*N+rImw zzl9XbH}R2p)e2#Y_~G%L`<{87IvS^go^WOIl+B?BEf{pMLeMplh@^@76=u^{o zQj-9PY+UxlXAbir1+fnsFf&?yR}Ua(GKuwRGvh18cvfZn=u-_4fk{=J*Qn_1y!Nf_FTw$DAjfa`eSjDR1mMRk}XpDsgulFEivQQJ9jk!h*t2AUY zZgdK5>y}I`uxmKGC(0;m8RQ;wkWYF<@I2>X{gyfb%{@#=h)Fx*Vs*=&hY z76}!yMOWy@b#Velt2_y}U0%kj5+N{M4QhJX(JQWWrKXP({$5>*k8VW}sPDbrySvtg zH!&V^5>0Kblczh*t{GY5n}=0=JLQGVK?3Cjg@`rcav$#^T=ZUZkt2>XMa}PU`eu+Do{llHS(#d|b;fCk?e0%TVe(2obM1c|!WIv2NsF1oPcsOE1;W2WkLYa{4 zDq4@|pFPljMM8$cT(xGDM47lO+}tOFK#6cdIzS>_fF)Brh{V&Ogf<@&DcrtXuust-aHKT)&160qlmy}*}$pc&^i$E%-rz)^2(6zd)CSXKTk?YXS& z?E7i|i|dXtLPxeSDN_g+*r@vF$*udacwzpv1CGVWy(#}deaDb6U( z^$PSXvr_<@*^zA-AaRx?@e8~J1h-Up4%V<}7p2THw3nGKH9fQpoqPF;A9NBThUK@~cw)t($8S$iosok_m<72Kld(@J zpN_FSld)2sGKl$G#AGOvE3a%WdrC8($o+bx+(-;AhME&!e3_G@H)O|MJYKhRK4zV6 z?cIvXfi&VO1SG1AH`oM`f=rl73K5X78gV@U7*-08FRIcY`SXH<0m$hwq|lxamN?HG zNo9$ylA1%5G?8S9Qzw$^@h~pKsFihUi8(XoLOu_JbaRTt@BUC&Kv-JbKcy9A?o5N) zW=JXb#@$?R{<>!U`MQGN?#9}e2)Pa!2#*6tmcdFFY=a}LiVdiBMMr2$%Cy#a9Q=R& zR9M1D)f=l?h6Uj@-tMB5u~dxX_t)vDceqckf4JNg_~gWw%3rjIoBwzuNUgr*mpcEBY+5kHG;^hg1pnomwat_&spY>uBS7^ zVrcrx(7tPifd8spynm3( zUpr%?f)9%{3{()IkNIX+`p8o*(_XQT?4Y(}rG9F=tLvpq>PY^R<)?jn|K}cK3_$X2 z#Ke(y$BEre9u*^k-9ii+su_?t*YBs)g1AdMMORyDOoq0l6q$uEzbRK0PGq=)!CKgx_JEPme6YH>KvCH=_pH*%X9Ai<#0k8W)~4+?!CzunaSD5V2H`X^Hp!EXourN=>o`z>~|zA3fp1L z($3cFwIR|~J0F$!y4%QOAGC@3;c<%9PIrG?pUs_+q#;69kmy$u5a|LI4$kl=*v=nJ z4P5-q!CmQjW~(`#_8Y1gua9hukjST7A3gmDFoqD)!7oe>i6b_ZeeIA&iz!vYAb(q# zb(RJ!iJRw?ck?4AnE1dNzRGgV=KAT&T%qZxhL7%^BZSSu49RLtyi;@d{V=5_n#}&X z*!hh6iA>ngZ>|}9LY>^`@86r|ZE(ZYc$+E&Zx?>in?z13Oodt&vO3owH}& ze#&TOa}8+JIeg%QebiRAXEoO69-|BpC@h-CK@X+N%1bVaqa&7UjnvDnbFl7ZO|~e# z&xf>2(7F2}0|J5s{)JI@Uihy+jS3t4y}8o1?e})7V;`NKDYYd{ez?o8CMR9JXe9UR z1|XNL1(hHgH1vTC)17xpwmCt4u!|wF2z`Iy^u`eC7KP#3&!7!vn||#G(MH6>H5!;z z@mh46pjaHR;EtG`&bxTpi4%bsJUT#U<(hmU^$OpU$vS-Q!DWhhG}C8Ri0a`iTm*k; z9iRPF)rminmI*~bBE@OJyy+{3%ay!%-YK0$9A7SbM3AP54;Q#~4?)O}NG13TOH?&n z>Fn!QP$NM6_KYgQ>)T20fMju>?@^Suy*OgoUX_nb@dKGKkq1KvLDDB((2e$Ifoo^~ z@%HIUj;novaX$r#T0rOo6T-IGFFe|fUXFF_tu+K!48#DM4K#B3eO{TO1MNfh*m{^4 z(a~WI;d4o5aBF32Z0bWf*;jsyh(S%PU!N8uV3n@sr{(@Jtwna(8la}|c}n6r)Q{VF z$3t6v=!6Np`S{6qYAwG{5E2g*La<~@R-|b47v4P?G69kwq8Pl8kBi6zeg~2+V*&-i zz-9_~%W%xBl9Aao-sMsHxk}Oub1x;>_JT*d9{0n8}#B<>Q7X`7Hm&{^aL4 zmU(OdmLxvq=Wg()AOY4DuYp#Y-R73Qd>kLKxQ8Elq{VA$_ZN88tcsTzP?^X%O6dHW zoomH(^x($DQ?z3q$0~02TL^ld#XL~j_{1uT;i_e&fL`XisefQFa$+3BR+4tQ*>D>PYZP;j~& z*H8H`58i}dzXooHH*4Ra_3q2#p)$276 za??xkdQuGL!74wKV{b@9pjp_+(j*p+i(b-_-}PKEL&pnd6*bo>v-~MxGuV`gxUvjD ze*9o6Z!BZS`$8e&>sMnu{4Y|gnhN?qQ$yhMN}7-*Kg61fS%u2KK0t1&+)%Nz+%A4< zRRB<;2*QYbgb8c35PuUH;Zj1;@>n~?Pq8}fjEpOdJuVlHAPQ14&u*(Vi^}X}inN1F zSh~~)K35xdm#>wfK7bHtJtehC{=51d@6QzZpLK7W|u|^rY;4nEw9Lo6~jzi6dRTlh%x;F`bp-cFlXPILtpPOz_uJ zlH=2JxkHDKlnL;!vzj=EErx3+;MT$`D?X-MpFZsE%vC5gM{=7QCRd)~QUew99{t>{ z^wpZ&!GfAfv0`Ww#>~l;Rrh;ZTWpbN zlpNg>8QVi-HlW@v>2p=vdE|Svm?+8Da`5vqY6y%(SB`$`3Jd6|6=1TYERjb+DDOWZGH(*K=i^rMI};rk$$= z2U4P|2}8y#&ySu@X|TD*qn&S`F%{DCOEvA6IDsoD^n3<~tEnQya>De5)kO^agsGwq z&7dWCflABzZ3i{GVxz0=C{=|Q!jIM$s9Xolgm7&?2s3<~pLnn@rD5?)s>6%{y8Lpa z&zh~6jP`|s0G7L&k?o20?TFVu)&kD|7RtOZgJK4AGE}Gcxm&k=wXEiPT**A+Q>}IW z?Um!9QrlNNGyn;1YPwUS1e^h`D_Ud9?g4)ma}TF(BDRMVV4`Dm)QO{-Oc|IrQWTe5 zJQ=79$i+}G!Um3?$6eo35jYg%lZ{CdbLJ4`ns7Z;UUjxf(w9Y0p+E0!$3Es!&U#|c z@>&Fn$Trx`tlyk!vG@*iLPH~G&N6)L%drd|C>28&LuK6-do9sNNDtA6{ASrdj|=i) zk{~20^MX!>X?R;R16{$I;72b4>hI>(!b*lJS#5}CU%*!9U@1L%B8}JSCZup^xzS(b zuf34*x^|NdOkH^TQB?y~njf#b9MeY(^B2^`u;X?nT3iqCff5b#?KS;-Y-d)#v96Jk z*k5@fy*Is|G>%mf=g81xB`lYPqZa>OEtm>yj(^GfYv26P$w0=id_dCw$hDeZSFfQ3 z`jx)Ef3^2<5`dy0U81ZN-oc4S`kb_!$@D-@VzFn`>YT~mQq>0>BSSs3M?_%)`bHS3 zGIk@o`fFX;RPn?1ifhUg{?{wAYM~QVt2n zTeaFf=tYch2ng|RMDN*`5$^;9ke-s-dQ`PyO9r2|@MdW#H*d-p`emh*^BE;b%YwwL zRA{iO1(EC8ja`!V zeDCp#ZaYw8Xf9xf4fW<)=3V@|w}S)*!l*m>cOuWAy}g}$UgxfKWM=Da$vRp2Vg4FQ zN~vfFOlpnJ2@v~b1AxXF<6Ot z_DQ<^j--5LLMD8YQ)ZohGZMrtNBlK&aFkZ59eItj8mVTuz)O73B-%}nezr3{mD4pu zh@J=X^CwU-XIUFfM%S)RlMsF#&hPwlyQ7WIPP|!?3B<_AXWX%F!NsoBrg;#fy;EWo zpe|w9791~fl%uJ^E~{}=AwA-BFVW&6(8sB2xia7PCw*K4!Gz!1nG+>8t|B?|YgVAO z*w1W$)RDfj6;>HV)}J1>%QhaGC#Q-NfGEb=#a?Q@*rxU~N0a+CnKL-%!|kXbFk_K< z|Mm6uyYn&8;ailFP>h5GVA6?8vOt$i4j@yhNPst1Of>@FCMjJ30v%#07X~8?h>}y3 zK*BY0=WM!RdHSL|pt70PC7QD<8m!)}JNulaeez0Y3+_XENA7Iohh7^6&!c3b^q+TC zH@;?{<-XRz#IX1iydjs*l#bt*7+WB)4}wvP;h-=c{fH-iqQ<~#Lsl~@qgi-0zhp}u z*c}jz_w1@aE|nQf_C8lF6-}o2Y!%}@eB8?{zA4H)Z}~V~L-cXmT++lACu%ef2sBxm zZ8a#a%BI_YrEetswR1+X*M!fgiRO6tp?d4$43c%IOe$%H`r}?hCfr@;X(=lzCOs#C z;z}rG1)o_>zGMFP%8}H_L+txb69PBgDi6Hc4Z{l_a(3Sh$Y9@f2Ty?;uc>UK-V-4d zCzn$)9{jgJ#kx6VW47<@=_TIbkT)8nWxQzHZ}Hn~@YmS|#8>nR9(#_s0H_fno$EP5 zet|z7x&g5h{s-&)2M3)~5Me*o^`!mQpWv)bFP+u@(Z7Iz5P-fh>W&N7EYiqf`|w#w z?GM-8GiM0h$;fX~JE)2~Rm8x>jBtA05s1n99*}w7x4=4v&o$mcR=XgX0VA?`0gS6U zo2gsU(t)YVU0n0_I1}WgLg-5){gBwX#~FE?QUJ3?V>Mh_||m6qMx`A z`A}iz6bJWA#UU5_-X2`6foV248Xu~uZ_&W;__I|1V?!e?c}S6bY!|nENsLD<>I8Mm zjPJK^t0lf<(Zp1B9;g|S&WP`poSDCJo zCzMASaz3a!4)RTht0}vNP>0&XL19doTx!DGyMcG zU|CX&^)duR%SqZ$(p_%Tzv%%aOb(HvvP6=y zEV&4^E59{nzx%%{M`(K=J5#x*vX|%IlS%qD?(kMxuj0!u@fM*a9p2M3d5ci6P1_i= zz15SLbLz4e$`2h>$=a>?IaNOE`n1(8FFk@;hgLn~L(O-+gZTxM{f;@SZ2Gv^>In7b z7#wB}cQ@GzT^#$#{cMR{W%6A7S09N_Yt$oc@;IFq-)E!~Jy0wfYg#Ya;{yDteCQ4n zgL76Jy99*o*^Agw5IU=1ZjxmV=5aM(%RzBvnf>N7^6f%Zprf5eD# z3Vl32_to8{9336A=GH#_#is#Nna=hqqhIVNAaYm&DEHma(h&*s*VWf>q+<)in)PA! zp@0mU+VG=PLi+>sg1J>vh-bIvr8Gq}9TJZWQycnmcN5zgHOqoVI_z-22Wp8VNrsLI zj+sD$;qTof^(%1U0^Xu?pvrtPeLUs z&9goxUt>vDLx+qHPuCp9+xi)*{kIbpXv|Ae$s>ayQYaGrU~)D}&S^q<95Iypj!q+G zHW;g=2+pKvI)kUrb#0(bYpFUyv>Fg0M;K9yy%kQV%oeG84qIR-BNE|>!7nvo@OJqp zgW+1}XWT=J%4rCAyirj!Jl4>OqR=*eYfDND?=Lf(dj921kwJ zw!jCS_~NWM&dYaQ;->RRm&Pvts+qj@Z4$Ywb5Qbx6sYGGCF)>hpoGwu8-|I!-GBEV z==`=KKAaEo_3k(a^cT9?-Pb&6p}U^b;yed8@;jzx;wrvhGfh25nXmB;2d?(uA;so1 zUdHIr^y1r=4zKMnk7)GlR9lmepSWeyZj+ET1D>X@ulEnc% zjnMM*c^p5u1DltN^=whAqz;#;6c@7;7n$FSbX_AaIlL2nEhf)4dQL4b+Qp@sqce*S zeZ0@ZJS&S3$AnGriDbmtAk^=G;eJYW|kT`ueKvZ9SXTIHd50 z3H|dL)1||6l0o+7Ya%jMY*FB+fz^6w;&h=Fw|>e9nqgIqm!LC?4MWC;PM@6CH=fxj z8Om_xJ5_&pd7Z=uDGTds%I8)cS+7{5YUl=ITTGil{P`lc1O5Xj0x$wb-7+bR*IO@Z z&D~JfG+_08;l4alNti@UD@=`6;6~!|ac<*PI#UMptk_mICKX|UB zXw{RvWW}C=VT$sX{FQSL65mzH3EuZtE!-{9+U)PP^pbl8iY}!Fhw6HLKK zlvZxmWa$k^6^XxPTQ^S_9hyi<3ugT*xr=4=CpF^ZHCRK+uJ{vgwYUwFj zhX1UhWS95q%T`*^ej^(xF<;bntJ09|InQus^BdOK?1lh+V#AyG!{_1Tp?A34T!+2T zs<}xI8oTIZl|OLA4K-8c3O|^)wEl>B=66q%6M(q|#q_cT?;(19V2;bl@6roE7p}6S3KPejdGjUs}Dc&Vokb)iPTcDwc7i7JB!uVgeJ|r zS6QVZsd~6_?Dz}dmd-(#ru|1RVucEZ%UxykiNa?8I@C)vHcH-inMLO*+IOgFo^AE= zrjjRV5k3{tfdtc>$U{H`K6_XqX61XblEKu|zj?m&#F8MlvnD+$hPt{f>BhJv+z}+pjglH3iyyU!{iqitF)e@u1(yDS(!aC6f)s zIZ7qWQ%GxVNHt9jG1SM6){{QMui$4X8d20(dF%Kc}>ir zBI_&EC`qMsR;5Zbqzx+n!c9-5K;p+ZU^sq?%LTzb21JS_|HOBllPNNtX+{hE&RX3G zp^iNV)eyPO8sV||&Wrejm5rvRN;8E6wpoe0>W!WLly$kp&l}>Hoe3LOSJvvs6}RT? zMxEXk=W)o{HN5xx)NY=1W9Pc5X-gd(tdaMa__z{^O|5K3`@WSHp)#9CL!@{zZ}pER zSyBVOnxicUY<_&l>f^KQiTOk`tq0>5QqNbRu`{Ki)c(2#NYXj9eI&ijz@>*bIIHk#=lwu#7U zn1QC}&f0U_{kv|p-G1-PUM;XU9@p=(!7*C)$KUCG{UMw(=|^P7sI~aR{nI z26dRroz^n_hFFNw68k$ngC|GtLDwzF`#{9jZU$}e!!_3IiXb+RV?=sp@r-(j5&3xL zGD?;6o9m_Kv@EaaC8{8ESO$#hjc_%Y&pRd04Q*cbjIyLKbp`em^fSoHKgV-iUTJ0S zDypo*0zI_-{^$314ig2>O_7%6596bA}yWIh1d%5NJdO137rrE7d@G`wREGFksrk67*uN{V6d5Uea z9JJSLDLA)(aF`FZmZ@1?|KV;}bKjmU-+Cs=S*6|-E$JZRSgO6Y_{w5;K=SZ5ac%TPcncr6IDjg-eWp1|^8Htk)6T_IW<{wK!)49eOb{gvI zx02eP`M7{BZVUkx(fQ$Cr`xn9YR669!Fg)D^8_%j=2WHlqVp{#o1bT__+e9W|D}je zGps?DaP0Mp*7OS2uBG-1rywxhQ(m#l#0(}yfKWbBR-XS|t@E^os5~OOphu07{amx! zp!Rh(0>(K;>AADBaaX)g!!3bS3bRCeyA^rfbSc^LiA_vB6LB!lu=4FyfRG3F`q;-< z`^d*XoW*9IYOE&q)tT(Yo2q*_U;h?DbM5wORpseKAHUBM-n2fQlr}FLX-W!fwYb$m zjg$(XOC_V@HD3ix4lmi38I;r-hcMFQA26gv>k37E(W)ofnik0m%FMDA8=XvMC6Amsf45=OvnU!k4i8`$3Ap5g%XG| zu{ruMUZBiCovQq*Hc|*m3o=B%)UNdKC8lThA=;}Ww}@c0g3GG}l+geDZB_^ldzbrj zQU`zg^?kP4Rb{pAq>tgF+@FGQz~+TCLRl+SmpnwuV||{L1ZP=cstQu@hEK(<9CtE#kuS2V1J|Hl?$E zSohu&p4C+5%HGy>`YPTCr|8`j?MIsJ^s9(-S(is0AWsk?e8)DNo?P`3tgelj$#(s^4JYyS$F<;YsgZIXidKpQ~*|jx~N~gU?6*;P`tCUvav} zNPe1}zJ|NKOTJjMCbhe36(X~l!OU^$@YVXQ30vSm~xauGsg>`L>@E&JU(W}>6IC!S{7w!b2= zt+G3LPYInpltLU^;7>Du)lmj&eds8FeKmvODDLgLWXg<415``6Zj!BSE*cm-)Ze&F z<)KpnhLc=d9~uCf51+88Kc#)5>d-fAp{#N9MjF4EW5wF45B8D zlMf-aZ0QaUgK(2xsp$ilRv}v_5K5kA86PGH)u;i7GX+a>wlwz;vEtk2P{7`Ded;w@3m$J#uPsb5 zUqfA9&{yiX^lC5gmPP{;Ec2?7DcO%MxQUb@!G50G{_*PVdD{%?4Y$&?TWXzUjD8h6 z!n)nMEp2yu7G@R^^I-$Yr%Q%lDR0`{;S^yU#*z-G+c>pTC#%1}yRS|+-@X{`!k zeLr$9WrhrY42Ot#?!FTfG((l@6rOURvz^u&FxsfW7EA7vpggoZ@i?OlRCnR>unM-7 zR=q)ZJC_UiYgL*p zvE6X>esL3@^)t=lBJNM-H$RMx#090FB` zu}j9-vSZ~5d<^S5t)-n!R?OG6SgL-i%z0mahcRU1Pu?T$%JSREld%1u_C_Kf2n>+Q z-xpb0qa|ohlarH-l!~gC+t>~ggwRU(8eYSt$SI~VD5^Qt6qdEPJ$ss_<*K7~AL368 z!?&&HI;^IduoChttd()gC`fn}e;3OP6g>^FbrmF_L&k(y zq;*EfMca9VJlj^vNc%&i!0MKh%7qLlx#FIsHUy!9h-FOv{acq_85og?Ld`8sSkQ0c zaPGKM0^?*LD&dt&d&$Zy&UAL%rJ1dO96AZ2@k2sA)=lf;?;|m)h!TEvf&g8(8>+F) zQijT8LCK6}0s}uxYFHDQq3Is`)jr!JT+G5ZIUVv$m4L@M+nND^MyNlbIeWPiL;avk zcySYdX5vzibt5A8C(Or-k9-qt6^XVV?$}qOCxDMPoc^49LXsE|jwaC1Mlwa!6K6$x zZ2EqTA?5( zD}!9>%=5gh`tS1r2vs<-m~u6J4c|mEXNSM-ui8(86T$GLYho2Zn@$B}PTuh5dvF)( zN&bA)UjGr_;iqnL^#|*INDIEu1VXDPjGLyqF*-wwp{KpLLh6uTrQz4^s8)ToGkL34 zCW}(}CAwPdE!_O!mMP87a!=x72mhqB5raP(fU+%jt?#Vvz{FvXZ(6HShB%4 zi;zV%;T(43O=OOU%Eu71ipjunc-6IT|H7c2?51>ei{?+|;)-{&MITaop+$8XNZ7bv z|IE(yIV#OT9P{VX3-|jYF?wbC@h|rPYoeAB7nEfk1szX=B`z~oY$ zytmyT^gw}I_16P305Ty}>I8iIb&q|V!jwxl%P~z@OEDKG`)=Z|KlzEK2`k+>BUkqATVgkbg03iN5_e#%@)J{8E=n=noTsUCxT-Gz%LqBSh!o#MY~=9)Qk$$| zO(jO?dkF>C+RggKaw<|S%6`g(p#uqvza;0KA>t~@DNGDPaybX?)PORi7{IH`Q*d&+ zWPi3C4~T*^6}gN-|298#=X7OZNj>{Ty!`yrAxigN^%@E1DHtnZ-+2;Xl=Oc^$HK>~I51zlO!i>nFqU zdQhRNb6mg+t6WU9SD~%dpE!dY;fcRu#V~ETtWBHwx3wA>#sE}~nberpGIPuWFEjL!oFpWEpJXy0cS)2$_;SN&;iZr=(ey$1`FdEadCKTHg_vN{bI{i*{C*81W zT0K|jHCn!~jn#Z?U0pl20!}lI6w5K=pJskyexn>-B2GQM6-6*GwhI5o!QOLf!SR-~0r^#-kxPe<&{vCI=mgO)TQbuOZyqm|?M-T##9^eJM3Nt66ek zz1hwF3c>Ko;5GP(M|EY6^2mBzGPK=@?Huc1)3!G2;tR5t4(_24 zY+BOsbhvV47@Bb4r!RkX-E)N#)`vnS5LyGN{h9r|4C++J^K2AJp(HnPZaLyDAT`sL~Wg`%Q(~i%|A3tt-iE9{yF1|{l9tQ|GX#( z)Ht)jLQNf*@#lH+r+z>2e9+-@tu31Ovb)r3sJYWqsRPjhW)UtlyFsAH7k8Z|ZOF9KwSxj|cII%4u?wVjVoyPZ z@A8`d0I<;MF>fM#zGP}$N>f7{&Rr1IXNRYqSsx!+Ss5gr!>NwI?kiwQDY$L1G0XCe%>x{*HGkuol*NO)z1Z3aik z<=y&pmi37kOXnmzq|38+_v9Z#v>DEa)wr$&X(y?tD9ox2T z+qP}nw(aC(Kj;0he!;r#syS=a81sB7)bWo9yuXmsH!}xS^Cn<8oI4n+=}0@@uHQoQ z%*LCgmK;!x$>(8%B+`^l-{;lj_KT|hihmn*)i7PEc|)d5pDYucoqol(HWtUA>}YQ)lr1l!%=9O;gZRMvYPhLp;RB zqBMk9!2o8@P$eaFqTrCoVQ^=Bus>x6xYdJ4mb#Kq^~TD5rh$j@oVV-gnAiO|p3TfNcv_O~;i1d!!UM%1ggXiY zFyRaBKW9U%btkcJV=NU1-|(MC5y^nJ1;ZnqyY5`uY$oJ3#CFU=h4zJG#|P6m{xTh^ z`cVDnhAY3MRQY7Tr*xUraMj#?yX0{$9QRtrSZN5+$p&`r^F+{LXtl9&lqfc}bL08R zCH9yV33uQCt<3(9EEq3uE4<~~BuVm;H2^h2_g ziUlq{(%};M@?RJX)jwHvsz|$K@yI$Gkzm#78lfAKMj&oNNbL6)zDcRLzTP zZw@;t1IefV1NQ$L@bWasr%_#=m+mLt7sL1O#ocx=+}q=iWxMn!i=Z3_@j;z9h}oW- z6W>G_U;*5hNkaP}AP6vGIK_!7XIC7K=5YORXAk#wD=@^Z1l(5FTPU-yP$aOOzRdTT zuEvKv<*(LJb0*bX8kDVJkueuGeG(`)2uFp~>dC@l%aG8)6V-fX2Jzc*Z!b57DF_~6 z#NhTkjA^{?=`^HcyG^3Id0jtWx~%M*HQGeHpgk~6-epB^t$VFP}ywsDWj+aA+|Kh2;| zXEe`sxn4i>>hshs?(LiPhXppQreJ9i`tp^}>~=8g6yZM;S`FLiMhrV6@O84Nw26*N zr!EVJu*Cxt48B$jo~nshEhhsfu+?N9H`XRnj_3~-?7Deq>i&74{)=S6pDLx zc!GH`pRUg=A58D)%>A%C#_RIEFXf1x{Sa#XPKe8ho44d#sp7jC#yAbyV40JW{D>c!{%0PCF0Gju>CH|1ANnZN-WL0Pbu@!z?%JhX=IY&8etT<4!>@l zdz(qG79A+k`*&&o?`1*jDuiz~hyE4TAGECj!C}8%GMgb>)C$7|$&sz5?ja@sE=xt} zO!}eA>3C+UZQIT;@PZqbWXYmMFUA!E*KL^bA?0=>KdK<)#*2)w{LdtYEgRwJX5-rkfpit=D(QrphkF{O2fP;wM^^6#v50 zm)pN>RwsoIAduY%7CXD2AI+LA9#29+ zNBA~av|EbH9?EAoUdaRYw00OH9QH&(o+xZTS+873!p3*K1OyutKL17vzc{$ZN*Wtn z)8XEiN97lvAQy3;1X-HE$m>?kLc8EKPPRK`J~tToE2Q{O zz=gAm{Ga%$v*0|+dncziC#w|9Rs>4Qe>+(vGr9dz4Yi9(D#Rz$7g%L2;GirMaE4Ev zo>^-xaIWu~z}2#4r7YbcMCq*olC$D?UDX*Tcckwd@Nqgss`!UtcCsl+*H6C$1?`e z1Cebh@>a-qF#1W8vLAnnQY!nZuYd;X0si6ZRCu$IanP)v;B^|r z0R4N}8aL8_u(lel;E6+rk+*p^6ZU2FZ5%~FtlEm*rF2+2(b!FTz4^H-F+rx^?qbpB z86p*jS_K)fx|I${Kvcp^@3qa&or{JIMWU|hT3WIq-A+Ab82S<>iP4qC zq|eEWZq;bZr0>DMQ<|KwSjdt-iQbPo`~YDe)k#u88yT_P9t5+Pm*rchg&mH2P0_}# zQ(ftFXF8`%Pam&uV^mm?tUroi;XWZ}g~Qmch=6#8Te0oE8GimkpC|f`wECYA444hD z60_D?YeL^fl`bX%+vmMgj)#Iv#NqmnU%Qgkl<`)ELRe)RSZ~anjAH>{A`Wd zhD}GY-y!?NR#R3Ky%fgSOhxuEmQdhk)qF8noCkR?&zq-kIj12bwEFUqoMp0jB?XFU z2se$c1}HzFv}z+y^J z5$YneSvb41kAy>xcy~U%tNusg|Lx7>spqo(n&gA@<(hhKMlxUS?q;%c zP)^*dgddWs6llNSh_CON=nP~*tU=OOajAvC5`p;Rzsl|GhHc#5&v`(cF7>hDAWRR& zlPrO{k~M9#;t=!3i=%(1B#q*=jTSSC$%>6Y_P0W36JrkjqS8(BNCRf|F-B7E!*ghb z1MLqO2a~L#lIL|(s`E9T0ewWRUo379@(F`mp@}0ZeVC;;fq7$hr{~1+fW~&;g&BRi z-ejG27U)Rt_4=MIWXT1Q!k}exzdvZ{l3-IINrFCsbuKm@AKsa$x08oX#Z;7^Hlxm_ zva-(T#~{iGr)U`LdCB`rv%#ZBiWZBZ6>5`A#_!%Ud9U6=NQ0WhfP?nnimHAwe^U4j zUo!B+Y3McI5PT$Mhnqw%BH`tHLSSvE6RtYvvoLmMN=BKRukN+__uO~V{`UNd9D+tA z+QMFQ89+uTOY45^2rH=Y_9O>pB`R~GEYxBMGE@nSiK7M8J6WgI{1>k|L6K33=@HUi z+3Vvfs4chXeAG@-W_f_Kok1iBO6FJuh|K_Bj0WWQaj%GY6hnL^m{7o&(M#7(<;2Rtobt6PYd{)(&O#;Pm#flsv6z0{ONI zYUN3={BuVHUfu(3cd28d4+)IPWaP3yMwwQWW%u+e6w8ed14~IbDcri| zVZDISdll|f`NGhgBs9g>hWH;ISH-499GL4##`AgV~uQ6cg^jf5kY~vViF= zOkdZZzIoaI2&FN|=S%gBX1!J4zd3#s^fAyy;}Q19oxxa4+6S2vT5d+0rZTxx39YdM z%eNTN{DJjjRp#;;SRw4J1S8 zaCfu;k+^(QgJ=~)C5&f@qLeP@mSS6qGP|`IllW!*OK~977<&m=JTOtu>(HpWtgYu>5!p7 zS*6$n?H+S^=?LxC3hsdPtW^<^=pz#!Q;HDDxguj_Gl^wkGi)O}!Y6GWN*bG=fH*N? z%{sTK%dnQc7oLbrDHDF{oOOoMWkj@E&Yha}O<|e;UuzeJKL80Nle?$W;~P4TNo0XT zcx9RER7k$gS7aM}qK+9=UYov>hL|r4v~%!@iTmx&mBkI~Y&`RXq`;jz(k_l*`{jRT zMM?Gad~;_Ww;4ygv;OTbowSXYN)Dx^ zHE;SoOXf9pxy#YoURkfKFZzZNjORys@)}0+N^+cF@4#5pTt<2Mv7}hD1Od{sqCe%I z7){A?t0#_IDrqY;m@@k>jZuu0i#%i-?;!iIc-GgjA#yyFwkDGdda^uuo}cC~#GCUh zB#i${%)eA!jc`2T1w~0h5w@nXJvuOI2P<3fetGTbzL@)zE*?V1%Qp55*!gj>LjPX} zhXq9a&uWhhIwn|KtLG>RRg<%zE$d#>gLolv9yh$^UZ(gIJhi2*tPRV_k+~TwtOP0b4w1zT*WIab3X(4o9tW|C2#li8wli=4kMC_iaPh`7v&H z6^P;URIUKo#oTD6;cQ2@B6@W}>)~!PzBl3t;qO1YFqYMUMiMSm1J3?U%Oi7o{IQ@?jeXvIU8*Ooo> zhTA>ejsEqVsFSQoMS2P@_XjWoWu2y>wlMkW0+`w-n|s=O;SU)br8HJ4|JdUCG0}=JOx1C9nj?h5AIMz=aA;yuP!E$aiRnC4Q4|4@K9hgnQYza{U~uIAHWtnmB$BOCBD<9G za~{SjQb>xy$EwT*nj9|*rM6qtg|gWqK@C~mse6RjQMz@vFOR~GQV%wUKo_k~sAxnZ zG8zlCjJbUbC!P{rkgCq>f9(qytP1Qgx*Wrz`4+S;QfnHLz#jY@71>%G@qOH}v?Slb`xAT^Erf443(#{>Q|7rX0H?L}r!VZq zr%Z2m+Lu^=o&P30F&@=+x0R84|IR5t10L&He_my~$#10GIw>_FJSptH`lP7A)NV8N zBHio^P43b}8T`v8E3FN#Myv_GesNcBEr8>hXIX<7>CAEJpMfEt%2sdkpODjO#@ip` z_9R8pX|$6jyuyPll&U2K!tg?df9>^>$qEJK>hw7C*%y)#6B<@JLYp1!+bZBxhN(Bu zl(JYD4AdD=TRK(mx|K$rjshSfEdDH0+Y*=@%n}_138C39y)X+}WlwKzY zF_(M|S{Y1!J#Vl?>LWrd^(;> zQngUEd$Ev`SGeke-7N_3^;aTSiQ5zIb%G<85NJ}z30Xk`SIv~HR?6_4F67{ZG~a*F z{P6z+@3%MqUXXtU7kmp$D$ss?%bbPk9FD3PYo501rc4Es$Hg?h?05I}^kRw3XiiJ` zMe*w3XW4Jf+$=*qrn(jSW6R1^X7gupsFx=9z!#Y@OEzsvk|R1~vIwlC%G&>!ntHjQZn9)G(e5|w%0;Irl&!T$ z=7}7O5Adc$=iK`cAsLeW8?hq$sh>whjC-C zPgr^RH*K5~Mxm4Zt`3DHP=HN=(={Ik3-KcxUz?r7GyxL84EXa2B!N06G;;vVfx%A2 zfRh`-evPNe=YBT)({-UjJV<^I`M?-J*ntbqrg+bwk>e5!mKmrRQuvSLpz8JND{|c$ z=`zeu%Ib?=RVVY)9q!NVq0jAQDOif4N}i@if}30gy+m;py95pAE5+t29Vqcrb5qmQ z5?#AajfJonu|{r}j$tWGQhzVPT(29RrhIVMlp))4TD46BOURjmlQ|Po_XQgHWcQ}F zOPesTsY5S}dN#PuBko#gr3yr<$4%f6c;l3DNeWj9l6*;_$1>3Qz>5E~NBu7E+hSpZ zP5>8_>iF;tcQ+iDEWJ5tOrs7EFP5C^SgGch*ML~??b>B6(f+JK9;!mFK=~giuEVVR z#$Q8n$ILRFF0Y}ho`NIzH|S%@;EI{gUF1^UmfyR0I|lbZg>BHm#f-v-!1@!}4wJGc zF$|eMN?2pS{ZvVX0e+Xx9?vzJyoBP^n6Npkz)G=_7WNtf<9RFPHru>vDe#n&06Kz9 zDBbrc8n3Og%)kFlOY~_;3c6f)8xxlGxA1&(*lUlTixaM?_u!5Dq!rLdt&KD|%qipF zVw$P^6jgG78}FB~f#}zqn^Q`tu{xV(*y8jT*XZINj2I}$z6F+I@P>OrC)t+N;(muiWiAMh@7$>3l>^(w^=vJ z(E5p+d>aUx?AynSeV_z(=gMUNfvl9o-V&IDnbAH;du776@<pNs!qu>nw3ri zolE*w2N9AT`-H|)qQ8X3XaHc{h|s5{mAE6P7t>yP+eTbr`at)$K`Jn1R_>oK3+}!{ z5Ik8yqM=(kKqo7tJD~$S=iyKdqr-1&okFITJ@_b0vj#TGnHST|1s>XO4I!661O21F zz}3v~6zW#usQxp&#uqhRA7wOi|IwB4Uk&@+zW)U*k%|ZA&+m|L=6$ER+vvQz?N#Dj zT&a9%?Im+!NEI?8KJXPY*@PPd5!V~~d@_npp$%1W0hcF1ln)@2D!x{pg}l`#HTCkh z_7LOePqDipx$ptds}6gC)&gk(8`@n6k58E&QIOU74*tAEGnr$*H3|N1ilB5I3E zOV~YJO~e5wz|5oZ9XPzM7rZO}s(!mGf_*z6KfbO-tpjt`Zvs;hUM%1E$)0{mHH%eG ztz~^M`sWgWp($;0$Rd2gs(3kbFtd;=vv*JobQksfF3l5bY53_rbUdqKHZ{A={A>#)8T-hln1=W0oW78@*6Y96EKA zO}%V)V4r_CEad8!aG7zkuay4x-mgM9^Js%A&B_(|Y(Ak`lFoIqOQxvgpQ`l;Zu0j_ zWfr>{yMsRjKfI8Jffq{kSHSd1zQj?+Kf@eFrDBO$FZEa7Umy+#vZsx$c6&svI2;|c zM3XpDga^EIFuY9=t8P>p-QXPG;@xWm=MSAOdZP?R07^-9?GUwR?o9Mi+CNps=W;?a z%%F4=hY9t)YdD838=6_ZL$PIY+63A6UlH4IoP4!45x8*zva>DAv0f+hm?)G{{UkqA za+wqqXJsitqh}Bo9=JgrY2{MS!V+hoVRU5OjrA5ZqK(chx z{KMM6_joV_V9CIK8Mqs3+o5vLr#FCsXGp=9+N zek-Gn;iWS`DTf6SwBl3rmQz?0ws_&>rA48@xA35g zW^v3mn5OI*CZ;RZG9eE&ZEwesnB}@m{jq_N`p)eqZJrxt|=NC%L)`qB~8b3!f6{8Dq^-%MUk8aM|AERE;?g30D?=|brf_=c-72&ePlXSj#>9{&&sjbr%+oR8#(=hnvE#2Jy6oC+y$bt|gR-x-_ zp%D=-lu+L}fST{PAO0viykRCyV*kZ1p2MRWtyxd*&s8y0tB%nVuxe)C@^J`4J-kXO zDy3YsAjgHXj*&*fm8Dtw2JL7a;7QWohn5Pt(+vJL7*tE2HcNjw6zquQZprseWg6V% z_hg`R$=KH&wP%sDvuy1tRRkQ^U27f#f!OJQh7FtNWQisY=z$&r^~_CT_HT#rf)S)U zhaC31%vY(E1PCUiI3Ib#cp8KFAihs~^eP4G^2PX4F`UC+w@j!6CB#&y2uBeyqM5jw z_If@|u*d~dS3CiCw>$A+#SAeRyil7^qc#n!$SEay+G6V`G4MSyg$lx0wE)LeTdPqm zjCOtb*`P2~+IR^#^e466rD1|rV=-p;*6e)0S~J&>_`JjfFWMSC>dg3x`i*YYπA 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
    vP_xtjRC)WswnK?KpNVbL2B3LYa;e*g4 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 literal 0 HcmV?d00001 diff --git a/dist/glitch/glitch_assumption_toggle/sounds/blblblbl.mp3 b/dist/glitch/glitch_assumption_toggle/sounds/blblblbl.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..45ff06c45e5ab66ad2ed18b27ea5fabbbb5aadd0 GIT binary patch literal 44488 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 b0S6b+dI2cKGynjy94G(-0MP#z{`S8BI~dqH literal 0 HcmV?d00001 diff --git a/dist/glitch/glitch_assumption_toggle/sounds/blblblbl2.m4a b/dist/glitch/glitch_assumption_toggle/sounds/blblblbl2.m4a new file mode 100644 index 0000000000000000000000000000000000000000..3eaf5959ecab0ec7a7dcd987e27d171bd65b1ccf GIT binary patch literal 97799 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 H|49Bn1164{ literal 0 HcmV?d00001 diff --git a/dist/glitch/glitch_assumption_toggle/sounds/blblblbl2.mp3 b/dist/glitch/glitch_assumption_toggle/sounds/blblblbl2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a76bce9a49c2f4c5c87202afc7c64a01be702feb GIT binary patch literal 40994 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 Sz{^eq0Q>*yV*kId>wf@O?e#_g literal 0 HcmV?d00001 diff --git a/dist/glitch/glitch_assumption_toggle/types.d.ts b/dist/glitch/glitch_assumption_toggle/types.d.ts new file mode 100644 index 0000000..04d5f39 --- /dev/null +++ b/dist/glitch/glitch_assumption_toggle/types.d.ts @@ -0,0 +1,56 @@ +export interface GlitchComponentConfig { + id: string; + name: string; + version: string; + params: Record; +} +export interface GlitchHostBridge { + playSound?: (id: string, payload?: Record) => void; + stopSound?: (id: string, payload?: Record) => void; + emit?: (type: string, payload?: unknown) => void; +} +export interface GlitchComponentProps { + config: GlitchComponentConfig; + onComplete: (result: GlitchComponentResult) => void; + onProgress?: (percent: number) => void; + theme?: GlitchTheme; + className?: string; + host?: GlitchHostBridge; +} +export interface GlitchComponentResult { + success: boolean; + score?: number; + data?: unknown; + error?: string; +} +export interface GlitchTheme { + primary: string; + accent: string; + bg: string; + bgSecondary: string; + text: string; + textMuted: string; + border: string; +} +export interface GlitchComponentMetadata { + name: string; + displayName: string; + version: string; + paramSchema: ParamSchema; + defaultParams: Record; +} +export interface ParamSchema { + [key: string]: { + type: 'number' | 'string' | 'boolean' | 'color' | 'select' | 'range'; + label?: string; + description?: string; + default: unknown; + options?: { + value: string | number; + label: string; + }[]; + min?: number; + max?: number; + step?: number; + }; +} diff --git a/dist/glitch/glitch_ccd/assets/index-D02Mu-Ij.js b/dist/glitch/glitch_ccd/assets/index-D02Mu-Ij.js new file mode 100644 index 0000000..63f0e54 --- /dev/null +++ b/dist/glitch/glitch_ccd/assets/index-D02Mu-Ij.js @@ -0,0 +1,9 @@ +(function(){const z=document.createElement("link").relList;if(z&&z.supports&&z.supports("modulepreload"))return;for(const A of document.querySelectorAll('link[rel="modulepreload"]'))o(A);new MutationObserver(A=>{for(const _ of A)if(_.type==="childList")for(const C of _.addedNodes)C.tagName==="LINK"&&C.rel==="modulepreload"&&o(C)}).observe(document,{childList:!0,subtree:!0});function b(A){const _={};return A.integrity&&(_.integrity=A.integrity),A.referrerPolicy&&(_.referrerPolicy=A.referrerPolicy),A.crossOrigin==="use-credentials"?_.credentials="include":A.crossOrigin==="anonymous"?_.credentials="omit":_.credentials="same-origin",_}function o(A){if(A.ep)return;A.ep=!0;const _=b(A);fetch(A.href,_)}})();function f0(v){return v&&v.__esModule&&Object.prototype.hasOwnProperty.call(v,"default")?v.default:v}var df={exports:{}},An={};var zd;function s0(){if(zd)return An;zd=1;var v=Symbol.for("react.transitional.element"),z=Symbol.for("react.fragment");function b(o,A,_){var C=null;if(_!==void 0&&(C=""+_),A.key!==void 0&&(C=""+A.key),"key"in A){_={};for(var L in A)L!=="key"&&(_[L]=A[L])}else _=A;return A=_.ref,{$$typeof:v,type:o,key:C,ref:A!==void 0?A:null,props:_}}return An.Fragment=z,An.jsx=b,An.jsxs=b,An}var Ad;function o0(){return Ad||(Ad=1,df.exports=s0()),df.exports}var f=o0(),hf={exports:{}},Nn={},mf={exports:{}},vf={};var Nd;function r0(){return Nd||(Nd=1,(function(v){function z(x,M){var X=x.length;x.push(M);l:for(;0>>1,pl=x[ml];if(0>>1;mlA(D,X))RA(w,D)?(x[ml]=w,x[R]=X,ml=R):(x[ml]=D,x[N]=X,ml=N);else if(RA(w,X))x[ml]=w,x[R]=X,ml=R;else break l}}return M}function A(x,M){var X=x.sortIndex-M.sortIndex;return X!==0?X:x.id-M.id}if(v.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var _=performance;v.unstable_now=function(){return _.now()}}else{var C=Date,L=C.now();v.unstable_now=function(){return C.now()-L}}var O=[],E=[],G=1,H=null,J=3,_l=!1,xl=!1,il=!1,El=!1,V=typeof setTimeout=="function"?setTimeout:null,Rl=typeof clearTimeout=="function"?clearTimeout:null,Tl=typeof setImmediate<"u"?setImmediate:null;function jl(x){for(var M=b(E);M!==null;){if(M.callback===null)o(E);else if(M.startTime<=x)o(E),M.sortIndex=M.expirationTime,z(O,M);else break;M=b(E)}}function el(x){if(il=!1,jl(x),!xl)if(b(O)!==null)xl=!0,fl||(fl=!0,bl());else{var M=b(E);M!==null&&Fl(el,M.startTime-x)}}var fl=!1,Q=-1,hl=5,Zl=-1;function $(){return El?!0:!(v.unstable_now()-Zlx&&$());){var ml=H.callback;if(typeof ml=="function"){H.callback=null,J=H.priorityLevel;var pl=ml(H.expirationTime<=x);if(x=v.unstable_now(),typeof pl=="function"){H.callback=pl,jl(x),M=!0;break t}H===b(O)&&o(O),jl(x)}else o(O);H=b(O)}if(H!==null)M=!0;else{var d=b(E);d!==null&&Fl(el,d.startTime-x),M=!1}}break l}finally{H=null,J=X,_l=!1}M=void 0}}finally{M?bl():fl=!1}}}var bl;if(typeof Tl=="function")bl=function(){Tl(al)};else if(typeof MessageChannel<"u"){var it=new MessageChannel,Ml=it.port2;it.port1.onmessage=al,bl=function(){Ml.postMessage(null)}}else bl=function(){V(al,0)};function Fl(x,M){Q=V(function(){x(v.unstable_now())},M)}v.unstable_IdlePriority=5,v.unstable_ImmediatePriority=1,v.unstable_LowPriority=4,v.unstable_NormalPriority=3,v.unstable_Profiling=null,v.unstable_UserBlockingPriority=2,v.unstable_cancelCallback=function(x){x.callback=null},v.unstable_forceFrameRate=function(x){0>x||125ml?(x.sortIndex=X,z(E,x),b(O)===null&&x===b(E)&&(il?(Rl(Q),Q=-1):il=!0,Fl(el,X-ml))):(x.sortIndex=pl,z(O,x),xl||_l||(xl=!0,fl||(fl=!0,bl()))),x},v.unstable_shouldYield=$,v.unstable_wrapCallback=function(x){var M=J;return function(){var X=J;J=M;try{return x.apply(this,arguments)}finally{J=X}}}})(vf)),vf}var _d;function d0(){return _d||(_d=1,mf.exports=r0()),mf.exports}var yf={exports:{}},Z={};var Md;function h0(){if(Md)return Z;Md=1;var v=Symbol.for("react.transitional.element"),z=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),A=Symbol.for("react.profiler"),_=Symbol.for("react.consumer"),C=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),O=Symbol.for("react.suspense"),E=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),H=Symbol.for("react.activity"),J=Symbol.iterator;function _l(d){return d===null||typeof d!="object"?null:(d=J&&d[J]||d["@@iterator"],typeof d=="function"?d:null)}var xl={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},il=Object.assign,El={};function V(d,N,D){this.props=d,this.context=N,this.refs=El,this.updater=D||xl}V.prototype.isReactComponent={},V.prototype.setState=function(d,N){if(typeof d!="object"&&typeof d!="function"&&d!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,d,N,"setState")},V.prototype.forceUpdate=function(d){this.updater.enqueueForceUpdate(this,d,"forceUpdate")};function Rl(){}Rl.prototype=V.prototype;function Tl(d,N,D){this.props=d,this.context=N,this.refs=El,this.updater=D||xl}var jl=Tl.prototype=new Rl;jl.constructor=Tl,il(jl,V.prototype),jl.isPureReactComponent=!0;var el=Array.isArray;function fl(){}var Q={H:null,A:null,T:null,S:null},hl=Object.prototype.hasOwnProperty;function Zl(d,N,D){var R=D.ref;return{$$typeof:v,type:d,key:N,ref:R!==void 0?R:null,props:D}}function $(d,N){return Zl(d.type,N,d.props)}function al(d){return typeof d=="object"&&d!==null&&d.$$typeof===v}function bl(d){var N={"=":"=0",":":"=2"};return"$"+d.replace(/[=:]/g,function(D){return N[D]})}var it=/\/+/g;function Ml(d,N){return typeof d=="object"&&d!==null&&d.key!=null?bl(""+d.key):N.toString(36)}function Fl(d){switch(d.status){case"fulfilled":return d.value;case"rejected":throw d.reason;default:switch(typeof d.status=="string"?d.then(fl,fl):(d.status="pending",d.then(function(N){d.status==="pending"&&(d.status="fulfilled",d.value=N)},function(N){d.status==="pending"&&(d.status="rejected",d.reason=N)})),d.status){case"fulfilled":return d.value;case"rejected":throw d.reason}}throw d}function x(d,N,D,R,w){var F=typeof d;(F==="undefined"||F==="boolean")&&(d=null);var sl=!1;if(d===null)sl=!0;else switch(F){case"bigint":case"string":case"number":sl=!0;break;case"object":switch(d.$$typeof){case v:case z:sl=!0;break;case G:return sl=d._init,x(sl(d._payload),N,D,R,w)}}if(sl)return w=w(d),sl=R===""?"."+Ml(d,0):R,el(w)?(D="",sl!=null&&(D=sl.replace(it,"$&/")+"/"),x(w,N,D,"",function(Ua){return Ua})):w!=null&&(al(w)&&(w=$(w,D+(w.key==null||d&&d.key===w.key?"":(""+w.key).replace(it,"$&/")+"/")+sl)),N.push(w)),1;sl=0;var Il=R===""?".":R+":";if(el(d))for(var Ul=0;Ul"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(v)}catch(z){console.error(z)}}return v(),gf.exports=m0(),gf.exports}var Cd;function y0(){if(Cd)return Nn;Cd=1;var v=d0(),z=xf(),b=v0();function o(l){var t="https://react.dev/errors/"+l;if(1pl||(l.current=ml[pl],ml[pl]=null,pl--)}function D(l,t){pl++,ml[pl]=l.current,l.current=t}var R=d(null),w=d(null),F=d(null),sl=d(null);function Il(l,t){switch(D(F,t),D(w,l),D(R,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?Wr(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=Wr(t),l=$r(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}N(R),D(R,l)}function Ul(){N(R),N(w),N(F)}function Ua(l){l.memoizedState!==null&&D(sl,l);var t=R.current,e=$r(t,l.type);t!==e&&(D(w,l),D(R,e))}function _n(l){w.current===l&&(N(R),N(w)),sl.current===l&&(N(sl),En._currentValue=X)}var Ju,Tf;function Ae(l){if(Ju===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ju=t&&t[1]||"",Tf=-1)":-1n||s[a]!==y[n]){var S=` +`+s[a].replace(" at new "," at ");return l.displayName&&S.includes("")&&(S=S.replace("",l.displayName)),S}while(1<=a&&0<=n);break}}}finally{Wu=!1,Error.prepareStackTrace=e}return(e=l?l.displayName||l.name:"")?Ae(e):""}function Yd(l,t){switch(l.tag){case 26:case 27:case 5:return Ae(l.type);case 16:return Ae("Lazy");case 13:return l.child!==t&&t!==null?Ae("Suspense Fallback"):Ae("Suspense");case 19:return Ae("SuspenseList");case 0:case 15:return $u(l.type,!1);case 11:return $u(l.type.render,!1);case 1:return $u(l.type,!0);case 31:return Ae("Activity");default:return""}}function jf(l){try{var t="",e=null;do t+=Yd(l,e),e=l,l=l.return;while(l);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var Fu=Object.prototype.hasOwnProperty,ku=v.unstable_scheduleCallback,Iu=v.unstable_cancelCallback,Xd=v.unstable_shouldYield,Qd=v.unstable_requestPaint,ft=v.unstable_now,Ld=v.unstable_getCurrentPriorityLevel,zf=v.unstable_ImmediatePriority,Af=v.unstable_UserBlockingPriority,Mn=v.unstable_NormalPriority,Zd=v.unstable_LowPriority,Nf=v.unstable_IdlePriority,Vd=v.log,wd=v.unstable_setDisableYieldValue,Ca=null,st=null;function Pt(l){if(typeof Vd=="function"&&wd(l),st&&typeof st.setStrictMode=="function")try{st.setStrictMode(Ca,l)}catch{}}var ot=Math.clz32?Math.clz32:Wd,Kd=Math.log,Jd=Math.LN2;function Wd(l){return l>>>=0,l===0?32:31-(Kd(l)/Jd|0)|0}var On=256,Dn=262144,Un=4194304;function Ne(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return l&261888;case 262144:case 524288:case 1048576:case 2097152:return l&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Cn(l,t,e){var a=l.pendingLanes;if(a===0)return 0;var n=0,u=l.suspendedLanes,c=l.pingedLanes;l=l.warmLanes;var i=a&134217727;return i!==0?(a=i&~u,a!==0?n=Ne(a):(c&=i,c!==0?n=Ne(c):e||(e=i&~l,e!==0&&(n=Ne(e))))):(i=a&~u,i!==0?n=Ne(i):c!==0?n=Ne(c):e||(e=a&~l,e!==0&&(n=Ne(e)))),n===0?0:t!==0&&t!==n&&(t&u)===0&&(u=n&-n,e=t&-t,u>=e||u===32&&(e&4194048)!==0)?t:n}function Ha(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function $d(l,t){switch(l){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function _f(){var l=Un;return Un<<=1,(Un&62914560)===0&&(Un=4194304),l}function Pu(l){for(var t=[],e=0;31>e;e++)t.push(l);return t}function Ra(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Fd(l,t,e,a,n,u){var c=l.pendingLanes;l.pendingLanes=e,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=e,l.entangledLanes&=e,l.errorRecoveryDisabledLanes&=e,l.shellSuspendCounter=0;var i=l.entanglements,s=l.expirationTimes,y=l.hiddenUpdates;for(e=c&~e;0"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var eh=/[\n"\\]/g;function pt(l){return l.replace(eh,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function uc(l,t,e,a,n,u,c,i){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+bt(t)):l.value!==""+bt(t)&&(l.value=""+bt(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?cc(l,c,bt(t)):e!=null?cc(l,c,bt(e)):a!=null&&l.removeAttribute("value"),n==null&&u!=null&&(l.defaultChecked=!!u),n!=null&&(l.checked=n&&typeof n!="function"&&typeof n!="symbol"),i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.name=""+bt(i):l.removeAttribute("name")}function Qf(l,t,e,a,n,u,c,i){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(l.type=u),t!=null||e!=null){if(!(u!=="submit"&&u!=="reset"||t!=null)){nc(l);return}e=e!=null?""+bt(e):"",t=t!=null?""+bt(t):e,i||t===l.value||(l.value=t),l.defaultValue=t}a=a??n,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=i?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c),nc(l)}function cc(l,t,e){t==="number"&&Bn(l.ownerDocument)===l||l.defaultValue===""+e||(l.defaultValue=""+e)}function Ie(l,t,e,a){if(l=l.options,t){t={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),rc=!1;if(qt)try{var Ya={};Object.defineProperty(Ya,"passive",{get:function(){rc=!0}}),window.addEventListener("test",Ya,Ya),window.removeEventListener("test",Ya,Ya)}catch{rc=!1}var te=null,dc=null,Gn=null;function Wf(){if(Gn)return Gn;var l,t=dc,e=t.length,a,n="value"in te?te.value:te.textContent,u=n.length;for(l=0;l=La),ls=" ",ts=!1;function es(l,t){switch(l){case"keyup":return Oh.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function as(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var ea=!1;function Uh(l,t){switch(l){case"compositionend":return as(t);case"keypress":return t.which!==32?null:(ts=!0,ls);case"textInput":return l=t.data,l===ls&&ts?null:l;default:return null}}function Ch(l,t){if(ea)return l==="compositionend"||!gc&&es(l,t)?(l=Wf(),Gn=dc=te=null,ea=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:e,offset:t-l};l=a}l:{for(;e;){if(e.nextSibling){e=e.nextSibling;break l}e=e.parentNode}e=void 0}e=rs(e)}}function hs(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?hs(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function ms(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Bn(l.document);t instanceof l.HTMLIFrameElement;){try{var e=typeof t.contentWindow.location.href=="string"}catch{e=!1}if(e)l=t.contentWindow;else break;t=Bn(l.document)}return t}function Sc(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var Qh=qt&&"documentMode"in document&&11>=document.documentMode,aa=null,xc=null,Ka=null,Ec=!1;function vs(l,t,e){var a=e.window===e?e.document:e.nodeType===9?e:e.ownerDocument;Ec||aa==null||aa!==Bn(a)||(a=aa,"selectionStart"in a&&Sc(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ka&&wa(Ka,a)||(Ka=a,a=Du(xc,"onSelect"),0>=c,n-=c,Dt=1<<32-ot(t)+n|e<W?(ll=B,B=null):ll=B.sibling;var ul=g(h,B,m[W],T);if(ul===null){B===null&&(B=ll);break}l&&B&&ul.alternate===null&&t(h,B),r=u(ul,r,W),nl===null?q=ul:nl.sibling=ul,nl=ul,B=ll}if(W===m.length)return e(h,B),tl&&Yt(h,W),q;if(B===null){for(;WW?(ll=B,B=null):ll=B.sibling;var Te=g(h,B,ul.value,T);if(Te===null){B===null&&(B=ll);break}l&&B&&Te.alternate===null&&t(h,B),r=u(Te,r,W),nl===null?q=Te:nl.sibling=Te,nl=Te,B=ll}if(ul.done)return e(h,B),tl&&Yt(h,W),q;if(B===null){for(;!ul.done;W++,ul=m.next())ul=j(h,ul.value,T),ul!==null&&(r=u(ul,r,W),nl===null?q=ul:nl.sibling=ul,nl=ul);return tl&&Yt(h,W),q}for(B=a(B);!ul.done;W++,ul=m.next())ul=p(B,h,W,ul.value,T),ul!==null&&(l&&ul.alternate!==null&&B.delete(ul.key===null?W:ul.key),r=u(ul,r,W),nl===null?q=ul:nl.sibling=ul,nl=ul);return l&&B.forEach(function(i0){return t(h,i0)}),tl&&Yt(h,W),q}function gl(h,r,m,T){if(typeof m=="object"&&m!==null&&m.type===il&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case _l:l:{for(var q=m.key;r!==null;){if(r.key===q){if(q=m.type,q===il){if(r.tag===7){e(h,r.sibling),T=n(r,m.props.children),T.return=h,h=T;break l}}else if(r.elementType===q||typeof q=="object"&&q!==null&&q.$$typeof===hl&&Ge(q)===r.type){e(h,r.sibling),T=n(r,m.props),Ia(T,m),T.return=h,h=T;break l}e(h,r);break}else t(h,r);r=r.sibling}m.type===il?(T=Ce(m.props.children,h.mode,T,m.key),T.return=h,h=T):(T=Wn(m.type,m.key,m.props,null,h.mode,T),Ia(T,m),T.return=h,h=T)}return c(h);case xl:l:{for(q=m.key;r!==null;){if(r.key===q)if(r.tag===4&&r.stateNode.containerInfo===m.containerInfo&&r.stateNode.implementation===m.implementation){e(h,r.sibling),T=n(r,m.children||[]),T.return=h,h=T;break l}else{e(h,r);break}else t(h,r);r=r.sibling}T=Mc(m,h.mode,T),T.return=h,h=T}return c(h);case hl:return m=Ge(m),gl(h,r,m,T)}if(Fl(m))return U(h,r,m,T);if(bl(m)){if(q=bl(m),typeof q!="function")throw Error(o(150));return m=q.call(m),Y(h,r,m,T)}if(typeof m.then=="function")return gl(h,r,tu(m),T);if(m.$$typeof===Tl)return gl(h,r,kn(h,m),T);eu(h,m)}return typeof m=="string"&&m!==""||typeof m=="number"||typeof m=="bigint"?(m=""+m,r!==null&&r.tag===6?(e(h,r.sibling),T=n(r,m),T.return=h,h=T):(e(h,r),T=_c(m,h.mode,T),T.return=h,h=T),c(h)):e(h,r)}return function(h,r,m,T){try{ka=0;var q=gl(h,r,m,T);return ma=null,q}catch(B){if(B===ha||B===Pn)throw B;var nl=dt(29,B,null,h.mode);return nl.lanes=T,nl.return=h,nl}}}var Xe=Gs(!0),Ys=Gs(!1),ce=!1;function Qc(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Lc(l,t){l=l.updateQueue,t.updateQueue===l&&(t.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function ie(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function fe(l,t,e){var a=l.updateQueue;if(a===null)return null;if(a=a.shared,(cl&2)!==0){var n=a.pending;return n===null?t.next=t:(t.next=n.next,n.next=t),a.pending=t,t=Jn(l),Es(l,null,e),t}return Kn(l,a,t,e),Jn(l)}function Pa(l,t,e){if(t=t.updateQueue,t!==null&&(t=t.shared,(e&4194048)!==0)){var a=t.lanes;a&=l.pendingLanes,e|=a,t.lanes=e,Of(l,e)}}function Zc(l,t){var e=l.updateQueue,a=l.alternate;if(a!==null&&(a=a.updateQueue,e===a)){var n=null,u=null;if(e=e.firstBaseUpdate,e!==null){do{var c={lane:e.lane,tag:e.tag,payload:e.payload,callback:null,next:null};u===null?n=u=c:u=u.next=c,e=e.next}while(e!==null);u===null?n=u=t:u=u.next=t}else n=u=t;e={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:u,shared:a.shared,callbacks:a.callbacks},l.updateQueue=e;return}l=e.lastBaseUpdate,l===null?e.firstBaseUpdate=t:l.next=t,e.lastBaseUpdate=t}var Vc=!1;function ln(){if(Vc){var l=da;if(l!==null)throw l}}function tn(l,t,e,a){Vc=!1;var n=l.updateQueue;ce=!1;var u=n.firstBaseUpdate,c=n.lastBaseUpdate,i=n.shared.pending;if(i!==null){n.shared.pending=null;var s=i,y=s.next;s.next=null,c===null?u=y:c.next=y,c=s;var S=l.alternate;S!==null&&(S=S.updateQueue,i=S.lastBaseUpdate,i!==c&&(i===null?S.firstBaseUpdate=y:i.next=y,S.lastBaseUpdate=s))}if(u!==null){var j=n.baseState;c=0,S=y=s=null,i=u;do{var g=i.lane&-536870913,p=g!==i.lane;if(p?(P&g)===g:(a&g)===g){g!==0&&g===ra&&(Vc=!0),S!==null&&(S=S.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});l:{var U=l,Y=i;g=t;var gl=e;switch(Y.tag){case 1:if(U=Y.payload,typeof U=="function"){j=U.call(gl,j,g);break l}j=U;break l;case 3:U.flags=U.flags&-65537|128;case 0:if(U=Y.payload,g=typeof U=="function"?U.call(gl,j,g):U,g==null)break l;j=H({},j,g);break l;case 2:ce=!0}}g=i.callback,g!==null&&(l.flags|=64,p&&(l.flags|=8192),p=n.callbacks,p===null?n.callbacks=[g]:p.push(g))}else p={lane:g,tag:i.tag,payload:i.payload,callback:i.callback,next:null},S===null?(y=S=p,s=j):S=S.next=p,c|=g;if(i=i.next,i===null){if(i=n.shared.pending,i===null)break;p=i,i=p.next,p.next=null,n.lastBaseUpdate=p,n.shared.pending=null}}while(!0);S===null&&(s=j),n.baseState=s,n.firstBaseUpdate=y,n.lastBaseUpdate=S,u===null&&(n.shared.lanes=0),he|=c,l.lanes=c,l.memoizedState=j}}function Xs(l,t){if(typeof l!="function")throw Error(o(191,l));l.call(t)}function Qs(l,t){var e=l.callbacks;if(e!==null)for(l.callbacks=null,l=0;lu?u:8;var c=x.T,i={};x.T=i,si(l,!1,t,e);try{var s=n(),y=x.S;if(y!==null&&y(i,s),s!==null&&typeof s=="object"&&typeof s.then=="function"){var S=Fh(s,a);nn(l,t,S,gt(l))}else nn(l,t,a,gt(l))}catch(j){nn(l,t,{then:function(){},status:"rejected",reason:j},gt())}finally{M.p=u,c!==null&&i.types!==null&&(c.types=i.types),x.T=c}}function em(){}function ii(l,t,e,a){if(l.tag!==5)throw Error(o(476));var n=So(l).queue;po(l,n,t,X,e===null?em:function(){return xo(l),e(a)})}function So(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:X,baseState:X,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zt,lastRenderedState:X},next:null};var e={};return t.next={memoizedState:e,baseState:e,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zt,lastRenderedState:e},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function xo(l){var t=So(l);t.next===null&&(t=l.alternate.memoizedState),nn(l,t.next.queue,{},gt())}function fi(){return Kl(En)}function Eo(){return Hl().memoizedState}function To(){return Hl().memoizedState}function am(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var e=gt();l=ie(e);var a=fe(t,l,e);a!==null&&(ct(a,t,e),Pa(a,t,e)),t={cache:qc()},l.payload=t;return}t=t.return}}function nm(l,t,e){var a=gt();e={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null},du(l)?zo(t,e):(e=Ac(l,t,e,a),e!==null&&(ct(e,l,a),Ao(e,t,a)))}function jo(l,t,e){var a=gt();nn(l,t,e,a)}function nn(l,t,e,a){var n={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null};if(du(l))zo(t,n);else{var u=l.alternate;if(l.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var c=t.lastRenderedState,i=u(c,e);if(n.hasEagerState=!0,n.eagerState=i,rt(i,c))return Kn(l,t,n,0),Sl===null&&wn(),!1}catch{}if(e=Ac(l,t,n,a),e!==null)return ct(e,l,a),Ao(e,t,a),!0}return!1}function si(l,t,e,a){if(a={lane:2,revertLane:Qi(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},du(l)){if(t)throw Error(o(479))}else t=Ac(l,e,a,2),t!==null&&ct(t,l,2)}function du(l){var t=l.alternate;return l===K||t!==null&&t===K}function zo(l,t){ya=uu=!0;var e=l.pending;e===null?t.next=t:(t.next=e.next,e.next=t),l.pending=t}function Ao(l,t,e){if((e&4194048)!==0){var a=t.lanes;a&=l.pendingLanes,e|=a,t.lanes=e,Of(l,e)}}var un={readContext:Kl,use:fu,useCallback:Ol,useContext:Ol,useEffect:Ol,useImperativeHandle:Ol,useLayoutEffect:Ol,useInsertionEffect:Ol,useMemo:Ol,useReducer:Ol,useRef:Ol,useState:Ol,useDebugValue:Ol,useDeferredValue:Ol,useTransition:Ol,useSyncExternalStore:Ol,useId:Ol,useHostTransitionStatus:Ol,useFormState:Ol,useActionState:Ol,useOptimistic:Ol,useMemoCache:Ol,useCacheRefresh:Ol};un.useEffectEvent=Ol;var No={readContext:Kl,use:fu,useCallback:function(l,t){return Pl().memoizedState=[l,t===void 0?null:t],l},useContext:Kl,useEffect:so,useImperativeHandle:function(l,t,e){e=e!=null?e.concat([l]):null,ou(4194308,4,mo.bind(null,t,l),e)},useLayoutEffect:function(l,t){return ou(4194308,4,l,t)},useInsertionEffect:function(l,t){ou(4,2,l,t)},useMemo:function(l,t){var e=Pl();t=t===void 0?null:t;var a=l();if(Qe){Pt(!0);try{l()}finally{Pt(!1)}}return e.memoizedState=[a,t],a},useReducer:function(l,t,e){var a=Pl();if(e!==void 0){var n=e(t);if(Qe){Pt(!0);try{e(t)}finally{Pt(!1)}}}else n=t;return a.memoizedState=a.baseState=n,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:n},a.queue=l,l=l.dispatch=nm.bind(null,K,l),[a.memoizedState,l]},useRef:function(l){var t=Pl();return l={current:l},t.memoizedState=l},useState:function(l){l=ei(l);var t=l.queue,e=jo.bind(null,K,t);return t.dispatch=e,[l.memoizedState,e]},useDebugValue:ui,useDeferredValue:function(l,t){var e=Pl();return ci(e,l,t)},useTransition:function(){var l=ei(!1);return l=po.bind(null,K,l.queue,!0,!1),Pl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,e){var a=K,n=Pl();if(tl){if(e===void 0)throw Error(o(407));e=e()}else{if(e=t(),Sl===null)throw Error(o(349));(P&127)!==0||Js(a,t,e)}n.memoizedState=e;var u={value:e,getSnapshot:t};return n.queue=u,so($s.bind(null,a,u,l),[l]),a.flags|=2048,ba(9,{destroy:void 0},Ws.bind(null,a,u,e,t),null),e},useId:function(){var l=Pl(),t=Sl.identifierPrefix;if(tl){var e=Ut,a=Dt;e=(a&~(1<<32-ot(a)-1)).toString(32)+e,t="_"+t+"R_"+e,e=cu++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof a.is=="string"?c.createElement("select",{is:a.is}):c.createElement("select"),a.multiple?u.multiple=!0:a.size&&(u.size=a.size);break;default:u=typeof a.is=="string"?c.createElement(n,{is:a.is}):c.createElement(n)}}u[Vl]=t,u[lt]=a;l:for(c=t.child;c!==null;){if(c.tag===5||c.tag===6)u.appendChild(c.stateNode);else if(c.tag!==4&&c.tag!==27&&c.child!==null){c.child.return=c,c=c.child;continue}if(c===t)break l;for(;c.sibling===null;){if(c.return===null||c.return===t)break l;c=c.return}c.sibling.return=c.return,c=c.sibling}t.stateNode=u;l:switch(Wl(u,n,a),n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break l;case"img":a=!0;break l;default:a=!1}a&&wt(t)}}return Al(t),Ti(t,t.type,l===null?null:l.memoizedProps,t.pendingProps,e),null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&wt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(o(166));if(l=F.current,sa(t)){if(l=t.stateNode,e=t.memoizedProps,a=null,n=wl,n!==null)switch(n.tag){case 27:case 5:a=n.memoizedProps}l[Vl]=t,l=!!(l.nodeValue===e||a!==null&&a.suppressHydrationWarning===!0||Kr(l.nodeValue,e)),l||ne(t,!0)}else l=Uu(l).createTextNode(a),l[Vl]=t,t.stateNode=l}return Al(t),null;case 31:if(e=t.memoizedState,l===null||l.memoizedState!==null){if(a=sa(t),e!==null){if(l===null){if(!a)throw Error(o(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(o(557));l[Vl]=t}else He(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Al(t),l=!1}else e=Cc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=e),l=!0;if(!l)return t.flags&256?(mt(t),t):(mt(t),null);if((t.flags&128)!==0)throw Error(o(558))}return Al(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(n=sa(t),a!==null&&a.dehydrated!==null){if(l===null){if(!n)throw Error(o(318));if(n=t.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(o(317));n[Vl]=t}else He(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Al(t),n=!1}else n=Cc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=n),n=!0;if(!n)return t.flags&256?(mt(t),t):(mt(t),null)}return mt(t),(t.flags&128)!==0?(t.lanes=e,t):(e=a!==null,l=l!==null&&l.memoizedState!==null,e&&(a=t.child,n=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(n=a.alternate.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==n&&(a.flags|=2048)),e!==l&&e&&(t.child.flags|=8192),gu(t,t.updateQueue),Al(t),null);case 4:return Ul(),l===null&&wi(t.stateNode.containerInfo),Al(t),null;case 10:return Qt(t.type),Al(t),null;case 19:if(N(Cl),a=t.memoizedState,a===null)return Al(t),null;if(n=(t.flags&128)!==0,u=a.rendering,u===null)if(n)fn(a,!1);else{if(Dl!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(u=nu(l),u!==null){for(t.flags|=128,fn(a,!1),l=u.updateQueue,t.updateQueue=l,gu(t,l),t.subtreeFlags=0,l=e,e=t.child;e!==null;)Ts(e,l),e=e.sibling;return D(Cl,Cl.current&1|2),tl&&Yt(t,a.treeForkCount),t.child}l=l.sibling}a.tail!==null&&ft()>Eu&&(t.flags|=128,n=!0,fn(a,!1),t.lanes=4194304)}else{if(!n)if(l=nu(u),l!==null){if(t.flags|=128,n=!0,l=l.updateQueue,t.updateQueue=l,gu(t,l),fn(a,!0),a.tail===null&&a.tailMode==="hidden"&&!u.alternate&&!tl)return Al(t),null}else 2*ft()-a.renderingStartTime>Eu&&e!==536870912&&(t.flags|=128,n=!0,fn(a,!1),t.lanes=4194304);a.isBackwards?(u.sibling=t.child,t.child=u):(l=a.last,l!==null?l.sibling=u:t.child=u,a.last=u)}return a.tail!==null?(l=a.tail,a.rendering=l,a.tail=l.sibling,a.renderingStartTime=ft(),l.sibling=null,e=Cl.current,D(Cl,n?e&1|2:e&1),tl&&Yt(t,a.treeForkCount),l):(Al(t),null);case 22:case 23:return mt(t),Kc(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(e&536870912)!==0&&(t.flags&128)===0&&(Al(t),t.subtreeFlags&6&&(t.flags|=8192)):Al(t),e=t.updateQueue,e!==null&&gu(t,e.retryQueue),e=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(e=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==e&&(t.flags|=2048),l!==null&&N(qe),null;case 24:return e=null,l!==null&&(e=l.memoizedState.cache),t.memoizedState.cache!==e&&(t.flags|=2048),Qt(Bl),Al(t),null;case 25:return null;case 30:return null}throw Error(o(156,t.tag))}function sm(l,t){switch(Dc(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return Qt(Bl),Ul(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return _n(t),null;case 31:if(t.memoizedState!==null){if(mt(t),t.alternate===null)throw Error(o(340));He()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 13:if(mt(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(o(340));He()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return N(Cl),null;case 4:return Ul(),null;case 10:return Qt(t.type),null;case 22:case 23:return mt(t),Kc(),l!==null&&N(qe),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return Qt(Bl),null;case 25:return null;default:return null}}function ko(l,t){switch(Dc(t),t.tag){case 3:Qt(Bl),Ul();break;case 26:case 27:case 5:_n(t);break;case 4:Ul();break;case 31:t.memoizedState!==null&&mt(t);break;case 13:mt(t);break;case 19:N(Cl);break;case 10:Qt(t.type);break;case 22:case 23:mt(t),Kc(),l!==null&&N(qe);break;case 24:Qt(Bl)}}function sn(l,t){try{var e=t.updateQueue,a=e!==null?e.lastEffect:null;if(a!==null){var n=a.next;e=n;do{if((e.tag&l)===l){a=void 0;var u=e.create,c=e.inst;a=u(),c.destroy=a}e=e.next}while(e!==n)}}catch(i){rl(t,t.return,i)}}function re(l,t,e){try{var a=t.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var u=n.next;a=u;do{if((a.tag&l)===l){var c=a.inst,i=c.destroy;if(i!==void 0){c.destroy=void 0,n=t;var s=e,y=i;try{y()}catch(S){rl(n,s,S)}}}a=a.next}while(a!==u)}}catch(S){rl(t,t.return,S)}}function Io(l){var t=l.updateQueue;if(t!==null){var e=l.stateNode;try{Qs(t,e)}catch(a){rl(l,l.return,a)}}}function Po(l,t,e){e.props=Le(l.type,l.memoizedProps),e.state=l.memoizedState;try{e.componentWillUnmount()}catch(a){rl(l,t,a)}}function on(l,t){try{var e=l.ref;if(e!==null){switch(l.tag){case 26:case 27:case 5:var a=l.stateNode;break;case 30:a=l.stateNode;break;default:a=l.stateNode}typeof e=="function"?l.refCleanup=e(a):e.current=a}}catch(n){rl(l,t,n)}}function Ct(l,t){var e=l.ref,a=l.refCleanup;if(e!==null)if(typeof a=="function")try{a()}catch(n){rl(l,t,n)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof e=="function")try{e(null)}catch(n){rl(l,t,n)}else e.current=null}function lr(l){var t=l.type,e=l.memoizedProps,a=l.stateNode;try{l:switch(t){case"button":case"input":case"select":case"textarea":e.autoFocus&&a.focus();break l;case"img":e.src?a.src=e.src:e.srcSet&&(a.srcset=e.srcSet)}}catch(n){rl(l,l.return,n)}}function ji(l,t,e){try{var a=l.stateNode;Dm(a,l.type,e,t),a[lt]=t}catch(n){rl(l,l.return,n)}}function tr(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27&&be(l.type)||l.tag===4}function zi(l){l:for(;;){for(;l.sibling===null;){if(l.return===null||tr(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.tag===27&&be(l.type)||l.flags&2||l.child===null||l.tag===4)continue l;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function Ai(l,t,e){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e).insertBefore(l,t):(t=e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,t.appendChild(l),e=e._reactRootContainer,e!=null||t.onclick!==null||(t.onclick=Bt));else if(a!==4&&(a===27&&be(l.type)&&(e=l.stateNode,t=null),l=l.child,l!==null))for(Ai(l,t,e),l=l.sibling;l!==null;)Ai(l,t,e),l=l.sibling}function bu(l,t,e){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?e.insertBefore(l,t):e.appendChild(l);else if(a!==4&&(a===27&&be(l.type)&&(e=l.stateNode),l=l.child,l!==null))for(bu(l,t,e),l=l.sibling;l!==null;)bu(l,t,e),l=l.sibling}function er(l){var t=l.stateNode,e=l.memoizedProps;try{for(var a=l.type,n=t.attributes;n.length;)t.removeAttributeNode(n[0]);Wl(t,a,e),t[Vl]=l,t[lt]=e}catch(u){rl(l,l.return,u)}}var Kt=!1,Yl=!1,Ni=!1,ar=typeof WeakSet=="function"?WeakSet:Set,Ll=null;function om(l,t){if(l=l.containerInfo,Wi=Yu,l=ms(l),Sc(l)){if("selectionStart"in l)var e={start:l.selectionStart,end:l.selectionEnd};else l:{e=(e=l.ownerDocument)&&e.defaultView||window;var a=e.getSelection&&e.getSelection();if(a&&a.rangeCount!==0){e=a.anchorNode;var n=a.anchorOffset,u=a.focusNode;a=a.focusOffset;try{e.nodeType,u.nodeType}catch{e=null;break l}var c=0,i=-1,s=-1,y=0,S=0,j=l,g=null;t:for(;;){for(var p;j!==e||n!==0&&j.nodeType!==3||(i=c+n),j!==u||a!==0&&j.nodeType!==3||(s=c+a),j.nodeType===3&&(c+=j.nodeValue.length),(p=j.firstChild)!==null;)g=j,j=p;for(;;){if(j===l)break t;if(g===e&&++y===n&&(i=c),g===u&&++S===a&&(s=c),(p=j.nextSibling)!==null)break;j=g,g=j.parentNode}j=p}e=i===-1||s===-1?null:{start:i,end:s}}else e=null}e=e||{start:0,end:0}}else e=null;for($i={focusedElem:l,selectionRange:e},Yu=!1,Ll=t;Ll!==null;)if(t=Ll,l=t.child,(t.subtreeFlags&1028)!==0&&l!==null)l.return=t,Ll=l;else for(;Ll!==null;){switch(t=Ll,u=t.alternate,l=t.flags,t.tag){case 0:if((l&4)!==0&&(l=t.updateQueue,l=l!==null?l.events:null,l!==null))for(e=0;e title"))),Wl(u,a,e),u[Vl]=l,Ql(u),a=u;break l;case"link":var c=sd("link","href",n).get(a+(e.href||""));if(c){for(var i=0;igl&&(c=gl,gl=Y,Y=c);var h=ds(i,Y),r=ds(i,gl);if(h&&r&&(p.rangeCount!==1||p.anchorNode!==h.node||p.anchorOffset!==h.offset||p.focusNode!==r.node||p.focusOffset!==r.offset)){var m=j.createRange();m.setStart(h.node,h.offset),p.removeAllRanges(),Y>gl?(p.addRange(m),p.extend(r.node,r.offset)):(m.setEnd(r.node,r.offset),p.addRange(m))}}}}for(j=[],p=i;p=p.parentNode;)p.nodeType===1&&j.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof i.focus=="function"&&i.focus(),i=0;ie?32:e,x.T=null,e=Hi,Hi=null;var u=ve,c=kt;if(Xl=0,Ta=ve=null,kt=0,(cl&6)!==0)throw Error(o(331));var i=cl;if(cl|=4,mr(u.current),rr(u,u.current,c,e),cl=i,yn(0,!1),st&&typeof st.onPostCommitFiberRoot=="function")try{st.onPostCommitFiberRoot(Ca,u)}catch{}return!0}finally{M.p=n,x.T=a,Ur(l,t)}}function Hr(l,t,e){t=xt(e,t),t=hi(l.stateNode,t,2),l=fe(l,t,2),l!==null&&(Ra(l,2),Ht(l))}function rl(l,t,e){if(l.tag===3)Hr(l,l,e);else for(;t!==null;){if(t.tag===3){Hr(t,l,e);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(me===null||!me.has(a))){l=xt(e,l),e=Ro(2),a=fe(t,e,2),a!==null&&(Bo(e,a,t,l),Ra(a,2),Ht(a));break}}t=t.return}}function Gi(l,t,e){var a=l.pingCache;if(a===null){a=l.pingCache=new hm;var n=new Set;a.set(t,n)}else n=a.get(t),n===void 0&&(n=new Set,a.set(t,n));n.has(e)||(Oi=!0,n.add(e),l=bm.bind(null,l,t,e),t.then(l,l))}function bm(l,t,e){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&e,l.warmLanes&=~e,Sl===l&&(P&e)===e&&(Dl===4||Dl===3&&(P&62914560)===P&&300>ft()-xu?(cl&2)===0&&ja(l,0):Di|=e,Ea===P&&(Ea=0)),Ht(l)}function Rr(l,t){t===0&&(t=_f()),l=Ue(l,t),l!==null&&(Ra(l,t),Ht(l))}function pm(l){var t=l.memoizedState,e=0;t!==null&&(e=t.retryLane),Rr(l,e)}function Sm(l,t){var e=0;switch(l.tag){case 31:case 13:var a=l.stateNode,n=l.memoizedState;n!==null&&(e=n.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(o(314))}a!==null&&a.delete(t),Rr(l,e)}function xm(l,t){return ku(l,t)}var _u=null,Aa=null,Yi=!1,Mu=!1,Xi=!1,ge=0;function Ht(l){l!==Aa&&l.next===null&&(Aa===null?_u=Aa=l:Aa=Aa.next=l),Mu=!0,Yi||(Yi=!0,Tm())}function yn(l,t){if(!Xi&&Mu){Xi=!0;do for(var e=!1,a=_u;a!==null;){if(l!==0){var n=a.pendingLanes;if(n===0)var u=0;else{var c=a.suspendedLanes,i=a.pingedLanes;u=(1<<31-ot(42|l)+1)-1,u&=n&~(c&~i),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(e=!0,Yr(a,u))}else u=P,u=Cn(a,a===Sl?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(u&3)===0||Ha(a,u)||(e=!0,Yr(a,u));a=a.next}while(e);Xi=!1}}function Em(){Br()}function Br(){Mu=Yi=!1;var l=0;ge!==0&&Cm()&&(l=ge);for(var t=ft(),e=null,a=_u;a!==null;){var n=a.next,u=qr(a,t);u===0?(a.next=null,e===null?_u=n:e.next=n,n===null&&(Aa=e)):(e=a,(l!==0||(u&3)!==0)&&(Mu=!0)),a=n}Xl!==0&&Xl!==5||yn(l),ge!==0&&(ge=0)}function qr(l,t){for(var e=l.suspendedLanes,a=l.pingedLanes,n=l.expirationTimes,u=l.pendingLanes&-62914561;0i)break;var S=s.transferSize,j=s.initiatorType;S&&Jr(j)&&(s=s.responseEnd,c+=S*(s"u"?null:document;function ud(l,t,e){var a=Na;if(a&&typeof t=="string"&&t){var n=pt(t);n='link[rel="'+l+'"][href="'+n+'"]',typeof e=="string"&&(n+='[crossorigin="'+e+'"]'),nd.has(n)||(nd.add(n),l={rel:l,crossOrigin:e,href:t},a.querySelector(n)===null&&(t=a.createElement("link"),Wl(t,"link",l),Ql(t),a.head.appendChild(t)))}}function Lm(l){It.D(l),ud("dns-prefetch",l,null)}function Zm(l,t){It.C(l,t),ud("preconnect",l,t)}function Vm(l,t,e){It.L(l,t,e);var a=Na;if(a&&l&&t){var n='link[rel="preload"][as="'+pt(t)+'"]';t==="image"&&e&&e.imageSrcSet?(n+='[imagesrcset="'+pt(e.imageSrcSet)+'"]',typeof e.imageSizes=="string"&&(n+='[imagesizes="'+pt(e.imageSizes)+'"]')):n+='[href="'+pt(l)+'"]';var u=n;switch(t){case"style":u=_a(l);break;case"script":u=Ma(l)}Nt.has(u)||(l=H({rel:"preload",href:t==="image"&&e&&e.imageSrcSet?void 0:l,as:t},e),Nt.set(u,l),a.querySelector(n)!==null||t==="style"&&a.querySelector(Sn(u))||t==="script"&&a.querySelector(xn(u))||(t=a.createElement("link"),Wl(t,"link",l),Ql(t),a.head.appendChild(t)))}}function wm(l,t){It.m(l,t);var e=Na;if(e&&l){var a=t&&typeof t.as=="string"?t.as:"script",n='link[rel="modulepreload"][as="'+pt(a)+'"][href="'+pt(l)+'"]',u=n;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Ma(l)}if(!Nt.has(u)&&(l=H({rel:"modulepreload",href:l},t),Nt.set(u,l),e.querySelector(n)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(e.querySelector(xn(u)))return}a=e.createElement("link"),Wl(a,"link",l),Ql(a),e.head.appendChild(a)}}}function Km(l,t,e){It.S(l,t,e);var a=Na;if(a&&l){var n=Fe(a).hoistableStyles,u=_a(l);t=t||"default";var c=n.get(u);if(!c){var i={loading:0,preload:null};if(c=a.querySelector(Sn(u)))i.loading=5;else{l=H({rel:"stylesheet",href:l,"data-precedence":t},e),(e=Nt.get(u))&&ef(l,e);var s=c=a.createElement("link");Ql(s),Wl(s,"link",l),s._p=new Promise(function(y,S){s.onload=y,s.onerror=S}),s.addEventListener("load",function(){i.loading|=1}),s.addEventListener("error",function(){i.loading|=2}),i.loading|=4,Hu(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:i},n.set(u,c)}}}function Jm(l,t){It.X(l,t);var e=Na;if(e&&l){var a=Fe(e).hoistableScripts,n=Ma(l),u=a.get(n);u||(u=e.querySelector(xn(n)),u||(l=H({src:l,async:!0},t),(t=Nt.get(n))&&af(l,t),u=e.createElement("script"),Ql(u),Wl(u,"link",l),e.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function Wm(l,t){It.M(l,t);var e=Na;if(e&&l){var a=Fe(e).hoistableScripts,n=Ma(l),u=a.get(n);u||(u=e.querySelector(xn(n)),u||(l=H({src:l,async:!0,type:"module"},t),(t=Nt.get(n))&&af(l,t),u=e.createElement("script"),Ql(u),Wl(u,"link",l),e.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function cd(l,t,e,a){var n=(n=F.current)?Cu(n):null;if(!n)throw Error(o(446));switch(l){case"meta":case"title":return null;case"style":return typeof e.precedence=="string"&&typeof e.href=="string"?(t=_a(e.href),e=Fe(n).hoistableStyles,a=e.get(t),a||(a={type:"style",instance:null,count:0,state:null},e.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(e.rel==="stylesheet"&&typeof e.href=="string"&&typeof e.precedence=="string"){l=_a(e.href);var u=Fe(n).hoistableStyles,c=u.get(l);if(c||(n=n.ownerDocument||n,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(l,c),(u=n.querySelector(Sn(l)))&&!u._p&&(c.instance=u,c.state.loading=5),Nt.has(l)||(e={rel:"preload",as:"style",href:e.href,crossOrigin:e.crossOrigin,integrity:e.integrity,media:e.media,hrefLang:e.hrefLang,referrerPolicy:e.referrerPolicy},Nt.set(l,e),u||$m(n,l,e,c.state))),t&&a===null)throw Error(o(528,""));return c}if(t&&a!==null)throw Error(o(529,""));return null;case"script":return t=e.async,e=e.src,typeof e=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Ma(e),e=Fe(n).hoistableScripts,a=e.get(t),a||(a={type:"script",instance:null,count:0,state:null},e.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,l))}}function _a(l){return'href="'+pt(l)+'"'}function Sn(l){return'link[rel="stylesheet"]['+l+"]"}function id(l){return H({},l,{"data-precedence":l.precedence,precedence:null})}function $m(l,t,e,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),Wl(t,"link",e),Ql(t),l.head.appendChild(t))}function Ma(l){return'[src="'+pt(l)+'"]'}function xn(l){return"script[async]"+l}function fd(l,t,e){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+pt(e.href)+'"]');if(a)return t.instance=a,Ql(a),a;var n=H({},e,{"data-href":e.href,"data-precedence":e.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),Ql(a),Wl(a,"style",n),Hu(a,e.precedence,l),t.instance=a;case"stylesheet":n=_a(e.href);var u=l.querySelector(Sn(n));if(u)return t.state.loading|=4,t.instance=u,Ql(u),u;a=id(e),(n=Nt.get(n))&&ef(a,n),u=(l.ownerDocument||l).createElement("link"),Ql(u);var c=u;return c._p=new Promise(function(i,s){c.onload=i,c.onerror=s}),Wl(u,"link",a),t.state.loading|=4,Hu(u,e.precedence,l),t.instance=u;case"script":return u=Ma(e.src),(n=l.querySelector(xn(u)))?(t.instance=n,Ql(n),n):(a=e,(n=Nt.get(u))&&(a=H({},e),af(a,n)),l=l.ownerDocument||l,n=l.createElement("script"),Ql(n),Wl(n,"link",a),l.head.appendChild(n),t.instance=n);case"void":return null;default:throw Error(o(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Hu(a,e.precedence,l));return t.instance}function Hu(l,t,e){for(var a=e.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=a.length?a[a.length-1]:null,u=n,c=0;c title"):null)}function Fm(l,t,e){if(e===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;return t.rel==="stylesheet"?(l=t.disabled,typeof t.precedence=="string"&&l==null):!0;case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function rd(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}function km(l,t,e,a){if(e.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(e.state.loading&4)===0){if(e.instance===null){var n=_a(a.href),u=t.querySelector(Sn(n));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(l.count++,l=Bu.bind(l),t.then(l,l)),e.state.loading|=4,e.instance=u,Ql(u);return}u=t.ownerDocument||t,a=id(a),(n=Nt.get(n))&&ef(a,n),u=u.createElement("link"),Ql(u);var c=u;c._p=new Promise(function(i,s){c.onload=i,c.onerror=s}),Wl(u,"link",a),e.instance=u}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(e,t),(t=e.state.preload)&&(e.state.loading&3)===0&&(l.count++,e=Bu.bind(l),t.addEventListener("load",e),t.addEventListener("error",e))}}var nf=0;function Im(l,t){return l.stylesheets&&l.count===0&&Gu(l,l.stylesheets),0nf?50:800)+t);return l.unsuspend=e,function(){l.unsuspend=null,clearTimeout(a),clearTimeout(n)}}:null}function Bu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Gu(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var qu=null;function Gu(l,t){l.stylesheets=null,l.unsuspend!==null&&(l.count++,qu=new Map,t.forEach(Pm,l),qu=null,Bu.call(l))}function Pm(l,t){if(!(t.state.loading&4)){var e=qu.get(l);if(e)var a=e.get(null);else{e=new Map,qu.set(l,e);for(var n=l.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(v)}catch(z){console.error(z)}}return v(),hf.exports=y0(),hf.exports}var b0=g0();const p0=f0(b0);var dl=xf();const Ku=18,Ef=Ku*Ku,Da=1e3,Ke=12,S0=Da*Ke,x0=S0+Da,E0=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],we=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],$l=[{label:"Red",shortLabel:"R",wavelength:690,hue:2,saturation:100,lightness:66,energy:.44,decay:700,radius:.28},{label:"Orange",shortLabel:"O",wavelength:620,hue:18,saturation:100,lightness:64,energy:.5,decay:760,radius:.3},{label:"Amber",shortLabel:"A",wavelength:590,hue:36,saturation:100,lightness:66,energy:.56,decay:820,radius:.32},{label:"Yellow",shortLabel:"Y",wavelength:570,hue:56,saturation:100,lightness:69,energy:.62,decay:900,radius:.34},{label:"Green",shortLabel:"G",wavelength:530,hue:108,saturation:84,lightness:66,energy:.7,decay:980,radius:.36},{label:"Cyan",shortLabel:"C",wavelength:500,hue:188,saturation:94,lightness:68,energy:.8,decay:1120,radius:.4},{label:"Blue",shortLabel:"B",wavelength:450,hue:232,saturation:100,lightness:71,energy:.92,decay:1300,radius:.45},{label:"Violet",shortLabel:"V",wavelength:410,hue:274,saturation:100,lightness:74,energy:1.08,decay:1540,radius:.52}],T0=[{page:"binning",title:"Count events per second",diagram:"count-time",rule:"Group event rows into 1 second time bins and count how many clicks fall into each bin.",output:"Light curve / count periodogram"},{page:"flux",title:"Sum energy per second",diagram:"energy-time",rule:"Group event rows into 1 second time bins and sum the total photon energy inside each bin.",output:"Flux variability"},{page:"periodogram",title:"Sum energy by wavelength bin",diagram:"energy-wavelength",rule:"Group event rows by wavelength and sum the energy across the recent time window.",output:"Spectrum"},{page:"spectrogram",title:"Count events by wavelength over time",diagram:"count-wavelength-time",rule:"Group event rows into both time bins and wavelength bins, then count clicks in each cell.",output:"Spectrogram"}],Gd={"transition-photon":{title:"Every photon has energy",body:"Colour tells us something about wavelength and energy. Before we record the hits, it helps to see what that means.",nextPage:"photon",emoji:"😶‍🌫️"},"transition-eventlist":{title:"Now record the hits",body:"Each photon hit becomes one row with a time, an energy, and a CCD position.",nextPage:"eventlist",emoji:"📝"},"transition-binning":{title:"Chart #1 : Brightness over time",body:"We now use the data and make the first chart",nextPage:"binning",emoji:"🫰🏻⏰"},"transition-flux":{title:"Chart #2: Energy over time",body:"Instead of counting clicks equally, we sum up the energy of each phton inside each time bin.",nextPage:"flux",emoji:"🔥⏰"},"transition-periodogram":{title:"Chart #3: Build a spectrum",body:"The same event list can also be grouped by wavelength. Is it lots of low-energy red photons, or high-energy violet ones? Let`s find out.",nextPage:"periodogram",emoji:"🌈"},"transition-spectrogram":{title:"Chart #3 : Let´s mix things up",body:"Now try both time bins, and wavelength/energy bins at the same time!",nextPage:"spectrogram",emoji:"🤪"}},Rd=["receptor","photon","eventlist","binning","flux","periodogram","spectrogram"];function j0(){return Array.from({length:Ef},(v,z)=>({id:z,level:0,size:.22,decay:900,tint:"hsla(0 0% 100% / 0)",glow:"hsla(0 0% 100% / 0)"}))}function z0(){return Array.from({length:$l.length},()=>0)}function A0(){return{cells:j0(),eventHistory:[],totalPhotons:0}}function ze(v,z,b){return Math.min(b,Math.max(z,v))}function N0(v){const z=Math.floor(v/1e3),b=Math.floor(z/60),o=z%60,A=Math.floor(v%1e3/10);return[b,o].map(_=>String(_).padStart(2,"0")).join(":")+"."+String(A).padStart(2,"0")}function _0(v){const z=v.replace(/^#/,"");return E0.includes(z)?z:"orbit"}function Bd(){return typeof window>"u"?"orbit":_0(window.location.hash)}function pf(v,z,b,o){return`hsla(${v} ${z}% ${b}% / ${o})`}function je(v,z){const b=$l[v],o=ze(.08+z*.88,.08,.96),A=Math.min(84,b.lightness+z*10);return`hsla(${b.hue} ${b.saturation}% ${A}% / ${o})`}function Sf(v,z,b,o){if(v.length===0)return"";const A=o?.min??Math.min(...v),_=o?.max??Math.max(...v),C=Math.max(_-A,1e-4);return v.map((L,O)=>{const E=v.length===1?z/2:O/(v.length-1)*z,G=b-(L-A)/C*(b-8)-4;return`${O===0?"M":"L"} ${E.toFixed(2)} ${G.toFixed(2)}`}).join(" ")}function M0(v,z,b,o){return v.length===0?"":`${Sf(v,z,b,o)} L ${z} ${b} L 0 ${b} Z`}function O0(v){const b=ze(v,0,1)*($l.length-1),o=Math.floor(b),A=Math.min($l.length-1,Math.ceil(b)),_=b-o,C=$l[o],L=$l[A],O=(E,G)=>E+(G-E)*_;return{label:_<.5?C.label:L.label,wavelength:O(C.wavelength,L.wavelength),energy:O(C.energy,L.energy),hue:O(C.hue,L.hue),saturation:O(C.saturation,L.saturation),lightness:O(C.lightness,L.lightness)}}function D0(){return Array.from({length:42},(v,z)=>({x:z*73%100/100,y:(z*37+11)%100/100,size:.8+z*17%7*.22,opacity:.24+z*29%10*.05}))}function U0(v){const z=D0(),b=v*24e-5,A=Math.cos(b)*178,_=Math.sin(b*.72)*34,C=Math.sin(b)*132,O=A*.72,E=_*.45,G=Rl=>1+Rl/620,H=460+(0-O)*.72,J=264+(0-E)*.42+C*.08,_l=ze(G(-O*.05),.88,1.14),xl=460+(A-O)*.72,il=236+(_-E)*.5-C*.16,El=ze(G(C),.82,1.34),V=b*.9;return{earth:{x:H,y:J,scale:_l},telescope:{x:xl,y:il,scale:El,rotation:V},stars:z}}function C0(){const[v,z]=dl.useState(0);dl.useEffect(()=>{let o=0;const A=performance.now(),_=C=>{z(C-A),o=window.requestAnimationFrame(_)};return o=window.requestAnimationFrame(_),()=>window.cancelAnimationFrame(o)},[]);const b=U0(v);return f.jsxs("div",{className:"ccd-orbit-screen",children:[f.jsxs("div",{className:"ccd-orbit-copy",children:[f.jsx("span",{className:"ccd-stat-label",children:"Glitch Hunters's guide to telescopes"}),f.jsx("h2",{children:"Orbital telescopes"}),f.jsx("p",{children:"Humanity has launched multiple telescopes into orbit, each designed to observe the universe from different vantage points."})]}),f.jsx("div",{className:"ccd-orbit-stage",children:f.jsxs("svg",{className:"ccd-orbit-svg",viewBox:"0 0 920 520","aria-label":"Telescope orbiting Earth",children:[f.jsxs("defs",{children:[f.jsxs("radialGradient",{id:"orbitEarthGlow",cx:"42%",cy:"34%",r:"68%",children:[f.jsx("stop",{offset:"0%",stopColor:"#6bd3ff"}),f.jsx("stop",{offset:"36%",stopColor:"#2f88d8"}),f.jsx("stop",{offset:"72%",stopColor:"#124180"}),f.jsx("stop",{offset:"100%",stopColor:"#061327"})]}),f.jsxs("linearGradient",{id:"orbitCubeFront",x1:"0",x2:"1",y1:"0",y2:"1",children:[f.jsx("stop",{offset:"0%",stopColor:"#fff7e9"}),f.jsx("stop",{offset:"100%",stopColor:"#ff9d77"})]}),f.jsxs("linearGradient",{id:"orbitCubeSide",x1:"0",x2:"1",y1:"0",y2:"1",children:[f.jsx("stop",{offset:"0%",stopColor:"#d3caf7"}),f.jsx("stop",{offset:"100%",stopColor:"#7967db"})]})]}),b.stars.map((o,A)=>f.jsx("circle",{cx:o.x*920,cy:o.y*520,fill:"rgba(255,255,255,0.92)",opacity:o.opacity,r:o.size},A)),f.jsx("ellipse",{className:"ccd-orbit-track",cx:b.earth.x,cy:b.earth.y+8,rx:174*b.earth.scale,ry:62*b.earth.scale}),f.jsxs("g",{transform:`translate(${b.earth.x} ${b.earth.y}) scale(${b.earth.scale})`,children:[f.jsx("circle",{className:"ccd-orbit-earth-atmosphere",cx:"0",cy:"0",r:"112"}),f.jsx("circle",{cx:"0",cy:"0",fill:"url(#orbitEarthGlow)",r:"96"}),f.jsx("path",{className:"ccd-orbit-continent",d:"M -38 -20 C -18 -46 8 -44 22 -12 C 36 10 18 26 -4 32 C -20 38 -42 22 -48 0 Z"}),f.jsx("path",{className:"ccd-orbit-continent",d:"M 18 20 C 38 14 54 26 48 48 C 42 62 18 62 10 44 C 6 34 8 24 18 20 Z"}),f.jsx("circle",{className:"ccd-orbit-night-shadow",cx:"30",cy:"4",r:"92"})]}),f.jsx("g",{transform:`translate(${b.telescope.x} ${b.telescope.y}) rotate(${b.telescope.rotation*180/Math.PI}) scale(${b.telescope.scale})`,children:f.jsxs("g",{className:"ccd-orbit-telescope",children:[f.jsx("polygon",{points:"-18,-18 12,-28 12,4 -18,14",fill:"url(#orbitCubeFront)"}),f.jsx("polygon",{points:"12,-28 30,-14 30,18 12,4",fill:"url(#orbitCubeSide)"}),f.jsx("polygon",{points:"-18,-18 0,-4 30,-14 12,-28",fill:"rgba(255,255,255,0.82)"}),f.jsx("rect",{x:"-42",y:"-5",width:"18",height:"10",rx:"2.5",fill:"#d9d2f5"}),f.jsx("rect",{x:"30",y:"-4",width:"22",height:"8",rx:"3",fill:"#ffc66f"}),f.jsx("rect",{x:"-6",y:"18",width:"12",height:"34",rx:"5",fill:"#bdb4e8"}),f.jsx("rect",{x:"-34",y:"30",width:"68",height:"10",rx:"5",fill:"#8e78ff",opacity:"0.88"})]})})]})}),f.jsx("div",{className:"ccd-orbit-actions",children:f.jsx("a",{className:"ccd-experience-button",href:"#intro",children:"Next"})})]})}function qd(v,z,b,o){const A=Array.from({length:Ke},()=>0),_=Math.max(0,b-Ke);return v.forEach(C=>{const L=Math.floor((C.time-z)/Da);L<_||L>=b||(A[L-_]+=o(C))}),A}function H0(v,z,b){const o=Array.from({length:$l.length},()=>Array.from({length:Ke},()=>0)),A=Math.max(0,b-Ke);return v.forEach(_=>{const C=Math.floor((_.time-z)/Da);C=b||(o[_.photonIndex][C-A]+=1)}),o}function R0(v,z,b){const o=z0();if(b<=0)return o;const A=Math.max(0,b-Ke);return v.forEach(_=>{const C=Math.floor((_.time-z)/Da);C>=A&&C"u")return null;const v=window.AudioContext??window.webkitAudioContext;return v?new v:null}function G0(v){const[z,b]=dl.useState(()=>A0()),[o,A]=dl.useState(0),[_,C]=dl.useState(!1),[L,O]=dl.useState(!0),[E]=dl.useState(()=>Date.now()),G=dl.useRef(E),H=dl.useRef(null),J=dl.useRef(null),_l=dl.useRef(v),xl=dl.useRef(null);dl.useEffect(()=>{_l.current=v},[v]);const il=()=>{const V=xl.current??q0();if(!V){O(!1);return}xl.current=V,V.resume().then(()=>{O(!0),C(V.state==="running")}).catch(()=>{C(!1)})};dl.useEffect(()=>{const V=()=>{il()};return window.addEventListener("pointerdown",V,{passive:!0}),window.addEventListener("keydown",V),()=>{window.removeEventListener("pointerdown",V),window.removeEventListener("keydown",V)}},[]),dl.useEffect(()=>()=>{xl.current&&xl.current.close()},[]);const El=(V,Rl,Tl)=>{if(!_l.current)return;const jl=xl.current;if(!jl||jl.state!=="running")return;const el=jl.currentTime+Tl,fl=jl.createOscillator(),Q=jl.createGain(),hl=jl.createBiquadFilter(),Zl=$l[V],$=820+V*92,al=.006+Rl*.004,bl=.018+Rl*.02;fl.type="triangle",fl.frequency.setValueAtTime($,el),fl.frequency.exponentialRampToValueAtTime($*.74,el+bl),hl.type="bandpass",hl.frequency.setValueAtTime(1400+Zl.hue*2.4,el),hl.Q.setValueAtTime(1.4,el),Q.gain.setValueAtTime(1e-4,el),Q.gain.exponentialRampToValueAtTime(al,el+.003),Q.gain.exponentialRampToValueAtTime(1e-4,el+bl),fl.connect(hl),hl.connect(Q),Q.connect(jl.destination),fl.start(el),fl.stop(el+bl+.008)};return dl.useEffect(()=>{const V=()=>{A(Date.now()-G.current)};return V(),H.current=window.setInterval(V,90),()=>{H.current!==null&&window.clearInterval(H.current)}},[]),dl.useEffect(()=>{let V=!1;const Rl=()=>{if(V)return;const Tl=[],jl=[];b(el=>{const fl=Date.now(),Q=el.cells.map(al=>{if(al.level<=.001)return al.level===0?al:{...al,level:0};const bl=36/al.decay;return{...al,level:Math.max(0,al.level-bl),size:Math.max(.2,al.size-bl*.3)}});let hl=el.totalPhotons;const Zl=Math.random()<.28?2:1;for(let al=0;alfl-al.time{El(el.photonIndex,el.energy,fl*.012)}),J.current=window.setTimeout(Rl,36+Math.random()*70)};return Rl(),()=>{V=!0,J.current!==null&&window.clearTimeout(J.current)}},[]),{audioArmed:_,audioSupported:L,enableAudio:il,elapsedMilliseconds:o,exposureStartTime:E,simulation:z}}function Y0({cells:v,activeHits:z,averageEnergy:b,guide:o}){return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-stage",children:[f.jsx("div",{className:"ccd-grid-frame",children:f.jsxs("div",{className:"ccd-grid","aria-label":"Photon receptor grid",children:[v.map(A=>f.jsx("div",{className:"ccd-cell",children:f.jsx("span",{className:"ccd-hit",style:{opacity:A.opacity,transform:`translate(-50%, -50%) scale(${A.scale})`,width:`${A.size}rem`,height:`${A.size}rem`,background:A.tint,boxShadow:`0 0 ${.9+A.opacity*1.8}rem ${A.glow}`}})},A.id)),f.jsx("div",{className:"ccd-grid-glow"})]})}),o||null,f.jsxs("div",{className:"ccd-readout","aria-label":"Sensor readout",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Active pixels"}),f.jsx("strong",{children:String(z).padStart(3,"0")})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Mean charge"}),f.jsx("strong",{children:b.toFixed(3)})]})]})]})})}const X0={eyebrow:"Detector Plane",title:"Telescope detector view",description:"The core of the telescope is a camera, called a CCD array. Photons - light from distant galaxies - strike the CCD and light up specific pixels. This is the raw material for the everything a telescope does."},Q0={stepLabel:"Step 1",title:"Photons are hitting the detector",body:"Notice how some pixels are bigger than others? They have more energy."};function L0(){return f.jsx("div",{className:"ccd-intro-screen",children:f.jsxs("div",{className:"ccd-intro-panel",children:[f.jsx("div",{className:"ccd-intro-logo-frame","aria-hidden":"true",children:f.jsx("img",{alt:"",className:"ccd-intro-logo",src:"/glitchhunterlogo.png"})}),f.jsx("div",{className:"ccd-intro-brand",children:f.jsx("span",{className:"ccd-intro-brand-mark",children:"Glitch Hunter's"})}),f.jsxs("div",{className:"ccd-intro-copy",children:[f.jsx("h2",{children:"Guide to Telescopes"}),f.jsx("p",{children:"How do they work? What does the telescope actually do?"})]}),f.jsxs("div",{className:"ccd-intro-covers",children:[f.jsx("span",{className:"ccd-stat-label",children:"In this experience, you will see:"}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"01"}),f.jsx("strong",{children:"The CCD"}),f.jsx("p",{children:"The telescope's eye, where photons land."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"02"}),f.jsx("strong",{children:"Energy and wavelength"}),f.jsx("p",{children:"Colour tells us whether a photon is lower-energy red or higher-energy violet."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"03"}),f.jsx("strong",{children:"The event list"}),f.jsx("p",{children:"Each photon hit becomes a recorded row with time, energy, and detector position."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"04"}),f.jsx("strong",{children:"Periodograms"}),f.jsx("p",{children:"Group events by time or wavelength to see brightness and spectral power."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"05"}),f.jsx("strong",{children:"Spectrograms"}),f.jsx("p",{children:"Bin by both time and wavelength to see how the colours evolve."})]})]}),f.jsx("div",{className:"ccd-intro-actions",children:f.jsx("a",{className:"ccd-experience-button",href:"#receptor",children:"Next"})})]})})}function Z0(v){return v in Gd}function V0({onComplete:v}){return f.jsx("div",{className:"ccd-closing-screen",children:f.jsxs("div",{className:"ccd-closing-panel",children:[f.jsx("span",{className:"ccd-stat-label",children:"Key Concepts"}),f.jsx("h2",{children:"What to remember"}),f.jsxs("div",{className:"ccd-closing-grid",children:[f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Binning"}),f.jsx("p",{children:"Grouping events because they arrive at a similar time, or have a similar colour."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Energy / wavelength"}),f.jsx("p",{children:"Red means long wavelength and low energy. Violet means short wavelength and high energy."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Periodogram"}),f.jsx("p",{children:"How the brightness goes up and down over time."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Spectrogram"}),f.jsx("p",{children:"How much there is of each colour."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Periodo-spectrogram"}),f.jsx("p",{children:"Binning by both time and wavelength / frequency."})]})]}),f.jsx("p",{className:"ccd-closing-message",children:"You're on your way to becoming a Cosmotologist!"}),f.jsxs("div",{className:"ccd-closing-actions",children:[f.jsx("a",{className:"ccd-experience-button ccd-experience-button-secondary",href:"#orbit",children:"Start Over"}),f.jsx("button",{className:"ccd-experience-button",onClick:()=>{v?.({success:!0,score:100,data:{completedExperience:"ccd-photon-explorer",finalPage:"closing"}})},type:"button",children:"Take the Glitch Gate"})]})]})})}function w0({page:v}){const z=Gd[v];return f.jsx("div",{className:"ccd-transition-screen",children:f.jsxs("div",{className:"ccd-transition-card",children:[f.jsx("span",{className:"ccd-stat-label emojilarge",children:z.emoji}),f.jsx("h2",{children:z.title}),f.jsx("p",{children:z.body}),f.jsx("div",{className:"ccd-transition-actions",children:f.jsx("a",{className:"ccd-experience-button",href:`#${z.nextPage}`,children:"Next"})})]})})}const bf={eyebrow:"",title:"Space telescope 101",description:"In this interactive tutorial, you will see how photons hit eye of the telescope, and how that is turned into turned into different scientific charts. We`ll cover:"};function K0(){const[v,z]=dl.useState(.5),b=O0(v),o=pf(b.hue,b.saturation,b.lightness,.98);return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-energy-panel",children:[f.jsxs("div",{className:"ccd-energy-scale",children:[f.jsx("div",{className:"ccd-energy-spectrum","aria-hidden":"true",style:{"--ccd-spectrum-position":`${v*100}%`,"--ccd-spectrum-color":o}}),f.jsx("div",{className:"ccd-energy-slider-wrap",children:f.jsx("input",{"aria-label":"Photon wavelength and energy slider",className:"ccd-energy-slider",max:1,min:0,onChange:A=>z(Number(A.target.value)),step:.001,type:"range",value:v})}),f.jsxs("div",{className:"ccd-energy-scale-labels",children:[f.jsx("span",{children:"Longer wavelength"}),f.jsx("span",{children:"Shorter wavelength"})]}),f.jsxs("div",{className:"ccd-energy-scale-labels ccd-energy-scale-labels-strong",children:[f.jsx("span",{children:"Red, lower energy"}),f.jsx("span",{children:"Violet, higher energy"})]})]}),f.jsxs("div",{className:"ccd-energy-readout",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Selected colour"}),f.jsx("strong",{style:{color:o},children:b.label})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Wavelength"}),f.jsxs("strong",{children:[b.wavelength.toFixed(0)," nm"]})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Energy"}),f.jsxs("strong",{children:[b.energy.toFixed(2)," units"]})]})]})]})})}const J0={eyebrow:"Photon Energy And Wavelength",title:"Photon colour maps to wavelength",description:"Each hit has energy and wavelength. Red means longer wavelength and lower energy, while violet means shorter wavelength and higher energy. Wavelength is mesaured in nano-meters (nm). One nanometer is one billionth of a meter - about the size of a virus. The visible spectrum ranges from around 380 nm (violet) to 750 nm (red). But telescopes can see beyond that, into high-energy ultraviolet and infrared wavelengths that our eyes can´t detect."},W0={stepLabel:"Colour has meaning",title:"One photon, one observation",body:"In this demo, whenever you see the 🟣 colour, it indicates high energy - short wavelength. 🔴 is lower energy, but longer wavelength. "};function $0({type:v}){if(v==="count-wavelength-time")return f.jsx("div",{className:"ccd-mini-diagram ccd-mini-diagram-grid","aria-hidden":"true",children:Array.from({length:12},(b,o)=>f.jsx("span",{className:"ccd-mini-diagram-grid-cell",style:{opacity:.28+o%4*.14}},o))});const z=v==="count-time"?[.28,.58,.38,.76,.46,.66]:v==="energy-time"?[.22,.5,.42,.88,.56,.72]:[.2,.32,.48,.84,.6,.3];return f.jsx("div",{className:"ccd-mini-diagram","aria-hidden":"true",children:z.map((b,o)=>f.jsx("span",{className:`ccd-mini-diagram-bar${v!=="count-time"?" is-energy":""}`,style:{height:`${b*100}%`}},o))})}function F0({page:v,onSelect:z,showGuide:b,onToggleGuide:o}){const A=v==="receptor",_=v==="photon",C=v==="eventlist";return f.jsxs("section",{className:"ccd-selector","aria-label":"Visualization selector",children:[f.jsxs("div",{className:"ccd-selector-root",children:[f.jsx("span",{className:"ccd-stat-label",children:"These plots are different ways of binning the same event list."}),f.jsx("p",{children:"Everything begins with the CCD receiving photons. Those hits become rows in an event list. After that, different binning rules produce different plots."})]}),f.jsxs("div",{className:"ccd-selector-raw",children:[f.jsxs("a",{className:`ccd-selector-link${A?" is-active":""}`,href:"#receptor",onClick:z,children:[f.jsx("span",{className:"ccd-selector-link-label",children:"Raw data"}),f.jsx("strong",{children:"1. Photons hit CCD pixels"}),f.jsx("span",{children:"This is the detector plane: the spatial pattern of hits on the telescope CCD."})]}),f.jsxs("a",{className:`ccd-selector-link${_?" is-active":""}`,href:"#photon",onClick:z,children:[f.jsx("span",{className:"ccd-selector-link-label",children:"Photon properties"}),f.jsx("strong",{children:"2. Colour indicates wavelength and energy"}),f.jsx("span",{children:"Red means lower energy and violet means higher energy, which is why later plots can bin by wavelength."})]}),f.jsxs("a",{className:`ccd-selector-link${C?" is-active":""}`,href:"#eventlist",onClick:z,children:[f.jsx("span",{className:"ccd-selector-link-label",children:"Recorded data"}),f.jsx("strong",{children:"3. Each hit becomes a row: time, energy, x, y"}),f.jsx("span",{children:"This is the FITS-style event table. Every later diagram is derived from these same rows."})]})]}),f.jsx("div",{className:"ccd-selector-section",children:f.jsxs("div",{className:"ccd-selector-axis",children:[f.jsx("span",{className:"ccd-stat-label",children:"4. Choose a binning rule"}),f.jsx("strong",{children:"Derived view: binned visualization"}),f.jsx("p",{children:"These plots are different ways of grouping the same event rows."})]})}),f.jsx("div",{className:"ccd-selector-results",children:T0.map(L=>f.jsxs("a",{className:`ccd-selector-leaf${L.page===v?" is-active":""}`,href:`#${L.page}`,onClick:z,children:[f.jsx("span",{className:"ccd-selector-leaf-dim",children:"Input: same event list"}),f.jsx($0,{type:L.diagram}),f.jsx("strong",{children:L.title}),f.jsxs("span",{children:["Rule: ",L.rule]}),f.jsxs("span",{children:["Output: ",L.output]})]},L.page))}),f.jsxs("div",{className:"ccd-selector-current",children:[f.jsx("span",{className:"ccd-stat-label",children:"Recording"}),f.jsx("button",{className:`ccd-selector-option${b?" is-active":""}`,onClick:o,type:"button",children:b?"Guide overlay on":"Guide overlay off"})]})]})}function k0(v){switch(v){case"intro":return bf;case"receptor":return X0;case"photon":return J0;case"eventlist":return tv;case"binning":return hv;case"flux":return ov;case"periodogram":return nv;case"spectrogram":return iv;case"closing":return bf;default:return bf}}function I0(v){switch(v){case"intro":return null;case"receptor":return Q0;case"photon":return W0;case"eventlist":return ev;case"binning":return mv;case"flux":return rv;case"periodogram":return uv;case"spectrogram":return fv}}function P0({page:v}){const z=we.indexOf(v),b=z>0?we[z-1]:null,o=z>=0&&z{const _=B0(o.cellIndex),C=(o.time-z)/1e3;return $l[o.photonIndex],f.jsxs("div",{className:"ccd-event-table",children:[f.jsx("span",{children:C.toFixed(3)}),f.jsx("span",{style:{color:je(o.photonIndex,.92)},children:o.energy.toFixed(2)}),f.jsx("span",{children:String(_.x).padStart(2,"0")}),f.jsx("span",{children:String(_.y).padStart(2,"0")})]},`${o.time}-${o.cellIndex}-${A}`)}),b.length===0?f.jsxs("div",{className:"ccd-event-table ccd-event-table-empty",children:[f.jsx("span",{children:"No rows yet"}),f.jsx("span",{children:"Waiting"}),f.jsx("span",{children:"--"}),f.jsx("span",{children:"--"})]}):null]})]}),f.jsx("div",{className:"ccd-flux-legend",children:$l.map((o,A)=>f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-legend-dot",style:{background:je(A,.92),boxShadow:`0 0 0.8rem ${je(A,.56)}`}}),f.jsx("span",{children:o.label})]},o.label))})]})})}const tv={eyebrow:"FITS Event Table",title:"Photon event list view",description:"The clicks are recorded in a table, called the event list, with the time, energy, and CCD pixel position."},ev={stepLabel:"Step 3",title:"Each hit becomes a row in the event list",body:"Astronomy pipelines often save these events as FITS tables. This is the raw data you can download from Telescopes like Chandra!"};function av({spectralEnergy:v}){const z=Math.max(...v,.01),b=v.reduce((o,A)=>o+A,0)||1;return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Integrated over last 12 completed 1.0 s bins"}),f.jsxs("strong",{children:[b.toFixed(2)," total energy units"]})]}),f.jsx("div",{className:"ccd-periodogram","aria-label":"Periodogram chart",children:$l.map((o,A)=>{const _=ze(v[A]/z,0,1),C=v[A]/b;return f.jsxs("div",{className:"ccd-periodogram-band",children:[f.jsx("div",{className:"ccd-bar-shell",children:f.jsx("div",{className:"ccd-bar-fill",style:{height:`${18+_*82}%`,background:`linear-gradient(180deg, ${je(A,.55)}, ${je(A,1)})`,boxShadow:`0 0 1.4rem ${je(A,.72)}`}})}),f.jsxs("div",{className:"ccd-band-meta",children:[f.jsx("strong",{children:o.shortLabel}),f.jsxs("span",{children:[o.wavelength," nm"]}),f.jsxs("span",{children:[v[A].toFixed(2)," E"]}),f.jsxs("span",{children:[(C*100).toFixed(1),"%"]})]})]},o.label)})})]})})}const nv={eyebrow:"Spectral power",title:"Spectrogram of energy",description:"We put low-energy on the left, and high energy on the right. The energy of all the photons in each frequency bin integrated over some period (here last 12 secs) gives us the shape of the spectrum during that time."},uv={stepLabel:"Step 6",title:"Spectral power",body:"Spectral power reveals the energy distribution, and it´s very important for many applications. It can tell us a lot about how stars work"};function cv({spectrogramBins:v}){const z=Math.max(...v.flat(),1);return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Clicks per 1.0 s time bin"}),f.jsxs("strong",{children:[Ke," time bins x ",$l.length," frequency bins"]})]}),f.jsxs("div",{className:"ccd-spectrogram-shell",children:[f.jsx("div",{className:"ccd-spectrogram-axis",children:$l.map(b=>f.jsx("span",{children:b.label},b.label))}),f.jsx("div",{className:"ccd-spectrogram","aria-label":"Spectrogram heat map",children:$l.map((b,o)=>f.jsx("div",{className:"ccd-spectrogram-row",children:v[o].map((A,_)=>f.jsx("span",{className:"ccd-spectrogram-cell",style:{background:je(o,A/z),boxShadow:A>0?`0 0 0.8rem ${je(o,A/z)}`:"none"}},`${b.label}-${_}`))},b.label))})]}),f.jsxs("div",{className:"ccd-spectrogram-footer",children:[f.jsx("span",{children:"Earlier"}),f.jsx("span",{children:"Now"})]})]})})}const iv={eyebrow:"Frequency X Time",title:"Periodo-spectro-gram!",description:"You can play around with the same data and make many charts! This shows the energy arriving during each time bin for each frequency bin!"},fv={stepLabel:"Step 7",title:"Binned by time and frequency",body:"Is it useful? Maybe not for a lot of applications, but it looks pretty!"};function sv({fluxBins:v}){const z=v.some(il=>il>0)?v:[1.2,1.8,1.4,2.1,1.7,1.5,2.3,1.6,1.9,1.4,2,1.7],b=z.map((il,El)=>{const V=z.slice(0,El+1);return V.reduce((Rl,Tl)=>Rl+Tl,0)/V.length}),o=z[z.length-1]??0,A=z.reduce((il,El)=>il+El,0)/z.length,_=z.reduce((il,El)=>il+(El-A)**2,0)/z.length,C=Math.sqrt(_),L=Math.min(...z),O=Math.max(...z),E=Math.min(...b),G=Math.max(...b),H={min:Math.min(L,E),max:Math.max(O,G)},J=Sf(z,760,240,H),_l=M0(z,760,240,H),xl=Sf(b,760,240,H);return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Total energy per 1.0 s bin"}),f.jsxs("strong",{children:[o.toFixed(2)," energy units in latest bin"]})]}),f.jsxs("div",{className:"ccd-flux-chart-shell",children:[f.jsxs("svg",{className:"ccd-flux-chart",viewBox:"0 0 760 240","aria-label":"Total flux variability chart",preserveAspectRatio:"none",children:[f.jsxs("defs",{children:[f.jsxs("linearGradient",{id:"fluxArea",x1:"0",x2:"0",y1:"0",y2:"1",children:[f.jsx("stop",{offset:"0%",stopColor:"rgba(255, 113, 74, 0.40)"}),f.jsx("stop",{offset:"100%",stopColor:"rgba(125, 100, 255, 0.03)"})]}),f.jsxs("linearGradient",{id:"fluxLine",x1:"0",x2:"1",y1:"0",y2:"0",children:[f.jsx("stop",{offset:"0%",stopColor:"#ff8d66"}),f.jsx("stop",{offset:"55%",stopColor:"#ffd35d"}),f.jsx("stop",{offset:"100%",stopColor:"#8f7dff"})]})]}),z.map((il,El)=>{const V=760/z.length;return f.jsx("rect",{className:El%2===0?"ccd-flux-bin":"ccd-flux-bin ccd-flux-bin-alt",x:El*V,y:0,width:V,height:240},El)}),f.jsx("path",{className:"ccd-flux-area",d:_l,fill:"url(#fluxArea)"}),f.jsx("path",{className:"ccd-flux-line",d:J,stroke:"url(#fluxLine)"}),f.jsx("path",{className:"ccd-flux-mean-line",d:xl})]}),f.jsxs("div",{className:"ccd-flux-legend",children:[f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-raw"}),f.jsx("span",{children:"Raw flux"})]}),f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-mean"}),f.jsx("span",{children:"Running mean"})]})]}),f.jsxs("div",{className:"ccd-flux-axis",children:[f.jsx("span",{children:"Earlier"}),f.jsx("span",{children:"Now"})]})]}),f.jsxs("div",{className:"ccd-flux-metrics",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Mean flux"}),f.jsx("strong",{children:A.toFixed(4)})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Sigma"}),f.jsx("strong",{children:C.toFixed(4)})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Range"}),f.jsxs("strong",{children:[L.toFixed(4)," to ",O.toFixed(4)]})]})]})]})})}const ov={eyebrow:"Flux Variability",title:"Total flux periodogram",description:"If we focus on the energy instead of the count, we get the flux - energy per second. It tells us how the total energy varies over time (1 sec bins)."},rv={stepLabel:"Step 5",title:"Periodogram of flux",body:"This tells you how much the flux varies over time . The dotted line is the running mean, which helps show trends over time."};function dv({countBins:v}){const z=v.some(A=>A>0)?v:[3,5,4,7,6,5,8,4,6,5,7,4],b=Math.max(...z,1),o=z.reduce((A,_)=>A+_,0)/z.length;return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Photon clicks per 1.0 s bin"}),f.jsxs("strong",{children:[o.toFixed(1)," clicks / second bin"]})]}),f.jsxs("div",{className:"ccd-counts-shell",children:[f.jsx("div",{className:"ccd-counts-chart","aria-label":"Photon counts per bin chart",children:z.map((A,_)=>f.jsxs("div",{className:"ccd-count-bin",children:[f.jsx("div",{className:"ccd-count-bin-label",children:A}),f.jsx("div",{className:"ccd-count-bar-shell",children:f.jsx("div",{className:"ccd-count-bar",style:{height:`${12+A/b*88}%`}})})]},_))}),f.jsxs("div",{className:"ccd-flux-axis",children:[f.jsx("span",{children:"Earlier"}),f.jsx("span",{children:"Now!"})]})]}),f.jsx("div",{className:"ccd-flux-legend",children:f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-flux-legend-swatch ccd-counts-legend-swatch-bin"}),f.jsx("span",{children:"Photon count bins"})]})}),f.jsxs("div",{className:"ccd-flux-metrics",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Bin width"}),f.jsx("strong",{children:"1.0 s"})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Latest bin"}),f.jsxs("strong",{children:[z[z.length-1]??0," clicks"]})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Mean bin count"}),f.jsx("strong",{children:o.toFixed(2)})]})]})]})})}const hv={eyebrow:"Brightness",title:"Periodogram of counts",description:"The first chart is the periodogram. We put the clicks into groups. They arrive same second, same group! This is called time bining. (each bin 1 sec). This gives us the count per second - or the periodogram of photon counts."},mv={stepLabel:"Step 4",title:"Brightness is counting clicks!",body:"If we ignore photon energy and just count how many events arrive each second, we get a brightness-style light curve from the same event list."};function vv({onComplete:v,onProgress:z}={}){const[b,o]=dl.useState(()=>Bd()),[A,_]=dl.useState(!1),[C,L]=dl.useState(!0),{elapsedMilliseconds:O,exposureStartTime:E,simulation:G}=G0(b==="receptor");dl.useEffect(()=>{const $=()=>{o(Bd()),_(!1)};return window.addEventListener("hashchange",$),()=>window.removeEventListener("hashchange",$)},[]),dl.useEffect(()=>{const $=we.indexOf(b);$<0||z?.(Math.round($/(we.length-1)*100))},[z,b]),dl.useEffect(()=>{if(!A)return;const $=al=>{al.key==="Escape"&&_(!1)};return window.addEventListener("keydown",$),()=>window.removeEventListener("keydown",$)},[A]);const H=dl.useMemo(()=>G.cells.map($=>({id:$.id,opacity:ze($.level,0,1),scale:.72+ze($.level*.7,0,.86),size:$.size,tint:$.tint,glow:$.glow})),[G.cells]),J=Math.floor(O/Da),_l=dl.useMemo(()=>R0(G.eventHistory,E,J),[J,E,G.eventHistory]),xl=dl.useMemo(()=>qd(G.eventHistory,E,J,$=>$.energy),[J,E,G.eventHistory]),il=dl.useMemo(()=>qd(G.eventHistory,E,J,()=>1),[J,E,G.eventHistory]),El=dl.useMemo(()=>H0(G.eventHistory,E,J),[J,E,G.eventHistory]),V=H.filter($=>$.opacity>.08).length,Rl=H.reduce(($,al)=>$+al.opacity,0)/Ef,Tl=_l.reduce(($,al,bl,it)=>al>it[$]?bl:$,0),jl=$l[Tl],el=Z0(b)?b:null,fl=b==="orbit"||b==="intro"||b==="closing",Q=b==="orbit",hl=el||fl?null:k0(b),Zl=C&&!fl&&!el?f.jsx(P0,{page:b}):null;return f.jsx("main",{className:"ccd-shell",children:f.jsxs("section",{className:`ccd-panel${Q?" ccd-panel-wide-scene":""}`,children:[hl?f.jsx("header",{className:"ccd-topbar",children:f.jsxs("div",{className:"ccd-copy",children:[f.jsx("p",{className:"ccd-kicker",children:hl.eyebrow}),f.jsx("h1",{children:hl.title}),f.jsx("p",{className:"ccd-description",children:hl.description})]})}):null,A?f.jsx("div",{className:"ccd-modal-backdrop",onClick:()=>_(!1),role:"presentation",children:f.jsxs("div",{className:"ccd-modal",onClick:$=>$.stopPropagation(),role:"dialog","aria-modal":"true","aria-label":"Visualization chooser",children:[f.jsxs("div",{className:"ccd-modal-header",children:[f.jsxs("div",{className:"ccd-copy",children:[f.jsx("p",{className:"ccd-kicker",children:"Data Pipeline"}),f.jsx("h2",{children:"How do we transform the event list?"})]}),f.jsx("button",{className:"ccd-modal-close",onClick:()=>_(!1),type:"button","aria-label":"Close visualization chooser",children:"Close"})]}),f.jsx(F0,{page:b,onSelect:()=>_(!1),showGuide:C,onToggleGuide:()=>L($=>!$)})]})}):null,f.jsxs("div",{className:"ccd-experience-frame",children:[b==="orbit"?f.jsx(C0,{}):null,b==="intro"?f.jsx(L0,{}):null,b==="closing"?f.jsx(V0,{onComplete:v}):null,el?f.jsx(w0,{page:el}):null,b==="receptor"?f.jsx(Y0,{cells:H,activeHits:V,averageEnergy:Rl,guide:Zl}):null,b==="photon"?f.jsx(K0,{}):null,b==="eventlist"?f.jsx(lv,{events:G.eventHistory,exposureStartTime:E}):null,b==="periodogram"?f.jsx(av,{spectralEnergy:_l}):null,b==="spectrogram"?f.jsx(cv,{spectrogramBins:El}):null,b==="flux"?f.jsx(sv,{fluxBins:xl}):null,b==="binning"?f.jsx(dv,{countBins:il}):null,b!=="receptor"?Zl:null]}),!fl&&!el?f.jsxs("div",{className:"ccd-summary-row","aria-label":"Simulation summary",children:[f.jsxs("div",{className:"ccd-summary-card",children:[f.jsx("span",{className:"ccd-stat-label",children:"Exposure time"}),f.jsx("strong",{children:N0(O)})]}),f.jsxs("div",{className:"ccd-summary-card",children:[f.jsx("span",{className:"ccd-stat-label",children:"Photon count"}),f.jsx("strong",{children:G.totalPhotons})]}),f.jsxs("div",{className:"ccd-summary-card",children:[f.jsx("span",{className:"ccd-stat-label",children:"Dominant Band (Last 1 s)"}),f.jsx("strong",{children:jl.label})]})]}):null]})})}p0.createRoot(document.getElementById("root")).render(f.jsx(vv,{})); diff --git a/dist/glitch/glitch_ccd/assets/index-Da7gUXQx.css b/dist/glitch/glitch_ccd/assets/index-Da7gUXQx.css new file mode 100644 index 0000000..ab5747b --- /dev/null +++ b/dist/glitch/glitch_ccd/assets/index-Da7gUXQx.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Russo+One&family=Space+Grotesk:wght@400;500;700&display=swap";:root{--ccd-bg: #04010b;--ccd-panel: rgba(11, 10, 22, .86);--ccd-panel-edge: rgba(168, 160, 255, .22);--ccd-text: #f4efff;--ccd-muted: #aaa1c8;--ccd-grid-line: rgba(255, 255, 255, .08);--ccd-card-bg: rgba(10, 11, 20, .74);--ccd-card-edge: rgba(255, 255, 255, .08);--ccd-accent-soft: rgba(255, 113, 74, .12);--ccd-accent-cool: rgba(125, 100, 255, .14)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 18% 18%,rgba(255,100,72,.18),transparent 20rem),radial-gradient(circle at 82% 24%,rgba(111,90,255,.22),transparent 26rem),radial-gradient(circle at 50% 100%,rgba(54,20,92,.4),transparent 28rem),linear-gradient(180deg,#06020f,#030108 55%,#020106);color:var(--ccd-text);font-family:Space Grotesk,sans-serif}button,input,select,textarea{font:inherit}.ccd-shell{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.ccd-panel{width:min(94vw,64rem);display:grid;gap:1.4rem;padding:clamp(1.2rem,3vw,2rem);border-radius:1.8rem}.ccd-panel-wide-scene{width:min(97vw,84rem)}.ccd-topbar{padding:.8rem 1rem;display:grid;gap:1rem}.ccd-toolbar-row{display:flex;justify-content:flex-end}.ccd-pipeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.ccd-pipeline-step{display:flex;font-size:small;align-items:center;gap:.65rem;min-height:1.25rem;padding:.4rem;border:1px solid rgba(255,255,255,.08);border-radius:2rem;color:#cfc6ea;background:#ffffff08;transition:border-color .14s ease,background .14s ease,box-shadow .14s ease,transform .14s ease}.ccd-pipeline-step.is-active{border-color:#ff795652;color:#f3edff;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1a;transform:translateY(-1px)}.ccd-pipeline-index{display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;flex:0 0 auto;border-radius:999px;border:1px solid rgba(255,255,255,.12);color:var(--ccd-muted);background:#ffffff0a;font-family:Russo One,sans-serif;font-size:.78rem}.ccd-pipeline-step.is-active .ccd-pipeline-index{border-color:#ff795642;color:#fff4ef;background:#ff714a24}.ccd-copy{display:grid;gap:.65rem}.ccd-kicker,.ccd-stat-label{margin:0;color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.22em;text-transform:uppercase}.emojilarge{font-size:2.8rem;line-height:1}.ccd-copy h1,.ccd-summary-card strong,.ccd-stat strong,.ccd-chart-head strong,.ccd-band-meta strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-copy h1{margin:0;font-size:clamp(1.9rem,3vw,3rem);line-height:.96;letter-spacing:-.03em}.ccd-description{margin:0;max-width:48rem;color:#c8c0df;line-height:1.55}.ccd-chooser-button,.ccd-modal-close{padding:.8rem 1rem;border:1px solid rgba(255,121,86,.28);border-radius:.9rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.88rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-chooser-button:hover,.ccd-modal-close:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-modal-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-start;justify-content:center;padding:1.5rem 1rem 1rem;background:#03040abd;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow-y:auto}.ccd-modal{width:min(92vw,62rem);max-height:min(90vh,52rem);overflow:auto;display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.3rem;background:linear-gradient(180deg,#140e28eb,#0a0813f5),#0b0a16f5;box-shadow:0 1.4rem 3rem #0000006b}.ccd-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.ccd-modal-header h2{margin:0;font-family:Russo One,sans-serif;font-size:1.3rem;font-weight:400}.ccd-selector{display:grid;gap:.95rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:radial-gradient(circle at top center,rgba(255,113,74,.08),transparent 40%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#090a15e0}.ccd-selector-root{display:grid;justify-items:center;gap:.35rem;text-align:center}.ccd-selector-root strong,.ccd-selector-link strong,.ccd-selector-axis strong,.ccd-selector-leaf strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-selector-root strong{font-size:1.25rem}.ccd-selector-root p{margin:0;max-width:42rem;color:#d8d0f8;line-height:1.45}.ccd-selector-raw,.ccd-selector-results{display:grid;gap:.9rem}.ccd-selector-raw{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-selector-link,.ccd-selector-leaf{position:relative;display:grid;gap:.38rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;color:#e9e3ff;text-decoration:none;background:#ffffff08;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease,background .14s ease}.ccd-selector-link:hover,.ccd-selector-leaf:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-link.is-active,.ccd-selector-leaf.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1.2rem #8b6aff1f}.ccd-selector-link-label,.ccd-selector-leaf-dim{color:var(--ccd-muted);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.ccd-selector-link-label{margin-bottom:.15rem}.ccd-selector-section{display:grid;gap:.75rem}.ccd-selector-axis{position:relative;display:grid;justify-items:center;gap:.38rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08;text-align:center}.ccd-selector-axis p{margin:0;max-width:34rem;color:#d8d0f8;line-height:1.45}.ccd-selector-option{justify-self:start;padding:.82rem .7rem;border:1px solid rgba(255,255,255,.08);border-radius:.9rem;color:#e9e3ff;background:#ffffff08;cursor:pointer;transition:transform .14s ease,border-color .14s ease,background .14s ease,box-shadow .14s ease}.ccd-selector-option:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-option.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1f}.ccd-selector-results{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-current{display:grid;gap:.55rem;padding:.9rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-mini-diagram{display:flex;align-items:end;gap:.32rem;min-height:4rem;padding:.55rem;margin:.15rem 0 .25rem;border-radius:.85rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 24%),#04070feb}.ccd-mini-diagram-bar{flex:1 1 0;min-height:.5rem;border-radius:.45rem .45rem .18rem .18rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6);box-shadow:0 0 .65rem #ff9e6d29}.ccd-mini-diagram-bar.is-energy{background:linear-gradient(180deg,#78dfffeb,#8d7effe6);box-shadow:0 0 .8rem #8d7eff2e}.ccd-mini-diagram-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.28rem;align-items:stretch}.ccd-mini-diagram-grid-cell{display:block;min-height:.95rem;border-radius:.32rem;background:linear-gradient(180deg,#ffd35dbd,#8f7dffe0);box-shadow:0 0 .7rem #8d7eff24}.ccd-event-note{display:grid;gap:.45rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(90deg,#ff714a14,#7d64ff14),#ffffff08}.ccd-event-note p{margin:0;color:#d8d0f8;line-height:1.45}.ccd-page{display:grid;gap:1rem}.ccd-orbit-screen{display:grid;place-items:center;min-height:min(80vh,48rem);width:100%}.ccd-orbit-panel{width:min(100%,56rem);display:grid;gap:1rem;padding:clamp(1rem,2.8vw,1.8rem);border:1px solid rgba(255,255,255,.09);border-radius:1.6rem;background:radial-gradient(circle at 16% 18%,rgba(255,113,74,.08),transparent 18rem),radial-gradient(circle at 84% 20%,rgba(125,100,255,.14),transparent 22rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15eb}.ccd-orbit-copy{display:grid;gap:.4rem;justify-items:center;text-align:center}.ccd-orbit-copy h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(2rem,4vw,3.2rem);font-weight:400;line-height:.95;letter-spacing:-.03em}.ccd-orbit-copy p{margin:0;max-width:36rem;color:#d8d0f8;line-height:1.55}.ccd-orbit-stage{position:relative;width:100%;overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1.35rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.08),transparent 18rem),linear-gradient(180deg,#080a14f5,#02040bfa)}.ccd-orbit-svg{display:block;width:100%;height:auto;min-height:36rem}.ccd-orbit-track{fill:none;stroke:#ffffff24;stroke-width:2.5;stroke-dasharray:12 10}.ccd-orbit-earth-atmosphere{fill:#68cdff2e;filter:drop-shadow(0 0 1.6rem rgba(76,173,255,.18))}.ccd-orbit-continent{fill:#57e3968c}.ccd-orbit-night-shadow{fill:#050a1a7a}.ccd-orbit-telescope{filter:drop-shadow(0 0 1.2rem rgba(255,167,113,.24))}.ccd-orbit-actions{display:flex;justify-content:center}.ccd-intro-screen{display:grid;place-items:center;min-height:min(76vh,44rem)}.ccd-intro-panel{display:grid;gap:1.1rem;width:min(100%,48rem);padding:clamp(1rem,2.6vw,1.6rem);border:1px solid rgba(255,255,255,.09);border-radius:1.5rem;background:radial-gradient(circle at 18% 18%,rgba(255,113,74,.12),transparent 18rem),radial-gradient(circle at 82% 24%,rgba(125,100,255,.16),transparent 24rem),radial-gradient(circle at 50% 0%,rgba(255,255,255,.04),transparent 18rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15e6;justify-items:center}.ccd-intro-logo-frame{display:grid;place-items:center;width:clamp(6.5rem,16vw,8.75rem);aspect-ratio:1;padding:.45rem;border:1px solid rgba(255,255,255,.12);border-radius:50%;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.14),transparent 48%),linear-gradient(180deg,#ff714a1f,#7d64ff1a),#ffffff08;box-shadow:0 0 0 1px #ffffff08 inset,0 0 1.8rem #7d64ff29}.ccd-intro-logo{width:100%;height:100%;object-fit:cover;border-radius:50%;box-shadow:0 0 1.2rem #ff714a2e}.ccd-intro-brand{display:inline-grid;justify-items:center;gap:.18rem;text-align:center}.ccd-intro-brand-mark,.ccd-intro-brand-sub{font-family:Russo One,sans-serif;font-weight:400;line-height:1}.ccd-intro-brand-mark{color:#fff1e8;font-size:clamp(1.1rem,2.8vw,1.55rem);letter-spacing:.08em;text-transform:uppercase}.ccd-intro-brand-sub{color:#d7cff3;font-size:clamp(1.55rem,4.5vw,2.8rem);letter-spacing:-.04em}.ccd-intro-copy{display:grid;gap:.45rem;justify-items:center;text-align:center}.ccd-intro-copy h2,.ccd-intro-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-intro-copy h2{font-size:clamp(2rem,4vw,3.4rem);line-height:.95;letter-spacing:-.03em}.ccd-intro-copy p,.ccd-intro-card p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-intro-copy p{font-size:1rem;max-width:35rem}.ccd-intro-covers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;width:100%}.ccd-intro-card{display:grid;gap:.42rem;padding:.85rem;border:1px solid rgba(255,255,255,.08);border-radius:1.05rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 22%),#ffffff08;box-shadow:0 0 0 1px #ffffff05 inset}.ccd-intro-card-index{color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.72rem;letter-spacing:.18em}.ccd-intro-actions{display:flex;justify-content:flex-end}.ccd-energy-panel{display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#0a0c16e0}.ccd-energy-scale{display:grid;gap:.65rem}.ccd-energy-spectrum{position:relative;height:3.5rem;border-radius:999px;background:linear-gradient(90deg,#ff5752f2,#ff7e47f2 14%,#ffba52f2,#fff461f2,#7df15ff2,#61e6faf2,#6b7ffff2 84%,#c67afff2);box-shadow:inset 0 0 0 1px #ffffff14,0 0 1.8rem #7d64ff24}.ccd-energy-spectrum:after{content:"";position:absolute;top:50%;left:var(--ccd-spectrum-position, 50%);width:1.15rem;height:4.25rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:var(--ccd-spectrum-color, rgba(255, 255, 255, .9));box-shadow:0 0 1.1rem var(--ccd-spectrum-color, rgba(255, 255, 255, .44)),0 0 0 .2rem #05070de6;transform:translate(-50%,-50%)}.ccd-energy-slider-wrap{padding:0 .3rem}.ccd-energy-slider{width:100%;margin:0;appearance:none;background:transparent}.ccd-energy-slider::-webkit-slider-runnable-track{height:.4rem;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-webkit-slider-thumb{appearance:none;width:1rem;height:1rem;margin-top:-.3rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-slider::-moz-range-track{height:.4rem;border:0;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-moz-range-thumb{width:1rem;height:1rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-scale-labels{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#cfc6ea;font-size:.84rem}.ccd-energy-scale-labels-strong{font-family:Russo One,sans-serif;font-size:.78rem;letter-spacing:.04em}.ccd-energy-readout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.ccd-energy-notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-transition-screen{display:grid;place-items:center;min-height:min(68vh,34rem);padding:1rem 0;background:none}.ccd-transition-card{width:min(100%,30rem);display:grid;gap:.75rem;justify-items:center;padding:.4rem 0;text-align:center}.ccd-transition-card h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(1.7rem,4vw,2.35rem);font-weight:400;line-height:.98}.ccd-transition-card p{margin:0;max-width:24rem;color:#d8d0f8;line-height:1.5}.ccd-transition-actions{display:flex;justify-content:center;width:100%}.ccd-closing-screen{display:grid;place-items:center;min-height:min(72vh,40rem);padding:1rem 0}.ccd-closing-panel{width:min(100%,44rem);display:grid;gap:1rem;padding:.4rem 0}.ccd-closing-panel h2,.ccd-closing-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-closing-panel h2{font-size:clamp(1.8rem,4vw,2.5rem);line-height:.98}.ccd-closing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-closing-card{display:grid;gap:.38rem;padding:.9rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-closing-card p,.ccd-closing-message{margin:0;color:#d8d0f8;line-height:1.5}.ccd-closing-message{font-family:Russo One,sans-serif;font-size:1rem;text-align:center}.ccd-closing-actions{display:flex;justify-content:center}.ccd-experience-frame{display:grid;gap:1rem}.ccd-experience-overlay{display:grid;gap:.75rem;width:100%;max-width:36rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.1);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 22%,rgba(125,100,255,.06)),#0a0c16e0;box-shadow:0 0 0 1px #ffffff08 inset}.ccd-experience-step{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#d8d0f8;font-size:.84rem}.ccd-experience-overlay h2{margin:0;font-family:Russo One,sans-serif;font-size:1.1rem;font-weight:400;line-height:1.15}.ccd-experience-overlay p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-experience-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.ccd-experience-button{display:inline-flex;align-items:center;justify-content:center;min-width:7rem;padding:.72rem .95rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;text-decoration:none;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-experience-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-experience-button-secondary{border-color:#ffffff1f;background:#ffffff0a}.ccd-experience-spacer{width:7rem}.ccd-stage{display:grid;gap:1rem;justify-items:center}.ccd-grid-frame{position:relative;width:min(78vw,36rem);aspect-ratio:1;padding:1rem;border-radius:50%;background:linear-gradient(145deg,#ffffff0a,#ffffff03),#060812eb;box-shadow:inset 0 0 0 1px #ffffff0a,0 0 0 1px #9976ff14,0 1rem 3rem #00000057}.ccd-grid{position:relative;display:grid;grid-template-columns:repeat(18,minmax(0,1fr));width:100%;height:100%;overflow:hidden;border-radius:50%;background:linear-gradient(180deg,#080a14fa,#02040bfa),#05070d}.ccd-grid:before{content:"";position:absolute;inset:0;background:linear-gradient(var(--ccd-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--ccd-grid-line) 1px,transparent 1px);background-size:calc(100% / 18) calc(100% / 18);pointer-events:none}.ccd-grid:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,transparent 48%,rgba(0,0,0,.34) 100%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 12%,transparent 88%,rgba(255,255,255,.04));pointer-events:none}.ccd-cell{position:relative}.ccd-hit{position:absolute;left:50%;top:50%;border-radius:999px;pointer-events:none;will-change:transform,opacity;transition:opacity 60ms linear,transform 90ms ease-out,box-shadow .12s ease-out}.ccd-grid-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(151,100,255,.06),transparent 44%),radial-gradient(circle at 50% 50%,transparent 62%,rgba(255,110,74,.05) 100%);mix-blend-mode:screen;pointer-events:none}.ccd-readout,.ccd-summary-row{display:grid;gap:.9rem}.ccd-readout{width:min(78vw,36rem);grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-summary-row{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.ccd-stat,.ccd-summary-card,.ccd-chart-panel,.ccd-table-panel,.ccd-legend-chip{border:1px solid var(--ccd-card-edge);border-radius:1rem;background:var(--ccd-card-bg)}.ccd-stat,.ccd-summary-card{display:grid;gap:.35rem;padding:.95rem 1rem}.ccd-stat strong,.ccd-summary-card strong,.ccd-chart-head strong{font-size:1.28rem}.ccd-audio-button{padding:.72rem .9rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-audio-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1.1rem #8b6aff1f}.ccd-chart-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 18%,transparent 80%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-table-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 15%,transparent 85%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-chart-panel-wide{gap:1.15rem}.ccd-chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.ccd-periodogram{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:.8rem;min-height:20rem;align-items:end}.ccd-periodogram-band{display:grid;gap:.8rem}.ccd-bar-shell{display:flex;align-items:end;justify-content:center;min-height:18rem;padding:.8rem .4rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 26%),#04070feb}.ccd-bar-fill{width:100%;min-height:1.6rem;border-radius:.8rem .8rem .35rem .35rem}.ccd-band-meta{display:grid;gap:.15rem;justify-items:center;text-align:center;color:#cdc5e8;font-size:.84rem}.ccd-spectrum-legend{display:flex;flex-wrap:wrap;gap:.7rem}.ccd-event-table-shell{overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 14%),#04070ff5}.ccd-event-table,.ccd-event-table-head{display:grid;grid-template-columns:1.2fr 1fr .8fr .8fr;gap:.8rem;align-items:center}.ccd-event-table{padding:.72rem .95rem;border-bottom:1px solid rgba(255,255,255,.06);font-family:SFMono-Regular,Menlo,monospace;font-size:.86rem;letter-spacing:.02em}.ccd-event-table-head{padding:.85rem .95rem;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;color:#e9e3ff;font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.14em}.ccd-event-table-body{max-height:26rem;overflow:auto}.ccd-event-table-body .ccd-event-table:nth-child(2n){background:#ffffff05}.ccd-event-table-empty{color:#aaa1c8}.ccd-legend-chip{display:inline-flex;align-items:center;gap:.55rem;padding:.72rem .85rem}.ccd-legend-dot{width:.7rem;height:.7rem;border-radius:999px}.ccd-spectrogram-shell{display:grid;grid-template-columns:5rem minmax(0,1fr);gap:.9rem;align-items:stretch}.ccd-spectrogram-axis{display:grid;grid-template-rows:repeat(8,minmax(0,1fr));gap:.5rem;color:#b7afd6;font-size:.84rem}.ccd-spectrogram-axis span{display:flex;align-items:center}.ccd-spectrogram{display:grid;gap:.45rem;overflow-x:auto}.ccd-spectrogram-row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:.3rem;min-width:22rem}.ccd-spectrogram-cell{display:block;min-height:1.6rem;border-radius:.35rem;background:#ffffff0f}.ccd-spectrogram-footer{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-chart-shell{display:grid;gap:.65rem;padding:.9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-flux-chart{position:relative;width:100%;height:15rem;overflow:visible;border-radius:.8rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 20%),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),#060912f0;background-size:auto,12.5% 100%,100% 20%}.ccd-flux-bin{fill:#ffffff06}.ccd-flux-bin-alt{fill:#ffffff0e}.ccd-flux-area{opacity:.9}.ccd-flux-line{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 .8rem rgba(143,125,255,.28))}.ccd-flux-mean-line{fill:none;stroke:#eff5ffeb;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:10 8;filter:drop-shadow(0 0 .45rem rgba(255,255,255,.16))}.ccd-flux-legend{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;color:#cdc5e8;font-size:.84rem}.ccd-flux-legend-item{display:inline-flex;align-items:center;gap:.45rem}.ccd-flux-legend-swatch{display:inline-block;width:1.6rem;height:.45rem;border-radius:999px}.ccd-flux-legend-swatch-raw{background:linear-gradient(90deg,#ff8d66,#ffd35d,#8f7dff)}.ccd-flux-legend-swatch-mean{background:repeating-linear-gradient(90deg,rgba(239,245,255,.92) 0 .45rem,transparent .45rem .8rem)}.ccd-flux-axis{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}.ccd-counts-shell{position:relative;padding:1rem .7rem .9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-counts-chart{position:relative;z-index:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(1rem,1fr));gap:.3rem;align-items:end;min-height:14rem}.ccd-count-bin{display:grid;gap:.45rem;align-items:end}.ccd-count-bin-label{color:#d9d2f0;font-size:.7rem;text-align:center}.ccd-count-bar-shell{display:flex;align-items:end;height:12rem;min-height:12rem;padding:.2rem;border-radius:.6rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 30%),#ffffff05}.ccd-count-bar{width:100%;min-height:.8rem;border-radius:.5rem .5rem .2rem .2rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6 52%,#8d7effe6);box-shadow:0 0 1rem #8d7eff2e}.ccd-counts-legend-swatch-bin{background:linear-gradient(90deg,#ffd45df2,#ff8a65e6,#8d7effe6)}@media(max-width:860px){.ccd-panel{width:min(96vw,64rem)}.ccd-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(4,minmax(0,1fr))}.ccd-intro-covers{grid-template-columns:1fr}.ccd-energy-readout,.ccd-energy-notes{grid-template-columns:1fr 1fr}.ccd-closing-grid,.ccd-summary-row,.ccd-flux-metrics,.ccd-selector-results{grid-template-columns:1fr}.ccd-modal-header{display:grid}}@media(max-width:720px){.ccd-shell{padding:1rem}.ccd-intro-screen{min-height:auto}.ccd-grid-frame,.ccd-readout{width:100%}.ccd-pipeline,.ccd-readout{grid-template-columns:1fr}.ccd-intro-actions,.ccd-closing-actions{justify-content:stretch}.ccd-chart-head,.ccd-spectrogram-shell{grid-template-columns:1fr}.ccd-chart-head{display:grid}.ccd-spectrogram-axis{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-energy-readout{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-energy-readout .ccd-stat{padding:.7rem .65rem}.ccd-energy-readout .ccd-stat strong{font-size:1rem}.ccd-energy-notes{grid-template-columns:1fr}.ccd-event-table,.ccd-event-table-head{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-raw{grid-template-columns:1fr}.ccd-selector-link,.ccd-selector-leaf{padding:.95rem}.ccd-closing-actions .ccd-experience-button{width:100%}.ccd-experience-overlay{width:100%;max-width:none}.ccd-toolbar-row{justify-content:stretch}.ccd-chooser-button,.ccd-modal-close,.ccd-intro-actions .ccd-experience-button{width:100%}} diff --git a/dist/glitch/glitch_ccd/glitch.manifest.json b/dist/glitch/glitch_ccd/glitch.manifest.json new file mode 100644 index 0000000..657fac8 --- /dev/null +++ b/dist/glitch/glitch_ccd/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "ccd", + "displayName": "CCD Photon Explorer", + "version": "0.1.0", + "folderName": "glitch_ccd", + "packageName": "@glitch-components/ccd", + "entry": "dist/index.html", + "source": "src/index.tsx", + "tags": [ + "internal", + "visualization", + "tooling" + ] +} diff --git a/dist/glitch/glitch_ccd/glitchhunterlogo.png b/dist/glitch/glitch_ccd/glitchhunterlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0e8109c3e5f53774af656e8b0b88a22eecbfb7 GIT binary patch literal 127449 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 -dqm7`jAo)a+kMDFltaP_&d}cyuN&8 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

    tT9;i?$X2psNk&d};A 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:IE)t(STvamL| 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 Ef?lW%T>t<8 literal 0 HcmV?d00001 diff --git a/dist/glitch/glitch_ccd/index.html b/dist/glitch/glitch_ccd/index.html new file mode 100644 index 0000000..54d5bc3 --- /dev/null +++ b/dist/glitch/glitch_ccd/index.html @@ -0,0 +1,13 @@ + + + + + + Glitch CCD + + + + +

    + + diff --git a/dist/glitch/glitch_chess_analogy/chess_analogy.js b/dist/glitch/glitch_chess_analogy/chess_analogy.js new file mode 100644 index 0000000..fb26c44 --- /dev/null +++ b/dist/glitch/glitch_chess_analogy/chess_analogy.js @@ -0,0 +1,439 @@ +(function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode("._wrapper_h2w9g_1{--gc-bg: var(--color-bg, #0d1117);--gc-bg-secondary: var(--color-bg-secondary, #182237);--gc-text: var(--color-text, #f1f4ef);--gc-text-muted: var(--color-text-muted, #b6c0d4);--gc-primary: var(--color-primary, #45c4b0);--gc-accent: var(--color-accent, #ff6b6b);--gc-border: var(--color-border, #34516f);width:100%}._frame_h2w9g_12{position:relative;min-height:100dvh;padding:10px;color:var(--gc-text);font-family:Space Mono,IBM Plex Mono,Courier New,monospace;background:radial-gradient(circle at 12% 8%,rgb(69 196 176 / 24%),transparent 42%),radial-gradient(circle at 86% 14%,rgb(255 107 107 / 20%),transparent 38%),linear-gradient(156deg,var(--gc-bg),var(--gc-bg-secondary));border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent)}._frameSucceeded_h2w9g_25{background:radial-gradient(circle at 18% 12%,rgb(86 255 148 / 26%),transparent 42%),radial-gradient(circle at 82% 16%,rgb(42 210 104 / 22%),transparent 38%),linear-gradient(156deg,#0f2f1f,#1b5234);border-color:color-mix(in srgb,#4be38f 56%,var(--gc-border))}._header_h2w9g_33{margin-bottom:8px}._title_h2w9g_37{margin:0;font-size:clamp(20px,6.4vw,32px);letter-spacing:.05em;text-transform:uppercase}._subtitle_h2w9g_44{margin:4px 0 0;color:var(--gc-text-muted);font-size:clamp(11px,3.3vw,14px)}._statsLine_h2w9g_50{margin:5px 0 0;padding:5px 6px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#0913209e;font-size:clamp(11px,3.1vw,13px)}._boardPanel_h2w9g_58{margin-bottom:8px}._board_h2w9g_58{position:relative;overflow:hidden;width:min(88vw,340px);aspect-ratio:1 / 1;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border:2px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));box-shadow:0 0 0 1px #00000059,0 14px 26px #00000061}._trailOverlay_h2w9g_76{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}._trailPath_h2w9g_85{fill:none;stroke:#ff2828e5;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgb(255 30 30 / 65%))}._trailHead_h2w9g_94{fill:#ff3c3cf5;filter:drop-shadow(0 0 6px rgb(255 45 45 / 70%))}._cell_h2w9g_99{position:relative;display:grid;place-items:center}._lightCell_h2w9g_105{background:#f4ecd8}._darkCell_h2w9g_109{background:#c08c61}._knight_h2w9g_113{position:absolute;z-index:3;display:grid;place-items:center;width:100%;height:100%;font-family:Times New Roman,Georgia,serif;font-size:clamp(28px,15vw,56px);line-height:1;color:#111827;text-shadow:0 1px 0 rgb(255 255 255 / 55%),0 3px 8px rgb(0 0 0 / 25%);transform:translateY(-1px)}._target_h2w9g_130{position:absolute;z-index:2;font-size:clamp(12px,8.5vw,33px);color:#e21c29;text-shadow:0 0 8px rgb(236 37 58 / 60%)}._readout_h2w9g_138{margin-bottom:8px;padding:7px;border:1px solid color-mix(in srgb,var(--gc-border) 72%,transparent);background:#040a1173}._readoutLine_h2w9g_145{margin:0;font-size:clamp(11px,3.2vw,14px)}._readoutLine_h2w9g_145+._readoutLine_h2w9g_145{margin-top:3px}._programPanel_h2w9g_154{display:flex;flex-direction:column;gap:6px}._programTrack_h2w9g_160{min-height:42px;display:flex;flex-wrap:wrap;align-items:center;gap:5px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#07111d85;padding:7px}._placeholder_h2w9g_171{color:var(--gc-text-muted);font-size:12px}._step_h2w9g_176{width:24px;height:24px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));background:#45c4b024;font-weight:600;font-size:13px}._stepExecuted_h2w9g_187{background:#ff6b6b40;border-color:#ff6b6b99}._programButtons_h2w9g_192,._controlRow_h2w9g_193{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}._button_h2w9g_199,._buttonPrimary_h2w9g_200{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);padding:7px 6px;font:inherit;font-size:20px;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:transform .12s ease,background-color .12s ease}._button_h2w9g_199{background:#09132099;color:var(--gc-text)}._buttonPrimary_h2w9g_200{background:color-mix(in srgb,var(--gc-primary) 35%,#12252f);color:#f2fff8;border-color:color-mix(in srgb,var(--gc-primary) 65%,transparent)}._button_h2w9g_199:disabled,._buttonPrimary_h2w9g_200:disabled{opacity:.48;cursor:not-allowed}._button_h2w9g_199:active,._buttonPrimary_h2w9g_200:active{transform:scale(.98)}._legend_h2w9g_233{margin:0;color:var(--gc-text-muted);font-size:11px}._promptOverlay_h2w9g_239{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;gap:8px;padding:16px;background:#02080ddb;border:1px solid color-mix(in srgb,var(--gc-accent) 40%,var(--gc-border))}._promptTitle_h2w9g_250{margin:0;text-align:center;text-transform:uppercase;letter-spacing:.08em;font-size:clamp(20px,6vw,32px)}._promptText_h2w9g_258{margin:0;text-align:center;color:var(--gc-text-muted)}._promptOptions_h2w9g_264{display:flex;justify-content:center;gap:10px}._promptOption_h2w9g_264{min-width:110px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#09132099;color:var(--gc-text);padding:8px 10px;font:inherit;font-size:14px;text-align:left;cursor:pointer}._promptSelected_h2w9g_282{border-color:color-mix(in srgb,var(--gc-accent) 70%,transparent);background:#ff6b6b33}._promptHint_h2w9g_287{margin:0;text-align:center;color:var(--gc-text-muted);font-size:11px}@media (max-width: 560px){._programButtons_h2w9g_192,._controlRow_h2w9g_193{grid-template-columns:1fr 1fr 1fr 1fr}}@media (min-width: 780px){._frame_h2w9g_12{max-width:540px;margin:0 auto;border-radius:14px;min-height:auto}}")),document.head.appendChild(r)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})(); +import { jsx as a, jsxs as l } from "react/jsx-runtime"; +import { useMemo as ne, useState as g, useRef as me, useEffect as oe, useCallback as x } from "react"; +const Oe = "_wrapper_h2w9g_1", Ae = "_frame_h2w9g_12", Ee = "_frameSucceeded_h2w9g_25", Le = "_header_h2w9g_33", Re = "_title_h2w9g_37", Ie = "_statsLine_h2w9g_50", Me = "_boardPanel_h2w9g_58", De = "_board_h2w9g_58", He = "_trailOverlay_h2w9g_76", Ge = "_trailPath_h2w9g_85", Be = "_trailHead_h2w9g_94", Ue = "_cell_h2w9g_99", Fe = "_lightCell_h2w9g_105", Ye = "_darkCell_h2w9g_109", Ve = "_knight_h2w9g_113", je = "_target_h2w9g_130", Xe = "_readout_h2w9g_138", Ke = "_readoutLine_h2w9g_145", Ze = "_programPanel_h2w9g_154", ze = "_programTrack_h2w9g_160", We = "_placeholder_h2w9g_171", qe = "_step_h2w9g_176", Je = "_stepExecuted_h2w9g_187", Qe = "_programButtons_h2w9g_192", et = "_controlRow_h2w9g_193", tt = "_button_h2w9g_199", rt = "_buttonPrimary_h2w9g_200", nt = "_legend_h2w9g_233", ot = "_promptOverlay_h2w9g_239", at = "_promptTitle_h2w9g_250", st = "_promptText_h2w9g_258", ct = "_promptOptions_h2w9g_264", lt = "_promptOption_h2w9g_264", it = "_promptSelected_h2w9g_282", dt = "_promptHint_h2w9g_287", e = { + wrapper: Oe, + frame: Ae, + frameSucceeded: Ee, + header: Le, + title: Re, + statsLine: Ie, + boardPanel: Me, + board: De, + trailOverlay: He, + trailPath: Ge, + trailHead: Be, + cell: Ue, + lightCell: Fe, + darkCell: Ye, + knight: Ve, + target: je, + readout: Xe, + readoutLine: Ke, + programPanel: Ze, + programTrack: ze, + placeholder: We, + step: qe, + stepExecuted: Je, + programButtons: Qe, + controlRow: et, + button: tt, + buttonPrimary: rt, + legend: nt, + promptOverlay: ot, + promptTitle: at, + promptText: st, + promptOptions: ct, + promptOption: lt, + promptSelected: it, + promptHint: dt +}, C = 8, h = { x: 0, y: C - 1 }, pt = 220, ut = 64, mt = 3, G = 100, ht = 5, gt = { + up: { dx: 0, dy: -1 }, + down: { dx: 0, dy: 1 }, + left: { dx: -1, dy: 0 }, + right: { dx: 1, dy: 0 } +}, _t = { + up: "↑", + down: "↓", + left: "←", + right: "→" +}, ge = [ + { dx: 0, dy: 1 }, + { dx: 1, dy: 1 }, + { dx: 1, dy: 2 }, + { dx: 1, dy: 3 }, + { dx: 2, dy: 3 }, + { dx: 1, dy: 5 }, + { dx: 1, dy: 6 } +], Z = (r, o, d) => Math.min(d, Math.max(o, r)), _e = (r) => r.x >= 0 && r.x < C && r.y >= 0 && r.y < C, yt = (r, o) => r.x === o.x && r.y === o.y, ce = (r, o) => o === 0 ? r : ce(o, r % o), ft = (r, o) => { + const d = Math.abs(o.x - r.x), p = Math.abs(o.y - r.y); + if (d === 0 && p === 0) return 0; + if (d === 0 || p === 0) return d + p; + const _ = ce(d, p); + return d / _ + p / _; +}, wt = (r) => new Promise((o) => { + window.setTimeout(o, r); +}), he = (r) => r === "Enter" || r === "NumpadEnter" || r === " " || r === "Space" || r === "Spacebar", bt = (r) => `${(r.x + 0.5) * G},${(r.y + 0.5) * G}`, z = (r) => Z(r, 0, ge.length - 1), ye = (r) => ge[z(r)], ae = (r) => { + const o = ye(r); + return o.dx + o.dy; +}, se = (r) => { + const o = ye(r), d = []; + for (let _ = 1; _ < C; _ += 1) { + const u = { + x: h.x + o.dx * _, + y: h.y - o.dy * _ + }; + if (!_e(u)) break; + Math.abs(u.x - h.x) + Math.abs(u.y - h.y) > ht && d.push(u); + } + if (d.length === 0) + return { + x: h.x + o.dx, + y: h.y - o.dy + }; + const p = Math.floor(Math.random() * d.length); + return d[p]; +}; +function Nt({ + config: r, + onComplete: o, + onProgress: d, + theme: p, + className: _ +}) { + const u = ne(() => { + const n = r.params.goalCaptures; + return typeof n != "number" ? mt : Z(Math.round(n), 1, 10); + }, [r.params.goalCaptures]), [v, le] = g(0), [N, W] = g(h), [$, ie] = g(() => se(0)), [y, q] = g([]), [B, U] = g([h]), [f, k] = g("idle"), [fe, O] = g(-1), [w, de] = g(0), [pe, L] = g(""), [R, F] = g("yes"), [I, Y] = g("continue"), [b, we] = g(!1), S = me(0), V = me(!1), i = f === "running", m = f === "gameOverPrompt" || f === "successPrompt" || f === "finished", J = ae(v), be = ne(() => p ? { + "--gc-primary": p.primary, + "--gc-accent": p.accent, + "--gc-bg": p.bg, + "--gc-bg-secondary": p.bgSecondary, + "--gc-text": p.text, + "--gc-text-muted": p.textMuted, + "--gc-border": p.border + } : {}, [p]); + oe(() => { + const n = w / u; + d == null || d(Math.round(Z(n * 100, 0, 100))); + }, [w, u, d]); + const j = x((n, t, s = "") => { + S.current += 1, k("idle"), le(z(n)), W(h), ie(se(n)), U([h]), O(-1), de(t), F("yes"), Y("continue"), L(s); + }, []), Q = x(() => { + j(v, 0, `Looking for a ${J}-step move set.`); + }, [v, J, j]), X = x((n = 0) => { + const t = z(v + 1), s = ae(t); + j(t, n, `Looking for a ${s}-step move set.`); + }, [v, j]), ee = x(() => { + V.current || (V.current = !0, S.current += 1, k("finished"), o({ + success: !1, + error: "Player chose no after game over.", + data: { + captures: w, + goalCaptures: u, + configId: r.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString(), + hasEverSucceeded: b + } + })); + }, [w, r.id, u, b, o]), D = x(() => { + V.current || (V.current = !0, S.current += 1, k("finished"), o({ + success: !0, + score: 100, + data: { + captures: w, + goalCaptures: u, + configId: r.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString(), + hasEverSucceeded: b + } + })); + }, [w, r.id, u, b, o]), M = x((n) => { + q((t) => i || m || t.length >= ut ? t : [...t, n]); + }, [m, i]), xe = x(() => { + i || m || q((n) => n.slice(0, -1)); + }, [m, i]), Ce = x(() => { + i || m || q([]); + }, [m, i]), Ne = x(() => { + S.current += 1, k("idle"), O(-1), L("Program stopped."); + }, []), Se = x(async () => { + if (i || m || y.length === 0) return; + const n = S.current + 1; + S.current = n; + let t = N, s = $, c = w, T = 0; + for (k("running"), O(-1), U([N]), L(""); S.current === n; ) + for (let P = 0; P < y.length; P += 1) { + if (await wt(pt), S.current !== n) return; + const H = y[P], K = gt[H], A = { + x: t.x + K.dx, + y: t.y + K.dy + }; + if (!_e(A)) { + k("gameOverPrompt"), F("yes"), O(-1), L(`Game over after ${T} step(s). Try again?`); + return; + } + if (T += 1, t = A, W(A), U((E) => [...E, A]), O(P), yt(A, s)) { + if (c += 1, de(c), we(!0), c >= u) { + k("successPrompt"), Y("continue"), O(-1), L(`Success. ${c} challenge(s) complete.`); + return; + } + const E = z(v + 1), re = se(E), Te = ae(E); + t = h, s = re, k("idle"), le(E), W(h), ie(re), U([h]), O(-1), L( + `Challenge ${c}/${u} complete. Looking for a ${Te}-step move set.` + ); + return; + } + } + }, [w, v, u, m, N, y, i, $]); + oe(() => { + const n = (t) => { + const s = { + ArrowUp: "up", + ArrowDown: "down", + ArrowLeft: "left", + ArrowRight: "right" + }; + if (f === "gameOverPrompt") { + if (t.key === "ArrowLeft" || t.key === "ArrowUp") { + t.preventDefault(), F("yes"); + return; + } + if (t.key === "ArrowRight" || t.key === "ArrowDown") { + t.preventDefault(), F("no"); + return; + } + he(t.key) && (t.preventDefault(), R === "yes" ? Q() : b ? D() : ee()); + return; + } + if (f === "successPrompt") { + if (t.key === "ArrowLeft" || t.key === "ArrowUp") { + t.preventDefault(), Y("continue"); + return; + } + if (t.key === "ArrowRight" || t.key === "ArrowDown") { + t.preventDefault(), Y("done"); + return; + } + he(t.key) && (t.preventDefault(), I === "continue" ? X() : D()); + return; + } + if (f !== "idle") return; + const c = s[t.key]; + c && (t.preventDefault(), M(c)); + }; + return window.addEventListener("keydown", n), () => { + window.removeEventListener("keydown", n); + }; + }, [ + M, + ee, + D, + R, + b, + f, + Q, + X, + I + ]), oe( + () => () => { + S.current += 1; + }, + [] + ); + const Pe = ne(() => { + const n = $.x - N.x, t = N.y - $.y, s = Math.abs(n), c = Math.abs(t), T = ft(N, $); + if (s === 0 && c === 0) + return { + angle: 0, + motifLength: T, + motif: "On target" + }; + if (s === 0 || c === 0) + return { + angle: s === 0 ? 90 : 0, + motifLength: T, + motif: s === 0 ? `${t >= 0 ? "U" : "D"} x ${c}` : `${n >= 0 ? "R" : "L"} x ${s}` + }; + const P = ce(s, c), H = s / P, K = c / P, A = `${n >= 0 ? "R" : "L"} x ${H}`, E = `${t >= 0 ? "U" : "D"} x ${K}`; + return { + angle: Math.atan2(c, s) * (180 / Math.PI), + motifLength: T, + motif: `${A}, ${E}` + }; + }, [N, $]), ve = Math.round(Z(w / u * 100, 0, 100)), $e = _ ? `${e.wrapper} ${_}` : e.wrapper, ue = C * G, ke = B.map(bt).join(" "), te = B[B.length - 1]; + return /* @__PURE__ */ a("div", { className: $e, style: be, children: /* @__PURE__ */ l( + "section", + { + className: `${e.frame} ${b ? e.frameSucceeded : ""}`, + "aria-label": "Chess move set trainer", + children: [ + /* @__PURE__ */ l("header", { className: e.header, children: [ + /* @__PURE__ */ a("h2", { className: e.title, children: "The Chess Analogy" }), + /* @__PURE__ */ l("p", { className: e.statsLine, children: [ + "Captures ", + w, + "/", + u, + " • Progress ", + ve, + "% • Program ", + y.length, + " • Target ", + J + ] }) + ] }), + /* @__PURE__ */ a("div", { className: e.boardPanel, children: /* @__PURE__ */ l("div", { className: e.board, role: "grid", "aria-label": "8 by 8 checkerboard", children: [ + /* @__PURE__ */ l( + "svg", + { + className: e.trailOverlay, + viewBox: `0 0 ${ue} ${ue}`, + preserveAspectRatio: "none", + "aria-hidden": "true", + children: [ + B.length > 1 && /* @__PURE__ */ a("polyline", { className: e.trailPath, points: ke }), + te && /* @__PURE__ */ a( + "circle", + { + className: e.trailHead, + cx: (te.x + 0.5) * G, + cy: (te.y + 0.5) * G, + r: 6 + } + ) + ] + } + ), + Array.from({ length: C * C }).map((n, t) => { + const s = t % C, c = Math.floor(t / C), T = (s + c) % 2 === 1, P = N.x === s && N.y === c, H = $.x === s && $.y === c; + return /* @__PURE__ */ l( + "div", + { + className: `${e.cell} ${T ? e.darkCell : e.lightCell}`, + role: "gridcell", + "aria-label": `x ${s + 1}, y ${C - c}`, + children: [ + H && /* @__PURE__ */ a("span", { className: e.target, "aria-hidden": "true", children: "●" }), + P && /* @__PURE__ */ a("span", { className: e.knight, "aria-hidden": "true", children: "♞" }) + ] + }, + `${s}-${c}` + ); + }) + ] }) }), + /* @__PURE__ */ l("div", { className: e.readout, children: [ + /* @__PURE__ */ l("p", { className: e.readoutLine, children: [ + "Angle: ", + /* @__PURE__ */ l("strong", { children: [ + Pe.angle.toFixed(1), + "°" + ] }) + ] }), + !1 + ] }), + /* @__PURE__ */ l("div", { className: e.programPanel, children: [ + /* @__PURE__ */ l("div", { className: e.programTrack, "aria-live": "polite", children: [ + y.length === 0 && /* @__PURE__ */ a("span", { className: e.placeholder, children: "Empty move set" }), + y.map((n, t) => /* @__PURE__ */ a( + "span", + { + className: `${e.step} ${i && t === fe ? e.stepExecuted : ""}`, + children: _t[n] + }, + `${n}-${t}` + )) + ] }), + /* @__PURE__ */ l("div", { className: e.programButtons, children: [ + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("up"), disabled: i || m, children: "↑" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("left"), disabled: i || m, children: "←" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("down"), disabled: i || m, children: "↓" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("right"), disabled: i || m, children: "→" }) + ] }), + /* @__PURE__ */ l("div", { className: e.controlRow, children: [ + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: xe, disabled: i || m || y.length === 0, children: "Undo" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: Ce, disabled: i || m || y.length === 0, children: "Clear" }), + /* @__PURE__ */ a("button", { type: "button", className: e.buttonPrimary, onClick: i ? Ne : Se, disabled: m || y.length === 0, children: i ? "Stop" : "Run" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => X(), disabled: i, children: "Reset" }) + ] }), + pe && /* @__PURE__ */ a("p", { className: e.legend, children: pe }) + ] }), + f === "gameOverPrompt" && /* @__PURE__ */ l("div", { className: e.promptOverlay, role: "dialog", "aria-modal": "true", "aria-label": "Game over prompt", children: [ + /* @__PURE__ */ a("p", { className: e.promptTitle, children: "Game over" }), + /* @__PURE__ */ a("p", { className: e.promptText, children: b ? "Try again or stop?" : "Try again?" }), + /* @__PURE__ */ l("div", { className: e.promptOptions, children: [ + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${R === "yes" ? e.promptSelected : ""}`, + onClick: Q, + children: [ + R === "yes" ? "▶ " : "", + "Yes" + ] + } + ), + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${R === "no" ? e.promptSelected : ""}`, + onClick: b ? D : ee, + children: [ + R === "no" ? "▶ " : "", + b ? "I'm done" : "No" + ] + } + ) + ] }), + /* @__PURE__ */ a("p", { className: e.promptHint, children: "Use arrows + Enter." }) + ] }), + f === "successPrompt" && /* @__PURE__ */ l("div", { className: e.promptOverlay, role: "dialog", "aria-modal": "true", "aria-label": "Success prompt", children: [ + /* @__PURE__ */ a("p", { className: e.promptTitle, children: "Success" }), + /* @__PURE__ */ a("p", { className: e.promptText, children: "Continue?" }), + /* @__PURE__ */ l("div", { className: e.promptOptions, children: [ + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${I === "continue" ? e.promptSelected : ""}`, + onClick: () => X(), + children: [ + I === "continue" ? "▶ " : "", + "Yes" + ] + } + ), + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${I === "done" ? e.promptSelected : ""}`, + onClick: D, + children: [ + I === "done" ? "▶ " : "", + "I'm done" + ] + } + ) + ] }), + /* @__PURE__ */ a("p", { className: e.promptHint, children: "Use arrows + Enter." }) + ] }) + ] + } + ) }); +} +const St = { + name: "chess_analogy", + displayName: "Chess Move Set Lab", + version: "1.0.0", + paramSchema: { + goalCaptures: { + type: "range", + label: "Targets To Capture", + description: "How many red targets must be captured before completion.", + default: 3, + min: 1, + max: 10, + step: 1 + } + }, + defaultParams: { + goalCaptures: 3 + } +}; +export { + Nt as default, + St as metadata +}; +//# sourceMappingURL=chess_analogy.js.map diff --git a/dist/glitch/glitch_chess_analogy/chess_analogy.js.map b/dist/glitch/glitch_chess_analogy/chess_analogy.js.map new file mode 100644 index 0000000..b50a25d --- /dev/null +++ b/dist/glitch/glitch_chess_analogy/chess_analogy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chess_analogy.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { CSSProperties } from 'react'\nimport type { GlitchComponentProps } from './types'\nimport styles from './styles.module.css'\n\nconst BOARD_SIZE = 8\nconst START_POS = { x: 0, y: BOARD_SIZE - 1 }\nconst MOVE_DELAY_MS = 220\nconst MAX_PROGRAM_LENGTH = 64\nconst DEFAULT_GOAL_CAPTURES = 3\nconst SVG_CELL_SIZE = 100\nconst MIN_TARGET_DISTANCE = 5\n\ntype Direction = 'up' | 'down' | 'left' | 'right'\ntype GameMode = 'idle' | 'running' | 'gameOverPrompt' | 'successPrompt' | 'finished'\ntype GameOverChoice = 'yes' | 'no'\ntype SuccessChoice = 'continue' | 'done'\n\ninterface Position {\n x: number\n y: number\n}\n\ninterface StepVector {\n dx: number\n dy: number\n}\n\ninterface ChallengePattern {\n dx: number\n dy: number\n}\n\nconst VECTOR_BY_DIRECTION: Record = {\n up: { dx: 0, dy: -1 },\n down: { dx: 0, dy: 1 },\n left: { dx: -1, dy: 0 },\n right: { dx: 1, dy: 0 }\n}\n\nconst ARROW_BY_DIRECTION: Record = {\n up: '↑',\n down: '↓',\n left: '←',\n right: '→'\n}\n\nconst CHALLENGE_PATTERNS: ChallengePattern[] = [\n { dx: 0, dy: 1 },\n { dx: 1, dy: 1 },\n { dx: 1, dy: 2 },\n { dx: 1, dy: 3 },\n { dx: 2, dy: 3 },\n { dx: 1, dy: 5 },\n { dx: 1, dy: 6 }\n]\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value))\n\nconst isInsideBoard = (position: Position) =>\n position.x >= 0 && position.x < BOARD_SIZE && position.y >= 0 && position.y < BOARD_SIZE\n\nconst samePosition = (a: Position, b: Position) => a.x === b.x && a.y === b.y\n\nconst gcd = (a: number, b: number): number => {\n if (b === 0) return a\n return gcd(b, a % b)\n}\n\nconst getMoveSetLength = (from: Position, to: Position) => {\n const dx = Math.abs(to.x - from.x)\n const dy = Math.abs(to.y - from.y)\n\n if (dx === 0 && dy === 0) return 0\n if (dx === 0 || dy === 0) return dx + dy\n\n const divisor = gcd(dx, dy)\n return dx / divisor + dy / divisor\n}\n\nconst wait = (ms: number) =>\n new Promise((resolve) => {\n window.setTimeout(resolve, ms)\n })\n\nconst isConfirmKey = (key: string) =>\n key === 'Enter' || key === 'NumpadEnter' || key === ' ' || key === 'Space' || key === 'Spacebar'\n\nconst toSvgPoint = (position: Position) =>\n `${(position.x + 0.5) * SVG_CELL_SIZE},${(position.y + 0.5) * SVG_CELL_SIZE}`\n\nconst getChallengeIndex = (index: number) => clamp(index, 0, CHALLENGE_PATTERNS.length - 1)\n\nconst getPatternForChallenge = (challengeIndex: number) => CHALLENGE_PATTERNS[getChallengeIndex(challengeIndex)]\n\nconst getComplexityForChallenge = (challengeIndex: number) => {\n const pattern = getPatternForChallenge(challengeIndex)\n return pattern.dx + pattern.dy\n}\n\nconst getRandomTargetForChallenge = (challengeIndex: number): Position => {\n const pattern = getPatternForChallenge(challengeIndex)\n const candidates: Position[] = []\n\n for (let multiplier = 1; multiplier < BOARD_SIZE; multiplier += 1) {\n const candidate = {\n x: START_POS.x + pattern.dx * multiplier,\n y: START_POS.y - pattern.dy * multiplier\n }\n\n if (!isInsideBoard(candidate)) break\n\n const distance = Math.abs(candidate.x - START_POS.x) + Math.abs(candidate.y - START_POS.y)\n if (distance > MIN_TARGET_DISTANCE) {\n candidates.push(candidate)\n }\n }\n\n if (candidates.length === 0) {\n return {\n x: START_POS.x + pattern.dx,\n y: START_POS.y - pattern.dy\n }\n }\n\n const randomIndex = Math.floor(Math.random() * candidates.length)\n return candidates[randomIndex]\n}\n\nexport default function Component({\n config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const goalCaptures = useMemo(() => {\n const configured = config.params.goalCaptures\n if (typeof configured !== 'number') return DEFAULT_GOAL_CAPTURES\n return clamp(Math.round(configured), 1, 10)\n }, [config.params.goalCaptures])\n\n const [challengeIndex, setChallengeIndex] = useState(0)\n const [piece, setPiece] = useState(START_POS)\n const [target, setTarget] = useState(() => getRandomTargetForChallenge(0))\n const [program, setProgram] = useState([])\n const [trailPoints, setTrailPoints] = useState([START_POS])\n const [mode, setMode] = useState('idle')\n const [stepIndex, setStepIndex] = useState(-1)\n const [captures, setCaptures] = useState(0)\n const [lastRunSummary, setLastRunSummary] = useState('')\n const [gameOverChoice, setGameOverChoice] = useState('yes')\n const [successChoice, setSuccessChoice] = useState('continue')\n const [hasEverSucceeded, setHasEverSucceeded] = useState(false)\n\n const runIdRef = useRef(0)\n const completedRef = useRef(false)\n\n const running = mode === 'running'\n const lockedForPrompt = mode === 'gameOverPrompt' || mode === 'successPrompt' || mode === 'finished'\n const currentComplexityGoal = getComplexityForChallenge(challengeIndex)\n\n const themeStyle = useMemo(() => {\n if (!theme) return {}\n\n return {\n '--gc-primary': theme.primary,\n '--gc-accent': theme.accent,\n '--gc-bg': theme.bg,\n '--gc-bg-secondary': theme.bgSecondary,\n '--gc-text': theme.text,\n '--gc-text-muted': theme.textMuted,\n '--gc-border': theme.border\n } as CSSProperties\n }, [theme])\n\n useEffect(() => {\n const ratio = captures / goalCaptures\n onProgress?.(Math.round(clamp(ratio * 100, 0, 100)))\n }, [captures, goalCaptures, onProgress])\n\n const resetBoard = useCallback((nextChallengeIndex: number, nextCaptures: number, summary = '') => {\n runIdRef.current += 1\n setMode('idle')\n setChallengeIndex(getChallengeIndex(nextChallengeIndex))\n setPiece(START_POS)\n setTarget(getRandomTargetForChallenge(nextChallengeIndex))\n setTrailPoints([START_POS])\n setStepIndex(-1)\n setCaptures(nextCaptures)\n setGameOverChoice('yes')\n setSuccessChoice('continue')\n setLastRunSummary(summary)\n }, [])\n\n const retryChallenge = useCallback(() => {\n resetBoard(challengeIndex, 0, `Looking for a ${currentComplexityGoal}-step move set.`)\n }, [challengeIndex, currentComplexityGoal, resetBoard])\n\n const advanceChallenge = useCallback((nextCaptures = 0) => {\n const nextChallengeIndex = getChallengeIndex(challengeIndex + 1)\n const nextComplexityGoal = getComplexityForChallenge(nextChallengeIndex)\n\n resetBoard(nextChallengeIndex, nextCaptures, `Looking for a ${nextComplexityGoal}-step move set.`)\n }, [challengeIndex, resetBoard])\n\n const finishFailure = useCallback(() => {\n if (completedRef.current) return\n completedRef.current = true\n runIdRef.current += 1\n setMode('finished')\n onComplete({\n success: false,\n error: 'Player chose no after game over.',\n data: {\n captures,\n goalCaptures,\n configId: config.id,\n completedAt: new Date().toISOString(),\n hasEverSucceeded\n }\n })\n }, [captures, config.id, goalCaptures, hasEverSucceeded, onComplete])\n\n const finishSuccess = useCallback(() => {\n if (completedRef.current) return\n completedRef.current = true\n runIdRef.current += 1\n setMode('finished')\n onComplete({\n success: true,\n score: 100,\n data: {\n captures,\n goalCaptures,\n configId: config.id,\n completedAt: new Date().toISOString(),\n hasEverSucceeded\n }\n })\n }, [captures, config.id, goalCaptures, hasEverSucceeded, onComplete])\n\n const addInstruction = useCallback((direction: Direction) => {\n setProgram((previous) => {\n if (running || lockedForPrompt || previous.length >= MAX_PROGRAM_LENGTH) return previous\n return [...previous, direction]\n })\n }, [lockedForPrompt, running])\n\n const undoInstruction = useCallback(() => {\n if (running || lockedForPrompt) return\n setProgram((previous) => previous.slice(0, -1))\n }, [lockedForPrompt, running])\n\n const clearProgram = useCallback(() => {\n if (running || lockedForPrompt) return\n setProgram([])\n }, [lockedForPrompt, running])\n\n const stopProgram = useCallback(() => {\n runIdRef.current += 1\n setMode('idle')\n setStepIndex(-1)\n setLastRunSummary('Program stopped.')\n }, [])\n\n const runProgram = useCallback(async () => {\n if (running || lockedForPrompt || program.length === 0) return\n\n const runId = runIdRef.current + 1\n runIdRef.current = runId\n\n let currentPiece = piece\n let currentTarget = target\n let currentCaptures = captures\n let executedSteps = 0\n\n setMode('running')\n setStepIndex(-1)\n setTrailPoints([piece])\n setLastRunSummary('')\n\n while (runIdRef.current === runId) {\n for (let index = 0; index < program.length; index += 1) {\n await wait(MOVE_DELAY_MS)\n if (runIdRef.current !== runId) return\n\n const direction = program[index]\n const vector = VECTOR_BY_DIRECTION[direction]\n const candidate = {\n x: currentPiece.x + vector.dx,\n y: currentPiece.y + vector.dy\n }\n\n if (!isInsideBoard(candidate)) {\n setMode('gameOverPrompt')\n setGameOverChoice('yes')\n setStepIndex(-1)\n setLastRunSummary(`Game over after ${executedSteps} step(s). Try again?`)\n return\n }\n\n executedSteps += 1\n currentPiece = candidate\n setPiece(candidate)\n setTrailPoints((previous) => [...previous, candidate])\n setStepIndex(index)\n\n if (samePosition(candidate, currentTarget)) {\n currentCaptures += 1\n setCaptures(currentCaptures)\n setHasEverSucceeded(true)\n\n if (currentCaptures >= goalCaptures) {\n setMode('successPrompt')\n setSuccessChoice('continue')\n setStepIndex(-1)\n setLastRunSummary(`Success. ${currentCaptures} challenge(s) complete.`)\n return\n }\n\n const nextChallengeIndex = getChallengeIndex(challengeIndex + 1)\n const nextTarget = getRandomTargetForChallenge(nextChallengeIndex)\n const nextComplexityGoal = getComplexityForChallenge(nextChallengeIndex)\n\n currentPiece = START_POS\n currentTarget = nextTarget\n\n setMode('idle')\n setChallengeIndex(nextChallengeIndex)\n setPiece(START_POS)\n setTarget(nextTarget)\n setTrailPoints([START_POS])\n setStepIndex(-1)\n setLastRunSummary(\n `Challenge ${currentCaptures}/${goalCaptures} complete. Looking for a ${nextComplexityGoal}-step move set.`\n )\n return\n }\n }\n }\n }, [captures, challengeIndex, goalCaptures, lockedForPrompt, piece, program, running, target])\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const map: Record = {\n ArrowUp: 'up',\n ArrowDown: 'down',\n ArrowLeft: 'left',\n ArrowRight: 'right'\n }\n\n if (mode === 'gameOverPrompt') {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault()\n setGameOverChoice('yes')\n return\n }\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault()\n setGameOverChoice('no')\n return\n }\n if (isConfirmKey(event.key)) {\n event.preventDefault()\n if (gameOverChoice === 'yes') retryChallenge()\n else if (hasEverSucceeded) finishSuccess()\n else finishFailure()\n }\n return\n }\n\n if (mode === 'successPrompt') {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault()\n setSuccessChoice('continue')\n return\n }\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault()\n setSuccessChoice('done')\n return\n }\n if (isConfirmKey(event.key)) {\n event.preventDefault()\n if (successChoice === 'continue') advanceChallenge()\n else finishSuccess()\n }\n return\n }\n\n if (mode !== 'idle') return\n\n const direction = map[event.key]\n if (!direction) return\n\n event.preventDefault()\n addInstruction(direction)\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [\n addInstruction,\n finishFailure,\n finishSuccess,\n gameOverChoice,\n hasEverSucceeded,\n mode,\n retryChallenge,\n advanceChallenge,\n successChoice\n ])\n\n useEffect(\n () => () => {\n runIdRef.current += 1\n },\n []\n )\n\n const aimMath = useMemo(() => {\n const dx = target.x - piece.x\n const dy = piece.y - target.y\n const absX = Math.abs(dx)\n const absY = Math.abs(dy)\n const motifLength = getMoveSetLength(piece, target)\n\n if (absX === 0 && absY === 0) {\n return {\n angle: 0,\n motifLength,\n motif: 'On target'\n }\n }\n\n if (absX === 0 || absY === 0) {\n return {\n angle: absX === 0 ? 90 : 0,\n motifLength,\n motif:\n absX === 0\n ? `${dy >= 0 ? 'U' : 'D'} x ${absY}`\n : `${dx >= 0 ? 'R' : 'L'} x ${absX}`\n }\n }\n\n const divisor = gcd(absX, absY)\n const shortX = absX / divisor\n const shortY = absY / divisor\n const horizontal = `${dx >= 0 ? 'R' : 'L'} x ${shortX}`\n const vertical = `${dy >= 0 ? 'U' : 'D'} x ${shortY}`\n const angle = Math.atan2(absY, absX) * (180 / Math.PI)\n\n return {\n angle,\n motifLength,\n motif: `${horizontal}, ${vertical}`\n }\n }, [piece, target])\n\n const progressPercent = Math.round(clamp((captures / goalCaptures) * 100, 0, 100))\n const rootClassName = className ? `${styles.wrapper} ${className}` : styles.wrapper\n const boardView = BOARD_SIZE * SVG_CELL_SIZE\n const pathValue = trailPoints.map(toSvgPoint).join(' ')\n const trailHead = trailPoints[trailPoints.length - 1]\n\n return (\n
    \n \n
    \n

    The Chess Analogy

    \n

    \n Captures {captures}/{goalCaptures} • Progress {progressPercent}% • Program {program.length} • Target {currentComplexityGoal}\n

    \n
    \n\n
    \n
    \n
    \n )\n })}\n
    \n
    \n\n
    \n

    \n Angle: {aimMath.angle.toFixed(1)}°\n

    \n {false && (\n

    \n Primitive motif: {aimMath.motif} ({aimMath.motifLength})\n

    \n )}\n
    \n\n
    \n
    \n {program.length === 0 && Empty move set}\n {program.map((instruction, index) => (\n \n {ARROW_BY_DIRECTION[instruction]}\n \n ))}\n
    \n\n
    \n \n \n \n \n
    \n\n
    \n \n \n \n \n
    \n \n \n {lastRunSummary &&

    {lastRunSummary}

    }\n
    \n\n {mode === 'gameOverPrompt' && (\n
    \n

    Game over

    \n

    {hasEverSucceeded ? 'Try again or stop?' : 'Try again?'}

    \n
    \n \n {gameOverChoice === 'yes' ? '▶ ' : ''}Yes\n \n \n {gameOverChoice === 'no' ? '▶ ' : ''}{hasEverSucceeded ? \"I'm done\" : 'No'}\n \n
    \n

    Use arrows + Enter.

    \n
    \n )}\n\n {mode === 'successPrompt' && (\n
    \n

    Success

    \n

    Continue?

    \n
    \n advanceChallenge()}\n >\n {successChoice === 'continue' ? '▶ ' : ''}Yes\n \n \n {successChoice === 'done' ? '▶ ' : ''}I'm done\n \n
    \n

    Use arrows + Enter.

    \n
    \n )}\n \n
\n )\n}\n","import Component from './Component'\nimport type { GlitchComponentMetadata } from './types'\n\nexport default Component\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'chess_analogy',\n displayName: 'Chess Move Set Lab',\n version: '1.0.0',\n paramSchema: {\n goalCaptures: {\n type: 'range',\n label: 'Targets To Capture',\n description: 'How many red targets must be captured before completion.',\n default: 3,\n min: 1,\n max: 10,\n step: 1\n }\n },\n defaultParams: {\n goalCaptures: 3\n }\n}\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n GlitchTheme,\n GlitchHostBridge,\n GlitchComponentMetadata\n} from './types'\n"],"names":["BOARD_SIZE","START_POS","MOVE_DELAY_MS","MAX_PROGRAM_LENGTH","DEFAULT_GOAL_CAPTURES","SVG_CELL_SIZE","MIN_TARGET_DISTANCE","VECTOR_BY_DIRECTION","ARROW_BY_DIRECTION","CHALLENGE_PATTERNS","clamp","value","min","max","isInsideBoard","position","samePosition","a","b","gcd","getMoveSetLength","from","to","dx","dy","divisor","wait","ms","resolve","isConfirmKey","key","toSvgPoint","getChallengeIndex","index","getPatternForChallenge","challengeIndex","getComplexityForChallenge","pattern","getRandomTargetForChallenge","candidates","multiplier","candidate","randomIndex","Component","config","onComplete","onProgress","theme","className","goalCaptures","useMemo","configured","setChallengeIndex","useState","piece","setPiece","target","setTarget","program","setProgram","trailPoints","setTrailPoints","mode","setMode","stepIndex","setStepIndex","captures","setCaptures","lastRunSummary","setLastRunSummary","gameOverChoice","setGameOverChoice","successChoice","setSuccessChoice","hasEverSucceeded","setHasEverSucceeded","runIdRef","useRef","completedRef","running","lockedForPrompt","currentComplexityGoal","themeStyle","useEffect","ratio","resetBoard","useCallback","nextChallengeIndex","nextCaptures","summary","retryChallenge","advanceChallenge","nextComplexityGoal","finishFailure","finishSuccess","addInstruction","direction","previous","undoInstruction","clearProgram","stopProgram","runProgram","runId","currentPiece","currentTarget","currentCaptures","executedSteps","vector","nextTarget","handleKeyDown","event","map","aimMath","absX","absY","motifLength","shortX","shortY","horizontal","vertical","progressPercent","rootClassName","styles","boardView","pathValue","trailHead","jsx","jsxs","_","x","y","dark","hasPiece","hasTarget","instruction","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/glitch/glitch_chess_analogy/glitch.manifest.json b/dist/glitch/glitch_chess_analogy/glitch.manifest.json new file mode 100644 index 0000000..6337d37 --- /dev/null +++ b/dist/glitch/glitch_chess_analogy/glitch.manifest.json @@ -0,0 +1,15 @@ +{ + "componentId": "chess_analogy", + "displayName": "Chess Move Set Lab", + "version": "1.0.0", + "folderName": "glitch_chess_analogy", + "packageName": "@glitch-components/chess-analogy", + "entry": "dist/chess_analogy.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "reference", + "2d", + "chess" + ] +} diff --git a/dist/glitch/glitch_gallery/assets/blblblbl-BrzQxThI.m4a b/dist/glitch/glitch_gallery/assets/blblblbl-BrzQxThI.m4a new file mode 100644 index 0000000000000000000000000000000000000000..58696a19398caa91b1436e9aae389eb8ca45f9d5 GIT binary patch literal 106893 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πA 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
    vP_xtjRC)WswnK?KpNVbL2B3LYa;e*g4 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 literal 0 HcmV?d00001 diff --git a/dist/glitch/glitch_gallery/assets/blblblbl-D60GLrQ8.mp3 b/dist/glitch/glitch_gallery/assets/blblblbl-D60GLrQ8.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..45ff06c45e5ab66ad2ed18b27ea5fabbbb5aadd0 GIT binary patch literal 44488 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 b0S6b+dI2cKGynjy94G(-0MP#z{`S8BI~dqH literal 0 HcmV?d00001 diff --git a/dist/glitch/glitch_gallery/assets/index-B1PtMIUq.js b/dist/glitch/glitch_gallery/assets/index-B1PtMIUq.js new file mode 100644 index 0000000..600cc47 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-B1PtMIUq.js @@ -0,0 +1 @@ +import{r as n,j as e}from"./index-CEeZxcxj.js";const ae="/assets/technoborder-4brzcuN1.png",ne="glitch:play-sound",ce="glitch:stop-sound",le="glitch:host:",d={click:"ui.button_click",hover:"ui.button_hover",computeStart:"machine.compute_start",computeStep:"machine.compute_step",computeDone:"machine.compute_done",verdictStable:"machine.verdict_stable",verdictAlert:"machine.verdict_alert"};function M(s,a){typeof window>"u"||window.dispatchEvent(new CustomEvent(s,{detail:a}))}function j(s,a,t){try{if(s?.playSound){s.playSound(a,t);return}}catch{}M(ne,{id:a,payload:t})}function U(s,a,t){try{if(s?.stopSound){s.stopSound(a,t);return}}catch{}M(ce,{id:a,payload:t})}function S(s,a,t){try{if(s?.emit){s.emit(a,t);return}}catch{}M(`${le}${a}`,t)}const $={continuousUniverse:!0,infinitePrecision:!0,chunkParticles:!1},_={"000":{outcome:"Paradoxical",intermediate:"Very very much information.",description:"Space is supposed to be discrete, but each cell must contain ar arbitrary amount of information.",visualClass:"paradox-point",tone:"paradox"},"001":{outcome:"Digital Physics",intermediate:"Instruction programs remain finite.",description:"Stable but requires continuous rotational symmetry to be emergent",visualClass:"stable-chunk",tone:"stable"},"010":{outcome:"#1 Memory Paradox",intermediate:"Move sets can scale to infinite length",description:"Infinte memory per cell",visualClass:"paradox-point",tone:"paradox"},"011":{outcome:"#2 Memory Paradox",intermediate:"Move sets can scale to infinite length",description:"Chunky particles must grow without bound to hold infinite move set",visualClass:"paradox-chunk",tone:"paradox"},100:{outcome:"Paradoxical",intermediate:"Chunky geometry implies discrete space",description:"A continuous universe with chunky particles spanning fundamental cells is a constadiction.",visualClass:"non-standard-particle-point",tone:"warning"},101:{outcome:"Paradoxical",intermediate:"The geometry breaks isotropy.",description:"Continuous universe plus chunk particles that imply discrete space is a constradiction.",visualClass:"non-standard-particle-chunk",tone:"warning"},110:{outcome:"Standard Physics",intermediate:"The model remains isotropic.",description:"Continuous space with infinite precision preserves the canonical picture.",visualClass:"standard-particle-point",tone:"stable"},111:{outcome:"Contradictory",intermediate:"Continuous universe cannot be combined with chunk particles.",description:"Chunky cannot be not chunky",visualClass:"standard-particle-chunk",tone:"uncertain"}},H={"000":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Point state exceeds single-cell information budget"},{label:"Verdict trace",value:"Single cell must have arbitrary information capacity"}],"001":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Chunk particle geometry engaged"},{label:"Consistency check",value:"State remains compressible under finite instruction length"},{label:"Verdict trace",value:"Digital physics interpretation remains internally stable"}],"010":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Each lattice cell requires unbounded memory"},{label:"Verdict trace",value:"Inconsistent with isotropy"}],"011":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Chunk particle"},{label:"Consistency check",value:"Particles grow to express information"},{label:"Verdict trace",value:"Chunk particles grow to infinite size"}],100:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Severely demotivated"},{label:"Verdict trace",value:"No explanation for rejecting CRS. Smell detected."}],101:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Chunk particle geometry engaged"},{label:"Consistency check",value:"Space is quantized but cells infinitely small"},{label:"Verdict trace",value:"Non-standard hybrid geometry. Smell detected"}],110:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Canonical isotropic field picture remains intact"},{label:"Verdict trace",value:"Standard physics baseline recovered successfully"}],111:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Chunk particle geometry engaged"},{label:"Consistency check",value:"Inconsistent."},{label:"Verdict trace",value:"Chunk particle cannot be not chunky"}]};function A(s,a){return typeof s=="boolean"?s:a}function N(s){return{continuousUniverse:A(s?.continuousUniverse,$.continuousUniverse),infinitePrecision:A(s?.infinitePrecision,$.infinitePrecision),chunkParticles:A(s?.chunkParticles,$.chunkParticles)}}function D(s){return[s.continuousUniverse?"1":"0",s.infinitePrecision?"1":"0",s.chunkParticles?"1":"0"].join("")}function F(s){const a=s.continuousUniverse?"Continuous universe":"Discrete universe",t=s.infinitePrecision?"Infinite precision":"Finite precision",m=s.chunkParticles?"Chunk particles":"Point particles";return`${a} + ${t} + ${m}`}function re(s){return s.tone==="stable"?100:s.tone==="uncertain"?60:s.tone==="warning"?40:20}function oe({visualClass:s}){return s==="paradox-point"?e.jsxs("div",{className:"cube-wrapper",children:[e.jsxs("div",{className:"cube",children:[e.jsx("div",{className:"face front"}),e.jsx("div",{className:"face back"}),e.jsx("div",{className:"face right"}),e.jsx("div",{className:"face left"}),e.jsx("div",{className:"face top"}),e.jsx("div",{className:"face bottom"}),e.jsx("div",{className:"particle-point"})]}),e.jsxs("div",{className:"info-arrow",children:[e.jsx("div",{className:"arrow-line"}),e.jsx("div",{className:"arrow-head"}),e.jsx("span",{className:"infinite-symbol",children:"∞"})]})]}):s==="stable-chunk"?e.jsxs("div",{className:"digital-lattice",children:[e.jsx("div",{className:"digital-grid",children:Array.from({length:9},(a,t)=>e.jsx("span",{className:`digital-cell digital-cell-${t}${t===4?" digital-cell-core":""}`},t))}),e.jsx("div",{className:"digital-core",children:e.jsx("span",{className:"digital-core-dot"})}),e.jsx("div",{className:"digital-scan digital-scan-horizontal"}),e.jsx("div",{className:"digital-scan digital-scan-vertical"}),e.jsx("div",{className:"digital-aura"})]}):s==="paradox-chunk"?e.jsxs("div",{className:"chaos-wrapper",children:[e.jsxs("div",{className:"central-source",children:[e.jsx("div",{className:"face front"}),e.jsx("div",{className:"face back"}),e.jsx("div",{className:"face right"}),e.jsx("div",{className:"face left"}),e.jsx("div",{className:"face top"}),e.jsx("div",{className:"face bottom"})]}),Array.from({length:10},(a,t)=>e.jsxs("div",{className:`debris-cube d-${t}`,children:[e.jsx("div",{className:"face front"}),e.jsx("div",{className:"face back"}),e.jsx("div",{className:"face right"}),e.jsx("div",{className:"face left"}),e.jsx("div",{className:"face top"}),e.jsx("div",{className:"face bottom"})]},t))]}):s==="non-standard-particle-point"?e.jsxs("div",{className:"signal-orbit signal-orbit-point",children:[e.jsx("div",{className:"signal-ring"}),e.jsx("div",{className:"signal-dot"}),e.jsx("div",{className:"signal-axis"})]}):s==="non-standard-particle-chunk"?e.jsxs("div",{className:"signal-orbit signal-orbit-chunk",children:[e.jsx("div",{className:"signal-ring"}),e.jsx("div",{className:"signal-cube"}),e.jsx("div",{className:"signal-axis"})]}):s==="standard-particle-point"?e.jsxs("div",{className:"physics-observatory",children:[e.jsx("div",{className:"physics-grid"}),e.jsx("div",{className:"physics-halo physics-halo-outer"}),e.jsx("div",{className:"physics-halo physics-halo-inner"}),e.jsx("div",{className:"physics-core-shell",children:e.jsx("div",{className:"physics-core-point"})}),e.jsx("span",{className:"physics-orbit physics-orbit-1"}),e.jsx("span",{className:"physics-orbit physics-orbit-2"}),e.jsx("span",{className:"physics-orbit physics-orbit-3"})]}):e.jsxs("div",{className:"physics-observatory physics-observatory-chunk",children:[e.jsx("div",{className:"physics-grid"}),e.jsx("div",{className:"physics-halo physics-halo-outer"}),e.jsx("div",{className:"physics-halo physics-halo-inner"}),e.jsx("div",{className:"physics-core-shell physics-core-shell-chunk",children:e.jsx("div",{className:"physics-core-point physics-core-chunk"})}),e.jsx("span",{className:"physics-orbit physics-orbit-1"}),e.jsx("span",{className:"physics-orbit physics-orbit-2"}),e.jsx("span",{className:"physics-orbit physics-orbit-3"}),e.jsx("div",{className:"physics-question-ring",children:e.jsx("span",{className:"physics-question",children:"?"})})]})}function de({config:s,onComplete:a,onProgress:t,theme:m,className:K,host:r}){const[f,I]=n.useState(()=>N(s.params)),[v,B]=n.useState("splash"),[G,C]=n.useState(""),[g,Q]=n.useState(()=>_[D(N(s.params))]),[l,W]=n.useState(()=>D(N(s.params))),[V,X]=n.useState(()=>F(N(s.params))),[J,O]=n.useState([]),[Y,P]=n.useState(""),w=n.useRef([]),b=n.useRef(r),q=n.useRef(a),z=n.useRef(t);n.useEffect(()=>{I(N(s.params))},[s.params]),n.useEffect(()=>{b.current=r,q.current=a,z.current=t},[r,a,t]),n.useEffect(()=>{if(v!=="processing")return;const i=H[l]??[];let c=!1;O([]),P("");const o=(h,k)=>{if(c)return;if(h>=i.length){x(()=>{if(c)return;const u=_[l];j(b.current,d.computeDone,{state:l}),y("result",()=>{z.current?.(100),j(b.current,u.tone==="stable"?d.verdictStable:d.verdictAlert,{state:l,outcome:u.outcome}),S(b.current,"verdict-ready",{state:l,outcome:u.outcome,tone:u.tone}),q.current({success:!0,score:re(u),data:{assumptions:V,state:l,outcome:u.outcome,intermediate:u.intermediate,description:u.description,processingTrace:H[l].map(L=>`${L.label}: ${L.value}`)}})})},520);return}const E=`${i[h].label}: ${i[h].value}`;if(k<=E.length){k===0&&j(b.current,d.computeStep,{state:l,lineIndex:h}),P(E.slice(0,k)),x(()=>o(h,k+1),24);return}O(u=>[...u,E]),P(""),h===i.length-1&&U(b.current,d.computeStep,{state:l,lineIndex:h}),x(()=>o(h+1,0),170)};return x(()=>o(0,0),180),()=>{c=!0,U(b.current,d.computeStep,{state:l})}},[V,l,v]),n.useEffect(()=>()=>{R()},[]);function R(){for(const i of w.current)window.clearTimeout(i);w.current=[]}function x(i,c){const o=window.setTimeout(i,c);w.current.push(o)}function y(i,c){R(),C("crt-collapse"),x(()=>{B(i),c?.(),C("crt-expand"),x(()=>{C("")},110)},110)}function T(i,c){I(o=>({...o,[i]:c})),j(r,d.click,{control:i,value:c})}function p(i){j(r,d.hover,{target:i})}function Z(){S(r,"session-started",{component:s.name,id:s.id}),t?.(10),y("controls")}function ee(){const i=D(f),c=_[i],o=F(f);W(i),X(o),Q(c),j(r,d.computeStart,{state:i}),S(r,"processing-started",{state:i,assumptions:o}),t?.(45),y("processing",()=>{t?.(70)})}function se(){R(),U(r,d.computeStep,{state:l}),S(r,"returned-to-controls",{state:l}),t?.(20),y("controls")}F(f);const ie=v==="result"&&g.visualClass.includes("paradox"),te={"--gc-primary":m?.primary||"#248a00","--gc-accent":m?.accent||"#1c6a00","--gc-bg":m?.bg||"#ffffff","--gc-bg-secondary":m?.bgSecondary||"#616161","--gc-text":m?.text||"#0f172a","--gc-text-muted":m?.textMuted||"#eaffd8","--gc-border":m?.border||"rgba(255,255,255,0.12)","--assumption-frame-image":`url(${ae})`};return e.jsx("div",{className:`gc-assumption-toggle ${K||""}`.trim(),style:te,children:e.jsx("div",{className:"component-shell",children:e.jsx("div",{className:"main-wrapper",children:e.jsx("div",{className:`crt-screen ${ie?"paradox-errors":""}`,children:e.jsxs("div",{className:`slides-wrapper ${G}`,children:[v==="splash"&&e.jsx("div",{className:"slide slide-splash",children:e.jsxs("div",{className:"splash-content",children:[e.jsx("h1",{children:"Foundational Assumption Recombinator Tool"}),e.jsx("h2",{children:"v1.0"}),e.jsx("button",{type:"button",className:"action-button",onClick:Z,onMouseEnter:()=>p("initialize"),onFocus:()=>p("initialize"),children:"Initialize"})]})}),v==="controls"&&e.jsxs("div",{className:"slide slide-controls",children:[e.jsx("div",{className:"widget-header",children:e.jsx("h1",{children:"Settings"})}),e.jsxs("div",{className:"switch-group",children:[e.jsxs("div",{className:"switch-item",children:[e.jsx("input",{id:`${s.id}-toggle-universe`,className:"switch-input",type:"checkbox",checked:f.continuousUniverse,onChange:i=>T("continuousUniverse",i.target.checked)}),e.jsxs("label",{className:"toggle-track",htmlFor:`${s.id}-toggle-universe`,onMouseEnter:()=>p("toggle-universe"),children:[e.jsx("span",{className:"option-left",children:"Discrete Universe"}),e.jsx("span",{className:"option-right",children:"Continuous Universe"})]})]}),e.jsxs("div",{className:"switch-item",children:[e.jsx("input",{id:`${s.id}-toggle-precision`,className:"switch-input",type:"checkbox",checked:f.infinitePrecision,onChange:i=>T("infinitePrecision",i.target.checked)}),e.jsxs("label",{className:"toggle-track",htmlFor:`${s.id}-toggle-precision`,onMouseEnter:()=>p("toggle-precision"),children:[e.jsx("span",{className:"option-left",children:"Finite Precision"}),e.jsx("span",{className:"option-right",children:"Infinite Precision"})]})]}),e.jsxs("div",{className:"switch-item",children:[e.jsx("input",{id:`${s.id}-toggle-particles`,className:"switch-input",type:"checkbox",checked:f.chunkParticles,onChange:i=>T("chunkParticles",i.target.checked)}),e.jsxs("label",{className:"toggle-track",htmlFor:`${s.id}-toggle-particles`,onMouseEnter:()=>p("toggle-particles"),children:[e.jsx("span",{className:"option-left",children:"Point Particles"}),e.jsx("span",{className:"option-right",children:"Chunk Particles"})]})]})]}),e.jsx("button",{type:"button",className:"action-button",onClick:ee,onMouseEnter:()=>p("simulate"),onFocus:()=>p("simulate"),children:"Simulate"})]}),v==="result"&&e.jsxs("div",{className:"slide slide-result",children:[e.jsxs("div",{className:"bottom-container",children:[e.jsx("div",{className:"visualization-container",children:e.jsx("div",{className:`art-canvas ${g.visualClass}`,children:e.jsx(oe,{visualClass:g.visualClass})})}),e.jsxs("div",{className:"result-container",children:[e.jsx("div",{className:"summary-box",children:e.jsx("span",{className:`result-value result-${g.tone}`,children:g.outcome})}),e.jsx("div",{className:"summary-box",children:e.jsx("div",{className:"intermediate-result",children:g.intermediate})}),e.jsx("span",{className:"result-description",children:g.description})]})]}),e.jsx("button",{type:"button",className:"action-button secondary",onClick:se,onMouseEnter:()=>p("back"),onFocus:()=>p("back"),children:"Back"})]}),v==="processing"&&e.jsx("div",{className:"slide slide-processing",children:e.jsxs("div",{className:"processing-shell",children:[e.jsxs("div",{className:"processing-header",children:[e.jsx("span",{className:"processing-led"}),e.jsx("h2",{children:"Computing Assumption Matrix"})]}),e.jsx("div",{className:"processing-subtitle",children:"Applying Constructor Theoretic Constraints"}),e.jsxs("div",{className:"processing-terminal",children:[J.map((i,c)=>e.jsxs("div",{className:"processing-line",children:[e.jsx("span",{className:"processing-prompt",children:">"}),e.jsx("span",{children:i})]},`${i}-${c}`)),e.jsxs("div",{className:"processing-line processing-line-active",children:[e.jsx("span",{className:"processing-prompt",children:">"}),e.jsx("span",{children:Y}),e.jsx("span",{className:"processing-cursor"})]})]})]})})]})})})})})}const me={name:"assumption-toggle",displayName:"Assumption Toggle",version:"1.0.0",paramSchema:{continuousUniverse:{type:"boolean",label:"Continuous Universe",description:"Toggle between a discrete and continuous universe model.",default:!0},infinitePrecision:{type:"boolean",label:"Infinite Precision",description:"Toggle between finite and infinite precision.",default:!0},chunkParticles:{type:"boolean",label:"Chunk Particles",description:"Toggle between point particles and chunk particles.",default:!1}},defaultParams:{continuousUniverse:!0,infinitePrecision:!0,chunkParticles:!1}};export{de as default,me as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-B7Erow2S.css b/dist/glitch/glitch_gallery/assets/index-B7Erow2S.css new file mode 100644 index 0000000..752cc3c --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-B7Erow2S.css @@ -0,0 +1 @@ +._container_12iml_1{background:var(--color-bg, #0a0a0f);color:var(--color-text, #e8e8ec);padding:var(--spacing-md, 2rem);border-radius:var(--border-radius, 12px);box-sizing:border-box;font-family:var(--font-main, "Iceland", -apple-system, BlinkMacSystemFont, sans-serif);line-height:1.5;min-height:400px;display:flex;flex-direction:column}._container_12iml_1 *,._container_12iml_1 *:before,._container_12iml_1 *:after{box-sizing:inherit}._introScreen_12iml_19{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1;text-align:center}._introTitle_12iml_27{font-family:var(--font-display, "Russo One", sans-serif);font-size:var(--small-font, 1.875rem);color:var(--color-accent, #22d3ee)}._introSubtitle_12iml_33{font-size:1rem;color:var(--color-text-muted, #9999a8);margin-top:calc(var(--spacing-sm, 1rem) * -1)}._carouselDots_12iml_39{display:flex;gap:.5rem;justify-content:center}._carouselDot_12iml_39{width:8px;height:8px;border-radius:50%;background:var(--color-border, #2a2a3a);transition:var(--transition, .2s ease)}._carouselDot_12iml_39._active_12iml_53{background:var(--color-accent, #22d3ee)}._continueButton_12iml_57{background:var(--color-primary, #6366f1);color:#fff;border:none;padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;font-family:var(--font-display, "Russo One", sans-serif);cursor:pointer;transition:var(--transition, .2s ease);margin-top:auto}._continueButton_12iml_57:hover{background:var(--color-primary-hover, #818cf8)}._quizScreen_12iml_75{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1}._intro_12iml_19{font-family:var(--font-display, "Russo One", sans-serif);font-size:var(--small-font, 1.875rem);color:var(--color-accent, #22d3ee);text-align:center;margin-bottom:var(--spacing-sm, 1rem)}._progress_12iml_90{display:flex;gap:.5rem;justify-content:center;margin-bottom:var(--spacing-sm, 1rem)}._progressDot_12iml_97{width:12px;height:12px;border-radius:50%;background:var(--color-border, #2a2a3a);transition:var(--transition, .2s ease)}._progressDot_12iml_97._active_12iml_53{background:var(--color-primary, #6366f1)}._progressDot_12iml_97._completed_12iml_109{background:var(--color-accent, #22d3ee)}._questionContainer_12iml_113{flex:1;display:flex;flex-direction:column;gap:var(--spacing-sm, 1rem)}._questionText_12iml_120{font-size:1.25rem;color:var(--color-text, #e8e8ec);font-weight:600;text-align:center}._questionContext_12iml_127{font-size:1rem;color:var(--color-text-muted, #9999a8);text-align:center;margin-bottom:var(--spacing-sm, 1rem)}._options_12iml_134{display:flex;flex-direction:column;gap:var(--spacing-xs, .5rem)}._option_12iml_134{background:var(--color-bg-secondary, #12121a);border:1px solid var(--color-border, #2a2a3a);color:var(--color-text, #e8e8ec);padding:var(--spacing-sm, 1rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;cursor:pointer;transition:var(--transition, .2s ease);text-align:left;font-family:inherit}._option_12iml_134:hover{border-color:var(--color-primary, #6366f1);background:#6366f11a}._option_12iml_134._selected_12iml_158{border-color:var(--color-accent, #22d3ee);background:#22d3ee1a}._recommendationScreen_12iml_164{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1}._diagnosticComplete_12iml_171{font-family:var(--font-display, "Russo One", sans-serif);font-size:1.25rem;color:var(--color-accent, #22d3ee);text-align:center}._summaryBox_12iml_178{background:var(--color-bg-secondary, #12121a);border:1px solid var(--color-border, #2a2a3a);border-radius:var(--border-radius, 12px);padding:var(--spacing-md, 2rem);text-align:center}._summaryLabel_12iml_186{font-size:.875rem;color:var(--color-text-muted, #9999a8);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--spacing-xs, .5rem)}._summaryText_12iml_194{font-size:1.125rem;color:var(--color-text, #e8e8ec);font-style:italic;white-space:pre-line;line-height:1.6}._recommendedLabel_12iml_202{font-size:.875rem;color:var(--color-text-muted, #9999a8);text-transform:uppercase;letter-spacing:.1em;text-align:center}._roleCards_12iml_210{display:flex;gap:var(--spacing-sm, 1rem);overflow-x:auto;padding-bottom:var(--spacing-xs, .5rem);scroll-snap-type:x mandatory}._roleCard_12iml_210{flex:0 0 280px;background:var(--color-bg-secondary, #12121a);border:2px solid var(--color-border, #2a2a3a);border-radius:var(--border-radius, 12px);padding:var(--spacing-sm, 1rem);transition:var(--transition, .2s ease);scroll-snap-align:center}._roleCard_12iml_210._recommended_12iml_202{border-color:var(--color-accent, #22d3ee);box-shadow:0 0 20px #22d3ee33}._roleCard_12iml_210._recommended_12iml_202:before{content:"RECOMMENDED";display:block;font-size:.625rem;color:var(--color-accent, #22d3ee);letter-spacing:.15em;margin-bottom:var(--spacing-xs, .5rem)}._roleTitle_12iml_242{font-family:var(--font-display, "Russo One", sans-serif);font-size:1.25rem;color:var(--color-primary, #6366f1);margin-bottom:var(--spacing-xs, .5rem)}._roleDescription_12iml_249{font-size:.875rem;color:var(--color-text-muted, #9999a8);line-height:1.5}._roleStrengths_12iml_255{display:flex;flex-direction:column;gap:.25rem;margin-top:var(--spacing-xs, .5rem)}._strengthTag_12iml_262{font-size:.75rem;color:var(--color-accent, #22d3ee)}._roleCard_12iml_210._selectable_12iml_267{cursor:pointer}._roleCard_12iml_210._selectable_12iml_267:hover{border-color:var(--color-primary, #6366f1);transform:translateY(-2px)}._resultScreen_12iml_277{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1;text-align:center}._assignedLabel_12iml_285{font-size:.875rem;color:var(--color-text-muted, #9999a8);text-transform:uppercase;letter-spacing:.1em}._resultCard_12iml_292{background:var(--color-bg-secondary, #12121a);border:2px solid var(--color-accent, #22d3ee);border-radius:var(--border-radius, 12px);padding:var(--spacing-md, 2rem);box-shadow:0 0 20px #22d3ee33;text-align:left}._resultCard_12iml_292 ._roleTitle_12iml_242{text-align:center}._resultCard_12iml_292 ._roleDescription_12iml_249{text-align:center;margin-bottom:var(--spacing-sm, 1rem)}._resultCard_12iml_292 ._roleStrengths_12iml_255{align-items:center}._resultButtons_12iml_314{display:flex;flex-direction:column;gap:var(--spacing-xs, .5rem);margin-top:auto}._acceptButton_12iml_321{background:var(--color-accent, #22d3ee);color:var(--color-bg, #0a0a0f);border:none;padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;font-family:var(--font-display, "Russo One", sans-serif);cursor:pointer;transition:var(--transition, .2s ease);font-weight:600}._acceptButton_12iml_321:hover{background:#5ce1f0}._decideButton_12iml_338{background:transparent;color:var(--color-text-muted, #9999a8);border:1px solid var(--color-border, #2a2a3a);padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:.875rem;font-family:inherit;cursor:pointer;transition:var(--transition, .2s ease)}._decideButton_12iml_338:hover{border-color:var(--color-text-muted, #9999a8);color:var(--color-text, #e8e8ec)}._selectionScreen_12iml_356{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1}._selectionTitle_12iml_363{font-family:var(--font-display, "Russo One", sans-serif);font-size:1.25rem;color:var(--color-accent, #22d3ee);text-align:center}._welcomeScreen_12iml_371{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1;text-align:center}._welcomeTitle_12iml_379{font-family:var(--font-display, "Russo One", sans-serif);font-size:var(--small-font, 1.875rem);color:var(--color-primary, #6366f1)}._welcomeRole_12iml_385{color:var(--color-accent, #22d3ee)}._welcomeDescription_12iml_389{font-size:1.125rem;color:var(--color-text, #e8e8ec);max-width:500px;margin:0 auto;line-height:1.6}._statsList_12iml_397{display:flex;flex-direction:column;gap:var(--spacing-sm, 1rem);text-align:left;max-width:400px;margin:0 auto}._statItem_12iml_406{background:var(--color-bg-secondary, #12121a);border-radius:var(--border-radius-sm, 8px);padding:var(--spacing-sm, 1rem)}._statLabel_12iml_412{font-size:.75rem;color:var(--color-accent, #22d3ee);text-transform:uppercase;letter-spacing:.1em;margin-bottom:.25rem}._statValue_12iml_420{font-size:.875rem;color:var(--color-text, #e8e8ec)}._strengthsList_12iml_425{list-style:none;padding:0;margin:0}._strengthsList_12iml_425 li{padding:.25rem 0}._strengthsList_12iml_425 li:before{content:"+ ";color:var(--color-accent, #22d3ee)}._confirmButton_12iml_440{background:var(--color-primary, #6366f1);color:#fff;border:none;padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;font-family:var(--font-display, "Russo One", sans-serif);cursor:pointer;transition:var(--transition, .2s ease);margin-top:auto}._confirmButton_12iml_440:hover{background:var(--color-primary-hover, #818cf8)}@media(max-width:768px){._introScreen_12iml_19 ._roleCards_12iml_210,._selectionScreen_12iml_356 ._roleCards_12iml_210{flex-direction:row}._introScreen_12iml_19 ._roleCard_12iml_210,._selectionScreen_12iml_356 ._roleCard_12iml_210{flex:0 0 260px}} diff --git a/dist/glitch/glitch_gallery/assets/index-BOUPxVBe.js b/dist/glitch/glitch_gallery/assets/index-BOUPxVBe.js new file mode 100644 index 0000000..fc5591c --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-BOUPxVBe.js @@ -0,0 +1 @@ +import{r as n,j as e}from"./index-CEeZxcxj.js";const H="_container_166qm_3",U="_panel_166qm_21",Y="_imageFrame_166qm_38",K="_sceneImage_166qm_63",O="_sceneFallback_166qm_70",P="_sceneFallbackGlow_166qm_102",V="_sceneFallbackHud_166qm_113",$="_sceneFallbackBadge_166qm_122",G="_sceneFallbackSignal_166qm_123",W="_sceneFallbackCopy_166qm_138",J="_sceneFallbackKicker_166qm_146",z="_sceneFallbackTitle_166qm_155",Q="_sceneFallbackDetail_166qm_164",X="_sceneFallbackBars_166qm_171",Z="_dialogueBox_166qm_196",ee="_dialogueHeader_166qm_217",ae="_title_166qm_224",se="_loopBadge_166qm_235",te="_description_166qm_253",ne="_actionButton_166qm_261",ce="_choices_166qm_296",oe="_choiceButton_166qm_303",ie="_choiceKey_166qm_337",le="_choiceContent_166qm_366",re="_choiceTitle_166qm_373",de="_choiceDesc_166qm_380",me="_rejection_166qm_387",he="_rejectionBadge_166qm_395",pe="_quote_166qm_416",ge="_explanation_166qm_426",ue="_insightButton_166qm_435",xe="_insight_166qm_435",_e="_insightTitle_166qm_465",je="_paradoxDiagram_166qm_474",be="_paradoxNode_166qm_486",Ne="_paradoxArrow_166qm_495",ke="_insightText_166qm_513",ye="_completeButton_166qm_530",Be="_successBox_166qm_566",ve="_successTitle_166qm_570",Ce="_stats_166qm_581",qe="_scoreDisplay_166qm_587",Te="_scoreLabel_166qm_597",Fe="_scoreValue_166qm_605",a={container:H,panel:U,imageFrame:Y,sceneImage:K,sceneFallback:O,sceneFallbackGlow:P,sceneFallbackHud:V,sceneFallbackBadge:$,sceneFallbackSignal:G,sceneFallbackCopy:W,sceneFallbackKicker:J,sceneFallbackTitle:z,sceneFallbackDetail:Q,sceneFallbackBars:X,dialogueBox:Z,dialogueHeader:ee,title:ae,loopBadge:se,description:te,actionButton:ne,choices:ce,choiceButton:oe,choiceKey:ie,choiceContent:le,choiceTitle:re,choiceDesc:de,rejection:me,rejectionBadge:he,quote:pe,explanation:ge,insightButton:ue,insight:xe,insightTitle:_e,paradoxDiagram:je,paradoxNode:be,paradoxArrow:Ne,insightText:ke,completeButton:ye,successBox:Be,successTitle:ve,stats:Ce,scoreDisplay:qe,scoreLabel:Te,scoreValue:Fe},f="/glitch/migration-paradox",fe=2,Ae=1,u={presenting:{badge:"Migration Briefing",title:"Stakeholders Await Your Plan",copy:"Frame the migration as progress without triggering fear.",detail:"You need a strategy that creates momentum before the paradox closes in.",tone:"primary"},"rejection-value":{badge:"Stakeholder Response",title:"Too Much Change",copy:"Your pitch sounded valuable, but it also sounded dangerous.",detail:"They want new capability only if nothing important feels different.",tone:"danger"},"rejection-same":{badge:"Stakeholder Response",title:"Too Little Value",copy:"Your pitch sounded safe, but it also sounded pointless.",detail:"They want risk contained, but they still expect the migration to matter.",tone:"danger"},awareness:{badge:"Pattern Detected",title:"Expose The Contradiction",copy:"Show how value and continuity need different phases, not one impossible promise.",detail:"Explore, preserve, and then innovate.",tone:"accent"},complete:{badge:"Challenge Complete",title:"Paradox Resolved",copy:"You reframed the migration into a sequence stakeholders can accept.",detail:"Value and stability can coexist when delivery is phased.",tone:"success"}};function we(c){if(typeof c!="string")return f;const o=c.trim();return o?o.replace(/\/+$/,""):f}function b(c,o){return`${c}/${o}`}function A(c,o){const s=c==="A"?fe:Ae,i=Math.floor(Math.random()*s)+1;return b(o,`rejection${c}_${i}.png`)}function x({src:c,alt:o,fallback:s,onImageError:i}){return e.jsx("div",{className:a.imageFrame,children:c?e.jsx("img",{src:c,alt:o,className:a.sceneImage,onError:()=>i(c)}):e.jsxs("div",{className:a.sceneFallback,"data-tone":s.tone,role:"img","aria-label":o,children:[e.jsx("div",{className:a.sceneFallbackGlow}),e.jsxs("div",{className:a.sceneFallbackHud,children:[e.jsx("span",{className:a.sceneFallbackBadge,children:s.badge}),e.jsx("span",{className:a.sceneFallbackSignal,children:"GLITCH SIM"})]}),e.jsxs("div",{className:a.sceneFallbackCopy,children:[e.jsx("p",{className:a.sceneFallbackKicker,children:s.copy}),e.jsx("h3",{className:a.sceneFallbackTitle,children:s.title}),e.jsx("p",{className:a.sceneFallbackDetail,children:s.detail})]}),e.jsxs("div",{className:a.sceneFallbackBars,"aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]})]})})}function Se({config:c,onComplete:o,onProgress:s,theme:i,className:w}){const _=c?.params??{},[m,h]=n.useState("intro"),[l,v]=n.useState({loopCount:0,valueAttempts:0,sameAttempts:0}),[N,E]=n.useState(!1),[C,q]=n.useState(""),[T,S]=n.useState({}),r=n.useMemo(()=>we(_.assetBaseUrl??_.imageBaseUrl),[_.assetBaseUrl,_.imageBaseUrl]),j=n.useMemo(()=>({presenting:b(r,"presenting.png"),insight:b(r,"insight.png"),complete:b(r,"complete.png")}),[r]),I={"--gc-primary":i?.primary||"#6366f1","--gc-accent":i?.accent||"#22d3ee","--gc-bg":i?.bg||"#0a0a0f","--gc-bg-secondary":i?.bgSecondary||"#12121a","--gc-text":i?.text||"#e8e8ec","--gc-text-muted":i?.textMuted||"#9999a8","--gc-border":i?.border||"#2a2a3a"},d=l.valueAttempts+l.sameAttempts,k=d>=4,p=n.useCallback(t=>T[t]?void 0:t,[T]),g=n.useCallback(t=>{S(B=>B[t]?B:{...B,[t]:!0})},[]),D=n.useCallback(()=>{h("choice"),s?.(10)},[s]),M=n.useCallback(()=>{q(A("A",r)),v(t=>({...t,valueAttempts:t.valueAttempts+1,loopCount:t.loopCount+(t.sameAttempts>t.valueAttempts?.5:0)})),h("rejection-value"),s?.(Math.min(30+d*10,80))},[r,d,s]),L=n.useCallback(()=>{q(A("B",r)),v(t=>({...t,sameAttempts:t.sameAttempts+1,loopCount:t.loopCount+(t.valueAttempts>t.sameAttempts?.5:0)})),h("rejection-same"),s?.(Math.min(30+d*10,80))},[r,d,s]),F=n.useCallback(()=>{h("choice")},[]),y=n.useCallback(()=>{E(!0),h("awareness"),s?.(90)},[s]),R=n.useCallback(()=>{h("complete"),s?.(100),o({success:!0,score:100,data:{loopsBeforeInsight:Math.floor(l.loopCount),totalAttempts:d,valueAttempts:l.valueAttempts,sameAttempts:l.sameAttempts},rewards:{paradoxes:[{id:"migration-paradox",name:"The Migration Paradox",description:"Stakeholders simultaneously demand that a migration adds value AND changes nothing.",rarity:"uncommon"}]}})},[o,s,l,d]);return e.jsxs("div",{className:`${a.container} ${w||""}`,style:I,children:[m==="intro"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.presenting),alt:"Presenting to stakeholders",fallback:u.presenting,onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsx("h2",{className:a.title,children:"The Migration Paradox"}),e.jsx("p",{className:a.description,children:"You've been tasked with migrating the core system. Your stakeholders are waiting for your strategy."}),e.jsx("button",{className:a.actionButton,onClick:D,children:"▶ Present Your Strategy"})]})]}),m==="choice"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.presenting),alt:"Presenting options",fallback:u.presenting,onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.dialogueHeader,children:[e.jsx("h2",{className:a.title,children:"Choose Your Approach"}),l.loopCount>0&&e.jsxs("span",{className:a.loopBadge,children:["LOOP ",Math.floor(l.loopCount)+1]})]}),e.jsx("p",{className:a.description,children:"How will you pitch the migration project?"}),e.jsxs("div",{className:a.choices,children:[e.jsxs("button",{className:a.choiceButton,onClick:M,children:[e.jsx("span",{className:a.choiceKey,children:"A"}),e.jsxs("span",{className:a.choiceContent,children:[e.jsx("span",{className:a.choiceTitle,children:"Emphasize Change"}),e.jsx("span",{className:a.choiceDesc,children:'"The new system will add value and enable new capabilities"'})]})]}),e.jsxs("button",{className:a.choiceButton,onClick:L,children:[e.jsx("span",{className:a.choiceKey,children:"B"}),e.jsxs("span",{className:a.choiceContent,children:[e.jsx("span",{className:a.choiceTitle,children:"Emphasize No Change"}),e.jsx("span",{className:a.choiceDesc,children:'"Everything will work exactly the same as before"'})]})]})]}),k&&!N&&e.jsx("button",{className:a.insightButton,onClick:y,children:"✦ Wait... I see the pattern"})]})]}),m==="rejection-value"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(C),alt:"Stakeholder rejection",fallback:u["rejection-value"],onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.rejection,children:[e.jsx("span",{className:a.rejectionBadge,children:"✗ REJECTED"}),e.jsx("p",{className:a.quote,children:'"Are you insane? This will break everything!"'}),e.jsx("p",{className:a.explanation,children:`"If you want to change the core system, you need to make absolutely sure that everything works exactly the same. We can't risk any disruption."`})]}),e.jsx("button",{className:a.actionButton,onClick:F,children:"▶ Try a Different Approach"}),k&&!N&&e.jsx("button",{className:a.insightButton,onClick:y,children:"✦ Wait... I see the pattern"})]})]}),m==="rejection-same"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(C),alt:"Stakeholder rejection",fallback:u["rejection-same"],onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.rejection,children:[e.jsx("span",{className:a.rejectionBadge,children:"✗ REJECTED"}),e.jsx("p",{className:a.quote,children:'"This is insane. Why would we do this?"'}),e.jsx("p",{className:a.explanation,children:`"If everything is going to stay exactly the same, why would we spend all this time and money replacing the core system? What's the point?"`})]}),e.jsx("button",{className:a.actionButton,onClick:F,children:"▶ Try a Different Approach"}),k&&!N&&e.jsx("button",{className:a.insightButton,onClick:y,children:"✦ Wait... I see the pattern"})]})]}),m==="awareness"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.insight),alt:"Insight moment",fallback:u.awareness,onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.insight,children:[e.jsx("h2",{className:a.insightTitle,children:"★ The Paradox Revealed ★"}),e.jsxs("p",{className:a.insightText,children:["You've discovered the ",e.jsx("strong",{children:"Migration Paradox"}),": stakeholders demand that you change things - to give value. But also that nothing changes, to contain risk."]}),e.jsxs("p",{className:a.insightText,children:["The solution is ",e.jsx("strong",{children:"phased delivery"}),". First, prove business case. Then prove you can preserve existing functionality. Then introduce new capabilities."]}),e.jsxs("div",{className:a.paradoxDiagram,children:[e.jsx("div",{className:a.paradoxNode,children:'"Explore"'}),e.jsx("div",{className:a.paradoxArrow,children:"→"}),e.jsx("div",{className:a.paradoxNode,children:'"Preserve"'}),e.jsx("div",{className:a.paradoxArrow,children:"→"}),e.jsx("div",{className:a.paradoxNode,children:'"Innovate"'}),e.jsx("div",{className:a.paradoxArrow,children:"→"})]})]}),e.jsx("button",{className:a.completeButton,onClick:R,children:"▶ Complete Challenge"})]})]}),m==="complete"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.complete),alt:"Challenge complete",fallback:u.complete,onImageError:g}),e.jsx("div",{className:a.dialogueBox,children:e.jsxs("div",{className:a.successBox,children:[e.jsx("h2",{className:a.successTitle,children:"★ CHALLENGE COMPLETE ★"}),e.jsxs("p",{className:a.stats,children:["You experienced ",Math.floor(l.loopCount)," loop(s) before seeing the pattern."]}),e.jsxs("div",{className:a.scoreDisplay,children:[e.jsx("span",{className:a.scoreLabel,children:"SCORE"}),e.jsx("span",{className:a.scoreValue,children:"100"})]})]})})]})]})}const Ie={name:"migration-paradox",displayName:"The Migration Paradox",version:"1.0.0",paramSchema:{assetBaseUrl:{type:"string",label:"Asset Base URL",description:"Shared CDN or public folder containing presenting.png, insight.png, complete.png, rejectionA_1.png, rejectionA_2.png, and rejectionB_1.png.",default:"/glitch/migration-paradox"}},defaultParams:{assetBaseUrl:"/glitch/migration-paradox"}};export{Se as default,Ie as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-Bdi24PkQ.css b/dist/glitch/glitch_gallery/assets/index-Bdi24PkQ.css new file mode 100644 index 0000000..38eeab7 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-Bdi24PkQ.css @@ -0,0 +1 @@ +:root{--ccd-bg: #04010b;--ccd-panel: rgba(11, 10, 22, .86);--ccd-panel-edge: rgba(168, 160, 255, .22);--ccd-text: #f4efff;--ccd-muted: #aaa1c8;--ccd-grid-line: rgba(255, 255, 255, .08);--ccd-card-bg: rgba(10, 11, 20, .74);--ccd-card-edge: rgba(255, 255, 255, .08);--ccd-accent-soft: rgba(255, 113, 74, .12);--ccd-accent-cool: rgba(125, 100, 255, .14)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 18% 18%,rgba(255,100,72,.18),transparent 20rem),radial-gradient(circle at 82% 24%,rgba(111,90,255,.22),transparent 26rem),radial-gradient(circle at 50% 100%,rgba(54,20,92,.4),transparent 28rem),linear-gradient(180deg,#06020f,#030108 55%,#020106);color:var(--ccd-text);font-family:Space Grotesk,sans-serif}button,input,select,textarea{font:inherit}.ccd-shell{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.ccd-panel{width:min(94vw,64rem);display:grid;gap:1.4rem;padding:clamp(1.2rem,3vw,2rem);border-radius:1.8rem}.ccd-panel-wide-scene{width:min(97vw,84rem)}.ccd-topbar{padding:.8rem 1rem;display:grid;gap:1rem}.ccd-toolbar-row{display:flex;justify-content:flex-end}.ccd-pipeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.ccd-pipeline-step{display:flex;font-size:small;align-items:center;gap:.65rem;min-height:1.25rem;padding:.4rem;border:1px solid rgba(255,255,255,.08);border-radius:2rem;color:#cfc6ea;background:#ffffff08;transition:border-color .14s ease,background .14s ease,box-shadow .14s ease,transform .14s ease}.ccd-pipeline-step.is-active{border-color:#ff795652;color:#f3edff;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1a;transform:translateY(-1px)}.ccd-pipeline-index{display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;flex:0 0 auto;border-radius:999px;border:1px solid rgba(255,255,255,.12);color:var(--ccd-muted);background:#ffffff0a;font-family:Russo One,sans-serif;font-size:.78rem}.ccd-pipeline-step.is-active .ccd-pipeline-index{border-color:#ff795642;color:#fff4ef;background:#ff714a24}.ccd-copy{display:grid;gap:.65rem}.ccd-kicker,.ccd-stat-label{margin:0;color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.22em;text-transform:uppercase}.emojilarge{font-size:2.8rem;line-height:1}.ccd-copy h1,.ccd-summary-card strong,.ccd-stat strong,.ccd-chart-head strong,.ccd-band-meta strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-copy h1{margin:0;font-size:clamp(1.9rem,3vw,3rem);line-height:.96;letter-spacing:-.03em}.ccd-description{margin:0;max-width:48rem;color:#c8c0df;line-height:1.55}.ccd-chooser-button,.ccd-modal-close{padding:.8rem 1rem;border:1px solid rgba(255,121,86,.28);border-radius:.9rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.88rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-chooser-button:hover,.ccd-modal-close:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-modal-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-start;justify-content:center;padding:1.5rem 1rem 1rem;background:#03040abd;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow-y:auto}.ccd-modal{width:min(92vw,62rem);max-height:min(90vh,52rem);overflow:auto;display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.3rem;background:linear-gradient(180deg,#140e28eb,#0a0813f5),#0b0a16f5;box-shadow:0 1.4rem 3rem #0000006b}.ccd-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.ccd-modal-header h2{margin:0;font-family:Russo One,sans-serif;font-size:1.3rem;font-weight:400}.ccd-selector{display:grid;gap:.95rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:radial-gradient(circle at top center,rgba(255,113,74,.08),transparent 40%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#090a15e0}.ccd-selector-root{display:grid;justify-items:center;gap:.35rem;text-align:center}.ccd-selector-root strong,.ccd-selector-link strong,.ccd-selector-axis strong,.ccd-selector-leaf strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-selector-root strong{font-size:1.25rem}.ccd-selector-root p{margin:0;max-width:42rem;color:#d8d0f8;line-height:1.45}.ccd-selector-raw,.ccd-selector-results{display:grid;gap:.9rem}.ccd-selector-raw{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-selector-link,.ccd-selector-leaf{position:relative;display:grid;gap:.38rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;color:#e9e3ff;text-decoration:none;background:#ffffff08;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease,background .14s ease}.ccd-selector-link:hover,.ccd-selector-leaf:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-link.is-active,.ccd-selector-leaf.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1.2rem #8b6aff1f}.ccd-selector-link-label,.ccd-selector-leaf-dim{color:var(--ccd-muted);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.ccd-selector-link-label{margin-bottom:.15rem}.ccd-selector-section{display:grid;gap:.75rem}.ccd-selector-axis{position:relative;display:grid;justify-items:center;gap:.38rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08;text-align:center}.ccd-selector-axis p{margin:0;max-width:34rem;color:#d8d0f8;line-height:1.45}.ccd-selector-option{justify-self:start;padding:.82rem .7rem;border:1px solid rgba(255,255,255,.08);border-radius:.9rem;color:#e9e3ff;background:#ffffff08;cursor:pointer;transition:transform .14s ease,border-color .14s ease,background .14s ease,box-shadow .14s ease}.ccd-selector-option:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-option.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1f}.ccd-selector-results{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-current{display:grid;gap:.55rem;padding:.9rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-mini-diagram{display:flex;align-items:end;gap:.32rem;min-height:4rem;padding:.55rem;margin:.15rem 0 .25rem;border-radius:.85rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 24%),#04070feb}.ccd-mini-diagram-bar{flex:1 1 0;min-height:.5rem;border-radius:.45rem .45rem .18rem .18rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6);box-shadow:0 0 .65rem #ff9e6d29}.ccd-mini-diagram-bar.is-energy{background:linear-gradient(180deg,#78dfffeb,#8d7effe6);box-shadow:0 0 .8rem #8d7eff2e}.ccd-mini-diagram-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.28rem;align-items:stretch}.ccd-mini-diagram-grid-cell{display:block;min-height:.95rem;border-radius:.32rem;background:linear-gradient(180deg,#ffd35dbd,#8f7dffe0);box-shadow:0 0 .7rem #8d7eff24}.ccd-event-note{display:grid;gap:.45rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(90deg,#ff714a14,#7d64ff14),#ffffff08}.ccd-event-note p{margin:0;color:#d8d0f8;line-height:1.45}.ccd-page{display:grid;gap:1rem}.ccd-orbit-screen{display:grid;place-items:center;min-height:min(80vh,48rem);width:100%}.ccd-orbit-panel{width:min(100%,56rem);display:grid;gap:1rem;padding:clamp(1rem,2.8vw,1.8rem);border:1px solid rgba(255,255,255,.09);border-radius:1.6rem;background:radial-gradient(circle at 16% 18%,rgba(255,113,74,.08),transparent 18rem),radial-gradient(circle at 84% 20%,rgba(125,100,255,.14),transparent 22rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15eb}.ccd-orbit-copy{display:grid;gap:.4rem;justify-items:center;text-align:center}.ccd-orbit-copy h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(2rem,4vw,3.2rem);font-weight:400;line-height:.95;letter-spacing:-.03em}.ccd-orbit-copy p{margin:0;max-width:36rem;color:#d8d0f8;line-height:1.55}.ccd-orbit-stage{position:relative;width:100%;overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1.35rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.08),transparent 18rem),linear-gradient(180deg,#080a14f5,#02040bfa)}.ccd-orbit-svg{display:block;width:100%;height:auto;min-height:36rem}.ccd-orbit-track{fill:none;stroke:#ffffff24;stroke-width:2.5;stroke-dasharray:12 10}.ccd-orbit-earth-atmosphere{fill:#68cdff2e;filter:drop-shadow(0 0 1.6rem rgba(76,173,255,.18))}.ccd-orbit-continent{fill:#57e3968c}.ccd-orbit-night-shadow{fill:#050a1a7a}.ccd-orbit-telescope{filter:drop-shadow(0 0 1.2rem rgba(255,167,113,.24))}.ccd-orbit-actions{display:flex;justify-content:center}.ccd-intro-screen{display:grid;place-items:center;min-height:min(76vh,44rem)}.ccd-intro-panel{display:grid;gap:1.1rem;width:min(100%,48rem);padding:clamp(1rem,2.6vw,1.6rem);border:1px solid rgba(255,255,255,.09);border-radius:1.5rem;background:radial-gradient(circle at 18% 18%,rgba(255,113,74,.12),transparent 18rem),radial-gradient(circle at 82% 24%,rgba(125,100,255,.16),transparent 24rem),radial-gradient(circle at 50% 0%,rgba(255,255,255,.04),transparent 18rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15e6;justify-items:center}.ccd-intro-logo-frame{display:grid;place-items:center;width:clamp(6.5rem,16vw,8.75rem);aspect-ratio:1;padding:.45rem;border:1px solid rgba(255,255,255,.12);border-radius:50%;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.14),transparent 48%),linear-gradient(180deg,#ff714a1f,#7d64ff1a),#ffffff08;box-shadow:0 0 0 1px #ffffff08 inset,0 0 1.8rem #7d64ff29}.ccd-intro-logo{width:100%;height:100%;object-fit:cover;border-radius:50%;box-shadow:0 0 1.2rem #ff714a2e}.ccd-intro-brand{display:inline-grid;justify-items:center;gap:.18rem;text-align:center}.ccd-intro-brand-mark,.ccd-intro-brand-sub{font-family:Russo One,sans-serif;font-weight:400;line-height:1}.ccd-intro-brand-mark{color:#fff1e8;font-size:clamp(1.1rem,2.8vw,1.55rem);letter-spacing:.08em;text-transform:uppercase}.ccd-intro-brand-sub{color:#d7cff3;font-size:clamp(1.55rem,4.5vw,2.8rem);letter-spacing:-.04em}.ccd-intro-copy{display:grid;gap:.45rem;justify-items:center;text-align:center}.ccd-intro-copy h2,.ccd-intro-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-intro-copy h2{font-size:clamp(2rem,4vw,3.4rem);line-height:.95;letter-spacing:-.03em}.ccd-intro-copy p,.ccd-intro-card p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-intro-copy p{font-size:1rem;max-width:35rem}.ccd-intro-covers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;width:100%}.ccd-intro-card{display:grid;gap:.42rem;padding:.85rem;border:1px solid rgba(255,255,255,.08);border-radius:1.05rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 22%),#ffffff08;box-shadow:0 0 0 1px #ffffff05 inset}.ccd-intro-card-index{color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.72rem;letter-spacing:.18em}.ccd-intro-actions{display:flex;justify-content:flex-end}.ccd-energy-panel{display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#0a0c16e0}.ccd-energy-scale{display:grid;gap:.65rem}.ccd-energy-spectrum{position:relative;height:3.5rem;border-radius:999px;background:linear-gradient(90deg,#ff5752f2,#ff7e47f2 14%,#ffba52f2,#fff461f2,#7df15ff2,#61e6faf2,#6b7ffff2 84%,#c67afff2);box-shadow:inset 0 0 0 1px #ffffff14,0 0 1.8rem #7d64ff24}.ccd-energy-spectrum:after{content:"";position:absolute;top:50%;left:var(--ccd-spectrum-position, 50%);width:1.15rem;height:4.25rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:var(--ccd-spectrum-color, rgba(255, 255, 255, .9));box-shadow:0 0 1.1rem var(--ccd-spectrum-color, rgba(255, 255, 255, .44)),0 0 0 .2rem #05070de6;transform:translate(-50%,-50%)}.ccd-energy-slider-wrap{padding:0 .3rem}.ccd-energy-slider{width:100%;margin:0;appearance:none;background:transparent}.ccd-energy-slider::-webkit-slider-runnable-track{height:.4rem;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-webkit-slider-thumb{appearance:none;width:1rem;height:1rem;margin-top:-.3rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-slider::-moz-range-track{height:.4rem;border:0;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-moz-range-thumb{width:1rem;height:1rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-scale-labels{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#cfc6ea;font-size:.84rem}.ccd-energy-scale-labels-strong{font-family:Russo One,sans-serif;font-size:.78rem;letter-spacing:.04em}.ccd-energy-readout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.ccd-energy-notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-transition-screen{display:grid;place-items:center;min-height:min(68vh,34rem);padding:1rem 0;background:none}.ccd-transition-card{width:min(100%,30rem);display:grid;gap:.75rem;justify-items:center;padding:.4rem 0;text-align:center}.ccd-transition-card h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(1.7rem,4vw,2.35rem);font-weight:400;line-height:.98}.ccd-transition-card p{margin:0;max-width:24rem;color:#d8d0f8;line-height:1.5}.ccd-transition-actions{display:flex;justify-content:center;width:100%}.ccd-closing-screen{display:grid;place-items:center;min-height:min(72vh,40rem);padding:1rem 0}.ccd-closing-panel{width:min(100%,44rem);display:grid;gap:1rem;padding:.4rem 0}.ccd-closing-panel h2,.ccd-closing-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-closing-panel h2{font-size:clamp(1.8rem,4vw,2.5rem);line-height:.98}.ccd-closing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-closing-card{display:grid;gap:.38rem;padding:.9rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-closing-card p,.ccd-closing-message{margin:0;color:#d8d0f8;line-height:1.5}.ccd-closing-message{font-family:Russo One,sans-serif;font-size:1rem;text-align:center}.ccd-closing-actions{display:flex;justify-content:center}.ccd-experience-frame{display:grid;gap:1rem}.ccd-experience-overlay{display:grid;gap:.75rem;width:100%;max-width:36rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.1);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 22%,rgba(125,100,255,.06)),#0a0c16e0;box-shadow:0 0 0 1px #ffffff08 inset}.ccd-experience-step{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#d8d0f8;font-size:.84rem}.ccd-experience-overlay h2{margin:0;font-family:Russo One,sans-serif;font-size:1.1rem;font-weight:400;line-height:1.15}.ccd-experience-overlay p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-experience-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.ccd-experience-button{display:inline-flex;align-items:center;justify-content:center;min-width:7rem;padding:.72rem .95rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;text-decoration:none;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-experience-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-experience-button-secondary{border-color:#ffffff1f;background:#ffffff0a}.ccd-experience-spacer{width:7rem}.ccd-stage{display:grid;gap:1rem;justify-items:center}.ccd-grid-frame{position:relative;width:min(78vw,36rem);aspect-ratio:1;padding:1rem;border-radius:50%;background:linear-gradient(145deg,#ffffff0a,#ffffff03),#060812eb;box-shadow:inset 0 0 0 1px #ffffff0a,0 0 0 1px #9976ff14,0 1rem 3rem #00000057}.ccd-grid{position:relative;display:grid;grid-template-columns:repeat(18,minmax(0,1fr));width:100%;height:100%;overflow:hidden;border-radius:50%;background:linear-gradient(180deg,#080a14fa,#02040bfa),#05070d}.ccd-grid:before{content:"";position:absolute;inset:0;background:linear-gradient(var(--ccd-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--ccd-grid-line) 1px,transparent 1px);background-size:calc(100% / 18) calc(100% / 18);pointer-events:none}.ccd-grid:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,transparent 48%,rgba(0,0,0,.34) 100%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 12%,transparent 88%,rgba(255,255,255,.04));pointer-events:none}.ccd-cell{position:relative}.ccd-hit{position:absolute;left:50%;top:50%;border-radius:999px;pointer-events:none;will-change:transform,opacity;transition:opacity 60ms linear,transform 90ms ease-out,box-shadow .12s ease-out}.ccd-grid-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(151,100,255,.06),transparent 44%),radial-gradient(circle at 50% 50%,transparent 62%,rgba(255,110,74,.05) 100%);mix-blend-mode:screen;pointer-events:none}.ccd-readout,.ccd-summary-row{display:grid;gap:.9rem}.ccd-readout{width:min(78vw,36rem);grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-summary-row{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.ccd-stat,.ccd-summary-card,.ccd-chart-panel,.ccd-table-panel,.ccd-legend-chip{border:1px solid var(--ccd-card-edge);border-radius:1rem;background:var(--ccd-card-bg)}.ccd-stat,.ccd-summary-card{display:grid;gap:.35rem;padding:.95rem 1rem}.ccd-stat strong,.ccd-summary-card strong,.ccd-chart-head strong{font-size:1.28rem}.ccd-audio-button{padding:.72rem .9rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-audio-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1.1rem #8b6aff1f}.ccd-chart-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 18%,transparent 80%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-table-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 15%,transparent 85%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-chart-panel-wide{gap:1.15rem}.ccd-chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.ccd-periodogram{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:.8rem;min-height:20rem;align-items:end}.ccd-periodogram-band{display:grid;gap:.8rem}.ccd-bar-shell{display:flex;align-items:end;justify-content:center;min-height:18rem;padding:.8rem .4rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 26%),#04070feb}.ccd-bar-fill{width:100%;min-height:1.6rem;border-radius:.8rem .8rem .35rem .35rem}.ccd-band-meta{display:grid;gap:.15rem;justify-items:center;text-align:center;color:#cdc5e8;font-size:.84rem}.ccd-spectrum-legend{display:flex;flex-wrap:wrap;gap:.7rem}.ccd-event-table-shell{overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 14%),#04070ff5}.ccd-event-table,.ccd-event-table-head{display:grid;grid-template-columns:1.2fr 1fr .8fr .8fr;gap:.8rem;align-items:center}.ccd-event-table{padding:.72rem .95rem;border-bottom:1px solid rgba(255,255,255,.06);font-family:SFMono-Regular,Menlo,monospace;font-size:.86rem;letter-spacing:.02em}.ccd-event-table-head{padding:.85rem .95rem;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;color:#e9e3ff;font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.14em}.ccd-event-table-body{max-height:26rem;overflow:auto}.ccd-event-table-body .ccd-event-table:nth-child(2n){background:#ffffff05}.ccd-event-table-empty{color:#aaa1c8}.ccd-legend-chip{display:inline-flex;align-items:center;gap:.55rem;padding:.72rem .85rem}.ccd-legend-dot{width:.7rem;height:.7rem;border-radius:999px}.ccd-spectrogram-shell{display:grid;grid-template-columns:5rem minmax(0,1fr);gap:.9rem;align-items:stretch}.ccd-spectrogram-axis{display:grid;grid-template-rows:repeat(8,minmax(0,1fr));gap:.5rem;color:#b7afd6;font-size:.84rem}.ccd-spectrogram-axis span{display:flex;align-items:center}.ccd-spectrogram{display:grid;gap:.45rem;overflow-x:auto}.ccd-spectrogram-row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:.3rem;min-width:22rem}.ccd-spectrogram-cell{display:block;min-height:1.6rem;border-radius:.35rem;background:#ffffff0f}.ccd-spectrogram-footer{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-chart-shell{display:grid;gap:.65rem;padding:.9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-flux-chart{position:relative;width:100%;height:15rem;overflow:visible;border-radius:.8rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 20%),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),#060912f0;background-size:auto,12.5% 100%,100% 20%}.ccd-flux-bin{fill:#ffffff06}.ccd-flux-bin-alt{fill:#ffffff0e}.ccd-flux-area{opacity:.9}.ccd-flux-line{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 .8rem rgba(143,125,255,.28))}.ccd-flux-mean-line{fill:none;stroke:#eff5ffeb;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:10 8;filter:drop-shadow(0 0 .45rem rgba(255,255,255,.16))}.ccd-flux-legend{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;color:#cdc5e8;font-size:.84rem}.ccd-flux-legend-item{display:inline-flex;align-items:center;gap:.45rem}.ccd-flux-legend-swatch{display:inline-block;width:1.6rem;height:.45rem;border-radius:999px}.ccd-flux-legend-swatch-raw{background:linear-gradient(90deg,#ff8d66,#ffd35d,#8f7dff)}.ccd-flux-legend-swatch-mean{background:repeating-linear-gradient(90deg,rgba(239,245,255,.92) 0 .45rem,transparent .45rem .8rem)}.ccd-flux-axis{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}.ccd-counts-shell{position:relative;padding:1rem .7rem .9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-counts-chart{position:relative;z-index:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(1rem,1fr));gap:.3rem;align-items:end;min-height:14rem}.ccd-count-bin{display:grid;gap:.45rem;align-items:end}.ccd-count-bin-label{color:#d9d2f0;font-size:.7rem;text-align:center}.ccd-count-bar-shell{display:flex;align-items:end;height:12rem;min-height:12rem;padding:.2rem;border-radius:.6rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 30%),#ffffff05}.ccd-count-bar{width:100%;min-height:.8rem;border-radius:.5rem .5rem .2rem .2rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6 52%,#8d7effe6);box-shadow:0 0 1rem #8d7eff2e}.ccd-counts-legend-swatch-bin{background:linear-gradient(90deg,#ffd45df2,#ff8a65e6,#8d7effe6)}@media(max-width:860px){.ccd-panel{width:min(96vw,64rem)}.ccd-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(4,minmax(0,1fr))}.ccd-intro-covers{grid-template-columns:1fr}.ccd-energy-readout,.ccd-energy-notes{grid-template-columns:1fr 1fr}.ccd-closing-grid,.ccd-summary-row,.ccd-flux-metrics,.ccd-selector-results{grid-template-columns:1fr}.ccd-modal-header{display:grid}}@media(max-width:720px){.ccd-shell{padding:1rem}.ccd-intro-screen{min-height:auto}.ccd-grid-frame,.ccd-readout{width:100%}.ccd-pipeline,.ccd-readout{grid-template-columns:1fr}.ccd-intro-actions,.ccd-closing-actions{justify-content:stretch}.ccd-chart-head,.ccd-spectrogram-shell{grid-template-columns:1fr}.ccd-chart-head{display:grid}.ccd-spectrogram-axis{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-energy-readout{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-energy-readout .ccd-stat{padding:.7rem .65rem}.ccd-energy-readout .ccd-stat strong{font-size:1rem}.ccd-energy-notes{grid-template-columns:1fr}.ccd-event-table,.ccd-event-table-head{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-raw{grid-template-columns:1fr}.ccd-selector-link,.ccd-selector-leaf{padding:.95rem}.ccd-closing-actions .ccd-experience-button{width:100%}.ccd-experience-overlay{width:100%;max-width:none}.ccd-toolbar-row{justify-content:stretch}.ccd-chooser-button,.ccd-modal-close,.ccd-intro-actions .ccd-experience-button{width:100%}} diff --git a/dist/glitch/glitch_gallery/assets/index-Be41ZfS7.js b/dist/glitch/glitch_gallery/assets/index-Be41ZfS7.js new file mode 100644 index 0000000..fa5c524 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-Be41ZfS7.js @@ -0,0 +1 @@ +import{r as c,j as e,g as w,h as q,i as Z,a as z}from"./index-CEeZxcxj.js";const U="_container_101xd_1",Y="_frame_101xd_20",J="_squareLayout_101xd_26",X="_squarePanel_101xd_35",ee="_viewportPanel_101xd_44",te="_contentPanel_101xd_50",se="_panelBody_101xd_56",ne="_copy_101xd_66",ie="_muted_101xd_73",ae="_badge_101xd_77",ce="_choiceButton_101xd_89",re="_completeButton_101xd_90",oe="_sliderSection_101xd_112",le="_sliderHeader_101xd_118",de="_sliderLabel_101xd_125",ue="_sliderValue_101xd_132",xe="_valueInfinity_101xd_138",he="_slider_101xd_112",me="_sliderInfinity_101xd_170",fe="_sliderHint_101xd_184",pe="_statsOverlay_101xd_189",_e="_stat_101xd_189",ge="_statLabel_101xd_208",ye="_statValue_101xd_217",je="_statInfinity_101xd_223",ve="_warning_101xd_227",be="_warningText_101xd_233",Se="_warningQuestion_101xd_234",we="_warningChoices_101xd_245",Ne="_choiceInfinity_101xd_257",Me="_choiceFinite_101xd_265",Ie="_resultStats_101xd_273",Re="_resultRow_101xd_280",$e="_resultMessage_101xd_298",Ce="_resultSuccess_101xd_309",Le="_resultAccent_101xd_313",t={container:U,frame:Y,squareLayout:J,squarePanel:X,viewportPanel:ee,contentPanel:te,panelBody:se,copy:ne,muted:ie,badge:ae,choiceButton:ce,completeButton:re,sliderSection:oe,sliderHeader:le,sliderLabel:de,sliderValue:ue,valueInfinity:xe,slider:he,sliderInfinity:me,sliderHint:fe,statsOverlay:pe,stat:_e,statLabel:ge,statValue:ye,statInfinity:je,warning:ve,warningText:be,warningQuestion:Se,warningChoices:we,choiceInfinity:Ne,choiceFinite:Me,resultStats:Ie,resultRow:Re,resultMessage:$e,resultSuccess:Ce,resultAccent:Le},L=5,p=41;function Fe(d){const r=Math.min(Math.max(d,L),p);return r%2===0?r+1:r}function A(d){const r=[],i=d,x=2/i;for(let u=0;u1-N&&r.push(g,s,_)}return{positions:r,count:r.length/3}}function Pe({resolution:d,isInfinity:r}){const o=c.useRef(null),i=c.useMemo(()=>new Z,[]),{positions:x,count:u,cubeSize:m}=c.useMemo(()=>{const s=Math.min(d,p),_=A(s),f=2/s*.85;return{positions:_.positions,count:_.count,cubeSize:f}},[d]);c.useEffect(()=>{if(!(!o.current||u===0)){for(let s=0;s{o.current&&(o.current.rotation.y=s.clock.elapsedTime*.2)});const a=r?"#ef4444":"#818cf8";return e.jsxs("instancedMesh",{ref:o,args:[void 0,void 0,1e4],frustumCulled:!1,children:[e.jsx("boxGeometry",{args:[1,1,1]}),e.jsx("meshStandardMaterial",{color:a,emissive:a,emissiveIntensity:.05,roughness:.4,metalness:.3})]})}function C({resolution:d,isInfinity:r}){return e.jsxs(e.Fragment,{children:[e.jsx("ambientLight",{intensity:.3}),e.jsx("directionalLight",{position:[5,8,5],intensity:1.2,castShadow:!0}),e.jsx("directionalLight",{position:[-3,-2,-4],intensity:.4,color:"#22d3ee"}),e.jsx("pointLight",{position:[0,5,0],intensity:.5}),e.jsx(Pe,{resolution:d,isInfinity:r}),e.jsx(q,{enableZoom:!0,enablePan:!1,autoRotate:!1,minDistance:2,maxDistance:6})]})}function Be(){const d=c.useRef(null);return z(r=>{d.current&&(d.current.rotation.y=r.clock.elapsedTime*.3)}),e.jsxs("mesh",{ref:d,children:[e.jsx("sphereGeometry",{args:[1,128,128]}),e.jsx("meshStandardMaterial",{color:"#22d3ee",emissive:"#22d3ee",emissiveIntensity:.08,roughness:.15,metalness:.9,envMapIntensity:1})]})}function ke(){return e.jsxs(e.Fragment,{children:[e.jsx("ambientLight",{intensity:.3}),e.jsx("directionalLight",{position:[5,8,5],intensity:1.5}),e.jsx("directionalLight",{position:[-4,-2,-3],intensity:.5,color:"#6366f1"}),e.jsx("pointLight",{position:[0,3,3],intensity:.8,color:"#ffffff"}),e.jsx(Be,{}),e.jsx(q,{enableZoom:!1,enablePan:!1,autoRotate:!0,autoRotateSpeed:1.5})]})}function qe({config:d,onComplete:r,onProgress:o,theme:i,className:x}){const[u,m]=c.useState("exploring"),[a,g]=c.useState(L),[s,_]=c.useState(null),[f,N]=c.useState(!1),F=c.useRef(null),[y,O]=c.useState({stacked:!1,panelSize:320,gap:16,padding:16}),S=a>=p,P=c.useMemo(()=>A(Math.min(a,p)).count,[a]);c.useEffect(()=>{const n=F.current;if(!n||typeof ResizeObserver>"u")return;const l=()=>{const{width:h,height:v}=n.getBoundingClientRect();if(!h||!v)return;const R=v>h,V=Math.min(h,v),b=Math.round(Math.max(12,Math.min(28,V*.04))),$=Math.round(Math.max(12,Math.min(22,V*.03))),K=R?h-b*2:(h-b*2-$)/2,G=R?(v-b*2-$)/2:v-b*2;O({stacked:R,panelSize:Math.max(0,Math.floor(Math.min(K,G))),gap:$,padding:b})};l();const j=new ResizeObserver(l);return j.observe(n),()=>j.disconnect()},[]);const H={"--gc-primary":i?.primary||"#6366f1","--gc-accent":i?.accent||"#22d3ee","--gc-bg":i?.bg||"#0a0a0f","--gc-bg-secondary":i?.bgSecondary||"#12121a","--gc-text":i?.text||"#e8e8ec","--gc-text-muted":i?.textMuted||"#9999a8","--gc-border":i?.border||"#2a2a3a","--panel-gap":`${y.gap}px`,"--frame-pad":`${y.padding}px`},B={width:`${y.panelSize}px`,height:`${y.panelSize}px`};c.useEffect(()=>{o?.(10)},[o]);const D=c.useCallback(n=>{const l=Fe(parseInt(n.target.value,10));g(l);const j=10+l/p*40;o?.(Math.min(j,50)),l>=p&&!f&&(m("warning"),N(!0),o?.(70))},[f,o,p]),k=c.useCallback(n=>{_(n),m("result"),o?.(100)},[o]),E=c.useCallback(()=>{r({success:!0,score:100,data:{choice:s,finalResolution:a,exploredInfinity:f,completedAt:new Date().toISOString()}})},[s,a,f,r]),T=n=>n>=p?"∞":n.toString(),Q=(n,l)=>l?"∞":n.toLocaleString(),W=(n,l)=>{if(l)return"∞";const h=n*80;return h<1024?`${h} B`:h<1024*1024?`${(h/1024).toFixed(1)} KB`:`${(h/(1024*1024)).toFixed(2)} MB`},M=(n,l)=>e.jsxs("div",{className:`${t.squarePanel} ${t.viewportPanel}`,style:B,children:[n,e.jsxs("div",{className:t.statsOverlay,children:[e.jsxs("div",{className:t.stat,children:[e.jsx("span",{className:t.statLabel,children:"Blocks"}),e.jsx("span",{className:`${t.statValue} ${l?t.statInfinity:""}`,children:Q(P,l)})]}),e.jsxs("div",{className:t.stat,children:[e.jsx("span",{className:t.statLabel,children:"Memory"}),e.jsx("span",{className:`${t.statValue} ${l?t.statInfinity:""}`,children:W(P,l)})]})]})]}),I=n=>e.jsx("div",{className:`${t.squarePanel} ${t.contentPanel}`,style:B,children:e.jsx("div",{className:t.panelBody,children:n})});return e.jsx("div",{className:`${t.container} ${x||""}`,style:H,children:e.jsx("div",{ref:F,className:t.frame,children:e.jsxs("div",{className:t.squareLayout,style:{flexDirection:y.stacked?"column":"row"},children:[u==="exploring"&&e.jsxs(e.Fragment,{children:[M(e.jsx(w,{camera:{position:[0,0,3.5],fov:50},children:e.jsx(C,{resolution:a,isInfinity:S})}),S),I(e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.badge,children:"Resolution"}),e.jsx("p",{className:`${t.copy} ${t.muted}`,children:"Every step adds more cubes to the shell. Keep sliding until the approximation breaks open."}),e.jsxs("div",{className:t.sliderSection,children:[e.jsxs("div",{className:t.sliderHeader,children:[e.jsx("span",{className:t.sliderLabel,children:"Current Level"}),e.jsx("span",{className:`${t.sliderValue} ${S?t.valueInfinity:""}`,children:T(a)})]}),e.jsx("input",{type:"range",min:L,max:p,step:"2",value:a,onChange:D,className:`${t.slider} ${S?t.sliderInfinity:""}`}),e.jsx("div",{className:t.sliderHint,children:"Drag right to approach a perfectly smooth sphere."})]})]}))]}),u==="warning"&&e.jsxs(e.Fragment,{children:[M(e.jsx(w,{camera:{position:[0,0,3.5],fov:50},children:e.jsx(C,{resolution:a,isInfinity:!0})}),!0),I(e.jsxs("div",{className:t.warning,children:[e.jsx("div",{className:t.badge,children:"Limit Reached"}),e.jsx("p",{className:t.warningText,children:"At infinite resolution, the sphere needs infinitely many blocks."}),e.jsx("p",{className:t.warningText,children:"Infinitely many blocks means infinite information and unbounded memory."}),e.jsx("p",{className:t.warningQuestion,children:"Do you want the perfect sphere anyway?"}),e.jsxs("div",{className:t.warningChoices,children:[e.jsx("button",{className:`${t.choiceButton} ${t.choiceInfinity}`,onClick:()=>k("infinity"),children:"Embrace Infinity"}),e.jsx("button",{className:`${t.choiceButton} ${t.choiceFinite}`,onClick:()=>k("finite"),children:"Keep It Finite"})]})]}))]}),u==="result"&&e.jsxs(e.Fragment,{children:[M(s==="infinity"?e.jsx(w,{camera:{position:[0,0,3],fov:50},children:e.jsx(ke,{})}):e.jsx(w,{camera:{position:[0,0,3.5],fov:50},children:e.jsx(C,{resolution:a,isInfinity:!1})}),s==="infinity"),I(e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.badge,children:s==="finite"?"Finite Wins":"Infinity Chosen"}),e.jsxs("div",{className:t.resultStats,children:[e.jsxs("div",{className:t.resultRow,children:[e.jsx("span",{children:"Memory Required"}),e.jsx("span",{className:s==="finite"?t.resultSuccess:t.resultAccent,children:s==="finite"?"Finite":"∞"})]}),e.jsxs("div",{className:t.resultRow,children:[e.jsx("span",{children:"Simulation Possible"}),e.jsx("span",{className:s==="finite"?t.resultSuccess:t.resultAccent,children:s==="finite"?"Yes":"Only in theory"})]})]}),e.jsx("p",{className:t.resultMessage,children:s==="finite"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"Discreteness can be enough."})," A finite model never becomes perfect, but it can get close enough to feel continuous."]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"Perfect smoothness costs infinity."})," A mathematically exact sphere cannot be simulated without infinite information."]})}),e.jsx("button",{className:t.completeButton,onClick:E,children:"Complete Challenge"})]}))]})]})})})}const ze={name:"sphere-paradox",displayName:"Create a Perfect Sphere",version:"1.0.0",paramSchema:{},defaultParams:{}};export{qe as default,ze as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-BoeEa7xH.css b/dist/glitch/glitch_gallery/assets/index-BoeEa7xH.css new file mode 100644 index 0000000..31c89da --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-BoeEa7xH.css @@ -0,0 +1 @@ +._wrapper_h2w9g_1{--gc-bg: var(--color-bg, #0d1117);--gc-bg-secondary: var(--color-bg-secondary, #182237);--gc-text: var(--color-text, #f1f4ef);--gc-text-muted: var(--color-text-muted, #b6c0d4);--gc-primary: var(--color-primary, #45c4b0);--gc-accent: var(--color-accent, #ff6b6b);--gc-border: var(--color-border, #34516f);width:100%}._frame_h2w9g_12{position:relative;min-height:100dvh;padding:10px;color:var(--gc-text);font-family:Space Mono,IBM Plex Mono,Courier New,monospace;background:radial-gradient(circle at 12% 8%,rgb(69 196 176 / 24%),transparent 42%),radial-gradient(circle at 86% 14%,rgb(255 107 107 / 20%),transparent 38%),linear-gradient(156deg,var(--gc-bg),var(--gc-bg-secondary));border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent)}._frameSucceeded_h2w9g_25{background:radial-gradient(circle at 18% 12%,rgb(86 255 148 / 26%),transparent 42%),radial-gradient(circle at 82% 16%,rgb(42 210 104 / 22%),transparent 38%),linear-gradient(156deg,#0f2f1f,#1b5234);border-color:color-mix(in srgb,#4be38f 56%,var(--gc-border))}._header_h2w9g_33{margin-bottom:8px}._title_h2w9g_37{margin:0;font-size:clamp(20px,6.4vw,32px);letter-spacing:.05em;text-transform:uppercase}._subtitle_h2w9g_44{margin:4px 0 0;color:var(--gc-text-muted);font-size:clamp(11px,3.3vw,14px)}._statsLine_h2w9g_50{margin:5px 0 0;padding:5px 6px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#0913209e;font-size:clamp(11px,3.1vw,13px)}._boardPanel_h2w9g_58{margin-bottom:8px}._board_h2w9g_58{position:relative;overflow:hidden;width:min(88vw,340px);aspect-ratio:1 / 1;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border:2px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));box-shadow:0 0 0 1px #00000059,0 14px 26px #00000061}._trailOverlay_h2w9g_76{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}._trailPath_h2w9g_85{fill:none;stroke:#ff2828e5;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgb(255 30 30 / 65%))}._trailHead_h2w9g_94{fill:#ff3c3cf5;filter:drop-shadow(0 0 6px rgb(255 45 45 / 70%))}._cell_h2w9g_99{position:relative;display:grid;place-items:center}._lightCell_h2w9g_105{background:#f4ecd8}._darkCell_h2w9g_109{background:#c08c61}._knight_h2w9g_113{position:absolute;z-index:3;display:grid;place-items:center;width:100%;height:100%;font-family:Times New Roman,Georgia,serif;font-size:clamp(28px,15vw,56px);line-height:1;color:#111827;text-shadow:0 1px 0 rgb(255 255 255 / 55%),0 3px 8px rgb(0 0 0 / 25%);transform:translateY(-1px)}._target_h2w9g_130{position:absolute;z-index:2;font-size:clamp(12px,8.5vw,33px);color:#e21c29;text-shadow:0 0 8px rgb(236 37 58 / 60%)}._readout_h2w9g_138{margin-bottom:8px;padding:7px;border:1px solid color-mix(in srgb,var(--gc-border) 72%,transparent);background:#040a1173}._readoutLine_h2w9g_145{margin:0;font-size:clamp(11px,3.2vw,14px)}._readoutLine_h2w9g_145+._readoutLine_h2w9g_145{margin-top:3px}._programPanel_h2w9g_154{display:flex;flex-direction:column;gap:6px}._programTrack_h2w9g_160{min-height:42px;display:flex;flex-wrap:wrap;align-items:center;gap:5px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#07111d85;padding:7px}._placeholder_h2w9g_171{color:var(--gc-text-muted);font-size:12px}._step_h2w9g_176{width:24px;height:24px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));background:#45c4b024;font-weight:600;font-size:13px}._stepExecuted_h2w9g_187{background:#ff6b6b40;border-color:#ff6b6b99}._programButtons_h2w9g_192,._controlRow_h2w9g_193{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}._button_h2w9g_199,._buttonPrimary_h2w9g_200{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);padding:7px 6px;font:inherit;font-size:20px;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:transform .12s ease,background-color .12s ease}._button_h2w9g_199{background:#09132099;color:var(--gc-text)}._buttonPrimary_h2w9g_200{background:color-mix(in srgb,var(--gc-primary) 35%,#12252f);color:#f2fff8;border-color:color-mix(in srgb,var(--gc-primary) 65%,transparent)}._button_h2w9g_199:disabled,._buttonPrimary_h2w9g_200:disabled{opacity:.48;cursor:not-allowed}._button_h2w9g_199:active,._buttonPrimary_h2w9g_200:active{transform:scale(.98)}._legend_h2w9g_233{margin:0;color:var(--gc-text-muted);font-size:11px}._promptOverlay_h2w9g_239{position:absolute;inset:0;display:grid;place-content:center;gap:8px;padding:16px;background:#02080ddb;border:1px solid color-mix(in srgb,var(--gc-accent) 40%,var(--gc-border))}._promptTitle_h2w9g_250{margin:0;text-align:center;text-transform:uppercase;letter-spacing:.08em;font-size:clamp(20px,6vw,32px)}._promptText_h2w9g_258{margin:0;text-align:center;color:var(--gc-text-muted)}._promptOptions_h2w9g_264{display:flex;justify-content:center;gap:10px}._promptOption_h2w9g_264{min-width:110px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#09132099;color:var(--gc-text);padding:8px 10px;font:inherit;font-size:14px;text-align:left;cursor:pointer}._promptSelected_h2w9g_282{border-color:color-mix(in srgb,var(--gc-accent) 70%,transparent);background:#ff6b6b33}._promptHint_h2w9g_287{margin:0;text-align:center;color:var(--gc-text-muted);font-size:11px}@media(max-width:560px){._programButtons_h2w9g_192,._controlRow_h2w9g_193{grid-template-columns:1fr 1fr 1fr 1fr}}@media(min-width:780px){._frame_h2w9g_12{max-width:540px;margin:0 auto;border-radius:14px;min-height:auto}} diff --git a/dist/glitch/glitch_gallery/assets/index-C2PFO5cD.css b/dist/glitch/glitch_gallery/assets/index-C2PFO5cD.css new file mode 100644 index 0000000..6e354fa --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-C2PFO5cD.css @@ -0,0 +1 @@ +._container_101xd_1{background:radial-gradient(circle at top,rgba(99,102,241,.14),transparent 48%),linear-gradient(180deg,var(--gc-bg-secondary, #12121a),var(--gc-bg, #0a0a0f));color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:Russo One,system-ui,-apple-system,sans-serif;line-height:1.5;width:100%;min-height:100%}._container_101xd_1,._container_101xd_1 *,._container_101xd_1 *:before,._container_101xd_1 *:after{box-sizing:inherit}._frame_101xd_20{width:100%;aspect-ratio:16 / 9;padding:var(--frame-pad, 1rem)}._squareLayout_101xd_26{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:var(--panel-gap, 1rem)}._squarePanel_101xd_35{position:relative;flex:0 0 auto;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent);border-radius:28px;box-shadow:0 28px 70px #00000040}._viewportPanel_101xd_44{background:radial-gradient(circle at 50% 18%,rgba(34,211,238,.2),transparent 32%),linear-gradient(160deg,#12121af2,#0a0a0ffa)}._contentPanel_101xd_50{background:linear-gradient(180deg,#12121af5,#0a0a0ffa),var(--gc-bg, #0a0a0f)}._panelBody_101xd_56{width:100%;height:100%;padding:clamp(1rem,3vw,2rem);display:flex;flex-direction:column;justify-content:center;gap:1rem}._copy_101xd_66{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.15rem);line-height:1.65}._muted_101xd_73{color:var(--gc-text-muted, #9999a8)}._badge_101xd_77{align-self:flex-start;padding:.35rem .7rem;border-radius:999px;background:#6366f124;color:var(--gc-primary, #6366f1);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}._startButton_101xd_88,._choiceButton_101xd_89,._completeButton_101xd_90{border:none;border-radius:14px;padding:.95rem 1.2rem;font:inherit;color:#fff;cursor:pointer;transition:transform .18s ease,filter .18s ease,border-color .18s ease,background .18s ease}._startButton_101xd_88:hover,._choiceButton_101xd_89:hover,._completeButton_101xd_90:hover{transform:translateY(-1px);filter:brightness(1.06)}._startButton_101xd_88,._completeButton_101xd_90{background:linear-gradient(135deg,var(--gc-primary, #6366f1),var(--gc-accent, #22d3ee))}._sliderSection_101xd_112{display:flex;flex-direction:column;gap:.8rem}._sliderHeader_101xd_118{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}._sliderLabel_101xd_125{color:var(--gc-text-muted, #9999a8);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}._sliderValue_101xd_132{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(1.2rem,2.4vw,1.8rem)}._valueInfinity_101xd_138{color:#ef4444}._slider_101xd_112{width:100%;height:12px;border-radius:999px;background:#ffffff14;outline:none;appearance:none;cursor:pointer}._slider_101xd_112::-webkit-slider-thumb{appearance:none;width:26px;height:26px;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._slider_101xd_112::-moz-range-thumb{width:26px;height:26px;border:0;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._sliderInfinity_101xd_170{background:linear-gradient(90deg,#ffffff14,#ef4444b3)}._sliderInfinity_101xd_170::-webkit-slider-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderInfinity_101xd_170::-moz-range-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderHint_101xd_184{color:var(--gc-text-muted, #9999a8);font-size:.85rem}._statsOverlay_101xd_189{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:space-between;gap:.75rem;pointer-events:none}._stat_101xd_189{min-width:0;padding:.7rem .85rem;border-radius:16px;background:#0000008c;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._statLabel_101xd_208{display:block;margin-bottom:.2rem;color:var(--gc-text-muted, #9999a8);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}._statValue_101xd_217{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(.95rem,1.8vw,1.15rem)}._statInfinity_101xd_223{color:#ef4444}._warning_101xd_227{display:flex;flex-direction:column;gap:1rem}._warningText_101xd_233,._warningQuestion_101xd_234{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.1rem);line-height:1.65}._warningQuestion_101xd_234{color:#ef4444}._warningChoices_101xd_245{display:flex;flex-direction:column;gap:.85rem}._choiceButton_101xd_89{text-align:left;background:#ffffff0a;border:1px solid var(--gc-border, #2a2a3a)}._choiceInfinity_101xd_257{border-color:#ef444473}._choiceInfinity_101xd_257:hover{background:#ef444424}._choiceFinite_101xd_265{border-color:#22c55e73}._choiceFinite_101xd_265:hover{background:#22c55e24}._resultStats_101xd_273{padding:1rem 1.1rem;border-radius:20px;background:#ffffff0a;border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent)}._resultRow_101xd_280{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;color:var(--gc-text-muted, #9999a8);font-size:.92rem}._resultRow_101xd_280+._resultRow_101xd_280{border-top:1px solid rgba(255,255,255,.08)}._resultRow_101xd_280 span:last-child{font-family:SF Mono,Monaco,Consolas,monospace;font-weight:700}._resultMessage_101xd_298{margin:0;color:var(--gc-text-muted, #9999a8);font-size:clamp(.92rem,1.8vw,1rem);line-height:1.7}._resultMessage_101xd_298 strong{color:var(--gc-text, #e8e8ec)}._resultSuccess_101xd_309{color:#22c55e}._resultAccent_101xd_313{color:var(--gc-accent, #22d3ee)}@media(orientation:portrait),(max-aspect-ratio:1 / 1){._frame_101xd_20{aspect-ratio:1 / 2}}@media(max-width:768px){._squarePanel_101xd_35{border-radius:22px}._panelBody_101xd_56{padding:1rem}._statsOverlay_101xd_189{right:.75rem;bottom:.75rem;left:.75rem}._stat_101xd_189{padding:.55rem .7rem}} diff --git a/dist/glitch/glitch_gallery/assets/index-C370CA0j.js b/dist/glitch/glitch_gallery/assets/index-C370CA0j.js new file mode 100644 index 0000000..d8d51e9 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-C370CA0j.js @@ -0,0 +1,125 @@ +import{r as c,u as _t,c as Nt,a as We,_ as dt,D as Ht,V as ve,b as Vt,P as Tt,O as Et,S as Gt,U as Ut,d as Yt,M as Jt,R as qt,e as Xt,f as Zt,B as Qt,C as ut,A as Kt,j as e,Q as en}from"./index-CEeZxcxj.js";const Xe=new ve,ft=new ve,tn=new ve,jt=new Vt;function nn(t,n,o){const r=Xe.setFromMatrixPosition(t.matrixWorld);r.project(n);const s=o.width/2,i=o.height/2;return[r.x*s+s,-(r.y*i)+i]}function on(t,n){const o=Xe.setFromMatrixPosition(t.matrixWorld),r=ft.setFromMatrixPosition(n.matrixWorld),s=o.sub(r),i=n.getWorldDirection(tn);return s.angleTo(i)>Math.PI/2}function rn(t,n,o,r){const s=Xe.setFromMatrixPosition(t.matrixWorld),i=s.clone();i.project(n),jt.set(i.x,i.y),o.setFromCamera(jt,n);const d=o.intersectObjects(r,!0);if(d.length){const l=d[0].distance;return s.distanceTo(o.ray.origin)Math.abs(t)<1e-10?0:t;function kt(t,n,o=""){let r="matrix3d(";for(let s=0;s!==16;s++)r+=pt(n[s]*t.elements[s])+(s!==15?",":")");return o+r}const ln=(t=>n=>kt(n,t))([1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1]),cn=(t=>(n,o)=>kt(n,t(o),"translate(-50%,-50%)"))(t=>[1/t,1/t,1/t,1,-1/t,-1/t,-1/t,-1,1/t,1/t,1/t,1,1,1,1,1]);function dn(t){return t&&typeof t=="object"&&"current"in t}const Ae=c.forwardRef(({children:t,eps:n=.001,style:o,className:r,prepend:s,center:i,fullscreen:d,portal:l,distanceFactor:a,sprite:u=!1,transform:h=!1,occlude:p,onOcclude:g,castShadow:y,receiveShadow:I,material:S,geometry:L,zIndexRange:F=[16777271,0],calculatePosition:_=nn,as:v="div",wrapperClass:$,pointerEvents:A="auto",...D},W)=>{const{gl:B,camera:C,scene:te,size:j,raycaster:N,events:H,viewport:R}=_t(),[E]=c.useState(()=>document.createElement(v)),x=c.useRef(null),U=c.useRef(null),Se=c.useRef(0),G=c.useRef([0,0]),b=c.useRef(null),z=c.useRef(null),k=l?.current||H.connected||B.domElement.parentNode,w=c.useRef(null),K=c.useRef(!1),V=c.useMemo(()=>p&&p!=="blending"||Array.isArray(p)&&p.length&&dn(p[0]),[p]);c.useLayoutEffect(()=>{const X=B.domElement;p&&p==="blending"?(X.style.zIndex=`${Math.floor(F[0]/2)}`,X.style.position="absolute",X.style.pointerEvents="none"):(X.style.zIndex=null,X.style.position=null,X.style.pointerEvents=null)},[p]),c.useLayoutEffect(()=>{if(U.current){const X=x.current=Nt.createRoot(E);if(te.updateMatrixWorld(),h)E.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const O=_(U.current,C,j);E.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${O[0]}px,${O[1]}px,0);transform-origin:0 0;`}return k&&(s?k.prepend(E):k.appendChild(E)),()=>{k&&k.removeChild(E),X.unmount()}}},[k,h]),c.useLayoutEffect(()=>{$&&(E.className=$)},[$]);const re=c.useMemo(()=>h?{position:"absolute",top:0,left:0,width:j.width,height:j.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:i?"translate3d(-50%,-50%,0)":"none",...d&&{top:-j.height/2,left:-j.width/2,width:j.width,height:j.height},...o},[o,i,d,j,h]),ge=c.useMemo(()=>({position:"absolute",pointerEvents:A}),[A]);c.useLayoutEffect(()=>{if(K.current=!1,h){var X;(X=x.current)==null||X.render(c.createElement("div",{ref:b,style:re},c.createElement("div",{ref:z,style:ge},c.createElement("div",{ref:W,className:r,style:o,children:t}))))}else{var O;(O=x.current)==null||O.render(c.createElement("div",{ref:W,style:re,className:r,children:t}))}});const he=c.useRef(!0);We(X=>{if(U.current){C.updateMatrixWorld(),U.current.updateWorldMatrix(!0,!1);const O=h?G.current:_(U.current,C,j);if(h||Math.abs(Se.current-C.zoom)>n||Math.abs(G.current[0]-O[0])>n||Math.abs(G.current[1]-O[1])>n){const me=on(U.current,C);let ee=!1;V&&(Array.isArray(p)?ee=p.map(ae=>ae.current):p!=="blending"&&(ee=[te]));const fe=he.current;if(ee){const ae=rn(U.current,C,N,ee);he.current=ae&&!me}else he.current=!me;fe!==he.current&&(g?g(!he.current):E.style.display=he.current?"block":"none");const ce=Math.floor(F[0]/2),Y=p?V?[F[0],ce]:[ce-1,0]:F;if(E.style.zIndex=`${an(U.current,C,Y)}`,h){const[ae,ie]=[j.width/2,j.height/2],Be=C.projectionMatrix.elements[5]*ie,{isOrthographicCamera:Ce,top:Le,left:Te,bottom:Re,right:$e}=C,J=ln(C.matrixWorldInverse),_e=Ce?`scale(${Be})translate(${pt(-($e+Te)/2)}px,${pt((Le+Re)/2)}px)`:`translateZ(${Be}px)`;let be=U.current.matrixWorld;u&&(be=C.matrixWorldInverse.clone().transpose().copyPosition(be).scale(U.current.scale),be.elements[3]=be.elements[7]=be.elements[11]=0,be.elements[15]=1),E.style.width=j.width+"px",E.style.height=j.height+"px",E.style.perspective=Ce?"":`${Be}px`,b.current&&z.current&&(b.current.style.transform=`${_e}${J}translate(${ae}px,${ie}px)`,z.current.style.transform=cn(be,1/((a||10)/400)))}else{const ae=a===void 0?1:sn(U.current,C)*a;E.style.transform=`translate3d(${O[0]}px,${O[1]}px,0) scale(${ae})`}G.current=O,Se.current=C.zoom}}if(!V&&w.current&&!K.current)if(h){if(b.current){const O=b.current.children[0];if(O!=null&&O.clientWidth&&O!=null&&O.clientHeight){const{isOrthographicCamera:me}=C;if(me||L)D.scale&&(Array.isArray(D.scale)?D.scale instanceof ve?w.current.scale.copy(D.scale.clone().divideScalar(1)):w.current.scale.set(1/D.scale[0],1/D.scale[1],1/D.scale[2]):w.current.scale.setScalar(1/D.scale));else{const ee=(a||10)/400,fe=O.clientWidth*ee,ce=O.clientHeight*ee;w.current.scale.set(fe,ce,1)}K.current=!0}}}else{const O=E.children[0];if(O!=null&&O.clientWidth&&O!=null&&O.clientHeight){const me=1/R.factor,ee=O.clientWidth*me,fe=O.clientHeight*me;w.current.scale.set(ee,fe,1),K.current=!0}w.current.lookAt(X.camera.position)}});const q=c.useMemo(()=>({vertexShader:h?void 0:` + /* + This shader is from the THREE's SpriteMaterial. + We need to turn the backing plane into a Sprite + (make it always face the camera) if "transfrom" + is false. + */ + #include + + void main() { + vec2 center = vec2(0., 1.); + float rotation = 0.0; + + // This is somewhat arbitrary, but it seems to work well + // Need to figure out how to derive this dynamically if it even matters + float size = 0.03; + + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + + gl_Position = projectionMatrix * mvPosition; + } + `,fragmentShader:` + void main() { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}),[h]);return c.createElement("group",dt({},D,{ref:U}),p&&!V&&c.createElement("mesh",{castShadow:y,receiveShadow:I,ref:w},L||c.createElement("planeGeometry",null),S||c.createElement("shaderMaterial",{side:Ht,vertexShader:q.vertexShader,fragmentShader:q.fragmentShader})))});function un(t,n,o,r){var s;return s=class extends Gt{constructor(i){super({vertexShader:n,fragmentShader:o,...i});for(const d in t)this.uniforms[d]=new Ut(t[d]),Object.defineProperty(this,d,{get(){return this.uniforms[d].value},set(l){this.uniforms[d].value=l}});this.uniforms=Yt.clone(this.uniforms)}},s.key=Jt.generateUUID(),s}const pn=()=>parseInt(qt.replace(/\D+/g,"")),hn=pn(),fn=un({cellSize:.5,sectionSize:1,fadeDistance:100,fadeStrength:1,fadeFrom:1,cellThickness:.5,sectionThickness:1,cellColor:new ut,sectionColor:new ut,infiniteGrid:!1,followCamera:!1,worldCamProjPosition:new ve,worldPlanePosition:new ve},` + varying vec3 localPosition; + varying vec4 worldPosition; + + uniform vec3 worldCamProjPosition; + uniform vec3 worldPlanePosition; + uniform float fadeDistance; + uniform bool infiniteGrid; + uniform bool followCamera; + + void main() { + localPosition = position.xzy; + if (infiniteGrid) localPosition *= 1.0 + fadeDistance; + + worldPosition = modelMatrix * vec4(localPosition, 1.0); + if (followCamera) { + worldPosition.xyz += (worldCamProjPosition - worldPlanePosition); + localPosition = (inverse(modelMatrix) * worldPosition).xyz; + } + + gl_Position = projectionMatrix * viewMatrix * worldPosition; + } + `,` + varying vec3 localPosition; + varying vec4 worldPosition; + + uniform vec3 worldCamProjPosition; + uniform float cellSize; + uniform float sectionSize; + uniform vec3 cellColor; + uniform vec3 sectionColor; + uniform float fadeDistance; + uniform float fadeStrength; + uniform float fadeFrom; + uniform float cellThickness; + uniform float sectionThickness; + + float getGrid(float size, float thickness) { + vec2 r = localPosition.xz / size; + vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r); + float line = min(grid.x, grid.y) + 1.0 - thickness; + return 1.0 - min(line, 1.0); + } + + void main() { + float g1 = getGrid(cellSize, cellThickness); + float g2 = getGrid(sectionSize, sectionThickness); + + vec3 from = worldCamProjPosition*vec3(fadeFrom); + float dist = distance(from, worldPosition.xyz); + float d = 1.0 - min(dist / fadeDistance, 1.0); + vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2)); + + gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength)); + gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2); + if (gl_FragColor.a <= 0.0) discard; + + #include + #include <${hn>=154?"colorspace_fragment":"encodings_fragment"}> + } + `),xn=c.forwardRef(({args:t,cellColor:n="#000000",sectionColor:o="#2080ff",cellSize:r=.5,sectionSize:s=1,followCamera:i=!1,infiniteGrid:d=!1,fadeDistance:l=100,fadeStrength:a=1,fadeFrom:u=1,cellThickness:h=.5,sectionThickness:p=1,side:g=Qt,...y},I)=>{Xt({GridMaterial:fn});const S=c.useRef(null);c.useImperativeHandle(I,()=>S.current,[]);const L=new Zt,F=new ve(0,1,0),_=new ve(0,0,0);We(A=>{L.setFromNormalAndCoplanarPoint(F,_).applyMatrix4(S.current.matrixWorld);const D=S.current.material,W=D.uniforms.worldCamProjPosition,B=D.uniforms.worldPlanePosition;L.projectPoint(A.camera.position,W.value),B.value.set(0,0,0).applyMatrix4(S.current.matrixWorld)});const v={cellSize:r,sectionSize:s,cellColor:n,sectionColor:o,cellThickness:h,sectionThickness:p},$={fadeDistance:l,fadeStrength:a,fadeFrom:u,infiniteGrid:d,followCamera:i};return c.createElement("mesh",dt({ref:S,frustumCulled:!1},y),c.createElement("gridMaterial",dt({transparent:!0,"extensions-derivatives":!0,side:g},v,$)),c.createElement("planeGeometry",{args:t}))});function mn({vector:t,origin:n=[0,0,0],color:o="#facc15"}){const{dir:r,len:s,position:i}=c.useMemo(()=>{const l=new ve(...n),a=new ve(...t),u=l.distanceTo(a);return{dir:a.clone().sub(l).normalize(),len:u,position:l}},[t,n]),d=c.useMemo(()=>new Kt(r,i,s,o,.2*Math.min(s,1)+.1,.1*Math.min(s,1)+.05),[r,s,i,o]);return e.jsx("primitive",{object:d})}function gn(t,n=!1){const o=[];for(let r=0;r<=t;r++)for(let s=0;s<=t-r;s++){const i=t-r-s;if(i>=0)if(!n)o.push([r,s,i]);else{const d=r===0?[1]:[1,-1],l=s===0?[1]:[1,-1],a=i===0?[1]:[1,-1];for(const u of d)for(const h of l)for(const p of a)o.push([r*u,s*h,i*p])}}return o}function bn({vector:t,radius:n,distance:o,color:r}){const{position:s,quaternion:i}=c.useMemo(()=>{const d=new ve(...t).normalize(),l=new ve(0,1,0),a=new en().setFromUnitVectors(l,d);return{position:d.clone().multiplyScalar(o/2),quaternion:a}},[t,o]);return e.jsxs("mesh",{position:s,quaternion:i,children:[e.jsx("cylinderGeometry",{args:[n,n,o,32]}),e.jsx("meshStandardMaterial",{color:r,opacity:.5,transparent:!0})]})}function yn({complexity:t,lightlanes:n=!1,radius:o=.5,distance:r=5,allSectors:s=!1,cumulative:i=!1}){const d=c.useMemo(()=>{const a=[],u=i?1:t,h=t;for(let p=u;p<=h;p++){const g=gn(p,s);for(const y of g)a.push({vec:y,c:p})}return a},[t,s,i]),l=a=>{const u=i?Math.max(t,1):t;return`hsl(${270*(1-(u>1?(a-1)/(u-1):1))}, 100%, 50%)`};return e.jsx("group",{children:d.map((a,u)=>{const h=i?l(a.c):n?"#ff33c5":"#4ade80";return n?e.jsx(bn,{vector:a.vec,radius:o,distance:r,color:h},`cyl-${u}-${a.vec.join(",")}-${a.c}`):e.jsx(mn,{vector:a.vec,color:h},`vec-${u}-${a.vec.join(",")}-${a.c}`)})})}const vn="glitch:play-sound",Sn="glitch:stop-sound",ke={click:"ui.button_click",hover:"ui.button_hover",computeStart:"machine.compute_start",computeStep:"machine.compute_step",computeDone:"machine.compute_done"};function Bt(t,n){typeof window>"u"||window.dispatchEvent(new CustomEvent(t,{detail:n}))}function Ie(t,n,o){try{if(t?.playSound){t.playSound(n,o);return}}catch{}Bt(vn,{id:n,payload:o})}function jn(t,n,o){try{if(t?.stopSound){t.stopSound(n,o);return}}catch{}Bt(Sn,{id:n,payload:o})}const Ue=1e-12;function ct(t=123456789){let n=t>>>0;return function(){n|=0,n=n+1831565813|0;let r=Math.imul(n^n>>>15,1|n);return r=r+Math.imul(r^r>>>7,61|r)^r,((r^r>>>14)>>>0)/4294967296}}function Mn(t,n=Math.random){if(!Number.isFinite(t)||t<=0)return 0;if(t<30){const d=Math.exp(-t);let l=0,a=1;do l++,a*=n();while(a>d);return l-1}const o=Math.max(1e-12,n()),r=n(),s=Math.sqrt(-2*Math.log(o))*Math.cos(2*Math.PI*r),i=t+Math.sqrt(t)*s;return Math.max(0,Math.round(i))}function ot(t){return[t[0]??t.x,t[1]??t.y,t[2]??t.z]}function wn(t,n,o){return Math.sqrt(t*t+n*n+o*o)}function Rt(t){const n=2*Math.PI;let o=t%n;return o<0&&(o+=n),o}function Pn(t){const n=2*t()-1,o=2*Math.PI*t();return{theta:Math.acos(Math.max(-1,Math.min(1,n))),phi:o}}function ht(t){const n=2*Math.PI;let o=t%n;return o<0&&(o+=n),o>Math.PI&&(o=n-o),o}function Mt(t=Math.random){const n=Math.max(1e-12,t()),o=t();return Math.sqrt(-2*Math.log(n))*Math.cos(2*Math.PI*o)}function Fn(t,n,o){const r=Math.sin(n);return[t*r*Math.cos(o),t*Math.cos(n),t*r*Math.sin(o)]}function Cn(t,n=!1,o=!1){const r=[],s=o?1:t,i=t;for(let d=s;d<=i;d++)for(let l=0;l<=d;l++)for(let a=0;a<=d-l;a++){const u=d-l-a;if(!n){r.push([l,a,u]);continue}const h=l===0?[1]:[1,-1],p=a===0?[1]:[1,-1],g=u===0?[1]:[1,-1];for(const y of h)for(const I of p)for(const S of g)r.push([l*y,a*I,u*S])}return r}function wt({D:t,complexity:n,allSectors:o=!1,cumulative:r=!1}){if(!Number.isFinite(t)||t<=0)return[];if(!Number.isInteger(n)||n<1)return[];const s=Cn(n,o,r),i=[];for(let d=0;d1&&(y=1);const I=y*u,S=y*h,L=y*p,F=r-I,_=s-S,v=i-L;F*F+_*_+v*va&&u++}return u}function zt({D:t,lane_radius:n}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0)return 0;const o=n*n/(4*t*t);return o<=0?0:o>1?1:o}function kn({D:t,lane_radius:n,lane_length:o}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0||!Number.isFinite(o)||o<=0)return 0;if(o>=t-Ue)return zt({D:t,lane_radius:n});const r=n,s=o,i=t-s;if(r<=i)return 0;if(r>=t+s)return 1;const d=Math.sqrt(Math.max(0,t*t-s*s));let l;return r1&&(l=1),(1-l)/2):0}function Bn({flux:t,D:n,lane_radius:o,dt:r}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(r)||r<=0)return 0;const s=zt({D:n,lane_radius:o});return t*s*r}function Rn({flux:t,D:n,lane_radius:o,lane_length:r,dt:s}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(s)||s<=0)return 0;const i=kn({D:n,lane_radius:o,lane_length:r});return t*i*s}function It({flux:t,D:n,lane_radius:o,dt:r,hitTestModel:s="shell",lane_length:i}){return s==="segment"?Rn({flux:t,D:n,lane_radius:o,lane_length:i,dt:r}):Bn({flux:t,D:n,lane_radius:o,dt:r})}function zn(t){if(!t||typeof t!="object")throw new Error("createSamplingSimulation: config object is required.");const n=t.lane_radius??t.radius,o=t.D,r=t.complexity,s=t.flux,i=t.bin_size??1,d=t.sub_bin_sampling??4,l=t.thetaDrift??t.theta_drift??0,a=t.thetaJitter??t.theta_jitter??0,u=t.phiJitter??t.phi_jitter??0,h=t.laneLength??t.lane_length??t.distance??o,p=t.hitTestModel??t.hit_test_model??"shell",g=t.observationMode??t.observation_mode??"orbit";if(!Number.isFinite(o)||o<=0)throw new Error("createSamplingSimulation: D must be a positive number.");if(!Number.isFinite(n)||n<=0)throw new Error("createSamplingSimulation: lane_radius (or radius) must be a positive number.");if(!Number.isInteger(r)||r<1)throw new Error("createSamplingSimulation: complexity must be an integer >= 1.");if(!Number.isFinite(s)||s<0)throw new Error("createSamplingSimulation: flux must be a finite number >= 0.");if(!Number.isFinite(i)||i<=0)throw new Error("createSamplingSimulation: bin_size must be a positive number.");if(!Number.isInteger(d)||d<1)throw new Error("createSamplingSimulation: sub_bin_sampling must be an integer >= 1.");if(!Number.isFinite(l))throw new Error("createSamplingSimulation: thetaDrift must be finite.");if(!Number.isFinite(a)||a<0)throw new Error("createSamplingSimulation: thetaJitter must be a finite number >= 0.");if(!Number.isFinite(u)||u<0)throw new Error("createSamplingSimulation: phiJitter must be a finite number >= 0.");if(!Number.isFinite(h)||h<=0)throw new Error("createSamplingSimulation: laneLength/lane_length/distance must be a positive number.");if(p!=="shell"&&p!=="segment")throw new Error('createSamplingSimulation: hitTestModel must be "shell" or "segment".');if(g!=="orbit"&&g!=="randomSphere")throw new Error('createSamplingSimulation: observationMode must be "orbit" or "randomSphere".');return{D:o,lane_radius:n,complexity:r,flux:s,bin_size:i,sub_bin_sampling:d,theta:ht(t.theta??Math.PI/2),phi:Rt(t.phi??0),velocity:t.velocity??0,thetaDrift:l,thetaJitter:a,phiJitter:u,lane_length:h,hitTestModel:p,observationMode:g,allSectors:!!t.allSectors,cumulative:!!t.cumulative,usePoisson:t.usePoisson!==!1,seed:Number.isFinite(t.seed)?t.seed:1}}function Lt(t){const n=zn(t),o=wt(n),r=n.hitTestModel==="segment"?wt({...n,D:n.lane_length}):o,s=ct(n.seed),i=ct(n.seed+1),d=ct(n.seed+2),l=n.bin_size/n.sub_bin_sampling,a=It({flux:n.flux,D:n.D,lane_radius:n.lane_radius,dt:l,hitTestModel:n.hitTestModel,lane_length:n.lane_length});let u=0,h=0,p=n.phi,g=n.theta,y=0,I=0,S=0,L=0,F=0,_=0,v=0;function $(B,C){return n.usePoisson?Mn(B,C):B}function A(B=g,C=p){return Fn(n.D,B,C)}function D(){let B,C;if(n.observationMode==="randomSphere"){const R=Pn(d);B=R.theta,C=R.phi}else B=ht(g+(n.thetaJitter>0?n.thetaJitter*Mt(d):0)),C=Rt(p+(n.phiJitter>0?n.phiJitter*Mt(d):0));const te=A(B,C),j=n.hitTestModel==="segment"?Tn(r,te,n.lane_radius):En(o,n.D,te,n.lane_radius);_=j;const N=o.length,H=N>0?j*n.flux*l/N:0;return I+=$(H,s),S+=$(a,i),L+=H,v+=j,F++,{laneCount:j,satPos:te,lambdaLightlaneSubBin:H,phase:C,theta:B}}function W(){const B=F>0?F*l:n.bin_size,C=a*n.sub_bin_sampling,N={time:y,bin_size:B,lightlane:I,isotropic:S,lambdaIsotropic:F>0?a*F:C,overlaps:_,overlapsMean:F>0?v/F:0,subBins:F,phase:p,theta:g,lambdaLightlaneExpected:L};return I=0,S=0,L=0,v=0,F=0,N}return{config:{...n},getLaneCount(){return o.length},getState(){return{elapsed:y,phase:p,theta:g,timeInBin:u,timeInSubBin:h,accumulatedLightlane:I,accumulatedIsotropic:S,expectedLightlaneThisBin:L,processedSubBinsInCurrentBin:F,lastLaneCount:_,laneCount:o.length}},reset(){u=0,h=0,p=n.phi,g=n.theta,y=0,I=0,S=0,L=0,F=0,_=0,v=0},flushPartialBin(){if(F<=0)return null;const B=W();return u=0,h=0,B},simulate(B){if(!Number.isFinite(B)||B<=0)return{bins:[],lastLaneCount:_,subBinEvents:0,elapsed:y};let C=B,te=0;const j=[];for(;C>Ue;){const N=l-h,H=n.bin_size-u,R=Math.min(C,N,H);p+=n.velocity*R,g=ht(g+n.thetaDrift*R),y+=R,h+=R,u+=R,C-=R,h>=l-Ue&&(h=0,D(),te++),u>=n.bin_size-Ue&&(u=0,j.push(W()))}return{bins:j,lastLaneCount:_,subBinEvents:te,elapsed:y}}}}function Pt(t,n){const o=t.n+1,r=n-t.mean,s=t.mean+r/o,i=t.m2+r*(n-s);return{n:o,mean:s,m2:i}}function Ft(){return{n:0,mean:0,m2:0}}function In({complexity:t,samplesPerPoint:n,runsPerPoint:o,binSize:r,subBinSampling:s,props:i,observationMode:d,seed:l}){let a=Ft(),u=Ft(),h=0;for(let S=0;S1?a.m2/(a.n-1):0,g=u.n>1?u.m2/(u.n-1):0,y=a.mean>0?p/a.mean:0,I=u.mean>0?g/u.mean:0;return{complexity:t,laneCount:h,meanBlue:a.mean,meanYellow:u.mean,fanoBlue:y,fanoYellow:I,fanoExcess:Math.max(0,y-I)}}function Ln(t,n=1){const o=t.filter(p=>p.complexity>=n&&p.complexity>1&&p.fanoExcess>1e-6);if(o.length<3)return null;let r=0,s=0,i=0,d=0;const l=o.length;for(const p of o){const g=Math.log(p.laneCount),y=Math.log(p.fanoExcess);r+=g,s+=y,i+=g*g,d+=g*y}const a=l*i-r*r;if(Math.abs(a)<1e-12)return null;const u=(l*d-r*s)/a,h=(s-u*r)/l;return{A:Math.exp(h),alpha:-u,predictFanoExcessFromLaneCount(p){return Math.exp(h+u*Math.log(Math.max(1,p)))}}}function $n(t,n=1){const o=t.filter(l=>l.complexity>=n&&l.complexity>1&&l.fanoExcess>1e-6);if(o.length<4)return null;const r=Math.min(...o.map(l=>l.fanoExcess)),s=Math.max(0,r*.98);let i=null;const d=80;for(let l=0;l<=d;l++){const a=l/d*s,u=o.map(A=>({x:A.laneCount,y:A.fanoExcess-a})).filter(A=>A.y>1e-9);if(u.length<3)continue;let h=0,p=0,g=0,y=0;const I=u.length;for(const A of u){const D=Math.log(A.x),W=Math.log(A.y);h+=D,p+=W,g+=D*D,y+=D*W}const S=I*g-h*h;if(Math.abs(S)<1e-12)continue;const L=(I*y-h*p)/S,F=(p-L*h)/I,_=Math.exp(F),v=-L;if(!(_>0)||!(v>0))continue;let $=0;for(const A of o){const D=a+_*Math.pow(Math.max(1,A.laneCount),-v),W=Math.log(Math.max(1e-9,A.fanoExcess))-Math.log(Math.max(1e-9,D));$+=W*W}(!i||$p.x>0&&p.y>0);if(n.length<3)return null;let o=0,r=0,s=0,i=0;const d=n.length;for(const p of n){const g=Math.log(p.x),y=Math.log(p.y);o+=g,r+=y,s+=g*g,i+=g*y}const l=d*s-o*o;if(Math.abs(l)<1e-12)return null;const a=(d*i-o*r)/l,u=(r-a*o)/d,h=Math.exp(u);return{A:h,beta:a,predict(p){return h*Math.pow(Math.max(1e-9,p),a)},invert(p){return h<=0||Math.abs(a)<1e-12||p<=0?null:Math.pow(p/h,1/a)}}}function Dn(t,n){if(!Number.isFinite(n)||n<=0||t.length===0)return null;const o=[...t].sort((a,u)=>a.complexity-u.complexity),r=[...o].sort((a,u)=>a.laneCount-u.laneCount),s=r[0],i=r[r.length-1];if(n<=s.laneCount)return{complexity:s.complexity,mode:"observed-range"};for(let a=1;a({x:a.complexity,y:a.laneCount})))?.invert(n)??null;return l&&Number.isFinite(l)?{complexity:l,mode:"extrapolated"}:{complexity:i.complexity,mode:"observed-max"}}function Ct(t,n,o,r){return t.map((s,i)=>`${i===0?"M":"L"} ${o(s.complexity)} ${r(n(s))}`).join(" ")}function An(t){return t>=10?t.toFixed(0):t>=2?t.toFixed(1):t.toFixed(2)}function Wn(t,n){const r=[.5,.6,.7,.8,.9,1,1.1,1.2,1.4,1.6,1.8,2,2.5,3,4,5,7.5,10].filter(l=>l>=t&&l<=n);if(r.length>=3)return r;const s=5,i=Math.log(t),d=Math.log(n);return Array.from({length:s},(l,a)=>{const u=a/(s-1);return Math.exp(i+(d-i)*u)})}function _n(t){const[n,o]=c.useState(40),[r,s]=c.useState(1e3),[i,d]=c.useState(3),[l,a]=c.useState(1),[u,h]=c.useState(4),[p,g]=c.useState("randomSphere"),[y,I]=c.useState(.05),[S,L]=c.useState(10),[F,_]=c.useState(0),[v,$]=c.useState([]),[A,D]=c.useState(0),[W,B]=c.useState(!1),C=c.useRef(!1),te=c.useRef(-1),j=()=>{Ie(t.host,ke.hover,{page:"fano"})},N=(b,z)=>{Ie(t.host,ke.click,{page:"fano",target:b,...z})};c.useEffect(()=>{let b=!1;return $([]),D(0),B(!0),(async()=>{const z=[];for(let k=1;k<=n;k++){if(b)return;const w=In({complexity:k,samplesPerPoint:r,runsPerPoint:i,binSize:l,subBinSampling:u,props:t,observationMode:p,seed:1e4+k*97+F*100003});z.push(w),$([...z]),D(k/n),await new Promise(K=>setTimeout(K,0))}b||B(!1)})(),()=>{b=!0}},[n,r,i,l,u,p,F,t.radius,t.distance,t.chandraDistance,t.allSectors,t.cumulative,t.theta,t.phi,t.orbitSpeed,t.thetaDrift,t.thetaJitter,t.phiJitter,t.K,t.speedup,t.usePoisson]),c.useEffect(()=>{const b=C.current;if(C.current=W,W&&!b){te.current=-1,Ie(t.host,ke.computeStart,{page:"fano"});return}!W&&b&&(jn(t.host,ke.computeStep,{page:"fano"}),Ie(t.host,ke.computeDone,{page:"fano",points:v.length}))},[W,t.host,v.length]),c.useEffect(()=>{if(!W)return;const b=Math.floor(A*10);b<=te.current||(te.current=b,Ie(t.host,ke.computeStep,{page:"fano",progress:A}))},[A,W,t.host]);const H=c.useMemo(()=>Ln(v,S),[v,S]),R=c.useMemo(()=>$n(v,S),[v,S]),E=c.useMemo(()=>{if(!H||H.alpha<=0||y<=0)return null;if(R&&R.B>=y)return{targetExcess:y,requiredLaneCount:Number.POSITIVE_INFINITY,measuredCrossing:v.find(re=>re.fanoExcess<=y)??null,complexityEstimate:null,blockedByFloor:!0,floorExcess:R.B};const b=R?Math.max(1e-9,y-R.B):y,z=R?R.A:H.A,k=R?R.alpha:H.alpha,w=Math.pow(z/b,1/k);if(!Number.isFinite(w)||w<=0)return null;const K=v.find(re=>re.fanoExcess<=y)??null,V=Dn(v,w);return{targetExcess:y,requiredLaneCount:w,measuredCrossing:K,complexityEstimate:V,blockedByFloor:!1,floorExcess:R?.B??0}},[H,R,v,y]),x=c.useMemo(()=>{const k={top:20,right:20,bottom:42,left:48},w=860-k.left-k.right,K=360-k.top-k.bottom,V=Math.max(2,n),re=[1,...v.map(Y=>Y.fanoBlue),...v.map(Y=>Y.fanoYellow),...v.map(Y=>1+Y.fanoExcess)].filter(Y=>Number.isFinite(Y)&&Y>0),ge=Math.min(...re),he=Math.max(...re),q=Math.max(.001,Math.min(.95,ge*.95)),X=Math.max(1.05,he*1.05),O=Math.log(q),me=Math.log(X),ee=Y=>k.left+(Y-1)/(V-1)*w,fe=Y=>{const ae=Math.min(X,Math.max(q,Y)),ie=Math.log(ae);return k.top+K-(ie-O)/Math.max(1e-9,me-O)*K},ce=Wn(q,X);return{width:860,height:360,margin:k,innerW:w,innerH:K,xToPx:ee,yToPx:fe,yMax:X,yMin:q,yTicks:ce}},[v,n]),U=c.useMemo(()=>v.length>1?Ct(v,b=>b.fanoBlue,x.xToPx,x.yToPx):"",[v,x]),Se=c.useMemo(()=>v.length>1?Ct(v,b=>b.fanoYellow,x.xToPx,x.yToPx):"",[v,x]),G=v.at(-1)??null;return e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"auto"},children:e.jsxs("div",{style:{width:"100%",height:"100%",display:"flex",flexDirection:"column",background:"radial-gradient(circle at 20% 10%, rgba(30,41,59,0.9), rgba(2,6,23,0.96))",color:"var(--terminal-green-soft)",padding:"16px",paddingBottom:`${16+(t.bottomInset??0)}px`,boxSizing:"border-box",gap:"12px",fontFamily:"var(--font-ui)"},children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",flexWrap:"wrap"},children:[e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:"14px",fontWeight:400,letterSpacing:"0.12em",textTransform:"uppercase",fontFamily:"var(--font-headline)",color:"var(--terminal-green-soft)"},children:"Fano Sweep"}),e.jsxs("div",{style:{fontSize:"11px",color:"var(--terminal-green)",marginTop:"4px"},children:["Goal: show ","Fano(Blue)"," trending toward 1.0 (or toward Yellow) as complexity increases."]})]}),e.jsxs("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:[t.onBack&&e.jsx("button",{type:"button",onClick:()=>{N("back-to-simulator"),t.onBack?.()},onPointerEnter:j,style:{border:"1px solid var(--terminal-panel-border)",background:"rgba(7,19,11,0.8)",color:"var(--terminal-green-soft)",padding:"8px 12px",borderRadius:"8px",cursor:"pointer",fontSize:"12px",fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.08em",textTransform:"uppercase"},children:"Back To Simulator"}),e.jsx("button",{type:"button",onClick:()=>{N("rerun-sweep"),_(b=>b+1)},onPointerEnter:j,style:{border:"1px solid var(--terminal-panel-border)",background:W?"rgba(125, 255, 155, 0.14)":"rgba(7,19,11,0.8)",color:"var(--terminal-green-soft)",padding:"8px 12px",borderRadius:"8px",cursor:"pointer",fontSize:"12px",fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.08em",textTransform:"uppercase"},children:W?"Rerun (queued)":"Rerun Sweep"})]})]}),e.jsxs("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:[e.jsx("button",{type:"button",onClick:()=>{N("preset-video-demo"),g("randomSphere"),o(60),s(1200),d(2),a(1),h(4),L(12)},onPointerEnter:j,style:{border:"1px solid var(--terminal-panel-border)",background:"rgba(7,19,11,0.8)",color:"var(--terminal-green-soft)",padding:"6px 10px",borderRadius:8,cursor:"pointer",fontSize:11,fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.06em"},children:"Preset: Video Demo"}),e.jsx("button",{type:"button",onClick:()=>{N("preset-robust-sweep"),g("randomSphere"),o(200),s(3e3),d(5),a(1),h(16),L(40)},onPointerEnter:j,style:{border:"1px solid rgba(125, 255, 155, 0.32)",background:"rgba(2,6,23,0.8)",color:"var(--terminal-green-soft)",padding:"6px 10px",borderRadius:8,cursor:"pointer",fontSize:11,fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.06em"},children:"Preset: Robust Sweep"})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(140px, 1fr))",gap:"8px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Max Complexity",e.jsx("input",{type:"number",min:2,max:200,value:n,onChange:b=>o(Math.max(2,Math.min(200,Number(b.target.value)||2))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Samples / Point",e.jsx("input",{type:"number",min:100,max:2e4,step:100,value:r,onChange:b=>s(Math.max(100,Math.min(2e4,Number(b.target.value)||100))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Runs / Point (Seeds)",e.jsx("input",{type:"number",min:1,max:20,step:1,value:i,onChange:b=>d(Math.max(1,Math.min(20,Number(b.target.value)||1))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Bin Size (s)",e.jsx("input",{type:"number",min:.1,max:20,step:.1,value:l,onChange:b=>a(Math.max(.1,Math.min(20,Number(b.target.value)||.1))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Sub-Bin Sampling",e.jsx("input",{type:"number",min:1,max:256,step:1,value:u,onChange:b=>h(Math.max(1,Math.min(256,Math.round(Number(b.target.value)||1)))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Observation Mode",e.jsxs("select",{value:p,onChange:b=>g(b.target.value),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"},children:[e.jsx("option",{value:"randomSphere",children:"Random Sphere (recommended)"}),e.jsx("option",{value:"orbit",children:"Orbit (path-biased)"})]})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Target Excess (B-Y)",e.jsx("input",{type:"number",min:.001,max:1,step:.005,value:y,onChange:b=>I(Math.max(.001,Math.min(1,Number(b.target.value)||.05))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Fit Start Complexity",e.jsx("input",{type:"number",min:1,max:n,step:1,value:S,onChange:b=>L(Math.max(1,Math.min(n,Number(b.target.value)||1))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("div",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"6px"},children:["Progress",e.jsx("div",{style:{background:"rgba(7,19,11,0.9)",border:"1px solid var(--terminal-panel-border)",borderRadius:"999px",padding:"3px"},children:e.jsx("div",{style:{height:"8px",width:`${Math.round(A*100)}%`,background:"linear-gradient(90deg, var(--terminal-green-dim), var(--terminal-green-soft))",borderRadius:"999px",transition:"width 0.15s ease"}})}),e.jsx("div",{style:{color:"var(--terminal-green)"},children:W?`Running ${Math.round(A*100)}%`:"Complete"})]})]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px",minHeight:0,flex:1},children:[e.jsx("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",width:"100%",minWidth:0,minHeight:"min(58vh, 520px)"},children:e.jsxs("svg",{viewBox:`0 0 ${x.width} ${x.height}`,style:{width:"100%",height:"100%"},children:[e.jsx("rect",{x:0,y:0,width:x.width,height:x.height,fill:"transparent"}),x.yTicks.map((b,z)=>{const k=x.yToPx(b);return e.jsxs("g",{children:[e.jsx("line",{x1:x.margin.left,y1:k,x2:x.margin.left+x.innerW,y2:k,stroke:"rgba(125, 255, 155, 0.12)"}),e.jsx("text",{x:8,y:k+4,fill:"var(--terminal-green)",fontSize:"10",fontFamily:"var(--font-ui)",children:An(b)})]},`ygrid-${z}`)}),e.jsx("line",{x1:x.margin.left,y1:x.yToPx(1),x2:x.margin.left+x.innerW,y2:x.yToPx(1),stroke:"#f97316",strokeDasharray:"4 4",opacity:.8}),e.jsx("text",{x:x.margin.left+6,y:x.yToPx(1)-6,fill:"#fdba74",fontSize:"10",children:"Fano = 1"}),e.jsx("line",{x1:x.margin.left,y1:x.margin.top+x.innerH,x2:x.margin.left+x.innerW,y2:x.margin.top+x.innerH,stroke:"rgba(125, 255, 155, 0.3)"}),e.jsx("line",{x1:x.margin.left,y1:x.margin.top,x2:x.margin.left,y2:x.margin.top+x.innerH,stroke:"rgba(125, 255, 155, 0.3)"}),Array.from({length:Math.min(n,10)},(b,z)=>{const k=1+(n-1)*z/Math.max(1,Math.min(n-1,9)),w=x.xToPx(k);return e.jsxs("g",{children:[e.jsx("line",{x1:w,y1:x.margin.top+x.innerH,x2:w,y2:x.margin.top+x.innerH+4,stroke:"rgba(125, 255, 155, 0.3)"}),e.jsx("text",{x:w,y:x.margin.top+x.innerH+18,fill:"var(--terminal-green)",fontSize:"10",fontFamily:"var(--font-ui)",textAnchor:"middle",children:Math.round(k)})]},`xtick-${z}`)}),Se&&e.jsx("path",{d:Se,fill:"none",stroke:"#fbbf24",strokeWidth:"2",opacity:.95}),U&&e.jsx("path",{d:U,fill:"none",stroke:"#60a5fa",strokeWidth:"2.25",opacity:.95}),H&&v.length>2&&(()=>{const b=v.filter(z=>z.complexity>=S).map((z,k)=>{const w=1+H.predictFanoExcessFromLaneCount(z.laneCount);return`${k===0?"M":"L"} ${x.xToPx(z.complexity)} ${x.yToPx(w)}`}).join(" ");return e.jsx("path",{d:b,fill:"none",stroke:"#93c5fd",strokeDasharray:"5 4",strokeWidth:"1.5",opacity:.8})})(),R&&v.length>2&&(()=>{const b=v.filter(z=>z.complexity>=S).map((z,k)=>{const w=1+R.predictFanoExcessFromLaneCount(z.laneCount);return`${k===0?"M":"L"} ${x.xToPx(z.complexity)} ${x.yToPx(w)}`}).join(" ");return e.jsx("path",{d:b,fill:"none",stroke:"#22d3ee",strokeDasharray:"2 4",strokeWidth:"1.5",opacity:.7})})(),v.map(b=>e.jsxs("g",{children:[e.jsx("circle",{cx:x.xToPx(b.complexity),cy:x.yToPx(b.fanoYellow),r:"2.2",fill:"#fbbf24"}),e.jsx("circle",{cx:x.xToPx(b.complexity),cy:x.yToPx(b.fanoBlue),r:"2.5",fill:"#60a5fa"})]},`dot-${b.complexity}`)),e.jsx("text",{x:x.margin.left+x.innerW/2,y:x.height-8,fill:"var(--terminal-green)",fontSize:"11",fontFamily:"var(--font-ui)",textAnchor:"middle",children:"Complexity"}),e.jsx("text",{x:14,y:x.margin.top+x.innerH/2,fill:"var(--terminal-green)",fontSize:"11",fontFamily:"var(--font-ui)",textAnchor:"middle",transform:`rotate(-90 14 ${x.margin.top+x.innerH/2})`,children:"Fano Factor (Var / Mean, log scale)"})]})}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:"8px",alignItems:"start"},children:[e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Legend"}),e.jsx("div",{style:{color:"#60a5fa"},children:"Blue: Lightlane Fano"}),e.jsx("div",{style:{color:"#fbbf24"},children:"Yellow: Isotropic Fano"}),e.jsx("div",{style:{color:"#fdba74",marginTop:"4px"},children:"Dashed orange: Fano = 1"}),e.jsx("div",{style:{color:"#93c5fd",marginTop:"4px"},children:"Dashed blue: power-fit extrapolation (blue excess over yellow)"}),e.jsx("div",{style:{color:"#22d3ee",marginTop:"4px"},children:"Dashed cyan: floor-aware fit (B + A×N^-α)"})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Latest Point"}),G?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:["Complexity: ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:G.complexity})]}),e.jsxs("div",{children:["Lanes: ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:G.laneCount})]}),e.jsxs("div",{children:["Mean Ratio (B/Y): ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:(G.meanBlue/Math.max(1e-9,G.meanYellow)).toFixed(3)})]}),e.jsxs("div",{children:["Fano Blue: ",e.jsx("span",{style:{fontFamily:"monospace",color:"#93c5fd"},children:G.fanoBlue.toFixed(3)})]}),e.jsxs("div",{children:["Fano Yellow: ",e.jsx("span",{style:{fontFamily:"monospace",color:"#fef3c7"},children:G.fanoYellow.toFixed(3)})]}),e.jsxs("div",{children:["Excess (B-Y): ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:G.fanoExcess.toFixed(3)})]}),e.jsxs("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:["Aggregated over ",r.toLocaleString()," bins × ",i," seeds"]})]}):e.jsx("div",{style:{color:"var(--terminal-green)"},children:"No points yet."})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Power Fit"}),H?e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{color:"var(--terminal-green-soft)"},children:["Excess ≈ ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:H.A.toExponential(2)})," × N",e.jsxs("sup",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:["-",H.alpha.toFixed(2)]})]}),e.jsxs("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:["Fit is on blue excess over yellow using lane count N, starting at complexity ",S,"."]})]}):e.jsx("div",{style:{color:"var(--terminal-green)"},children:"Need more points with nonzero excess."}),R&&e.jsxs("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:["Floor fit: excess ≈ ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:R.B.toFixed(3)})," + ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:R.A.toExponential(2)})," × N",e.jsxs("sup",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:["-",R.alpha.toFixed(2)]})]})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Indistinguishable Target"}),e.jsxs("div",{style:{color:"var(--terminal-green)",marginBottom:"6px"},children:["Criterion: ",e.jsxs("span",{style:{color:"var(--terminal-green-soft)"},children:["Fano Blue - Fano Yellow ≤ ",y.toFixed(3)]})]}),E?e.jsxs(e.Fragment,{children:[E.blockedByFloor?e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{color:"#ff8f8f"},children:"Floor-aware fit predicts no finite crossing for this threshold."}),e.jsxs("div",{children:["Fitted excess floor:"," ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:E.floorExcess.toFixed(3)})]}),e.jsx("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:"Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau."})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:["Required lane count N (fit):"," ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:Math.round(E.requiredLaneCount).toLocaleString()})]}),e.jsxs("div",{children:["Estimated complexity:"," ",e.jsx("span",{style:{fontFamily:"monospace",color:"#93c5fd"},children:E.complexityEstimate?Math.ceil(E.complexityEstimate.complexity).toLocaleString():"n/a"}),E.complexityEstimate&&e.jsxs("span",{style:{color:"var(--terminal-green)"},children:[" ","(",E.complexityEstimate.mode==="observed-range"?"interpolated from current sweep":E.complexityEstimate.mode==="extrapolated"?"extrapolated":"bounded by current sweep",")"]})]})]}),e.jsx("div",{style:{marginTop:"6px",color:"var(--terminal-green)"},children:E.measuredCrossing?`Observed crossing already reached at complexity ${E.measuredCrossing.complexity}.`:"No observed crossing yet in current sweep; estimate uses fit."})]}):e.jsx("div",{style:{color:"var(--terminal-green)"},children:"Need a stable excess fit (nonzero blue excess across multiple points)."})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px",color:"var(--terminal-green)"},children:["Use ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"Random Sphere"})," to isolate discretization convergence from path bias. Orbit mode is still useful to show persistent anisotropy on specific trajectories.",e.jsxs("div",{style:{marginTop:"6px"},children:["For a stronger/cleaner claim in the video: report the threshold estimate together with ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"bin size"}),", ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"sub-bin sampling"}),", and ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"runs/point"}),"."]}),e.jsx("div",{style:{marginTop:"6px"},children:"If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers."})]})]})]})]})})}const Ye=new ut("#dbeafe");function Nn(t,n){const o=new Float32Array(n*3),r=new Float32Array(n*3),s=[],i=t+.01;for(let d=0;dNn(t,o),[t]);return We(({clock:d})=>{const l=n.current;if(!l)return;const a=l.geometry.getAttribute("color");if(!a)return;const u=d.getElapsedTime(),h=a.array;for(let p=0;p{if(!n&&o.current){const s=r.clock.elapsedTime*3,i=.5+(Math.sin(s)+1)/2*1.5;o.current.emissiveIntensity=i}}),e.jsxs("mesh",{position:[0,0,0],children:[e.jsx("sphereGeometry",{args:[t,64,64]}),e.jsx("meshStandardMaterial",{ref:o,color:"#ec4899",emissive:"#db2777",emissiveIntensity:1,toneMapped:!1})]})}function Gn(t){const n=2*Math.PI;let o=t%n;return o<0&&(o+=n),o>Math.PI&&(o=n-o),o}function Un({radius:t,theta:n,phi:o,orbitTime:r,simTime:s,thetaDrift:i=0,paused:d=!1}){const l=c.useRef(null);return We(()=>{if(!d&&l.current){const a=o+r.current,u=Gn(n+(s?.current??0)*i),h=t*Math.sin(u)*Math.cos(a),p=t*Math.cos(u),g=t*Math.sin(u)*Math.sin(a);l.current.position.set(h,p,g),l.current.lookAt(0,0,0)}}),e.jsxs("group",{ref:l,children:[e.jsxs("mesh",{renderOrder:10,children:[e.jsx("sphereGeometry",{args:[.09,16,16]}),e.jsx("meshBasicMaterial",{color:"#22d3ee",toneMapped:!1})]}),e.jsxs("mesh",{renderOrder:9,children:[e.jsx("sphereGeometry",{args:[.16,16,16]}),e.jsx("meshBasicMaterial",{color:"#22d3ee",transparent:!0,opacity:.18,toneMapped:!1})]}),e.jsxs("mesh",{rotation:[Math.PI/2,0,0],children:[e.jsx("cylinderGeometry",{args:[.14,.18,1,16]}),e.jsx("meshStandardMaterial",{color:"#c0c0c0",metalness:.8,roughness:.2})]}),e.jsxs("mesh",{position:[0,0,.3],rotation:[Math.PI/2,0,0],children:[e.jsx("cylinderGeometry",{args:[.18,.18,.16,8]}),e.jsx("meshStandardMaterial",{color:"#d4af37",metalness:.95,roughness:.18})]}),e.jsxs("mesh",{position:[0,0,.6],rotation:[Math.PI/2,0,0],children:[e.jsx("cylinderGeometry",{args:[.22,.22,.2,16]}),e.jsx("meshStandardMaterial",{color:"#ffd700",metalness:1,roughness:.1})]}),e.jsxs("mesh",{position:[0,0,.7],renderOrder:11,children:[e.jsx("sphereGeometry",{args:[.05,12,12]}),e.jsx("meshBasicMaterial",{color:"#f97316",toneMapped:!1})]}),e.jsxs("mesh",{position:[0,0,.35],rotation:[Math.PI/2,0,0],renderOrder:8,children:[e.jsx("cylinderGeometry",{args:[.015,.015,.7,8]}),e.jsx("meshBasicMaterial",{color:"#f97316",transparent:!0,opacity:.7,toneMapped:!1})]}),e.jsxs("group",{position:[0,0,.22],children:[e.jsxs("mesh",{position:[.6,0,0],children:[e.jsx("boxGeometry",{args:[.8,.4,.05]}),e.jsx("meshStandardMaterial",{color:"#1e3a8a",metalness:.5,roughness:.1})]}),e.jsxs("mesh",{position:[-.6,0,0],children:[e.jsx("boxGeometry",{args:[.8,.4,.05]}),e.jsx("meshStandardMaterial",{color:"#1e3a8a",metalness:.5,roughness:.1})]}),e.jsxs("mesh",{position:[.28,0,-.01],children:[e.jsx("boxGeometry",{args:[.18,.05,.04]}),e.jsx("meshStandardMaterial",{color:"#94a3b8",metalness:.7,roughness:.22})]}),e.jsxs("mesh",{position:[-.28,0,-.01],children:[e.jsx("boxGeometry",{args:[.18,.05,.04]}),e.jsx("meshStandardMaterial",{color:"#94a3b8",metalness:.7,roughness:.22})]})]})]})}const xe={solid:"#60a5fa",dark:"#3b82f6",light:"#93c5fd",glow:"rgba(96,165,250,0.5)",panel:"rgba(0,20,40,0.8)"},pe={solid:"#fbbf24",dark:"#f59e0b",light:"#fef3c7",glow:"rgba(251,191,36,0.5)"},tt="var(--font-headline)",ye="var(--font-ui)",Yn="var(--terminal-green)",De="var(--terminal-green-soft)",Fe="var(--terminal-green-muted)";function Jn({bars:t}){const n=window.innerHeight;return e.jsxs(e.Fragment,{children:[t.map(o=>{const r=n-o.startBottom-o.barHeight,s=o.targetLeft-o.startLeft,i=o.targetTop-r;return e.jsx("div",{style:{position:"absolute",left:`${o.startLeft}px`,top:`${r}px`,width:`${o.barWidth}px`,height:`${o.barHeight}px`,background:o.color,borderRadius:"2px 2px 0 0",opacity:.95,animation:"flyToDistribution 1.2s ease-in-out forwards","--delta-x":`${s}px`,"--delta-y":`${i}px`,zIndex:1e3,boxShadow:`0 0 15px ${o.color}`}},o.id)}),e.jsx("style",{children:` + @keyframes flyToDistribution { + 0% { + transform: translate(0, 0) scale(1); + opacity: 0.95; + } + 40% { + transform: translate(calc(var(--delta-x) * 0.3), calc(var(--delta-y) * 0.5)) scale(0.9); + opacity: 0.9; + } + 85% { + transform: translate(calc(var(--delta-x) * 0.95), calc(var(--delta-y) * 0.95)) scale(0.7); + opacity: 0.85; + } + 100% { + transform: translate(var(--delta-x), var(--delta-y)) scale(0.6); + opacity: 0; + } + } + .clickable-bar { + transition: all 0.2s ease; + } + .clickable-bar:hover { + transform: scaleY(1.1) scaleX(1.2); + filter: brightness(1.3); + box-shadow: 0 0 10px currentColor; + } + `})]})}function nt(){return{n:0,meanObs:0,m2Obs:0,meanIso:0,m2Iso:0}}function qn(t,n,o){const r=t.n+1,s=n-t.meanObs,i=t.meanObs+s/r,d=t.m2Obs+s*(n-i),l=o-t.meanIso,a=t.meanIso+l/r,u=t.m2Iso+l*(o-a);return{n:r,meanObs:i,m2Obs:d,meanIso:a,m2Iso:u}}function Xn({complexity:t,radius:n,distance:o,theta:r,phi:s,observationMode:i,allSectors:d,cumulative:l,K:a,orbitRadius:u,orbitVelocity:h,thetaDrift:p,thetaJitter:g,phiJitter:y,usePoisson:I,speedup:S,paused:L,sceneView:F,bottomInset:_=0,showNumericDiagnostics:v=!0,compactNumericDiagnostics:$=!1,host:A,centerDistribution:D=!1,hideFlyingBars:W=!1}){const[B,C]=c.useState({current:0,total:0,lastCheck:0,overlaps:0,currentTheory:0,binOverlapsMean:0,currentExpectedLightlane:0}),te=4,j=c.useMemo(()=>Lt({D:u,theta:r,phi:s,observationMode:i,velocity:h,thetaDrift:p,thetaJitter:g,phiJitter:y,distance:o,hitTestModel:"segment",bin_size:1,complexity:t,sub_bin_sampling:te,flux:a,lane_radius:n,allSectors:d,cumulative:l,usePoisson:I}),[u,r,s,i,h,p,g,y,t,a,n,o,d,l,I]),N=60,H=c.useRef(new Array(N).fill(-1)),R=c.useRef(new Array(N).fill(-1)),E=c.useRef(0),[x,U]=c.useState(new Array(N).fill(-1)),[Se,G]=c.useState(new Array(N).fill(-1)),b=It({flux:a,D:u,lane_radius:n,dt:1,hitTestModel:"segment",lane_length:o}),z=Math.sqrt(b),k=15,w=4*z,K=Math.max(0,b-w),V=b+w,re=I,ge=Math.max(0,Math.floor(K)),he=Math.max(ge,Math.ceil(V)),q=re?he-ge+1:k,X=re?1:Math.max(1e-9,(V-K)/k),O=m=>{if(re){const M=Math.round(m);return M<=ge?0:M>=he?q-1:M-ge}return m=V?q-1:Math.floor((m-K)/X)},me=m=>re?ge+m:K+(m+.5)*X,[ee,fe]=c.useState(new Array(q).fill(0)),[ce,Y]=c.useState(new Array(q).fill(0)),[ae,ie]=c.useState(new Set),[Be,Ce]=c.useState(new Set),[Le,Te]=c.useState([]),Re=c.useRef(0),$e=c.useRef(nt()),[J,_e]=c.useState(nt()),be=c.useRef(L),Ze=c.useRef(0);c.useEffect(()=>{fe(new Array(q).fill(0)),Y(new Array(q).fill(0)),H.current.fill(-1),R.current.fill(-1),E.current=0,U(new Array(N).fill(-1)),G(new Array(N).fill(-1)),ie(new Set),Ce(new Set),Te([]),$e.current=nt(),_e(nt()),C({current:0,total:0,lastCheck:0,overlaps:0,currentTheory:0,binOverlapsMean:0,currentExpectedLightlane:0})},[t,a,n,o,u,r,s,i,h,p,g,y,d,l,I,q]);const Qe=(m,M)=>{if(m.length===0)return;let T=0,le=0,se=0,je=B.binOverlapsMean,Q=B.currentExpectedLightlane,de=$e.current;for(const ue of m){const Me=ue.lightlane,we=ue.isotropic;if(T+=Me,le=Me,se=we,je=ue.overlapsMean,Q=ue.lambdaLightlaneExpected,de=qn(de,Me,we),H.current[E.current]=Me,R.current[E.current]=we,E.current++,E.current>=N){const Ee=Math.max(10,...H.current.filter(oe=>oe>=0),...R.current.filter(oe=>oe>=0));ne([...H.current],[...R.current],Ee),H.current.fill(-1),R.current.fill(-1),E.current=0,ie(new Set),Ce(new Set)}}$e.current=de,C(ue=>({current:le,total:ue.total+T,lastCheck:Date.now(),overlaps:M,currentTheory:se,binOverlapsMean:je,currentExpectedLightlane:Q})),_e(de),U([...H.current]),G([...R.current])},Ne=c.useRef(!1),He=c.useRef(null),Ke=(m,M)=>{m.stopPropagation(),Ne.current=!0,He.current=M,m.target.setPointerCapture(m.pointerId),Ie(A,ke.click,{target:`${M}-periodogram`,action:"pointer-down"})},et=(m,M,T,le)=>{if(!Ne.current||He.current!==M)return;m.stopPropagation();const se=m.currentTarget.getBoundingClientRect(),je=m.clientX-se.left,Q=Math.floor(je/se.width*N);if(Q>=0&&Q=0&&!ue&&Z(Q,de,M,le)}},f=m=>{m.stopPropagation(),Ne.current=!1,He.current=null},P=(m,M,T,le)=>{const se=window.innerWidth,je=m/N*se,Q=se/N,de=Math.max(2,M/le*80),we=T==="observed"?25:110,Ee=O(M),oe=20,Pe=se-2*oe,ze=oe+(Ee+.5)/q*Pe;return{startLeft:je,startBottom:we,barHeight:de,barWidth:Q,targetLeft:ze,targetTop:150,binIndex:Ee}},Z=(m,M,T,le)=>{if(M<0)return;const se=Date.now();se-Ze.current>=45&&(Ze.current=se,Ie(A,ke.computeStep,{target:`${T}-periodogram`,value:M}));const{startLeft:je,startBottom:Q,barHeight:de,barWidth:ue,targetLeft:Me,targetTop:we}=P(m,M,T,le),Ee={id:Re.current++,value:M,startLeft:je,startBottom:Q,barHeight:de,barWidth:ue,targetLeft:Me,targetTop:we,color:T==="observed"?pe.solid:xe.solid,type:T};Te(oe=>[...oe,Ee]),T==="observed"?(ie(oe=>new Set(oe).add(m)),fe(oe=>{const Pe=[...oe],ze=O(M);return Pe[ze]++,Pe})):(Ce(oe=>new Set(oe).add(m)),Y(oe=>{const Pe=[...oe],ze=O(M);return Pe[ze]++,Pe}))},ne=(m,M,T)=>{const le=[],se=[...ee],je=[...ce];m.forEach((Q,de)=>{if(Q>=0){const{startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,binIndex:ze}=P(de,Q,"observed",T);le.push({id:Re.current++,value:Q,startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,color:pe.solid,type:"observed"}),se[ze]++}}),M.forEach((Q,de)=>{if(Q>=0){const{startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,binIndex:ze}=P(de,Q,"theory",T);le.push({id:Re.current++,value:Q,startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,color:xe.solid,type:"theory"}),je[ze]++}}),Te(Q=>[...Q,...le]),fe(se),Y(je)};c.useEffect(()=>{if(Le.length>0){const m=setTimeout(()=>{Te([])},1300);return()=>clearTimeout(m)}},[Le.length]);const Ve=c.useRef(0);c.useEffect(()=>{E.current{const m=be.current;if(be.current=L,!L||m)return;const M=j.flushPartialBin();M&&Qe([M],M.overlaps)},[L,j]),We((m,M)=>{if(L)return;const T=j.simulate(M*S);T.subBinEvents>0&&C(le=>({...le,overlaps:T.lastLaneCount})),Qe(T.bins,T.lastLaneCount)});const $t=x.filter(m=>m>=0),Ot=Se.filter(m=>m>=0),rt=Math.max(10,Math.max(0,...$t)),it=Math.max(10,Math.max(0,...Ot)),xt=Math.max(1,...ee,...ce),mt=J.n>1?J.m2Obs/(J.n-1):0,st=J.n>1?J.m2Iso/(J.n-1):0,Dt=J.meanIso>0?J.meanObs/J.meanIso:0,gt=st>0?mt/st:0,at=J.meanObs>0?mt/J.meanObs:0,Je=J.meanIso>0?st/J.meanIso:0,lt=j.getLaneCount(),bt=lt>0&&a>0?lt*b/a:0,yt=v&&!$,qe=F!=="lightlane",Oe=F!=="poisson",At=Le.filter(m=>m.type==="theory"&&qe||m.type==="observed"&&Oe),Wt=F==="poisson"?"Shot Noise Distribution":F==="lightlane"?"Shot Noise + Lightlane":"Head to Head",Ge={background:"rgba(255,255,255,0.04)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px",fontFamily:ye},vt=e.jsxs("div",{style:{marginTop:$?"0":"12px",display:"grid",gridTemplateColumns:$?"1fr":"repeat(3, minmax(0, 1fr))",gap:$?"6px":"8px",fontSize:"10px",color:De,fontFamily:ye},children:[e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Samples"}),e.jsx("div",{style:{fontFamily:"monospace"},children:J.n})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Mean Ratio (Lightlane/Poisson)"}),e.jsx("div",{style:{fontFamily:"monospace",color:De},children:J.n>0?Dt.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Var Ratio (Lightlane/Poisson)"}),e.jsx("div",{style:{fontFamily:"monospace",color:gt>1.1?pe.light:xe.light},children:J.n>1?gt.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Fano Lightlane"}),e.jsx("div",{style:{fontFamily:"monospace",color:pe.light},children:J.n>1?at.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Fano Poisson"}),e.jsx("div",{style:{fontFamily:"monospace",color:xe.light},children:J.n>1?Je.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Fano Ratio (Lightlane/Poisson)"}),e.jsx("div",{style:{fontFamily:"monospace",color:Je>0&&at/Je>1.05?pe.light:De},children:J.n>1&&Je>0?(at/Je).toFixed(3):"n/a"})]})]}),St=e.jsxs("div",{style:{marginTop:$?"6px":"8px",display:$?"grid":"flex",gridTemplateColumns:$?"1fr":void 0,justifyContent:$?void 0:"center",gap:$?"4px":"12px",flexWrap:$?void 0:"wrap",fontSize:"10px",color:Fe,fontFamily:ye},children:[e.jsxs("span",{children:["LC(now): ",B.overlaps]}),e.jsxs("span",{children:["LC(bin avg): ",B.binOverlapsMean.toFixed(2)]}),e.jsxs("span",{children:["LC iso target: ",Number.isFinite(bt)?bt.toFixed(2):"n/a"]}),e.jsxs("span",{children:["E[Lightlane|bin]: ",B.currentExpectedLightlane.toFixed(2)]}),e.jsxs("span",{children:["Lightlane(last): ",typeof B.current=="number"?Number(B.current).toFixed(2):B.current]}),e.jsxs("span",{children:["Lanes: ",lt]}),e.jsxs("span",{children:["Mode: ",i==="randomSphere"?"Random Sphere":"Orbit"]}),e.jsxs("span",{children:["theta drift: ",p.toFixed(3)]}),e.jsxs("span",{children:["theta jitter: ",g.toFixed(3)]}),e.jsxs("span",{children:["phi jitter: ",y.toFixed(3)]})]});return e.jsxs(e.Fragment,{children:[!W&&e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"none"},children:e.jsx(Jn,{bars:At})}),e.jsxs(Ae,{fullscreen:!0,style:{pointerEvents:"none",display:"flex",flexDirection:"column",justifyContent:D?"center":"flex-start"},children:[e.jsxs("div",{style:{position:"absolute",top:"18px",left:"20px",right:"20px",color:De,fontSize:"12px",fontWeight:400,textAlign:"center",textTransform:"uppercase",letterSpacing:"0.16em",fontFamily:tt},children:[Wt,e.jsxs("span",{style:{fontSize:"10px",fontWeight:"normal",marginLeft:"10px",opacity:.8,fontFamily:ye,color:Yn},children:["(λ = ",b.toFixed(1),", σ = ",z.toFixed(1),")"]})]}),e.jsxs("div",{style:{width:"100%",padding:D?"20px":"60px 20px 20px 20px",background:D?"transparent":"linear-gradient(to bottom, rgba(0,0,0,0.9), transparent)",fontFamily:ye,alignSelf:"center"},children:[e.jsx("div",{style:{position:"absolute",left:"5px",top:D?"130px":"170px",transform:"rotate(-90deg)",transformOrigin:"left top",fontSize:"10px",color:Fe,fontStyle:"italic",whiteSpace:"nowrap",fontFamily:ye},children:"← Frequency (how many)"}),e.jsx("div",{style:{display:"flex",height:"100px",gap:"2px",alignItems:"flex-end",padding:"0 20px"},children:ee.map((m,M)=>{const T=ce[M],le=m/xt*100,se=T/xt*100;return e.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",position:"relative",height:"100%",justifyContent:"flex-end"},children:[e.jsxs("div",{style:{width:"100%",display:"flex",justifyContent:"center",gap:"1px",alignItems:"flex-end",height:"100%",position:"relative"},children:[qe&&e.jsx("div",{style:{width:Oe?"45%":"92%",height:`${se}%`,background:`linear-gradient(to top, ${xe.solid}, ${xe.dark})`,borderRadius:"2px 2px 0 0",minHeight:T>0?"2px":"0",transition:"height 0.3s ease",boxShadow:T>0?`0 0 5px ${xe.glow}`:"none",position:"relative"},children:T>0&&e.jsx("div",{style:{position:"absolute",top:"-16px",left:"50%",transform:"translateX(-50%)",fontSize:"9px",fontWeight:"bold",color:xe.solid,textShadow:"0 0 3px rgba(0,0,0,0.8)"},children:T})}),Oe&&e.jsx("div",{style:{width:qe?"45%":"92%",height:`${le}%`,background:`linear-gradient(to top, ${pe.solid}, ${pe.dark})`,borderRadius:"2px 2px 0 0",minHeight:m>0?"2px":"0",transition:"height 0.3s ease",boxShadow:m>0?`0 0 5px ${pe.glow}`:"none",position:"relative"},children:m>0&&e.jsx("div",{style:{position:"absolute",top:"-16px",left:"50%",transform:"translateX(-50%)",fontSize:"9px",fontWeight:"bold",color:pe.solid,textShadow:"0 0 3px rgba(0,0,0,0.8)"},children:m})})]}),e.jsx("div",{style:{position:"absolute",bottom:"-18px",fontSize:"9px",color:Fe,fontWeight:"bold",fontFamily:ye},children:me(M).toFixed(0)})]},M)})}),e.jsx("div",{style:{textAlign:"center",marginTop:"25px",fontSize:"10px",color:Fe,fontStyle:"italic",fontFamily:ye},children:"Photon Count Value →"}),e.jsxs("div",{style:{display:"flex",justifyContent:"center",gap:"20px",marginTop:"25px",fontSize:"10px"},children:[qe&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[e.jsx("div",{style:{width:"12px",height:"12px",background:xe.solid,borderRadius:"2px"}}),e.jsx("span",{style:{color:xe.solid},children:"Theory (Poisson)"})]}),Oe&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[e.jsx("div",{style:{width:"12px",height:"12px",background:pe.solid,borderRadius:"2px"}}),e.jsx("span",{style:{color:pe.solid},children:"Observed (Lightlanes)"})]})]}),yt&&vt,yt&&St]})]}),v&&$&&e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"none"},children:e.jsxs("div",{style:{position:"absolute",top:"88px",left:"12px",width:"min(300px, calc(100vw - 24px))",background:"linear-gradient(to bottom, rgba(0,0,0,0.88), rgba(0,0,0,0.55))",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",boxShadow:"0 8px 24px rgba(0,0,0,0.35)",fontFamily:ye},children:[e.jsx("div",{style:{color:De,fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.08em",marginBottom:"8px",fontWeight:400,fontFamily:tt},children:"Diagnostics"}),vt,St]})}),e.jsxs(Ae,{fullscreen:!0,style:{pointerEvents:"none",display:"flex",flexDirection:"column",justifyContent:"flex-end",paddingBottom:`${_}px`,boxSizing:"border-box"},children:[qe&&e.jsxs("div",{onPointerDown:m=>Ke(m,"theory"),onPointerMove:m=>et(m,"theory",Se,it),onPointerUp:f,onPointerLeave:f,style:{width:"100%",height:"100px",background:`linear-gradient(to top, ${xe.panel}, transparent)`,display:"flex",alignItems:"flex-end",padding:Oe?"0 20px 5px 20px":"0 20px 20px 20px",gap:"2px",position:"relative",borderBottom:Oe?"1px solid #555":"none",pointerEvents:"auto",touchAction:"none",cursor:"crosshair"},children:[e.jsx("div",{style:{position:"absolute",top:"10px",left:"20px",color:xe.solid,fontSize:"10px",fontWeight:400,pointerEvents:"none",fontFamily:tt,letterSpacing:"0.08em"},children:"THEORY (Poisson) - Swipe or click to count"}),Se.map((m,M)=>{const T=Be.has(M);return e.jsx("div",{className:m>=0&&!T?"clickable-bar":"",style:{flex:1,height:m>=0&&!T?`${m/it*100}%`:"0",background:m===0?"rgba(255,255,255,0.1)":xe.solid,color:xe.solid,minHeight:m>=0&&!T?"1px":"0",transition:"all 0.3s ease",opacity:T?0:.8,borderRadius:"2px 2px 0 0",transform:T?"scale(0)":"scale(1)",pointerEvents:"none"}},M)}),e.jsxs("div",{style:{position:"absolute",bottom:"10px",right:"80px",color:De,fontFamily:ye,fontSize:"10px",pointerEvents:"none"},children:["Max: ",it]})]}),Oe&&e.jsxs("div",{onPointerDown:m=>Ke(m,"observed"),onPointerMove:m=>et(m,"observed",x,rt),onPointerUp:f,onPointerLeave:f,style:{width:"100%",height:"100px",background:"linear-gradient(to top, rgba(0,0,0,0.8), transparent)",display:"flex",alignItems:"flex-end",padding:"0 20px 20px 20px",gap:"2px",position:"relative",pointerEvents:"auto",touchAction:"none",cursor:"crosshair"},children:[e.jsx("div",{style:{position:"absolute",top:"10px",left:"20px",color:pe.solid,fontSize:"10px",fontWeight:400,pointerEvents:"none",fontFamily:tt,letterSpacing:"0.08em"},children:"OBSERVED (Lightlanes) - Swipe or click to count"}),x.map((m,M)=>{const T=ae.has(M);return e.jsx("div",{className:m>=0&&!T?"clickable-bar":"",style:{flex:1,height:m>=0&&!T?`${m/rt*100}%`:"0",background:m===0?"rgba(255,255,255,0.1)":m>0?pe.solid:"transparent",color:pe.solid,minHeight:m>=0&&!T?"2px":"0",transition:"all 0.3s ease",borderTop:m>=0&&!T?`2px solid ${pe.light}`:"none",opacity:T?0:.8,position:"relative",borderRadius:"2px 2px 0 0",transform:T?"scale(0)":"scale(1)",pointerEvents:"none"},children:(M+1)%5===0&&!T&&e.jsx("div",{style:{position:"absolute",bottom:"-20px",left:"50%",transform:"translateX(-50%)",width:"1px",height:"5px",background:"#fff",opacity:.5,pointerEvents:"none"},children:e.jsx("span",{style:{position:"absolute",top:"5px",left:"-50%",fontSize:"10px",color:Fe,fontFamily:ye},children:M+1})})},M)}),e.jsxs("div",{style:{position:"absolute",bottom:"10px",right:"80px",color:De,fontFamily:ye,fontSize:"10px"},children:["Max: ",rt]})]})]})]})}const Zn={complexity:1,radius:2,distance:5,chandraDistance:6,showAxes:!1,lightlanes:!0,allSectors:!0,cumulative:!1,phi:0,theta:Math.PI/2,observationMode:"orbit",orbitSpeed:.2,thetaDrift:0,thetaJitter:0,phiJitter:0,speedup:1,K:1e3,usePoisson:!0,sceneView:"both",hideScenePresentation:!1,hideFlyingBars:!1,hideDataBoxes:!1};function eo(t){const n=t.host,o=t.devUi?.compactNumericDiagnostics??!1,r=t.devUi?.maxComplexity??20,s=t.devUi?.maxSpeedup??240,i=74,d=20,l=t.config?.params||{},{complexity:a,radius:u,distance:h,chandraDistance:p,showAxes:g,lightlanes:y,allSectors:I,cumulative:S,phi:L,theta:F,observationMode:_,orbitSpeed:v,thetaDrift:$,thetaJitter:A,phiJitter:D,speedup:W,K:B,usePoisson:C,sceneView:te,hideScenePresentation:j,hideFlyingBars:N,hideDataBoxes:H}={...Zn,...l},R=!H,E=c.useRef(0),x=c.useRef(0),[U,Se]=c.useState(!1),[G,b]=c.useState("scene"),[z,k]=c.useState(te),[w,K]=c.useState(a),[V,re]=c.useState(W),[ge,he]=c.useState(null),q=c.useRef(null);c.useEffect(()=>{k(te)},[te]),c.useEffect(()=>{K(a)},[a]),c.useEffect(()=>{re(W)},[W]);const X=V>20,O=z!=="lightlane",me=z!=="poisson",ee=G==="scene"&&z!=="poisson",fe=f=>f==="poisson"?"Poisson":f==="lightlane"?"Lightlane":"Both",ce=()=>{Ie(n,ke.hover,{page:G,sceneView:z})},Y=(f,P)=>{Ie(n,ke.click,{page:G,sceneView:z,target:f,...P})},ae=f=>{he(f),q.current&&clearTimeout(q.current),q.current=setTimeout(()=>{he(null),q.current=null},1500)},ie=f=>{const P=Array.from({length:d},(Z,ne)=>ne===0?1:ne===d-1?f:Math.round(1+(f-1)*ne/(d-1)));return Array.from(new Set(P)).sort((Z,ne)=>Z-ne)},Be=(f,P)=>{const Z=ie(P);return Z.find(ne=>f{const Z=ie(P);for(let ne=Z.length-1;ne>=0;ne-=1)if(f>Z[ne])return Z[ne];return Z[0]},Le=(f,P)=>{const Z=ie(P),ne=Z.findIndex(Ve=>f<=Ve);return ne>=0?ne:Z.length-1},Te=Le(w,r),Re=Le(V,s),$e=`${(Te+1)/d*100}%`,J=`${(Re+1)/d*100}%`,_e=ee&&w>ie(r)[0],be=ee&&wie(s)[0],Qe=V{if(!ee)return;const P=f==="up"?Be(w,r):Ce(w,r);P!==w&&(Y("complexity",{direction:f,value:P}),K(P),t.devUi?.onSetParam?.("complexity",P),ae(`Complexity ${P}`))},He=f=>{const P=f==="up"?Be(V,s):Ce(V,s);P!==V&&(Y("turbo",{direction:f,value:P}),re(P),t.devUi?.onSetParam?.("speedup",P),ae(`Turbo ${P}x`))},Ke=()=>{const f=["poisson","lightlane","both"],P=f.indexOf(z),Z=f[(P+1)%f.length];Y("mode",{value:Z}),k(Z),ae(`Mode ${fe(Z)}`)},et=()=>{Y("fano-page",{value:G==="scene"?"fano":"scene"}),b(f=>f==="scene"?"fano":"scene")};return c.useEffect(()=>{const f=P=>{if(P.code!=="Space"||P.repeat)return;const Z=P.target,ne=Z?.tagName;ne==="INPUT"||ne==="TEXTAREA"||Z?.isContentEditable||(P.preventDefault(),Se(Ve=>!Ve))};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[]),c.useEffect(()=>()=>{q.current&&clearTimeout(q.current)},[]),We((f,P)=>{U||G==="fano"||(E.current+=P*v*V,x.current+=P*V)}),c.useEffect(()=>{E.current=0,x.current=0},[w,u,h,p,L,F,_,v,$,A,D,V,B,I,S,C]),e.jsxs(e.Fragment,{children:[e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"none",zIndex:3e3},children:e.jsx("div",{style:{position:"absolute",top:12,right:12,display:"flex",gap:8,pointerEvents:"auto"},children:e.jsx("button",{type:"button",onClick:()=>{Y("advanced"),t.devUi?.onOpenHarness?.()},onPointerEnter:ce,style:{border:"1px solid var(--terminal-panel-border)",background:"rgba(7,19,11,0.86)",color:"var(--terminal-green-soft)",borderRadius:10,padding:"10px 12px",fontSize:12,fontWeight:400,letterSpacing:"0.08em",fontFamily:"var(--font-headline)",textTransform:"uppercase",cursor:"pointer",boxShadow:"0 8px 24px rgba(0,0,0,0.25)"},children:"Advanced"})})}),e.jsx("ambientLight",{intensity:.4}),e.jsx("directionalLight",{position:[10,10,5],intensity:1,castShadow:!0}),e.jsx("pointLight",{position:[-10,-10,-10],intensity:.5,color:"blue"}),G==="scene"?e.jsxs(e.Fragment,{children:[!j&&O&&e.jsx(Hn,{radius:p}),!j&&me&&e.jsx(yn,{complexity:w,lightlanes:y,radius:u,distance:h,allSectors:I,cumulative:S}),!j&&e.jsx(Vn,{radius:u,paused:U}),e.jsx(Un,{radius:p,theta:F,phi:L,orbitTime:E,simTime:x,thetaDrift:$,paused:U}),e.jsx(Xn,{complexity:w,radius:u,distance:h,theta:F,phi:L,observationMode:_,allSectors:I,cumulative:S,K:B,orbitRadius:p,orbitVelocity:v,thetaDrift:$,thetaJitter:A,phiJitter:D,usePoisson:C,speedup:V,paused:U,sceneView:z,bottomInset:i,showNumericDiagnostics:R,compactNumericDiagnostics:o,host:n,centerDistribution:j,hideFlyingBars:N||X}),U&&e.jsx("group",{position:[0,p+1.5,0],children:e.jsxs("mesh",{children:[e.jsx("sphereGeometry",{args:[.12,16,16]}),e.jsx("meshBasicMaterial",{color:"#ef4444",toneMapped:!1})]})}),g&&e.jsx("axesHelper",{args:[Math.max(5,w)]}),e.jsx(xn,{infiniteGrid:!0,fadeDistance:50,sectionColor:"#333",cellColor:"#111",position:[0,-.01,0]})]}):e.jsx(_n,{radius:u,distance:h,chandraDistance:p,allSectors:I,cumulative:S,theta:F,phi:L,orbitSpeed:v,thetaDrift:$,thetaJitter:A,phiJitter:D,K:B,speedup:V,usePoisson:C,bottomInset:i,onBack:()=>b("scene"),host:n}),e.jsxs(Ae,{fullscreen:!0,style:{pointerEvents:"none",zIndex:3200},children:[ge&&e.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%) skewX(-12deg)",padding:"16px 28px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",fontStyle:"italic",fontSize:42,letterSpacing:"0.16em",textTransform:"uppercase",textShadow:"0 0 20px rgba(125,255,155,0.38), 0 0 42px rgba(125,255,155,0.18)"},children:e.jsx("span",{style:{display:"inline-block",transform:"skewX(12deg)"},children:ge})}),e.jsx("div",{style:{position:"absolute",left:10,bottom:i+16,width:26,height:"min(44vh, 320px)",display:"flex",alignItems:"flex-end"},children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",borderRadius:14,border:"1px solid rgba(251,191,36,0.35)",background:"linear-gradient(to top, rgba(30,18,0,0.92), rgba(7,19,11,0.15))",boxShadow:"0 0 22px rgba(251,191,36,0.12)",overflow:"hidden",opacity:ee?1:.35,transition:"opacity 0.2s ease"},children:[e.jsx("div",{style:{position:"absolute",inset:"6px",borderRadius:10,border:"1px solid rgba(251,191,36,0.14)"}}),e.jsx("div",{style:{position:"absolute",left:5,right:5,bottom:5,height:$e,borderRadius:9,background:"linear-gradient(to top, rgba(245,158,11,0.96), rgba(253,224,71,0.96))",boxShadow:"0 0 18px rgba(251,191,36,0.5)",transition:"height 0.25s ease"}}),e.jsx("div",{style:{position:"absolute",inset:"8px 7px",display:"grid",gridTemplateRows:`repeat(${d}, 1fr)`,pointerEvents:"none"},children:Array.from({length:d}).map((f,P)=>e.jsx("div",{style:{borderTop:P===0?"none":"1px solid rgba(251,191,36,0.15)"}},`complexity-tick-${P}`))}),e.jsxs("div",{style:{position:"absolute",left:34,bottom:0,color:"#fcd34d",fontFamily:"var(--font-headline)",fontSize:10,letterSpacing:"0.08em",textTransform:"uppercase",writingMode:"vertical-rl",transform:"rotate(180deg)",textShadow:"0 0 12px rgba(251,191,36,0.25)"},children:["Complexity ",Te+1,"/",d]})]})}),e.jsx("div",{style:{position:"absolute",right:10,bottom:i+16,width:26,height:"min(44vh, 320px)",display:"flex",alignItems:"flex-end"},children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",borderRadius:14,border:"1px solid rgba(244,114,182,0.35)",background:"linear-gradient(to top, rgba(42,7,23,0.94), rgba(7,19,11,0.15))",boxShadow:"0 0 22px rgba(244,114,182,0.14)",overflow:"hidden"},children:[e.jsx("div",{style:{position:"absolute",inset:"6px",borderRadius:10,border:"1px solid rgba(244,114,182,0.14)"}}),e.jsx("div",{style:{position:"absolute",left:5,right:5,bottom:5,height:J,borderRadius:9,background:"linear-gradient(to top, rgba(236,72,153,0.96), rgba(244,114,182,0.98))",boxShadow:"0 0 18px rgba(244,114,182,0.5)",transition:"height 0.25s ease"}}),e.jsx("div",{style:{position:"absolute",inset:"8px 7px",display:"grid",gridTemplateRows:`repeat(${d}, 1fr)`,pointerEvents:"none"},children:Array.from({length:d}).map((f,P)=>e.jsx("div",{style:{borderTop:P===0?"none":"1px solid rgba(244,114,182,0.15)"}},`turbo-tick-${P}`))}),e.jsxs("div",{style:{position:"absolute",right:34,bottom:0,color:"#f9a8d4",fontFamily:"var(--font-headline)",fontSize:10,letterSpacing:"0.08em",textTransform:"uppercase",writingMode:"vertical-rl",textShadow:"0 0 12px rgba(244,114,182,0.25)"},children:["Turbo ",Re+1,"/",d]})]})}),e.jsx("div",{style:{position:"absolute",left:12,right:12,bottom:10,display:"grid",gridTemplateColumns:"repeat(4, minmax(0, 1fr))",gap:8,pointerEvents:"auto"},children:[{label:"Complexity",kind:"adjust",active:!1,disabled:!ee,accent:"rgba(245,158,11,0.2)",sublabel:`${w} • ${Te+1}/${d}`,meterColor:"linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))",meterSide:"left",meterFill:$e,onDecrease:()=>Ne("down"),onIncrease:()=>Ne("up"),canDecrease:_e,canIncrease:be},{label:"Mode",kind:"action",onClick:Ke,active:!1,accent:"rgba(59,130,246,0.18)",sublabel:fe(z)},{label:"Fano Sweep",kind:"action",onClick:et,active:G==="fano",accent:"rgba(59,130,246,0.22)",sublabel:G==="fano"?"Open":"Scene"},{label:"Turbo",kind:"adjust",active:!1,accent:"rgba(34,197,94,0.2)",sublabel:`${V}x • ${Re+1}/${d}`,meterColor:"linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))",meterSide:"right",meterFill:J,onDecrease:()=>He("down"),onIncrease:()=>He("up"),canDecrease:Ze,canIncrease:Qe}].map(f=>f.kind==="adjust"?e.jsxs("div",{style:{minHeight:54,border:"1px solid var(--terminal-panel-border)",background:f.active?f.accent:"rgba(7,19,11,0.86)",color:"var(--terminal-green-soft)",borderRadius:10,padding:"8px 10px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:6,boxShadow:f.active?"0 0 18px rgba(125,255,155,0.12)":"0 8px 24px rgba(0,0,0,0.25)",position:"relative",overflow:"hidden",opacity:f.disabled?.38:1},children:["meterColor"in f&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{position:"absolute",top:6,bottom:6,left:f.meterSide==="left"?6:void 0,right:f.meterSide==="right"?6:void 0,width:6,borderRadius:999,background:"rgba(255,255,255,0.07)",border:"1px solid rgba(255,255,255,0.08)"}}),e.jsx("div",{style:{position:"absolute",bottom:7,left:f.meterSide==="left"?7:void 0,right:f.meterSide==="right"?7:void 0,width:4,height:f.meterFill,borderRadius:999,background:f.meterColor,boxShadow:f.meterSide==="left"?"0 0 10px rgba(251,191,36,0.45)":"0 0 10px rgba(244,114,182,0.45)",transition:"height 0.25s ease"}})]}),e.jsx("span",{style:{fontFamily:"var(--font-headline)",fontSize:11,fontWeight:400,letterSpacing:"0.08em",textTransform:"uppercase",lineHeight:1.1},children:f.label}),e.jsx("span",{style:{fontFamily:"var(--font-ui)",fontSize:10,color:"var(--terminal-green)",letterSpacing:"0.08em",lineHeight:1},children:f.sublabel}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:6,width:"100%",marginTop:"auto"},children:[e.jsx("button",{type:"button",onClick:f.onDecrease,onPointerEnter:ce,disabled:f.disabled||!f.canDecrease,style:{border:"1px solid rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.04)",color:"var(--terminal-green-soft)",borderRadius:8,minHeight:24,cursor:f.disabled||!f.canDecrease?"not-allowed":"pointer",fontFamily:"var(--font-headline)",fontSize:12,letterSpacing:"0.08em",opacity:f.disabled||!f.canDecrease?.35:1,position:"relative",zIndex:1},children:"-"}),e.jsx("button",{type:"button",onClick:f.onIncrease,onPointerEnter:ce,disabled:f.disabled||!f.canIncrease,style:{border:"1px solid rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.04)",color:"var(--terminal-green-soft)",borderRadius:8,minHeight:24,cursor:f.disabled||!f.canIncrease?"not-allowed":"pointer",fontFamily:"var(--font-headline)",fontSize:12,letterSpacing:"0.08em",opacity:f.disabled||!f.canIncrease?.35:1,position:"relative",zIndex:1},children:"+"})]})]},f.label):e.jsxs("button",{type:"button",onClick:f.onClick,onPointerEnter:ce,disabled:"disabled"in f?f.disabled:!1,style:{minHeight:54,border:"1px solid var(--terminal-panel-border)",background:f.active?f.accent:"rgba(7,19,11,0.86)",color:"var(--terminal-green-soft)",borderRadius:10,padding:"8px 10px",cursor:"disabled"in f&&f.disabled?"not-allowed":"pointer",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,boxShadow:f.active?"0 0 18px rgba(125,255,155,0.12)":"0 8px 24px rgba(0,0,0,0.25)",position:"relative",overflow:"hidden",opacity:"disabled"in f&&f.disabled?.38:1},children:[e.jsx("span",{style:{fontFamily:"var(--font-headline)",fontSize:11,fontWeight:400,letterSpacing:"0.08em",textTransform:"uppercase",lineHeight:1.1},children:f.label}),e.jsx("span",{style:{fontFamily:"var(--font-ui)",fontSize:10,color:"var(--terminal-green)",letterSpacing:"0.08em",lineHeight:1},children:f.sublabel})]},f.label))})]}),e.jsx("color",{attach:"background",args:["#050505"]})]})}const to={name:"lightlane",displayName:"Lightlane Challenge",version:"1.1.0",paramSchema:{hideScenePresentation:{type:"boolean",label:"Hide Sphere + Lightlanes",default:!1},hideFlyingBars:{type:"boolean",label:"Hide Flying Bars",default:!1},hideDataBoxes:{type:"boolean",label:"Hide Data Boxes",default:!1},complexity:{type:"range",label:"Complexity",default:5,min:1,max:20,step:1},radius:{type:"range",label:"Distance to star",default:2,min:.1,max:5,step:.1},chandraDistance:{type:"range",label:"Chandra Camera Distance",default:6,min:5,max:30,step:.5},observationMode:{type:"select",label:"Observation Mode",default:"randomSphere",options:[{value:"orbit",label:"Orbit"},{value:"randomSphere",label:"Random Sphere"}]},sceneView:{type:"select",label:"Scene View",default:"both",options:[{value:"both",label:"Both"},{value:"poisson",label:"Poisson"},{value:"lightlane",label:"Lightlane"}]},orbitSpeed:{type:"range",label:"Orbit Speed",default:.2,min:0,max:2,step:.01},thetaDrift:{type:"range",label:"Theta Drift",default:0,min:-1,max:1,step:.01},thetaJitter:{type:"range",label:"Theta Jitter",default:0,min:0,max:.25,step:.005},phiJitter:{type:"range",label:"Phi Jitter",default:0,min:0,max:.5,step:.01},speedup:{type:"range",label:"Speedup",default:1,min:1,max:240,step:1}},defaultParams:{complexity:5,radius:2,orbitSpeed:.2,thetaDrift:0,thetaJitter:0,phiJitter:0,chandraDistance:6,observationMode:"randomSphere",sceneView:"both",speedup:1,distance:5,showAxes:!1,lightlanes:!0,allSectors:!0,cumulative:!1,phi:0,theta:Math.PI/2,K:1e3,usePoisson:!0,hideScenePresentation:!1,hideFlyingBars:!1,hideDataBoxes:!1}};export{eo as default,to as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-CDPygLjY.js b/dist/glitch/glitch_gallery/assets/index-CDPygLjY.js new file mode 100644 index 0000000..3431fff --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-CDPygLjY.js @@ -0,0 +1 @@ +import{j as a,G as r}from"./index-CEeZxcxj.js";function l({className:e}){return a.jsx("div",{className:e,children:a.jsx(r,{})})}const s={name:"gallery",displayName:"Glitch Gallery",version:"0.1.0",paramSchema:{},defaultParams:{}};export{l as default,s as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-CEeZxcxj.js b/dist/glitch/glitch_gallery/assets/index-CEeZxcxj.js new file mode 100644 index 0000000..3be31df --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-CEeZxcxj.js @@ -0,0 +1,4031 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-B1PtMIUq.js","assets/index-DOIp2aoq.css","assets/index-CMvlyyxu.js","assets/index-Bdi24PkQ.css","assets/index-CwQ-ysLn.js","assets/index-BoeEa7xH.css","assets/index-CRhmqMwz.js","assets/index-B7Erow2S.css","assets/index-BOUPxVBe.js","assets/index-WVFKiT6G.css","assets/index-DOdpM0HQ.js","assets/index-hWn6tbl7.css","assets/index-MgCr_Urj.js","assets/index-D0SeHWP2.css","assets/index-Be41ZfS7.js","assets/index-C2PFO5cD.css","assets/index-DnqmHVBx.js","assets/index-mpZwhQDb.css"])))=>i.map(i=>d[i]); +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const u of s)if(u.type==="childList")for(const f of u.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&n(f)}).observe(document,{childList:!0,subtree:!0});function t(s){const u={};return s.integrity&&(u.integrity=s.integrity),s.referrerPolicy&&(u.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?u.credentials="include":s.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function n(s){if(s.ep)return;s.ep=!0;const u=t(s);fetch(s.href,u)}})();function py(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var I_={exports:{}},Lp={};var jS;function $A(){if(jS)return Lp;jS=1;var r=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function t(n,s,u){var f=null;if(u!==void 0&&(f=""+u),s.key!==void 0&&(f=""+s.key),"key"in s){u={};for(var h in s)h!=="key"&&(u[h]=s[h])}else u=s;return s=u.ref,{$$typeof:r,type:n,key:f,ref:s!==void 0?s:null,props:u}}return Lp.Fragment=e,Lp.jsx=t,Lp.jsxs=t,Lp}var YS;function ew(){return YS||(YS=1,I_.exports=$A()),I_.exports}var he=ew(),O_={exports:{}},Up={},P_={exports:{}},z_={};var ZS;function tw(){return ZS||(ZS=1,(function(r){function e(Y,q){var ne=Y.length;Y.push(q);e:for(;0>>1,Ne=Y[be];if(0>>1;bes(Ae,ne))Fes(lt,Ae)?(Y[be]=lt,Y[Fe]=ne,be=Fe):(Y[be]=Ae,Y[oe]=ne,be=oe);else if(Fes(lt,ne))Y[be]=lt,Y[Fe]=ne,be=Fe;else break e}}return q}function s(Y,q){var ne=Y.sortIndex-q.sortIndex;return ne!==0?ne:Y.id-q.id}if(r.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;r.unstable_now=function(){return u.now()}}else{var f=Date,h=f.now();r.unstable_now=function(){return f.now()-h}}var m=[],g=[],_=1,x=null,b=3,M=!1,A=!1,R=!1,w=!1,E=typeof setTimeout=="function"?setTimeout:null,N=typeof clearTimeout=="function"?clearTimeout:null,D=typeof setImmediate<"u"?setImmediate:null;function U(Y){for(var q=t(g);q!==null;){if(q.callback===null)n(g);else if(q.startTime<=Y)n(g),q.sortIndex=q.expirationTime,e(m,q);else break;q=t(g)}}function B(Y){if(R=!1,U(Y),!A)if(t(m)!==null)A=!0,z||(z=!0,se());else{var q=t(g);q!==null&&pe(B,q.startTime-Y)}}var z=!1,H=-1,W=5,I=-1;function P(){return w?!0:!(r.unstable_now()-IY&&P());){var be=x.callback;if(typeof be=="function"){x.callback=null,b=x.priorityLevel;var Ne=be(x.expirationTime<=Y);if(Y=r.unstable_now(),typeof Ne=="function"){x.callback=Ne,U(Y),q=!0;break t}x===t(m)&&n(m),U(Y)}else n(m);x=t(m)}if(x!==null)q=!0;else{var X=t(g);X!==null&&pe(B,X.startTime-Y),q=!1}}break e}finally{x=null,b=ne,M=!1}q=void 0}}finally{q?se():z=!1}}}var se;if(typeof D=="function")se=function(){D(Z)};else if(typeof MessageChannel<"u"){var te=new MessageChannel,fe=te.port2;te.port1.onmessage=Z,se=function(){fe.postMessage(null)}}else se=function(){E(Z,0)};function pe(Y,q){H=E(function(){Y(r.unstable_now())},q)}r.unstable_IdlePriority=5,r.unstable_ImmediatePriority=1,r.unstable_LowPriority=4,r.unstable_NormalPriority=3,r.unstable_Profiling=null,r.unstable_UserBlockingPriority=2,r.unstable_cancelCallback=function(Y){Y.callback=null},r.unstable_forceFrameRate=function(Y){0>Y||125be?(Y.sortIndex=ne,e(g,Y),t(m)===null&&Y===t(g)&&(R?(N(H),H=-1):R=!0,pe(B,ne-be))):(Y.sortIndex=Ne,e(m,Y),A||M||(A=!0,z||(z=!0,se()))),Y},r.unstable_shouldYield=P,r.unstable_wrapCallback=function(Y){var q=b;return function(){var ne=b;b=q;try{return Y.apply(this,arguments)}finally{b=ne}}}})(z_)),z_}var QS;function nE(){return QS||(QS=1,P_.exports=tw()),P_.exports}var B_={exports:{}},Qt={};var KS;function nw(){if(KS)return Qt;KS=1;var r=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),f=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),g=Symbol.for("react.memo"),_=Symbol.for("react.lazy"),x=Symbol.for("react.activity"),b=Symbol.iterator;function M(X){return X===null||typeof X!="object"?null:(X=b&&X[b]||X["@@iterator"],typeof X=="function"?X:null)}var A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},R=Object.assign,w={};function E(X,oe,Ae){this.props=X,this.context=oe,this.refs=w,this.updater=Ae||A}E.prototype.isReactComponent={},E.prototype.setState=function(X,oe){if(typeof X!="object"&&typeof X!="function"&&X!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,X,oe,"setState")},E.prototype.forceUpdate=function(X){this.updater.enqueueForceUpdate(this,X,"forceUpdate")};function N(){}N.prototype=E.prototype;function D(X,oe,Ae){this.props=X,this.context=oe,this.refs=w,this.updater=Ae||A}var U=D.prototype=new N;U.constructor=D,R(U,E.prototype),U.isPureReactComponent=!0;var B=Array.isArray;function z(){}var H={H:null,A:null,T:null,S:null},W=Object.prototype.hasOwnProperty;function I(X,oe,Ae){var Fe=Ae.ref;return{$$typeof:r,type:X,key:oe,ref:Fe!==void 0?Fe:null,props:Ae}}function P(X,oe){return I(X.type,oe,X.props)}function Z(X){return typeof X=="object"&&X!==null&&X.$$typeof===r}function se(X){var oe={"=":"=0",":":"=2"};return"$"+X.replace(/[=:]/g,function(Ae){return oe[Ae]})}var te=/\/+/g;function fe(X,oe){return typeof X=="object"&&X!==null&&X.key!=null?se(""+X.key):oe.toString(36)}function pe(X){switch(X.status){case"fulfilled":return X.value;case"rejected":throw X.reason;default:switch(typeof X.status=="string"?X.then(z,z):(X.status="pending",X.then(function(oe){X.status==="pending"&&(X.status="fulfilled",X.value=oe)},function(oe){X.status==="pending"&&(X.status="rejected",X.reason=oe)})),X.status){case"fulfilled":return X.value;case"rejected":throw X.reason}}throw X}function Y(X,oe,Ae,Fe,lt){var de=typeof X;(de==="undefined"||de==="boolean")&&(X=null);var Re=!1;if(X===null)Re=!0;else switch(de){case"bigint":case"string":case"number":Re=!0;break;case"object":switch(X.$$typeof){case r:case e:Re=!0;break;case _:return Re=X._init,Y(Re(X._payload),oe,Ae,Fe,lt)}}if(Re)return lt=lt(X),Re=Fe===""?"."+fe(X,0):Fe,B(lt)?(Ae="",Re!=null&&(Ae=Re.replace(te,"$&/")+"/"),Y(lt,oe,Ae,"",function(ht){return ht})):lt!=null&&(Z(lt)&&(lt=P(lt,Ae+(lt.key==null||X&&X.key===lt.key?"":(""+lt.key).replace(te,"$&/")+"/")+Re)),oe.push(lt)),1;Re=0;var tt=Fe===""?".":Fe+":";if(B(X))for(var st=0;st"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(e){console.error(e)}}return r(),F_.exports=iw(),F_.exports}var tM;function sw(){if(tM)return Up;tM=1;var r=nE(),e=Tm(),t=aw();function n(i){var a="https://react.dev/errors/"+i;if(1Ne||(i.current=be[Ne],be[Ne]=null,Ne--)}function Ae(i,a){Ne++,be[Ne]=i.current,i.current=a}var Fe=X(null),lt=X(null),de=X(null),Re=X(null);function tt(i,a){switch(Ae(de,a),Ae(lt,i),Ae(Fe,null),a.nodeType){case 9:case 11:i=(i=a.documentElement)&&(i=i.namespaceURI)?gS(i):0;break;default:if(i=a.tagName,a=a.namespaceURI)a=gS(a),i=vS(a,i);else switch(i){case"svg":i=1;break;case"math":i=2;break;default:i=0}}oe(Fe),Ae(Fe,i)}function st(){oe(Fe),oe(lt),oe(de)}function ht(i){i.memoizedState!==null&&Ae(Re,i);var a=Fe.current,c=vS(a,i.type);a!==c&&(Ae(lt,i),Ae(Fe,c))}function jt(i){lt.current===i&&(oe(Fe),oe(lt)),Re.current===i&&(oe(Re),Cp._currentValue=ne)}var tn,Nt;function Le(i){if(tn===void 0)try{throw Error()}catch(c){var a=c.stack.trim().match(/\n( *(at )?)/);tn=a&&a[1]||"",Nt=-1)":-1y||$[d]!==ve[y]){var De=` +`+$[d].replace(" at new "," at ");return i.displayName&&De.includes("")&&(De=De.replace("",i.displayName)),De}while(1<=d&&0<=y);break}}}finally{He=!1,Error.prepareStackTrace=c}return(c=i?i.displayName||i.name:"")?Le(c):""}function nt(i,a){switch(i.tag){case 26:case 27:case 5:return Le(i.type);case 16:return Le("Lazy");case 13:return i.child!==a&&a!==null?Le("Suspense Fallback"):Le("Suspense");case 19:return Le("SuspenseList");case 0:case 15:return Oe(i.type,!1);case 11:return Oe(i.type.render,!1);case 1:return Oe(i.type,!0);case 31:return Le("Activity");default:return""}}function Q(i){try{var a="",c=null;do a+=nt(i,c),c=i,i=i.return;while(i);return a}catch(d){return` +Error generating stack: `+d.message+` +`+d.stack}}var Et=Object.prototype.hasOwnProperty,ot=r.unstable_scheduleCallback,Tt=r.unstable_cancelCallback,Qe=r.unstable_shouldYield,G=r.unstable_requestPaint,O=r.unstable_now,ae=r.unstable_getCurrentPriorityLevel,Te=r.unstable_ImmediatePriority,Ie=r.unstable_UserBlockingPriority,Ee=r.unstable_NormalPriority,dt=r.unstable_LowPriority,Ke=r.unstable_IdlePriority,vt=r.log,Dt=r.unstable_setDisableYieldValue,Ve=null,Ze=null;function ct(i){if(typeof vt=="function"&&Dt(i),Ze&&typeof Ze.setStrictMode=="function")try{Ze.setStrictMode(Ve,i)}catch{}}var K=Math.clz32?Math.clz32:J,me=Math.log,et=Math.LN2;function J(i){return i>>>=0,i===0?32:31-(me(i)/et|0)|0}var je=256,Ge=262144,at=4194304;function Xe(i){var a=i&42;if(a!==0)return a;switch(i&-i){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return i&261888;case 262144:case 524288:case 1048576:case 2097152:return i&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return i&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return i}}function Ue(i,a,c){var d=i.pendingLanes;if(d===0)return 0;var y=0,S=i.suspendedLanes,L=i.pingedLanes;i=i.warmLanes;var V=d&134217727;return V!==0?(d=V&~S,d!==0?y=Xe(d):(L&=V,L!==0?y=Xe(L):c||(c=V&~i,c!==0&&(y=Xe(c))))):(V=d&~S,V!==0?y=Xe(V):L!==0?y=Xe(L):c||(c=d&~i,c!==0&&(y=Xe(c)))),y===0?0:a!==0&&a!==y&&(a&S)===0&&(S=y&-y,c=a&-a,S>=c||S===32&&(c&4194048)!==0)?a:y}function Ye(i,a){return(i.pendingLanes&~(i.suspendedLanes&~i.pingedLanes)&a)===0}function Ct(i,a){switch(i){case 1:case 2:case 4:case 8:case 64:return a+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Jt(){var i=at;return at<<=1,(at&62914560)===0&&(at=4194304),i}function nn(i){for(var a=[],c=0;31>c;c++)a.push(i);return a}function Jn(i,a){i.pendingLanes|=a,a!==268435456&&(i.suspendedLanes=0,i.pingedLanes=0,i.warmLanes=0)}function Ci(i,a,c,d,y,S){var L=i.pendingLanes;i.pendingLanes=c,i.suspendedLanes=0,i.pingedLanes=0,i.warmLanes=0,i.expiredLanes&=c,i.entangledLanes&=c,i.errorRecoveryDisabledLanes&=c,i.shellSuspendCounter=0;var V=i.entanglements,$=i.expirationTimes,ve=i.hiddenUpdates;for(c=L&~c;0"u")return null;try{return i.activeElement||i.body}catch{return i.body}}var _n=/[\n"\\]/g;function Ft(i){return i.replace(_n,function(a){return"\\"+a.charCodeAt(0).toString(16)+" "})}function xi(i,a,c,d,y,S,L,V){i.name="",L!=null&&typeof L!="function"&&typeof L!="symbol"&&typeof L!="boolean"?i.type=L:i.removeAttribute("type"),a!=null?L==="number"?(a===0&&i.value===""||i.value!=a)&&(i.value=""+Pt(a)):i.value!==""+Pt(a)&&(i.value=""+Pt(a)):L!=="submit"&&L!=="reset"||i.removeAttribute("value"),a!=null?Wn(i,L,Pt(a)):c!=null?Wn(i,L,Pt(c)):d!=null&&i.removeAttribute("value"),y==null&&S!=null&&(i.defaultChecked=!!S),y!=null&&(i.checked=y&&typeof y!="function"&&typeof y!="symbol"),V!=null&&typeof V!="function"&&typeof V!="symbol"&&typeof V!="boolean"?i.name=""+Pt(V):i.removeAttribute("name")}function Ls(i,a,c,d,y,S,L,V){if(S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"&&(i.type=S),a!=null||c!=null){if(!(S!=="submit"&&S!=="reset"||a!=null)){In(i);return}c=c!=null?""+Pt(c):"",a=a!=null?""+Pt(a):c,V||a===i.value||(i.value=a),i.defaultValue=a}d=d??y,d=typeof d!="function"&&typeof d!="symbol"&&!!d,i.checked=V?i.checked:!!d,i.defaultChecked=!!d,L!=null&&typeof L!="function"&&typeof L!="symbol"&&typeof L!="boolean"&&(i.name=L),In(i)}function Wn(i,a,c){a==="number"&&ut(i.ownerDocument)===i||i.defaultValue===""+c||(i.defaultValue=""+c)}function la(i,a,c,d){if(i=i.options,a){a={};for(var y=0;y"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),fd=!1;if(Ws)try{var Ol={};Object.defineProperty(Ol,"passive",{get:function(){fd=!0}}),window.addEventListener("test",Ol,Ol),window.removeEventListener("test",Ol,Ol)}catch{fd=!1}var Ga=null,pf=null,jo=null;function Wu(){if(jo)return jo;var i,a=pf,c=a.length,d,y="value"in Ga?Ga.value:Ga.textContent,S=y.length;for(i=0;i=kl),Jm=" ",Qu=!1;function Sf(i,a){switch(i){case"keyup":return Km.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function yd(i){return i=i.detail,typeof i=="object"&&"data"in i?i.data:null}var Qo=!1;function $m(i,a){switch(i){case"compositionend":return yd(a);case"keypress":return a.which!==32?null:(Qu=!0,Jm);case"textInput":return i=a.data,i===Jm&&Qu?null:i;default:return null}}function _d(i,a){if(Qo)return i==="compositionend"||!Zo&&Sf(i,a)?(i=Wu(),jo=pf=Ga=null,Qo=!1,i):null;switch(i){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1=a)return{node:c,offset:a-i};i=d}e:{for(;c;){if(c.nextSibling){c=c.nextSibling;break e}c=c.parentNode}c=void 0}c=$u(c)}}function Fn(i,a){return i&&a?i===a?!0:i&&i.nodeType===3?!1:a&&a.nodeType===3?Fn(i,a.parentNode):"contains"in i?i.contains(a):i.compareDocumentPosition?!!(i.compareDocumentPosition(a)&16):!1:!1}function ag(i){i=i!=null&&i.ownerDocument!=null&&i.ownerDocument.defaultView!=null?i.ownerDocument.defaultView:window;for(var a=ut(i.document);a instanceof i.HTMLIFrameElement;){try{var c=typeof a.contentWindow.location.href=="string"}catch{c=!1}if(c)i=a.contentWindow;else break;a=ut(i.document)}return a}function wd(i){var a=i&&i.nodeName&&i.nodeName.toLowerCase();return a&&(a==="input"&&(i.type==="text"||i.type==="search"||i.type==="tel"||i.type==="url"||i.type==="password")||a==="textarea"||i.contentEditable==="true")}var sg=Ws&&"documentMode"in document&&11>=document.documentMode,js=null,Ys=null,Xl=null,Ef=!1;function Wl(i,a,c){var d=c.window===c?c.document:c.nodeType===9?c:c.ownerDocument;Ef||js==null||js!==ut(d)||(d=js,"selectionStart"in d&&wd(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Xl&&Hl(Xl,d)||(Xl=d,d=a0(Ys,"onSelect"),0>=L,y-=L,ti=1<<32-K(a)+y|c<ln?(bn=At,At=null):bn=At.sibling;var Nn=xe(le,At,ge[ln],Pe);if(Nn===null){At===null&&(At=bn);break}i&&At&&Nn.alternate===null&&a(le,At),ie=S(Nn,ie,ln),Rn===null?It=Nn:Rn.sibling=Nn,Rn=Nn,At=bn}if(ln===ge.length)return c(le,At),mn&&Qs(le,ln),It;if(At===null){for(;lnln?(bn=At,At=null):bn=At.sibling;var Su=xe(le,At,Nn.value,Pe);if(Su===null){At===null&&(At=bn);break}i&&At&&Su.alternate===null&&a(le,At),ie=S(Su,ie,ln),Rn===null?It=Su:Rn.sibling=Su,Rn=Su,At=bn}if(Nn.done)return c(le,At),mn&&Qs(le,ln),It;if(At===null){for(;!Nn.done;ln++,Nn=ge.next())Nn=Be(le,Nn.value,Pe),Nn!==null&&(ie=S(Nn,ie,ln),Rn===null?It=Nn:Rn.sibling=Nn,Rn=Nn);return mn&&Qs(le,ln),It}for(At=d(At);!Nn.done;ln++,Nn=ge.next())Nn=Ce(At,le,ln,Nn.value,Pe),Nn!==null&&(i&&Nn.alternate!==null&&At.delete(Nn.key===null?ln:Nn.key),ie=S(Nn,ie,ln),Rn===null?It=Nn:Rn.sibling=Nn,Rn=Nn);return i&&At.forEach(function(JA){return a(le,JA)}),mn&&Qs(le,ln),It}function Gn(le,ie,ge,Pe){if(typeof ge=="object"&&ge!==null&&ge.type===R&&ge.key===null&&(ge=ge.props.children),typeof ge=="object"&&ge!==null){switch(ge.$$typeof){case M:e:{for(var It=ge.key;ie!==null;){if(ie.key===It){if(It=ge.type,It===R){if(ie.tag===7){c(le,ie.sibling),Pe=y(ie,ge.props.children),Pe.return=le,le=Pe;break e}}else if(ie.elementType===It||typeof It=="object"&&It!==null&&It.$$typeof===W&&tl(It)===ie.type){c(le,ie.sibling),Pe=y(ie,ge.props),ds(Pe,ge),Pe.return=le,le=Pe;break e}c(le,ie);break}else a(le,ie);ie=ie.sibling}ge.type===R?(Pe=ro(ge.props.children,le.mode,Pe,ge.key),Pe.return=le,le=Pe):(Pe=Zs(ge.type,ge.key,ge.props,null,le.mode,Pe),ds(Pe,ge),Pe.return=le,le=Pe)}return L(le);case A:e:{for(It=ge.key;ie!==null;){if(ie.key===It)if(ie.tag===4&&ie.stateNode.containerInfo===ge.containerInfo&&ie.stateNode.implementation===ge.implementation){c(le,ie.sibling),Pe=y(ie,ge.children||[]),Pe.return=le,le=Pe;break e}else{c(le,ie);break}else a(le,ie);ie=ie.sibling}Pe=Rf(ge,le.mode,Pe),Pe.return=le,le=Pe}return L(le);case W:return ge=tl(ge),Gn(le,ie,ge,Pe)}if(pe(ge))return Mt(le,ie,ge,Pe);if(se(ge)){if(It=se(ge),typeof It!="function")throw Error(n(150));return ge=It.call(ge),kt(le,ie,ge,Pe)}if(typeof ge.then=="function")return Gn(le,ie,uc(ge),Pe);if(ge.$$typeof===D)return Gn(le,ie,$l(le,ge),Pe);eu(le,ge)}return typeof ge=="string"&&ge!==""||typeof ge=="number"||typeof ge=="bigint"?(ge=""+ge,ie!==null&&ie.tag===6?(c(le,ie.sibling),Pe=y(ie,ge),Pe.return=le,le=Pe):(c(le,ie),Pe=Cf(ge,le.mode,Pe),Pe.return=le,le=Pe),L(le)):c(le,ie)}return function(le,ie,ge,Pe){try{sl=0;var It=Gn(le,ie,ge,Pe);return al=null,It}catch(At){if(At===el||At===an)throw At;var Rn=ei(29,At,null,le.mode);return Rn.lanes=Pe,Rn.return=le,Rn}}}var Dr=Ff(!0),kf=Ff(!1),ha=!1;function cc(i){i.updateQueue={baseState:i.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function zd(i,a){i=i.updateQueue,a.updateQueue===i&&(a.updateQueue={baseState:i.baseState,firstBaseUpdate:i.firstBaseUpdate,lastBaseUpdate:i.lastBaseUpdate,shared:i.shared,callbacks:null})}function Lr(i){return{lane:i,tag:0,payload:null,callback:null,next:null}}function po(i,a,c){var d=i.updateQueue;if(d===null)return null;if(d=d.shared,(wt&2)!==0){var y=d.pending;return y===null?a.next=a:(a.next=y.next,y.next=a),d.pending=a,a=fs(i),ao(i,null,c),a}return Hi(i,d,a,c),fs(i)}function mo(i,a,c){if(a=a.updateQueue,a!==null&&(a=a.shared,(c&4194048)!==0)){var d=a.lanes;d&=i.pendingLanes,c|=d,a.lanes=c,Kr(i,c)}}function Ut(i,a){var c=i.updateQueue,d=i.alternate;if(d!==null&&(d=d.updateQueue,c===d)){var y=null,S=null;if(c=c.firstBaseUpdate,c!==null){do{var L={lane:c.lane,tag:c.tag,payload:c.payload,callback:null,next:null};S===null?y=S=L:S=S.next=L,c=c.next}while(c!==null);S===null?y=S=a:S=S.next=a}else y=S=a;c={baseState:d.baseState,firstBaseUpdate:y,lastBaseUpdate:S,shared:d.shared,callbacks:d.callbacks},i.updateQueue=c;return}i=c.lastBaseUpdate,i===null?c.firstBaseUpdate=a:i.next=a,c.lastBaseUpdate=a}var Bd=!1;function fc(){if(Bd){var i=hs;if(i!==null)throw i}}function tu(i,a,c,d){Bd=!1;var y=i.updateQueue;ha=!1;var S=y.firstBaseUpdate,L=y.lastBaseUpdate,V=y.shared.pending;if(V!==null){y.shared.pending=null;var $=V,ve=$.next;$.next=null,L===null?S=ve:L.next=ve,L=$;var De=i.alternate;De!==null&&(De=De.updateQueue,V=De.lastBaseUpdate,V!==L&&(V===null?De.firstBaseUpdate=ve:V.next=ve,De.lastBaseUpdate=$))}if(S!==null){var Be=y.baseState;L=0,De=ve=$=null,V=S;do{var xe=V.lane&-536870913,Ce=xe!==V.lane;if(Ce?($t&xe)===xe:(d&xe)===xe){xe!==0&&xe===Nr&&(Bd=!0),De!==null&&(De=De.next={lane:0,tag:V.tag,payload:V.payload,callback:null,next:null});e:{var Mt=i,kt=V;xe=a;var Gn=c;switch(kt.tag){case 1:if(Mt=kt.payload,typeof Mt=="function"){Be=Mt.call(Gn,Be,xe);break e}Be=Mt;break e;case 3:Mt.flags=Mt.flags&-65537|128;case 0:if(Mt=kt.payload,xe=typeof Mt=="function"?Mt.call(Gn,Be,xe):Mt,xe==null)break e;Be=x({},Be,xe);break e;case 2:ha=!0}}xe=V.callback,xe!==null&&(i.flags|=64,Ce&&(i.flags|=8192),Ce=y.callbacks,Ce===null?y.callbacks=[xe]:Ce.push(xe))}else Ce={lane:xe,tag:V.tag,payload:V.payload,callback:V.callback,next:null},De===null?(ve=De=Ce,$=Be):De=De.next=Ce,L|=xe;if(V=V.next,V===null){if(V=y.shared.pending,V===null)break;Ce=V,V=Ce.next,Ce.next=null,y.lastBaseUpdate=Ce,y.shared.pending=null}}while(!0);De===null&&($=Be),y.baseState=$,y.firstBaseUpdate=ve,y.lastBaseUpdate=De,S===null&&(y.shared.lanes=0),cr|=L,i.lanes=L,i.memoizedState=Be}}function nu(i,a){if(typeof i!="function")throw Error(n(191,i));i.call(a)}function pg(i,a){var c=i.callbacks;if(c!==null)for(i.callbacks=null,i=0;iS?S:8;var L=Y.T,V={};Y.T=V,op(i,!1,a,c);try{var $=y(),ve=Y.S;if(ve!==null&&ve(V,$),$!==null&&typeof $=="object"&&typeof $.then=="function"){var De=Od($,d);mc(i,a,De,Ja(i))}else mc(i,a,d,Ja(i))}catch(Be){mc(i,a,{then:function(){},status:"rejected",reason:Be},Ja())}finally{q.p=S,L!==null&&V.types!==null&&(L.types=V.types),Y.T=L}}function o_(){}function sp(i,a,c,d){if(i.tag!==5)throw Error(n(476));var y=Vg(i).queue;kg(i,y,a,ne,c===null?o_:function(){return Hg(i),c(d)})}function Vg(i){var a=i.memoizedState;if(a!==null)return a;a={memoizedState:ne,baseState:ne,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ir,lastRenderedState:ne},next:null};var c={};return a.next={memoizedState:c,baseState:c,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ir,lastRenderedState:c},next:null},i.memoizedState=a,i=i.alternate,i!==null&&(i.memoizedState=a),a}function Hg(i){var a=Vg(i);a.next===null&&(a=i.alternate.memoizedState),mc(i,a.next.queue,{},Ja())}function rp(){return Vt(Cp)}function Gg(){return di().memoizedState}function Xg(){return di().memoizedState}function l_(i){for(var a=i.return;a!==null;){switch(a.tag){case 24:case 3:var c=Ja();i=Lr(c);var d=po(a,i,c);d!==null&&(rn(d,a,c),mo(d,a,c)),a={cache:Ld()},i.payload=a;return}a=a.return}}function u_(i,a,c){var d=Ja();c={lane:d,revertLane:0,gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Zf(i)?qg(a,c):(c=Af(i,a,c,d),c!==null&&(rn(c,i,d),jg(c,a,d)))}function Wg(i,a,c){var d=Ja();mc(i,a,c,d)}function mc(i,a,c,d){var y={lane:d,revertLane:0,gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null};if(Zf(i))qg(a,y);else{var S=i.alternate;if(i.lanes===0&&(S===null||S.lanes===0)&&(S=a.lastRenderedReducer,S!==null))try{var L=a.lastRenderedState,V=S(L,c);if(y.hasEagerState=!0,y.eagerState=V,ca(V,L))return Hi(i,a,y,0),Gt===null&&ac(),!1}catch{}if(c=Af(i,a,y,d),c!==null)return rn(c,i,d),jg(c,a,d),!0}return!1}function op(i,a,c,d){if(d={lane:2,revertLane:Me(),gesture:null,action:d,hasEagerState:!1,eagerState:null,next:null},Zf(i)){if(a)throw Error(n(479))}else a=Af(i,c,d,2),a!==null&&rn(a,i,2)}function Zf(i){var a=i.alternate;return i===Yt||a!==null&&a===Yt}function qg(i,a){au=ps=!0;var c=i.pending;c===null?a.next=a:(a.next=c.next,c.next=a),i.pending=a}function jg(i,a,c){if((c&4194048)!==0){var d=a.lanes;d&=i.pendingLanes,c|=d,a.lanes=c,Kr(i,c)}}var ru={readContext:Vt,use:go,useCallback:ni,useContext:ni,useEffect:ni,useImperativeHandle:ni,useLayoutEffect:ni,useInsertionEffect:ni,useMemo:ni,useReducer:ni,useRef:ni,useState:ni,useDebugValue:ni,useDeferredValue:ni,useTransition:ni,useSyncExternalStore:ni,useId:ni,useHostTransitionStatus:ni,useFormState:ni,useActionState:ni,useOptimistic:ni,useMemoCache:ni,useCacheRefresh:ni};ru.useEffectEvent=ni;var Yg={readContext:Vt,use:go,useCallback:function(i,a){return Di().memoizedState=[i,a===void 0?null:a],i},useContext:Vt,useEffect:Ng,useImperativeHandle:function(i,a,c){c=c!=null?c.concat([i]):null,jf(4194308,4,Og.bind(null,a,i),c)},useLayoutEffect:function(i,a){return jf(4194308,4,i,a)},useInsertionEffect:function(i,a){jf(4,2,i,a)},useMemo:function(i,a){var c=Di();a=a===void 0?null:a;var d=i();if(rl){ct(!0);try{i()}finally{ct(!1)}}return c.memoizedState=[d,a],d},useReducer:function(i,a,c){var d=Di();if(c!==void 0){var y=c(a);if(rl){ct(!0);try{c(a)}finally{ct(!1)}}}else y=a;return d.memoizedState=d.baseState=y,i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:i,lastRenderedState:y},d.queue=i,i=i.dispatch=u_.bind(null,Yt,i),[d.memoizedState,i]},useRef:function(i){var a=Di();return i={current:i},a.memoizedState=i},useState:function(i){i=Zd(i);var a=i.queue,c=Wg.bind(null,Yt,a);return a.dispatch=c,[i.memoizedState,c]},useDebugValue:ip,useDeferredValue:function(i,a){var c=Di();return ap(c,i,a)},useTransition:function(){var i=Zd(!1);return i=kg.bind(null,Yt,i.queue,!0,!1),Di().memoizedState=i,[!1,i]},useSyncExternalStore:function(i,a,c){var d=Yt,y=Di();if(mn){if(c===void 0)throw Error(n(407));c=c()}else{if(c=a(),Gt===null)throw Error(n(349));($t&127)!==0||_g(d,a,c)}y.memoizedState=c;var S={value:c,getSnapshot:a};return y.queue=S,Ng(bg.bind(null,d,S,i),[i]),d.flags|=2048,vo(9,{destroy:void 0},xg.bind(null,d,S,c,a),null),c},useId:function(){var i=Di(),a=Gt.identifierPrefix;if(mn){var c=Us,d=ti;c=(d&~(1<<32-K(d)-1)).toString(32)+c,a="_"+a+"R_"+c,c=Hf++,0<\/script>",S=S.removeChild(S.firstChild);break;case"select":S=typeof d.is=="string"?L.createElement("select",{is:d.is}):L.createElement("select"),d.multiple?S.multiple=!0:d.size&&(S.size=d.size);break;default:S=typeof d.is=="string"?L.createElement(y,{is:d.is}):L.createElement(y)}}S[$n]=a,S[Ri]=d;e:for(L=a.child;L!==null;){if(L.tag===5||L.tag===6)S.appendChild(L.stateNode);else if(L.tag!==4&&L.tag!==27&&L.child!==null){L.child.return=L,L=L.child;continue}if(L===a)break e;for(;L.sibling===null;){if(L.return===null||L.return===a)break e;L=L.return}L.sibling.return=L.return,L=L.sibling}a.stateNode=S;e:switch(ya(S,y,d),y){case"button":case"input":case"select":case"textarea":d=!!d.autoFocus;break e;case"img":d=!0;break e;default:d=!1}d&&sr(a)}}return Pn(a),_c(a,a.type,i===null?null:i.memoizedProps,a.pendingProps,c),null;case 6:if(i&&a.stateNode!=null)i.memoizedProps!==d&&sr(a);else{if(typeof d!="string"&&a.stateNode===null)throw Error(n(166));if(i=de.current,Kl(a)){if(i=a.stateNode,c=a.memoizedProps,d=null,y=li,y!==null)switch(y.tag){case 27:case 5:d=y.memoizedProps}i[$n]=a,i=!!(i.nodeValue===c||d!==null&&d.suppressHydrationWarning===!0||pS(i.nodeValue,c)),i||Js(a,!0)}else i=s0(i).createTextNode(d),i[$n]=a,a.stateNode=i}return Pn(a),null;case 31:if(c=a.memoizedState,i===null||i.memoizedState!==null){if(d=Kl(a),c!==null){if(i===null){if(!d)throw Error(n(318));if(i=a.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(n(557));i[$n]=a}else uo(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;Pn(a),i=!1}else c=Lf(),i!==null&&i.memoizedState!==null&&(i.memoizedState.hydrationErrors=c),i=!0;if(!i)return a.flags&256?(hi(a),a):(hi(a),null);if((a.flags&128)!==0)throw Error(n(558))}return Pn(a),null;case 13:if(d=a.memoizedState,i===null||i.memoizedState!==null&&i.memoizedState.dehydrated!==null){if(y=Kl(a),d!==null&&d.dehydrated!==null){if(i===null){if(!y)throw Error(n(318));if(y=a.memoizedState,y=y!==null?y.dehydrated:null,!y)throw Error(n(317));y[$n]=a}else uo(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;Pn(a),y=!1}else y=Lf(),i!==null&&i.memoizedState!==null&&(i.memoizedState.hydrationErrors=y),y=!0;if(!y)return a.flags&256?(hi(a),a):(hi(a),null)}return hi(a),(a.flags&128)!==0?(a.lanes=c,a):(c=d!==null,i=i!==null&&i.memoizedState!==null,c&&(d=a.child,y=null,d.alternate!==null&&d.alternate.memoizedState!==null&&d.alternate.memoizedState.cachePool!==null&&(y=d.alternate.memoizedState.cachePool.pool),S=null,d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(S=d.memoizedState.cachePool.pool),S!==y&&(d.flags|=2048)),c!==i&&c&&(a.child.flags|=8192),Or(a,a.updateQueue),Pn(a),null);case 4:return st(),i===null&&p_(a.stateNode.containerInfo),Pn(a),null;case 10:return tr(a.type),Pn(a),null;case 19:if(oe(gn),d=a.memoizedState,d===null)return Pn(a),null;if(y=(a.flags&128)!==0,S=d.rendering,S===null)if(y)rr(d,!1);else{if(ii!==0||i!==null&&(i.flags&128)!==0)for(i=a.child;i!==null;){if(S=ja(i),S!==null){for(a.flags|=128,rr(d,!1),i=S.updateQueue,a.updateQueue=i,Or(a,i),a.subtreeFlags=0,i=c,c=a.child;c!==null;)ql(c,i),c=c.sibling;return Ae(gn,gn.current&1|2),mn&&Qs(a,d.treeForkCount),a.child}i=i.sibling}d.tail!==null&&O()>mi&&(a.flags|=128,y=!0,rr(d,!1),a.lanes=4194304)}else{if(!y)if(i=ja(S),i!==null){if(a.flags|=128,y=!0,i=i.updateQueue,a.updateQueue=i,Or(a,i),rr(d,!0),d.tail===null&&d.tailMode==="hidden"&&!S.alternate&&!mn)return Pn(a),null}else 2*O()-d.renderingStartTime>mi&&c!==536870912&&(a.flags|=128,y=!0,rr(d,!1),a.lanes=4194304);d.isBackwards?(S.sibling=a.child,a.child=S):(i=d.last,i!==null?i.sibling=S:a.child=S,d.last=S)}return d.tail!==null?(i=d.tail,d.rendering=i,d.tail=i.sibling,d.renderingStartTime=O(),i.sibling=null,c=gn.current,Ae(gn,y?c&1|2:c&1),mn&&Qs(a,d.treeForkCount),i):(Pn(a),null);case 22:case 23:return hi(a),hc(),d=a.memoizedState!==null,i!==null?i.memoizedState!==null!==d&&(a.flags|=8192):d&&(a.flags|=8192),d?(c&536870912)!==0&&(a.flags&128)===0&&(Pn(a),a.subtreeFlags&6&&(a.flags|=8192)):Pn(a),c=a.updateQueue,c!==null&&Or(a,c.retryQueue),c=null,i!==null&&i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(c=i.memoizedState.cachePool.pool),d=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(d=a.memoizedState.cachePool.pool),d!==c&&(a.flags|=2048),i!==null&&oe(ho),null;case 24:return c=null,i!==null&&(c=i.memoizedState.cache),a.memoizedState.cache!==c&&(a.flags|=2048),tr(Si),Pn(a),null;case 25:return null;case 30:return null}throw Error(n(156,a.tag))}function gs(i,a){switch(Nf(a),a.tag){case 1:return i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 3:return tr(Si),st(),i=a.flags,(i&65536)!==0&&(i&128)===0?(a.flags=i&-65537|128,a):null;case 26:case 27:case 5:return jt(a),null;case 31:if(a.memoizedState!==null){if(hi(a),a.alternate===null)throw Error(n(340));uo()}return i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 13:if(hi(a),i=a.memoizedState,i!==null&&i.dehydrated!==null){if(a.alternate===null)throw Error(n(340));uo()}return i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 19:return oe(gn),null;case 4:return st(),null;case 10:return tr(a.type),null;case 22:case 23:return hi(a),hc(),i!==null&&oe(ho),i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 24:return tr(Si),null;case 25:return null;default:return null}}function Ya(i,a){switch(Nf(a),a.tag){case 3:tr(Si),st();break;case 26:case 27:case 5:jt(a);break;case 4:st();break;case 31:a.memoizedState!==null&&hi(a);break;case 13:hi(a);break;case 19:oe(gn);break;case 10:tr(a.type);break;case 22:case 23:hi(a),hc(),i!==null&&oe(ho);break;case 24:tr(Si)}}function vs(i,a){try{var c=a.updateQueue,d=c!==null?c.lastEffect:null;if(d!==null){var y=d.next;c=y;do{if((c.tag&i)===i){d=void 0;var S=c.create,L=c.inst;d=S(),L.destroy=d}c=c.next}while(c!==y)}}catch(V){En(a,a.return,V)}}function Qi(i,a,c){try{var d=a.updateQueue,y=d!==null?d.lastEffect:null;if(y!==null){var S=y.next;d=S;do{if((d.tag&i)===i){var L=d.inst,V=L.destroy;if(V!==void 0){L.destroy=void 0,y=a;var $=c,ve=V;try{ve()}catch(De){En(y,$,De)}}}d=d.next}while(d!==S)}}catch(De){En(a,a.return,De)}}function Is(i){var a=i.updateQueue;if(a!==null){var c=i.stateNode;try{pg(a,c)}catch(d){En(i,i.return,d)}}}function Xi(i,a,c){c.props=yo(i.type,i.memoizedProps),c.state=i.memoizedState;try{c.componentWillUnmount()}catch(d){En(i,a,d)}}function Pr(i,a){try{var c=i.ref;if(c!==null){switch(i.tag){case 26:case 27:case 5:var d=i.stateNode;break;case 30:d=i.stateNode;break;default:d=i.stateNode}typeof c=="function"?i.refCleanup=c(d):c.current=d}}catch(y){En(i,a,y)}}function Ki(i,a){var c=i.ref,d=i.refCleanup;if(c!==null)if(typeof d=="function")try{d()}catch(y){En(i,a,y)}finally{i.refCleanup=null,i=i.alternate,i!=null&&(i.refCleanup=null)}else if(typeof c=="function")try{c(null)}catch(y){En(i,a,y)}else c.current=null}function bc(i){var a=i.type,c=i.memoizedProps,d=i.stateNode;try{e:switch(a){case"button":case"input":case"select":case"textarea":c.autoFocus&&d.focus();break e;case"img":c.src?d.src=c.src:c.srcSet&&(d.srcset=c.srcSet)}}catch(y){En(i,i.return,y)}}function Ui(i,a,c){try{var d=i.stateNode;SA(d,i.type,c,a),d[Ri]=a}catch(y){En(i,i.return,y)}}function Qn(i){return i.tag===5||i.tag===3||i.tag===26||i.tag===27&&vu(i.type)||i.tag===4}function dn(i){e:for(;;){for(;i.sibling===null;){if(i.return===null||Qn(i.return))return null;i=i.return}for(i.sibling.return=i.return,i=i.sibling;i.tag!==5&&i.tag!==6&&i.tag!==18;){if(i.tag===27&&vu(i.type)||i.flags&2||i.child===null||i.tag===4)continue e;i.child.return=i,i=i.child}if(!(i.flags&2))return i.stateNode}}function or(i,a,c){var d=i.tag;if(d===5||d===6)i=i.stateNode,a?(c.nodeType===9?c.body:c.nodeName==="HTML"?c.ownerDocument.body:c).insertBefore(i,a):(a=c.nodeType===9?c.body:c.nodeName==="HTML"?c.ownerDocument.body:c,a.appendChild(i),c=c._reactRootContainer,c!=null||a.onclick!==null||(a.onclick=Er));else if(d!==4&&(d===27&&vu(i.type)&&(c=i.stateNode,a=null),i=i.child,i!==null))for(or(i,a,c),i=i.sibling;i!==null;)or(i,a,c),i=i.sibling}function pa(i,a,c){var d=i.tag;if(d===5||d===6)i=i.stateNode,a?c.insertBefore(i,a):c.appendChild(i);else if(d!==4&&(d===27&&vu(i.type)&&(c=i.stateNode),i=i.child,i!==null))for(pa(i,a,c),i=i.sibling;i!==null;)pa(i,a,c),i=i.sibling}function oh(i){var a=i.stateNode,c=i.memoizedProps;try{for(var d=i.type,y=a.attributes;y.length;)a.removeAttributeNode(y[0]);ya(a,d,c),a[$n]=i,a[Ri]=c}catch(S){En(i,i.return,S)}}var ys=!1,Vn=!1,Os=!1,n0=typeof WeakSet=="function"?WeakSet:Set,Wi=null;function f_(i,a){if(i=i.containerInfo,v_=h0,i=ag(i),wd(i)){if("selectionStart"in i)var c={start:i.selectionStart,end:i.selectionEnd};else e:{c=(c=i.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&d.rangeCount!==0){c=d.anchorNode;var y=d.anchorOffset,S=d.focusNode;d=d.focusOffset;try{c.nodeType,S.nodeType}catch{c=null;break e}var L=0,V=-1,$=-1,ve=0,De=0,Be=i,xe=null;t:for(;;){for(var Ce;Be!==c||y!==0&&Be.nodeType!==3||(V=L+y),Be!==S||d!==0&&Be.nodeType!==3||($=L+d),Be.nodeType===3&&(L+=Be.nodeValue.length),(Ce=Be.firstChild)!==null;)xe=Be,Be=Ce;for(;;){if(Be===i)break t;if(xe===c&&++ve===y&&(V=L),xe===S&&++De===d&&($=L),(Ce=Be.nextSibling)!==null)break;Be=xe,xe=Be.parentNode}Be=Ce}c=V===-1||$===-1?null:{start:V,end:$}}else c=null}c=c||{start:0,end:0}}else c=null;for(y_={focusedElem:i,selectionRange:c},h0=!1,Wi=a;Wi!==null;)if(a=Wi,i=a.child,(a.subtreeFlags&1028)!==0&&i!==null)i.return=a,Wi=i;else for(;Wi!==null;){switch(a=Wi,S=a.alternate,i=a.flags,a.tag){case 0:if((i&4)!==0&&(i=a.updateQueue,i=i!==null?i.events:null,i!==null))for(c=0;c title"))),ya(S,d,c),S[$n]=i,k(S),d=S;break e;case"link":var L=DS("link","href",y).get(d+(c.href||""));if(L){for(var V=0;VGn&&(L=Gn,Gn=kt,kt=L);var le=Gl(V,kt),ie=Gl(V,Gn);if(le&&ie&&(Ce.rangeCount!==1||Ce.anchorNode!==le.node||Ce.anchorOffset!==le.offset||Ce.focusNode!==ie.node||Ce.focusOffset!==ie.offset)){var ge=Be.createRange();ge.setStart(le.node,le.offset),Ce.removeAllRanges(),kt>Gn?(Ce.addRange(ge),Ce.extend(ie.node,ie.offset)):(ge.setEnd(ie.node,ie.offset),Ce.addRange(ge))}}}}for(Be=[],Ce=V;Ce=Ce.parentNode;)Ce.nodeType===1&&Be.push({element:Ce,left:Ce.scrollLeft,top:Ce.scrollTop});for(typeof V.focus=="function"&&V.focus(),V=0;Vc?32:c,Y.T=null,c=hu,hu=null;var S=Ka,L=Ms;if(Ln=0,cu=Ka=null,Ms=0,(wt&6)!==0)throw Error(n(331));var V=wt;if(wt|=4,wa(S.current),xp(S,S.current,L,c),wt=V,gt(0,!1),Ze&&typeof Ze.onPostCommitFiberRoot=="function")try{Ze.onPostCommitFiberRoot(Ve,S)}catch{}return!0}finally{q.p=y,Y.T=d,hr(i,a)}}function Mp(i,a,c){a=Xa(c,a),a=dp(i.stateNode,a,2),i=po(i,a,2),i!==null&&(Jn(i,2),We(i))}function En(i,a,c){if(i.tag===3)Mp(i,i,c);else for(;a!==null;){if(a.tag===3){Mp(a,i,c);break}else if(a.tag===1){var d=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof d.componentDidCatch=="function"&&(gi===null||!gi.has(d))){i=Xa(c,i),c=pp(2),d=po(a,c,2),d!==null&&(Kg(c,d,a,i),Jn(d,2),We(d));break}}a=a.return}}function Cc(i,a,c){var d=i.pingCache;if(d===null){d=i.pingCache=new Zt;var y=new Set;d.set(a,y)}else y=d.get(a),y===void 0&&(y=new Set,d.set(a,y));y.has(c)||(bp=!0,y.add(c),i=o.bind(null,i,a,c),a.then(i,i))}function o(i,a,c){var d=i.pingCache;d!==null&&d.delete(a),i.pingedLanes|=i.suspendedLanes&c,i.warmLanes&=~c,Gt===i&&($t&c)===c&&(ii===4||ii===3&&($t&62914560)===$t&&300>O()-uu?(wt&2)===0&&Ao(i,0):Mc|=c,qn===$t&&(qn=0)),We(i)}function l(i,a){a===0&&(a=Jt()),i=fa(i,a),i!==null&&(Jn(i,a),We(i))}function p(i){var a=i.memoizedState,c=0;a!==null&&(c=a.retryLane),l(i,c)}function v(i,a){var c=0;switch(i.tag){case 31:case 13:var d=i.stateNode,y=i.memoizedState;y!==null&&(c=y.retryLane);break;case 19:d=i.stateNode;break;case 22:d=i.stateNode._retryCache;break;default:throw Error(n(314))}d!==null&&d.delete(a),l(i,c)}function T(i,a){return ot(i,a)}var C=null,F=null,ee=!1,we=!1,ke=!1,it=0;function We(i){i!==F&&i.next===null&&(F===null?C=F=i:F=F.next=i),we=!0,ee||(ee=!0,ce())}function gt(i,a){if(!ke&&we){ke=!0;do for(var c=!1,d=C;d!==null;){if(i!==0){var y=d.pendingLanes;if(y===0)var S=0;else{var L=d.suspendedLanes,V=d.pingedLanes;S=(1<<31-K(42|i)+1)-1,S&=y&~(L&~V),S=S&201326741?S&201326741|1:S?S|2:0}S!==0&&(c=!0,_e(d,S))}else S=$t,S=Ue(d,d===Gt?S:0,d.cancelPendingCommit!==null||d.timeoutHandle!==-1),(S&3)===0||Ye(d,S)||(c=!0,_e(d,S));d=d.next}while(c);ke=!1}}function qt(){vi()}function vi(){we=ee=!1;var i=0;it!==0&&EA()&&(i=it);for(var a=O(),c=null,d=C;d!==null;){var y=d.next,S=gu(d,a);S===0?(d.next=null,c===null?C=y:c.next=y,y===null&&(F=c)):(c=d,(i!==0||(S&3)!==0)&&(we=!0)),d=y}Ln!==0&&Ln!==5||gt(i),it!==0&&(it=0)}function gu(i,a){for(var c=i.suspendedLanes,d=i.pingedLanes,y=i.expirationTimes,S=i.pendingLanes&-62914561;0V)break;var De=$.transferSize,Be=$.initiatorType;De&&mS(Be)&&($=$.responseEnd,L+=De*($"u"?null:document;function wS(i,a,c){var d=dh;if(d&&typeof a=="string"&&a){var y=Ft(a);y='link[rel="'+i+'"][href="'+y+'"]',typeof c=="string"&&(y+='[crossorigin="'+c+'"]'),AS.has(y)||(AS.add(y),i={rel:i,crossOrigin:c,href:a},d.querySelector(y)===null&&(a=d.createElement("link"),ya(a,"link",i),k(a),d.head.appendChild(a)))}}function UA(i){xl.D(i),wS("dns-prefetch",i,null)}function IA(i,a){xl.C(i,a),wS("preconnect",i,a)}function OA(i,a,c){xl.L(i,a,c);var d=dh;if(d&&i&&a){var y='link[rel="preload"][as="'+Ft(a)+'"]';a==="image"&&c&&c.imageSrcSet?(y+='[imagesrcset="'+Ft(c.imageSrcSet)+'"]',typeof c.imageSizes=="string"&&(y+='[imagesizes="'+Ft(c.imageSizes)+'"]')):y+='[href="'+Ft(i)+'"]';var S=y;switch(a){case"style":S=ph(i);break;case"script":S=mh(i)}pr.has(S)||(i=x({rel:"preload",href:a==="image"&&c&&c.imageSrcSet?void 0:i,as:a},c),pr.set(S,i),d.querySelector(y)!==null||a==="style"&&d.querySelector(Ap(S))||a==="script"&&d.querySelector(wp(S))||(a=d.createElement("link"),ya(a,"link",i),k(a),d.head.appendChild(a)))}}function PA(i,a){xl.m(i,a);var c=dh;if(c&&i){var d=a&&typeof a.as=="string"?a.as:"script",y='link[rel="modulepreload"][as="'+Ft(d)+'"][href="'+Ft(i)+'"]',S=y;switch(d){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":S=mh(i)}if(!pr.has(S)&&(i=x({rel:"modulepreload",href:i},a),pr.set(S,i),c.querySelector(y)===null)){switch(d){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(c.querySelector(wp(S)))return}d=c.createElement("link"),ya(d,"link",i),k(d),c.head.appendChild(d)}}}function zA(i,a,c){xl.S(i,a,c);var d=dh;if(d&&i){var y=Xs(d).hoistableStyles,S=ph(i);a=a||"default";var L=y.get(S);if(!L){var V={loading:0,preload:null};if(L=d.querySelector(Ap(S)))V.loading=5;else{i=x({rel:"stylesheet",href:i,"data-precedence":a},c),(c=pr.get(S))&&T_(i,c);var $=L=d.createElement("link");k($),ya($,"link",i),$._p=new Promise(function(ve,De){$.onload=ve,$.onerror=De}),$.addEventListener("load",function(){V.loading|=1}),$.addEventListener("error",function(){V.loading|=2}),V.loading|=4,o0(L,a,d)}L={type:"stylesheet",instance:L,count:1,state:V},y.set(S,L)}}}function BA(i,a){xl.X(i,a);var c=dh;if(c&&i){var d=Xs(c).hoistableScripts,y=mh(i),S=d.get(y);S||(S=c.querySelector(wp(y)),S||(i=x({src:i,async:!0},a),(a=pr.get(y))&&A_(i,a),S=c.createElement("script"),k(S),ya(S,"link",i),c.head.appendChild(S)),S={type:"script",instance:S,count:1,state:null},d.set(y,S))}}function FA(i,a){xl.M(i,a);var c=dh;if(c&&i){var d=Xs(c).hoistableScripts,y=mh(i),S=d.get(y);S||(S=c.querySelector(wp(y)),S||(i=x({src:i,async:!0,type:"module"},a),(a=pr.get(y))&&A_(i,a),S=c.createElement("script"),k(S),ya(S,"link",i),c.head.appendChild(S)),S={type:"script",instance:S,count:1,state:null},d.set(y,S))}}function CS(i,a,c,d){var y=(y=de.current)?r0(y):null;if(!y)throw Error(n(446));switch(i){case"meta":case"title":return null;case"style":return typeof c.precedence=="string"&&typeof c.href=="string"?(a=ph(c.href),c=Xs(y).hoistableStyles,d=c.get(a),d||(d={type:"style",instance:null,count:0,state:null},c.set(a,d)),d):{type:"void",instance:null,count:0,state:null};case"link":if(c.rel==="stylesheet"&&typeof c.href=="string"&&typeof c.precedence=="string"){i=ph(c.href);var S=Xs(y).hoistableStyles,L=S.get(i);if(L||(y=y.ownerDocument||y,L={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},S.set(i,L),(S=y.querySelector(Ap(i)))&&!S._p&&(L.instance=S,L.state.loading=5),pr.has(i)||(c={rel:"preload",as:"style",href:c.href,crossOrigin:c.crossOrigin,integrity:c.integrity,media:c.media,hrefLang:c.hrefLang,referrerPolicy:c.referrerPolicy},pr.set(i,c),S||kA(y,i,c,L.state))),a&&d===null)throw Error(n(528,""));return L}if(a&&d!==null)throw Error(n(529,""));return null;case"script":return a=c.async,c=c.src,typeof c=="string"&&a&&typeof a!="function"&&typeof a!="symbol"?(a=mh(c),c=Xs(y).hoistableScripts,d=c.get(a),d||(d={type:"script",instance:null,count:0,state:null},c.set(a,d)),d):{type:"void",instance:null,count:0,state:null};default:throw Error(n(444,i))}}function ph(i){return'href="'+Ft(i)+'"'}function Ap(i){return'link[rel="stylesheet"]['+i+"]"}function RS(i){return x({},i,{"data-precedence":i.precedence,precedence:null})}function kA(i,a,c,d){i.querySelector('link[rel="preload"][as="style"]['+a+"]")?d.loading=1:(a=i.createElement("link"),d.preload=a,a.addEventListener("load",function(){return d.loading|=1}),a.addEventListener("error",function(){return d.loading|=2}),ya(a,"link",c),k(a),i.head.appendChild(a))}function mh(i){return'[src="'+Ft(i)+'"]'}function wp(i){return"script[async]"+i}function NS(i,a,c){if(a.count++,a.instance===null)switch(a.type){case"style":var d=i.querySelector('style[data-href~="'+Ft(c.href)+'"]');if(d)return a.instance=d,k(d),d;var y=x({},c,{"data-href":c.href,"data-precedence":c.precedence,href:null,precedence:null});return d=(i.ownerDocument||i).createElement("style"),k(d),ya(d,"style",y),o0(d,c.precedence,i),a.instance=d;case"stylesheet":y=ph(c.href);var S=i.querySelector(Ap(y));if(S)return a.state.loading|=4,a.instance=S,k(S),S;d=RS(c),(y=pr.get(y))&&T_(d,y),S=(i.ownerDocument||i).createElement("link"),k(S);var L=S;return L._p=new Promise(function(V,$){L.onload=V,L.onerror=$}),ya(S,"link",d),a.state.loading|=4,o0(S,c.precedence,i),a.instance=S;case"script":return S=mh(c.src),(y=i.querySelector(wp(S)))?(a.instance=y,k(y),y):(d=c,(y=pr.get(S))&&(d=x({},c),A_(d,y)),i=i.ownerDocument||i,y=i.createElement("script"),k(y),ya(y,"link",d),i.head.appendChild(y),a.instance=y);case"void":return null;default:throw Error(n(443,a.type))}else a.type==="stylesheet"&&(a.state.loading&4)===0&&(d=a.instance,a.state.loading|=4,o0(d,c.precedence,i));return a.instance}function o0(i,a,c){for(var d=c.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),y=d.length?d[d.length-1]:null,S=y,L=0;L title"):null)}function VA(i,a,c){if(c===1||a.itemProp!=null)return!1;switch(i){case"meta":case"title":return!0;case"style":if(typeof a.precedence!="string"||typeof a.href!="string"||a.href==="")break;return!0;case"link":if(typeof a.rel!="string"||typeof a.href!="string"||a.href===""||a.onLoad||a.onError)break;return a.rel==="stylesheet"?(i=a.disabled,typeof a.precedence=="string"&&i==null):!0;case"script":if(a.async&&typeof a.async!="function"&&typeof a.async!="symbol"&&!a.onLoad&&!a.onError&&a.src&&typeof a.src=="string")return!0}return!1}function US(i){return!(i.type==="stylesheet"&&(i.state.loading&3)===0)}function HA(i,a,c,d){if(c.type==="stylesheet"&&(typeof d.media!="string"||matchMedia(d.media).matches!==!1)&&(c.state.loading&4)===0){if(c.instance===null){var y=ph(d.href),S=a.querySelector(Ap(y));if(S){a=S._p,a!==null&&typeof a=="object"&&typeof a.then=="function"&&(i.count++,i=u0.bind(i),a.then(i,i)),c.state.loading|=4,c.instance=S,k(S);return}S=a.ownerDocument||a,d=RS(d),(y=pr.get(y))&&T_(d,y),S=S.createElement("link"),k(S);var L=S;L._p=new Promise(function(V,$){L.onload=V,L.onerror=$}),ya(S,"link",d),c.instance=S}i.stylesheets===null&&(i.stylesheets=new Map),i.stylesheets.set(c,a),(a=c.state.preload)&&(c.state.loading&3)===0&&(i.count++,c=u0.bind(i),a.addEventListener("load",c),a.addEventListener("error",c))}}var w_=0;function GA(i,a){return i.stylesheets&&i.count===0&&f0(i,i.stylesheets),0w_?50:800)+a);return i.unsuspend=c,function(){i.unsuspend=null,clearTimeout(d),clearTimeout(y)}}:null}function u0(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)f0(this,this.stylesheets);else if(this.unsuspend){var i=this.unsuspend;this.unsuspend=null,i()}}}var c0=null;function f0(i,a){i.stylesheets=null,i.unsuspend!==null&&(i.count++,c0=new Map,a.forEach(XA,i),c0=null,u0.call(i))}function XA(i,a){if(!(a.state.loading&4)){var c=c0.get(i);if(c)var d=c.get(null);else{c=new Map,c0.set(i,c);for(var y=i.querySelectorAll("link[data-precedence],style[data-precedence]"),S=0;S"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(e){console.error(e)}}return r(),O_.exports=sw(),O_.exports}var ow=rw();const lw=py(ow),uw="modulepreload",cw=function(r){return"/"+r},iM={},Hr=function(e,t,n){let s=Promise.resolve();if(t&&t.length>0){let m=function(g){return Promise.all(g.map(_=>Promise.resolve(_).then(x=>({status:"fulfilled",value:x}),x=>({status:"rejected",reason:x}))))};document.getElementsByTagName("link");const f=document.querySelector("meta[property=csp-nonce]"),h=f?.nonce||f?.getAttribute("nonce");s=m(t.map(g=>{if(g=cw(g),g in iM)return;iM[g]=!0;const _=g.endsWith(".css"),x=_?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${g}"]${x}`))return;const b=document.createElement("link");if(b.rel=_?"stylesheet":uw,_||(b.as="script"),b.crossOrigin="",b.href=g,h&&b.setAttribute("nonce",h),document.head.appendChild(b),_)return new Promise((M,A)=>{b.addEventListener("load",M),b.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${g}`)))})}))}function u(f){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=f,window.dispatchEvent(h),!h.defaultPrevented)throw f}return s.then(f=>{for(const h of f||[])h.status==="rejected"&&u(h.reason);return e().catch(u)})},fw="assumption-toggle",hw="Assumption Toggle",dw="1.0.0",pw="glitch_assumption_toggle",mw="@nommo/assumption-toggle",gw="dist/assumption-toggle.js",vw="src/index.tsx",yw=["glitch-component","crt","logic"],_w={componentId:fw,displayName:hw,version:dw,folderName:pw,packageName:mw,entry:gw,source:vw,tags:yw},xw="ccd",bw="CCD Photon Explorer",Sw="0.1.0",Mw="glitch_ccd",Ew="@glitch-components/ccd",Tw="dist/index.html",Aw="src/index.tsx",ww=["internal","visualization","tooling"],Cw={componentId:xw,displayName:bw,version:Sw,folderName:Mw,packageName:Ew,entry:Tw,source:Aw,tags:ww},Rw="chess_analogy",Nw="Chess Move Set Lab",Dw="1.0.0",Lw="glitch_chess_analogy",Uw="@glitch-components/chess-analogy",Iw="dist/chess_analogy.js",Ow="src/index.tsx",Pw=["glitch-component","reference","2d","chess"],zw={componentId:Rw,displayName:Nw,version:Dw,folderName:Lw,packageName:Uw,entry:Iw,source:Ow,tags:Pw},Bw="gallery",Fw="Glitch Gallery",kw="0.1.0",Vw="glitch_gallery",Hw="@glitch-components/gallery",Gw="dist/index.html",Xw="src/index.tsx",Ww=["internal","tooling","preview"],qw={componentId:Bw,displayName:Fw,version:kw,folderName:Vw,packageName:Hw,entry:Gw,source:Xw,tags:Ww},jw="level-questions",Yw="Level Questions",Zw="1.0.0",Qw="glitch_level_questions",Kw="level-questions",Jw="dist/level-questions.js",$w="src/index.tsx",eC=["glitch-component","quiz","role-mapping"],tC={componentId:jw,displayName:Yw,version:Zw,folderName:Qw,packageName:Kw,entry:Jw,source:$w,tags:eC},nC="lightlane",iC="Lightlane Challenge",aC="0.1.0",sC="glitch_lightlane",rC="@nommo/lightlane",oC="dist/lightlane.js",lC="src/index.tsx",uC=["glitch-component","reference","3d"],cC={componentId:nC,displayName:iC,version:aC,folderName:sC,packageName:rC,entry:oC,source:lC,tags:uC},fC="migration-paradox",hC="The Migration Paradox",dC="1.0.0",pC="glitch_migration_paradox",mC="migration-paradox",gC="dist/migration-paradox.js",vC="src/index.tsx",yC=["glitch-component","paradox","narrative"],_C={componentId:fC,displayName:hC,version:dC,folderName:pC,packageName:mC,entry:gC,source:vC,tags:yC},xC="onboarding",bC="Glitch University Onboarding",SC="1.0.0",MC="glitch_onboarding",EC="@glitch-components/onboarding",TC="dist/onboarding.js",AC="src/index.tsx",wC=["glitch-component","onboarding","narrative"],CC={componentId:xC,displayName:bC,version:SC,folderName:MC,packageName:EC,entry:TC,source:AC,tags:wC},RC="onboarding2",NC="Facility Slideshow",DC="1.0.0",LC="glitch_onboarding2",UC="@glitch-components/onboarding2",IC="dist/onboarding2.js",OC="src/index.tsx",PC=["glitch-component","onboarding","slideshow"],zC={componentId:RC,displayName:NC,version:DC,folderName:LC,packageName:UC,entry:IC,source:OC,tags:PC},BC="sphere-paradox",FC="Create a Perfect Sphere",kC="1.0.0",VC="glitch_sphere_paradox",HC="sphere-paradox",GC="dist/sphere-paradox.js",XC="src/index.tsx",WC=["glitch-component","3d","paradox"],qC={componentId:BC,displayName:FC,version:kC,folderName:VC,packageName:HC,entry:GC,source:XC,tags:WC},jC="voxel-universe",YC="Voxel Universe",ZC="1.0.0",QC="glitch_voxel_universe",KC="@glitch-components/voxel-universe",JC="dist/voxel_universe.js",$C="src/index.tsx",e3=["glitch-component","voxel","geometry"],t3={componentId:jC,displayName:YC,version:ZC,folderName:QC,packageName:KC,entry:JC,source:$C,tags:e3};function kx(){return kx=Object.assign?Object.assign.bind():function(r){for(var e=1;e=0;--e)if(r[e]>=65535)return!0;return!1}const G3={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Hh(r,e){return new G3[r](e)}function FE(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}function mm(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function kE(){const r=mm("canvas");return r.style.display="block",r}const aM={};let Bu=null;function X3(r){Bu=r}function W3(){return Bu}function gm(...r){const e="THREE."+r.shift();Bu?Bu("log",e,...r):console.log(e,...r)}function ft(...r){const e="THREE."+r.shift();Bu?Bu("warn",e,...r):console.warn(e,...r)}function Rt(...r){const e="THREE."+r.shift();Bu?Bu("error",e,...r):console.error(e,...r)}function Zh(...r){const e=r.join(" ");e in aM||(aM[e]=!0,ft(...r))}function q3(r,e,t){return new Promise(function(n,s){function u(){switch(r.clientWaitSync(e,r.SYNC_FLUSH_COMMANDS_BIT,0)){case r.WAIT_FAILED:s();break;case r.TIMEOUT_EXPIRED:setTimeout(u,t);break;default:n()}}setTimeout(u,t)})}let ko=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const n=this._listeners;if(n===void 0)return;const s=n[e];if(s!==void 0){const u=s.indexOf(t);u!==-1&&s.splice(u,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const n=t[e.type];if(n!==void 0){e.target=this;const s=n.slice(0);for(let u=0,f=s.length;u>8&255]+Da[r>>16&255]+Da[r>>24&255]+"-"+Da[e&255]+Da[e>>8&255]+"-"+Da[e>>16&15|64]+Da[e>>24&255]+"-"+Da[t&63|128]+Da[t>>8&255]+"-"+Da[t>>16&255]+Da[t>>24&255]+Da[n&255]+Da[n>>8&255]+Da[n>>16&255]+Da[n>>24&255]).toLowerCase()}function Ht(r,e,t){return Math.max(e,Math.min(t,r))}function wb(r,e){return(r%e+e)%e}function j3(r,e,t,n,s){return n+(r-e)*(s-n)/(t-e)}function Y3(r,e,t){return r!==e?(t-r)/(e-r):0}function im(r,e,t){return(1-t)*r+t*e}function Z3(r,e,t,n){return im(r,e,1-Math.exp(-t*n))}function Q3(r,e=1){return e-Math.abs(wb(r,e*2)-e)}function K3(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function J3(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function $3(r,e){return r+Math.floor(Math.random()*(e-r+1))}function eR(r,e){return r+Math.random()*(e-r)}function tR(r){return r*(.5-Math.random())}function nR(r){r!==void 0&&(sM=r);let e=sM+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function iR(r){return r*Jc}function aR(r){return r*Qh}function sR(r){return(r&r-1)===0&&r!==0}function rR(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function oR(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function lR(r,e,t,n,s){const u=Math.cos,f=Math.sin,h=u(t/2),m=f(t/2),g=u((e+n)/2),_=f((e+n)/2),x=u((e-n)/2),b=f((e-n)/2),M=u((n-e)/2),A=f((n-e)/2);switch(s){case"XYX":r.set(h*_,m*x,m*b,h*g);break;case"YZY":r.set(m*b,h*_,m*x,h*g);break;case"ZXZ":r.set(m*x,m*b,h*_,h*g);break;case"XZX":r.set(h*_,m*A,m*M,h*g);break;case"YXY":r.set(m*M,h*_,m*A,h*g);break;case"ZYZ":r.set(m*A,m*M,h*_,h*g);break;default:ft("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+s)}}function ns(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function on(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}const uR={DEG2RAD:Jc,RAD2DEG:Qh,generateUUID:Vs,clamp:Ht,euclideanModulo:wb,mapLinear:j3,inverseLerp:Y3,lerp:im,damp:Z3,pingpong:Q3,smoothstep:K3,smootherstep:J3,randInt:$3,randFloat:eR,randFloatSpread:tR,seededRandom:nR,degToRad:iR,radToDeg:aR,isPowerOfTwo:sR,ceilPowerOfTwo:rR,floorPowerOfTwo:oR,setQuaternionFromProperEuler:lR,normalize:on,denormalize:ns};class ze{constructor(e=0,t=0){ze.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6],this.y=s[1]*t+s[4]*n+s[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Ht(this.x,e.x,t.x),this.y=Ht(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Ht(this.x,e,t),this.y=Ht(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ht(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ht(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),s=Math.sin(t),u=this.x-e.x,f=this.y-e.y;return this.x=u*n-f*s+e.x,this.y=u*s+f*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Pa{constructor(e=0,t=0,n=0,s=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=s}static slerpFlat(e,t,n,s,u,f,h){let m=n[s+0],g=n[s+1],_=n[s+2],x=n[s+3],b=u[f+0],M=u[f+1],A=u[f+2],R=u[f+3];if(h<=0){e[t+0]=m,e[t+1]=g,e[t+2]=_,e[t+3]=x;return}if(h>=1){e[t+0]=b,e[t+1]=M,e[t+2]=A,e[t+3]=R;return}if(x!==R||m!==b||g!==M||_!==A){let w=m*b+g*M+_*A+x*R;w<0&&(b=-b,M=-M,A=-A,R=-R,w=-w);let E=1-h;if(w<.9995){const N=Math.acos(w),D=Math.sin(N);E=Math.sin(E*N)/D,h=Math.sin(h*N)/D,m=m*E+b*h,g=g*E+M*h,_=_*E+A*h,x=x*E+R*h}else{m=m*E+b*h,g=g*E+M*h,_=_*E+A*h,x=x*E+R*h;const N=1/Math.sqrt(m*m+g*g+_*_+x*x);m*=N,g*=N,_*=N,x*=N}}e[t]=m,e[t+1]=g,e[t+2]=_,e[t+3]=x}static multiplyQuaternionsFlat(e,t,n,s,u,f){const h=n[s],m=n[s+1],g=n[s+2],_=n[s+3],x=u[f],b=u[f+1],M=u[f+2],A=u[f+3];return e[t]=h*A+_*x+m*M-g*b,e[t+1]=m*A+_*b+g*x-h*M,e[t+2]=g*A+_*M+h*b-m*x,e[t+3]=_*A-h*x-m*b-g*M,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,s){return this._x=e,this._y=t,this._z=n,this._w=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,s=e._y,u=e._z,f=e._order,h=Math.cos,m=Math.sin,g=h(n/2),_=h(s/2),x=h(u/2),b=m(n/2),M=m(s/2),A=m(u/2);switch(f){case"XYZ":this._x=b*_*x+g*M*A,this._y=g*M*x-b*_*A,this._z=g*_*A+b*M*x,this._w=g*_*x-b*M*A;break;case"YXZ":this._x=b*_*x+g*M*A,this._y=g*M*x-b*_*A,this._z=g*_*A-b*M*x,this._w=g*_*x+b*M*A;break;case"ZXY":this._x=b*_*x-g*M*A,this._y=g*M*x+b*_*A,this._z=g*_*A+b*M*x,this._w=g*_*x-b*M*A;break;case"ZYX":this._x=b*_*x-g*M*A,this._y=g*M*x+b*_*A,this._z=g*_*A-b*M*x,this._w=g*_*x+b*M*A;break;case"YZX":this._x=b*_*x+g*M*A,this._y=g*M*x+b*_*A,this._z=g*_*A-b*M*x,this._w=g*_*x-b*M*A;break;case"XZY":this._x=b*_*x-g*M*A,this._y=g*M*x-b*_*A,this._z=g*_*A+b*M*x,this._w=g*_*x+b*M*A;break;default:ft("Quaternion: .setFromEuler() encountered an unknown order: "+f)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,s=Math.sin(n);return this._x=e.x*s,this._y=e.y*s,this._z=e.z*s,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],s=t[4],u=t[8],f=t[1],h=t[5],m=t[9],g=t[2],_=t[6],x=t[10],b=n+h+x;if(b>0){const M=.5/Math.sqrt(b+1);this._w=.25/M,this._x=(_-m)*M,this._y=(u-g)*M,this._z=(f-s)*M}else if(n>h&&n>x){const M=2*Math.sqrt(1+n-h-x);this._w=(_-m)/M,this._x=.25*M,this._y=(s+f)/M,this._z=(u+g)/M}else if(h>x){const M=2*Math.sqrt(1+h-n-x);this._w=(u-g)/M,this._x=(s+f)/M,this._y=.25*M,this._z=(m+_)/M}else{const M=2*Math.sqrt(1+x-n-h);this._w=(f-s)/M,this._x=(u+g)/M,this._y=(m+_)/M,this._z=.25*M}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<1e-8?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ht(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const s=Math.min(1,t/n);return this.slerp(e,s),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,s=e._y,u=e._z,f=e._w,h=t._x,m=t._y,g=t._z,_=t._w;return this._x=n*_+f*h+s*g-u*m,this._y=s*_+f*m+u*h-n*g,this._z=u*_+f*g+n*m-s*h,this._w=f*_-n*h-s*m-u*g,this._onChangeCallback(),this}slerp(e,t){if(t<=0)return this;if(t>=1)return this.copy(e);let n=e._x,s=e._y,u=e._z,f=e._w,h=this.dot(e);h<0&&(n=-n,s=-s,u=-u,f=-f,h=-h);let m=1-t;if(h<.9995){const g=Math.acos(h),_=Math.sin(g);m=Math.sin(m*g)/_,t=Math.sin(t*g)/_,this._x=this._x*m+n*t,this._y=this._y*m+s*t,this._z=this._z*m+u*t,this._w=this._w*m+f*t,this._onChangeCallback()}else this._x=this._x*m+n*t,this._y=this._y*m+s*t,this._z=this._z*m+u*t,this._w=this._w*m+f*t,this.normalize();return this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),s=Math.sqrt(1-n),u=Math.sqrt(n);return this.set(s*Math.sin(e),s*Math.cos(e),u*Math.sin(t),u*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class j{constructor(e=0,t=0,n=0){j.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(rM.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(rM.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,s=this.z,u=e.elements;return this.x=u[0]*t+u[3]*n+u[6]*s,this.y=u[1]*t+u[4]*n+u[7]*s,this.z=u[2]*t+u[5]*n+u[8]*s,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,s=this.z,u=e.elements,f=1/(u[3]*t+u[7]*n+u[11]*s+u[15]);return this.x=(u[0]*t+u[4]*n+u[8]*s+u[12])*f,this.y=(u[1]*t+u[5]*n+u[9]*s+u[13])*f,this.z=(u[2]*t+u[6]*n+u[10]*s+u[14])*f,this}applyQuaternion(e){const t=this.x,n=this.y,s=this.z,u=e.x,f=e.y,h=e.z,m=e.w,g=2*(f*s-h*n),_=2*(h*t-u*s),x=2*(u*n-f*t);return this.x=t+m*g+f*x-h*_,this.y=n+m*_+h*g-u*x,this.z=s+m*x+u*_-f*g,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,s=this.z,u=e.elements;return this.x=u[0]*t+u[4]*n+u[8]*s,this.y=u[1]*t+u[5]*n+u[9]*s,this.z=u[2]*t+u[6]*n+u[10]*s,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Ht(this.x,e.x,t.x),this.y=Ht(this.y,e.y,t.y),this.z=Ht(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Ht(this.x,e,t),this.y=Ht(this.y,e,t),this.z=Ht(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ht(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,s=e.y,u=e.z,f=t.x,h=t.y,m=t.z;return this.x=s*m-u*h,this.y=u*f-n*m,this.z=n*h-s*f,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return k_.copy(this).projectOnVector(e),this.sub(k_)}reflect(e){return this.sub(k_.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ht(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,s=this.z-e.z;return t*t+n*n+s*s}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const s=Math.sin(t)*e;return this.x=s*Math.sin(n),this.y=Math.cos(t)*e,this.z=s*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),s=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=s,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const k_=new j,rM=new Pa;class en{constructor(e,t,n,s,u,f,h,m,g){en.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,s,u,f,h,m,g)}set(e,t,n,s,u,f,h,m,g){const _=this.elements;return _[0]=e,_[1]=s,_[2]=h,_[3]=t,_[4]=u,_[5]=m,_[6]=n,_[7]=f,_[8]=g,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,s=t.elements,u=this.elements,f=n[0],h=n[3],m=n[6],g=n[1],_=n[4],x=n[7],b=n[2],M=n[5],A=n[8],R=s[0],w=s[3],E=s[6],N=s[1],D=s[4],U=s[7],B=s[2],z=s[5],H=s[8];return u[0]=f*R+h*N+m*B,u[3]=f*w+h*D+m*z,u[6]=f*E+h*U+m*H,u[1]=g*R+_*N+x*B,u[4]=g*w+_*D+x*z,u[7]=g*E+_*U+x*H,u[2]=b*R+M*N+A*B,u[5]=b*w+M*D+A*z,u[8]=b*E+M*U+A*H,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],s=e[2],u=e[3],f=e[4],h=e[5],m=e[6],g=e[7],_=e[8];return t*f*_-t*h*g-n*u*_+n*h*m+s*u*g-s*f*m}invert(){const e=this.elements,t=e[0],n=e[1],s=e[2],u=e[3],f=e[4],h=e[5],m=e[6],g=e[7],_=e[8],x=_*f-h*g,b=h*m-_*u,M=g*u-f*m,A=t*x+n*b+s*M;if(A===0)return this.set(0,0,0,0,0,0,0,0,0);const R=1/A;return e[0]=x*R,e[1]=(s*g-_*n)*R,e[2]=(h*n-s*f)*R,e[3]=b*R,e[4]=(_*t-s*m)*R,e[5]=(s*u-h*t)*R,e[6]=M*R,e[7]=(n*m-g*t)*R,e[8]=(f*t-n*u)*R,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,s,u,f,h){const m=Math.cos(u),g=Math.sin(u);return this.set(n*m,n*g,-n*(m*f+g*h)+f+e,-s*g,s*m,-s*(-g*f+m*h)+h+t,0,0,1),this}scale(e,t){return this.premultiply(V_.makeScale(e,t)),this}rotate(e){return this.premultiply(V_.makeRotation(-e)),this}translate(e,t){return this.premultiply(V_.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let s=0;s<9;s++)if(t[s]!==n[s])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const V_=new en,oM=new en().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),lM=new en().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function cR(){const r={enabled:!0,workingColorSpace:zu,spaces:{},convert:function(s,u,f){return this.enabled===!1||u===f||!u||!f||(this.spaces[u].transfer===zn&&(s.r=Nl(s.r),s.g=Nl(s.g),s.b=Nl(s.b)),this.spaces[u].primaries!==this.spaces[f].primaries&&(s.applyMatrix3(this.spaces[u].toXYZ),s.applyMatrix3(this.spaces[f].fromXYZ)),this.spaces[f].transfer===zn&&(s.r=Wh(s.r),s.g=Wh(s.g),s.b=Wh(s.b))),s},workingToColorSpace:function(s,u){return this.convert(s,this.workingColorSpace,u)},colorSpaceToWorking:function(s,u){return this.convert(s,u,this.workingColorSpace)},getPrimaries:function(s){return this.spaces[s].primaries},getTransfer:function(s){return s===Cl?dm:this.spaces[s].transfer},getToneMappingMode:function(s){return this.spaces[s].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(s,u=this.workingColorSpace){return s.fromArray(this.spaces[u].luminanceCoefficients)},define:function(s){Object.assign(this.spaces,s)},_getMatrix:function(s,u,f){return s.copy(this.spaces[u].toXYZ).multiply(this.spaces[f].fromXYZ)},_getDrawingBufferColorSpace:function(s){return this.spaces[s].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(s=this.workingColorSpace){return this.spaces[s].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(s,u){return Zh("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),r.workingToColorSpace(s,u)},toWorkingColorSpace:function(s,u){return Zh("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),r.colorSpaceToWorking(s,u)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return r.define({[zu]:{primaries:e,whitePoint:n,transfer:dm,toXYZ:oM,fromXYZ:lM,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Ia},outputColorSpaceConfig:{drawingBufferColorSpace:Ia}},[Ia]:{primaries:e,whitePoint:n,transfer:zn,toXYZ:oM,fromXYZ:lM,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Ia}}}),r}const Sn=cR();function Nl(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function Wh(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}let vh;class VE{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{vh===void 0&&(vh=mm("canvas")),vh.width=e.width,vh.height=e.height;const s=vh.getContext("2d");e instanceof ImageData?s.putImageData(e,0,0):s.drawImage(e,0,0,e.width,e.height),n=vh}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=mm("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const s=n.getImageData(0,0,e.width,e.height),u=s.data;for(let f=0;f1),this.pmremVersion=0}get width(){return this.source.getSize(G_).x}get height(){return this.source.getSize(G_).y}get depth(){return this.source.getSize(G_).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const n=e[t];if(n===void 0){ft(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const s=this[t];if(s===void 0){ft(`Texture.setValues(): property '${t}' does not exist.`);continue}s&&n&&s.isVector2&&n.isVector2||s&&n&&s.isVector3&&n.isVector3||s&&n&&s.isMatrix3&&n.isMatrix3?s.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const n={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==vy)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case um:e.x=e.x-Math.floor(e.x);break;case Rs:e.x=e.x<0?0:1;break;case cm:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case um:e.y=e.y-Math.floor(e.y);break;case Rs:e.y=e.y<0?0:1;break;case cm:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}wi.DEFAULT_IMAGE=null;wi.DEFAULT_MAPPING=vy;wi.DEFAULT_ANISOTROPY=1;class jn{constructor(e=0,t=0,n=0,s=1){jn.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=s}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,s){return this.x=e,this.y=t,this.z=n,this.w=s,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,s=this.z,u=this.w,f=e.elements;return this.x=f[0]*t+f[4]*n+f[8]*s+f[12]*u,this.y=f[1]*t+f[5]*n+f[9]*s+f[13]*u,this.z=f[2]*t+f[6]*n+f[10]*s+f[14]*u,this.w=f[3]*t+f[7]*n+f[11]*s+f[15]*u,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,s,u;const m=e.elements,g=m[0],_=m[4],x=m[8],b=m[1],M=m[5],A=m[9],R=m[2],w=m[6],E=m[10];if(Math.abs(_-b)<.01&&Math.abs(x-R)<.01&&Math.abs(A-w)<.01){if(Math.abs(_+b)<.1&&Math.abs(x+R)<.1&&Math.abs(A+w)<.1&&Math.abs(g+M+E-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const D=(g+1)/2,U=(M+1)/2,B=(E+1)/2,z=(_+b)/4,H=(x+R)/4,W=(A+w)/4;return D>U&&D>B?D<.01?(n=0,s=.707106781,u=.707106781):(n=Math.sqrt(D),s=z/n,u=H/n):U>B?U<.01?(n=.707106781,s=0,u=.707106781):(s=Math.sqrt(U),n=z/s,u=W/s):B<.01?(n=.707106781,s=.707106781,u=0):(u=Math.sqrt(B),n=H/u,s=W/u),this.set(n,s,u,t),this}let N=Math.sqrt((w-A)*(w-A)+(x-R)*(x-R)+(b-_)*(b-_));return Math.abs(N)<.001&&(N=1),this.x=(w-A)/N,this.y=(x-R)/N,this.z=(b-_)/N,this.w=Math.acos((g+M+E-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Ht(this.x,e.x,t.x),this.y=Ht(this.y,e.y,t.y),this.z=Ht(this.z,e.z,t.z),this.w=Ht(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Ht(this.x,e,t),this.y=Ht(this.y,e,t),this.z=Ht(this.z,e,t),this.w=Ht(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ht(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Cb extends ko{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:oi,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},n),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth,this.scissor=new jn(0,0,e,t),this.scissorTest=!1,this.viewport=new jn(0,0,e,t);const s={width:e,height:t,depth:n.depth},u=new wi(s);this.textures=[];const f=n.count;for(let h=0;h1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,n=e.textures.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Gr),Gr.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Ip),x0.subVectors(this.max,Ip),yh.subVectors(e.a,Ip),_h.subVectors(e.b,Ip),xh.subVectors(e.c,Ip),Mu.subVectors(_h,yh),Eu.subVectors(xh,_h),Rc.subVectors(yh,xh);let t=[0,-Mu.z,Mu.y,0,-Eu.z,Eu.y,0,-Rc.z,Rc.y,Mu.z,0,-Mu.x,Eu.z,0,-Eu.x,Rc.z,0,-Rc.x,-Mu.y,Mu.x,0,-Eu.y,Eu.x,0,-Rc.y,Rc.x,0];return!X_(t,yh,_h,xh,x0)||(t=[1,0,0,0,1,0,0,0,1],!X_(t,yh,_h,xh,x0))?!1:(b0.crossVectors(Mu,Eu),t=[b0.x,b0.y,b0.z],X_(t,yh,_h,xh,x0))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Gr).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Gr).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(bl[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),bl[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),bl[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),bl[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),bl[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),bl[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),bl[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),bl[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(bl),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const bl=[new j,new j,new j,new j,new j,new j,new j,new j],Gr=new j,_0=new za,yh=new j,_h=new j,xh=new j,Mu=new j,Eu=new j,Rc=new j,Ip=new j,x0=new j,b0=new j,Nc=new j;function X_(r,e,t,n,s){for(let u=0,f=r.length-3;u<=f;u+=3){Nc.fromArray(r,u);const h=s.x*Math.abs(Nc.x)+s.y*Math.abs(Nc.y)+s.z*Math.abs(Nc.z),m=e.dot(Nc),g=t.dot(Nc),_=n.dot(Nc);if(Math.max(-Math.max(m,g,_),Math.min(m,g,_))>h)return!1}return!0}const mR=new za,Op=new j,W_=new j;class _a{constructor(e=new j,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):mR.setFromPoints(e).getCenter(n);let s=0;for(let u=0,f=e.length;uthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Op.subVectors(e,this.center);const t=Op.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),s=(n-this.radius)*.5;this.center.addScaledVector(Op,s/n),this.radius+=s}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(W_.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Op.copy(e.center).add(W_)),this.expandByPoint(Op.copy(e.center).sub(W_))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const Sl=new j,q_=new j,S0=new j,Tu=new j,j_=new j,M0=new j,Y_=new j;class of{constructor(e=new j,t=new j(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Sl)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=Sl.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Sl.copy(this.origin).addScaledVector(this.direction,t),Sl.distanceToSquared(e))}distanceSqToSegment(e,t,n,s){q_.copy(e).add(t).multiplyScalar(.5),S0.copy(t).sub(e).normalize(),Tu.copy(this.origin).sub(q_);const u=e.distanceTo(t)*.5,f=-this.direction.dot(S0),h=Tu.dot(this.direction),m=-Tu.dot(S0),g=Tu.lengthSq(),_=Math.abs(1-f*f);let x,b,M,A;if(_>0)if(x=f*m-h,b=f*h-m,A=u*_,x>=0)if(b>=-A)if(b<=A){const R=1/_;x*=R,b*=R,M=x*(x+f*b+2*h)+b*(f*x+b+2*m)+g}else b=u,x=Math.max(0,-(f*b+h)),M=-x*x+b*(b+2*m)+g;else b=-u,x=Math.max(0,-(f*b+h)),M=-x*x+b*(b+2*m)+g;else b<=-A?(x=Math.max(0,-(-f*u+h)),b=x>0?-u:Math.min(Math.max(-u,-m),u),M=-x*x+b*(b+2*m)+g):b<=A?(x=0,b=Math.min(Math.max(-u,-m),u),M=b*(b+2*m)+g):(x=Math.max(0,-(f*u+h)),b=x>0?u:Math.min(Math.max(-u,-m),u),M=-x*x+b*(b+2*m)+g);else b=f>0?-u:u,x=Math.max(0,-(f*b+h)),M=-x*x+b*(b+2*m)+g;return n&&n.copy(this.origin).addScaledVector(this.direction,x),s&&s.copy(q_).addScaledVector(S0,b),M}intersectSphere(e,t){Sl.subVectors(e.center,this.origin);const n=Sl.dot(this.direction),s=Sl.dot(Sl)-n*n,u=e.radius*e.radius;if(s>u)return null;const f=Math.sqrt(u-s),h=n-f,m=n+f;return m<0?null:h<0?this.at(m,t):this.at(h,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,s,u,f,h,m;const g=1/this.direction.x,_=1/this.direction.y,x=1/this.direction.z,b=this.origin;return g>=0?(n=(e.min.x-b.x)*g,s=(e.max.x-b.x)*g):(n=(e.max.x-b.x)*g,s=(e.min.x-b.x)*g),_>=0?(u=(e.min.y-b.y)*_,f=(e.max.y-b.y)*_):(u=(e.max.y-b.y)*_,f=(e.min.y-b.y)*_),n>f||u>s||((u>n||isNaN(n))&&(n=u),(f=0?(h=(e.min.z-b.z)*x,m=(e.max.z-b.z)*x):(h=(e.max.z-b.z)*x,m=(e.min.z-b.z)*x),n>m||h>s)||((h>n||n!==n)&&(n=h),(m=0?n:s,t)}intersectsBox(e){return this.intersectBox(e,Sl)!==null}intersectTriangle(e,t,n,s,u){j_.subVectors(t,e),M0.subVectors(n,e),Y_.crossVectors(j_,M0);let f=this.direction.dot(Y_),h;if(f>0){if(s)return null;h=1}else if(f<0)h=-1,f=-f;else return null;Tu.subVectors(this.origin,e);const m=h*this.direction.dot(M0.crossVectors(Tu,M0));if(m<0)return null;const g=h*this.direction.dot(j_.cross(Tu));if(g<0||m+g>f)return null;const _=-h*Tu.dot(Y_);return _<0?null:this.at(_/f,u)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Xt{constructor(e,t,n,s,u,f,h,m,g,_,x,b,M,A,R,w){Xt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,s,u,f,h,m,g,_,x,b,M,A,R,w)}set(e,t,n,s,u,f,h,m,g,_,x,b,M,A,R,w){const E=this.elements;return E[0]=e,E[4]=t,E[8]=n,E[12]=s,E[1]=u,E[5]=f,E[9]=h,E[13]=m,E[2]=g,E[6]=_,E[10]=x,E[14]=b,E[3]=M,E[7]=A,E[11]=R,E[15]=w,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Xt().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return this.determinant()===0?(e.set(1,0,0),t.set(0,1,0),n.set(0,0,1),this):(e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this)}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){if(e.determinant()===0)return this.identity();const t=this.elements,n=e.elements,s=1/bh.setFromMatrixColumn(e,0).length(),u=1/bh.setFromMatrixColumn(e,1).length(),f=1/bh.setFromMatrixColumn(e,2).length();return t[0]=n[0]*s,t[1]=n[1]*s,t[2]=n[2]*s,t[3]=0,t[4]=n[4]*u,t[5]=n[5]*u,t[6]=n[6]*u,t[7]=0,t[8]=n[8]*f,t[9]=n[9]*f,t[10]=n[10]*f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,s=e.y,u=e.z,f=Math.cos(n),h=Math.sin(n),m=Math.cos(s),g=Math.sin(s),_=Math.cos(u),x=Math.sin(u);if(e.order==="XYZ"){const b=f*_,M=f*x,A=h*_,R=h*x;t[0]=m*_,t[4]=-m*x,t[8]=g,t[1]=M+A*g,t[5]=b-R*g,t[9]=-h*m,t[2]=R-b*g,t[6]=A+M*g,t[10]=f*m}else if(e.order==="YXZ"){const b=m*_,M=m*x,A=g*_,R=g*x;t[0]=b+R*h,t[4]=A*h-M,t[8]=f*g,t[1]=f*x,t[5]=f*_,t[9]=-h,t[2]=M*h-A,t[6]=R+b*h,t[10]=f*m}else if(e.order==="ZXY"){const b=m*_,M=m*x,A=g*_,R=g*x;t[0]=b-R*h,t[4]=-f*x,t[8]=A+M*h,t[1]=M+A*h,t[5]=f*_,t[9]=R-b*h,t[2]=-f*g,t[6]=h,t[10]=f*m}else if(e.order==="ZYX"){const b=f*_,M=f*x,A=h*_,R=h*x;t[0]=m*_,t[4]=A*g-M,t[8]=b*g+R,t[1]=m*x,t[5]=R*g+b,t[9]=M*g-A,t[2]=-g,t[6]=h*m,t[10]=f*m}else if(e.order==="YZX"){const b=f*m,M=f*g,A=h*m,R=h*g;t[0]=m*_,t[4]=R-b*x,t[8]=A*x+M,t[1]=x,t[5]=f*_,t[9]=-h*_,t[2]=-g*_,t[6]=M*x+A,t[10]=b-R*x}else if(e.order==="XZY"){const b=f*m,M=f*g,A=h*m,R=h*g;t[0]=m*_,t[4]=-x,t[8]=g*_,t[1]=b*x+R,t[5]=f*_,t[9]=M*x-A,t[2]=A*x-M,t[6]=h*_,t[10]=R*x+b}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(gR,e,vR)}lookAt(e,t,n){const s=this.elements;return Bs.subVectors(e,t),Bs.lengthSq()===0&&(Bs.z=1),Bs.normalize(),Au.crossVectors(n,Bs),Au.lengthSq()===0&&(Math.abs(n.z)===1?Bs.x+=1e-4:Bs.z+=1e-4,Bs.normalize(),Au.crossVectors(n,Bs)),Au.normalize(),E0.crossVectors(Bs,Au),s[0]=Au.x,s[4]=E0.x,s[8]=Bs.x,s[1]=Au.y,s[5]=E0.y,s[9]=Bs.y,s[2]=Au.z,s[6]=E0.z,s[10]=Bs.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,s=t.elements,u=this.elements,f=n[0],h=n[4],m=n[8],g=n[12],_=n[1],x=n[5],b=n[9],M=n[13],A=n[2],R=n[6],w=n[10],E=n[14],N=n[3],D=n[7],U=n[11],B=n[15],z=s[0],H=s[4],W=s[8],I=s[12],P=s[1],Z=s[5],se=s[9],te=s[13],fe=s[2],pe=s[6],Y=s[10],q=s[14],ne=s[3],be=s[7],Ne=s[11],X=s[15];return u[0]=f*z+h*P+m*fe+g*ne,u[4]=f*H+h*Z+m*pe+g*be,u[8]=f*W+h*se+m*Y+g*Ne,u[12]=f*I+h*te+m*q+g*X,u[1]=_*z+x*P+b*fe+M*ne,u[5]=_*H+x*Z+b*pe+M*be,u[9]=_*W+x*se+b*Y+M*Ne,u[13]=_*I+x*te+b*q+M*X,u[2]=A*z+R*P+w*fe+E*ne,u[6]=A*H+R*Z+w*pe+E*be,u[10]=A*W+R*se+w*Y+E*Ne,u[14]=A*I+R*te+w*q+E*X,u[3]=N*z+D*P+U*fe+B*ne,u[7]=N*H+D*Z+U*pe+B*be,u[11]=N*W+D*se+U*Y+B*Ne,u[15]=N*I+D*te+U*q+B*X,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],s=e[8],u=e[12],f=e[1],h=e[5],m=e[9],g=e[13],_=e[2],x=e[6],b=e[10],M=e[14],A=e[3],R=e[7],w=e[11],E=e[15],N=m*M-g*b,D=h*M-g*x,U=h*b-m*x,B=f*M-g*_,z=f*b-m*_,H=f*x-h*_;return t*(R*N-w*D+E*U)-n*(A*N-w*B+E*z)+s*(A*D-R*B+E*H)-u*(A*U-R*z+w*H)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const s=this.elements;return e.isVector3?(s[12]=e.x,s[13]=e.y,s[14]=e.z):(s[12]=e,s[13]=t,s[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],s=e[2],u=e[3],f=e[4],h=e[5],m=e[6],g=e[7],_=e[8],x=e[9],b=e[10],M=e[11],A=e[12],R=e[13],w=e[14],E=e[15],N=x*w*g-R*b*g+R*m*M-h*w*M-x*m*E+h*b*E,D=A*b*g-_*w*g-A*m*M+f*w*M+_*m*E-f*b*E,U=_*R*g-A*x*g+A*h*M-f*R*M-_*h*E+f*x*E,B=A*x*m-_*R*m-A*h*b+f*R*b+_*h*w-f*x*w,z=t*N+n*D+s*U+u*B;if(z===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const H=1/z;return e[0]=N*H,e[1]=(R*b*u-x*w*u-R*s*M+n*w*M+x*s*E-n*b*E)*H,e[2]=(h*w*u-R*m*u+R*s*g-n*w*g-h*s*E+n*m*E)*H,e[3]=(x*m*u-h*b*u-x*s*g+n*b*g+h*s*M-n*m*M)*H,e[4]=D*H,e[5]=(_*w*u-A*b*u+A*s*M-t*w*M-_*s*E+t*b*E)*H,e[6]=(A*m*u-f*w*u-A*s*g+t*w*g+f*s*E-t*m*E)*H,e[7]=(f*b*u-_*m*u+_*s*g-t*b*g-f*s*M+t*m*M)*H,e[8]=U*H,e[9]=(A*x*u-_*R*u-A*n*M+t*R*M+_*n*E-t*x*E)*H,e[10]=(f*R*u-A*h*u+A*n*g-t*R*g-f*n*E+t*h*E)*H,e[11]=(_*h*u-f*x*u-_*n*g+t*x*g+f*n*M-t*h*M)*H,e[12]=B*H,e[13]=(_*R*s-A*x*s+A*n*b-t*R*b-_*n*w+t*x*w)*H,e[14]=(A*h*s-f*R*s-A*n*m+t*R*m+f*n*w-t*h*w)*H,e[15]=(f*x*s-_*h*s+_*n*m-t*x*m-f*n*b+t*h*b)*H,this}scale(e){const t=this.elements,n=e.x,s=e.y,u=e.z;return t[0]*=n,t[4]*=s,t[8]*=u,t[1]*=n,t[5]*=s,t[9]*=u,t[2]*=n,t[6]*=s,t[10]*=u,t[3]*=n,t[7]*=s,t[11]*=u,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],s=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,s))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),s=Math.sin(t),u=1-n,f=e.x,h=e.y,m=e.z,g=u*f,_=u*h;return this.set(g*f+n,g*h-s*m,g*m+s*h,0,g*h+s*m,_*h+n,_*m-s*f,0,g*m-s*h,_*m+s*f,u*m*m+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,s,u,f){return this.set(1,n,u,0,e,1,f,0,t,s,1,0,0,0,0,1),this}compose(e,t,n){const s=this.elements,u=t._x,f=t._y,h=t._z,m=t._w,g=u+u,_=f+f,x=h+h,b=u*g,M=u*_,A=u*x,R=f*_,w=f*x,E=h*x,N=m*g,D=m*_,U=m*x,B=n.x,z=n.y,H=n.z;return s[0]=(1-(R+E))*B,s[1]=(M+U)*B,s[2]=(A-D)*B,s[3]=0,s[4]=(M-U)*z,s[5]=(1-(b+E))*z,s[6]=(w+N)*z,s[7]=0,s[8]=(A+D)*H,s[9]=(w-N)*H,s[10]=(1-(b+R))*H,s[11]=0,s[12]=e.x,s[13]=e.y,s[14]=e.z,s[15]=1,this}decompose(e,t,n){const s=this.elements;if(e.x=s[12],e.y=s[13],e.z=s[14],this.determinant()===0)return n.set(1,1,1),t.identity(),this;let u=bh.set(s[0],s[1],s[2]).length();const f=bh.set(s[4],s[5],s[6]).length(),h=bh.set(s[8],s[9],s[10]).length();this.determinant()<0&&(u=-u),Xr.copy(this);const g=1/u,_=1/f,x=1/h;return Xr.elements[0]*=g,Xr.elements[1]*=g,Xr.elements[2]*=g,Xr.elements[4]*=_,Xr.elements[5]*=_,Xr.elements[6]*=_,Xr.elements[8]*=x,Xr.elements[9]*=x,Xr.elements[10]*=x,t.setFromRotationMatrix(Xr),n.x=u,n.y=f,n.z=h,this}makePerspective(e,t,n,s,u,f,h=ks,m=!1){const g=this.elements,_=2*u/(t-e),x=2*u/(n-s),b=(t+e)/(t-e),M=(n+s)/(n-s);let A,R;if(m)A=u/(f-u),R=f*u/(f-u);else if(h===ks)A=-(f+u)/(f-u),R=-2*f*u/(f-u);else if(h===Yh)A=-f/(f-u),R=-f*u/(f-u);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+h);return g[0]=_,g[4]=0,g[8]=b,g[12]=0,g[1]=0,g[5]=x,g[9]=M,g[13]=0,g[2]=0,g[6]=0,g[10]=A,g[14]=R,g[3]=0,g[7]=0,g[11]=-1,g[15]=0,this}makeOrthographic(e,t,n,s,u,f,h=ks,m=!1){const g=this.elements,_=2/(t-e),x=2/(n-s),b=-(t+e)/(t-e),M=-(n+s)/(n-s);let A,R;if(m)A=1/(f-u),R=f/(f-u);else if(h===ks)A=-2/(f-u),R=-(f+u)/(f-u);else if(h===Yh)A=-1/(f-u),R=-u/(f-u);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+h);return g[0]=_,g[4]=0,g[8]=0,g[12]=b,g[1]=0,g[5]=x,g[9]=0,g[13]=M,g[2]=0,g[6]=0,g[10]=A,g[14]=R,g[3]=0,g[7]=0,g[11]=0,g[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let s=0;s<16;s++)if(t[s]!==n[s])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const bh=new j,Xr=new Xt,gR=new j(0,0,0),vR=new j(1,1,1),Au=new j,E0=new j,Bs=new j,uM=new Xt,cM=new Pa;class Gs{constructor(e=0,t=0,n=0,s=Gs.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=s}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,s=this._order){return this._x=e,this._y=t,this._z=n,this._order=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const s=e.elements,u=s[0],f=s[4],h=s[8],m=s[1],g=s[5],_=s[9],x=s[2],b=s[6],M=s[10];switch(t){case"XYZ":this._y=Math.asin(Ht(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(-_,M),this._z=Math.atan2(-f,u)):(this._x=Math.atan2(b,g),this._z=0);break;case"YXZ":this._x=Math.asin(-Ht(_,-1,1)),Math.abs(_)<.9999999?(this._y=Math.atan2(h,M),this._z=Math.atan2(m,g)):(this._y=Math.atan2(-x,u),this._z=0);break;case"ZXY":this._x=Math.asin(Ht(b,-1,1)),Math.abs(b)<.9999999?(this._y=Math.atan2(-x,M),this._z=Math.atan2(-f,g)):(this._y=0,this._z=Math.atan2(m,u));break;case"ZYX":this._y=Math.asin(-Ht(x,-1,1)),Math.abs(x)<.9999999?(this._x=Math.atan2(b,M),this._z=Math.atan2(m,u)):(this._x=0,this._z=Math.atan2(-f,g));break;case"YZX":this._z=Math.asin(Ht(m,-1,1)),Math.abs(m)<.9999999?(this._x=Math.atan2(-_,g),this._y=Math.atan2(-x,u)):(this._x=0,this._y=Math.atan2(h,M));break;case"XZY":this._z=Math.asin(-Ht(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(b,g),this._y=Math.atan2(h,u)):(this._x=Math.atan2(-_,M),this._y=0);break;default:ft("Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return uM.makeRotationFromQuaternion(e),this.setFromRotationMatrix(uM,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return cM.setFromEuler(this),this.setFromQuaternion(cM,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Gs.DEFAULT_ORDER="XYZ";class Kh{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let n=0;n0&&(s.userData=this.userData),s.layers=this.layers.mask,s.matrix=this.matrix.toArray(),s.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(s.matrixAutoUpdate=!1),this.isInstancedMesh&&(s.type="InstancedMesh",s.count=this.count,s.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(s.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(s.type="BatchedMesh",s.perObjectFrustumCulled=this.perObjectFrustumCulled,s.sortObjects=this.sortObjects,s.drawRanges=this._drawRanges,s.reservedRanges=this._reservedRanges,s.geometryInfo=this._geometryInfo.map(h=>({...h,boundingBox:h.boundingBox?h.boundingBox.toJSON():void 0,boundingSphere:h.boundingSphere?h.boundingSphere.toJSON():void 0})),s.instanceInfo=this._instanceInfo.map(h=>({...h})),s.availableInstanceIds=this._availableInstanceIds.slice(),s.availableGeometryIds=this._availableGeometryIds.slice(),s.nextIndexStart=this._nextIndexStart,s.nextVertexStart=this._nextVertexStart,s.geometryCount=this._geometryCount,s.maxInstanceCount=this._maxInstanceCount,s.maxVertexCount=this._maxVertexCount,s.maxIndexCount=this._maxIndexCount,s.geometryInitialized=this._geometryInitialized,s.matricesTexture=this._matricesTexture.toJSON(e),s.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(s.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(s.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(s.boundingBox=this.boundingBox.toJSON()));function u(h,m){return h[m.uuid]===void 0&&(h[m.uuid]=m.toJSON(e)),m.uuid}if(this.isScene)this.background&&(this.background.isColor?s.background=this.background.toJSON():this.background.isTexture&&(s.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(s.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){s.geometry=u(e.geometries,this.geometry);const h=this.geometry.parameters;if(h!==void 0&&h.shapes!==void 0){const m=h.shapes;if(Array.isArray(m))for(let g=0,_=m.length;g<_;g++){const x=m[g];u(e.shapes,x)}else u(e.shapes,m)}}if(this.isSkinnedMesh&&(s.bindMode=this.bindMode,s.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(u(e.skeletons,this.skeleton),s.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const h=[];for(let m=0,g=this.material.length;m0){s.children=[];for(let h=0;h0){s.animations=[];for(let h=0;h0&&(n.geometries=h),m.length>0&&(n.materials=m),g.length>0&&(n.textures=g),_.length>0&&(n.images=_),x.length>0&&(n.shapes=x),b.length>0&&(n.skeletons=b),M.length>0&&(n.animations=M),A.length>0&&(n.nodes=A)}return n.object=s,n;function f(h){const m=[];for(const g in h){const _=h[g];delete _.metadata,m.push(_)}return m}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n0?s.multiplyScalar(1/Math.sqrt(u)):s.set(0,0,0)}static getBarycoord(e,t,n,s,u){Wr.subVectors(s,t),El.subVectors(n,t),Q_.subVectors(e,t);const f=Wr.dot(Wr),h=Wr.dot(El),m=Wr.dot(Q_),g=El.dot(El),_=El.dot(Q_),x=f*g-h*h;if(x===0)return u.set(0,0,0),null;const b=1/x,M=(g*m-h*_)*b,A=(f*_-h*m)*b;return u.set(1-M-A,A,M)}static containsPoint(e,t,n,s){return this.getBarycoord(e,t,n,s,Tl)===null?!1:Tl.x>=0&&Tl.y>=0&&Tl.x+Tl.y<=1}static getInterpolation(e,t,n,s,u,f,h,m){return this.getBarycoord(e,t,n,s,Tl)===null?(m.x=0,m.y=0,"z"in m&&(m.z=0),"w"in m&&(m.w=0),null):(m.setScalar(0),m.addScaledVector(u,Tl.x),m.addScaledVector(f,Tl.y),m.addScaledVector(h,Tl.z),m)}static getInterpolatedAttribute(e,t,n,s,u,f){return ex.setScalar(0),tx.setScalar(0),nx.setScalar(0),ex.fromBufferAttribute(e,t),tx.fromBufferAttribute(e,n),nx.fromBufferAttribute(e,s),f.setScalar(0),f.addScaledVector(ex,u.x),f.addScaledVector(tx,u.y),f.addScaledVector(nx,u.z),f}static isFrontFacing(e,t,n,s){return Wr.subVectors(n,t),El.subVectors(e,t),Wr.cross(El).dot(s)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,s){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[s]),this}setFromAttributeAndIndices(e,t,n,s){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,s),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Wr.subVectors(this.c,this.b),El.subVectors(this.a,this.b),Wr.cross(El).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Cs.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Cs.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,s,u){return Cs.getInterpolation(e,this.a,this.b,this.c,t,n,s,u)}containsPoint(e){return Cs.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Cs.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,s=this.b,u=this.c;let f,h;Eh.subVectors(s,n),Th.subVectors(u,n),K_.subVectors(e,n);const m=Eh.dot(K_),g=Th.dot(K_);if(m<=0&&g<=0)return t.copy(n);J_.subVectors(e,s);const _=Eh.dot(J_),x=Th.dot(J_);if(_>=0&&x<=_)return t.copy(s);const b=m*x-_*g;if(b<=0&&m>=0&&_<=0)return f=m/(m-_),t.copy(n).addScaledVector(Eh,f);$_.subVectors(e,u);const M=Eh.dot($_),A=Th.dot($_);if(A>=0&&M<=A)return t.copy(u);const R=M*g-m*A;if(R<=0&&g>=0&&A<=0)return h=g/(g-A),t.copy(n).addScaledVector(Th,h);const w=_*A-M*x;if(w<=0&&x-_>=0&&M-A>=0)return gM.subVectors(u,s),h=(x-_)/(x-_+(M-A)),t.copy(s).addScaledVector(gM,h);const E=1/(w+R+b);return f=R*E,h=b*E,t.copy(n).addScaledVector(Eh,f).addScaledVector(Th,h)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const HE={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},wu={h:0,s:0,l:0},A0={h:0,s:0,l:0};function ix(r,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?r+(e-r)*6*t:t<1/2?e:t<2/3?r+(e-r)*6*(2/3-t):r}class yt{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const s=e;s&&s.isColor?this.copy(s):typeof s=="number"?this.setHex(s):typeof s=="string"&&this.setStyle(s)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Ia){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Sn.colorSpaceToWorking(this,t),this}setRGB(e,t,n,s=Sn.workingColorSpace){return this.r=e,this.g=t,this.b=n,Sn.colorSpaceToWorking(this,s),this}setHSL(e,t,n,s=Sn.workingColorSpace){if(e=wb(e,1),t=Ht(t,0,1),n=Ht(n,0,1),t===0)this.r=this.g=this.b=n;else{const u=n<=.5?n*(1+t):n+t-n*t,f=2*n-u;this.r=ix(f,u,e+1/3),this.g=ix(f,u,e),this.b=ix(f,u,e-1/3)}return Sn.colorSpaceToWorking(this,s),this}setStyle(e,t=Ia){function n(u){u!==void 0&&parseFloat(u)<1&&ft("Color: Alpha component of "+e+" will be ignored.")}let s;if(s=/^(\w+)\(([^\)]*)\)/.exec(e)){let u;const f=s[1],h=s[2];switch(f){case"rgb":case"rgba":if(u=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(h))return n(u[4]),this.setRGB(Math.min(255,parseInt(u[1],10))/255,Math.min(255,parseInt(u[2],10))/255,Math.min(255,parseInt(u[3],10))/255,t);if(u=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(h))return n(u[4]),this.setRGB(Math.min(100,parseInt(u[1],10))/100,Math.min(100,parseInt(u[2],10))/100,Math.min(100,parseInt(u[3],10))/100,t);break;case"hsl":case"hsla":if(u=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(h))return n(u[4]),this.setHSL(parseFloat(u[1])/360,parseFloat(u[2])/100,parseFloat(u[3])/100,t);break;default:ft("Color: Unknown color model "+e)}}else if(s=/^\#([A-Fa-f\d]+)$/.exec(e)){const u=s[1],f=u.length;if(f===3)return this.setRGB(parseInt(u.charAt(0),16)/15,parseInt(u.charAt(1),16)/15,parseInt(u.charAt(2),16)/15,t);if(f===6)return this.setHex(parseInt(u,16),t);ft("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Ia){const n=HE[e.toLowerCase()];return n!==void 0?this.setHex(n,t):ft("Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Nl(e.r),this.g=Nl(e.g),this.b=Nl(e.b),this}copyLinearToSRGB(e){return this.r=Wh(e.r),this.g=Wh(e.g),this.b=Wh(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Ia){return Sn.workingToColorSpace(La.copy(this),e),Math.round(Ht(La.r*255,0,255))*65536+Math.round(Ht(La.g*255,0,255))*256+Math.round(Ht(La.b*255,0,255))}getHexString(e=Ia){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Sn.workingColorSpace){Sn.workingToColorSpace(La.copy(this),t);const n=La.r,s=La.g,u=La.b,f=Math.max(n,s,u),h=Math.min(n,s,u);let m,g;const _=(h+f)/2;if(h===f)m=0,g=0;else{const x=f-h;switch(g=_<=.5?x/(f+h):x/(2-f-h),f){case n:m=(s-u)/x+(s0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){ft(`Material: parameter '${t}' has value of undefined.`);continue}const s=this[t];if(s===void 0){ft(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}s&&s.isColor?s.set(n):s&&s.isVector3&&n&&n.isVector3?s.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(n.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(n.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Kc&&(n.blending=this.blending),this.side!==Ll&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==vv&&(n.blendSrc=this.blendSrc),this.blendDst!==yv&&(n.blendDst=this.blendDst),this.blendEquation!==Du&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==ef&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==qx&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Wc&&(n.stencilFail=this.stencilFail),this.stencilZFail!==Wc&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==Wc&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.allowOverride===!1&&(n.allowOverride=!1),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function s(u){const f=[];for(const h in u){const m=u[h];delete m.metadata,f.push(m)}return f}if(t){const u=s(e.textures),f=s(e.images);u.length>0&&(n.textures=u),f.length>0&&(n.images=f)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const s=t.length;n=new Array(s);for(let u=0;u!==s;++u)n[u]=t[u].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.allowOverride=e.allowOverride,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class Vu extends Ba{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new yt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Gs,this.combine=Am,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Rl=MR();function MR(){const r=new ArrayBuffer(4),e=new Float32Array(r),t=new Uint32Array(r),n=new Uint32Array(512),s=new Uint32Array(512);for(let m=0;m<256;++m){const g=m-127;g<-27?(n[m]=0,n[m|256]=32768,s[m]=24,s[m|256]=24):g<-14?(n[m]=1024>>-g-14,n[m|256]=1024>>-g-14|32768,s[m]=-g-1,s[m|256]=-g-1):g<=15?(n[m]=g+15<<10,n[m|256]=g+15<<10|32768,s[m]=13,s[m|256]=13):g<128?(n[m]=31744,n[m|256]=64512,s[m]=24,s[m|256]=24):(n[m]=31744,n[m|256]=64512,s[m]=13,s[m|256]=13)}const u=new Uint32Array(2048),f=new Uint32Array(64),h=new Uint32Array(64);for(let m=1;m<1024;++m){let g=m<<13,_=0;for(;(g&8388608)===0;)g<<=1,_-=8388608;g&=-8388609,_+=947912704,u[m]=g|_}for(let m=1024;m<2048;++m)u[m]=939524096+(m-1024<<13);for(let m=1;m<31;++m)f[m]=m<<23;f[31]=1199570944,f[32]=2147483648;for(let m=33;m<63;++m)f[m]=2147483648+(m-32<<23);f[63]=3347054592;for(let m=1;m<64;++m)m!==32&&(h[m]=1024);return{floatView:e,uint32View:t,baseTable:n,shiftTable:s,mantissaTable:u,exponentTable:f,offsetTable:h}}function As(r){Math.abs(r)>65504&&ft("DataUtils.toHalfFloat(): Value out of range."),r=Ht(r,-65504,65504),Rl.floatView[0]=r;const e=Rl.uint32View[0],t=e>>23&511;return Rl.baseTable[t]+((e&8388607)>>Rl.shiftTable[t])}function Yp(r){const e=r>>10;return Rl.uint32View[0]=Rl.mantissaTable[Rl.offsetTable[e]+(r&1023)]+Rl.exponentTable[e],Rl.floatView[0]}class ER{static toHalfFloat(e){return As(e)}static fromHalfFloat(e){return Yp(e)}}const ji=new j,w0=new ze;let TR=0;class Xn{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:TR++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=pm,this.updateRanges=[],this.gpuType=is,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let s=0,u=this.itemSize;st.count&&ft("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new za);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){Rt("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new j(-1/0,-1/0,-1/0),new j(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,s=t.length;n0&&(e.userData=this.userData),this.parameters!==void 0){const m=this.parameters;for(const g in m)m[g]!==void 0&&(e[g]=m[g]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const m in n){const g=n[m];e.data.attributes[m]=g.toJSON(e.data)}const s={};let u=!1;for(const m in this.morphAttributes){const g=this.morphAttributes[m],_=[];for(let x=0,b=g.length;x0&&(s[m]=_,u=!0)}u&&(e.data.morphAttributes=s,e.data.morphTargetsRelative=this.morphTargetsRelative);const f=this.groups;f.length>0&&(e.data.groups=JSON.parse(JSON.stringify(f)));const h=this.boundingSphere;return h!==null&&(e.data.boundingSphere=h.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone());const s=e.attributes;for(const g in s){const _=s[g];this.setAttribute(g,_.clone(t))}const u=e.morphAttributes;for(const g in u){const _=[],x=u[g];for(let b=0,M=x.length;b0){const s=t[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let u=0,f=s.length;u(e.far-e.near)**2))&&(vM.copy(u).invert(),Dc.copy(e.ray).applyMatrix4(vM),!(n.boundingBox!==null&&Dc.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Dc)))}_computeIntersections(e,t,n){let s;const u=this.geometry,f=this.material,h=u.index,m=u.attributes.position,g=u.attributes.uv,_=u.attributes.uv1,x=u.attributes.normal,b=u.groups,M=u.drawRange;if(h!==null)if(Array.isArray(f))for(let A=0,R=b.length;At.far?null:{distance:g,point:U0.clone(),object:r}}function I0(r,e,t,n,s,u,f,h,m,g){r.getVertexPosition(h,R0),r.getVertexPosition(m,N0),r.getVertexPosition(g,D0);const _=UR(r,e,t,n,R0,N0,D0,_M);if(_){const x=new j;Cs.getBarycoord(_M,R0,N0,D0,x),s&&(_.uv=Cs.getInterpolatedAttribute(s,h,m,g,x,new ze)),u&&(_.uv1=Cs.getInterpolatedAttribute(u,h,m,g,x,new ze)),f&&(_.normal=Cs.getInterpolatedAttribute(f,h,m,g,x,new j),_.normal.dot(n.direction)>0&&_.normal.multiplyScalar(-1));const b={a:h,b:m,c:g,normal:new j,materialIndex:0};Cs.getNormal(R0,N0,D0,b.normal),_.face=b,_.barycoord=x}return _}class lf extends Kt{constructor(e=1,t=1,n=1,s=1,u=1,f=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:s,heightSegments:u,depthSegments:f};const h=this;s=Math.floor(s),u=Math.floor(u),f=Math.floor(f);const m=[],g=[],_=[],x=[];let b=0,M=0;A("z","y","x",-1,-1,n,t,e,f,u,0),A("z","y","x",1,-1,n,t,-e,f,u,1),A("x","z","y",1,1,e,n,t,s,f,2),A("x","z","y",1,-1,e,n,-t,s,f,3),A("x","y","z",1,-1,e,t,n,s,u,4),A("x","y","z",-1,-1,e,t,-n,s,u,5),this.setIndex(m),this.setAttribute("position",new bt(g,3)),this.setAttribute("normal",new bt(_,3)),this.setAttribute("uv",new bt(x,2));function A(R,w,E,N,D,U,B,z,H,W,I){const P=U/H,Z=B/W,se=U/2,te=B/2,fe=z/2,pe=H+1,Y=W+1;let q=0,ne=0;const be=new j;for(let Ne=0;Ne0?1:-1,_.push(be.x,be.y,be.z),x.push(oe/H),x.push(1-Ne/W),q+=1}}for(let Ne=0;Ne0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const s in this.extensions)this.extensions[s]===!0&&(n[s]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class Ry extends Cn{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Xt,this.projectionMatrix=new Xt,this.projectionMatrixInverse=new Xt,this.coordinateSystem=ks,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Cu=new j,xM=new ze,bM=new ze;class zi extends Ry{constructor(e=50,t=1,n=.1,s=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=s,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=Qh*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Jc*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Qh*2*Math.atan(Math.tan(Jc*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){Cu.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(Cu.x,Cu.y).multiplyScalar(-e/Cu.z),Cu.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(Cu.x,Cu.y).multiplyScalar(-e/Cu.z)}getViewSize(e,t){return this.getViewBounds(e,xM,bM),t.subVectors(bM,xM)}setViewOffset(e,t,n,s,u,f){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=s,this.view.width=u,this.view.height=f,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Jc*.5*this.fov)/this.zoom,n=2*t,s=this.aspect*n,u=-.5*s;const f=this.view;if(this.view!==null&&this.view.enabled){const m=f.fullWidth,g=f.fullHeight;u+=f.offsetX*s/m,t-=f.offsetY*n/g,s*=f.width/m,n*=f.height/g}const h=this.filmOffset;h!==0&&(u+=e*h/this.getFilmWidth()),this.projectionMatrix.makePerspective(u,u+s,t,t-n,e,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const wh=-90,Ch=1;class WE extends Cn{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const s=new zi(wh,Ch,e,t);s.layers=this.layers,this.add(s);const u=new zi(wh,Ch,e,t);u.layers=this.layers,this.add(u);const f=new zi(wh,Ch,e,t);f.layers=this.layers,this.add(f);const h=new zi(wh,Ch,e,t);h.layers=this.layers,this.add(h);const m=new zi(wh,Ch,e,t);m.layers=this.layers,this.add(m);const g=new zi(wh,Ch,e,t);g.layers=this.layers,this.add(g)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[n,s,u,f,h,m]=t;for(const g of t)this.remove(g);if(e===ks)n.up.set(0,1,0),n.lookAt(1,0,0),s.up.set(0,1,0),s.lookAt(-1,0,0),u.up.set(0,0,-1),u.lookAt(0,1,0),f.up.set(0,0,1),f.lookAt(0,-1,0),h.up.set(0,1,0),h.lookAt(0,0,1),m.up.set(0,1,0),m.lookAt(0,0,-1);else if(e===Yh)n.up.set(0,-1,0),n.lookAt(-1,0,0),s.up.set(0,-1,0),s.lookAt(1,0,0),u.up.set(0,0,1),u.lookAt(0,1,0),f.up.set(0,0,-1),f.lookAt(0,-1,0),h.up.set(0,-1,0),h.lookAt(0,0,1),m.up.set(0,-1,0),m.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const g of t)this.add(g),g.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:s}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[u,f,h,m,g,_]=this.children,x=e.getRenderTarget(),b=e.getActiveCubeFace(),M=e.getActiveMipmapLevel(),A=e.xr.enabled;e.xr.enabled=!1;const R=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,s),e.render(t,u),e.setRenderTarget(n,1,s),e.render(t,f),e.setRenderTarget(n,2,s),e.render(t,h),e.setRenderTarget(n,3,s),e.render(t,m),e.setRenderTarget(n,4,s),e.render(t,g),n.texture.generateMipmaps=R,e.setRenderTarget(n,5,s),e.render(t,_),e.setRenderTarget(x,b,M),e.xr.enabled=A,n.texture.needsPMREMUpdate=!0}}class Cm extends wi{constructor(e=[],t=zo,n,s,u,f,h,m,g,_){super(e,t,n,s,u,f,h,m,g,_),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Db extends Hs{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},s=[n,n,n,n,n,n];this.texture=new Cm(s),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},s=new lf(5,5,5),u=new yr({name:"CubemapFromEquirect",uniforms:Jh(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:as,blending:Po});u.uniforms.tEquirect.value=t;const f=new Yi(s,u),h=t.minFilter;return t.minFilter===Io&&(t.minFilter=oi),new WE(1,10,this).update(e,f),t.minFilter=h,f.geometry.dispose(),f.material.dispose(),this}clear(e,t=!0,n=!0,s=!0){const u=e.getRenderTarget();for(let f=0;f<6;f++)e.setRenderTarget(this,f),e.clear(t,n,s);e.setRenderTarget(u)}}class Gh extends Cn{constructor(){super(),this.isGroup=!0,this.type="Group"}}const zR={type:"move"};class pv{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Gh,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Gh,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new j,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new j),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Gh,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new j,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new j),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let s=null,u=null,f=null;const h=this._targetRay,m=this._grip,g=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(g&&e.hand){f=!0;for(const R of e.hand.values()){const w=t.getJointPose(R,n),E=this._getHandJoint(g,R);w!==null&&(E.matrix.fromArray(w.transform.matrix),E.matrix.decompose(E.position,E.rotation,E.scale),E.matrixWorldNeedsUpdate=!0,E.jointRadius=w.radius),E.visible=w!==null}const _=g.joints["index-finger-tip"],x=g.joints["thumb-tip"],b=_.position.distanceTo(x.position),M=.02,A=.005;g.inputState.pinching&&b>M+A?(g.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!g.inputState.pinching&&b<=M-A&&(g.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else m!==null&&e.gripSpace&&(u=t.getPose(e.gripSpace,n),u!==null&&(m.matrix.fromArray(u.transform.matrix),m.matrix.decompose(m.position,m.rotation,m.scale),m.matrixWorldNeedsUpdate=!0,u.linearVelocity?(m.hasLinearVelocity=!0,m.linearVelocity.copy(u.linearVelocity)):m.hasLinearVelocity=!1,u.angularVelocity?(m.hasAngularVelocity=!0,m.angularVelocity.copy(u.angularVelocity)):m.hasAngularVelocity=!1));h!==null&&(s=t.getPose(e.targetRaySpace,n),s===null&&u!==null&&(s=u),s!==null&&(h.matrix.fromArray(s.transform.matrix),h.matrix.decompose(h.position,h.rotation,h.scale),h.matrixWorldNeedsUpdate=!0,s.linearVelocity?(h.hasLinearVelocity=!0,h.linearVelocity.copy(s.linearVelocity)):h.hasLinearVelocity=!1,s.angularVelocity?(h.hasAngularVelocity=!0,h.angularVelocity.copy(s.angularVelocity)):h.hasAngularVelocity=!1,this.dispatchEvent(zR)))}return h!==null&&(h.visible=s!==null),m!==null&&(m.visible=u!==null),g!==null&&(g.visible=f!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new Gh;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class Ny{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new yt(e),this.density=t}clone(){return new Ny(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class Dy{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new yt(e),this.near=t,this.far=n}clone(){return new Dy(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Lb extends Cn{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Gs,this.environmentIntensity=1,this.environmentRotation=new Gs,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class Ly{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=pm,this.updateRanges=[],this.version=0,this.uuid=Vs()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let s=0,u=this.stride;se.far||t.push({distance:m,point:Bp.clone(),uv:Cs.getInterpolation(Bp,O0,kp,P0,SM,rx,MM,new ze),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function z0(r,e,t,n,s,u){Lh.subVectors(r,t).addScalar(.5).multiply(n),s!==void 0?(Fp.x=u*Lh.x-s*Lh.y,Fp.y=s*Lh.x+u*Lh.y):Fp.copy(Lh),r.copy(e),r.x+=Fp.x,r.y+=Fp.y,r.applyMatrix4(qE)}const B0=new j,EM=new j;class YE extends Cn{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let n=0,s=t.length;n0){let n,s;for(n=1,s=t.length;n0){B0.setFromMatrixPosition(this.matrixWorld);const s=e.ray.origin.distanceTo(B0);this.getObjectForDistance(s).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){B0.setFromMatrixPosition(e.matrixWorld),EM.setFromMatrixPosition(this.matrixWorld);const n=B0.distanceTo(EM)/e.zoom;t[0].object.visible=!0;let s,u;for(s=1,u=t.length;s=f)t[s-1].object.visible=!1,t[s].object.visible=!0;else break}for(this._currentLevel=s-1;s1?null:t.copy(e.start).addScaledVector(n,u)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||HR.getNormalMatrix(e),s=this.coplanarPoint(ux).applyMatrix4(e),u=this.normal.applyMatrix3(n).normalize();return this.constant=-s.dot(u),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Lc=new _a,GR=new ze(.5,.5),V0=new j;class ad{constructor(e=new wl,t=new wl,n=new wl,s=new wl,u=new wl,f=new wl){this.planes=[e,t,n,s,u,f]}set(e,t,n,s,u,f){const h=this.planes;return h[0].copy(e),h[1].copy(t),h[2].copy(n),h[3].copy(s),h[4].copy(u),h[5].copy(f),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=ks,n=!1){const s=this.planes,u=e.elements,f=u[0],h=u[1],m=u[2],g=u[3],_=u[4],x=u[5],b=u[6],M=u[7],A=u[8],R=u[9],w=u[10],E=u[11],N=u[12],D=u[13],U=u[14],B=u[15];if(s[0].setComponents(g-f,M-_,E-A,B-N).normalize(),s[1].setComponents(g+f,M+_,E+A,B+N).normalize(),s[2].setComponents(g+h,M+x,E+R,B+D).normalize(),s[3].setComponents(g-h,M-x,E-R,B-D).normalize(),n)s[4].setComponents(m,b,w,U).normalize(),s[5].setComponents(g-m,M-b,E-w,B-U).normalize();else if(s[4].setComponents(g-m,M-b,E-w,B-U).normalize(),t===ks)s[5].setComponents(g+m,M+b,E+w,B+U).normalize();else if(t===Yh)s[5].setComponents(m,b,w,U).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Lc.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Lc.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Lc)}intersectsSprite(e){Lc.center.set(0,0,0);const t=GR.distanceTo(e.center);return Lc.radius=.7071067811865476+t,Lc.applyMatrix4(e.matrixWorld),this.intersectsSphere(Lc)}intersectsSphere(e){const t=this.planes,n=e.center,s=-e.radius;for(let u=0;u<6;u++)if(t[u].distanceToPoint(n)0?e.max.x:e.min.x,V0.y=s.normal.y>0?e.max.y:e.min.y,V0.z=s.normal.z>0?e.max.z:e.min.z,s.distanceToPoint(V0)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}const No=new Xt,Do=new ad;class Iy{constructor(){this.coordinateSystem=ks}intersectsObject(e,t){if(!t.isArrayCamera||t.cameras.length===0)return!1;for(let n=0;n=u.length&&u.push({start:-1,count:-1,z:-1,index:-1});const h=u[this.index];f.push(h),this.index++,h.start=e,h.count=t,h.z=n,h.index=s}reset(){this.list.length=0,this.index=0}}const Ts=new Xt,jR=new yt(1,1,1),UM=new ad,YR=new Iy,H0=new za,Uc=new _a,Gp=new j,IM=new j,ZR=new j,fx=new qR,Ua=new Yi,G0=[];function QR(r,e,t=0){const n=e.itemSize;if(r.isInterleavedBufferAttribute||r.array.constructor!==e.array.constructor){const s=r.count;for(let u=0;u65535?new Uint32Array(s):new Uint16Array(s);t.setIndex(new Xn(u,1))}this._geometryInitialized=!0}}_validateGeometry(e){const t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(const n in t.attributes){if(!e.hasAttribute(n))throw new Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);const s=e.getAttribute(n),u=t.getAttribute(n);if(s.itemSize!==u.itemSize||s.normalized!==u.normalized)throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){const t=this._instanceInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){const t=this._geometryInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new za);const e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let n=0,s=t.length;n=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw new Error("THREE.BatchedMesh: Maximum item count reached.");const n={visible:!0,active:!0,geometryIndex:e};let s=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(cx),s=this._availableInstanceIds.shift(),this._instanceInfo[s]=n):(s=this._instanceInfo.length,this._instanceInfo.push(n));const u=this._matricesTexture;Ts.identity().toArray(u.image.data,s*16),u.needsUpdate=!0;const f=this._colorsTexture;return f&&(jR.toArray(f.image.data,s*4),f.needsUpdate=!0),this._visibilityChanged=!0,s}addGeometry(e,t=-1,n=-1){this._initializeGeometry(e),this._validateGeometry(e);const s={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},u=this._geometryInfo;s.vertexStart=this._nextVertexStart,s.reservedVertexCount=t===-1?e.getAttribute("position").count:t;const f=e.getIndex();if(f!==null&&(s.indexStart=this._nextIndexStart,s.reservedIndexCount=n===-1?f.count:n),s.indexStart!==-1&&s.indexStart+s.reservedIndexCount>this._maxIndexCount||s.vertexStart+s.reservedVertexCount>this._maxVertexCount)throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");let m;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(cx),m=this._availableGeometryIds.shift(),u[m]=s):(m=this._geometryCount,this._geometryCount++,u.push(s)),this.setGeometryAt(m,e),this._nextIndexStart=s.indexStart+s.reservedIndexCount,this._nextVertexStart=s.vertexStart+s.reservedVertexCount,m}setGeometryAt(e,t){if(e>=this._geometryCount)throw new Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);const n=this.geometry,s=n.getIndex()!==null,u=n.getIndex(),f=t.getIndex(),h=this._geometryInfo[e];if(s&&f.count>h.reservedIndexCount||t.attributes.position.count>h.reservedVertexCount)throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");const m=h.vertexStart,g=h.reservedVertexCount;h.vertexCount=t.getAttribute("position").count;for(const _ in n.attributes){const x=t.getAttribute(_),b=n.getAttribute(_);QR(x,b,m);const M=x.itemSize;for(let A=x.count,R=g;A=t.length||t[e].active===!1)return this;const n=this._instanceInfo;for(let s=0,u=n.length;sh).sort((f,h)=>n[f].vertexStart-n[h].vertexStart),u=this.geometry;for(let f=0,h=n.length;f=this._geometryCount)return null;const n=this.geometry,s=this._geometryInfo[e];if(s.boundingBox===null){const u=new za,f=n.index,h=n.attributes.position;for(let m=s.start,g=s.start+s.count;m=this._geometryCount)return null;const n=this.geometry,s=this._geometryInfo[e];if(s.boundingSphere===null){const u=new _a;this.getBoundingBoxAt(e,H0),H0.getCenter(u.center);const f=n.index,h=n.attributes.position;let m=0;for(let g=s.start,_=s.start+s.count;g<_;g++){let x=g;f&&(x=f.getX(x)),Gp.fromBufferAttribute(h,x),m=Math.max(m,u.center.distanceToSquared(Gp))}u.radius=Math.sqrt(m),s.boundingSphere=u}return t.copy(s.boundingSphere),t}setMatrixAt(e,t){this.validateInstanceId(e);const n=this._matricesTexture,s=this._matricesTexture.image.data;return t.toArray(s,e*16),n.needsUpdate=!0,this}getMatrixAt(e,t){return this.validateInstanceId(e),t.fromArray(this._matricesTexture.image.data,e*16)}setColorAt(e,t){return this.validateInstanceId(e),this._colorsTexture===null&&this._initColorsTexture(),t.toArray(this._colorsTexture.image.data,e*4),this._colorsTexture.needsUpdate=!0,this}getColorAt(e,t){return this.validateInstanceId(e),t.fromArray(this._colorsTexture.image.data,e*4)}setVisibleAt(e,t){return this.validateInstanceId(e),this._instanceInfo[e].visible===t?this:(this._instanceInfo[e].visible=t,this._visibilityChanged=!0,this)}getVisibleAt(e){return this.validateInstanceId(e),this._instanceInfo[e].visible}setGeometryIdAt(e,t){return this.validateInstanceId(e),this.validateGeometryId(t),this._instanceInfo[e].geometryIndex=t,this}getGeometryIdAt(e){return this.validateInstanceId(e),this._instanceInfo[e].geometryIndex}getGeometryRangeAt(e,t={}){this.validateGeometryId(e);const n=this._geometryInfo[e];return t.vertexStart=n.vertexStart,t.vertexCount=n.vertexCount,t.reservedVertexCount=n.reservedVertexCount,t.indexStart=n.indexStart,t.indexCount=n.indexCount,t.reservedIndexCount=n.reservedIndexCount,t.start=n.start,t.count=n.count,t}setInstanceCount(e){const t=this._availableInstanceIds,n=this._instanceInfo;for(t.sort(cx);t[t.length-1]===n.length-1;)n.pop(),t.pop();if(eh.active);if(Math.max(...n.map(h=>h.vertexStart+h.reservedVertexCount))>e)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...n.map(m=>m.indexStart+m.reservedIndexCount))>t)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);const u=this.geometry;u.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new Kt,this._initializeGeometry(u));const f=this.geometry;u.index&&Ic(u.index.array,f.index.array);for(const h in u.attributes)Ic(u.attributes[h].array,f.attributes[h].array)}raycast(e,t){const n=this._instanceInfo,s=this._geometryInfo,u=this.matrixWorld,f=this.geometry;Ua.material=this.material,Ua.geometry.index=f.index,Ua.geometry.attributes=f.attributes,Ua.geometry.boundingBox===null&&(Ua.geometry.boundingBox=new za),Ua.geometry.boundingSphere===null&&(Ua.geometry.boundingSphere=new _a);for(let h=0,m=n.length;h({...t,boundingBox:t.boundingBox!==null?t.boundingBox.clone():null,boundingSphere:t.boundingSphere!==null?t.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(t=>({...t})),this._availableInstanceIds=e._availableInstanceIds.slice(),this._availableGeometryIds=e._availableGeometryIds.slice(),this._nextIndexStart=e._nextIndexStart,this._nextVertexStart=e._nextVertexStart,this._geometryCount=e._geometryCount,this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._indirectTexture=e._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(e,t,n,s,u){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const f=s.getIndex(),h=f===null?1:f.array.BYTES_PER_ELEMENT,m=this._instanceInfo,g=this._multiDrawStarts,_=this._multiDrawCounts,x=this._geometryInfo,b=this.perObjectFrustumCulled,M=this._indirectTexture,A=M.image.data,R=n.isArrayCamera?YR:UM;b&&!n.isArrayCamera&&(Ts.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),UM.setFromProjectionMatrix(Ts,n.coordinateSystem,n.reversedDepth));let w=0;if(this.sortObjects){Ts.copy(this.matrixWorld).invert(),Gp.setFromMatrixPosition(n.matrixWorld).applyMatrix4(Ts),IM.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(Ts);for(let D=0,U=m.length;D0){const s=t[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let u=0,f=s.length;un)return;hx.applyMatrix4(r.matrixWorld);const g=e.ray.origin.distanceTo(hx);if(!(ge.far))return{distance:g,point:PM.clone().applyMatrix4(r.matrixWorld),index:f,face:null,faceIndex:null,barycoord:null,object:r}}const zM=new j,BM=new j;class Vo extends Fu{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[];for(let s=0,u=t.count;s0){const s=t[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let u=0,f=s.length;us.far)return;u.push({distance:g,distanceToRay:Math.sqrt(h),point:m,index:e,face:null,faceIndex:null,barycoord:null,object:f})}}class eT extends wi{constructor(e,t,n,s,u=oi,f=oi,h,m,g){super(e,t,n,s,u,f,h,m,g),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;const _=this;function x(){_.needsUpdate=!0,_._requestVideoFrameCallbackId=e.requestVideoFrameCallback(x)}"requestVideoFrameCallback"in e&&(this._requestVideoFrameCallbackId=e.requestVideoFrameCallback(x))}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}}class KR extends eT{constructor(e,t,n,s,u,f,h,m){super({},e,t,n,s,u,f,h,m),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}}class JR extends wi{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=Bi,this.minFilter=Bi,this.generateMipmaps=!1,this.needsUpdate=!0}}class Oy extends wi{constructor(e,t,n,s,u,f,h,m,g,_,x,b){super(null,f,h,m,g,_,s,u,x,b),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class $R extends Oy{constructor(e,t,n,s,u,f){super(e,t,n,u,f),this.isCompressedArrayTexture=!0,this.image.depth=s,this.wrapR=Rs,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class eN extends Oy{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,zo),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class tN extends wi{constructor(e,t,n,s,u,f,h,m,g){super(e,t,n,s,u,f,h,m,g),this.isCanvasTexture=!0,this.needsUpdate=!0}}class ed extends wi{constructor(e,t,n=vr,s,u,f,h=Bi,m=Bi,g,_=Fo,x=1){if(_!==Fo&&_!==Uu)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const b={width:e,height:t,depth:x};super(b,s,u,f,h,m,_,n,g),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Iu(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class tT extends ed{constructor(e,t=vr,n=zo,s,u,f=Bi,h=Bi,m,g=Fo){const _={width:e,height:e,depth:1},x=[_,_,_,_,_,_];super(e,e,t,n,s,u,f,h,m,g),this.image=x,this.isCubeDepthTexture=!0,this.isCubeTexture=!0}get images(){return this.image}set images(e){this.image=e}}class Pb extends wi{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}}class Py extends Kt{constructor(e=1,t=1,n=4,s=8,u=1){super(),this.type="CapsuleGeometry",this.parameters={radius:e,height:t,capSegments:n,radialSegments:s,heightSegments:u},t=Math.max(0,t),n=Math.max(1,Math.floor(n)),s=Math.max(3,Math.floor(s)),u=Math.max(1,Math.floor(u));const f=[],h=[],m=[],g=[],_=t/2,x=Math.PI/2*e,b=t,M=2*x+b,A=n*2+u,R=s+1,w=new j,E=new j;for(let N=0;N<=A;N++){let D=0,U=0,B=0,z=0;if(N<=n){const I=N/n,P=I*Math.PI/2;U=-_-e*Math.cos(P),B=e*Math.sin(P),z=-e*Math.cos(P),D=I*x}else if(N<=n+u){const I=(N-n)/u;U=-_+I*t,B=e,z=0,D=x+I*b}else{const I=(N-n-u)/n,P=I*Math.PI/2;U=_+e*Math.sin(P),B=e*Math.cos(P),z=e*Math.sin(P),D=x+b+I*x}const H=Math.max(0,Math.min(1,D/M));let W=0;N===0?W=.5/s:N===A&&(W=-.5/s);for(let I=0;I<=s;I++){const P=I/s,Z=P*Math.PI*2,se=Math.sin(Z),te=Math.cos(Z);E.x=-B*te,E.y=U,E.z=B*se,h.push(E.x,E.y,E.z),w.set(-B*te,z,B*se),w.normalize(),m.push(w.x,w.y,w.z),g.push(P+W,H)}if(N>0){const I=(N-1)*R;for(let P=0;P0&&D(!0),t>0&&D(!1)),this.setIndex(_),this.setAttribute("position",new bt(x,3)),this.setAttribute("normal",new bt(b,3)),this.setAttribute("uv",new bt(M,2));function N(){const U=new j,B=new j;let z=0;const H=(t-e)/n;for(let W=0;W<=u;W++){const I=[],P=W/u,Z=P*(t-e)+e;for(let se=0;se<=s;se++){const te=se/s,fe=te*m+h,pe=Math.sin(fe),Y=Math.cos(fe);B.x=Z*pe,B.y=-P*n+w,B.z=Z*Y,x.push(B.x,B.y,B.z),U.set(pe,H,Y).normalize(),b.push(U.x,U.y,U.z),M.push(te,1-P),I.push(A++)}R.push(I)}for(let W=0;W0||I!==0)&&(_.push(P,Z,te),z+=3),(t>0||I!==u-1)&&(_.push(Z,se,te),z+=3)}g.addGroup(E,z,0),E+=z}function D(U){const B=A,z=new ze,H=new j;let W=0;const I=U===!0?e:t,P=U===!0?1:-1;for(let se=1;se<=s;se++)x.push(0,w*P,0),b.push(0,P,0),M.push(.5,.5),A++;const Z=A;for(let se=0;se<=s;se++){const fe=se/s*m+h,pe=Math.cos(fe),Y=Math.sin(fe);H.x=I*Y,H.y=w*P,H.z=I*pe,x.push(H.x,H.y,H.z),b.push(0,P,0),z.x=pe*.5+.5,z.y=Y*.5*P+.5,M.push(z.x,z.y),A++}for(let se=0;se.9&&H<.1&&(D<.2&&(f[N+0]+=1),U<.2&&(f[N+2]+=1),B<.2&&(f[N+4]+=1))}}function b(N){u.push(N.x,N.y,N.z)}function M(N,D){const U=N*3;D.x=e[U+0],D.y=e[U+1],D.z=e[U+2]}function A(){const N=new j,D=new j,U=new j,B=new j,z=new ze,H=new ze,W=new ze;for(let I=0,P=0;I0)m=s-1;else{m=s;break}if(s=m,n[s]===f)return s/(u-1);const _=n[s],b=n[s+1]-_,M=(f-_)/b;return(s+M)/(u-1)}getTangent(e,t){let s=e-1e-4,u=e+1e-4;s<0&&(s=0),u>1&&(u=1);const f=this.getPoint(s),h=this.getPoint(u),m=t||(f.isVector2?new ze:new j);return m.copy(h).sub(f).normalize(),m}getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){const n=new j,s=[],u=[],f=[],h=new j,m=new Xt;for(let M=0;M<=e;M++){const A=M/e;s[M]=this.getTangentAt(A,new j)}u[0]=new j,f[0]=new j;let g=Number.MAX_VALUE;const _=Math.abs(s[0].x),x=Math.abs(s[0].y),b=Math.abs(s[0].z);_<=g&&(g=_,n.set(1,0,0)),x<=g&&(g=x,n.set(0,1,0)),b<=g&&n.set(0,0,1),h.crossVectors(s[0],n).normalize(),u[0].crossVectors(s[0],h),f[0].crossVectors(s[0],u[0]);for(let M=1;M<=e;M++){if(u[M]=u[M-1].clone(),f[M]=f[M-1].clone(),h.crossVectors(s[M-1],s[M]),h.length()>Number.EPSILON){h.normalize();const A=Math.acos(Ht(s[M-1].dot(s[M]),-1,1));u[M].applyMatrix4(m.makeRotationAxis(h,A))}f[M].crossVectors(s[M],u[M])}if(t===!0){let M=Math.acos(Ht(u[0].dot(u[e]),-1,1));M/=e,s[0].dot(h.crossVectors(u[0],u[e]))>0&&(M=-M);for(let A=1;A<=e;A++)u[A].applyMatrix4(m.makeRotationAxis(s[A],M*A)),f[A].crossVectors(s[A],u[A])}return{tangents:s,normals:u,binormals:f}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class Fy extends Zr{constructor(e=0,t=0,n=1,s=1,u=0,f=Math.PI*2,h=!1,m=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=s,this.aStartAngle=u,this.aEndAngle=f,this.aClockwise=h,this.aRotation=m}getPoint(e,t=new ze){const n=t,s=Math.PI*2;let u=this.aEndAngle-this.aStartAngle;const f=Math.abs(u)s;)u-=s;u0?0:(Math.floor(Math.abs(h)/u)+1)*u:m===0&&h===u-1&&(h=u-2,m=1);let g,_;this.closed||h>0?g=s[(h-1)%u]:(K0.subVectors(s[0],s[1]).add(s[0]),g=K0);const x=s[h%u],b=s[(h+1)%u];if(this.closed||h+2s.length-2?s.length-1:f+1],x=s[f>s.length-3?s.length-1:f+2];return n.set(VM(h,m.x,g.x,_.x,x.x),VM(h,m.y,g.y,_.y,x.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){const f=s[u]-n,h=this.curves[u],m=h.getLength(),g=m===0?0:1-f/m;return h.getPointAt(g,t)}u++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let n=0,s=this.curves.length;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){const x=g.getPoint(0);x.equals(this.currentPoint)||this.lineTo(x.x,x.y)}this.curves.push(g);const _=g.getPoint(1);return this.currentPoint.copy(_),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class $c extends ly{constructor(e){super(e),this.uuid=Vs(),this.type="Shape",this.holes=[]}getPointsHoles(e){const t=[];for(let n=0,s=this.holes.length;n80*t){h=r[0],m=r[1];let _=h,x=m;for(let b=t;b_&&(_=M),A>x&&(x=A)}g=Math.max(_-h,x-m),g=g!==0?32767/g:0}return vm(u,f,t,h,m,g,0),f}function lT(r,e,t,n,s){let u;if(s===TN(r,e,t,n)>0)for(let f=e;f=e;f-=n)u=HM(f/n|0,r[f],r[f+1],u);return u&&td(u,u.next)&&(_m(u),u=u.next),u}function af(r,e){if(!r)return r;e||(e=r);let t=r,n;do if(n=!1,!t.steiner&&(td(t,t.next)||_i(t.prev,t,t.next)===0)){if(_m(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function vm(r,e,t,n,s,u,f){if(!r)return;!f&&u&&_N(r,n,s,u);let h=r;for(;r.prev!==r.next;){const m=r.prev,g=r.next;if(u?fN(r,n,s,u):cN(r)){e.push(m.i,r.i,g.i),_m(r),r=g.next,h=g.next;continue}if(r=g,r===h){f?f===1?(r=hN(af(r),e),vm(r,e,t,n,s,u,2)):f===2&&dN(r,e,t,n,s,u):vm(af(r),e,t,n,s,u,1);break}}}function cN(r){const e=r.prev,t=r,n=r.next;if(_i(e,t,n)>=0)return!1;const s=e.x,u=t.x,f=n.x,h=e.y,m=t.y,g=n.y,_=Math.min(s,u,f),x=Math.min(h,m,g),b=Math.max(s,u,f),M=Math.max(h,m,g);let A=n.next;for(;A!==e;){if(A.x>=_&&A.x<=b&&A.y>=x&&A.y<=M&&Zp(s,h,u,m,f,g,A.x,A.y)&&_i(A.prev,A,A.next)>=0)return!1;A=A.next}return!0}function fN(r,e,t,n){const s=r.prev,u=r,f=r.next;if(_i(s,u,f)>=0)return!1;const h=s.x,m=u.x,g=f.x,_=s.y,x=u.y,b=f.y,M=Math.min(h,m,g),A=Math.min(_,x,b),R=Math.max(h,m,g),w=Math.max(_,x,b),E=Zx(M,A,e,t,n),N=Zx(R,w,e,t,n);let D=r.prevZ,U=r.nextZ;for(;D&&D.z>=E&&U&&U.z<=N;){if(D.x>=M&&D.x<=R&&D.y>=A&&D.y<=w&&D!==s&&D!==f&&Zp(h,_,m,x,g,b,D.x,D.y)&&_i(D.prev,D,D.next)>=0||(D=D.prevZ,U.x>=M&&U.x<=R&&U.y>=A&&U.y<=w&&U!==s&&U!==f&&Zp(h,_,m,x,g,b,U.x,U.y)&&_i(U.prev,U,U.next)>=0))return!1;U=U.nextZ}for(;D&&D.z>=E;){if(D.x>=M&&D.x<=R&&D.y>=A&&D.y<=w&&D!==s&&D!==f&&Zp(h,_,m,x,g,b,D.x,D.y)&&_i(D.prev,D,D.next)>=0)return!1;D=D.prevZ}for(;U&&U.z<=N;){if(U.x>=M&&U.x<=R&&U.y>=A&&U.y<=w&&U!==s&&U!==f&&Zp(h,_,m,x,g,b,U.x,U.y)&&_i(U.prev,U,U.next)>=0)return!1;U=U.nextZ}return!0}function hN(r,e){let t=r;do{const n=t.prev,s=t.next.next;!td(n,s)&&cT(n,t,t.next,s)&&ym(n,s)&&ym(s,n)&&(e.push(n.i,t.i,s.i),_m(t),_m(t.next),t=r=s),t=t.next}while(t!==r);return af(t)}function dN(r,e,t,n,s,u){let f=r;do{let h=f.next.next;for(;h!==f.prev;){if(f.i!==h.i&&SN(f,h)){let m=fT(f,h);f=af(f,f.next),m=af(m,m.next),vm(f,e,t,n,s,u,0),vm(m,e,t,n,s,u,0);return}h=h.next}f=f.next}while(f!==r)}function pN(r,e,t,n){const s=[];for(let u=0,f=e.length;u=t.next.y&&t.next.y!==t.y){const x=t.x+(s-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(x<=n&&x>u&&(u=x,f=t.x=t.x&&t.x>=m&&n!==t.x&&uT(sf.x||t.x===f.x&&yN(f,t)))&&(f=t,_=x)}t=t.next}while(t!==h);return f}function yN(r,e){return _i(r.prev,r,e.prev)<0&&_i(e.next,r,r.next)<0}function _N(r,e,t,n){let s=r;do s.z===0&&(s.z=Zx(s.x,s.y,e,t,n)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==r);s.prevZ.nextZ=null,s.prevZ=null,xN(s)}function xN(r){let e,t=1;do{let n=r,s;r=null;let u=null;for(e=0;n;){e++;let f=n,h=0;for(let g=0;g0||m>0&&f;)h!==0&&(m===0||!f||n.z<=f.z)?(s=n,n=n.nextZ,h--):(s=f,f=f.nextZ,m--),u?u.nextZ=s:r=s,s.prevZ=u,u=s;n=f}u.nextZ=null,t*=2}while(e>1);return r}function Zx(r,e,t,n,s){return r=(r-t)*s|0,e=(e-n)*s|0,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,r|e<<1}function bN(r){let e=r,t=r;do(e.x=(r-f)*(u-h)&&(r-f)*(n-h)>=(t-f)*(e-h)&&(t-f)*(u-h)>=(s-f)*(n-h)}function Zp(r,e,t,n,s,u,f,h){return!(r===f&&e===h)&&uT(r,e,t,n,s,u,f,h)}function SN(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!MN(r,e)&&(ym(r,e)&&ym(e,r)&&EN(r,e)&&(_i(r.prev,r,e.prev)||_i(r,e.prev,e))||td(r,e)&&_i(r.prev,r,r.next)>0&&_i(e.prev,e,e.next)>0)}function _i(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function td(r,e){return r.x===e.x&&r.y===e.y}function cT(r,e,t,n){const s=$0(_i(r,e,t)),u=$0(_i(r,e,n)),f=$0(_i(t,n,r)),h=$0(_i(t,n,e));return!!(s!==u&&f!==h||s===0&&J0(r,t,e)||u===0&&J0(r,n,e)||f===0&&J0(t,r,n)||h===0&&J0(t,e,n))}function J0(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function $0(r){return r>0?1:r<0?-1:0}function MN(r,e){let t=r;do{if(t.i!==r.i&&t.next.i!==r.i&&t.i!==e.i&&t.next.i!==e.i&&cT(t,t.next,r,e))return!0;t=t.next}while(t!==r);return!1}function ym(r,e){return _i(r.prev,r,r.next)<0?_i(r,e,r.next)>=0&&_i(r,r.prev,e)>=0:_i(r,e,r.prev)<0||_i(r,r.next,e)<0}function EN(r,e){let t=r,n=!1;const s=(r.x+e.x)/2,u=(r.y+e.y)/2;do t.y>u!=t.next.y>u&&t.next.y!==t.y&&s<(t.next.x-t.x)*(u-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==r);return n}function fT(r,e){const t=Qx(r.i,r.x,r.y),n=Qx(e.i,e.x,e.y),s=r.next,u=e.prev;return r.next=e,e.prev=r,t.next=s,s.prev=t,n.next=t,t.prev=n,u.next=n,n.prev=u,n}function HM(r,e,t,n){const s=Qx(r,e,t);return n?(s.next=n.next,s.prev=n,n.next.prev=s,n.next=s):(s.prev=s,s.next=s),s}function _m(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function Qx(r,e,t){return{i:r,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function TN(r,e,t,n){let s=0;for(let u=e,f=t-n;u2&&r[e-1].equals(r[0])&&r.pop()}function XM(r,e){for(let t=0;tNumber.EPSILON){const Te=Math.sqrt(O),Ie=Math.sqrt(Qe*Qe+G*G),Ee=He.x-Tt/Te,dt=He.y+ot/Te,Ke=Oe.x-G/Ie,vt=Oe.y+Qe/Ie,Dt=((Ke-Ee)*G-(vt-dt)*Qe)/(ot*G-Tt*Qe);nt=Ee+ot*Dt-Le.x,Q=dt+Tt*Dt-Le.y;const Ve=nt*nt+Q*Q;if(Ve<=2)return new ze(nt,Q);Et=Math.sqrt(Ve/2)}else{let Te=!1;ot>Number.EPSILON?Qe>Number.EPSILON&&(Te=!0):ot<-Number.EPSILON?Qe<-Number.EPSILON&&(Te=!0):Math.sign(Tt)===Math.sign(G)&&(Te=!0),Te?(nt=-Tt,Q=ot,Et=Math.sqrt(O)):(nt=ot,Q=Tt,Et=Math.sqrt(O/2))}return new ze(nt/Et,Q/Et)}const be=[];for(let Le=0,He=pe.length,Oe=He-1,nt=Le+1;Le=0;Le--){const He=Le/w,Oe=M*Math.cos(He*Math.PI/2),nt=A*Math.sin(He*Math.PI/2)+R;for(let Q=0,Et=pe.length;Q=0;){const nt=Oe;let Q=Oe-1;Q<0&&(Q=Le.length-1);for(let Et=0,ot=_+w*2;Et0)&&M.push(D,U,z),(E!==n-1||m0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class mT extends Ba{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new yt(16777215),this.specular=new yt(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new yt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Gs,this.combine=Am,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class gT extends Ba{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new yt(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new yt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class vT extends Ba{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class yT extends Ba{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new yt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new yt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Gs,this.combine=Am,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Wb extends Ba{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=NE,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class qb extends Ba{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}class _T extends Ba{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new yt(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this.fog=e.fog,this}}class xT extends ss{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function Qc(r,e){return!r||r.constructor===e?r:typeof e.BYTES_PER_ELEMENT=="number"?new e(r):Array.prototype.slice.call(r)}function bT(r){function e(s,u){return r[s]-r[u]}const t=r.length,n=new Array(t);for(let s=0;s!==t;++s)n[s]=s;return n.sort(e),n}function Kx(r,e,t){const n=r.length,s=new r.constructor(n);for(let u=0,f=0;f!==n;++u){const h=t[u]*e;for(let m=0;m!==e;++m)s[f++]=r[h+m]}return s}function jb(r,e,t,n){let s=1,u=r[0];for(;u!==void 0&&u[n]===void 0;)u=r[s++];if(u===void 0)return;let f=u[n];if(f!==void 0)if(Array.isArray(f))do f=u[n],f!==void 0&&(e.push(u.time),t.push(...f)),u=r[s++];while(u!==void 0);else if(f.toArray!==void 0)do f=u[n],f!==void 0&&(e.push(u.time),f.toArray(t,t.length)),u=r[s++];while(u!==void 0);else do f=u[n],f!==void 0&&(e.push(u.time),t.push(f)),u=r[s++];while(u!==void 0)}function NN(r,e,t,n,s=30){const u=r.clone();u.name=e;const f=[];for(let m=0;m=n)){x.push(g.times[M]);for(let R=0;R<_;++R)b.push(g.values[M*_+R])}}x.length!==0&&(g.times=Qc(x,g.times.constructor),g.values=Qc(b,g.values.constructor),f.push(g))}u.tracks=f;let h=1/0;for(let m=0;mu.tracks[m].times[0]&&(h=u.tracks[m].times[0]);for(let m=0;m=h.times[A]){const E=A*x+_,N=E+x-_;R=h.values.slice(E,N)}else{const E=h.createInterpolant(),N=_,D=x-_;E.evaluate(u),R=E.resultBuffer.slice(N,D)}m==="quaternion"&&new Pa().fromArray(R).normalize().conjugate().toArray(R);const w=g.times.length;for(let E=0;E=u)){const h=t[1];e=u)break t}f=n,n=0;break n}break e}for(;n>>1;et;)--f;if(++f,u!==0||f!==s){u>=f&&(f=Math.max(f,1),u=f-1);const h=this.getValueSize();this.times=n.slice(u,f),this.values=this.values.slice(u*h,f*h)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(Rt("KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,s=this.values,u=n.length;u===0&&(Rt("KeyframeTrack: Track is empty.",this),e=!1);let f=null;for(let h=0;h!==u;h++){const m=n[h];if(typeof m=="number"&&isNaN(m)){Rt("KeyframeTrack: Time is not a valid number.",this,h,m),e=!1;break}if(f!==null&&f>m){Rt("KeyframeTrack: Out of order keys.",this,h,m,f),e=!1;break}f=m}if(s!==void 0&&FE(s))for(let h=0,m=s.length;h!==m;++h){const g=s[h];if(isNaN(g)){Rt("KeyframeTrack: Value is not a valid number.",this,h,g),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),s=this.getInterpolation()===dv,u=e.length-1;let f=1;for(let h=1;h0){e[f]=e[u];for(let h=u*n,m=f*n,g=0;g!==n;++g)t[m+g]=t[h+g];++f}return f!==e.length?(this.times=e.slice(0,f),this.values=t.slice(0,f*n)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),n=this.constructor,s=new n(this.name,e,t);return s.createInterpolant=this.createInterpolant,s}}_r.prototype.ValueTypeName="";_r.prototype.TimeBufferType=Float32Array;_r.prototype.ValueBufferType=Float32Array;_r.prototype.DefaultInterpolation=ay;class uf extends _r{constructor(e,t,n){super(e,t,n)}}uf.prototype.ValueTypeName="bool";uf.prototype.ValueBufferType=Array;uf.prototype.DefaultInterpolation=fm;uf.prototype.InterpolantFactoryMethodLinear=void 0;uf.prototype.InterpolantFactoryMethodSmooth=void 0;class Zb extends _r{constructor(e,t,n,s){super(e,t,n,s)}}Zb.prototype.ValueTypeName="color";class xm extends _r{constructor(e,t,n,s){super(e,t,n,s)}}xm.prototype.ValueTypeName="number";class ET extends Um{constructor(e,t,n,s){super(e,t,n,s)}interpolate_(e,t,n,s){const u=this.resultBuffer,f=this.sampleValues,h=this.valueSize,m=(n-t)/(s-t);let g=e*h;for(let _=g+h;g!==_;g+=4)Pa.slerpFlat(u,0,f,g-h,f,g,m);return u}}class Im extends _r{constructor(e,t,n,s){super(e,t,n,s)}InterpolantFactoryMethodLinear(e){return new ET(this.times,this.values,this.getValueSize(),e)}}Im.prototype.ValueTypeName="quaternion";Im.prototype.InterpolantFactoryMethodSmooth=void 0;class cf extends _r{constructor(e,t,n){super(e,t,n)}}cf.prototype.ValueTypeName="string";cf.prototype.ValueBufferType=Array;cf.prototype.DefaultInterpolation=fm;cf.prototype.InterpolantFactoryMethodLinear=void 0;cf.prototype.InterpolantFactoryMethodSmooth=void 0;class bm extends _r{constructor(e,t,n,s){super(e,t,n,s)}}bm.prototype.ValueTypeName="vector";class Sm{constructor(e="",t=-1,n=[],s=Ey){this.name=e,this.tracks=n,this.duration=t,this.blendMode=s,this.uuid=Vs(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,s=1/(e.fps||1);for(let f=0,h=n.length;f!==h;++f)t.push(IN(n[f]).scale(s));const u=new this(e.name,e.duration,t,e.blendMode);return u.uuid=e.uuid,u.userData=JSON.parse(e.userData||"{}"),u}static toJSON(e){const t=[],n=e.tracks,s={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let u=0,f=n.length;u!==f;++u)t.push(_r.toJSON(n[u]));return s}static CreateFromMorphTargetSequence(e,t,n,s){const u=t.length,f=[];for(let h=0;h1){const x=_[1];let b=s[x];b||(s[x]=b=[]),b.push(g)}}const f=[];for(const h in s)f.push(this.CreateFromMorphTargetSequence(h,s[h],t,n));return f}static parseAnimation(e,t){if(ft("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return Rt("AnimationClip: No animation in JSONLoader data."),null;const n=function(x,b,M,A,R){if(M.length!==0){const w=[],E=[];jb(M,w,E,A),w.length!==0&&R.push(new x(b,w,E))}},s=[],u=e.name||"default",f=e.fps||30,h=e.blendMode;let m=e.length||-1;const g=e.hierarchy||[];for(let x=0;x{t&&t(u),this.manager.itemEnd(e)},0),u;if(Al[e]!==void 0){Al[e].push({onLoad:t,onProgress:n,onError:s});return}Al[e]=[],Al[e].push({onLoad:t,onProgress:n,onError:s});const f=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),h=this.mimeType,m=this.responseType;fetch(f).then(g=>{if(g.status===200||g.status===0){if(g.status===0&&ft("FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||g.body===void 0||g.body.getReader===void 0)return g;const _=Al[e],x=g.body.getReader(),b=g.headers.get("X-File-Size")||g.headers.get("Content-Length"),M=b?parseInt(b):0,A=M!==0;let R=0;const w=new ReadableStream({start(E){N();function N(){x.read().then(({done:D,value:U})=>{if(D)E.close();else{R+=U.byteLength;const B=new ProgressEvent("progress",{lengthComputable:A,loaded:R,total:M});for(let z=0,H=_.length;z{E.error(D)})}}});return new Response(w)}else throw new ON(`fetch for "${g.url}" responded with ${g.status}: ${g.statusText}`,g)}).then(g=>{switch(m){case"arraybuffer":return g.arrayBuffer();case"blob":return g.blob();case"document":return g.text().then(_=>new DOMParser().parseFromString(_,h));case"json":return g.json();default:if(h==="")return g.text();{const x=/charset="?([^;"\s]*)"?/i.exec(h),b=x&&x[1]?x[1].toLowerCase():void 0,M=new TextDecoder(b);return g.arrayBuffer().then(A=>M.decode(A))}}}).then(g=>{Oo.add(`file:${e}`,g);const _=Al[e];delete Al[e];for(let x=0,b=_.length;x{const _=Al[e];if(_===void 0)throw this.manager.itemError(e),g;delete Al[e];for(let x=0,b=_.length;x{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class PN extends Ns{constructor(e){super(e)}load(e,t,n,s){const u=this,f=new Ul(this.manager);f.setPath(this.path),f.setRequestHeader(this.requestHeader),f.setWithCredentials(this.withCredentials),f.load(e,function(h){try{t(u.parse(JSON.parse(h)))}catch(m){s?s(m):Rt(m),u.manager.itemError(e)}},n,s)}parse(e){const t=[];for(let n=0;n0:s.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const u in e.uniforms){const f=e.uniforms[u];switch(s.uniforms[u]={},f.type){case"t":s.uniforms[u].value=n(f.value);break;case"c":s.uniforms[u].value=new yt().setHex(f.value);break;case"v2":s.uniforms[u].value=new ze().fromArray(f.value);break;case"v3":s.uniforms[u].value=new j().fromArray(f.value);break;case"v4":s.uniforms[u].value=new jn().fromArray(f.value);break;case"m3":s.uniforms[u].value=new en().fromArray(f.value);break;case"m4":s.uniforms[u].value=new Xt().fromArray(f.value);break;default:s.uniforms[u].value=f.value}}if(e.defines!==void 0&&(s.defines=e.defines),e.vertexShader!==void 0&&(s.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(s.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(s.glslVersion=e.glslVersion),e.extensions!==void 0)for(const u in e.extensions)s.extensions[u]=e.extensions[u];if(e.lights!==void 0&&(s.lights=e.lights),e.clipping!==void 0&&(s.clipping=e.clipping),e.size!==void 0&&(s.size=e.size),e.sizeAttenuation!==void 0&&(s.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(s.map=n(e.map)),e.matcap!==void 0&&(s.matcap=n(e.matcap)),e.alphaMap!==void 0&&(s.alphaMap=n(e.alphaMap)),e.bumpMap!==void 0&&(s.bumpMap=n(e.bumpMap)),e.bumpScale!==void 0&&(s.bumpScale=e.bumpScale),e.normalMap!==void 0&&(s.normalMap=n(e.normalMap)),e.normalMapType!==void 0&&(s.normalMapType=e.normalMapType),e.normalScale!==void 0){let u=e.normalScale;Array.isArray(u)===!1&&(u=[u,u]),s.normalScale=new ze().fromArray(u)}return e.displacementMap!==void 0&&(s.displacementMap=n(e.displacementMap)),e.displacementScale!==void 0&&(s.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(s.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(s.roughnessMap=n(e.roughnessMap)),e.metalnessMap!==void 0&&(s.metalnessMap=n(e.metalnessMap)),e.emissiveMap!==void 0&&(s.emissiveMap=n(e.emissiveMap)),e.emissiveIntensity!==void 0&&(s.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(s.specularMap=n(e.specularMap)),e.specularIntensityMap!==void 0&&(s.specularIntensityMap=n(e.specularIntensityMap)),e.specularColorMap!==void 0&&(s.specularColorMap=n(e.specularColorMap)),e.envMap!==void 0&&(s.envMap=n(e.envMap)),e.envMapRotation!==void 0&&s.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(s.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(s.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(s.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(s.lightMap=n(e.lightMap)),e.lightMapIntensity!==void 0&&(s.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(s.aoMap=n(e.aoMap)),e.aoMapIntensity!==void 0&&(s.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(s.gradientMap=n(e.gradientMap)),e.clearcoatMap!==void 0&&(s.clearcoatMap=n(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(s.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(s.clearcoatNormalMap=n(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(s.clearcoatNormalScale=new ze().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(s.iridescenceMap=n(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(s.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(s.transmissionMap=n(e.transmissionMap)),e.thicknessMap!==void 0&&(s.thicknessMap=n(e.thicknessMap)),e.anisotropyMap!==void 0&&(s.anisotropyMap=n(e.anisotropyMap)),e.sheenColorMap!==void 0&&(s.sheenColorMap=n(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(s.sheenRoughnessMap=n(e.sheenRoughnessMap)),s}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return Zy.createMaterialFromType(e)}static createMaterialFromType(e){const t={ShadowMaterial:dT,SpriteMaterial:Ub,RawShaderMaterial:Gb,ShaderMaterial:yr,PointsMaterial:Ob,MeshPhysicalMaterial:pT,MeshStandardMaterial:Xb,MeshPhongMaterial:mT,MeshToonMaterial:gT,MeshNormalMaterial:vT,MeshLambertMaterial:yT,MeshDepthMaterial:Wb,MeshDistanceMaterial:qb,MeshBasicMaterial:Vu,MeshMatcapMaterial:_T,LineDashedMaterial:xT,LineBasicMaterial:ss,Material:Ba};return new t[e]}}class Jx{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class UT extends Kt{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class IT extends Ns{constructor(e){super(e)}load(e,t,n,s){const u=this,f=new Ul(u.manager);f.setPath(u.path),f.setRequestHeader(u.requestHeader),f.setWithCredentials(u.withCredentials),f.load(e,function(h){try{t(u.parse(JSON.parse(h)))}catch(m){s?s(m):Rt(m),u.manager.itemError(e)}},n,s)}parse(e){const t={},n={};function s(M,A){if(t[A]!==void 0)return t[A];const w=M.interleavedBuffers[A],E=u(M,w.buffer),N=Hh(w.type,E),D=new Ly(N,w.stride);return D.uuid=w.uuid,t[A]=D,D}function u(M,A){if(n[A]!==void 0)return n[A];const w=M.arrayBuffers[A],E=new Uint32Array(w).buffer;return n[A]=E,E}const f=e.isInstancedBufferGeometry?new UT:new Kt,h=e.data.index;if(h!==void 0){const M=Hh(h.type,h.array);f.setIndex(new Xn(M,1))}const m=e.data.attributes;for(const M in m){const A=m[M];let R;if(A.isInterleavedBufferAttribute){const w=s(e.data,A.data);R=new nf(w,A.itemSize,A.offset,A.normalized)}else{const w=Hh(A.type,A.array),E=A.isInstancedBufferAttribute?$h:Xn;R=new E(w,A.itemSize,A.normalized)}A.name!==void 0&&(R.name=A.name),A.usage!==void 0&&R.setUsage(A.usage),f.setAttribute(M,R)}const g=e.data.morphAttributes;if(g)for(const M in g){const A=g[M],R=[];for(let w=0,E=A.length;w0){const m=new Qb(t);u=new Mm(m),u.setCrossOrigin(this.crossOrigin);for(let g=0,_=e.length;g<_;g++){const x=e[g],b=x.url;if(Array.isArray(b)){const M=[];for(let A=0,R=b.length;A0){s=new Mm(this.manager),s.setCrossOrigin(this.crossOrigin);for(let f=0,h=e.length;f{let E=null,N=null;return w.boundingBox!==void 0&&(E=new za().fromJSON(w.boundingBox)),w.boundingSphere!==void 0&&(N=new _a().fromJSON(w.boundingSphere)),{...w,boundingBox:E,boundingSphere:N}}),f._instanceInfo=e.instanceInfo,f._availableInstanceIds=e._availableInstanceIds,f._availableGeometryIds=e._availableGeometryIds,f._nextIndexStart=e.nextIndexStart,f._nextVertexStart=e.nextVertexStart,f._geometryCount=e.geometryCount,f._maxInstanceCount=e.maxInstanceCount,f._maxVertexCount=e.maxVertexCount,f._maxIndexCount=e.maxIndexCount,f._geometryInitialized=e.geometryInitialized,f._matricesTexture=g(e.matricesTexture.uuid),f._indirectTexture=g(e.indirectTexture.uuid),e.colorsTexture!==void 0&&(f._colorsTexture=g(e.colorsTexture.uuid)),e.boundingSphere!==void 0&&(f.boundingSphere=new _a().fromJSON(e.boundingSphere)),e.boundingBox!==void 0&&(f.boundingBox=new za().fromJSON(e.boundingBox));break;case"LOD":f=new YE;break;case"Line":f=new Fu(h(e.geometry),m(e.material));break;case"LineLoop":f=new JE(h(e.geometry),m(e.material));break;case"LineSegments":f=new Vo(h(e.geometry),m(e.material));break;case"PointCloud":case"Points":f=new $E(h(e.geometry),m(e.material));break;case"Sprite":f=new jE(m(e.material));break;case"Group":f=new Gh;break;case"Bone":f=new Ib;break;default:f=new Cn}if(f.uuid=e.uuid,e.name!==void 0&&(f.name=e.name),e.matrix!==void 0?(f.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(f.matrixAutoUpdate=e.matrixAutoUpdate),f.matrixAutoUpdate&&f.matrix.decompose(f.position,f.quaternion,f.scale)):(e.position!==void 0&&f.position.fromArray(e.position),e.rotation!==void 0&&f.rotation.fromArray(e.rotation),e.quaternion!==void 0&&f.quaternion.fromArray(e.quaternion),e.scale!==void 0&&f.scale.fromArray(e.scale)),e.up!==void 0&&f.up.fromArray(e.up),e.castShadow!==void 0&&(f.castShadow=e.castShadow),e.receiveShadow!==void 0&&(f.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(f.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(f.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(f.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(f.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&f.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(f.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(f.visible=e.visible),e.frustumCulled!==void 0&&(f.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(f.renderOrder=e.renderOrder),e.userData!==void 0&&(f.userData=e.userData),e.layers!==void 0&&(f.layers.mask=e.layers),e.children!==void 0){const b=e.children;for(let M=0;M"u"&&ft("ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&ft("ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"},this._abortController=new AbortController}setOptions(e){return this.options=e,this}load(e,t,n,s){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const u=this,f=Oo.get(`image-bitmap:${e}`);if(f!==void 0){if(u.manager.itemStart(e),f.then){f.then(g=>{if(yx.has(f)===!0)s&&s(yx.get(f)),u.manager.itemError(e),u.manager.itemEnd(e);else return t&&t(g),u.manager.itemEnd(e),g});return}return setTimeout(function(){t&&t(f),u.manager.itemEnd(e)},0),f}const h={};h.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",h.headers=this.requestHeader,h.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;const m=fetch(e,h).then(function(g){return g.blob()}).then(function(g){return createImageBitmap(g,Object.assign(u.options,{colorSpaceConversion:"none"}))}).then(function(g){return Oo.add(`image-bitmap:${e}`,g),t&&t(g),u.manager.itemEnd(e),g}).catch(function(g){s&&s(g),yx.set(m,g),Oo.remove(`image-bitmap:${e}`),u.manager.itemError(e),u.manager.itemEnd(e)});Oo.add(`image-bitmap:${e}`,m),u.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}let ev;class $b{static getContext(){return ev===void 0&&(ev=new(window.AudioContext||window.webkitAudioContext)),ev}static setContext(e){ev=e}}class jN extends Ns{constructor(e){super(e)}load(e,t,n,s){const u=this,f=new Ul(this.manager);f.setResponseType("arraybuffer"),f.setPath(this.path),f.setRequestHeader(this.requestHeader),f.setWithCredentials(this.withCredentials),f.load(e,function(m){try{const g=m.slice(0);$b.getContext().decodeAudioData(g,function(x){t(x)}).catch(h)}catch(g){h(g)}},n,s);function h(m){s?s(m):Rt(m),u.manager.itemError(e)}}}const KM=new Xt,JM=new Xt,Oc=new Xt;class YN{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new zi,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new zi,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Oc.copy(e.projectionMatrix);const s=t.eyeSep/2,u=s*t.near/t.focus,f=t.near*Math.tan(Jc*t.fov*.5)/t.zoom;let h,m;JM.elements[12]=-s,KM.elements[12]=s,h=-f*t.aspect+u,m=f*t.aspect+u,Oc.elements[0]=2*t.near/(m-h),Oc.elements[8]=(m+h)/(m-h),this.cameraL.projectionMatrix.copy(Oc),h=-f*t.aspect-u,m=f*t.aspect-u,Oc.elements[0]=2*t.near/(m-h),Oc.elements[8]=(m+h)/(m-h),this.cameraR.projectionMatrix.copy(Oc)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(JM),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(KM)}}class OT extends zi{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class eS{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=performance.now();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}const Pc=new j,_x=new Pa,ZN=new j,zc=new j,Bc=new j;class QN extends Cn{constructor(){super(),this.type="AudioListener",this.context=$b.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new eS}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Pc,_x,ZN),zc.set(0,0,-1).applyQuaternion(_x),Bc.set(0,1,0).applyQuaternion(_x),t.positionX){const n=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Pc.x,n),t.positionY.linearRampToValueAtTime(Pc.y,n),t.positionZ.linearRampToValueAtTime(Pc.z,n),t.forwardX.linearRampToValueAtTime(zc.x,n),t.forwardY.linearRampToValueAtTime(zc.y,n),t.forwardZ.linearRampToValueAtTime(zc.z,n),t.upX.linearRampToValueAtTime(Bc.x,n),t.upY.linearRampToValueAtTime(Bc.y,n),t.upZ.linearRampToValueAtTime(Bc.z,n)}else t.setPosition(Pc.x,Pc.y,Pc.z),t.setOrientation(zc.x,zc.y,zc.z,Bc.x,Bc.y,Bc.z)}}let PT=class extends Cn{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){ft("Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){ft("Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){ft("Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){ft("Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,s,this._addIndex*t,1,t);for(let m=t,g=t+t;m!==g;++m)if(n[m]!==n[m+t]){h.setValue(n,s);break}}saveOriginalState(){const e=this.binding,t=this.buffer,n=this.valueSize,s=n*this._origIndex;e.getValue(t,s);for(let u=n,f=s;u!==f;++u)t[u]=t[s+u%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let f=0;f!==u;++f)e[t+f]=e[n+f]}_slerp(e,t,n,s){Pa.slerpFlat(e,t,e,t,e,n,s)}_slerpAdditive(e,t,n,s,u){const f=this._workIndex*u;Pa.multiplyQuaternionsFlat(e,f,e,t,e,n),Pa.slerpFlat(e,t,e,t,e,f,s)}_lerp(e,t,n,s,u){const f=1-s;for(let h=0;h!==u;++h){const m=t+h;e[m]=e[m]*f+e[n+h]*s}}_lerpAdditive(e,t,n,s,u){for(let f=0;f!==u;++f){const h=t+f;e[h]=e[h]+e[n+f]*s}}}const tS="\\[\\]\\.:\\/",eD=new RegExp("["+tS+"]","g"),nS="[^"+tS+"]",tD="[^"+tS.replace("\\.","")+"]",nD=/((?:WC+[\/:])*)/.source.replace("WC",nS),iD=/(WCOD+)?/.source.replace("WCOD",tD),aD=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",nS),sD=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",nS),rD=new RegExp("^"+nD+iD+aD+sD+"$"),oD=["material","materials","bones","map"];class lD{constructor(e,t,n){const s=n||wn.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,s)}getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,s=this._bindings[n];s!==void 0&&s.getValue(e,t)}setValue(e,t){const n=this._bindings;for(let s=this._targetGroup.nCachedObjects_,u=n.length;s!==u;++s)n[s].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}}class wn{constructor(e,t,n){this.path=t,this.parsedPath=n||wn.parseTrackName(t),this.node=wn.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new wn.Composite(e,t,n):new wn(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(eD,"")}static parseTrackName(e){const t=rD.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},s=n.nodeName&&n.nodeName.lastIndexOf(".");if(s!==void 0&&s!==-1){const u=n.nodeName.substring(s+1);oD.indexOf(u)!==-1&&(n.nodeName=n.nodeName.substring(0,s),n.objectName=u)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){const n=function(u){for(let f=0;f=u){const x=u++,b=e[x];t[b.uuid]=_,e[_]=b,t[g]=x,e[x]=m;for(let M=0,A=s;M!==A;++M){const R=n[M],w=R[x],E=R[_];R[_]=w,R[x]=E}}}this.nCachedObjects_=u}uncache(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,s=n.length;let u=this.nCachedObjects_,f=e.length;for(let h=0,m=arguments.length;h!==m;++h){const g=arguments[h],_=g.uuid,x=t[_];if(x!==void 0)if(delete t[_],x0&&(t[M.uuid]=x),e[x]=M,e.pop();for(let A=0,R=s;A!==R;++A){const w=n[A];w[x]=w[b],w.pop()}}}this.nCachedObjects_=u}subscribe_(e,t){const n=this._bindingsIndicesByPath;let s=n[e];const u=this._bindings;if(s!==void 0)return u[s];const f=this._paths,h=this._parsedPaths,m=this._objects,g=m.length,_=this.nCachedObjects_,x=new Array(g);s=u.length,n[e]=s,f.push(e),h.push(t),u.push(x);for(let b=_,M=m.length;b!==M;++b){const A=m[b];x[b]=new wn(A,e,t)}return x}unsubscribe_(e){const t=this._bindingsIndicesByPath,n=t[e];if(n!==void 0){const s=this._paths,u=this._parsedPaths,f=this._bindings,h=f.length-1,m=f[h],g=e[h];t[g]=n,f[n]=m,f.pop(),u[n]=u[h],u.pop(),s[n]=s[h],s.pop()}}}class BT{constructor(e,t,n=null,s=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=s;const u=t.tracks,f=u.length,h=new Array(f),m={endingStart:Yc,endingEnd:Yc};for(let g=0;g!==f;++g){const _=u[g].createInterpolant(null);h[g]=_,_.settings=m}this._interpolantSettings=m,this._interpolants=h,this._propertyBindings=new Array(f),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=CE,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n=!1){if(e.fadeOut(t),this.fadeIn(t),n===!0){const s=this._clip.duration,u=e._clip.duration,f=u/s,h=s/u;e.warp(1,f,t),this.warp(h,1,t)}return this}crossFadeTo(e,t,n=!1){return e.crossFadeFrom(this,t,n)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){const s=this._mixer,u=s.time,f=this.timeScale;let h=this._timeScaleInterpolant;h===null&&(h=s._lendControlInterpolant(),this._timeScaleInterpolant=h);const m=h.parameterPositions,g=h.sampleValues;return m[0]=u,m[1]=u+n,g[0]=e/f,g[1]=t/f,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,s){if(!this.enabled){this._updateWeight(e);return}const u=this._startTime;if(u!==null){const m=(e-u)*n;m<0||n===0?t=0:(this._startTime=null,t=n*m)}t*=this._updateTimeScale(e);const f=this._updateTime(t),h=this._updateWeight(e);if(h>0){const m=this._interpolants,g=this._propertyBindings;switch(this.blendMode){case Ab:for(let _=0,x=m.length;_!==x;++_)m[_].evaluate(f),g[_].accumulateAdditive(h);break;case Ey:default:for(let _=0,x=m.length;_!==x;++_)m[_].evaluate(f),g[_].accumulate(s,h)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const n=this._weightInterpolant;if(n!==null){const s=n.evaluate(e)[0];t*=s,e>n.parameterPositions[1]&&(this.stopFading(),s===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const n=this._timeScaleInterpolant;if(n!==null){const s=n.evaluate(e)[0];t*=s,e>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,n=this.loop;let s=this.time+e,u=this._loopCount;const f=n===RE;if(e===0)return u===-1?s:f&&(u&1)===1?t-s:s;if(n===wE){u===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(s>=t)s=t;else if(s<0)s=0;else{this.time=s;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(u===-1&&(e>=0?(u=0,this._setEndings(!0,this.repetitions===0,f)):this._setEndings(this.repetitions===0,!0,f)),s>=t||s<0){const h=Math.floor(s/t);s-=t*h,u+=Math.abs(h);const m=this.repetitions-u;if(m<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,s=e>0?t:0,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(m===1){const g=e<0;this._setEndings(g,!g,f)}else this._setEndings(!1,!1,f);this._loopCount=u,this.time=s,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:h})}}else this.time=s;if(f&&(u&1)===1)return t-s}return s}_setEndings(e,t,n){const s=this._interpolantSettings;n?(s.endingStart=Zc,s.endingEnd=Zc):(e?s.endingStart=this.zeroSlopeAtStart?Zc:Yc:s.endingStart=hm,t?s.endingEnd=this.zeroSlopeAtEnd?Zc:Yc:s.endingEnd=hm)}_scheduleFading(e,t,n){const s=this._mixer,u=s.time;let f=this._weightInterpolant;f===null&&(f=s._lendControlInterpolant(),this._weightInterpolant=f);const h=f.parameterPositions,m=f.sampleValues;return h[0]=u,m[0]=t,h[1]=u+e,m[1]=n,this}}const cD=new Float32Array(1);class fD extends ko{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const n=e._localRoot||this._root,s=e._clip.tracks,u=s.length,f=e._propertyBindings,h=e._interpolants,m=n.uuid,g=this._bindingsByRootAndName;let _=g[m];_===void 0&&(_={},g[m]=_);for(let x=0;x!==u;++x){const b=s[x],M=b.name;let A=_[M];if(A!==void 0)++A.referenceCount,f[x]=A;else{if(A=f[x],A!==void 0){A._cacheIndex===null&&(++A.referenceCount,this._addInactiveBinding(A,m,M));continue}const R=t&&t._propertyBindings[x].binding.parsedPath;A=new zT(wn.create(n,M,R),b.ValueTypeName,b.getValueSize()),++A.referenceCount,this._addInactiveBinding(A,m,M),f[x]=A}h[x].resultBuffer=A.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const n=(e._localRoot||this._root).uuid,s=e._clip.uuid,u=this._actionsByClip[s];this._bindAction(e,u&&u.knownActions[0]),this._addInactiveAction(e,s,n)}const t=e._propertyBindings;for(let n=0,s=t.length;n!==s;++n){const u=t[n];u.useCount++===0&&(this._lendBinding(u),u.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let n=0,s=t.length;n!==s;++n){const u=t[n];--u.useCount===0&&(u.restoreOriginalState(),this._takeBackBinding(u))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return t!==null&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;const t=this._actions,n=this._nActiveActions,s=this.time+=e,u=Math.sign(e),f=this._accuIndex^=1;for(let g=0;g!==n;++g)t[g]._update(s,e,u,f);const h=this._bindings,m=this._nActiveBindings;for(let g=0;g!==m;++g)h[g].apply(f);return this}setTime(e){this.time=0;for(let t=0;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,n1).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const i1=new j,tv=new j,Oh=new j,Ph=new j,xx=new j,bD=new j,SD=new j;class MD{constructor(e=new j,t=new j){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){i1.subVectors(e,this.start),tv.subVectors(this.end,this.start);const n=tv.dot(tv);let u=tv.dot(i1)/n;return t&&(u=Ht(u,0,1)),u}closestPointToPoint(e,t,n){const s=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(s).add(this.start)}distanceSqToLine3(e,t=bD,n=SD){const s=10000000000000001e-32;let u,f;const h=this.start,m=e.start,g=this.end,_=e.end;Oh.subVectors(g,h),Ph.subVectors(_,m),xx.subVectors(h,m);const x=Oh.dot(Oh),b=Ph.dot(Ph),M=Ph.dot(xx);if(x<=s&&b<=s)return t.copy(h),n.copy(m),t.sub(n),t.dot(t);if(x<=s)u=0,f=M/b,f=Ht(f,0,1);else{const A=Oh.dot(xx);if(b<=s)f=0,u=Ht(-A/x,0,1);else{const R=Oh.dot(Ph),w=x*b-R*R;w!==0?u=Ht((R*M-A*b)/w,0,1):u=0,f=(R*u+M)/b,f<0?(f=0,u=Ht(-A/x,0,1)):f>1&&(f=1,u=Ht((R-A)/x,0,1))}}return t.copy(h).add(Oh.multiplyScalar(u)),n.copy(m).add(Ph.multiplyScalar(f)),t.sub(n),t.dot(t)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const a1=new j;class ED extends Cn{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const n=new Kt,s=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let f=0,h=1,m=32;f1)for(let x=0;x.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{u1.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(u1,t)}}setLength(e,t=e*.2,n=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class zD extends Vo{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],s=new Kt;s.setAttribute("position",new bt(t,3)),s.setAttribute("color",new bt(n,3));const u=new ss({vertexColors:!0,toneMapped:!1});super(s,u),this.type="AxesHelper"}setColors(e,t,n){const s=new yt,u=this.geometry.attributes.color.array;return s.set(e),s.toArray(u,0),s.toArray(u,3),s.set(t),s.toArray(u,6),s.toArray(u,9),s.set(n),s.toArray(u,12),s.toArray(u,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class BD{constructor(){this.type="ShapePath",this.color=new yt,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new ly,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,s){return this.currentPath.quadraticCurveTo(e,t,n,s),this}bezierCurveTo(e,t,n,s,u,f){return this.currentPath.bezierCurveTo(e,t,n,s,u,f),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(E){const N=[];for(let D=0,U=E.length;DNumber.EPSILON){if(P<0&&(H=N[z],I=-I,W=N[B],P=-P),E.yW.y)continue;if(E.y===H.y){if(E.x===H.x)return!0}else{const Z=P*(E.x-H.x)-I*(E.y-H.y);if(Z===0)return!0;if(Z<0)continue;U=!U}}else{if(E.y!==H.y)continue;if(W.x<=E.x&&E.x<=H.x||H.x<=E.x&&E.x<=W.x)return!0}}return U}const s=jr.isClockWise,u=this.subPaths;if(u.length===0)return[];let f,h,m;const g=[];if(u.length===1)return h=u[0],m=new $c,m.curves=h.curves,g.push(m),g;let _=!s(u[0].getPoints());_=e?!_:_;const x=[],b=[];let M=[],A=0,R;b[A]=void 0,M[A]=[];for(let E=0,N=u.length;E1){let E=!1,N=0;for(let D=0,U=b.length;D0&&E===!1&&(M=x)}let w;for(let E=0,N=b.length;Ee?(r.repeat.x=1,r.repeat.y=t/e,r.offset.x=0,r.offset.y=(1-r.repeat.y)/2):(r.repeat.x=e/t,r.repeat.y=1,r.offset.x=(1-r.repeat.x)/2,r.offset.y=0),r}function VD(r,e){const t=r.image&&r.image.width?r.image.width/r.image.height:1;return t>e?(r.repeat.x=e/t,r.repeat.y=1,r.offset.x=(1-r.repeat.x)/2,r.offset.y=0):(r.repeat.x=1,r.repeat.y=t/e,r.offset.x=0,r.offset.y=(1-r.repeat.y)/2),r}function HD(r){return r.repeat.x=1,r.repeat.y=1,r.offset.x=0,r.offset.y=0,r}function tb(r,e,t,n){const s=GD(n);switch(t){case Eb:return r*e;case by:return r*e/s.components*s.byteLength;case wm:return r*e/s.components*s.byteLength;case tf:return r*e*2/s.components*s.byteLength;case Sy:return r*e*2/s.components*s.byteLength;case Tb:return r*e*3/s.components*s.byteLength;case Oa:return r*e*4/s.components*s.byteLength;case My:return r*e*4/s.components*s.byteLength;case $p:case em:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*8;case tm:case nm:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*16;case wv:case Rv:return Math.max(r,16)*Math.max(e,8)/4;case Av:case Cv:return Math.max(r,8)*Math.max(e,8)/2;case Nv:case Dv:case Uv:case Iv:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*8;case Lv:case Ov:case Pv:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*16;case zv:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*16;case Bv:return Math.floor((r+4)/5)*Math.floor((e+3)/4)*16;case Fv:return Math.floor((r+4)/5)*Math.floor((e+4)/5)*16;case kv:return Math.floor((r+5)/6)*Math.floor((e+4)/5)*16;case Vv:return Math.floor((r+5)/6)*Math.floor((e+5)/6)*16;case Hv:return Math.floor((r+7)/8)*Math.floor((e+4)/5)*16;case Gv:return Math.floor((r+7)/8)*Math.floor((e+5)/6)*16;case Xv:return Math.floor((r+7)/8)*Math.floor((e+7)/8)*16;case Wv:return Math.floor((r+9)/10)*Math.floor((e+4)/5)*16;case qv:return Math.floor((r+9)/10)*Math.floor((e+5)/6)*16;case jv:return Math.floor((r+9)/10)*Math.floor((e+7)/8)*16;case Yv:return Math.floor((r+9)/10)*Math.floor((e+9)/10)*16;case Zv:return Math.floor((r+11)/12)*Math.floor((e+9)/10)*16;case Qv:return Math.floor((r+11)/12)*Math.floor((e+11)/12)*16;case Kv:case Jv:case $v:return Math.ceil(r/4)*Math.ceil(e/4)*16;case ey:case ty:return Math.ceil(r/4)*Math.ceil(e/4)*8;case ny:case iy:return Math.ceil(r/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function GD(r){switch(r){case ts:case xb:return{byteLength:1,components:1};case qh:case bb:case Bo:return{byteLength:2,components:1};case _y:case xy:return{byteLength:2,components:4};case vr:case yy:case is:return{byteLength:4,components:1};case Sb:case Mb:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${r}.`)}class XD{static contain(e,t){return kD(e,t)}static cover(e,t){return VD(e,t)}static fill(e){return HD(e)}static getByteLength(e,t,n,s){return tb(e,t,n,s)}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:my}}));typeof window<"u"&&(window.__THREE__?ft("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=my);function VT(){let r=null,e=!1,t=null,n=null;function s(u,f){t(u,f),n=r.requestAnimationFrame(s)}return{start:function(){e!==!0&&t!==null&&(n=r.requestAnimationFrame(s),e=!0)},stop:function(){r.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(u){t=u},setContext:function(u){r=u}}}function WD(r){const e=new WeakMap;function t(h,m){const g=h.array,_=h.usage,x=g.byteLength,b=r.createBuffer();r.bindBuffer(m,b),r.bufferData(m,g,_),h.onUploadCallback();let M;if(g instanceof Float32Array)M=r.FLOAT;else if(typeof Float16Array<"u"&&g instanceof Float16Array)M=r.HALF_FLOAT;else if(g instanceof Uint16Array)h.isFloat16BufferAttribute?M=r.HALF_FLOAT:M=r.UNSIGNED_SHORT;else if(g instanceof Int16Array)M=r.SHORT;else if(g instanceof Uint32Array)M=r.UNSIGNED_INT;else if(g instanceof Int32Array)M=r.INT;else if(g instanceof Int8Array)M=r.BYTE;else if(g instanceof Uint8Array)M=r.UNSIGNED_BYTE;else if(g instanceof Uint8ClampedArray)M=r.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+g);return{buffer:b,type:M,bytesPerElement:g.BYTES_PER_ELEMENT,version:h.version,size:x}}function n(h,m,g){const _=m.array,x=m.updateRanges;if(r.bindBuffer(g,h),x.length===0)r.bufferSubData(g,0,_);else{x.sort((M,A)=>M.start-A.start);let b=0;for(let M=1;M 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,lL=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,uL=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,cL=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,fL=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,hL=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,dL=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,pL=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,mL=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,gL=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,vL=`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,yL=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,_L=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,xL=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE + emissiveColor = sRGBTransferEOTF( emissiveColor ); + #endif + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,bL=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,SL="gl_FragColor = linearToOutputTexel( gl_FragColor );",ML=`vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferEOTF( in vec4 value ) { + return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a ); +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,EL=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,TL=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif +#endif`,AL=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,wL=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,CL=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,RL=`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,NL=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,DL=`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,LL=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,UL=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,IL=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,OL=`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,PL=`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,zL=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,BL=`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, pow4( roughness ) ) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,FL=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,kL=`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,VL=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,HL=`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,GL=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.diffuseContribution = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +material.metalness = metalnessFactor; +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor; + material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = vec3( 0.04 ); + material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.0001, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,XL=`uniform sampler2D dfgLUT; +struct PhysicalMaterial { + vec3 diffuseColor; + vec3 diffuseContribution; + vec3 specularColor; + vec3 specularColorBlended; + float roughness; + float metalness; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + vec3 iridescenceFresnelDielectric; + vec3 iridescenceFresnelMetallic; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return v; + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColorBlended; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transpose( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float rInv = 1.0 / ( roughness + 0.1 ); + float a = -1.9362 + 1.0678 * roughness + 0.4573 * r2 - 0.8469 * rInv; + float b = -0.6014 + 0.5538 * roughness - 0.4670 * r2 - 0.1255 * rInv; + float DG = exp( a * dotNV + b ); + return saturate( DG ); +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg; + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg; + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +vec3 BRDF_GGX_Multiscatter( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 singleScatter = BRDF_GGX( lightDir, viewDir, normal, material ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 dfgV = texture2D( dfgLUT, vec2( material.roughness, dotNV ) ).rg; + vec2 dfgL = texture2D( dfgLUT, vec2( material.roughness, dotNL ) ).rg; + vec3 FssEss_V = material.specularColorBlended * dfgV.x + material.specularF90 * dfgV.y; + vec3 FssEss_L = material.specularColorBlended * dfgL.x + material.specularF90 * dfgL.y; + float Ess_V = dfgV.x + dfgV.y; + float Ess_L = dfgL.x + dfgL.y; + float Ems_V = 1.0 - Ess_V; + float Ems_L = 1.0 - Ess_L; + vec3 Favg = material.specularColorBlended + ( 1.0 - material.specularColorBlended ) * 0.047619; + vec3 Fms = FssEss_V * FssEss_L * Favg / ( 1.0 - Ems_V * Ems_L * Favg + EPSILON ); + float compensationFactor = Ems_V * Ems_L; + vec3 multiScatter = Fms * compensationFactor; + return singleScatter + multiScatter; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColorBlended * t2.x + ( vec3( 1.0 ) - material.specularColorBlended ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseContribution * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + + float sheenAlbedoV = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenAlbedoL = IBLSheenBRDF( geometryNormal, directLight.direction, material.sheenRoughness ); + + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * max( sheenAlbedoV, sheenAlbedoL ); + + irradiance *= sheenEnergyComp; + + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX_Multiscatter( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseContribution ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 diffuse = irradiance * BRDF_Lambert( material.diffuseContribution ); + #ifdef USE_SHEEN + float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo; + diffuse *= sheenEnergyComp; + #endif + reflectedLight.indirectDiffuse += diffuse; +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ) * RECIPROCAL_PI; + #endif + vec3 singleScatteringDielectric = vec3( 0.0 ); + vec3 multiScatteringDielectric = vec3( 0.0 ); + vec3 singleScatteringMetallic = vec3( 0.0 ); + vec3 multiScatteringMetallic = vec3( 0.0 ); + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnelDielectric, material.roughness, singleScatteringDielectric, multiScatteringDielectric ); + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.iridescence, material.iridescenceFresnelMetallic, material.roughness, singleScatteringMetallic, multiScatteringMetallic ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScatteringDielectric, multiScatteringDielectric ); + computeMultiscattering( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.roughness, singleScatteringMetallic, multiScatteringMetallic ); + #endif + vec3 singleScattering = mix( singleScatteringDielectric, singleScatteringMetallic, material.metalness ); + vec3 multiScattering = mix( multiScatteringDielectric, multiScatteringMetallic, material.metalness ); + vec3 totalScatteringDielectric = singleScatteringDielectric + multiScatteringDielectric; + vec3 diffuse = material.diffuseContribution * ( 1.0 - totalScatteringDielectric ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + vec3 indirectSpecular = radiance * singleScattering; + indirectSpecular += multiScattering * cosineWeightedIrradiance; + vec3 indirectDiffuse = diffuse * cosineWeightedIrradiance; + #ifdef USE_SHEEN + float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo; + indirectSpecular *= sheenEnergyComp; + indirectDiffuse *= sheenEnergyComp; + #endif + reflectedLight.indirectSpecular += indirectSpecular; + reflectedLight.indirectDiffuse += indirectDiffuse; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,WL=` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnelDielectric = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceFresnelMetallic = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.diffuseColor ); + material.iridescenceFresnel = mix( material.iridescenceFresnelDielectric, material.iridescenceFresnelMetallic, material.metalness ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,qL=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,jL=`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,YL=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,ZL=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,QL=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER + varying float vFragDepth; + varying float vIsPerspective; +#endif`,KL=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,JL=`#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,$L=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,eU=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,tU=`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,nU=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,iU=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,aU=`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,sU=`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,rU=`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,oU=`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,lU=`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,uU=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,cU=`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,fU=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,hU=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,dU=`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,pU=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,mU=`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,gU=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,vU=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,yU=`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,_U=`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,xU=`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,bU=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,SU=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,MU=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,EU=`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,TU=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,AU=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,wU=`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform sampler2DShadow directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + #else + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform sampler2DShadow spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + #else + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform samplerCubeShadow pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + #elif defined( SHADOWMAP_TYPE_BASIC ) + uniform samplerCube pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + #if defined( SHADOWMAP_TYPE_PCF ) + float interleavedGradientNoise( vec2 position ) { + return fract( 52.9829189 * fract( dot( position, vec2( 0.06711056, 0.00583715 ) ) ) ); + } + vec2 vogelDiskSample( int sampleIndex, int samplesCount, float phi ) { + const float goldenAngle = 2.399963229728653; + float r = sqrt( ( float( sampleIndex ) + 0.5 ) / float( samplesCount ) ); + float theta = float( sampleIndex ) * goldenAngle + phi; + return vec2( cos( theta ), sin( theta ) ) * r; + } + #endif + #if defined( SHADOWMAP_TYPE_PCF ) + float getShadow( sampler2DShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float radius = shadowRadius * texelSize.x; + float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718; + shadow = ( + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 0, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 1, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 2, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 3, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 4, 5, phi ) * radius, shadowCoord.z ) ) + ) * 0.2; + } + return mix( 1.0, shadow, shadowIntensity ); + } + #elif defined( SHADOWMAP_TYPE_VSM ) + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + vec2 distribution = texture2D( shadowMap, shadowCoord.xy ).rg; + float mean = distribution.x; + float variance = distribution.y * distribution.y; + #ifdef USE_REVERSED_DEPTH_BUFFER + float hard_shadow = step( mean, shadowCoord.z ); + #else + float hard_shadow = step( shadowCoord.z, mean ); + #endif + if ( hard_shadow == 1.0 ) { + shadow = 1.0; + } else { + variance = max( variance, 0.0000001 ); + float d = shadowCoord.z - mean; + float p_max = variance / ( variance + d * d ); + p_max = clamp( ( p_max - 0.3 ) / 0.65, 0.0, 1.0 ); + shadow = max( hard_shadow, p_max ); + } + } + return mix( 1.0, shadow, shadowIntensity ); + } + #else + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + float depth = texture2D( shadowMap, shadowCoord.xy ).r; + #ifdef USE_REVERSED_DEPTH_BUFFER + shadow = step( depth, shadowCoord.z ); + #else + shadow = step( shadowCoord.z, depth ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + float getPointShadow( samplerCubeShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + vec3 bd3D = normalize( lightToPosition ); + vec3 absVec = abs( lightToPosition ); + float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z ); + if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) { + float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) ); + dp += shadowBias; + float texelSize = shadowRadius / shadowMapSize.x; + vec3 absDir = abs( bd3D ); + vec3 tangent = absDir.x > absDir.z ? vec3( 0.0, 1.0, 0.0 ) : vec3( 1.0, 0.0, 0.0 ); + tangent = normalize( cross( bd3D, tangent ) ); + vec3 bitangent = cross( bd3D, tangent ); + float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718; + shadow = ( + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 0, 5, phi ).x + bitangent * vogelDiskSample( 0, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 1, 5, phi ).x + bitangent * vogelDiskSample( 1, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 2, 5, phi ).x + bitangent * vogelDiskSample( 2, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 3, 5, phi ).x + bitangent * vogelDiskSample( 3, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 4, 5, phi ).x + bitangent * vogelDiskSample( 4, 5, phi ).y ) * texelSize, dp ) ) + ) * 0.2; + } + return mix( 1.0, shadow, shadowIntensity ); + } + #elif defined( SHADOWMAP_TYPE_BASIC ) + float getPointShadow( samplerCube shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + vec3 bd3D = normalize( lightToPosition ); + vec3 absVec = abs( lightToPosition ); + float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z ); + if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) { + float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) ); + dp += shadowBias; + float depth = textureCube( shadowMap, bd3D ).r; + #ifdef USE_REVERSED_DEPTH_BUFFER + shadow = step( depth, dp ); + #else + shadow = step( dp, depth ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + #endif + #endif +#endif`,CU=`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,RU=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,NU=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) ) + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,DU=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,LU=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,UU=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,IU=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,OU=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,PU=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,zU=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,BU=`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,FU=`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseContribution, material.specularColorBlended, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,kU=`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + #else + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,VU=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,HU=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,GU=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,XU=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`;const WU=`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,qU=`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,jU=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,YU=`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,ZU=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,QU=`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,KU=`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,JU=`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + #ifdef USE_REVERSED_DEPTH_BUFFER + float fragCoordZ = vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ]; + #else + float fragCoordZ = 0.5 * vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ] + 0.5; + #endif + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,$U=`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,eI=`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = vec4( dist, 0.0, 0.0, 1.0 ); +}`,tI=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,nI=`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,iI=`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,aI=`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,sI=`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,rI=`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,oI=`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,lI=`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,uI=`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,cI=`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,fI=`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,hI=`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( normalize( normal ) * 0.5 + 0.5, diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,dI=`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,pI=`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,mI=`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,gI=`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + + outgoingLight = outgoingLight + sheenSpecularDirect + sheenSpecularIndirect; + + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,vI=`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,yI=`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,_I=`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,xI=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,bI=`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,SI=`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,MI=`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,EI=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`,un={alphahash_fragment:qD,alphahash_pars_fragment:jD,alphamap_fragment:YD,alphamap_pars_fragment:ZD,alphatest_fragment:QD,alphatest_pars_fragment:KD,aomap_fragment:JD,aomap_pars_fragment:$D,batching_pars_vertex:eL,batching_vertex:tL,begin_vertex:nL,beginnormal_vertex:iL,bsdfs:aL,iridescence_fragment:sL,bumpmap_pars_fragment:rL,clipping_planes_fragment:oL,clipping_planes_pars_fragment:lL,clipping_planes_pars_vertex:uL,clipping_planes_vertex:cL,color_fragment:fL,color_pars_fragment:hL,color_pars_vertex:dL,color_vertex:pL,common:mL,cube_uv_reflection_fragment:gL,defaultnormal_vertex:vL,displacementmap_pars_vertex:yL,displacementmap_vertex:_L,emissivemap_fragment:xL,emissivemap_pars_fragment:bL,colorspace_fragment:SL,colorspace_pars_fragment:ML,envmap_fragment:EL,envmap_common_pars_fragment:TL,envmap_pars_fragment:AL,envmap_pars_vertex:wL,envmap_physical_pars_fragment:BL,envmap_vertex:CL,fog_vertex:RL,fog_pars_vertex:NL,fog_fragment:DL,fog_pars_fragment:LL,gradientmap_pars_fragment:UL,lightmap_pars_fragment:IL,lights_lambert_fragment:OL,lights_lambert_pars_fragment:PL,lights_pars_begin:zL,lights_toon_fragment:FL,lights_toon_pars_fragment:kL,lights_phong_fragment:VL,lights_phong_pars_fragment:HL,lights_physical_fragment:GL,lights_physical_pars_fragment:XL,lights_fragment_begin:WL,lights_fragment_maps:qL,lights_fragment_end:jL,logdepthbuf_fragment:YL,logdepthbuf_pars_fragment:ZL,logdepthbuf_pars_vertex:QL,logdepthbuf_vertex:KL,map_fragment:JL,map_pars_fragment:$L,map_particle_fragment:eU,map_particle_pars_fragment:tU,metalnessmap_fragment:nU,metalnessmap_pars_fragment:iU,morphinstance_vertex:aU,morphcolor_vertex:sU,morphnormal_vertex:rU,morphtarget_pars_vertex:oU,morphtarget_vertex:lU,normal_fragment_begin:uU,normal_fragment_maps:cU,normal_pars_fragment:fU,normal_pars_vertex:hU,normal_vertex:dU,normalmap_pars_fragment:pU,clearcoat_normal_fragment_begin:mU,clearcoat_normal_fragment_maps:gU,clearcoat_pars_fragment:vU,iridescence_pars_fragment:yU,opaque_fragment:_U,packing:xU,premultiplied_alpha_fragment:bU,project_vertex:SU,dithering_fragment:MU,dithering_pars_fragment:EU,roughnessmap_fragment:TU,roughnessmap_pars_fragment:AU,shadowmap_pars_fragment:wU,shadowmap_pars_vertex:CU,shadowmap_vertex:RU,shadowmask_pars_fragment:NU,skinbase_vertex:DU,skinning_pars_vertex:LU,skinning_vertex:UU,skinnormal_vertex:IU,specularmap_fragment:OU,specularmap_pars_fragment:PU,tonemapping_fragment:zU,tonemapping_pars_fragment:BU,transmission_fragment:FU,transmission_pars_fragment:kU,uv_pars_fragment:VU,uv_pars_vertex:HU,uv_vertex:GU,worldpos_vertex:XU,background_vert:WU,background_frag:qU,backgroundCube_vert:jU,backgroundCube_frag:YU,cube_vert:ZU,cube_frag:QU,depth_vert:KU,depth_frag:JU,distance_vert:$U,distance_frag:eI,equirect_vert:tI,equirect_frag:nI,linedashed_vert:iI,linedashed_frag:aI,meshbasic_vert:sI,meshbasic_frag:rI,meshlambert_vert:oI,meshlambert_frag:lI,meshmatcap_vert:uI,meshmatcap_frag:cI,meshnormal_vert:fI,meshnormal_frag:hI,meshphong_vert:dI,meshphong_frag:pI,meshphysical_vert:mI,meshphysical_frag:gI,meshtoon_vert:vI,meshtoon_frag:yI,points_vert:_I,points_frag:xI,shadow_vert:bI,shadow_frag:SI,sprite_vert:MI,sprite_frag:EI},pt={common:{diffuse:{value:new yt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new en},alphaMap:{value:null},alphaMapTransform:{value:new en},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new en}},envmap:{envMap:{value:null},envMapRotation:{value:new en},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new en}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new en}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new en},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new en},normalScale:{value:new ze(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new en},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new en}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new en}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new en}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new yt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new yt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new en},alphaTest:{value:0},uvTransform:{value:new en}},sprite:{diffuse:{value:new yt(16777215)},opacity:{value:1},center:{value:new ze(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new en},alphaMap:{value:null},alphaMapTransform:{value:new en},alphaTest:{value:0}}},qr={basic:{uniforms:es([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.fog]),vertexShader:un.meshbasic_vert,fragmentShader:un.meshbasic_frag},lambert:{uniforms:es([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,pt.lights,{emissive:{value:new yt(0)}}]),vertexShader:un.meshlambert_vert,fragmentShader:un.meshlambert_frag},phong:{uniforms:es([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,pt.lights,{emissive:{value:new yt(0)},specular:{value:new yt(1118481)},shininess:{value:30}}]),vertexShader:un.meshphong_vert,fragmentShader:un.meshphong_frag},standard:{uniforms:es([pt.common,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.roughnessmap,pt.metalnessmap,pt.fog,pt.lights,{emissive:{value:new yt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:un.meshphysical_vert,fragmentShader:un.meshphysical_frag},toon:{uniforms:es([pt.common,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.gradientmap,pt.fog,pt.lights,{emissive:{value:new yt(0)}}]),vertexShader:un.meshtoon_vert,fragmentShader:un.meshtoon_frag},matcap:{uniforms:es([pt.common,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,{matcap:{value:null}}]),vertexShader:un.meshmatcap_vert,fragmentShader:un.meshmatcap_frag},points:{uniforms:es([pt.points,pt.fog]),vertexShader:un.points_vert,fragmentShader:un.points_frag},dashed:{uniforms:es([pt.common,pt.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:un.linedashed_vert,fragmentShader:un.linedashed_frag},depth:{uniforms:es([pt.common,pt.displacementmap]),vertexShader:un.depth_vert,fragmentShader:un.depth_frag},normal:{uniforms:es([pt.common,pt.bumpmap,pt.normalmap,pt.displacementmap,{opacity:{value:1}}]),vertexShader:un.meshnormal_vert,fragmentShader:un.meshnormal_frag},sprite:{uniforms:es([pt.sprite,pt.fog]),vertexShader:un.sprite_vert,fragmentShader:un.sprite_frag},background:{uniforms:{uvTransform:{value:new en},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:un.background_vert,fragmentShader:un.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new en}},vertexShader:un.backgroundCube_vert,fragmentShader:un.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:un.cube_vert,fragmentShader:un.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:un.equirect_vert,fragmentShader:un.equirect_frag},distance:{uniforms:es([pt.common,pt.displacementmap,{referencePosition:{value:new j},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:un.distance_vert,fragmentShader:un.distance_frag},shadow:{uniforms:es([pt.lights,pt.fog,{color:{value:new yt(0)},opacity:{value:1}}]),vertexShader:un.shadow_vert,fragmentShader:un.shadow_frag}};qr.physical={uniforms:es([qr.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new en},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new en},clearcoatNormalScale:{value:new ze(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new en},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new en},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new en},sheen:{value:0},sheenColor:{value:new yt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new en},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new en},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new en},transmissionSamplerSize:{value:new ze},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new en},attenuationDistance:{value:0},attenuationColor:{value:new yt(0)},specularColor:{value:new yt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new en},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new en},anisotropyVector:{value:new ze},anisotropyMap:{value:null},anisotropyMapTransform:{value:new en}}]),vertexShader:un.meshphysical_vert,fragmentShader:un.meshphysical_frag};const ov={r:0,b:0,g:0},Vc=new Gs,TI=new Xt;function AI(r,e,t,n,s,u,f){const h=new yt(0);let m=u===!0?0:1,g,_,x=null,b=0,M=null;function A(D){let U=D.isScene===!0?D.background:null;return U&&U.isTexture&&(U=(D.backgroundBlurriness>0?t:e).get(U)),U}function R(D){let U=!1;const B=A(D);B===null?E(h,m):B&&B.isColor&&(E(B,1),U=!0);const z=r.xr.getEnvironmentBlendMode();z==="additive"?n.buffers.color.setClear(0,0,0,1,f):z==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,f),(r.autoClear||U)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil))}function w(D,U){const B=A(U);B&&(B.isCubeTexture||B.mapping===id)?(_===void 0&&(_=new Yi(new lf(1,1,1),new yr({name:"BackgroundCubeMaterial",uniforms:Jh(qr.backgroundCube.uniforms),vertexShader:qr.backgroundCube.vertexShader,fragmentShader:qr.backgroundCube.fragmentShader,side:as,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),_.geometry.deleteAttribute("normal"),_.geometry.deleteAttribute("uv"),_.onBeforeRender=function(z,H,W){this.matrixWorld.copyPosition(W.matrixWorld)},Object.defineProperty(_.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),s.update(_)),Vc.copy(U.backgroundRotation),Vc.x*=-1,Vc.y*=-1,Vc.z*=-1,B.isCubeTexture&&B.isRenderTargetTexture===!1&&(Vc.y*=-1,Vc.z*=-1),_.material.uniforms.envMap.value=B,_.material.uniforms.flipEnvMap.value=B.isCubeTexture&&B.isRenderTargetTexture===!1?-1:1,_.material.uniforms.backgroundBlurriness.value=U.backgroundBlurriness,_.material.uniforms.backgroundIntensity.value=U.backgroundIntensity,_.material.uniforms.backgroundRotation.value.setFromMatrix4(TI.makeRotationFromEuler(Vc)),_.material.toneMapped=Sn.getTransfer(B.colorSpace)!==zn,(x!==B||b!==B.version||M!==r.toneMapping)&&(_.material.needsUpdate=!0,x=B,b=B.version,M=r.toneMapping),_.layers.enableAll(),D.unshift(_,_.geometry,_.material,0,0,null)):B&&B.isTexture&&(g===void 0&&(g=new Yi(new sd(2,2),new yr({name:"BackgroundMaterial",uniforms:Jh(qr.background.uniforms),vertexShader:qr.background.vertexShader,fragmentShader:qr.background.fragmentShader,side:Ll,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),g.geometry.deleteAttribute("normal"),Object.defineProperty(g.material,"map",{get:function(){return this.uniforms.t2D.value}}),s.update(g)),g.material.uniforms.t2D.value=B,g.material.uniforms.backgroundIntensity.value=U.backgroundIntensity,g.material.toneMapped=Sn.getTransfer(B.colorSpace)!==zn,B.matrixAutoUpdate===!0&&B.updateMatrix(),g.material.uniforms.uvTransform.value.copy(B.matrix),(x!==B||b!==B.version||M!==r.toneMapping)&&(g.material.needsUpdate=!0,x=B,b=B.version,M=r.toneMapping),g.layers.enableAll(),D.unshift(g,g.geometry,g.material,0,0,null))}function E(D,U){D.getRGB(ov,GE(r)),n.buffers.color.setClear(ov.r,ov.g,ov.b,U,f)}function N(){_!==void 0&&(_.geometry.dispose(),_.material.dispose(),_=void 0),g!==void 0&&(g.geometry.dispose(),g.material.dispose(),g=void 0)}return{getClearColor:function(){return h},setClearColor:function(D,U=1){h.set(D),m=U,E(h,m)},getClearAlpha:function(){return m},setClearAlpha:function(D){m=D,E(h,m)},render:R,addToRenderList:w,dispose:N}}function wI(r,e){const t=r.getParameter(r.MAX_VERTEX_ATTRIBS),n={},s=b(null);let u=s,f=!1;function h(P,Z,se,te,fe){let pe=!1;const Y=x(te,se,Z);u!==Y&&(u=Y,g(u.object)),pe=M(P,te,se,fe),pe&&A(P,te,se,fe),fe!==null&&e.update(fe,r.ELEMENT_ARRAY_BUFFER),(pe||f)&&(f=!1,U(P,Z,se,te),fe!==null&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,e.get(fe).buffer))}function m(){return r.createVertexArray()}function g(P){return r.bindVertexArray(P)}function _(P){return r.deleteVertexArray(P)}function x(P,Z,se){const te=se.wireframe===!0;let fe=n[P.id];fe===void 0&&(fe={},n[P.id]=fe);let pe=fe[Z.id];pe===void 0&&(pe={},fe[Z.id]=pe);let Y=pe[te];return Y===void 0&&(Y=b(m()),pe[te]=Y),Y}function b(P){const Z=[],se=[],te=[];for(let fe=0;fe=0){const Ne=fe[ne];let X=pe[ne];if(X===void 0&&(ne==="instanceMatrix"&&P.instanceMatrix&&(X=P.instanceMatrix),ne==="instanceColor"&&P.instanceColor&&(X=P.instanceColor)),Ne===void 0||Ne.attribute!==X||X&&Ne.data!==X.data)return!0;Y++}return u.attributesNum!==Y||u.index!==te}function A(P,Z,se,te){const fe={},pe=Z.attributes;let Y=0;const q=se.getAttributes();for(const ne in q)if(q[ne].location>=0){let Ne=pe[ne];Ne===void 0&&(ne==="instanceMatrix"&&P.instanceMatrix&&(Ne=P.instanceMatrix),ne==="instanceColor"&&P.instanceColor&&(Ne=P.instanceColor));const X={};X.attribute=Ne,Ne&&Ne.data&&(X.data=Ne.data),fe[ne]=X,Y++}u.attributes=fe,u.attributesNum=Y,u.index=te}function R(){const P=u.newAttributes;for(let Z=0,se=P.length;Z=0){let be=fe[q];if(be===void 0&&(q==="instanceMatrix"&&P.instanceMatrix&&(be=P.instanceMatrix),q==="instanceColor"&&P.instanceColor&&(be=P.instanceColor)),be!==void 0){const Ne=be.normalized,X=be.itemSize,oe=e.get(be);if(oe===void 0)continue;const Ae=oe.buffer,Fe=oe.type,lt=oe.bytesPerElement,de=Fe===r.INT||Fe===r.UNSIGNED_INT||be.gpuType===yy;if(be.isInterleavedBufferAttribute){const Re=be.data,tt=Re.stride,st=be.offset;if(Re.isInstancedInterleavedBuffer){for(let ht=0;ht0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT).precision>0)return"highp";H="mediump"}return H==="mediump"&&r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.MEDIUM_FLOAT).precision>0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let g=t.precision!==void 0?t.precision:"highp";const _=m(g);_!==g&&(ft("WebGLRenderer:",g,"not supported, using",_,"instead."),g=_);const x=t.logarithmicDepthBuffer===!0,b=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control"),M=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS),A=r.getParameter(r.MAX_VERTEX_TEXTURE_IMAGE_UNITS),R=r.getParameter(r.MAX_TEXTURE_SIZE),w=r.getParameter(r.MAX_CUBE_MAP_TEXTURE_SIZE),E=r.getParameter(r.MAX_VERTEX_ATTRIBS),N=r.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),D=r.getParameter(r.MAX_VARYING_VECTORS),U=r.getParameter(r.MAX_FRAGMENT_UNIFORM_VECTORS),B=r.getParameter(r.MAX_SAMPLES),z=r.getParameter(r.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:u,getMaxPrecision:m,textureFormatReadable:f,textureTypeReadable:h,precision:g,logarithmicDepthBuffer:x,reversedDepthBuffer:b,maxTextures:M,maxVertexTextures:A,maxTextureSize:R,maxCubemapSize:w,maxAttributes:E,maxVertexUniforms:N,maxVaryings:D,maxFragmentUniforms:U,maxSamples:B,samples:z}}function NI(r){const e=this;let t=null,n=0,s=!1,u=!1;const f=new wl,h=new en,m={value:null,needsUpdate:!1};this.uniform=m,this.numPlanes=0,this.numIntersection=0,this.init=function(x,b){const M=x.length!==0||b||n!==0||s;return s=b,n=x.length,M},this.beginShadows=function(){u=!0,_(null)},this.endShadows=function(){u=!1},this.setGlobalState=function(x,b){t=_(x,b,0)},this.setState=function(x,b,M){const A=x.clippingPlanes,R=x.clipIntersection,w=x.clipShadows,E=r.get(x);if(!s||A===null||A.length===0||u&&!w)u?_(null):g();else{const N=u?0:n,D=N*4;let U=E.clippingState||null;m.value=U,U=_(A,b,D,M);for(let B=0;B!==D;++B)U[B]=t[B];E.clippingState=U,this.numIntersection=R?this.numPlanes:0,this.numPlanes+=N}};function g(){m.value!==t&&(m.value=t,m.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function _(x,b,M,A){const R=x!==null?x.length:0;let w=null;if(R!==0){if(w=m.value,A!==!0||w===null){const E=M+R*4,N=b.matrixWorldInverse;h.getNormalMatrix(N),(w===null||w.length0){const g=new Db(m.height);return g.fromEquirectangularTexture(r,f),e.set(f,g),f.addEventListener("dispose",s),t(g.texture,f.mapping)}else return null}}return f}function s(f){const h=f.target;h.removeEventListener("dispose",s);const m=e.get(h);m!==void 0&&(e.delete(h),m.dispose())}function u(){e=new WeakMap}return{get:n,dispose:u}}const Ou=4,c1=[.125,.215,.35,.446,.526,.582],qc=20,LI=256,Wp=new Dl,f1=new yt;let Mx=null,Ex=0,Tx=0,Ax=!1;const UI=new j;class nb{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,n=.1,s=100,u={}){const{size:f=256,position:h=UI}=u;Mx=this._renderer.getRenderTarget(),Ex=this._renderer.getActiveCubeFace(),Tx=this._renderer.getActiveMipmapLevel(),Ax=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(f);const m=this._allocateTargets();return m.depthBuffer=!0,this._sceneToCubeUV(e,n,s,m,h),t>0&&this._blur(m,0,0,t),this._applyPMREM(m),this._cleanup(m),m}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=p1(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=d1(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?B:0,B,B),x.setRenderTarget(s),E&&x.render(R,m),x.render(e,m)}x.toneMapping=M,x.autoClear=b,e.background=N}_textureToCubeUV(e,t){const n=this._renderer,s=e.mapping===zo||e.mapping===Pu;s?(this._cubemapMaterial===null&&(this._cubemapMaterial=p1()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=d1());const u=s?this._cubemapMaterial:this._equirectMaterial,f=this._lodMeshes[0];f.material=u;const h=u.uniforms;h.envMap.value=e;const m=this._cubeSize;zh(t,0,0,3*m,2*m),n.setRenderTarget(t),n.render(f,Wp)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const s=this._lodMeshes.length;for(let u=1;uA-Ou?n-A+Ou:0),E=4*(this._cubeSize-R);m.envMap.value=e.texture,m.roughness.value=M,m.mipInt.value=A-t,zh(u,w,E,3*R,2*R),s.setRenderTarget(u),s.render(h,Wp),m.envMap.value=u.texture,m.roughness.value=0,m.mipInt.value=A-n,zh(e,w,E,3*R,2*R),s.setRenderTarget(e),s.render(h,Wp)}_blur(e,t,n,s,u){const f=this._pingPongRenderTarget;this._halfBlur(e,f,t,n,s,"latitudinal",u),this._halfBlur(f,e,n,n,s,"longitudinal",u)}_halfBlur(e,t,n,s,u,f,h){const m=this._renderer,g=this._blurMaterial;f!=="latitudinal"&&f!=="longitudinal"&&Rt("blur direction must be either latitudinal or longitudinal!");const _=3,x=this._lodMeshes[s];x.material=g;const b=g.uniforms,M=this._sizeLods[n]-1,A=isFinite(u)?Math.PI/(2*M):2*Math.PI/(2*qc-1),R=u/A,w=isFinite(u)?1+Math.floor(_*R):qc;w>qc&&ft(`sigmaRadians, ${u}, is too large and will clip, as it requested ${w} samples when the maximum is set to ${qc}`);const E=[];let N=0;for(let H=0;HD-Ou?s-D+Ou:0),z=4*(this._cubeSize-U);zh(t,B,z,3*U,2*U),m.setRenderTarget(t),m.render(x,Wp)}}function II(r){const e=[],t=[],n=[];let s=r;const u=r-Ou+1+c1.length;for(let f=0;fr-Ou?m=c1[f-r+Ou-1]:f===0&&(m=0),t.push(m);const g=1/(h-2),_=-g,x=1+g,b=[_,_,x,_,x,x,_,_,x,x,_,x],M=6,A=6,R=3,w=2,E=1,N=new Float32Array(R*A*M),D=new Float32Array(w*A*M),U=new Float32Array(E*A*M);for(let z=0;z2?0:-1,I=[H,W,0,H+2/3,W,0,H+2/3,W+1,0,H,W,0,H+2/3,W+1,0,H,W+1,0];N.set(I,R*A*z),D.set(b,w*A*z);const P=[z,z,z,z,z,z];U.set(P,E*A*z)}const B=new Kt;B.setAttribute("position",new Xn(N,R)),B.setAttribute("uv",new Xn(D,w)),B.setAttribute("faceIndex",new Xn(U,E)),n.push(new Yi(B,null)),s>Ou&&s--}return{lodMeshes:n,sizeLods:e,sigmas:t}}function h1(r,e,t){const n=new Hs(r,e,t);return n.texture.mapping=id,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function zh(r,e,t,n,s){r.viewport.set(e,t,n,s),r.scissor.set(e,t,n,s)}function OI(r,e,t){return new yr({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:LI,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:Qy(),fragmentShader:` + + precision highp float; + precision highp int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform float roughness; + uniform float mipInt; + + #define ENVMAP_TYPE_CUBE_UV + #include + + #define PI 3.14159265359 + + // Van der Corput radical inverse + float radicalInverse_VdC(uint bits) { + bits = (bits << 16u) | (bits >> 16u); + bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u); + bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u); + bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u); + bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u); + return float(bits) * 2.3283064365386963e-10; // / 0x100000000 + } + + // Hammersley sequence + vec2 hammersley(uint i, uint N) { + return vec2(float(i) / float(N), radicalInverse_VdC(i)); + } + + // GGX VNDF importance sampling (Eric Heitz 2018) + // "Sampling the GGX Distribution of Visible Normals" + // https://jcgt.org/published/0007/04/01/ + vec3 importanceSampleGGX_VNDF(vec2 Xi, vec3 V, float roughness) { + float alpha = roughness * roughness; + + // Section 3.2: Transform view direction to hemisphere configuration + vec3 Vh = normalize(vec3(alpha * V.x, alpha * V.y, V.z)); + + // Section 4.1: Orthonormal basis + float lensq = Vh.x * Vh.x + Vh.y * Vh.y; + vec3 T1 = lensq > 0.0 ? vec3(-Vh.y, Vh.x, 0.0) / sqrt(lensq) : vec3(1.0, 0.0, 0.0); + vec3 T2 = cross(Vh, T1); + + // Section 4.2: Parameterization of projected area + float r = sqrt(Xi.x); + float phi = 2.0 * PI * Xi.y; + float t1 = r * cos(phi); + float t2 = r * sin(phi); + float s = 0.5 * (1.0 + Vh.z); + t2 = (1.0 - s) * sqrt(1.0 - t1 * t1) + s * t2; + + // Section 4.3: Reprojection onto hemisphere + vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) * Vh; + + // Section 3.4: Transform back to ellipsoid configuration + return normalize(vec3(alpha * Nh.x, alpha * Nh.y, max(0.0, Nh.z))); + } + + void main() { + vec3 N = normalize(vOutputDirection); + vec3 V = N; // Assume view direction equals normal for pre-filtering + + vec3 prefilteredColor = vec3(0.0); + float totalWeight = 0.0; + + // For very low roughness, just sample the environment directly + if (roughness < 0.001) { + gl_FragColor = vec4(bilinearCubeUV(envMap, N, mipInt), 1.0); + return; + } + + // Tangent space basis for VNDF sampling + vec3 up = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangent = normalize(cross(up, N)); + vec3 bitangent = cross(N, tangent); + + for(uint i = 0u; i < uint(GGX_SAMPLES); i++) { + vec2 Xi = hammersley(i, uint(GGX_SAMPLES)); + + // For PMREM, V = N, so in tangent space V is always (0, 0, 1) + vec3 H_tangent = importanceSampleGGX_VNDF(Xi, vec3(0.0, 0.0, 1.0), roughness); + + // Transform H back to world space + vec3 H = normalize(tangent * H_tangent.x + bitangent * H_tangent.y + N * H_tangent.z); + vec3 L = normalize(2.0 * dot(V, H) * H - V); + + float NdotL = max(dot(N, L), 0.0); + + if(NdotL > 0.0) { + // Sample environment at fixed mip level + // VNDF importance sampling handles the distribution filtering + vec3 sampleColor = bilinearCubeUV(envMap, L, mipInt); + + // Weight by NdotL for the split-sum approximation + // VNDF PDF naturally accounts for the visible microfacet distribution + prefilteredColor += sampleColor * NdotL; + totalWeight += NdotL; + } + } + + if (totalWeight > 0.0) { + prefilteredColor = prefilteredColor / totalWeight; + } + + gl_FragColor = vec4(prefilteredColor, 1.0); + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function PI(r,e,t){const n=new Float32Array(qc),s=new j(0,1,0);return new yr({name:"SphericalGaussianBlur",defines:{n:qc,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:s}},vertexShader:Qy(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function d1(){return new yr({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Qy(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function p1(){return new yr({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Qy(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function Qy(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function zI(r){let e=new WeakMap,t=null;function n(h){if(h&&h.isTexture){const m=h.mapping,g=m===om||m===lm,_=m===zo||m===Pu;if(g||_){let x=e.get(h);const b=x!==void 0?x.texture.pmremVersion:0;if(h.isRenderTargetTexture&&h.pmremVersion!==b)return t===null&&(t=new nb(r)),x=g?t.fromEquirectangular(h,x):t.fromCubemap(h,x),x.texture.pmremVersion=h.pmremVersion,e.set(h,x),x.texture;if(x!==void 0)return x.texture;{const M=h.image;return g&&M&&M.height>0||_&&M&&s(M)?(t===null&&(t=new nb(r)),x=g?t.fromEquirectangular(h):t.fromCubemap(h),x.texture.pmremVersion=h.pmremVersion,e.set(h,x),h.addEventListener("dispose",u),x.texture):null}}}return h}function s(h){let m=0;const g=6;for(let _=0;_e.maxTextureSize&&(B=Math.ceil(U/e.maxTextureSize),U=e.maxTextureSize);const z=new Float32Array(U*B*4*x),H=new wy(z,U,B,x);H.type=is,H.needsUpdate=!0;const W=D*4;for(let P=0;P + #include + + void main() { + gl_FragColor = texture2D( tDiffuse, vUv ); + + #ifdef LINEAR_TONE_MAPPING + gl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb ); + #elif defined( REINHARD_TONE_MAPPING ) + gl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb ); + #elif defined( CINEON_TONE_MAPPING ) + gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb ); + #elif defined( ACES_FILMIC_TONE_MAPPING ) + gl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb ); + #elif defined( AGX_TONE_MAPPING ) + gl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb ); + #elif defined( NEUTRAL_TONE_MAPPING ) + gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb ); + #elif defined( CUSTOM_TONE_MAPPING ) + gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb ); + #endif + + #ifdef SRGB_TRANSFER + gl_FragColor = sRGBTransferOETF( gl_FragColor ); + #endif + }`,depthTest:!1,depthWrite:!1}),g=new Yi(h,m),_=new Dl(-1,1,1,-1,0,1);let x=null,b=null,M=!1,A,R=null,w=[],E=!1;this.setSize=function(N,D){u.setSize(N,D),f.setSize(N,D);for(let U=0;U0&&w[0].isRenderPass===!0;const D=u.width,U=u.height;for(let B=0;B0)return r;const s=e*t;let u=m1[s];if(u===void 0&&(u=new Float32Array(s),m1[s]=u),e!==0){n.toArray(u,0);for(let f=1,h=0;f!==e;++f)h+=t,r[f].toArray(u,h)}return u}function ea(r,e){if(r.length!==e.length)return!1;for(let t=0,n=r.length;t0&&(this.seq=s.concat(u))}setValue(e,t,n,s){const u=this.map[t];u!==void 0&&u.setValue(e,n,s)}setOptional(e,t,n){const s=t[n];s!==void 0&&this.setValue(e,n,s)}static upload(e,t,n,s){for(let u=0,f=t.length;u!==f;++u){const h=t[u],m=n[h.id];m.needsUpdate!==!1&&h.setValue(e,m.value,s)}}static seqWithValue(e,t){const n=[];for(let s=0,u=e.length;s!==u;++s){const f=e[s];f.id in t&&n.push(f)}return n}}function b1(r,e,t){const n=r.createShader(e);return r.shaderSource(n,t),r.compileShader(n),n}const PO=37297;let zO=0;function BO(r,e){const t=r.split(` +`),n=[],s=Math.max(e-6,0),u=Math.min(e+6,t.length);for(let f=s;f":" "} ${h}: ${t[f]}`)}return n.join(` +`)}const S1=new en;function FO(r){Sn._getMatrix(S1,Sn.workingColorSpace,r);const e=`mat3( ${S1.elements.map(t=>t.toFixed(4))} )`;switch(Sn.getTransfer(r)){case dm:return[e,"LinearTransferOETF"];case zn:return[e,"sRGBTransferOETF"];default:return ft("WebGLProgram: Unsupported color space: ",r),[e,"LinearTransferOETF"]}}function M1(r,e,t){const n=r.getShaderParameter(e,r.COMPILE_STATUS),u=(r.getShaderInfoLog(e)||"").trim();if(n&&u==="")return"";const f=/ERROR: 0:(\d+)/.exec(u);if(f){const h=parseInt(f[1]);return t.toUpperCase()+` + +`+u+` + +`+BO(r.getShaderSource(e),h)}else return u}function kO(r,e){const t=FO(e);return[`vec4 ${r}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(` +`)}const VO={[db]:"Linear",[pb]:"Reinhard",[mb]:"Cineon",[gy]:"ACESFilmic",[vb]:"AgX",[yb]:"Neutral",[gb]:"Custom"};function HO(r,e){const t=VO[e];return t===void 0?(ft("WebGLProgram: Unsupported toneMapping:",e),"vec3 "+r+"( vec3 color ) { return LinearToneMapping( color ); }"):"vec3 "+r+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const lv=new j;function GO(){Sn.getLuminanceCoefficients(lv);const r=lv.x.toFixed(4),e=lv.y.toFixed(4),t=lv.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${r}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` +`)}function XO(r){return[r.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",r.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(Qp).join(` +`)}function WO(r){const e=[];for(const t in r){const n=r[t];n!==!1&&e.push("#define "+t+" "+n)}return e.join(` +`)}function qO(r,e){const t={},n=r.getProgramParameter(e,r.ACTIVE_ATTRIBUTES);for(let s=0;s/gm;function ab(r){return r.replace(jO,ZO)}const YO=new Map;function ZO(r,e){let t=un[e];if(t===void 0){const n=YO.get(e);if(n!==void 0)t=un[n],ft('WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return ab(t)}const QO=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function A1(r){return r.replace(QO,KO)}function KO(r,e,t,n){let s="";for(let u=parseInt(e);u0&&(w+=` +`),E=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,A].filter(Qp).join(` +`),E.length>0&&(E+=` +`)):(w=[w1(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,A,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+_:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+m:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(Qp).join(` +`),E=[w1(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,A,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+g:"",t.envMap?"#define "+_:"",t.envMap?"#define "+x:"",b?"#define CUBEUV_TEXEL_WIDTH "+b.texelWidth:"",b?"#define CUBEUV_TEXEL_HEIGHT "+b.texelHeight:"",b?"#define CUBEUV_MAX_MIP "+b.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+m:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==gr?"#define TONE_MAPPING":"",t.toneMapping!==gr?un.tonemapping_pars_fragment:"",t.toneMapping!==gr?HO("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",un.colorspace_pars_fragment,kO("linearToOutputTexel",t.outputColorSpace),GO(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(Qp).join(` +`)),f=ab(f),f=E1(f,t),f=T1(f,t),h=ab(h),h=E1(h,t),h=T1(h,t),f=A1(f),h=A1(h),t.isRawShaderMaterial!==!0&&(N=`#version 300 es +`,w=[M,"#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+w,E=["#define varying in",t.glslVersion===jx?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===jx?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`)+` +`+E);const D=N+w+f,U=N+E+h,B=b1(s,s.VERTEX_SHADER,D),z=b1(s,s.FRAGMENT_SHADER,U);s.attachShader(R,B),s.attachShader(R,z),t.index0AttributeName!==void 0?s.bindAttribLocation(R,0,t.index0AttributeName):t.morphTargets===!0&&s.bindAttribLocation(R,0,"position"),s.linkProgram(R);function H(Z){if(r.debug.checkShaderErrors){const se=s.getProgramInfoLog(R)||"",te=s.getShaderInfoLog(B)||"",fe=s.getShaderInfoLog(z)||"",pe=se.trim(),Y=te.trim(),q=fe.trim();let ne=!0,be=!0;if(s.getProgramParameter(R,s.LINK_STATUS)===!1)if(ne=!1,typeof r.debug.onShaderError=="function")r.debug.onShaderError(s,R,B,z);else{const Ne=M1(s,B,"vertex"),X=M1(s,z,"fragment");Rt("THREE.WebGLProgram: Shader Error "+s.getError()+" - VALIDATE_STATUS "+s.getProgramParameter(R,s.VALIDATE_STATUS)+` + +Material Name: `+Z.name+` +Material Type: `+Z.type+` + +Program Info Log: `+pe+` +`+Ne+` +`+X)}else pe!==""?ft("WebGLProgram: Program Info Log:",pe):(Y===""||q==="")&&(be=!1);be&&(Z.diagnostics={runnable:ne,programLog:pe,vertexShader:{log:Y,prefix:w},fragmentShader:{log:q,prefix:E}})}s.deleteShader(B),s.deleteShader(z),W=new mv(s,R),I=qO(s,R)}let W;this.getUniforms=function(){return W===void 0&&H(this),W};let I;this.getAttributes=function(){return I===void 0&&H(this),I};let P=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return P===!1&&(P=s.getProgramParameter(R,PO)),P},this.destroy=function(){n.releaseStatesOfProgram(this),s.deleteProgram(R),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=zO++,this.cacheKey=e,this.usedTimes=1,this.program=R,this.vertexShader=B,this.fragmentShader=z,this}let lP=0;class uP{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,s=this._getShaderStage(t),u=this._getShaderStage(n),f=this._getShaderCacheForMaterial(e);return f.has(s)===!1&&(f.add(s),s.usedTimes++),f.has(u)===!1&&(f.add(u),u.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new cP(e),t.set(e,n)),n}}class cP{constructor(e){this.id=lP++,this.code=e,this.usedTimes=0}}function fP(r,e,t,n,s,u,f){const h=new Kh,m=new uP,g=new Set,_=[],x=new Map,b=s.logarithmicDepthBuffer;let M=s.precision;const A={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distance",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function R(I){return g.add(I),I===0?"uv":`uv${I}`}function w(I,P,Z,se,te){const fe=se.fog,pe=te.geometry,Y=I.isMeshStandardMaterial?se.environment:null,q=(I.isMeshStandardMaterial?t:e).get(I.envMap||Y),ne=q&&q.mapping===id?q.image.height:null,be=A[I.type];I.precision!==null&&(M=s.getMaxPrecision(I.precision),M!==I.precision&&ft("WebGLProgram.getParameters:",I.precision,"not supported, using",M,"instead."));const Ne=pe.morphAttributes.position||pe.morphAttributes.normal||pe.morphAttributes.color,X=Ne!==void 0?Ne.length:0;let oe=0;pe.morphAttributes.position!==void 0&&(oe=1),pe.morphAttributes.normal!==void 0&&(oe=2),pe.morphAttributes.color!==void 0&&(oe=3);let Ae,Fe,lt,de;if(be){const nn=qr[be];Ae=nn.vertexShader,Fe=nn.fragmentShader}else Ae=I.vertexShader,Fe=I.fragmentShader,m.update(I),lt=m.getVertexShaderID(I),de=m.getFragmentShaderID(I);const Re=r.getRenderTarget(),tt=r.state.buffers.depth.getReversed(),st=te.isInstancedMesh===!0,ht=te.isBatchedMesh===!0,jt=!!I.map,tn=!!I.matcap,Nt=!!q,Le=!!I.aoMap,He=!!I.lightMap,Oe=!!I.bumpMap,nt=!!I.normalMap,Q=!!I.displacementMap,Et=!!I.emissiveMap,ot=!!I.metalnessMap,Tt=!!I.roughnessMap,Qe=I.anisotropy>0,G=I.clearcoat>0,O=I.dispersion>0,ae=I.iridescence>0,Te=I.sheen>0,Ie=I.transmission>0,Ee=Qe&&!!I.anisotropyMap,dt=G&&!!I.clearcoatMap,Ke=G&&!!I.clearcoatNormalMap,vt=G&&!!I.clearcoatRoughnessMap,Dt=ae&&!!I.iridescenceMap,Ve=ae&&!!I.iridescenceThicknessMap,Ze=Te&&!!I.sheenColorMap,ct=Te&&!!I.sheenRoughnessMap,K=!!I.specularMap,me=!!I.specularColorMap,et=!!I.specularIntensityMap,J=Ie&&!!I.transmissionMap,je=Ie&&!!I.thicknessMap,Ge=!!I.gradientMap,at=!!I.alphaMap,Xe=I.alphaTest>0,Ue=!!I.alphaHash,Ye=!!I.extensions;let Ct=gr;I.toneMapped&&(Re===null||Re.isXRRenderTarget===!0)&&(Ct=r.toneMapping);const Jt={shaderID:be,shaderType:I.type,shaderName:I.name,vertexShader:Ae,fragmentShader:Fe,defines:I.defines,customVertexShaderID:lt,customFragmentShaderID:de,isRawShaderMaterial:I.isRawShaderMaterial===!0,glslVersion:I.glslVersion,precision:M,batching:ht,batchingColor:ht&&te._colorsTexture!==null,instancing:st,instancingColor:st&&te.instanceColor!==null,instancingMorph:st&&te.morphTexture!==null,outputColorSpace:Re===null?r.outputColorSpace:Re.isXRRenderTarget===!0?Re.texture.colorSpace:zu,alphaToCoverage:!!I.alphaToCoverage,map:jt,matcap:tn,envMap:Nt,envMapMode:Nt&&q.mapping,envMapCubeUVHeight:ne,aoMap:Le,lightMap:He,bumpMap:Oe,normalMap:nt,displacementMap:Q,emissiveMap:Et,normalMapObjectSpace:nt&&I.normalMapType===DE,normalMapTangentSpace:nt&&I.normalMapType===ku,metalnessMap:ot,roughnessMap:Tt,anisotropy:Qe,anisotropyMap:Ee,clearcoat:G,clearcoatMap:dt,clearcoatNormalMap:Ke,clearcoatRoughnessMap:vt,dispersion:O,iridescence:ae,iridescenceMap:Dt,iridescenceThicknessMap:Ve,sheen:Te,sheenColorMap:Ze,sheenRoughnessMap:ct,specularMap:K,specularColorMap:me,specularIntensityMap:et,transmission:Ie,transmissionMap:J,thicknessMap:je,gradientMap:Ge,opaque:I.transparent===!1&&I.blending===Kc&&I.alphaToCoverage===!1,alphaMap:at,alphaTest:Xe,alphaHash:Ue,combine:I.combine,mapUv:jt&&R(I.map.channel),aoMapUv:Le&&R(I.aoMap.channel),lightMapUv:He&&R(I.lightMap.channel),bumpMapUv:Oe&&R(I.bumpMap.channel),normalMapUv:nt&&R(I.normalMap.channel),displacementMapUv:Q&&R(I.displacementMap.channel),emissiveMapUv:Et&&R(I.emissiveMap.channel),metalnessMapUv:ot&&R(I.metalnessMap.channel),roughnessMapUv:Tt&&R(I.roughnessMap.channel),anisotropyMapUv:Ee&&R(I.anisotropyMap.channel),clearcoatMapUv:dt&&R(I.clearcoatMap.channel),clearcoatNormalMapUv:Ke&&R(I.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:vt&&R(I.clearcoatRoughnessMap.channel),iridescenceMapUv:Dt&&R(I.iridescenceMap.channel),iridescenceThicknessMapUv:Ve&&R(I.iridescenceThicknessMap.channel),sheenColorMapUv:Ze&&R(I.sheenColorMap.channel),sheenRoughnessMapUv:ct&&R(I.sheenRoughnessMap.channel),specularMapUv:K&&R(I.specularMap.channel),specularColorMapUv:me&&R(I.specularColorMap.channel),specularIntensityMapUv:et&&R(I.specularIntensityMap.channel),transmissionMapUv:J&&R(I.transmissionMap.channel),thicknessMapUv:je&&R(I.thicknessMap.channel),alphaMapUv:at&&R(I.alphaMap.channel),vertexTangents:!!pe.attributes.tangent&&(nt||Qe),vertexColors:I.vertexColors,vertexAlphas:I.vertexColors===!0&&!!pe.attributes.color&&pe.attributes.color.itemSize===4,pointsUvs:te.isPoints===!0&&!!pe.attributes.uv&&(jt||at),fog:!!fe,useFog:I.fog===!0,fogExp2:!!fe&&fe.isFogExp2,flatShading:I.flatShading===!0&&I.wireframe===!1,sizeAttenuation:I.sizeAttenuation===!0,logarithmicDepthBuffer:b,reversedDepthBuffer:tt,skinning:te.isSkinnedMesh===!0,morphTargets:pe.morphAttributes.position!==void 0,morphNormals:pe.morphAttributes.normal!==void 0,morphColors:pe.morphAttributes.color!==void 0,morphTargetsCount:X,morphTextureStride:oe,numDirLights:P.directional.length,numPointLights:P.point.length,numSpotLights:P.spot.length,numSpotLightMaps:P.spotLightMap.length,numRectAreaLights:P.rectArea.length,numHemiLights:P.hemi.length,numDirLightShadows:P.directionalShadowMap.length,numPointLightShadows:P.pointShadowMap.length,numSpotLightShadows:P.spotShadowMap.length,numSpotLightShadowsWithMaps:P.numSpotLightShadowsWithMaps,numLightProbes:P.numLightProbes,numClippingPlanes:f.numPlanes,numClipIntersection:f.numIntersection,dithering:I.dithering,shadowMapEnabled:r.shadowMap.enabled&&Z.length>0,shadowMapType:r.shadowMap.type,toneMapping:Ct,decodeVideoTexture:jt&&I.map.isVideoTexture===!0&&Sn.getTransfer(I.map.colorSpace)===zn,decodeVideoTextureEmissive:Et&&I.emissiveMap.isVideoTexture===!0&&Sn.getTransfer(I.emissiveMap.colorSpace)===zn,premultipliedAlpha:I.premultipliedAlpha,doubleSided:I.side===Uo,flipSided:I.side===as,useDepthPacking:I.depthPacking>=0,depthPacking:I.depthPacking||0,index0AttributeName:I.index0AttributeName,extensionClipCullDistance:Ye&&I.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(Ye&&I.extensions.multiDraw===!0||ht)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:I.customProgramCacheKey()};return Jt.vertexUv1s=g.has(1),Jt.vertexUv2s=g.has(2),Jt.vertexUv3s=g.has(3),g.clear(),Jt}function E(I){const P=[];if(I.shaderID?P.push(I.shaderID):(P.push(I.customVertexShaderID),P.push(I.customFragmentShaderID)),I.defines!==void 0)for(const Z in I.defines)P.push(Z),P.push(I.defines[Z]);return I.isRawShaderMaterial===!1&&(N(P,I),D(P,I),P.push(r.outputColorSpace)),P.push(I.customProgramCacheKey),P.join()}function N(I,P){I.push(P.precision),I.push(P.outputColorSpace),I.push(P.envMapMode),I.push(P.envMapCubeUVHeight),I.push(P.mapUv),I.push(P.alphaMapUv),I.push(P.lightMapUv),I.push(P.aoMapUv),I.push(P.bumpMapUv),I.push(P.normalMapUv),I.push(P.displacementMapUv),I.push(P.emissiveMapUv),I.push(P.metalnessMapUv),I.push(P.roughnessMapUv),I.push(P.anisotropyMapUv),I.push(P.clearcoatMapUv),I.push(P.clearcoatNormalMapUv),I.push(P.clearcoatRoughnessMapUv),I.push(P.iridescenceMapUv),I.push(P.iridescenceThicknessMapUv),I.push(P.sheenColorMapUv),I.push(P.sheenRoughnessMapUv),I.push(P.specularMapUv),I.push(P.specularColorMapUv),I.push(P.specularIntensityMapUv),I.push(P.transmissionMapUv),I.push(P.thicknessMapUv),I.push(P.combine),I.push(P.fogExp2),I.push(P.sizeAttenuation),I.push(P.morphTargetsCount),I.push(P.morphAttributeCount),I.push(P.numDirLights),I.push(P.numPointLights),I.push(P.numSpotLights),I.push(P.numSpotLightMaps),I.push(P.numHemiLights),I.push(P.numRectAreaLights),I.push(P.numDirLightShadows),I.push(P.numPointLightShadows),I.push(P.numSpotLightShadows),I.push(P.numSpotLightShadowsWithMaps),I.push(P.numLightProbes),I.push(P.shadowMapType),I.push(P.toneMapping),I.push(P.numClippingPlanes),I.push(P.numClipIntersection),I.push(P.depthPacking)}function D(I,P){h.disableAll(),P.instancing&&h.enable(0),P.instancingColor&&h.enable(1),P.instancingMorph&&h.enable(2),P.matcap&&h.enable(3),P.envMap&&h.enable(4),P.normalMapObjectSpace&&h.enable(5),P.normalMapTangentSpace&&h.enable(6),P.clearcoat&&h.enable(7),P.iridescence&&h.enable(8),P.alphaTest&&h.enable(9),P.vertexColors&&h.enable(10),P.vertexAlphas&&h.enable(11),P.vertexUv1s&&h.enable(12),P.vertexUv2s&&h.enable(13),P.vertexUv3s&&h.enable(14),P.vertexTangents&&h.enable(15),P.anisotropy&&h.enable(16),P.alphaHash&&h.enable(17),P.batching&&h.enable(18),P.dispersion&&h.enable(19),P.batchingColor&&h.enable(20),P.gradientMap&&h.enable(21),I.push(h.mask),h.disableAll(),P.fog&&h.enable(0),P.useFog&&h.enable(1),P.flatShading&&h.enable(2),P.logarithmicDepthBuffer&&h.enable(3),P.reversedDepthBuffer&&h.enable(4),P.skinning&&h.enable(5),P.morphTargets&&h.enable(6),P.morphNormals&&h.enable(7),P.morphColors&&h.enable(8),P.premultipliedAlpha&&h.enable(9),P.shadowMapEnabled&&h.enable(10),P.doubleSided&&h.enable(11),P.flipSided&&h.enable(12),P.useDepthPacking&&h.enable(13),P.dithering&&h.enable(14),P.transmission&&h.enable(15),P.sheen&&h.enable(16),P.opaque&&h.enable(17),P.pointsUvs&&h.enable(18),P.decodeVideoTexture&&h.enable(19),P.decodeVideoTextureEmissive&&h.enable(20),P.alphaToCoverage&&h.enable(21),I.push(h.mask)}function U(I){const P=A[I.type];let Z;if(P){const se=qr[P];Z=XE.clone(se.uniforms)}else Z=I.uniforms;return Z}function B(I,P){let Z=x.get(P);return Z!==void 0?++Z.usedTimes:(Z=new oP(r,P,I,u),_.push(Z),x.set(P,Z)),Z}function z(I){if(--I.usedTimes===0){const P=_.indexOf(I);_[P]=_[_.length-1],_.pop(),x.delete(I.cacheKey),I.destroy()}}function H(I){m.remove(I)}function W(){m.dispose()}return{getParameters:w,getProgramCacheKey:E,getUniforms:U,acquireProgram:B,releaseProgram:z,releaseShaderCache:H,programs:_,dispose:W}}function hP(){let r=new WeakMap;function e(f){return r.has(f)}function t(f){let h=r.get(f);return h===void 0&&(h={},r.set(f,h)),h}function n(f){r.delete(f)}function s(f,h,m){r.get(f)[h]=m}function u(){r=new WeakMap}return{has:e,get:t,remove:n,update:s,dispose:u}}function dP(r,e){return r.groupOrder!==e.groupOrder?r.groupOrder-e.groupOrder:r.renderOrder!==e.renderOrder?r.renderOrder-e.renderOrder:r.material.id!==e.material.id?r.material.id-e.material.id:r.z!==e.z?r.z-e.z:r.id-e.id}function C1(r,e){return r.groupOrder!==e.groupOrder?r.groupOrder-e.groupOrder:r.renderOrder!==e.renderOrder?r.renderOrder-e.renderOrder:r.z!==e.z?e.z-r.z:r.id-e.id}function R1(){const r=[];let e=0;const t=[],n=[],s=[];function u(){e=0,t.length=0,n.length=0,s.length=0}function f(x,b,M,A,R,w){let E=r[e];return E===void 0?(E={id:x.id,object:x,geometry:b,material:M,groupOrder:A,renderOrder:x.renderOrder,z:R,group:w},r[e]=E):(E.id=x.id,E.object=x,E.geometry=b,E.material=M,E.groupOrder=A,E.renderOrder=x.renderOrder,E.z=R,E.group=w),e++,E}function h(x,b,M,A,R,w){const E=f(x,b,M,A,R,w);M.transmission>0?n.push(E):M.transparent===!0?s.push(E):t.push(E)}function m(x,b,M,A,R,w){const E=f(x,b,M,A,R,w);M.transmission>0?n.unshift(E):M.transparent===!0?s.unshift(E):t.unshift(E)}function g(x,b){t.length>1&&t.sort(x||dP),n.length>1&&n.sort(b||C1),s.length>1&&s.sort(b||C1)}function _(){for(let x=e,b=r.length;x=u.length?(f=new R1,u.push(f)):f=u[s],f}function t(){r=new WeakMap}return{get:e,dispose:t}}function mP(){const r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new j,color:new yt};break;case"SpotLight":t={position:new j,direction:new j,color:new yt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new j,color:new yt,distance:0,decay:0};break;case"HemisphereLight":t={direction:new j,skyColor:new yt,groundColor:new yt};break;case"RectAreaLight":t={color:new yt,position:new j,halfWidth:new j,halfHeight:new j};break}return r[e.id]=t,t}}}function gP(){const r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ze};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ze};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ze,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[e.id]=t,t}}}let vP=0;function yP(r,e){return(e.castShadow?2:0)-(r.castShadow?2:0)+(e.map?1:0)-(r.map?1:0)}function _P(r){const e=new mP,t=gP(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let g=0;g<9;g++)n.probe.push(new j);const s=new j,u=new Xt,f=new Xt;function h(g){let _=0,x=0,b=0;for(let I=0;I<9;I++)n.probe[I].set(0,0,0);let M=0,A=0,R=0,w=0,E=0,N=0,D=0,U=0,B=0,z=0,H=0;g.sort(yP);for(let I=0,P=g.length;I0&&(r.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=pt.LTC_FLOAT_1,n.rectAreaLTC2=pt.LTC_FLOAT_2):(n.rectAreaLTC1=pt.LTC_HALF_1,n.rectAreaLTC2=pt.LTC_HALF_2)),n.ambient[0]=_,n.ambient[1]=x,n.ambient[2]=b;const W=n.hash;(W.directionalLength!==M||W.pointLength!==A||W.spotLength!==R||W.rectAreaLength!==w||W.hemiLength!==E||W.numDirectionalShadows!==N||W.numPointShadows!==D||W.numSpotShadows!==U||W.numSpotMaps!==B||W.numLightProbes!==H)&&(n.directional.length=M,n.spot.length=R,n.rectArea.length=w,n.point.length=A,n.hemi.length=E,n.directionalShadow.length=N,n.directionalShadowMap.length=N,n.pointShadow.length=D,n.pointShadowMap.length=D,n.spotShadow.length=U,n.spotShadowMap.length=U,n.directionalShadowMatrix.length=N,n.pointShadowMatrix.length=D,n.spotLightMatrix.length=U+B-z,n.spotLightMap.length=B,n.numSpotLightShadowsWithMaps=z,n.numLightProbes=H,W.directionalLength=M,W.pointLength=A,W.spotLength=R,W.rectAreaLength=w,W.hemiLength=E,W.numDirectionalShadows=N,W.numPointShadows=D,W.numSpotShadows=U,W.numSpotMaps=B,W.numLightProbes=H,n.version=vP++)}function m(g,_){let x=0,b=0,M=0,A=0,R=0;const w=_.matrixWorldInverse;for(let E=0,N=g.length;E=f.length?(h=new N1(r),f.push(h)):h=f[u],h}function n(){e=new WeakMap}return{get:t,dispose:n}}const bP=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,SP=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ).rg; + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ).r; + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( max( 0.0, squared_mean - mean * mean ) ); + gl_FragColor = vec4( mean, std_dev, 0.0, 1.0 ); +}`,MP=[new j(1,0,0),new j(-1,0,0),new j(0,1,0),new j(0,-1,0),new j(0,0,1),new j(0,0,-1)],EP=[new j(0,-1,0),new j(0,-1,0),new j(0,0,1),new j(0,0,-1),new j(0,-1,0),new j(0,-1,0)],D1=new Xt,qp=new j,Cx=new j;function TP(r,e,t){let n=new ad;const s=new ze,u=new ze,f=new jn,h=new Wb,m=new qb,g={},_=t.maxTextureSize,x={[Ll]:as,[as]:Ll,[Uo]:Uo},b=new yr({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new ze},radius:{value:4}},vertexShader:bP,fragmentShader:SP}),M=b.clone();M.defines.HORIZONTAL_PASS=1;const A=new Kt;A.setAttribute("position",new Xn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const R=new Yi(A,b),w=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Xh;let E=this.type;this.render=function(z,H,W){if(w.enabled===!1||w.autoUpdate===!1&&w.needsUpdate===!1||z.length===0)return;z.type===Kp&&(ft("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),z.type=Xh);const I=r.getRenderTarget(),P=r.getActiveCubeFace(),Z=r.getActiveMipmapLevel(),se=r.state;se.setBlending(Po),se.buffers.depth.getReversed()===!0?se.buffers.color.setClear(0,0,0,0):se.buffers.color.setClear(1,1,1,1),se.buffers.depth.setTest(!0),se.setScissorTest(!1);const te=E!==this.type;te&&H.traverse(function(fe){fe.material&&(Array.isArray(fe.material)?fe.material.forEach(pe=>pe.needsUpdate=!0):fe.material.needsUpdate=!0)});for(let fe=0,pe=z.length;fe_||s.y>_)&&(s.x>_&&(u.x=Math.floor(_/ne.x),s.x=u.x*ne.x,q.mapSize.x=u.x),s.y>_&&(u.y=Math.floor(_/ne.y),s.y=u.y*ne.y,q.mapSize.y=u.y)),q.map===null||te===!0){if(q.map!==null&&(q.map.depthTexture!==null&&(q.map.depthTexture.dispose(),q.map.depthTexture=null),q.map.dispose()),this.type===jc){if(Y.isPointLight){ft("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}q.map=new Hs(s.x,s.y,{format:tf,type:Bo,minFilter:oi,magFilter:oi,generateMipmaps:!1}),q.map.texture.name=Y.name+".shadowMap",q.map.depthTexture=new ed(s.x,s.y,is),q.map.depthTexture.name=Y.name+".shadowMapDepth",q.map.depthTexture.format=Fo,q.map.depthTexture.compareFunction=null,q.map.depthTexture.minFilter=Bi,q.map.depthTexture.magFilter=Bi}else{Y.isPointLight?(q.map=new Db(s.x),q.map.depthTexture=new tT(s.x,vr)):(q.map=new Hs(s.x,s.y),q.map.depthTexture=new ed(s.x,s.y,vr)),q.map.depthTexture.name=Y.name+".shadowMap",q.map.depthTexture.format=Fo;const Ne=r.state.buffers.depth.getReversed();this.type===Xh?(q.map.depthTexture.compareFunction=Ne?Ay:Ty,q.map.depthTexture.minFilter=oi,q.map.depthTexture.magFilter=oi):(q.map.depthTexture.compareFunction=null,q.map.depthTexture.minFilter=Bi,q.map.depthTexture.magFilter=Bi)}q.camera.updateProjectionMatrix()}const be=q.map.isWebGLCubeRenderTarget?6:1;for(let Ne=0;Ne0||H.map&&H.alphaTest>0||H.alphaToCoverage===!0){const se=P.uuid,te=H.uuid;let fe=g[se];fe===void 0&&(fe={},g[se]=fe);let pe=fe[te];pe===void 0&&(pe=P.clone(),fe[te]=pe,H.addEventListener("dispose",B)),P=pe}if(P.visible=H.visible,P.wireframe=H.wireframe,I===jc?P.side=H.shadowSide!==null?H.shadowSide:H.side:P.side=H.shadowSide!==null?H.shadowSide:x[H.side],P.alphaMap=H.alphaMap,P.alphaTest=H.alphaToCoverage===!0?.5:H.alphaTest,P.map=H.map,P.clipShadows=H.clipShadows,P.clippingPlanes=H.clippingPlanes,P.clipIntersection=H.clipIntersection,P.displacementMap=H.displacementMap,P.displacementScale=H.displacementScale,P.displacementBias=H.displacementBias,P.wireframeLinewidth=H.wireframeLinewidth,P.linewidth=H.linewidth,W.isPointLight===!0&&P.isMeshDistanceMaterial===!0){const se=r.properties.get(P);se.light=W}return P}function U(z,H,W,I,P){if(z.visible===!1)return;if(z.layers.test(H.layers)&&(z.isMesh||z.isLine||z.isPoints)&&(z.castShadow||z.receiveShadow&&P===jc)&&(!z.frustumCulled||n.intersectsObject(z))){z.modelViewMatrix.multiplyMatrices(W.matrixWorldInverse,z.matrixWorld);const te=e.update(z),fe=z.material;if(Array.isArray(fe)){const pe=te.groups;for(let Y=0,q=pe.length;Y=1):ne.indexOf("OpenGL ES")!==-1&&(q=parseFloat(/^OpenGL ES (\d)/.exec(ne)[1]),Y=q>=2);let be=null,Ne={};const X=r.getParameter(r.SCISSOR_BOX),oe=r.getParameter(r.VIEWPORT),Ae=new jn().fromArray(X),Fe=new jn().fromArray(oe);function lt(J,je,Ge,at){const Xe=new Uint8Array(4),Ue=r.createTexture();r.bindTexture(J,Ue),r.texParameteri(J,r.TEXTURE_MIN_FILTER,r.NEAREST),r.texParameteri(J,r.TEXTURE_MAG_FILTER,r.NEAREST);for(let Ye=0;Ye"u"?!1:/OculusBrowser/g.test(navigator.userAgent),g=new ze,_=new WeakMap;let x;const b=new WeakMap;let M=!1;try{M=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function A(G,O){return M?new OffscreenCanvas(G,O):mm("canvas")}function R(G,O,ae){let Te=1;const Ie=Qe(G);if((Ie.width>ae||Ie.height>ae)&&(Te=ae/Math.max(Ie.width,Ie.height)),Te<1)if(typeof HTMLImageElement<"u"&&G instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&G instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&G instanceof ImageBitmap||typeof VideoFrame<"u"&&G instanceof VideoFrame){const Ee=Math.floor(Te*Ie.width),dt=Math.floor(Te*Ie.height);x===void 0&&(x=A(Ee,dt));const Ke=O?A(Ee,dt):x;return Ke.width=Ee,Ke.height=dt,Ke.getContext("2d").drawImage(G,0,0,Ee,dt),ft("WebGLRenderer: Texture has been resized from ("+Ie.width+"x"+Ie.height+") to ("+Ee+"x"+dt+")."),Ke}else return"data"in G&&ft("WebGLRenderer: Image in DataTexture is too big ("+Ie.width+"x"+Ie.height+")."),G;return G}function w(G){return G.generateMipmaps}function E(G){r.generateMipmap(G)}function N(G){return G.isWebGLCubeRenderTarget?r.TEXTURE_CUBE_MAP:G.isWebGL3DRenderTarget?r.TEXTURE_3D:G.isWebGLArrayRenderTarget||G.isCompressedArrayTexture?r.TEXTURE_2D_ARRAY:r.TEXTURE_2D}function D(G,O,ae,Te,Ie=!1){if(G!==null){if(r[G]!==void 0)return r[G];ft("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+G+"'")}let Ee=O;if(O===r.RED&&(ae===r.FLOAT&&(Ee=r.R32F),ae===r.HALF_FLOAT&&(Ee=r.R16F),ae===r.UNSIGNED_BYTE&&(Ee=r.R8)),O===r.RED_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.R8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.R16UI),ae===r.UNSIGNED_INT&&(Ee=r.R32UI),ae===r.BYTE&&(Ee=r.R8I),ae===r.SHORT&&(Ee=r.R16I),ae===r.INT&&(Ee=r.R32I)),O===r.RG&&(ae===r.FLOAT&&(Ee=r.RG32F),ae===r.HALF_FLOAT&&(Ee=r.RG16F),ae===r.UNSIGNED_BYTE&&(Ee=r.RG8)),O===r.RG_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.RG8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.RG16UI),ae===r.UNSIGNED_INT&&(Ee=r.RG32UI),ae===r.BYTE&&(Ee=r.RG8I),ae===r.SHORT&&(Ee=r.RG16I),ae===r.INT&&(Ee=r.RG32I)),O===r.RGB_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.RGB8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.RGB16UI),ae===r.UNSIGNED_INT&&(Ee=r.RGB32UI),ae===r.BYTE&&(Ee=r.RGB8I),ae===r.SHORT&&(Ee=r.RGB16I),ae===r.INT&&(Ee=r.RGB32I)),O===r.RGBA_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.RGBA8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.RGBA16UI),ae===r.UNSIGNED_INT&&(Ee=r.RGBA32UI),ae===r.BYTE&&(Ee=r.RGBA8I),ae===r.SHORT&&(Ee=r.RGBA16I),ae===r.INT&&(Ee=r.RGBA32I)),O===r.RGB&&(ae===r.UNSIGNED_INT_5_9_9_9_REV&&(Ee=r.RGB9_E5),ae===r.UNSIGNED_INT_10F_11F_11F_REV&&(Ee=r.R11F_G11F_B10F)),O===r.RGBA){const dt=Ie?dm:Sn.getTransfer(Te);ae===r.FLOAT&&(Ee=r.RGBA32F),ae===r.HALF_FLOAT&&(Ee=r.RGBA16F),ae===r.UNSIGNED_BYTE&&(Ee=dt===zn?r.SRGB8_ALPHA8:r.RGBA8),ae===r.UNSIGNED_SHORT_4_4_4_4&&(Ee=r.RGBA4),ae===r.UNSIGNED_SHORT_5_5_5_1&&(Ee=r.RGB5_A1)}return(Ee===r.R16F||Ee===r.R32F||Ee===r.RG16F||Ee===r.RG32F||Ee===r.RGBA16F||Ee===r.RGBA32F)&&e.get("EXT_color_buffer_float"),Ee}function U(G,O){let ae;return G?O===null||O===vr||O===jh?ae=r.DEPTH24_STENCIL8:O===is?ae=r.DEPTH32F_STENCIL8:O===qh&&(ae=r.DEPTH24_STENCIL8,ft("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):O===null||O===vr||O===jh?ae=r.DEPTH_COMPONENT24:O===is?ae=r.DEPTH_COMPONENT32F:O===qh&&(ae=r.DEPTH_COMPONENT16),ae}function B(G,O){return w(G)===!0||G.isFramebufferTexture&&G.minFilter!==Bi&&G.minFilter!==oi?Math.log2(Math.max(O.width,O.height))+1:G.mipmaps!==void 0&&G.mipmaps.length>0?G.mipmaps.length:G.isCompressedTexture&&Array.isArray(G.image)?O.mipmaps.length:1}function z(G){const O=G.target;O.removeEventListener("dispose",z),W(O),O.isVideoTexture&&_.delete(O)}function H(G){const O=G.target;O.removeEventListener("dispose",H),P(O)}function W(G){const O=n.get(G);if(O.__webglInit===void 0)return;const ae=G.source,Te=b.get(ae);if(Te){const Ie=Te[O.__cacheKey];Ie.usedTimes--,Ie.usedTimes===0&&I(G),Object.keys(Te).length===0&&b.delete(ae)}n.remove(G)}function I(G){const O=n.get(G);r.deleteTexture(O.__webglTexture);const ae=G.source,Te=b.get(ae);delete Te[O.__cacheKey],f.memory.textures--}function P(G){const O=n.get(G);if(G.depthTexture&&(G.depthTexture.dispose(),n.remove(G.depthTexture)),G.isWebGLCubeRenderTarget)for(let Te=0;Te<6;Te++){if(Array.isArray(O.__webglFramebuffer[Te]))for(let Ie=0;Ie=s.maxTextures&&ft("WebGLTextures: Trying to use "+G+" texture units while this GPU supports only "+s.maxTextures),Z+=1,G}function fe(G){const O=[];return O.push(G.wrapS),O.push(G.wrapT),O.push(G.wrapR||0),O.push(G.magFilter),O.push(G.minFilter),O.push(G.anisotropy),O.push(G.internalFormat),O.push(G.format),O.push(G.type),O.push(G.generateMipmaps),O.push(G.premultiplyAlpha),O.push(G.flipY),O.push(G.unpackAlignment),O.push(G.colorSpace),O.join()}function pe(G,O){const ae=n.get(G);if(G.isVideoTexture&&ot(G),G.isRenderTargetTexture===!1&&G.isExternalTexture!==!0&&G.version>0&&ae.__version!==G.version){const Te=G.image;if(Te===null)ft("WebGLRenderer: Texture marked for update but no image data found.");else if(Te.complete===!1)ft("WebGLRenderer: Texture marked for update but image is incomplete");else{de(ae,G,O);return}}else G.isExternalTexture&&(ae.__webglTexture=G.sourceTexture?G.sourceTexture:null);t.bindTexture(r.TEXTURE_2D,ae.__webglTexture,r.TEXTURE0+O)}function Y(G,O){const ae=n.get(G);if(G.isRenderTargetTexture===!1&&G.version>0&&ae.__version!==G.version){de(ae,G,O);return}else G.isExternalTexture&&(ae.__webglTexture=G.sourceTexture?G.sourceTexture:null);t.bindTexture(r.TEXTURE_2D_ARRAY,ae.__webglTexture,r.TEXTURE0+O)}function q(G,O){const ae=n.get(G);if(G.isRenderTargetTexture===!1&&G.version>0&&ae.__version!==G.version){de(ae,G,O);return}t.bindTexture(r.TEXTURE_3D,ae.__webglTexture,r.TEXTURE0+O)}function ne(G,O){const ae=n.get(G);if(G.isCubeDepthTexture!==!0&&G.version>0&&ae.__version!==G.version){Re(ae,G,O);return}t.bindTexture(r.TEXTURE_CUBE_MAP,ae.__webglTexture,r.TEXTURE0+O)}const be={[um]:r.REPEAT,[Rs]:r.CLAMP_TO_EDGE,[cm]:r.MIRRORED_REPEAT},Ne={[Bi]:r.NEAREST,[_b]:r.NEAREST_MIPMAP_NEAREST,[Vh]:r.NEAREST_MIPMAP_LINEAR,[oi]:r.LINEAR,[Jp]:r.LINEAR_MIPMAP_NEAREST,[Io]:r.LINEAR_MIPMAP_LINEAR},X={[LE]:r.NEVER,[zE]:r.ALWAYS,[UE]:r.LESS,[Ty]:r.LEQUAL,[IE]:r.EQUAL,[Ay]:r.GEQUAL,[OE]:r.GREATER,[PE]:r.NOTEQUAL};function oe(G,O){if(O.type===is&&e.has("OES_texture_float_linear")===!1&&(O.magFilter===oi||O.magFilter===Jp||O.magFilter===Vh||O.magFilter===Io||O.minFilter===oi||O.minFilter===Jp||O.minFilter===Vh||O.minFilter===Io)&&ft("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),r.texParameteri(G,r.TEXTURE_WRAP_S,be[O.wrapS]),r.texParameteri(G,r.TEXTURE_WRAP_T,be[O.wrapT]),(G===r.TEXTURE_3D||G===r.TEXTURE_2D_ARRAY)&&r.texParameteri(G,r.TEXTURE_WRAP_R,be[O.wrapR]),r.texParameteri(G,r.TEXTURE_MAG_FILTER,Ne[O.magFilter]),r.texParameteri(G,r.TEXTURE_MIN_FILTER,Ne[O.minFilter]),O.compareFunction&&(r.texParameteri(G,r.TEXTURE_COMPARE_MODE,r.COMPARE_REF_TO_TEXTURE),r.texParameteri(G,r.TEXTURE_COMPARE_FUNC,X[O.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(O.magFilter===Bi||O.minFilter!==Vh&&O.minFilter!==Io||O.type===is&&e.has("OES_texture_float_linear")===!1)return;if(O.anisotropy>1||n.get(O).__currentAnisotropy){const ae=e.get("EXT_texture_filter_anisotropic");r.texParameterf(G,ae.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(O.anisotropy,s.getMaxAnisotropy())),n.get(O).__currentAnisotropy=O.anisotropy}}}function Ae(G,O){let ae=!1;G.__webglInit===void 0&&(G.__webglInit=!0,O.addEventListener("dispose",z));const Te=O.source;let Ie=b.get(Te);Ie===void 0&&(Ie={},b.set(Te,Ie));const Ee=fe(O);if(Ee!==G.__cacheKey){Ie[Ee]===void 0&&(Ie[Ee]={texture:r.createTexture(),usedTimes:0},f.memory.textures++,ae=!0),Ie[Ee].usedTimes++;const dt=Ie[G.__cacheKey];dt!==void 0&&(Ie[G.__cacheKey].usedTimes--,dt.usedTimes===0&&I(O)),G.__cacheKey=Ee,G.__webglTexture=Ie[Ee].texture}return ae}function Fe(G,O,ae){return Math.floor(Math.floor(G/ae)/O)}function lt(G,O,ae,Te){const Ee=G.updateRanges;if(Ee.length===0)t.texSubImage2D(r.TEXTURE_2D,0,0,0,O.width,O.height,ae,Te,O.data);else{Ee.sort((Ve,Ze)=>Ve.start-Ze.start);let dt=0;for(let Ve=1;Ve0){J&&je&&t.texStorage2D(r.TEXTURE_2D,at,K,et[0].width,et[0].height);for(let Xe=0,Ue=et.length;Xe0){const Ye=tb(me.width,me.height,O.format,O.type);for(const Ct of O.layerUpdates){const Jt=me.data.subarray(Ct*Ye/me.data.BYTES_PER_ELEMENT,(Ct+1)*Ye/me.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,Xe,0,0,Ct,me.width,me.height,1,Ze,Jt)}O.clearLayerUpdates()}else t.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,Xe,0,0,0,me.width,me.height,Ve.depth,Ze,me.data)}else t.compressedTexImage3D(r.TEXTURE_2D_ARRAY,Xe,K,me.width,me.height,Ve.depth,0,me.data,0,0);else ft("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else J?Ge&&t.texSubImage3D(r.TEXTURE_2D_ARRAY,Xe,0,0,0,me.width,me.height,Ve.depth,Ze,ct,me.data):t.texImage3D(r.TEXTURE_2D_ARRAY,Xe,K,me.width,me.height,Ve.depth,0,Ze,ct,me.data)}else{J&&je&&t.texStorage2D(r.TEXTURE_2D,at,K,et[0].width,et[0].height);for(let Xe=0,Ue=et.length;Xe0){const Xe=tb(Ve.width,Ve.height,O.format,O.type);for(const Ue of O.layerUpdates){const Ye=Ve.data.subarray(Ue*Xe/Ve.data.BYTES_PER_ELEMENT,(Ue+1)*Xe/Ve.data.BYTES_PER_ELEMENT);t.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,Ue,Ve.width,Ve.height,1,Ze,ct,Ye)}O.clearLayerUpdates()}else t.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,0,Ve.width,Ve.height,Ve.depth,Ze,ct,Ve.data)}else t.texImage3D(r.TEXTURE_2D_ARRAY,0,K,Ve.width,Ve.height,Ve.depth,0,Ze,ct,Ve.data);else if(O.isData3DTexture)J?(je&&t.texStorage3D(r.TEXTURE_3D,at,K,Ve.width,Ve.height,Ve.depth),Ge&&t.texSubImage3D(r.TEXTURE_3D,0,0,0,0,Ve.width,Ve.height,Ve.depth,Ze,ct,Ve.data)):t.texImage3D(r.TEXTURE_3D,0,K,Ve.width,Ve.height,Ve.depth,0,Ze,ct,Ve.data);else if(O.isFramebufferTexture){if(je)if(J)t.texStorage2D(r.TEXTURE_2D,at,K,Ve.width,Ve.height);else{let Xe=Ve.width,Ue=Ve.height;for(let Ye=0;Ye>=1,Ue>>=1}}else if(et.length>0){if(J&&je){const Xe=Qe(et[0]);t.texStorage2D(r.TEXTURE_2D,at,K,Xe.width,Xe.height)}for(let Xe=0,Ue=et.length;Xe0&&at++;const Ue=Qe(Ze[0]);t.texStorage2D(r.TEXTURE_CUBE_MAP,at,et,Ue.width,Ue.height)}for(let Ue=0;Ue<6;Ue++)if(Ve){J?Ge&&t.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+Ue,0,0,0,Ze[Ue].width,Ze[Ue].height,K,me,Ze[Ue].data):t.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+Ue,0,et,Ze[Ue].width,Ze[Ue].height,0,K,me,Ze[Ue].data);for(let Ye=0;Ye>Ee),ct=Math.max(1,O.height>>Ee);Ie===r.TEXTURE_3D||Ie===r.TEXTURE_2D_ARRAY?t.texImage3D(Ie,Ee,vt,Ze,ct,O.depth,0,dt,Ke,null):t.texImage2D(Ie,Ee,vt,Ze,ct,0,dt,Ke,null)}t.bindFramebuffer(r.FRAMEBUFFER,G),Et(O)?h.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,Te,Ie,Ve.__webglTexture,0,Q(O)):(Ie===r.TEXTURE_2D||Ie>=r.TEXTURE_CUBE_MAP_POSITIVE_X&&Ie<=r.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&r.framebufferTexture2D(r.FRAMEBUFFER,Te,Ie,Ve.__webglTexture,Ee),t.bindFramebuffer(r.FRAMEBUFFER,null)}function st(G,O,ae){if(r.bindRenderbuffer(r.RENDERBUFFER,G),O.depthBuffer){const Te=O.depthTexture,Ie=Te&&Te.isDepthTexture?Te.type:null,Ee=U(O.stencilBuffer,Ie),dt=O.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT;Et(O)?h.renderbufferStorageMultisampleEXT(r.RENDERBUFFER,Q(O),Ee,O.width,O.height):ae?r.renderbufferStorageMultisample(r.RENDERBUFFER,Q(O),Ee,O.width,O.height):r.renderbufferStorage(r.RENDERBUFFER,Ee,O.width,O.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,dt,r.RENDERBUFFER,G)}else{const Te=O.textures;for(let Ie=0;Ie{delete O.__boundDepthTexture,delete O.__depthDisposeCallback,Te.removeEventListener("dispose",Ie)};Te.addEventListener("dispose",Ie),O.__depthDisposeCallback=Ie}O.__boundDepthTexture=Te}if(G.depthTexture&&!O.__autoAllocateDepthBuffer)if(ae)for(let Te=0;Te<6;Te++)ht(O.__webglFramebuffer[Te],G,Te);else{const Te=G.texture.mipmaps;Te&&Te.length>0?ht(O.__webglFramebuffer[0],G,0):ht(O.__webglFramebuffer,G,0)}else if(ae){O.__webglDepthbuffer=[];for(let Te=0;Te<6;Te++)if(t.bindFramebuffer(r.FRAMEBUFFER,O.__webglFramebuffer[Te]),O.__webglDepthbuffer[Te]===void 0)O.__webglDepthbuffer[Te]=r.createRenderbuffer(),st(O.__webglDepthbuffer[Te],G,!1);else{const Ie=G.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,Ee=O.__webglDepthbuffer[Te];r.bindRenderbuffer(r.RENDERBUFFER,Ee),r.framebufferRenderbuffer(r.FRAMEBUFFER,Ie,r.RENDERBUFFER,Ee)}}else{const Te=G.texture.mipmaps;if(Te&&Te.length>0?t.bindFramebuffer(r.FRAMEBUFFER,O.__webglFramebuffer[0]):t.bindFramebuffer(r.FRAMEBUFFER,O.__webglFramebuffer),O.__webglDepthbuffer===void 0)O.__webglDepthbuffer=r.createRenderbuffer(),st(O.__webglDepthbuffer,G,!1);else{const Ie=G.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,Ee=O.__webglDepthbuffer;r.bindRenderbuffer(r.RENDERBUFFER,Ee),r.framebufferRenderbuffer(r.FRAMEBUFFER,Ie,r.RENDERBUFFER,Ee)}}t.bindFramebuffer(r.FRAMEBUFFER,null)}function tn(G,O,ae){const Te=n.get(G);O!==void 0&&tt(Te.__webglFramebuffer,G,G.texture,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,0),ae!==void 0&&jt(G)}function Nt(G){const O=G.texture,ae=n.get(G),Te=n.get(O);G.addEventListener("dispose",H);const Ie=G.textures,Ee=G.isWebGLCubeRenderTarget===!0,dt=Ie.length>1;if(dt||(Te.__webglTexture===void 0&&(Te.__webglTexture=r.createTexture()),Te.__version=O.version,f.memory.textures++),Ee){ae.__webglFramebuffer=[];for(let Ke=0;Ke<6;Ke++)if(O.mipmaps&&O.mipmaps.length>0){ae.__webglFramebuffer[Ke]=[];for(let vt=0;vt0){ae.__webglFramebuffer=[];for(let Ke=0;Ke0&&Et(G)===!1){ae.__webglMultisampledFramebuffer=r.createFramebuffer(),ae.__webglColorRenderbuffer=[],t.bindFramebuffer(r.FRAMEBUFFER,ae.__webglMultisampledFramebuffer);for(let Ke=0;Ke0)for(let vt=0;vt0)for(let vt=0;vt0){if(Et(G)===!1){const O=G.textures,ae=G.width,Te=G.height;let Ie=r.COLOR_BUFFER_BIT;const Ee=G.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,dt=n.get(G),Ke=O.length>1;if(Ke)for(let Dt=0;Dt0?t.bindFramebuffer(r.DRAW_FRAMEBUFFER,dt.__webglFramebuffer[0]):t.bindFramebuffer(r.DRAW_FRAMEBUFFER,dt.__webglFramebuffer);for(let Dt=0;Dt0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&O.__useRenderToTexture!==!1}function ot(G){const O=f.render.frame;_.get(G)!==O&&(_.set(G,O),G.update())}function Tt(G,O){const ae=G.colorSpace,Te=G.format,Ie=G.type;return G.isCompressedTexture===!0||G.isVideoTexture===!0||ae!==zu&&ae!==Cl&&(Sn.getTransfer(ae)===zn?(Te!==Oa||Ie!==ts)&&ft("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):Rt("WebGLTextures: Unsupported texture color space:",ae)),O}function Qe(G){return typeof HTMLImageElement<"u"&&G instanceof HTMLImageElement?(g.width=G.naturalWidth||G.width,g.height=G.naturalHeight||G.height):typeof VideoFrame<"u"&&G instanceof VideoFrame?(g.width=G.displayWidth,g.height=G.displayHeight):(g.width=G.width,g.height=G.height),g}this.allocateTextureUnit=te,this.resetTextureUnits=se,this.setTexture2D=pe,this.setTexture2DArray=Y,this.setTexture3D=q,this.setTextureCube=ne,this.rebindTextures=tn,this.setupRenderTarget=Nt,this.updateRenderTargetMipmap=Le,this.updateMultisampleRenderTarget=nt,this.setupDepthRenderbuffer=jt,this.setupFrameBufferTexture=tt,this.useMultisampledRTT=Et,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function qT(r,e){function t(n,s=Cl){let u;const f=Sn.getTransfer(s);if(n===ts)return r.UNSIGNED_BYTE;if(n===_y)return r.UNSIGNED_SHORT_4_4_4_4;if(n===xy)return r.UNSIGNED_SHORT_5_5_5_1;if(n===Sb)return r.UNSIGNED_INT_5_9_9_9_REV;if(n===Mb)return r.UNSIGNED_INT_10F_11F_11F_REV;if(n===xb)return r.BYTE;if(n===bb)return r.SHORT;if(n===qh)return r.UNSIGNED_SHORT;if(n===yy)return r.INT;if(n===vr)return r.UNSIGNED_INT;if(n===is)return r.FLOAT;if(n===Bo)return r.HALF_FLOAT;if(n===Eb)return r.ALPHA;if(n===Tb)return r.RGB;if(n===Oa)return r.RGBA;if(n===Fo)return r.DEPTH_COMPONENT;if(n===Uu)return r.DEPTH_STENCIL;if(n===by)return r.RED;if(n===wm)return r.RED_INTEGER;if(n===tf)return r.RG;if(n===Sy)return r.RG_INTEGER;if(n===My)return r.RGBA_INTEGER;if(n===$p||n===em||n===tm||n===nm)if(f===zn)if(u=e.get("WEBGL_compressed_texture_s3tc_srgb"),u!==null){if(n===$p)return u.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===em)return u.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===tm)return u.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===nm)return u.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(u=e.get("WEBGL_compressed_texture_s3tc"),u!==null){if(n===$p)return u.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===em)return u.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===tm)return u.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===nm)return u.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===Av||n===wv||n===Cv||n===Rv)if(u=e.get("WEBGL_compressed_texture_pvrtc"),u!==null){if(n===Av)return u.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===wv)return u.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Cv)return u.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Rv)return u.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===Nv||n===Dv||n===Lv||n===Uv||n===Iv||n===Ov||n===Pv)if(u=e.get("WEBGL_compressed_texture_etc"),u!==null){if(n===Nv||n===Dv)return f===zn?u.COMPRESSED_SRGB8_ETC2:u.COMPRESSED_RGB8_ETC2;if(n===Lv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:u.COMPRESSED_RGBA8_ETC2_EAC;if(n===Uv)return u.COMPRESSED_R11_EAC;if(n===Iv)return u.COMPRESSED_SIGNED_R11_EAC;if(n===Ov)return u.COMPRESSED_RG11_EAC;if(n===Pv)return u.COMPRESSED_SIGNED_RG11_EAC}else return null;if(n===zv||n===Bv||n===Fv||n===kv||n===Vv||n===Hv||n===Gv||n===Xv||n===Wv||n===qv||n===jv||n===Yv||n===Zv||n===Qv)if(u=e.get("WEBGL_compressed_texture_astc"),u!==null){if(n===zv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:u.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Bv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:u.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===Fv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:u.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===kv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:u.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Vv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:u.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Hv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:u.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Gv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:u.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Xv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:u.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Wv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:u.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===qv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:u.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===jv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:u.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Yv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:u.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Zv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:u.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===Qv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:u.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===Kv||n===Jv||n===$v)if(u=e.get("EXT_texture_compression_bptc"),u!==null){if(n===Kv)return f===zn?u.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:u.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Jv)return u.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===$v)return u.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===ey||n===ty||n===ny||n===iy)if(u=e.get("EXT_texture_compression_rgtc"),u!==null){if(n===ey)return u.COMPRESSED_RED_RGTC1_EXT;if(n===ty)return u.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===ny)return u.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===iy)return u.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===jh?r.UNSIGNED_INT_24_8:r[n]!==void 0?r[n]:null}return{convert:t}}const RP=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,NP=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`;class DP{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){const n=new Pb(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=n}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new yr({vertexShader:RP,fragmentShader:NP,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Yi(new sd(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class LP extends ko{constructor(e,t){super();const n=this;let s=null,u=1,f=null,h="local-floor",m=1,g=null,_=null,x=null,b=null,M=null,A=null;const R=typeof XRWebGLBinding<"u",w=new DP,E={},N=t.getContextAttributes();let D=null,U=null;const B=[],z=[],H=new ze;let W=null;const I=new zi;I.viewport=new jn;const P=new zi;P.viewport=new jn;const Z=[I,P],se=new OT;let te=null,fe=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(de){let Re=B[de];return Re===void 0&&(Re=new pv,B[de]=Re),Re.getTargetRaySpace()},this.getControllerGrip=function(de){let Re=B[de];return Re===void 0&&(Re=new pv,B[de]=Re),Re.getGripSpace()},this.getHand=function(de){let Re=B[de];return Re===void 0&&(Re=new pv,B[de]=Re),Re.getHandSpace()};function pe(de){const Re=z.indexOf(de.inputSource);if(Re===-1)return;const tt=B[Re];tt!==void 0&&(tt.update(de.inputSource,de.frame,g||f),tt.dispatchEvent({type:de.type,data:de.inputSource}))}function Y(){s.removeEventListener("select",pe),s.removeEventListener("selectstart",pe),s.removeEventListener("selectend",pe),s.removeEventListener("squeeze",pe),s.removeEventListener("squeezestart",pe),s.removeEventListener("squeezeend",pe),s.removeEventListener("end",Y),s.removeEventListener("inputsourceschange",q);for(let de=0;de=0&&(z[st]=null,B[st].disconnect(tt))}for(let Re=0;Re=z.length){z.push(tt),st=jt;break}else if(z[jt]===null){z[jt]=tt,st=jt;break}if(st===-1)break}const ht=B[st];ht&&ht.connect(tt)}}const ne=new j,be=new j;function Ne(de,Re,tt){ne.setFromMatrixPosition(Re.matrixWorld),be.setFromMatrixPosition(tt.matrixWorld);const st=ne.distanceTo(be),ht=Re.projectionMatrix.elements,jt=tt.projectionMatrix.elements,tn=ht[14]/(ht[10]-1),Nt=ht[14]/(ht[10]+1),Le=(ht[9]+1)/ht[5],He=(ht[9]-1)/ht[5],Oe=(ht[8]-1)/ht[0],nt=(jt[8]+1)/jt[0],Q=tn*Oe,Et=tn*nt,ot=st/(-Oe+nt),Tt=ot*-Oe;if(Re.matrixWorld.decompose(de.position,de.quaternion,de.scale),de.translateX(Tt),de.translateZ(ot),de.matrixWorld.compose(de.position,de.quaternion,de.scale),de.matrixWorldInverse.copy(de.matrixWorld).invert(),ht[10]===-1)de.projectionMatrix.copy(Re.projectionMatrix),de.projectionMatrixInverse.copy(Re.projectionMatrixInverse);else{const Qe=tn+ot,G=Nt+ot,O=Q-Tt,ae=Et+(st-Tt),Te=Le*Nt/G*Qe,Ie=He*Nt/G*Qe;de.projectionMatrix.makePerspective(O,ae,Te,Ie,Qe,G),de.projectionMatrixInverse.copy(de.projectionMatrix).invert()}}function X(de,Re){Re===null?de.matrixWorld.copy(de.matrix):de.matrixWorld.multiplyMatrices(Re.matrixWorld,de.matrix),de.matrixWorldInverse.copy(de.matrixWorld).invert()}this.updateCamera=function(de){if(s===null)return;let Re=de.near,tt=de.far;w.texture!==null&&(w.depthNear>0&&(Re=w.depthNear),w.depthFar>0&&(tt=w.depthFar)),se.near=P.near=I.near=Re,se.far=P.far=I.far=tt,(te!==se.near||fe!==se.far)&&(s.updateRenderState({depthNear:se.near,depthFar:se.far}),te=se.near,fe=se.far),se.layers.mask=de.layers.mask|6,I.layers.mask=se.layers.mask&3,P.layers.mask=se.layers.mask&5;const st=de.parent,ht=se.cameras;X(se,st);for(let jt=0;jt0&&(w.alphaTest.value=E.alphaTest);const N=e.get(E),D=N.envMap,U=N.envMapRotation;D&&(w.envMap.value=D,Hc.copy(U),Hc.x*=-1,Hc.y*=-1,Hc.z*=-1,D.isCubeTexture&&D.isRenderTargetTexture===!1&&(Hc.y*=-1,Hc.z*=-1),w.envMapRotation.value.setFromMatrix4(UP.makeRotationFromEuler(Hc)),w.flipEnvMap.value=D.isCubeTexture&&D.isRenderTargetTexture===!1?-1:1,w.reflectivity.value=E.reflectivity,w.ior.value=E.ior,w.refractionRatio.value=E.refractionRatio),E.lightMap&&(w.lightMap.value=E.lightMap,w.lightMapIntensity.value=E.lightMapIntensity,t(E.lightMap,w.lightMapTransform)),E.aoMap&&(w.aoMap.value=E.aoMap,w.aoMapIntensity.value=E.aoMapIntensity,t(E.aoMap,w.aoMapTransform))}function f(w,E){w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,E.map&&(w.map.value=E.map,t(E.map,w.mapTransform))}function h(w,E){w.dashSize.value=E.dashSize,w.totalSize.value=E.dashSize+E.gapSize,w.scale.value=E.scale}function m(w,E,N,D){w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,w.size.value=E.size*N,w.scale.value=D*.5,E.map&&(w.map.value=E.map,t(E.map,w.uvTransform)),E.alphaMap&&(w.alphaMap.value=E.alphaMap,t(E.alphaMap,w.alphaMapTransform)),E.alphaTest>0&&(w.alphaTest.value=E.alphaTest)}function g(w,E){w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,w.rotation.value=E.rotation,E.map&&(w.map.value=E.map,t(E.map,w.mapTransform)),E.alphaMap&&(w.alphaMap.value=E.alphaMap,t(E.alphaMap,w.alphaMapTransform)),E.alphaTest>0&&(w.alphaTest.value=E.alphaTest)}function _(w,E){w.specular.value.copy(E.specular),w.shininess.value=Math.max(E.shininess,1e-4)}function x(w,E){E.gradientMap&&(w.gradientMap.value=E.gradientMap)}function b(w,E){w.metalness.value=E.metalness,E.metalnessMap&&(w.metalnessMap.value=E.metalnessMap,t(E.metalnessMap,w.metalnessMapTransform)),w.roughness.value=E.roughness,E.roughnessMap&&(w.roughnessMap.value=E.roughnessMap,t(E.roughnessMap,w.roughnessMapTransform)),E.envMap&&(w.envMapIntensity.value=E.envMapIntensity)}function M(w,E,N){w.ior.value=E.ior,E.sheen>0&&(w.sheenColor.value.copy(E.sheenColor).multiplyScalar(E.sheen),w.sheenRoughness.value=E.sheenRoughness,E.sheenColorMap&&(w.sheenColorMap.value=E.sheenColorMap,t(E.sheenColorMap,w.sheenColorMapTransform)),E.sheenRoughnessMap&&(w.sheenRoughnessMap.value=E.sheenRoughnessMap,t(E.sheenRoughnessMap,w.sheenRoughnessMapTransform))),E.clearcoat>0&&(w.clearcoat.value=E.clearcoat,w.clearcoatRoughness.value=E.clearcoatRoughness,E.clearcoatMap&&(w.clearcoatMap.value=E.clearcoatMap,t(E.clearcoatMap,w.clearcoatMapTransform)),E.clearcoatRoughnessMap&&(w.clearcoatRoughnessMap.value=E.clearcoatRoughnessMap,t(E.clearcoatRoughnessMap,w.clearcoatRoughnessMapTransform)),E.clearcoatNormalMap&&(w.clearcoatNormalMap.value=E.clearcoatNormalMap,t(E.clearcoatNormalMap,w.clearcoatNormalMapTransform),w.clearcoatNormalScale.value.copy(E.clearcoatNormalScale),E.side===as&&w.clearcoatNormalScale.value.negate())),E.dispersion>0&&(w.dispersion.value=E.dispersion),E.iridescence>0&&(w.iridescence.value=E.iridescence,w.iridescenceIOR.value=E.iridescenceIOR,w.iridescenceThicknessMinimum.value=E.iridescenceThicknessRange[0],w.iridescenceThicknessMaximum.value=E.iridescenceThicknessRange[1],E.iridescenceMap&&(w.iridescenceMap.value=E.iridescenceMap,t(E.iridescenceMap,w.iridescenceMapTransform)),E.iridescenceThicknessMap&&(w.iridescenceThicknessMap.value=E.iridescenceThicknessMap,t(E.iridescenceThicknessMap,w.iridescenceThicknessMapTransform))),E.transmission>0&&(w.transmission.value=E.transmission,w.transmissionSamplerMap.value=N.texture,w.transmissionSamplerSize.value.set(N.width,N.height),E.transmissionMap&&(w.transmissionMap.value=E.transmissionMap,t(E.transmissionMap,w.transmissionMapTransform)),w.thickness.value=E.thickness,E.thicknessMap&&(w.thicknessMap.value=E.thicknessMap,t(E.thicknessMap,w.thicknessMapTransform)),w.attenuationDistance.value=E.attenuationDistance,w.attenuationColor.value.copy(E.attenuationColor)),E.anisotropy>0&&(w.anisotropyVector.value.set(E.anisotropy*Math.cos(E.anisotropyRotation),E.anisotropy*Math.sin(E.anisotropyRotation)),E.anisotropyMap&&(w.anisotropyMap.value=E.anisotropyMap,t(E.anisotropyMap,w.anisotropyMapTransform))),w.specularIntensity.value=E.specularIntensity,w.specularColor.value.copy(E.specularColor),E.specularColorMap&&(w.specularColorMap.value=E.specularColorMap,t(E.specularColorMap,w.specularColorMapTransform)),E.specularIntensityMap&&(w.specularIntensityMap.value=E.specularIntensityMap,t(E.specularIntensityMap,w.specularIntensityMapTransform))}function A(w,E){E.matcap&&(w.matcap.value=E.matcap)}function R(w,E){const N=e.get(E).light;w.referencePosition.value.setFromMatrixPosition(N.matrixWorld),w.nearDistance.value=N.shadow.camera.near,w.farDistance.value=N.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:s}}function OP(r,e,t,n){let s={},u={},f=[];const h=r.getParameter(r.MAX_UNIFORM_BUFFER_BINDINGS);function m(N,D){const U=D.program;n.uniformBlockBinding(N,U)}function g(N,D){let U=s[N.id];U===void 0&&(A(N),U=_(N),s[N.id]=U,N.addEventListener("dispose",w));const B=D.program;n.updateUBOMapping(N,B);const z=e.render.frame;u[N.id]!==z&&(b(N),u[N.id]=z)}function _(N){const D=x();N.__bindingPointIndex=D;const U=r.createBuffer(),B=N.__size,z=N.usage;return r.bindBuffer(r.UNIFORM_BUFFER,U),r.bufferData(r.UNIFORM_BUFFER,B,z),r.bindBuffer(r.UNIFORM_BUFFER,null),r.bindBufferBase(r.UNIFORM_BUFFER,D,U),U}function x(){for(let N=0;N0&&(U+=B-z),N.__size=U,N.__cache={},this}function R(N){const D={boundary:0,storage:0};return typeof N=="number"||typeof N=="boolean"?(D.boundary=4,D.storage=4):N.isVector2?(D.boundary=8,D.storage=8):N.isVector3||N.isColor?(D.boundary=16,D.storage=12):N.isVector4?(D.boundary=16,D.storage=16):N.isMatrix3?(D.boundary=48,D.storage=48):N.isMatrix4?(D.boundary=64,D.storage=64):N.isTexture?ft("WebGLRenderer: Texture samplers can not be part of an uniforms group."):ft("WebGLRenderer: Unsupported uniform value type.",N),D}function w(N){const D=N.target;D.removeEventListener("dispose",w);const U=f.indexOf(D.__bindingPointIndex);f.splice(U,1),r.deleteBuffer(s[D.id]),delete s[D.id],delete u[D.id]}function E(){for(const N in s)r.deleteBuffer(s[N]);f=[],s={},u={}}return{bind:m,update:g,dispose:E}}const PP=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]);let Lo=null;function zP(){return Lo===null&&(Lo=new Yr(PP,16,16,tf,Bo),Lo.name="DFG_LUT",Lo.minFilter=oi,Lo.magFilter=oi,Lo.wrapS=Rs,Lo.wrapT=Rs,Lo.generateMipmaps=!1,Lo.needsUpdate=!0),Lo}class jT{constructor(e={}){const{canvas:t=kE(),context:n=null,depth:s=!0,stencil:u=!1,alpha:f=!1,antialias:h=!1,premultipliedAlpha:m=!0,preserveDrawingBuffer:g=!1,powerPreference:_="default",failIfMajorPerformanceCaveat:x=!1,reversedDepthBuffer:b=!1,outputBufferType:M=ts}=e;this.isWebGLRenderer=!0;let A;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");A=n.getContextAttributes().alpha}else A=f;const R=M,w=new Set([My,Sy,wm]),E=new Set([ts,vr,qh,jh,_y,xy]),N=new Uint32Array(4),D=new Int32Array(4);let U=null,B=null;const z=[],H=[];let W=null;this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=gr,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const I=this;let P=!1;this._outputColorSpace=Ia;let Z=0,se=0,te=null,fe=-1,pe=null;const Y=new jn,q=new jn;let ne=null;const be=new yt(0);let Ne=0,X=t.width,oe=t.height,Ae=1,Fe=null,lt=null;const de=new jn(0,0,X,oe),Re=new jn(0,0,X,oe);let tt=!1;const st=new ad;let ht=!1,jt=!1;const tn=new Xt,Nt=new j,Le=new jn,He={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Oe=!1;function nt(){return te===null?Ae:1}let Q=n;function Et(k,re){return t.getContext(k,re)}try{const k={alpha:!0,depth:s,stencil:u,antialias:h,premultipliedAlpha:m,preserveDrawingBuffer:g,powerPreference:_,failIfMajorPerformanceCaveat:x};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${my}`),t.addEventListener("webglcontextlost",Ct,!1),t.addEventListener("webglcontextrestored",Jt,!1),t.addEventListener("webglcontextcreationerror",nn,!1),Q===null){const re="webgl2";if(Q=Et(re,k),Q===null)throw Et(re)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(k){throw Rt("WebGLRenderer: "+k.message),k}let ot,Tt,Qe,G,O,ae,Te,Ie,Ee,dt,Ke,vt,Dt,Ve,Ze,ct,K,me,et,J,je,Ge,at,Xe;function Ue(){ot=new BI(Q),ot.init(),Ge=new qT(Q,ot),Tt=new RI(Q,ot,e,Ge),Qe=new wP(Q,ot),Tt.reversedDepthBuffer&&b&&Qe.buffers.depth.setReversed(!0),G=new VI(Q),O=new hP,ae=new CP(Q,ot,Qe,O,Tt,Ge,G),Te=new DI(I),Ie=new zI(I),Ee=new WD(Q),at=new wI(Q,Ee),dt=new FI(Q,Ee,G,at),Ke=new GI(Q,dt,Ee,G),et=new HI(Q,Tt,ae),ct=new NI(O),vt=new fP(I,Te,Ie,ot,Tt,at,ct),Dt=new IP(I,O),Ve=new pP,Ze=new xP(ot),me=new AI(I,Te,Ie,Qe,Ke,A,m),K=new TP(I,Ke,Tt),Xe=new OP(Q,G,Tt,Qe),J=new CI(Q,ot,G),je=new kI(Q,ot,G),G.programs=vt.programs,I.capabilities=Tt,I.extensions=ot,I.properties=O,I.renderLists=Ve,I.shadowMap=K,I.state=Qe,I.info=G}Ue(),R!==ts&&(W=new WI(R,t.width,t.height,s,u));const Ye=new LP(I,Q);this.xr=Ye,this.getContext=function(){return Q},this.getContextAttributes=function(){return Q.getContextAttributes()},this.forceContextLoss=function(){const k=ot.get("WEBGL_lose_context");k&&k.loseContext()},this.forceContextRestore=function(){const k=ot.get("WEBGL_lose_context");k&&k.restoreContext()},this.getPixelRatio=function(){return Ae},this.setPixelRatio=function(k){k!==void 0&&(Ae=k,this.setSize(X,oe,!1))},this.getSize=function(k){return k.set(X,oe)},this.setSize=function(k,re,Se=!0){if(Ye.isPresenting){ft("WebGLRenderer: Can't change size while VR device is presenting.");return}X=k,oe=re,t.width=Math.floor(k*Ae),t.height=Math.floor(re*Ae),Se===!0&&(t.style.width=k+"px",t.style.height=re+"px"),W!==null&&W.setSize(t.width,t.height),this.setViewport(0,0,k,re)},this.getDrawingBufferSize=function(k){return k.set(X*Ae,oe*Ae).floor()},this.setDrawingBufferSize=function(k,re,Se){X=k,oe=re,Ae=Se,t.width=Math.floor(k*Se),t.height=Math.floor(re*Se),this.setViewport(0,0,k,re)},this.setEffects=function(k){if(R===ts){console.error("THREE.WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.");return}if(k){for(let re=0;re{function Je(){if(ye.forEach(function(mt){O.get(mt).currentProgram.isReady()&&ye.delete(mt)}),ye.size===0){ue(k);return}setTimeout(Je,10)}ot.get("KHR_parallel_shader_compile")!==null?Je():setTimeout(Je,10)})};let Ho=null;function Jr(k){Ho&&Ho(k)}function xr(){na.stop()}function Go(){na.start()}const na=new VT;na.setAnimationLoop(Jr),typeof self<"u"&&na.setContext(self),this.setAnimationLoop=function(k){Ho=k,Ye.setAnimationLoop(k),k===null?na.stop():na.start()},Ye.addEventListener("sessionstart",xr),Ye.addEventListener("sessionend",Go),this.render=function(k,re){if(re!==void 0&&re.isCamera!==!0){Rt("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(P===!0)return;const Se=Ye.enabled===!0&&Ye.isPresenting===!0,ye=W!==null&&(te===null||Se)&&W.begin(I,te);if(k.matrixWorldAutoUpdate===!0&&k.updateMatrixWorld(),re.parent===null&&re.matrixWorldAutoUpdate===!0&&re.updateMatrixWorld(),Ye.enabled===!0&&Ye.isPresenting===!0&&(W===null||W.isCompositing()===!1)&&(Ye.cameraAutoUpdate===!0&&Ye.updateCamera(re),re=Ye.getCamera()),k.isScene===!0&&k.onBeforeRender(I,k,re,te),B=Ze.get(k,H.length),B.init(re),H.push(B),tn.multiplyMatrices(re.projectionMatrix,re.matrixWorldInverse),st.setFromProjectionMatrix(tn,ks,re.reversedDepth),jt=this.localClippingEnabled,ht=ct.init(this.clippingPlanes,jt),U=Ve.get(k,z.length),U.init(),z.push(U),Ye.enabled===!0&&Ye.isPresenting===!0){const mt=I.xr.getDepthSensingMesh();mt!==null&&Fa(mt,re,-1/0,I.sortObjects)}Fa(k,re,0,I.sortObjects),U.finish(),I.sortObjects===!0&&U.sort(Fe,lt),Oe=Ye.enabled===!1||Ye.isPresenting===!1||Ye.hasDepthSensing()===!1,Oe&&me.addToRenderList(U,k),this.info.render.frame++,ht===!0&&ct.beginShadows();const ue=B.state.shadowsArray;if(K.render(ue,k,re),ht===!0&&ct.endShadows(),this.info.autoReset===!0&&this.info.reset(),(ye&&W.hasRenderPass())===!1){const mt=U.opaque,qe=U.transmissive;if(B.setupLights(),re.isArrayCamera){const _t=re.cameras;if(qe.length>0)for(let xt=0,Lt=_t.length;xt0&&Ri(mt,qe,k,re),Oe&&me.render(k),$n(U,k,re)}te!==null&&se===0&&(ae.updateMultisampleRenderTarget(te),ae.updateRenderTargetMipmap(te)),ye&&W.end(I),k.isScene===!0&&k.onAfterRender(I,k,re),at.resetDefaultState(),fe=-1,pe=null,H.pop(),H.length>0?(B=H[H.length-1],ht===!0&&ct.setGlobalState(I.clippingPlanes,B.state.camera)):B=null,z.pop(),z.length>0?U=z[z.length-1]:U=null};function Fa(k,re,Se,ye){if(k.visible===!1)return;if(k.layers.test(re.layers)){if(k.isGroup)Se=k.renderOrder;else if(k.isLOD)k.autoUpdate===!0&&k.update(re);else if(k.isLight)B.pushLight(k),k.castShadow&&B.pushShadow(k);else if(k.isSprite){if(!k.frustumCulled||st.intersectsSprite(k)){ye&&Le.setFromMatrixPosition(k.matrixWorld).applyMatrix4(tn);const mt=Ke.update(k),qe=k.material;qe.visible&&U.push(k,mt,qe,Se,Le.z,null)}}else if((k.isMesh||k.isLine||k.isPoints)&&(!k.frustumCulled||st.intersectsObject(k))){const mt=Ke.update(k),qe=k.material;if(ye&&(k.boundingSphere!==void 0?(k.boundingSphere===null&&k.computeBoundingSphere(),Le.copy(k.boundingSphere.center)):(mt.boundingSphere===null&&mt.computeBoundingSphere(),Le.copy(mt.boundingSphere.center)),Le.applyMatrix4(k.matrixWorld).applyMatrix4(tn)),Array.isArray(qe)){const _t=mt.groups;for(let xt=0,Lt=_t.length;xt0&&ka(ue,re,Se),Je.length>0&&ka(Je,re,Se),mt.length>0&&ka(mt,re,Se),Qe.buffers.depth.setTest(!0),Qe.buffers.depth.setMask(!0),Qe.buffers.color.setMask(!0),Qe.setPolygonOffset(!1)}function Ri(k,re,Se,ye){if((Se.isScene===!0?Se.overrideMaterial:null)!==null)return;if(B.state.transmissionRenderTarget[ye.id]===void 0){const Pt=ot.has("EXT_color_buffer_half_float")||ot.has("EXT_color_buffer_float");B.state.transmissionRenderTarget[ye.id]=new Hs(1,1,{generateMipmaps:!0,type:Pt?Bo:ts,minFilter:Io,samples:Tt.samples,stencilBuffer:u,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Sn.workingColorSpace})}const Je=B.state.transmissionRenderTarget[ye.id],mt=ye.viewport||Y;Je.setSize(mt.z*I.transmissionResolutionScale,mt.w*I.transmissionResolutionScale);const qe=I.getRenderTarget(),_t=I.getActiveCubeFace(),xt=I.getActiveMipmapLevel();I.setRenderTarget(Je),I.getClearColor(be),Ne=I.getClearAlpha(),Ne<1&&I.setClearColor(16777215,.5),I.clear(),Oe&&me.render(Se);const Lt=I.toneMapping;I.toneMapping=gr;const St=ye.viewport;if(ye.viewport!==void 0&&(ye.viewport=void 0),B.setupLightsView(ye),ht===!0&&ct.setGlobalState(I.clippingPlanes,ye),ka(k,Se,ye),ae.updateMultisampleRenderTarget(Je),ae.updateRenderTargetMipmap(Je),ot.has("WEBGL_multisampled_render_to_texture")===!1){let Pt=!1;for(let Mn=0,Bn=re.length;Mn0),St=!!Se.morphAttributes.position,Pt=!!Se.morphAttributes.normal,Mn=!!Se.morphAttributes.color;let Bn=gr;ye.toneMapped&&(te===null||te.isXRRenderTarget===!0)&&(Bn=I.toneMapping);const In=Se.morphAttributes.position||Se.morphAttributes.normal||Se.morphAttributes.color,Wt=In!==void 0?In.length:0,ut=O.get(ye),_n=B.state.lights;if(ht===!0&&(jt===!0||k!==pe)){const Fi=k===pe&&ye.id===fe;ct.setState(ye,k,Fi)}let Ft=!1;ye.version===ut.__version?(ut.needsLights&&ut.lightsStateVersion!==_n.state.version||ut.outputColorSpace!==qe||ue.isBatchedMesh&&ut.batching===!1||!ue.isBatchedMesh&&ut.batching===!0||ue.isBatchedMesh&&ut.batchingColor===!0&&ue.colorTexture===null||ue.isBatchedMesh&&ut.batchingColor===!1&&ue.colorTexture!==null||ue.isInstancedMesh&&ut.instancing===!1||!ue.isInstancedMesh&&ut.instancing===!0||ue.isSkinnedMesh&&ut.skinning===!1||!ue.isSkinnedMesh&&ut.skinning===!0||ue.isInstancedMesh&&ut.instancingColor===!0&&ue.instanceColor===null||ue.isInstancedMesh&&ut.instancingColor===!1&&ue.instanceColor!==null||ue.isInstancedMesh&&ut.instancingMorph===!0&&ue.morphTexture===null||ue.isInstancedMesh&&ut.instancingMorph===!1&&ue.morphTexture!==null||ut.envMap!==_t||ye.fog===!0&&ut.fog!==Je||ut.numClippingPlanes!==void 0&&(ut.numClippingPlanes!==ct.numPlanes||ut.numIntersection!==ct.numIntersection)||ut.vertexAlphas!==xt||ut.vertexTangents!==Lt||ut.morphTargets!==St||ut.morphNormals!==Pt||ut.morphColors!==Mn||ut.toneMapping!==Bn||ut.morphTargetsCount!==Wt)&&(Ft=!0):(Ft=!0,ut.__version=ye.version);let xi=ut.currentProgram;Ft===!0&&(xi=Ha(ye,re,ue));let Ls=!1,Wn=!1,la=!1;const An=xi.getUniforms(),Ni=ut.uniforms;if(Qe.useProgram(xi.program)&&(Ls=!0,Wn=!0,la=!0),ye.id!==fe&&(fe=ye.id,Wn=!0),Ls||pe!==k){Qe.buffers.depth.getReversed()&&k.reversedDepth!==!0&&(k._reversedDepth=!0,k.updateProjectionMatrix()),An.setValue(Q,"projectionMatrix",k.projectionMatrix),An.setValue(Q,"viewMatrix",k.matrixWorldInverse);const ki=An.map.cameraPosition;ki!==void 0&&ki.setValue(Q,Nt.setFromMatrixPosition(k.matrixWorld)),Tt.logarithmicDepthBuffer&&An.setValue(Q,"logDepthBufFC",2/(Math.log(k.far+1)/Math.LN2)),(ye.isMeshPhongMaterial||ye.isMeshToonMaterial||ye.isMeshLambertMaterial||ye.isMeshBasicMaterial||ye.isMeshStandardMaterial||ye.isShaderMaterial)&&An.setValue(Q,"isOrthographic",k.isOrthographicCamera===!0),pe!==k&&(pe=k,Wn=!0,la=!0)}if(ut.needsLights&&(_n.state.directionalShadowMap.length>0&&An.setValue(Q,"directionalShadowMap",_n.state.directionalShadowMap,ae),_n.state.spotShadowMap.length>0&&An.setValue(Q,"spotShadowMap",_n.state.spotShadowMap,ae),_n.state.pointShadowMap.length>0&&An.setValue(Q,"pointShadowMap",_n.state.pointShadowMap,ae)),ue.isSkinnedMesh){An.setOptional(Q,ue,"bindMatrix"),An.setOptional(Q,ue,"bindMatrixInverse");const Fi=ue.skeleton;Fi&&(Fi.boneTexture===null&&Fi.computeBoneTexture(),An.setValue(Q,"boneTexture",Fi.boneTexture,ae))}ue.isBatchedMesh&&(An.setOptional(Q,ue,"batchingTexture"),An.setValue(Q,"batchingTexture",ue._matricesTexture,ae),An.setOptional(Q,ue,"batchingIdTexture"),An.setValue(Q,"batchingIdTexture",ue._indirectTexture,ae),An.setOptional(Q,ue,"batchingColorTexture"),ue._colorsTexture!==null&&An.setValue(Q,"batchingColorTexture",ue._colorsTexture,ae));const bi=Se.morphAttributes;if((bi.position!==void 0||bi.normal!==void 0||bi.color!==void 0)&&et.update(ue,Se,xi),(Wn||ut.receiveShadow!==ue.receiveShadow)&&(ut.receiveShadow=ue.receiveShadow,An.setValue(Q,"receiveShadow",ue.receiveShadow)),ye.isMeshGouraudMaterial&&ye.envMap!==null&&(Ni.envMap.value=_t,Ni.flipEnvMap.value=_t.isCubeTexture&&_t.isRenderTargetTexture===!1?-1:1),ye.isMeshStandardMaterial&&ye.envMap===null&&re.environment!==null&&(Ni.envMapIntensity.value=re.environmentIntensity),Ni.dfgLUT!==void 0&&(Ni.dfgLUT.value=zP()),Wn&&(An.setValue(Q,"toneMappingExposure",I.toneMappingExposure),ut.needsLights&&br(Ni,la),Je&&ye.fog===!0&&Dt.refreshFogUniforms(Ni,Je),Dt.refreshMaterialUniforms(Ni,ye,Ae,oe,B.state.transmissionRenderTarget[k.id]),mv.upload(Q,$r(ut),Ni,ae)),ye.isShaderMaterial&&ye.uniformsNeedUpdate===!0&&(mv.upload(Q,$r(ut),Ni,ae),ye.uniformsNeedUpdate=!1),ye.isSpriteMaterial&&An.setValue(Q,"center",ue.center),An.setValue(Q,"modelViewMatrix",ue.modelViewMatrix),An.setValue(Q,"normalMatrix",ue.normalMatrix),An.setValue(Q,"modelMatrix",ue.matrixWorld),ye.isShaderMaterial||ye.isRawShaderMaterial){const Fi=ye.uniformsGroups;for(let ki=0,Wo=Fi.length;ki0&&ae.useMultisampledRTT(k)===!1?ye=O.get(k).__webglMultisampledFramebuffer:Array.isArray(xt)?ye=xt[Se]:ye=xt,Y.copy(k.viewport),q.copy(k.scissor),ne=k.scissorTest}else Y.copy(de).multiplyScalar(Ae).floor(),q.copy(Re).multiplyScalar(Ae).floor(),ne=tt;if(Se!==0&&(ye=Mr),Qe.bindFramebuffer(Q.FRAMEBUFFER,ye)&&Qe.drawBuffers(k,ye),Qe.viewport(Y),Qe.scissor(q),Qe.setScissorTest(ne),ue){const qe=O.get(k.texture);Q.framebufferTexture2D(Q.FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Q.TEXTURE_CUBE_MAP_POSITIVE_X+re,qe.__webglTexture,Se)}else if(Je){const qe=re;for(let _t=0;_t=0&&re<=k.width-ye&&Se>=0&&Se<=k.height-ue&&(k.textures.length>1&&Q.readBuffer(Q.COLOR_ATTACHMENT0+qe),Q.readPixels(re,Se,ye,ue,Ge.convert(Lt),Ge.convert(St),Je))}finally{const xt=te!==null?O.get(te).__webglFramebuffer:null;Qe.bindFramebuffer(Q.FRAMEBUFFER,xt)}}},this.readRenderTargetPixelsAsync=async function(k,re,Se,ye,ue,Je,mt,qe=0){if(!(k&&k.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let _t=O.get(k).__webglFramebuffer;if(k.isWebGLCubeRenderTarget&&mt!==void 0&&(_t=_t[mt]),_t)if(re>=0&&re<=k.width-ye&&Se>=0&&Se<=k.height-ue){Qe.bindFramebuffer(Q.FRAMEBUFFER,_t);const xt=k.textures[qe],Lt=xt.format,St=xt.type;if(!Tt.textureFormatReadable(Lt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Tt.textureTypeReadable(St))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const Pt=Q.createBuffer();Q.bindBuffer(Q.PIXEL_PACK_BUFFER,Pt),Q.bufferData(Q.PIXEL_PACK_BUFFER,Je.byteLength,Q.STREAM_READ),k.textures.length>1&&Q.readBuffer(Q.COLOR_ATTACHMENT0+qe),Q.readPixels(re,Se,ye,ue,Ge.convert(Lt),Ge.convert(St),0);const Mn=te!==null?O.get(te).__webglFramebuffer:null;Qe.bindFramebuffer(Q.FRAMEBUFFER,Mn);const Bn=Q.fenceSync(Q.SYNC_GPU_COMMANDS_COMPLETE,0);return Q.flush(),await q3(Q,Bn,4),Q.bindBuffer(Q.PIXEL_PACK_BUFFER,Pt),Q.getBufferSubData(Q.PIXEL_PACK_BUFFER,0,Je),Q.deleteBuffer(Pt),Q.deleteSync(Bn),Je}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(k,re=null,Se=0){const ye=Math.pow(2,-Se),ue=Math.floor(k.image.width*ye),Je=Math.floor(k.image.height*ye),mt=re!==null?re.x:0,qe=re!==null?re.y:0;ae.setTexture2D(k,0),Q.copyTexSubImage2D(Q.TEXTURE_2D,Se,0,0,mt,qe,ue,Je),Qe.unbindTexture()};const eo=Q.createFramebuffer(),Xs=Q.createFramebuffer();this.copyTextureToTexture=function(k,re,Se=null,ye=null,ue=0,Je=null){Je===null&&(ue!==0?(Zh("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),Je=ue,ue=0):Je=0);let mt,qe,_t,xt,Lt,St,Pt,Mn,Bn;const In=k.isCompressedTexture?k.mipmaps[Je]:k.image;if(Se!==null)mt=Se.max.x-Se.min.x,qe=Se.max.y-Se.min.y,_t=Se.isBox3?Se.max.z-Se.min.z:1,xt=Se.min.x,Lt=Se.min.y,St=Se.isBox3?Se.min.z:0;else{const bi=Math.pow(2,-ue);mt=Math.floor(In.width*bi),qe=Math.floor(In.height*bi),k.isDataArrayTexture?_t=In.depth:k.isData3DTexture?_t=Math.floor(In.depth*bi):_t=1,xt=0,Lt=0,St=0}ye!==null?(Pt=ye.x,Mn=ye.y,Bn=ye.z):(Pt=0,Mn=0,Bn=0);const Wt=Ge.convert(re.format),ut=Ge.convert(re.type);let _n;re.isData3DTexture?(ae.setTexture3D(re,0),_n=Q.TEXTURE_3D):re.isDataArrayTexture||re.isCompressedArrayTexture?(ae.setTexture2DArray(re,0),_n=Q.TEXTURE_2D_ARRAY):(ae.setTexture2D(re,0),_n=Q.TEXTURE_2D),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,re.flipY),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,re.premultiplyAlpha),Q.pixelStorei(Q.UNPACK_ALIGNMENT,re.unpackAlignment);const Ft=Q.getParameter(Q.UNPACK_ROW_LENGTH),xi=Q.getParameter(Q.UNPACK_IMAGE_HEIGHT),Ls=Q.getParameter(Q.UNPACK_SKIP_PIXELS),Wn=Q.getParameter(Q.UNPACK_SKIP_ROWS),la=Q.getParameter(Q.UNPACK_SKIP_IMAGES);Q.pixelStorei(Q.UNPACK_ROW_LENGTH,In.width),Q.pixelStorei(Q.UNPACK_IMAGE_HEIGHT,In.height),Q.pixelStorei(Q.UNPACK_SKIP_PIXELS,xt),Q.pixelStorei(Q.UNPACK_SKIP_ROWS,Lt),Q.pixelStorei(Q.UNPACK_SKIP_IMAGES,St);const An=k.isDataArrayTexture||k.isData3DTexture,Ni=re.isDataArrayTexture||re.isData3DTexture;if(k.isDepthTexture){const bi=O.get(k),Fi=O.get(re),ki=O.get(bi.__renderTarget),Wo=O.get(Fi.__renderTarget);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,ki.__webglFramebuffer),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,Wo.__webglFramebuffer);for(let rs=0;rs<_t;rs++)An&&(Q.framebufferTextureLayer(Q.READ_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,O.get(k).__webglTexture,ue,St+rs),Q.framebufferTextureLayer(Q.DRAW_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,O.get(re).__webglTexture,Je,Bn+rs)),Q.blitFramebuffer(xt,Lt,mt,qe,Pt,Mn,mt,qe,Q.DEPTH_BUFFER_BIT,Q.NEAREST);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,null),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,null)}else if(ue!==0||k.isRenderTargetTexture||O.has(k)){const bi=O.get(k),Fi=O.get(re);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,eo),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,Xs);for(let ki=0;ki<_t;ki++)An?Q.framebufferTextureLayer(Q.READ_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,bi.__webglTexture,ue,St+ki):Q.framebufferTexture2D(Q.READ_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Q.TEXTURE_2D,bi.__webglTexture,ue),Ni?Q.framebufferTextureLayer(Q.DRAW_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Fi.__webglTexture,Je,Bn+ki):Q.framebufferTexture2D(Q.DRAW_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Q.TEXTURE_2D,Fi.__webglTexture,Je),ue!==0?Q.blitFramebuffer(xt,Lt,mt,qe,Pt,Mn,mt,qe,Q.COLOR_BUFFER_BIT,Q.NEAREST):Ni?Q.copyTexSubImage3D(_n,Je,Pt,Mn,Bn+ki,xt,Lt,mt,qe):Q.copyTexSubImage2D(_n,Je,Pt,Mn,xt,Lt,mt,qe);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,null),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,null)}else Ni?k.isDataTexture||k.isData3DTexture?Q.texSubImage3D(_n,Je,Pt,Mn,Bn,mt,qe,_t,Wt,ut,In.data):re.isCompressedArrayTexture?Q.compressedTexSubImage3D(_n,Je,Pt,Mn,Bn,mt,qe,_t,Wt,In.data):Q.texSubImage3D(_n,Je,Pt,Mn,Bn,mt,qe,_t,Wt,ut,In):k.isDataTexture?Q.texSubImage2D(Q.TEXTURE_2D,Je,Pt,Mn,mt,qe,Wt,ut,In.data):k.isCompressedTexture?Q.compressedTexSubImage2D(Q.TEXTURE_2D,Je,Pt,Mn,In.width,In.height,Wt,In.data):Q.texSubImage2D(Q.TEXTURE_2D,Je,Pt,Mn,mt,qe,Wt,ut,In);Q.pixelStorei(Q.UNPACK_ROW_LENGTH,Ft),Q.pixelStorei(Q.UNPACK_IMAGE_HEIGHT,xi),Q.pixelStorei(Q.UNPACK_SKIP_PIXELS,Ls),Q.pixelStorei(Q.UNPACK_SKIP_ROWS,Wn),Q.pixelStorei(Q.UNPACK_SKIP_IMAGES,la),Je===0&&re.generateMipmaps&&Q.generateMipmap(_n),Qe.unbindTexture()},this.initRenderTarget=function(k){O.get(k).__webglFramebuffer===void 0&&ae.setupRenderTarget(k)},this.initTexture=function(k){k.isCubeTexture?ae.setTextureCube(k,0):k.isData3DTexture?ae.setTexture3D(k,0):k.isDataArrayTexture||k.isCompressedArrayTexture?ae.setTexture2DArray(k,0):ae.setTexture2D(k,0),Qe.unbindTexture()},this.resetState=function(){Z=0,se=0,te=null,Qe.reset(),at.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return ks}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=Sn._getDrawingBufferColorSpace(e),t.unpackColorSpace=Sn._getUnpackColorSpace()}}const BP=Object.freeze(Object.defineProperty({__proto__:null,ACESFilmicToneMapping:gy,AddEquation:Du,AddOperation:TE,AdditiveAnimationBlendMode:Ab,AdditiveBlending:Hx,AgXToneMapping:vb,AlphaFormat:Eb,AlwaysCompare:zE,AlwaysDepth:xv,AlwaysStencilFunc:qx,AmbientLight:NT,AnimationAction:BT,AnimationClip:Sm,AnimationLoader:PN,AnimationMixer:fD,AnimationObjectGroup:uD,AnimationUtils:LN,ArcCurve:iT,ArrayCamera:OT,ArrowHelper:PD,AttachedBindMode:Wx,Audio:PT,AudioAnalyser:$N,AudioContext:$b,AudioListener:QN,AudioLoader:jN,AxesHelper:zD,BackSide:as,BasicDepthPacking:NE,BasicShadowMap:sE,BatchedMesh:KE,Bone:Ib,BooleanKeyframeTrack:uf,Box2:xD,Box3:za,Box3Helper:ID,BoxGeometry:lf,BoxHelper:UD,BufferAttribute:Xn,BufferGeometry:Kt,BufferGeometryLoader:IT,ByteType:xb,Cache:Oo,Camera:Ry,CameraHelper:LD,CanvasTexture:tN,CapsuleGeometry:Py,CatmullRomCurve3:aT,CineonToneMapping:mb,CircleGeometry:zy,ClampToEdgeWrapping:Rs,Clock:eS,Color:yt,ColorKeyframeTrack:Zb,ColorManagement:Sn,CompressedArrayTexture:$R,CompressedCubeTexture:eN,CompressedTexture:Oy,CompressedTextureLoader:zN,ConeGeometry:Nm,ConstantAlphaFactor:SE,ConstantColorFactor:xE,Controls:FD,CubeCamera:WE,CubeDepthTexture:tT,CubeReflectionMapping:zo,CubeRefractionMapping:Pu,CubeTexture:Cm,CubeTextureLoader:BN,CubeUVReflectionMapping:id,CubicBezierCurve:Bb,CubicBezierCurve3:sT,CubicInterpolant:ST,CullFaceBack:Vx,CullFaceFront:aE,CullFaceFrontBack:n3,CullFaceNone:iE,Curve:Zr,CurvePath:oT,CustomBlending:rE,CustomToneMapping:gb,CylinderGeometry:Rm,Cylindrical:_D,Data3DTexture:Cy,DataArrayTexture:wy,DataTexture:Yr,DataTextureLoader:FN,DataUtils:ER,DecrementStencilOp:x3,DecrementWrapStencilOp:S3,DefaultLoadingManager:TT,DepthFormat:Fo,DepthStencilFormat:Uu,DepthTexture:ed,DetachedBindMode:AE,DirectionalLight:RT,DirectionalLightHelper:DD,DiscreteInterpolant:MT,DodecahedronGeometry:By,DoubleSide:Uo,DstAlphaFactor:mE,DstColorFactor:vE,DynamicCopyUsage:z3,DynamicDrawUsage:D3,DynamicReadUsage:I3,EdgesGeometry:nT,EllipseCurve:Fy,EqualCompare:IE,EqualDepth:Sv,EqualStencilFunc:A3,EquirectangularReflectionMapping:om,EquirectangularRefractionMapping:lm,Euler:Gs,EventDispatcher:ko,ExternalTexture:Pb,ExtrudeGeometry:ky,FileLoader:Ul,Float16BufferAttribute:DR,Float32BufferAttribute:bt,FloatType:is,Fog:Dy,FogExp2:Ny,FramebufferTexture:JR,FrontSide:Ll,Frustum:ad,FrustumArray:Iy,GLBufferAttribute:gD,GLSL1:F3,GLSL3:jx,GreaterCompare:OE,GreaterDepth:Ev,GreaterEqualCompare:Ay,GreaterEqualDepth:Mv,GreaterEqualStencilFunc:N3,GreaterStencilFunc:C3,GridHelper:RD,Group:Gh,HalfFloatType:Bo,HemisphereLight:AT,HemisphereLightHelper:CD,IcosahedronGeometry:Vy,ImageBitmapLoader:qN,ImageLoader:Mm,ImageUtils:VE,IncrementStencilOp:_3,IncrementWrapStencilOp:b3,InstancedBufferAttribute:$h,InstancedBufferGeometry:UT,InstancedInterleavedBuffer:mD,InstancedMesh:QE,Int16BufferAttribute:RR,Int32BufferAttribute:NR,Int8BufferAttribute:AR,IntType:yy,InterleavedBuffer:Ly,InterleavedBufferAttribute:nf,Interpolant:Um,InterpolateDiscrete:fm,InterpolateLinear:ay,InterpolateSmooth:dv,InterpolationSamplingMode:H3,InterpolationSamplingType:V3,InvertStencilOp:M3,KeepStencilOp:Wc,KeyframeTrack:_r,LOD:YE,LatheGeometry:Hy,Layers:Kh,LessCompare:UE,LessDepth:bv,LessEqualCompare:Ty,LessEqualDepth:ef,LessEqualStencilFunc:w3,LessStencilFunc:T3,Light:Gu,LightProbe:LT,Line:Fu,Line3:MD,LineBasicMaterial:ss,LineCurve:Fb,LineCurve3:rT,LineDashedMaterial:xT,LineLoop:JE,LineSegments:Vo,LinearFilter:oi,LinearInterpolant:Yb,LinearMipMapLinearFilter:r3,LinearMipMapNearestFilter:s3,LinearMipmapLinearFilter:Io,LinearMipmapNearestFilter:Jp,LinearSRGBColorSpace:zu,LinearToneMapping:db,LinearTransfer:dm,Loader:Ns,LoaderUtils:Jx,LoadingManager:Qb,LoopOnce:wE,LoopPingPong:RE,LoopRepeat:CE,MOUSE:Gc,Material:Ba,MaterialLoader:Zy,MathUtils:uR,Matrix2:aS,Matrix3:en,Matrix4:Xt,MaxEquation:cE,Mesh:Yi,MeshBasicMaterial:Vu,MeshDepthMaterial:Wb,MeshDistanceMaterial:qb,MeshLambertMaterial:yT,MeshMatcapMaterial:_T,MeshNormalMaterial:vT,MeshPhongMaterial:mT,MeshPhysicalMaterial:pT,MeshStandardMaterial:Xb,MeshToonMaterial:gT,MinEquation:uE,MirroredRepeatWrapping:cm,MixOperation:EE,MultiplyBlending:Xx,MultiplyOperation:Am,NearestFilter:Bi,NearestMipMapLinearFilter:a3,NearestMipMapNearestFilter:i3,NearestMipmapLinearFilter:Vh,NearestMipmapNearestFilter:_b,NeutralToneMapping:yb,NeverCompare:LE,NeverDepth:_v,NeverStencilFunc:E3,NoBlending:Po,NoColorSpace:Cl,NoNormalPacking:p3,NoToneMapping:gr,NormalAnimationBlendMode:Ey,NormalBlending:Kc,NormalGAPacking:g3,NormalRGPacking:m3,NotEqualCompare:PE,NotEqualDepth:Tv,NotEqualStencilFunc:R3,NumberKeyframeTrack:xm,Object3D:Cn,ObjectLoader:XN,ObjectSpaceNormalMap:DE,OctahedronGeometry:Dm,OneFactor:hE,OneMinusConstantAlphaFactor:ME,OneMinusConstantColorFactor:bE,OneMinusDstAlphaFactor:gE,OneMinusDstColorFactor:yE,OneMinusSrcAlphaFactor:yv,OneMinusSrcColorFactor:pE,OrthographicCamera:Dl,PCFShadowMap:Xh,PCFSoftShadowMap:Kp,PMREMGenerator:nb,Path:ly,PerspectiveCamera:zi,Plane:wl,PlaneGeometry:sd,PlaneHelper:OD,PointLight:CT,PointLightHelper:AD,Points:$E,PointsMaterial:Ob,PolarGridHelper:ND,PolyhedronGeometry:Hu,PositionalAudio:JN,PropertyBinding:wn,PropertyMixer:zT,QuadraticBezierCurve:kb,QuadraticBezierCurve3:Vb,Quaternion:Pa,QuaternionKeyframeTrack:Im,QuaternionLinearInterpolant:ET,R11_EAC_Format:Uv,RED_GREEN_RGTC2_Format:ny,RED_RGTC1_Format:ey,REVISION:my,RG11_EAC_Format:Ov,RGBADepthPacking:f3,RGBAFormat:Oa,RGBAIntegerFormat:My,RGBA_ASTC_10x10_Format:Yv,RGBA_ASTC_10x5_Format:Wv,RGBA_ASTC_10x6_Format:qv,RGBA_ASTC_10x8_Format:jv,RGBA_ASTC_12x10_Format:Zv,RGBA_ASTC_12x12_Format:Qv,RGBA_ASTC_4x4_Format:zv,RGBA_ASTC_5x4_Format:Bv,RGBA_ASTC_5x5_Format:Fv,RGBA_ASTC_6x5_Format:kv,RGBA_ASTC_6x6_Format:Vv,RGBA_ASTC_8x5_Format:Hv,RGBA_ASTC_8x6_Format:Gv,RGBA_ASTC_8x8_Format:Xv,RGBA_BPTC_Format:Kv,RGBA_ETC2_EAC_Format:Lv,RGBA_PVRTC_2BPPV1_Format:Rv,RGBA_PVRTC_4BPPV1_Format:Cv,RGBA_S3TC_DXT1_Format:em,RGBA_S3TC_DXT3_Format:tm,RGBA_S3TC_DXT5_Format:nm,RGBDepthPacking:h3,RGBFormat:Tb,RGBIntegerFormat:o3,RGB_BPTC_SIGNED_Format:Jv,RGB_BPTC_UNSIGNED_Format:$v,RGB_ETC1_Format:Nv,RGB_ETC2_Format:Dv,RGB_PVRTC_2BPPV1_Format:wv,RGB_PVRTC_4BPPV1_Format:Av,RGB_S3TC_DXT1_Format:$p,RGDepthPacking:d3,RGFormat:tf,RGIntegerFormat:Sy,RawShaderMaterial:Gb,Ray:of,Raycaster:FT,RectAreaLight:DT,RedFormat:by,RedIntegerFormat:wm,ReinhardToneMapping:pb,RenderTarget:Cb,RenderTarget3D:hD,RepeatWrapping:um,ReplaceStencilOp:y3,ReverseSubtractEquation:lE,RingGeometry:Gy,SIGNED_R11_EAC_Format:Iv,SIGNED_RED_GREEN_RGTC2_Format:iy,SIGNED_RED_RGTC1_Format:ty,SIGNED_RG11_EAC_Format:Pv,SRGBColorSpace:Ia,SRGBTransfer:zn,Scene:Lb,ShaderChunk:un,ShaderLib:qr,ShaderMaterial:yr,ShadowMaterial:dT,Shape:$c,ShapeGeometry:Xy,ShapePath:BD,ShapeUtils:jr,ShortType:bb,Skeleton:Uy,SkeletonHelper:TD,SkinnedMesh:ZE,Source:Iu,Sphere:_a,SphereGeometry:Lm,Spherical:eb,SphericalHarmonics3:Jb,SplineCurve:Hb,SpotLight:wT,SpotLightHelper:ED,Sprite:jE,SpriteMaterial:Ub,SrcAlphaFactor:vv,SrcAlphaSaturateFactor:_E,SrcColorFactor:dE,StaticCopyUsage:P3,StaticDrawUsage:pm,StaticReadUsage:U3,StereoCamera:YN,StreamCopyUsage:B3,StreamDrawUsage:L3,StreamReadUsage:O3,StringKeyframeTrack:cf,SubtractEquation:oE,SubtractiveBlending:Gx,TOUCH:Xc,TangentSpaceNormalMap:ku,TetrahedronGeometry:Wy,Texture:wi,TextureLoader:kN,TextureUtils:XD,Timer:vD,TimestampQuery:k3,TorusGeometry:qy,TorusKnotGeometry:jy,Triangle:Cs,TriangleFanDrawMode:c3,TriangleStripDrawMode:u3,TrianglesDrawMode:l3,TubeGeometry:Yy,UVMapping:vy,Uint16BufferAttribute:Rb,Uint32BufferAttribute:Nb,Uint8BufferAttribute:wR,Uint8ClampedBufferAttribute:CR,Uniform:iS,UniformsGroup:pD,UniformsLib:pt,UniformsUtils:XE,UnsignedByteType:ts,UnsignedInt101111Type:Mb,UnsignedInt248Type:jh,UnsignedInt5999Type:Sb,UnsignedIntType:vr,UnsignedShort4444Type:_y,UnsignedShort5551Type:xy,UnsignedShortType:qh,VSMShadowMap:jc,Vector2:ze,Vector3:j,Vector4:jn,VectorKeyframeTrack:bm,VideoFrameTexture:KR,VideoTexture:eT,WebGL3DRenderTarget:pR,WebGLArrayRenderTarget:dR,WebGLCoordinateSystem:ks,WebGLCubeRenderTarget:Db,WebGLRenderTarget:Hs,WebGLRenderer:jT,WebGLUtils:qT,WebGPUCoordinateSystem:Yh,WebXRController:pv,WireframeGeometry:hT,WrapAroundEnding:hm,ZeroCurvatureEnding:Yc,ZeroFactor:fE,ZeroSlopeEnding:Zc,ZeroStencilOp:v3,createCanvasElement:kE,error:Rt,getConsoleFunction:W3,log:gm,setConsoleFunction:X3,warn:ft,warnOnce:Zh},Symbol.toStringTag,{value:"Module"}));var Rx={exports:{}},Nx={},Dx={exports:{}},Lx={};var L1;function FP(){if(L1)return Lx;L1=1;var r=Tm();function e(x,b){return x===b&&(x!==0||1/x===1/b)||x!==x&&b!==b}var t=typeof Object.is=="function"?Object.is:e,n=r.useState,s=r.useEffect,u=r.useLayoutEffect,f=r.useDebugValue;function h(x,b){var M=b(),A=n({inst:{value:M,getSnapshot:b}}),R=A[0].inst,w=A[1];return u(function(){R.value=M,R.getSnapshot=b,m(R)&&w({inst:R})},[x,M,b]),s(function(){return m(R)&&w({inst:R}),x(function(){m(R)&&w({inst:R})})},[x]),f(M),M}function m(x){var b=x.getSnapshot;x=x.value;try{var M=b();return!t(x,M)}catch{return!0}}function g(x,b){return b()}var _=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?g:h;return Lx.useSyncExternalStore=r.useSyncExternalStore!==void 0?r.useSyncExternalStore:_,Lx}var U1;function kP(){return U1||(U1=1,Dx.exports=FP()),Dx.exports}var I1;function VP(){if(I1)return Nx;I1=1;var r=Tm(),e=kP();function t(g,_){return g===_&&(g!==0||1/g===1/_)||g!==g&&_!==_}var n=typeof Object.is=="function"?Object.is:t,s=e.useSyncExternalStore,u=r.useRef,f=r.useEffect,h=r.useMemo,m=r.useDebugValue;return Nx.useSyncExternalStoreWithSelector=function(g,_,x,b,M){var A=u(null);if(A.current===null){var R={hasValue:!1,value:null};A.current=R}else R=A.current;A=h(function(){function E(z){if(!N){if(N=!0,D=z,z=b(z),M!==void 0&&R.hasValue){var H=R.value;if(M(H,z))return U=H}return U=z}if(H=U,n(D,z))return H;var W=b(z);return M!==void 0&&M(H,W)?(D=z,H):(D=z,U=W)}var N=!1,D,U,B=x===void 0?null:x;return[function(){return E(_())},B===null?void 0:function(){return E(B())}]},[_,x,b,M]);var w=s(g,A[0],A[1]);return f(function(){R.hasValue=!0,R.value=w},[w]),m(w),w},Nx}var O1;function HP(){return O1||(O1=1,Rx.exports=VP()),Rx.exports}var GP=HP();const XP=py(GP),P1=r=>{let e;const t=new Set,n=(g,_)=>{const x=typeof g=="function"?g(e):g;if(!Object.is(x,e)){const b=e;e=_??(typeof x!="object"||x===null)?x:Object.assign({},e,x),t.forEach(M=>M(e,b))}},s=()=>e,h={setState:n,getState:s,getInitialState:()=>m,subscribe:g=>(t.add(g),()=>t.delete(g))},m=e=r(n,s,h);return h},WP=(r=>r?P1(r):P1),{useSyncExternalStoreWithSelector:qP}=XP,jP=r=>r;function YP(r,e=jP,t){const n=qP(r.subscribe,r.getState,r.getInitialState,e,t);return hb.useDebugValue(n),n}const z1=(r,e)=>{const t=WP(r),n=(s,u=e)=>YP(t,s,u);return Object.assign(n,t),n},ZP=((r,e)=>r?z1(r,e):z1);var sb=nE();const QP=py(sb);function sS(r,e,t){if(!r)return;if(t(r)===!0)return r;let n=e?r.return:r.child;for(;n;){const s=sS(n,e,t);if(s)return s;n=e?null:n.sibling}}function YT(r){try{return Object.defineProperties(r,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return r}}const rS=YT(rt.createContext(null));class ZT extends rt.Component{render(){return rt.createElement(rS.Provider,{value:this._reactInternals},this.props.children)}}function QT(){const r=rt.useContext(rS);if(r===null)throw new Error("its-fine: useFiber must be called within a !");const e=rt.useId();return rt.useMemo(()=>{for(const t of[r,r?.alternate]){if(!t)continue;const n=sS(t,!1,s=>{let u=s.memoizedState;for(;u;){if(u.memoizedState===e)return!0;u=u.next}});if(n)return n}},[r,e])}const KP=Symbol.for("react.context"),JP=r=>r!==null&&typeof r=="object"&&"$$typeof"in r&&r.$$typeof===KP;function $P(){const r=QT(),[e]=rt.useState(()=>new Map);e.clear();let t=r;for(;t;){const n=t.type;JP(n)&&n!==rS&&!e.has(n)&&e.set(n,rt.use(YT(n))),t=t.return}return e}function ez(){const r=$P();return rt.useMemo(()=>Array.from(r.keys()).reduce((e,t)=>n=>rt.createElement(e,null,rt.createElement(t.Provider,{...n,value:r.get(t)})),e=>rt.createElement(ZT,{...e})),[r])}function KT(r){let e=r.root;for(;e.getState().previousRoot;)e=e.getState().previousRoot;return e}const JT=r=>r&&r.isOrthographicCamera,tz=r=>r&&r.hasOwnProperty("current"),nz=r=>r!=null&&(typeof r=="string"||typeof r=="number"||r.isColor),Om=((r,e)=>typeof window<"u"&&(((r=window.document)==null?void 0:r.createElement)||((e=window.navigator)==null?void 0:e.product)==="ReactNative"))()?rt.useLayoutEffect:rt.useEffect;function $T(r){const e=rt.useRef(r);return Om(()=>{e.current=r},[r]),e}function iz(){const r=QT(),e=ez();return rt.useMemo(()=>({children:t})=>{const s=!!sS(r,!0,u=>u.type===rt.StrictMode)?rt.StrictMode:rt.Fragment;return he.jsx(s,{children:he.jsx(e,{children:t})})},[r,e])}function az({set:r}){return Om(()=>(r(new Promise(()=>null)),()=>r(!1)),[r]),null}const sz=(r=>(r=class extends rt.Component{constructor(...t){super(...t),this.state={error:!1}}componentDidCatch(t){this.props.set(t)}render(){return this.state.error?null:this.props.children}},r.getDerivedStateFromError=()=>({error:!0}),r))();function eA(r){var e;const t=typeof window<"u"?(e=window.devicePixelRatio)!=null?e:2:1;return Array.isArray(r)?Math.min(Math.max(r[0],t),r[1]):r}function Bh(r){var e;return(e=r.__r3f)==null?void 0:e.root.getState()}const yi={obj:r=>r===Object(r)&&!yi.arr(r)&&typeof r!="function",fun:r=>typeof r=="function",str:r=>typeof r=="string",num:r=>typeof r=="number",boo:r=>typeof r=="boolean",und:r=>r===void 0,nul:r=>r===null,arr:r=>Array.isArray(r),equ(r,e,{arrays:t="shallow",objects:n="reference",strict:s=!0}={}){if(typeof r!=typeof e||!!r!=!!e)return!1;if(yi.str(r)||yi.num(r)||yi.boo(r))return r===e;const u=yi.obj(r);if(u&&n==="reference")return r===e;const f=yi.arr(r);if(f&&t==="reference")return r===e;if((f||u)&&r===e)return!0;let h;for(h in r)if(!(h in e))return!1;if(u&&t==="shallow"&&n==="shallow"){for(h in s?e:r)if(!yi.equ(r[h],e[h],{strict:s,objects:"reference"}))return!1}else for(h in s?e:r)if(r[h]!==e[h])return!1;if(yi.und(h)){if(f&&r.length===0&&e.length===0||u&&Object.keys(r).length===0&&Object.keys(e).length===0)return!0;if(r!==e)return!1}return!0}};function rz(r){r.type!=="Scene"&&(r.dispose==null||r.dispose());for(const e in r){const t=r[e];t?.type!=="Scene"&&(t==null||t.dispose==null||t.dispose())}}const tA=["children","key","ref"];function oz(r){const e={};for(const t in r)tA.includes(t)||(e[t]=r[t]);return e}function uy(r,e,t,n){const s=r;let u=s?.__r3f;return u||(u={root:e,type:t,parent:null,children:[],props:oz(n),object:s,eventCount:0,handlers:{},isHidden:!1},s&&(s.__r3f=u)),u}function Em(r,e){if(!e.includes("-"))return{root:r,key:e,target:r[e]};if(e in r)return{root:r,key:e,target:r[e]};let t=r;const n=e.split("-");for(const s of n){if(typeof t!="object"||t===null){if(t!==void 0){const u=n.slice(n.indexOf(s)).join("-");return{root:t,key:u,target:void 0}}return{root:r,key:e,target:void 0}}e=s,r=t,t=t[e]}return{root:r,key:e,target:t}}const B1=/-\d+$/;function cy(r,e){if(yi.str(e.props.attach)){if(B1.test(e.props.attach)){const s=e.props.attach.replace(B1,""),{root:u,key:f}=Em(r.object,s);Array.isArray(u[f])||(u[f]=[])}const{root:t,key:n}=Em(r.object,e.props.attach);e.previousAttach=t[n],t[n]=e.object}else yi.fun(e.props.attach)&&(e.previousAttach=e.props.attach(r.object,e.object))}function fy(r,e){if(yi.str(e.props.attach)){const{root:t,key:n}=Em(r.object,e.props.attach),s=e.previousAttach;s===void 0?delete t[n]:t[n]=s}else e.previousAttach==null||e.previousAttach(r.object,e.object);delete e.previousAttach}const rb=[...tA,"args","dispose","attach","object","onUpdate","dispose"],F1=new Map;function lz(r){let e=F1.get(r.constructor);try{e||(e=new r.constructor,F1.set(r.constructor,e))}catch{}return e}function uz(r,e){const t={};for(const n in e)if(!rb.includes(n)&&!yi.equ(e[n],r.props[n])){t[n]=e[n];for(const s in e)s.startsWith(`${n}-`)&&(t[s]=e[s])}for(const n in r.props){if(rb.includes(n)||e.hasOwnProperty(n))continue;const{root:s,key:u}=Em(r.object,n);if(s.constructor&&s.constructor.length===0){const f=lz(s);yi.und(f)||(t[u]=f[u])}else t[u]=0}return t}const cz=["map","emissiveMap","sheenColorMap","specularColorMap","envMap"],fz=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function Lu(r,e){var t;const n=r.__r3f,s=n&&KT(n).getState(),u=n?.eventCount;for(const h in e){let m=e[h];if(rb.includes(h))continue;if(n&&fz.test(h)){typeof m=="function"?n.handlers[h]=m:delete n.handlers[h],n.eventCount=Object.keys(n.handlers).length;continue}if(m===void 0)continue;let{root:g,key:_,target:x}=Em(r,h);if(x===void 0&&(typeof g!="object"||g===null))throw Error(`R3F: Cannot set "${h}". Ensure it is an object before setting "${_}".`);if(x instanceof Kh&&m instanceof Kh)x.mask=m.mask;else if(x instanceof yt&&nz(m))x.set(m);else if(x!==null&&typeof x=="object"&&typeof x.set=="function"&&typeof x.copy=="function"&&m!=null&&m.constructor&&x.constructor===m.constructor)x.copy(m);else if(x!==null&&typeof x=="object"&&typeof x.set=="function"&&Array.isArray(m))typeof x.fromArray=="function"?x.fromArray(m):x.set(...m);else if(x!==null&&typeof x=="object"&&typeof x.set=="function"&&typeof m=="number")typeof x.setScalar=="function"?x.setScalar(m):x.set(m);else{var f;g[_]=m,s&&!s.linear&&cz.includes(_)&&(f=g[_])!=null&&f.isTexture&&g[_].format===Oa&&g[_].type===ts&&(g[_].colorSpace=Ia)}}if(n!=null&&n.parent&&s!=null&&s.internal&&(t=n.object)!=null&&t.isObject3D&&u!==n.eventCount){const h=n.object,m=s.internal.interaction.indexOf(h);m>-1&&s.internal.interaction.splice(m,1),n.eventCount&&h.raycast!==null&&s.internal.interaction.push(h)}return n&&n.props.attach===void 0&&(n.object.isBufferGeometry?n.props.attach="geometry":n.object.isMaterial&&(n.props.attach="material")),n&&od(n),r}function od(r){var e;if(!r.parent)return;r.props.onUpdate==null||r.props.onUpdate(r.object);const t=(e=r.root)==null||e.getState==null?void 0:e.getState();t&&t.internal.frames===0&&t.invalidate()}function hz(r,e){r.manual||(JT(r)?(r.left=e.width/-2,r.right=e.width/2,r.top=e.height/2,r.bottom=e.height/-2):r.aspect=e.width/e.height,r.updateProjectionMatrix())}const ws=r=>r?.isObject3D;function uv(r){return(r.eventObject||r.object).uuid+"/"+r.index+r.instanceId}function nA(r,e,t,n){const s=t.get(e);s&&(t.delete(e),t.size===0&&(r.delete(n),s.target.releasePointerCapture(n)))}function dz(r,e){const{internal:t}=r.getState();t.interaction=t.interaction.filter(n=>n!==e),t.initialHits=t.initialHits.filter(n=>n!==e),t.hovered.forEach((n,s)=>{(n.eventObject===e||n.object===e)&&t.hovered.delete(s)}),t.capturedMap.forEach((n,s)=>{nA(t.capturedMap,e,n,s)})}function pz(r){function e(m){const{internal:g}=r.getState(),_=m.offsetX-g.initialClick[0],x=m.offsetY-g.initialClick[1];return Math.round(Math.sqrt(_*_+x*x))}function t(m){return m.filter(g=>["Move","Over","Enter","Out","Leave"].some(_=>{var x;return(x=g.__r3f)==null?void 0:x.handlers["onPointer"+_]}))}function n(m,g){const _=r.getState(),x=new Set,b=[],M=g?g(_.internal.interaction):_.internal.interaction;for(let E=0;E{const D=Bh(E.object),U=Bh(N.object);return!D||!U?E.distance-N.distance:U.events.priority-D.events.priority||E.distance-N.distance}).filter(E=>{const N=uv(E);return x.has(N)?!1:(x.add(N),!0)});_.events.filter&&(R=_.events.filter(R,_));for(const E of R){let N=E.object;for(;N;){var w;(w=N.__r3f)!=null&&w.eventCount&&b.push({...E,eventObject:N}),N=N.parent}}if("pointerId"in m&&_.internal.capturedMap.has(m.pointerId))for(let E of _.internal.capturedMap.get(m.pointerId).values())x.has(uv(E.intersection))||b.push(E.intersection);return b}function s(m,g,_,x){if(m.length){const b={stopped:!1};for(const M of m){let A=Bh(M.object);if(A||M.object.traverseAncestors(R=>{const w=Bh(R);if(w)return A=w,!1}),A){const{raycaster:R,pointer:w,camera:E,internal:N}=A,D=new j(w.x,w.y,0).unproject(E),U=I=>{var P,Z;return(P=(Z=N.capturedMap.get(I))==null?void 0:Z.has(M.eventObject))!=null?P:!1},B=I=>{const P={intersection:M,target:g.target};N.capturedMap.has(I)?N.capturedMap.get(I).set(M.eventObject,P):N.capturedMap.set(I,new Map([[M.eventObject,P]])),g.target.setPointerCapture(I)},z=I=>{const P=N.capturedMap.get(I);P&&nA(N.capturedMap,M.eventObject,P,I)};let H={};for(let I in g){let P=g[I];typeof P!="function"&&(H[I]=P)}let W={...M,...H,pointer:w,intersections:m,stopped:b.stopped,delta:_,unprojectedPoint:D,ray:R.ray,camera:E,stopPropagation(){const I="pointerId"in g&&N.capturedMap.get(g.pointerId);if((!I||I.has(M.eventObject))&&(W.stopped=b.stopped=!0,N.hovered.size&&Array.from(N.hovered.values()).find(P=>P.eventObject===M.eventObject))){const P=m.slice(0,m.indexOf(M));u([...P,M])}},target:{hasPointerCapture:U,setPointerCapture:B,releasePointerCapture:z},currentTarget:{hasPointerCapture:U,setPointerCapture:B,releasePointerCapture:z},nativeEvent:g};if(x(W),b.stopped===!0)break}}}return m}function u(m){const{internal:g}=r.getState();for(const _ of g.hovered.values())if(!m.length||!m.find(x=>x.object===_.object&&x.index===_.index&&x.instanceId===_.instanceId)){const b=_.eventObject.__r3f;if(g.hovered.delete(uv(_)),b!=null&&b.eventCount){const M=b.handlers,A={..._,intersections:m};M.onPointerOut==null||M.onPointerOut(A),M.onPointerLeave==null||M.onPointerLeave(A)}}}function f(m,g){for(let _=0;_u([]);case"onLostPointerCapture":return g=>{const{internal:_}=r.getState();"pointerId"in g&&_.capturedMap.has(g.pointerId)&&requestAnimationFrame(()=>{_.capturedMap.has(g.pointerId)&&(_.capturedMap.delete(g.pointerId),u([]))})}}return function(_){const{onPointerMissed:x,internal:b}=r.getState();b.lastEvent.current=_;const M=m==="onPointerMove",A=m==="onClick"||m==="onContextMenu"||m==="onDoubleClick",w=n(_,M?t:void 0),E=A?e(_):0;m==="onPointerDown"&&(b.initialClick=[_.offsetX,_.offsetY],b.initialHits=w.map(D=>D.eventObject)),A&&!w.length&&E<=2&&(f(_,b.interaction),x&&x(_)),M&&u(w);function N(D){const U=D.eventObject,B=U.__r3f;if(!(B!=null&&B.eventCount))return;const z=B.handlers;if(M){if(z.onPointerOver||z.onPointerEnter||z.onPointerOut||z.onPointerLeave){const H=uv(D),W=b.hovered.get(H);W?W.stopped&&D.stopPropagation():(b.hovered.set(H,D),z.onPointerOver==null||z.onPointerOver(D),z.onPointerEnter==null||z.onPointerEnter(D))}z.onPointerMove==null||z.onPointerMove(D)}else{const H=z[m];H?(!A||b.initialHits.includes(U))&&(f(_,b.interaction.filter(W=>!b.initialHits.includes(W))),H(D)):A&&b.initialHits.includes(U)&&f(_,b.interaction.filter(W=>!b.initialHits.includes(W)))}}s(w,_,E,N)}}return{handlePointer:h}}const k1=r=>!!(r!=null&&r.render),iA=rt.createContext(null),mz=(r,e)=>{const t=ZP((h,m)=>{const g=new j,_=new j,x=new j;function b(E=m().camera,N=_,D=m().size){const{width:U,height:B,top:z,left:H}=D,W=U/B;N.isVector3?x.copy(N):x.set(...N);const I=E.getWorldPosition(g).distanceTo(x);if(JT(E))return{width:U/E.zoom,height:B/E.zoom,top:z,left:H,factor:1,distance:I,aspect:W};{const P=E.fov*Math.PI/180,Z=2*Math.tan(P/2)*I,se=Z*(U/B);return{width:se,height:Z,top:z,left:H,factor:U/se,distance:I,aspect:W}}}let M;const A=E=>h(N=>({performance:{...N.performance,current:E}})),R=new ze;return{set:h,get:m,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(E=1)=>r(m(),E),advance:(E,N)=>e(E,N,m()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new eS,pointer:R,mouse:R,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{const E=m();M&&clearTimeout(M),E.performance.current!==E.performance.min&&A(E.performance.min),M=setTimeout(()=>A(m().performance.max),E.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:b},setEvents:E=>h(N=>({...N,events:{...N.events,...E}})),setSize:(E,N,D=0,U=0)=>{const B=m().camera,z={width:E,height:N,top:D,left:U};h(H=>({size:z,viewport:{...H.viewport,...b(B,_,z)}}))},setDpr:E=>h(N=>{const D=eA(E);return{viewport:{...N.viewport,dpr:D,initialDpr:N.viewport.initialDpr||D}}}),setFrameloop:(E="always")=>{const N=m().clock;N.stop(),N.elapsedTime=0,E!=="never"&&(N.start(),N.elapsedTime=0),h(()=>({frameloop:E}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:rt.createRef(),active:!1,frames:0,priority:0,subscribe:(E,N,D)=>{const U=m().internal;return U.priority=U.priority+(N>0?1:0),U.subscribers.push({ref:E,priority:N,store:D}),U.subscribers=U.subscribers.sort((B,z)=>B.priority-z.priority),()=>{const B=m().internal;B!=null&&B.subscribers&&(B.priority=B.priority-(N>0?1:0),B.subscribers=B.subscribers.filter(z=>z.ref!==E))}}}}}),n=t.getState();let s=n.size,u=n.viewport.dpr,f=n.camera;return t.subscribe(()=>{const{camera:h,size:m,viewport:g,gl:_,set:x}=t.getState();if(m.width!==s.width||m.height!==s.height||g.dpr!==u){s=m,u=g.dpr,hz(h,m),g.dpr>0&&_.setPixelRatio(g.dpr);const b=typeof HTMLCanvasElement<"u"&&_.domElement instanceof HTMLCanvasElement;_.setSize(m.width,m.height,b)}h!==f&&(f=h,x(b=>({viewport:{...b.viewport,...b.viewport.getCurrentViewport(h)}})))}),t.subscribe(h=>r(h)),t};function aA(){const r=rt.useContext(iA);if(!r)throw new Error("R3F: Hooks can only be used within the Canvas component!");return r}function Nu(r=t=>t,e){return aA()(r,e)}function gz(r,e=0){const t=aA(),n=t.getState().internal.subscribe,s=$T(r);return Om(()=>n(s,e,t),[e,n,t]),null}const vz=1,yz=8,_z=32,xz=2;var bz={version:"9.5.0"};function Sz(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var V1={exports:{}},H1={exports:{}},G1;function Mz(){return G1||(G1=1,(function(r){r.exports=function(e){function t(o,l,p,v){return new Ld(o,l,p,v)}function n(){}function s(o){var l="https://react.dev/errors/"+o;if(1cl||(o.current=$f[cl],$f[cl]=null,cl--)}function A(o,l){cl++,$f[cl]=o.current,o.current=l}function R(o){return o>>>=0,o===0?32:31-(eh(o)/Jg|0)|0}function w(o){var l=o&42;if(l!==0)return l;switch(o&-o){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return o&261888;case 262144:case 524288:case 1048576:case 2097152:return o&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return o&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return o}}function E(o,l,p){var v=o.pendingLanes;if(v===0)return 0;var T=0,C=o.suspendedLanes,F=o.pingedLanes;o=o.warmLanes;var ee=v&134217727;return ee!==0?(v=ee&~C,v!==0?T=w(v):(F&=ee,F!==0?T=w(F):p||(p=ee&~o,p!==0&&(T=w(p))))):(ee=v&~C,ee!==0?T=w(ee):F!==0?T=w(F):p||(p=v&~o,p!==0&&(T=w(p)))),T===0?0:l!==0&&l!==T&&(l&C)===0&&(C=T&-T,p=l&-l,C>=p||C===32&&(p&4194048)!==0)?l:T}function N(o,l){return(o.pendingLanes&~(o.suspendedLanes&~o.pingedLanes)&l)===0}function D(o,l){switch(o){case 1:case 2:case 4:case 8:case 64:return l+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function U(){var o=ou;return ou<<=1,(ou&62914560)===0&&(ou=4194304),o}function B(o){for(var l=[],p=0;31>p;p++)l.push(o);return l}function z(o,l){o.pendingLanes|=l,l!==268435456&&(o.suspendedLanes=0,o.pingedLanes=0,o.warmLanes=0)}function H(o,l,p,v,T,C){var F=o.pendingLanes;o.pendingLanes=p,o.suspendedLanes=0,o.pingedLanes=0,o.warmLanes=0,o.expiredLanes&=p,o.entangledLanes&=p,o.errorRecoveryDisabledLanes&=p,o.shellSuspendCounter=0;var ee=o.entanglements,we=o.expirationTimes,ke=o.hiddenUpdates;for(p=F&~p;0)":-1T||we[v]!==ke[T]){var it=` +`+we[v].replace(" at new "," at ");return o.displayName&&it.includes("")&&(it=it.replace("",o.displayName)),it}while(1<=v&&0<=T);break}}}finally{_c=!1,Error.prepareStackTrace=p}return(p=o?o.displayName||o.name:"")?pe(p):""}function q(o,l){switch(o.tag){case 26:case 27:case 5:return pe(o.type);case 16:return pe("Lazy");case 13:return o.child!==l&&l!==null?pe("Suspense Fallback"):pe("Suspense");case 19:return pe("SuspenseList");case 0:case 15:return Y(o.type,!1);case 11:return Y(o.type.render,!1);case 1:return Y(o.type,!0);case 31:return pe("Activity");default:return""}}function ne(o){try{var l="",p=null;do l+=q(o,p),p=o,o=o.return;while(o);return l}catch(v){return` +Error generating stack: `+v.message+` +`+v.stack}}function be(o,l){if(typeof o=="object"&&o!==null){var p=yp.get(o);return p!==void 0?p:(l={value:o,source:l,stack:ne(l)},yp.set(o,l),l)}return{value:o,source:l,stack:ne(l)}}function Ne(o,l){Or[rr++]=xc,Or[rr++]=Pn,Pn=o,xc=l}function X(o,l,p){gs[Ya++]=Qi,gs[Ya++]=Is,gs[Ya++]=vs,vs=o;var v=Qi;o=Is;var T=32-Ta(v)-1;v&=~(1<>=F,T-=F,Qi=1<<32-Ta(l)+T|p<xn?(qi=zt,zt=null):qi=zt.sibling;var Tn=gt(_e,zt,Me[xn],$e);if(Tn===null){zt===null&&(zt=qi);break}o&&zt&&Tn.alternate===null&&l(_e,zt),ce=C(Tn,ce,xn),ri===null?Ot=Tn:ri.sibling=Tn,ri=Tn,zt=qi}if(xn===Me.length)return p(_e,zt),dn&&Ne(_e,xn),Ot;if(zt===null){for(;xnxn?(qi=zt,zt=null):qi=zt.sibling;var Es=gt(_e,zt,Tn.value,$e);if(Es===null){zt===null&&(zt=qi);break}o&&zt&&Es.alternate===null&&l(_e,zt),ce=C(Es,ce,xn),ri===null?Ot=Es:ri.sibling=Es,ri=Es,zt=qi}if(Tn.done)return p(_e,zt),dn&&Ne(_e,xn),Ot;if(zt===null){for(;!Tn.done;xn++,Tn=Me.next())Tn=We(_e,Tn.value,$e),Tn!==null&&(ce=C(Tn,ce,xn),ri===null?Ot=Tn:ri.sibling=Tn,ri=Tn);return dn&&Ne(_e,xn),Ot}for(zt=v(zt);!Tn.done;xn++,Tn=Me.next())Tn=qt(zt,_e,xn,Tn.value,$e),Tn!==null&&(o&&Tn.alternate!==null&&zt.delete(Tn.key===null?xn:Tn.key),ce=C(Tn,ce,xn),ri===null?Ot=Tn:ri.sibling=Tn,ri=Tn);return o&&zt.forEach(function(h_){return l(_e,h_)}),dn&&Ne(_e,xn),Ot}function Ro(_e,ce,Me,$e){if(typeof Me=="object"&&Me!==null&&Me.type===il&&Me.key===null&&(Me=Me.props.children),typeof Me=="object"&&Me!==null){switch(Me.$$typeof){case ir:e:{for(var Ot=Me.key;ce!==null;){if(ce.key===Ot){if(Ot=Me.type,Ot===il){if(ce.tag===7){p(_e,ce.sibling),$e=T(ce,Me.props.children),$e.return=_e,_e=$e;break e}}else if(ce.elementType===Ot||typeof Ot=="object"&&Ot!==null&&Ot.$$typeof===ha&&Jt(Ot)===ce.type){p(_e,ce.sibling),$e=T(ce,Me.props),Qr($e,Me),$e.return=_e,_e=$e;break e}p(_e,ce);break}else l(_e,ce);ce=ce.sibling}Me.type===il?($e=hs(Me.props.children,_e.mode,$e,Me.key),$e.return=_e,_e=$e):($e=Nr(Me.type,Me.key,Me.props,null,_e.mode,$e),Qr($e,Me),$e.return=_e,_e=$e)}return F(_e);case nl:e:{for(Ot=Me.key;ce!==null;){if(ce.key===Ot)if(ce.tag===4&&ce.stateNode.containerInfo===Me.containerInfo&&ce.stateNode.implementation===Me.implementation){p(_e,ce.sibling),$e=T(ce,Me.children||[]),$e.return=_e,_e=$e;break e}else{p(_e,ce);break}else l(_e,ce);ce=ce.sibling}$e=Od(Me,_e.mode,$e),$e.return=_e,_e=$e}return F(_e);case ha:return Me=Jt(Me),Ro(_e,ce,Me,$e)}if(mo(Me))return vi(_e,ce,Me,$e);if(_(Me)){if(Ot=_(Me),typeof Ot!="function")throw Error(s(150));return Me=Ot.call(Me),gu(_e,ce,Me,$e)}if(typeof Me.then=="function")return Ro(_e,ce,Ci(Me),$e);if(Me.$$typeof===ds)return Ro(_e,ce,O(_e,Me),$e);Kr(_e,Me)}return typeof Me=="string"&&Me!==""||typeof Me=="number"||typeof Me=="bigint"?(Me=""+Me,ce!==null&&ce.tag===6?(p(_e,ce.sibling),$e=T(ce,Me),$e.return=_e,_e=$e):(p(_e,ce),$e=Ud(Me,_e.mode,$e),$e.return=_e,_e=$e),F(_e)):p(_e,ce)}return function(_e,ce,Me,$e){try{dl=0;var Ot=Ro(_e,ce,Me,$e);return bo=null,Ot}catch(zt){if(zt===Oi||zt===bs)throw zt;var ri=t(29,zt,null,_e.mode);return ri.lanes=$e,ri.return=_e,ri}}}function Jr(){for(var o=ur,l=pl=ur=0;lC?C:8);var F=Ut.T,ee={};Ut.T=ee,vf(o,!1,l,p);try{var we=T(),ke=Ut.S;if(ke!==null&&ke(ee,we),we!==null&&typeof we=="object"&&typeof we.then=="function"){var it=je(we,v);Zu(o,l,it,Yn(o))}else Zu(o,l,v,Yn(o))}catch(We){Zu(o,l,{then:function(){},status:"rejected",reason:We},Yn())}finally{hn(C),F!==null&&ee.types!==null&&(F.types=ee.types),Ut.T=F}}function km(o){var l=o.memoizedState;if(l!==null)return l;l={memoizedState:ol,baseState:ol,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Wn,lastRenderedState:ol},next:null};var p={};return l.next={memoizedState:p,baseState:p,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Wn,lastRenderedState:p},next:null},o.memoizedState=l,o=o.alternate,o!==null&&(o.memoizedState=l),l}function dd(){return G(ll)}function gf(){return ut().memoizedState}function Vm(){return ut().memoizedState}function e_(o){for(var l=o.return;l!==null;){switch(l.tag){case 24:case 3:var p=Yn();o=Va(p);var v=Ha(l,o,p);v!==null&&(ti(v,l,p),$r(v,l,p)),l={cache:Te()},o.payload=l;return}l=l.return}}function t_(o,l,p){var v=Yn();p={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null},yf(o)?Gm(l,p):(p=Go(o,l,p,v),p!==null&&(ti(p,o,v),Xm(p,l,v)))}function Hm(o,l,p){var v=Yn();Zu(o,l,p,v)}function Zu(o,l,p,v){var T={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null};if(yf(o))Gm(l,T);else{var C=o.alternate;if(o.lanes===0&&(C===null||C.lanes===0)&&(C=l.lastRenderedReducer,C!==null))try{var F=l.lastRenderedState,ee=C(F,p);if(T.hasEagerState=!0,T.eagerState=ee,pi(ee,F))return xr(o,l,T,0),rn===null&&Jr(),!1}catch{}if(p=Go(o,l,T,v),p!==null)return ti(p,o,v),Xm(p,l,v),!0}return!1}function vf(o,l,p,v){if(v={lane:2,revertLane:me(),gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},yf(o)){if(l)throw Error(s(479))}else l=Go(o,p,v,2),l!==null&&ti(l,o,2)}function yf(o){var l=o.alternate;return o===Zt||l!==null&&l===Zt}function Gm(o,l){$t=sn=!0;var p=o.pending;p===null?l.next=l:(l.next=p.next,p.next=l),o.pending=l}function Xm(o,l,p){if((p&4194048)!==0){var v=l.lanes;v&=o.pendingLanes,p|=v,l.lanes=p,I(o,p)}}function pd(o,l,p,v){l=o.memoizedState,p=p(v,l),p=p==null?l:Bf({},l,p),o.memoizedState=p,o.lanes===0&&(o.updateQueue.baseState=p)}function _f(o,l,p,v,T,C,F){return o=o.stateNode,typeof o.shouldComponentUpdate=="function"?o.shouldComponentUpdate(v,C,F):l.prototype&&l.prototype.isPureReactComponent?!Ue(p,v)||!Ue(T,C):!0}function Wm(o,l,p,v){o=l.state,typeof l.componentWillReceiveProps=="function"&&l.componentWillReceiveProps(p,v),typeof l.UNSAFE_componentWillReceiveProps=="function"&&l.UNSAFE_componentWillReceiveProps(p,v),l.state!==o&&Mc.enqueueReplaceState(l,l.state,null)}function Yo(o,l){var p=l;if("ref"in l){p={};for(var v in l)v!=="ref"&&(p[v]=l[v])}if(o=o.defaultProps){p===l&&(p=Bf({},p));for(var T in o)p[T]===void 0&&(p[T]=o[T])}return p}function xf(o,l){try{var p=o.onUncaughtError;p(l.value,{componentStack:l.stack})}catch(v){setTimeout(function(){throw v})}}function md(o,l,p){try{var v=o.onCaughtError;v(p.value,{componentStack:p.stack,errorBoundary:l.tag===1?l.stateNode:null})}catch(T){setTimeout(function(){throw T})}}function gd(o,l,p){return p=Va(p),p.tag=3,p.payload={element:null},p.callback=function(){xf(o,l)},p}function qm(o){return o=Va(o),o.tag=3,o}function jm(o,l,p,v){var T=p.type.getDerivedStateFromError;if(typeof T=="function"){var C=v.value;o.payload=function(){return T(C)},o.callback=function(){md(l,p,v)}}var F=p.stateNode;F!==null&&typeof F.componentDidCatch=="function"&&(o.callback=function(){md(l,p,v),typeof T!="function"&&(kr===null?kr=new Set([this]):kr.add(this));var ee=v.stack;this.componentDidCatch(v.value,{componentStack:ee!==null?ee:""})})}function n_(o,l,p,v,T){if(p.flags|=32768,v!==null&&typeof v=="object"&&typeof v.then=="function"){if(l=p.alternate,l!==null&&ot(l,p,T,!0),p=wa.current,p!==null){switch(p.tag){case 31:case 13:return Ca===null?Ql():p.alternate===null&&si===0&&(si=3),p.flags&=-257,p.flags|=65536,p.lanes=T,v===lr?p.flags|=16384:(l=p.updateQueue,l===null?p.updateQueue=new Set([v]):l.add(v),$l(o,v,T)),!1;case 22:return p.flags|=65536,v===lr?p.flags|=16384:(l=p.updateQueue,l===null?(l={transitions:null,markerInstances:null,retryQueue:new Set([v])},p.updateQueue=l):(p=l.retryQueue,p===null?l.retryQueue=new Set([v]):p.add(v)),$l(o,v,T)),!1}throw Error(s(435,p.tag))}return $l(o,v,T),Ql(),!1}if(dn)return l=wa.current,l!==null?((l.flags&65536)===0&&(l.flags|=256),l.flags|=65536,l.lanes=T,v!==oh&&(o=Error(s(422),{cause:v}),He(be(o,p)))):(v!==oh&&(l=Error(s(423),{cause:v}),He(be(l,p))),o=o.current.alternate,o.flags|=65536,T&=-T,o.lanes|=T,v=be(v,p),T=gd(o.stateNode,v,T),Xo(o,T),si!==4&&(si=2)),!1;var C=Error(s(520),{cause:v});if(C=be(C,p),Tc===null?Tc=[C]:Tc.push(C),si!==4&&(si=2),l===null)return!0;v=be(v,p),p=l;do{switch(p.tag){case 3:return p.flags|=65536,o=T&-T,p.lanes|=o,o=gd(p.stateNode,v,o),Xo(p,o),!1;case 1:if(l=p.type,C=p.stateNode,(p.flags&128)===0&&(typeof l.getDerivedStateFromError=="function"||C!==null&&typeof C.componentDidCatch=="function"&&(kr===null||!kr.has(C))))return p.flags|=65536,T&=-T,p.lanes|=T,T=qm(T),jm(T,o,p,v),Xo(p,T),!1}p=p.return}while(p!==null);return!1}function Zi(o,l,p,v){l.child=o===null?xp(l,null,p,v):Ji(l,o.child,p,v)}function Ym(o,l,p,v,T){p=p.render;var C=l.ref;if("ref"in v){var F={};for(var ee in v)ee!=="ref"&&(F[ee]=v[ee])}else F=v;return Qe(l),v=xt(o,l,p,F,C,T),ee=Mn(),o!==null&&!qn?(Bn(o,l,T),qs(o,l,T)):(dn&&ee&&oe(l),l.flags|=1,Zi(o,l,v,T),l.child)}function Zm(o,l,p,v,T){if(o===null){var C=p.type;return typeof C=="function"&&!$o(C)&&C.defaultProps===void 0&&p.compare===null?(l.tag=15,l.type=C,Qm(o,l,C,v,T)):(o=Nr(p.type,null,v,l,l.mode,T),o.ref=l.ref,o.return=l,l.child=o)}if(C=o.child,!Ku(o,T)){var F=C.memoizedProps;if(p=p.compare,p=p!==null?p:Ue,p(F,v)&&o.ref===l.ref)return qs(o,l,T)}return l.flags|=1,o=qa(C,v),o.ref=l.ref,o.return=l,l.child=o}function Qm(o,l,p,v,T){if(o!==null){var C=o.memoizedProps;if(Ue(C,v)&&o.ref===l.ref)if(qn=!1,l.pendingProps=v=C,Ku(o,T))(o.flags&131072)!==0&&(qn=!0);else return l.lanes=o.lanes,qs(o,l,T)}return Sf(o,l,p,v,T)}function Km(o,l,p,v){var T=v.children,C=o!==null?o.memoizedState:null;if(o===null&&l.stateNode===null&&(l.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),v.mode==="hidden"){if((l.flags&128)!==0){if(C=C!==null?C.baseLanes|p:p,o!==null){for(v=l.child=o.child,T=0;v!==null;)T=T|v.lanes|v.childLanes,v=v.sibling;v=T&~C}else v=0,l.child=null;return kl(o,l,C,p,v)}if((p&536870912)!==0)l.memoizedState={baseLanes:0,cachePool:null},o!==null&&at(l,C!==null?C.cachePool:null),C!==null?eo(l,C):Xs(),ye(l);else return v=l.lanes=536870912,kl(o,l,C!==null?C.baseLanes|p:p,p,v)}else C!==null?(at(l,C.cachePool),eo(l,C),ue(),l.memoizedState=null):(o!==null&&at(l,null),Xs(),ue());return Zi(o,l,T,p),l.child}function Zo(o,l){return o!==null&&o.tag===22||l.stateNode!==null||(l.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),l.sibling}function kl(o,l,p,v,T){var C=Ge();return C=C===null?null:{parent:hi?Kn._currentValue:Kn._currentValue2,pool:C},l.memoizedState={baseLanes:p,cachePool:C},o!==null&&at(l,null),Xs(),ye(l),o!==null&&ot(o,l,v,!0),l.childLanes=T,null}function bf(o,l){return l=io({mode:l.mode,children:l.children},o.mode),l.ref=o.ref,o.child=l,l.return=o,l}function vd(o,l,p){return Ji(l,o.child,null,p),o=bf(l,l.pendingProps),o.flags|=2,Je(l),l.memoizedState=null,o}function Jm(o,l,p){var v=l.pendingProps,T=(l.flags&128)!==0;if(l.flags&=-129,o===null){if(dn){if(v.mode==="hidden")return o=bf(l,v),l.lanes=536870912,Zo(null,o);if(Se(l),(o=Qn)?(o=ap(o,pa),o!==null&&(l.memoizedState={dehydrated:o,treeContext:vs!==null?{id:Qi,overflow:Is}:null,retryLane:536870912,hydrationErrors:null},p=Id(o),p.return=l,l.child=p,Ui=l,Qn=null)):o=null,o===null)throw st(l);return l.lanes=536870912,null}return bf(l,v)}var C=o.memoizedState;if(C!==null){var F=C.dehydrated;if(Se(l),T)if(l.flags&256)l.flags&=-257,l=vd(o,l,p);else if(l.memoizedState!==null)l.child=o.child,l.flags|=128,l=null;else throw Error(s(558));else if(qn||ot(o,l,p,!1),T=(p&o.childLanes)!==0,qn||T){if(v=rn,v!==null&&(F=P(v,p),F!==0&&F!==C.retryLane))throw C.retryLane=F,na(o,F),ti(v,o,F),ga;Ql(),l=vd(o,l,p)}else o=C.treeContext,Zn&&(Qn=Og(F),Ui=l,dn=!0,or=null,pa=!1,o!==null&&Fe(l,o)),l=bf(l,v),l.flags|=4096;return l}return o=qa(o.child,{mode:v.mode,children:v.children}),o.ref=l.ref,l.child=o,o.return=l,o}function Qu(o,l){var p=l.ref;if(p===null)o!==null&&o.ref!==null&&(l.flags|=4194816);else{if(typeof p!="function"&&typeof p!="object")throw Error(s(284));(o===null||o.ref!==p)&&(l.flags|=4194816)}}function Sf(o,l,p,v,T){return Qe(l),p=xt(o,l,p,v,void 0,T),v=Mn(),o!==null&&!qn?(Bn(o,l,T),qs(o,l,T)):(dn&&v&&oe(l),l.flags|=1,Zi(o,l,p,T),l.child)}function yd(o,l,p,v,T,C){return Qe(l),l.updateQueue=null,p=St(l,v,p,T),Lt(o),v=Mn(),o!==null&&!qn?(Bn(o,l,C),qs(o,l,C)):(dn&&v&&oe(l),l.flags|=1,Zi(o,l,p,C),l.child)}function Qo(o,l,p,v,T){if(Qe(l),l.stateNode===null){var C=ar,F=p.contextType;typeof F=="object"&&F!==null&&(C=G(F)),C=new p(v,C),l.memoizedState=C.state!==null&&C.state!==void 0?C.state:null,C.updater=Mc,l.stateNode=C,C._reactInternals=l,C=l.stateNode,C.props=v,C.state=l.memoizedState,C.refs={},Ri(l),F=p.contextType,C.context=typeof F=="object"&&F!==null?G(F):ar,C.state=l.memoizedState,F=p.getDerivedStateFromProps,typeof F=="function"&&(pd(l,p,F,v),C.state=l.memoizedState),typeof p.getDerivedStateFromProps=="function"||typeof C.getSnapshotBeforeUpdate=="function"||typeof C.UNSAFE_componentWillMount!="function"&&typeof C.componentWillMount!="function"||(F=C.state,typeof C.componentWillMount=="function"&&C.componentWillMount(),typeof C.UNSAFE_componentWillMount=="function"&&C.UNSAFE_componentWillMount(),F!==C.state&&Mc.enqueueReplaceState(C,C.state,null),br(l,v,C,T),Ds(),C.state=l.memoizedState),typeof C.componentDidMount=="function"&&(l.flags|=4194308),v=!0}else if(o===null){C=l.stateNode;var ee=l.memoizedProps,we=Yo(p,ee);C.props=we;var ke=C.context,it=p.contextType;F=ar,typeof it=="object"&&it!==null&&(F=G(it));var We=p.getDerivedStateFromProps;it=typeof We=="function"||typeof C.getSnapshotBeforeUpdate=="function",ee=l.pendingProps!==ee,it||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(ee||ke!==F)&&Wm(l,C,v,F),Za=!1;var gt=l.memoizedState;C.state=gt,br(l,v,C,T),Ds(),ke=l.memoizedState,ee||gt!==ke||Za?(typeof We=="function"&&(pd(l,p,We,v),ke=l.memoizedState),(we=Za||_f(l,p,we,v,gt,ke,F))?(it||typeof C.UNSAFE_componentWillMount!="function"&&typeof C.componentWillMount!="function"||(typeof C.componentWillMount=="function"&&C.componentWillMount(),typeof C.UNSAFE_componentWillMount=="function"&&C.UNSAFE_componentWillMount()),typeof C.componentDidMount=="function"&&(l.flags|=4194308)):(typeof C.componentDidMount=="function"&&(l.flags|=4194308),l.memoizedProps=v,l.memoizedState=ke),C.props=v,C.state=ke,C.context=F,v=we):(typeof C.componentDidMount=="function"&&(l.flags|=4194308),v=!1)}else{C=l.stateNode,ka(o,l),F=l.memoizedProps,it=Yo(p,F),C.props=it,We=l.pendingProps,gt=C.context,ke=p.contextType,we=ar,typeof ke=="object"&&ke!==null&&(we=G(ke)),ee=p.getDerivedStateFromProps,(ke=typeof ee=="function"||typeof C.getSnapshotBeforeUpdate=="function")||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(F!==We||gt!==we)&&Wm(l,C,v,we),Za=!1,gt=l.memoizedState,C.state=gt,br(l,v,C,T),Ds();var qt=l.memoizedState;F!==We||gt!==qt||Za||o!==null&&o.dependencies!==null&&Tt(o.dependencies)?(typeof ee=="function"&&(pd(l,p,ee,v),qt=l.memoizedState),(it=Za||_f(l,p,it,v,gt,qt,we)||o!==null&&o.dependencies!==null&&Tt(o.dependencies))?(ke||typeof C.UNSAFE_componentWillUpdate!="function"&&typeof C.componentWillUpdate!="function"||(typeof C.componentWillUpdate=="function"&&C.componentWillUpdate(v,qt,we),typeof C.UNSAFE_componentWillUpdate=="function"&&C.UNSAFE_componentWillUpdate(v,qt,we)),typeof C.componentDidUpdate=="function"&&(l.flags|=4),typeof C.getSnapshotBeforeUpdate=="function"&&(l.flags|=1024)):(typeof C.componentDidUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=1024),l.memoizedProps=v,l.memoizedState=qt),C.props=v,C.state=qt,C.context=we,v=it):(typeof C.componentDidUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=1024),v=!1)}return C=v,Qu(o,l),v=(l.flags&128)!==0,C||v?(C=l.stateNode,p=v&&typeof p.getDerivedStateFromError!="function"?null:C.render(),l.flags|=1,o!==null&&v?(l.child=Ji(l,o.child,null,T),l.child=Ji(l,null,p,T)):Zi(o,l,p,T),l.memoizedState=C.state,o=l.child):o=qs(o,l,T),o}function $m(o,l,p,v){return Nt(),l.flags|=256,Zi(o,l,p,v),l.child}function _d(o){return{baseLanes:o,cachePool:Xe()}}function xd(o,l,p){return o=o!==null?o.childLanes&~p:0,l&&(o|=va),o}function bd(o,l,p){var v=l.pendingProps,T=!1,C=(l.flags&128)!==0,F;if((F=C)||(F=o!==null&&o.memoizedState===null?!1:(ui.current&2)!==0),F&&(T=!0,l.flags&=-129),F=(l.flags&32)!==0,l.flags&=-33,o===null){if(dn){if(T?re(l):ue(),(o=Qn)?(o=Fg(o,pa),o!==null&&(l.memoizedState={dehydrated:o,treeContext:vs!==null?{id:Qi,overflow:Is}:null,retryLane:536870912,hydrationErrors:null},p=Id(o),p.return=l,l.child=p,Ui=l,Qn=null)):o=null,o===null)throw st(l);return qf(o)?l.lanes=32:l.lanes=536870912,null}var ee=v.children;return v=v.fallback,T?(ue(),T=l.mode,ee=io({mode:"hidden",children:ee},T),v=hs(v,T,p,null),ee.return=l,v.return=l,ee.sibling=v,l.child=ee,v=l.child,v.memoizedState=_d(p),v.childLanes=xd(o,F,p),l.memoizedState=gl,Zo(null,v)):(re(l),Mf(l,ee))}var we=o.memoizedState;if(we!==null&&(ee=we.dehydrated,ee!==null)){if(C)l.flags&256?(re(l),l.flags&=-257,l=Ko(o,l,p)):l.memoizedState!==null?(ue(),l.child=o.child,l.flags|=128,l=null):(ue(),ee=v.fallback,T=l.mode,v=io({mode:"visible",children:v.children},T),ee=hs(ee,T,p,null),ee.flags|=2,v.return=l,ee.return=l,v.sibling=ee,l.child=v,Ji(l,o.child,null,p),v=l.child,v.memoizedState=_d(p),v.childLanes=xd(o,F,p),l.memoizedState=gl,l=Zo(null,v));else if(re(l),qf(ee))F=jf(ee).digest,v=Error(s(419)),v.stack="",v.digest=F,He({value:v,source:null,stack:null}),l=Ko(o,l,p);else if(qn||ot(o,l,p,!1),F=(p&o.childLanes)!==0,qn||F){if(F=rn,F!==null&&(v=P(F,p),v!==0&&v!==we.retryLane))throw we.retryLane=v,na(o,v),ti(F,o,v),ga;vo(ee)||Ql(),l=Ko(o,l,p)}else vo(ee)?(l.flags|=192,l.child=o.child,l=null):(o=we.treeContext,Zn&&(Qn=Pg(ee),Ui=l,dn=!0,or=null,pa=!1,o!==null&&Fe(l,o)),l=Mf(l,v.children),l.flags|=4096);return l}return T?(ue(),ee=v.fallback,T=l.mode,we=o.child,C=we.sibling,v=qa(we,{mode:"hidden",children:v.children}),v.subtreeFlags=we.subtreeFlags&65011712,C!==null?ee=qa(C,ee):(ee=hs(ee,T,p,null),ee.flags|=2),ee.return=l,v.return=l,v.sibling=ee,l.child=v,Zo(null,v),v=l.child,ee=o.child.memoizedState,ee===null?ee=_d(p):(T=ee.cachePool,T!==null?(we=hi?Kn._currentValue:Kn._currentValue2,T=T.parent!==we?{parent:we,pool:we}:T):T=Xe(),ee={baseLanes:ee.baseLanes|p,cachePool:T}),v.memoizedState=ee,v.childLanes=xd(o,F,p),l.memoizedState=gl,Zo(o.child,v)):(re(l),p=o.child,o=p.sibling,p=qa(p,{mode:"visible",children:v.children}),p.return=l,p.sibling=null,o!==null&&(F=l.deletions,F===null?(l.deletions=[o],l.flags|=16):F.push(o)),l.child=p,l.memoizedState=null,p)}function Mf(o,l){return l=io({mode:"visible",children:l},o.mode),l.return=o,o.child=l}function io(o,l){return o=t(22,o,null,l),o.lanes=0,o}function Ko(o,l,p){return Ji(l,o.child,null,p),o=Mf(l,l.pendingProps.children),o.flags|=2,l.memoizedState=null,o}function eg(o,l,p){o.lanes|=l;var v=o.alternate;v!==null&&(v.lanes|=l),Q(o.return,l,p)}function Vl(o,l,p,v,T,C){var F=o.memoizedState;F===null?o.memoizedState={isBackwards:l,rendering:null,renderingStartTime:0,last:v,tail:p,tailMode:T,treeForkCount:C}:(F.isBackwards=l,F.rendering=null,F.renderingStartTime=0,F.last=v,F.tail=p,F.tailMode=T,F.treeForkCount=C)}function Sd(o,l,p){var v=l.pendingProps,T=v.revealOrder,C=v.tail;v=v.children;var F=ui.current,ee=(F&2)!==0;if(ee?(F=F&1|2,l.flags|=128):F&=1,A(ui,F),Zi(o,l,v,p),v=dn?xc:0,!ee&&o!==null&&(o.flags&128)!==0)e:for(o=l.child;o!==null;){if(o.tag===13)o.memoizedState!==null&&eg(o,p,l);else if(o.tag===19)eg(o,p,l);else if(o.child!==null){o.child.return=o,o=o.child;continue}if(o===l)break e;for(;o.sibling===null;){if(o.return===null||o.return===l)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}switch(T){case"forwards":for(p=l.child,T=null;p!==null;)o=p.alternate,o!==null&&mt(o)===null&&(T=p),p=p.sibling;p=T,p===null?(T=l.child,l.child=null):(T=p.sibling,p.sibling=null),Vl(l,!1,T,p,C,v);break;case"backwards":case"unstable_legacy-backwards":for(p=null,T=l.child,l.child=null;T!==null;){if(o=T.alternate,o!==null&&mt(o)===null){l.child=T;break}o=T.sibling,T.sibling=p,p=T,T=o}Vl(l,!0,p,null,C,v);break;case"together":Vl(l,!1,null,null,void 0,v);break;default:l.memoizedState=null}return l.child}function qs(o,l,p){if(o!==null&&(l.dependencies=o.dependencies),Fr|=l.lanes,(p&l.childLanes)===0)if(o!==null){if(ot(o,l,p,!1),(p&l.childLanes)===0)return null}else return null;if(o!==null&&l.child!==o.child)throw Error(s(153));if(l.child!==null){for(o=l.child,p=qa(o,o.pendingProps),l.child=p,p.return=l;o.sibling!==null;)o=o.sibling,p=p.sibling=qa(o,o.pendingProps),p.return=l;p.sibling=null}return l.child}function Ku(o,l){return(o.lanes&l)!==0?!0:(o=o.dependencies,!!(o!==null&&Tt(o)))}function Md(o,l,p){switch(l.tag){case 3:lt(l,l.stateNode.containerInfo),Oe(l,Kn,o.memoizedState.cache),Nt();break;case 27:case 5:Re(l);break;case 4:lt(l,l.stateNode.containerInfo);break;case 10:Oe(l,l.type,l.memoizedProps.value);break;case 31:if(l.memoizedState!==null)return l.flags|=128,Se(l),null;break;case 13:var v=l.memoizedState;if(v!==null)return v.dehydrated!==null?(re(l),l.flags|=128,null):(p&l.child.childLanes)!==0?bd(o,l,p):(re(l),o=qs(o,l,p),o!==null?o.sibling:null);re(l);break;case 19:var T=(o.flags&128)!==0;if(v=(p&l.childLanes)!==0,v||(ot(o,l,p,!1),v=(p&l.childLanes)!==0),T){if(v)return Sd(o,l,p);l.flags|=128}if(T=l.memoizedState,T!==null&&(T.rendering=null,T.tail=null,T.lastEffect=null),A(ui,ui.current),v)break;return null;case 22:return l.lanes=0,Km(o,l,p,l.pendingProps);case 24:Oe(l,Kn,o.memoizedState.cache)}return qs(o,l,p)}function Ed(o,l,p){if(o!==null)if(o.memoizedProps!==l.pendingProps)qn=!0;else{if(!Ku(o,p)&&(l.flags&128)===0)return qn=!1,Md(o,l,p);qn=(o.flags&131072)!==0}else qn=!1,dn&&(l.flags&1048576)!==0&&X(l,xc,l.index);switch(l.lanes=0,l.tag){case 16:e:{var v=l.pendingProps;if(o=Jt(l.elementType),l.type=o,typeof o=="function")$o(o)?(v=Yo(o,v),l.tag=1,l=Qo(null,l,o,v,p)):(l.tag=0,l=Sf(null,l,o,v,p));else{if(o!=null){var T=o.$$typeof;if(T===eu){l.tag=11,l=Ym(null,l,o,v,p);break e}else if(T===kf){l.tag=14,l=Zm(null,l,o,v,p);break e}}throw l=x(o)||o,Error(s(306,l,""))}}return l;case 0:return Sf(o,l,l.type,l.pendingProps,p);case 1:return v=l.type,T=Yo(v,l.pendingProps),Qo(o,l,v,T,p);case 3:e:{if(lt(l,l.stateNode.containerInfo),o===null)throw Error(s(387));var C=l.pendingProps;T=l.memoizedState,v=T.element,ka(o,l),br(l,C,null,p);var F=l.memoizedState;if(C=F.cache,Oe(l,Kn,C),C!==T.cache&&Et(l,[Kn],p,!0),Ds(),C=F.element,Zn&&T.isDehydrated)if(T={element:C,isDehydrated:!1,cache:F.cache},l.updateQueue.baseState=T,l.memoizedState=T,l.flags&256){l=$m(o,l,C,p);break e}else if(C!==v){v=be(Error(s(424)),l),He(v),l=$m(o,l,C,p);break e}else for(Zn&&(Qn=Ig(l.stateNode.containerInfo),Ui=l,dn=!0,or=null,pa=!0),p=xp(l,null,C,p),l.child=p;p;)p.flags=p.flags&-3|4096,p=p.sibling;else{if(Nt(),C===v){l=qs(o,l,p);break e}Zi(o,l,C,p)}l=l.child}return l;case 26:if(ms)return Qu(o,l),o===null?(p=up(l.type,null,l.pendingProps,null))?l.memoizedState=p:dn||(l.stateNode=Kf(l.type,l.pendingProps,Ki.current,l)):l.memoizedState=up(l.type,o.memoizedProps,l.pendingProps,o.memoizedState),null;case 27:if(Li)return Re(l),o===null&&Li&&dn&&(v=l.stateNode=Jf(l.type,l.pendingProps,Ki.current,Xi.current,!1),Ui=l,pa=!0,Qn=ip(l.type,v,Qn)),Zi(o,l,l.pendingProps.children,p),Qu(o,l),o===null&&(l.flags|=4194304),l.child;case 5:return o===null&&dn&&(Yg(l.type,l.pendingProps,Xi.current),(T=v=Qn)&&(v=zg(v,l.type,l.pendingProps,pa),v!==null?(l.stateNode=v,Ui=l,Qn=Ug(v),pa=!1,T=!0):T=!1),T||st(l)),Re(l),T=l.type,C=l.pendingProps,F=o!==null?o.memoizedProps:null,v=C.children,da(T,C)?v=null:F!==null&&da(T,F)&&(l.flags|=32),l.memoizedState!==null&&(T=xt(o,l,Pt,null,null,p),hi?ll._currentValue=T:ll._currentValue2=T),Qu(o,l),Zi(o,l,v,p),l.child;case 6:return o===null&&dn&&(lp(l.pendingProps,Xi.current),(o=p=Qn)&&(p=Bg(p,l.pendingProps,pa),p!==null?(l.stateNode=p,Ui=l,Qn=null,o=!0):o=!1),o||st(l)),null;case 13:return bd(o,l,p);case 4:return lt(l,l.stateNode.containerInfo),v=l.pendingProps,o===null?l.child=Ji(l,null,v,p):Zi(o,l,v,p),l.child;case 11:return Ym(o,l,l.type,l.pendingProps,p);case 7:return Zi(o,l,l.pendingProps,p),l.child;case 8:return Zi(o,l,l.pendingProps.children,p),l.child;case 12:return Zi(o,l,l.pendingProps.children,p),l.child;case 10:return v=l.pendingProps,Oe(l,l.type,v.value),Zi(o,l,v.children,p),l.child;case 9:return T=l.type._context,v=l.pendingProps.children,Qe(l),T=G(T),v=v(T),l.flags|=1,Zi(o,l,v,p),l.child;case 14:return Zm(o,l,l.type,l.pendingProps,p);case 15:return Qm(o,l,l.type,l.pendingProps,p);case 19:return Sd(o,l,p);case 31:return Jm(o,l,p);case 22:return Km(o,l,p,l.pendingProps);case 24:return Qe(l),v=G(Kn),o===null?(T=Ge(),T===null&&(T=rn,C=Te(),T.pooledCache=C,C.refCount++,C!==null&&(T.pooledCacheLanes|=p),T=C),l.memoizedState={parent:v,cache:T},Ri(l),Oe(l,Kn,T)):((o.lanes&p)!==0&&(ka(o,l),br(l,null,null,p),Ds()),T=o.memoizedState,C=l.memoizedState,T.parent!==v?(T={parent:v,cache:v},l.memoizedState=T,l.lanes===0&&(l.memoizedState=l.updateQueue.baseState=T),Oe(l,Kn,v)):(v=C.cache,Oe(l,Kn,v),v!==T.cache&&Et(l,[Kn],p,!0))),Zi(o,l,l.pendingProps.children,p),l.child;case 29:throw l.pendingProps}throw Error(s(156,l.tag))}function os(o){o.flags|=4}function Ju(o){ja&&(o.flags|=8)}function tg(o,l){if(o!==null&&o.child===l.child)return!1;if((l.flags&16)!==0)return!0;for(o=l.child;o!==null;){if((o.flags&8218)!==0||(o.subtreeFlags&8218)!==0)return!0;o=o.sibling}return!1}function Td(o,l,p,v){if(gn)for(p=l.child;p!==null;){if(p.tag===5||p.tag===6)hc(o,p.stateNode);else if(!(p.tag===4||Li&&p.tag===27)&&p.child!==null){p.child.return=p,p=p.child;continue}if(p===l)break;for(;p.sibling===null;){if(p.return===null||p.return===l)return;p=p.return}p.sibling.return=p.return,p=p.sibling}else if(ja)for(var T=l.child;T!==null;){if(T.tag===5){var C=T.stateNode;p&&v&&(C=Rg(C,T.type,T.memoizedProps)),hc(o,C)}else if(T.tag===6)C=T.stateNode,p&&v&&(C=tp(C,T.memoizedProps)),hc(o,C);else if(T.tag!==4){if(T.tag===22&&T.memoizedState!==null)C=T.child,C!==null&&(C.return=T),Td(o,T,!0,!0);else if(T.child!==null){T.child.return=T,T=T.child;continue}}if(T===l)break;for(;T.sibling===null;){if(T.return===null||T.return===l)return;T=T.return}T.sibling.return=T.return,T=T.sibling}}function ng(o,l,p,v){var T=!1;if(ja)for(var C=l.child;C!==null;){if(C.tag===5){var F=C.stateNode;p&&v&&(F=Rg(F,C.type,C.memoizedProps)),$d(o,F)}else if(C.tag===6)F=C.stateNode,p&&v&&(F=tp(F,C.memoizedProps)),$d(o,F);else if(C.tag!==4){if(C.tag===22&&C.memoizedState!==null)T=C.child,T!==null&&(T.return=C),ng(o,C,!0,!0),T=!0;else if(C.child!==null){C.child.return=C,C=C.child;continue}}if(C===l)break;for(;C.sibling===null;){if(C.return===null||C.return===l)return T;C=C.return}C.sibling.return=C.return,C=C.sibling}return T}function ig(o,l){if(ja&&tg(o,l)){o=l.stateNode;var p=o.containerInfo,v=Jd();ng(v,l,!1,!1),o.pendingChildren=v,os(l),Cg(p,v)}}function Ad(o,l,p,v){if(gn)o.memoizedProps!==v&&os(l);else if(ja){var T=o.stateNode,C=o.memoizedProps;if((o=tg(o,l))||C!==v){var F=Xi.current;C=wg(T,p,C,v,!o,null),C===T?l.stateNode=T:(Ju(l),Ma(C,p,v,F)&&os(l),l.stateNode=C,o&&Td(C,l,!1,!1))}else l.stateNode=T}}function ca(o,l,p,v,T){if((o.mode&32)!==0&&(p===null?dc(l,v):su(l,p,v))){if(o.flags|=16777216,(T&335544128)===T||Vd(l,v))if(ni(o.stateNode,l,v))o.flags|=8192;else if(mn())o.flags|=8192;else throw ma=lr,uh}else o.flags&=-16777217}function Hl(o,l){if(dp(l)){if(o.flags|=16777216,!pp(l))if(mn())o.flags|=8192;else throw ma=lr,uh}else o.flags&=-16777217}function $u(o,l){l!==null&&(o.flags|=4),o.flags&16384&&(l=o.tag!==22?U():536870912,o.lanes|=l,pu|=l)}function Gl(o,l){if(!dn)switch(o.tailMode){case"hidden":l=o.tail;for(var p=null;l!==null;)l.alternate!==null&&(p=l),l=l.sibling;p===null?o.tail=null:p.sibling=null;break;case"collapsed":p=o.tail;for(var v=null;p!==null;)p.alternate!==null&&(v=p),p=p.sibling;v===null?l||o.tail===null?o.tail=null:o.tail.sibling=null:v.sibling=null}}function Fn(o){var l=o.alternate!==null&&o.alternate.child===o.child,p=0,v=0;if(l)for(var T=o.child;T!==null;)p|=T.lanes|T.childLanes,v|=T.subtreeFlags&65011712,v|=T.flags&65011712,T.return=o,T=T.sibling;else for(T=o.child;T!==null;)p|=T.lanes|T.childLanes,v|=T.subtreeFlags,v|=T.flags,T.return=o,T=T.sibling;return o.subtreeFlags|=v,o.childLanes=p,l}function ag(o,l,p){var v=l.pendingProps;switch(Ae(l),l.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Fn(l),null;case 1:return Fn(l),null;case 3:return p=l.stateNode,v=null,o!==null&&(v=o.memoizedState.cache),l.memoizedState.cache!==v&&(l.flags|=2048),nt(Kn),de(),p.pendingContext&&(p.context=p.pendingContext,p.pendingContext=null),(o===null||o.child===null)&&(tn(l)?os(l):o===null||o.memoizedState.isDehydrated&&(l.flags&256)===0||(l.flags|=1024,Le())),ig(o,l),Fn(l),null;case 26:if(ms){var T=l.type,C=l.memoizedState;return o===null?(os(l),C!==null?(Fn(l),Hl(l,C)):(Fn(l),ca(l,T,null,v,p))):C?C!==o.memoizedState?(os(l),Fn(l),Hl(l,C)):(Fn(l),l.flags&=-16777217):(C=o.memoizedProps,gn?C!==v&&os(l):Ad(o,l,T,v),Fn(l),ca(l,T,C,v,p)),null}case 27:if(Li){if(tt(l),p=Ki.current,T=l.type,o!==null&&l.stateNode!=null)gn?o.memoizedProps!==v&&os(l):Ad(o,l,T,v);else{if(!v){if(l.stateNode===null)throw Error(s(166));return Fn(l),null}o=Xi.current,tn(l)?ht(l,o):(o=Jf(T,v,p,o,!0),l.stateNode=o,os(l))}return Fn(l),null}case 5:if(tt(l),T=l.type,o!==null&&l.stateNode!=null)Ad(o,l,T,v);else{if(!v){if(l.stateNode===null)throw Error(s(166));return Fn(l),null}if(C=Xi.current,tn(l))ht(l,C),Wg(l.stateNode,T,v,C)&&(l.flags|=64);else{var F=Fd(T,v,Ki.current,C,l);Ju(l),Td(F,l,!1,!1),l.stateNode=F,Ma(F,T,v,C)&&os(l)}}return Fn(l),ca(l,l.type,o===null?null:o.memoizedProps,l.pendingProps,p),null;case 6:if(o&&l.stateNode!=null)p=o.memoizedProps,gn?p!==v&&os(l):ja&&(p!==v?(o=Ki.current,p=Xi.current,Ju(l),l.stateNode=Ur(v,o,p,l)):l.stateNode=o.stateNode);else{if(typeof v!="string"&&l.stateNode===null)throw Error(s(166));if(o=Ki.current,p=Xi.current,tn(l)){if(!Zn)throw Error(s(176));if(o=l.stateNode,p=l.memoizedProps,v=null,T=Ui,T!==null)switch(T.tag){case 27:case 5:v=T.memoizedProps}o_(o,p,l,v)||st(l,!0)}else Ju(l),l.stateNode=Ur(v,o,p,l)}return Fn(l),null;case 31:if(p=l.memoizedState,o===null||o.memoizedState!==null){if(v=tn(l),p!==null){if(o===null){if(!v)throw Error(s(318));if(!Zn)throw Error(s(556));if(o=l.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(s(557));sp(o,l)}else Nt(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;Fn(l),o=!1}else p=Le(),o!==null&&o.memoizedState!==null&&(o.memoizedState.hydrationErrors=p),o=!0;if(!o)return l.flags&256?(Je(l),l):(Je(l),null);if((l.flags&128)!==0)throw Error(s(558))}return Fn(l),null;case 13:if(v=l.memoizedState,o===null||o.memoizedState!==null&&o.memoizedState.dehydrated!==null){if(T=tn(l),v!==null&&v.dehydrated!==null){if(o===null){if(!T)throw Error(s(318));if(!Zn)throw Error(s(344));if(T=l.memoizedState,T=T!==null?T.dehydrated:null,!T)throw Error(s(317));Vg(T,l)}else Nt(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;Fn(l),T=!1}else T=Le(),o!==null&&o.memoizedState!==null&&(o.memoizedState.hydrationErrors=T),T=!0;if(!T)return l.flags&256?(Je(l),l):(Je(l),null)}return Je(l),(l.flags&128)!==0?(l.lanes=p,l):(p=v!==null,o=o!==null&&o.memoizedState!==null,p&&(v=l.child,T=null,v.alternate!==null&&v.alternate.memoizedState!==null&&v.alternate.memoizedState.cachePool!==null&&(T=v.alternate.memoizedState.cachePool.pool),C=null,v.memoizedState!==null&&v.memoizedState.cachePool!==null&&(C=v.memoizedState.cachePool.pool),C!==T&&(v.flags|=2048)),p!==o&&p&&(l.child.flags|=8192),$u(l,l.updateQueue),Fn(l),null);case 4:return de(),ig(o,l),o===null&&On(l.stateNode.containerInfo),Fn(l),null;case 10:return nt(l.type),Fn(l),null;case 19:if(M(ui),v=l.memoizedState,v===null)return Fn(l),null;if(T=(l.flags&128)!==0,C=v.rendering,C===null)if(T)Gl(v,!1);else{if(si!==0||o!==null&&(o.flags&128)!==0)for(o=l.child;o!==null;){if(C=mt(o),C!==null){for(l.flags|=128,Gl(v,!1),o=C.updateQueue,l.updateQueue=o,$u(l,o),l.subtreeFlags=0,o=p,p=l.child;p!==null;)Of(p,o),p=p.sibling;return A(ui,ui.current&1|2),dn&&Ne(l,v.treeForkCount),l.child}o=o.sibling}v.tail!==null&&aa()>Co&&(l.flags|=128,T=!0,Gl(v,!1),l.lanes=4194304)}else{if(!T)if(o=mt(C),o!==null){if(l.flags|=128,T=!0,o=o.updateQueue,l.updateQueue=o,$u(l,o),Gl(v,!0),v.tail===null&&v.tailMode==="hidden"&&!C.alternate&&!dn)return Fn(l),null}else 2*aa()-v.renderingStartTime>Co&&p!==536870912&&(l.flags|=128,T=!0,Gl(v,!1),l.lanes=4194304);v.isBackwards?(C.sibling=l.child,l.child=C):(o=v.last,o!==null?o.sibling=C:l.child=C,v.last=C)}return v.tail!==null?(o=v.tail,v.rendering=o,v.tail=o.sibling,v.renderingStartTime=aa(),o.sibling=null,p=ui.current,A(ui,T?p&1|2:p&1),dn&&Ne(l,v.treeForkCount),o):(Fn(l),null);case 22:case 23:return Je(l),k(),v=l.memoizedState!==null,o!==null?o.memoizedState!==null!==v&&(l.flags|=8192):v&&(l.flags|=8192),v?(p&536870912)!==0&&(l.flags&128)===0&&(Fn(l),l.subtreeFlags&6&&(l.flags|=8192)):Fn(l),p=l.updateQueue,p!==null&&$u(l,p.retryQueue),p=null,o!==null&&o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(p=o.memoizedState.cachePool.pool),v=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(v=l.memoizedState.cachePool.pool),v!==p&&(l.flags|=2048),o!==null&&M(xo),null;case 24:return p=null,o!==null&&(p=o.memoizedState.cache),l.memoizedState.cache!==p&&(l.flags|=2048),nt(Kn),Fn(l),null;case 25:return null;case 30:return null}throw Error(s(156,l.tag))}function wd(o,l){switch(Ae(l),l.tag){case 1:return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 3:return nt(Kn),de(),o=l.flags,(o&65536)!==0&&(o&128)===0?(l.flags=o&-65537|128,l):null;case 26:case 27:case 5:return tt(l),null;case 31:if(l.memoizedState!==null){if(Je(l),l.alternate===null)throw Error(s(340));Nt()}return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 13:if(Je(l),o=l.memoizedState,o!==null&&o.dehydrated!==null){if(l.alternate===null)throw Error(s(340));Nt()}return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 19:return M(ui),null;case 4:return de(),null;case 10:return nt(l.type),null;case 22:case 23:return Je(l),k(),o!==null&&M(xo),o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 24:return nt(Kn),null;case 25:return null;default:return null}}function sg(o,l){switch(Ae(l),l.tag){case 3:nt(Kn),de();break;case 26:case 27:case 5:tt(l);break;case 4:de();break;case 31:l.memoizedState!==null&&Je(l);break;case 13:Je(l);break;case 19:M(ui);break;case 10:nt(l.type);break;case 22:case 23:Je(l),k(),o!==null&&M(xo);break;case 24:nt(Kn)}}function js(o,l){try{var p=l.updateQueue,v=p!==null?p.lastEffect:null;if(v!==null){var T=v.next;p=T;do{if((p.tag&o)===o){v=void 0;var C=p.create,F=p.inst;v=C(),F.destroy=v}p=p.next}while(p!==T)}}catch(ee){Vt(l,l.return,ee)}}function Ys(o,l,p){try{var v=l.updateQueue,T=v!==null?v.lastEffect:null;if(T!==null){var C=T.next;v=C;do{if((v.tag&o)===o){var F=v.inst,ee=F.destroy;if(ee!==void 0){F.destroy=void 0,T=l;var we=p,ke=ee;try{ke()}catch(it){Vt(T,we,it)}}}v=v.next}while(v!==C)}}catch(it){Vt(l,l.return,it)}}function Xl(o){var l=o.updateQueue;if(l!==null){var p=o.stateNode;try{Mr(l,p)}catch(v){Vt(o,o.return,v)}}}function Ef(o,l,p){p.props=Yo(o.type,o.memoizedProps),p.state=o.memoizedState;try{p.componentWillUnmount()}catch(v){Vt(o,l,v)}}function Wl(o,l){try{var p=o.ref;if(p!==null){switch(o.tag){case 26:case 27:case 5:var v=nu(o.stateNode);break;case 30:v=o.stateNode;break;default:v=o.stateNode}typeof p=="function"?o.refCleanup=p(v):p.current=v}}catch(T){Vt(o,l,T)}}function ia(o,l){var p=o.ref,v=o.refCleanup;if(p!==null)if(typeof v=="function")try{v()}catch(T){Vt(o,l,T)}finally{o.refCleanup=null,o=o.alternate,o!=null&&(o.refCleanup=null)}else if(typeof p=="function")try{p(null)}catch(T){Vt(o,l,T)}else p.current=null}function Jo(o){var l=o.type,p=o.memoizedProps,v=o.stateNode;try{_g(v,l,p,o)}catch(T){Vt(o,o.return,T)}}function ec(o,l,p){try{xg(o.stateNode,o.type,p,l,o)}catch(v){Vt(o,o.return,v)}}function Cd(o){return o.tag===5||o.tag===3||(ms?o.tag===26:!1)||(Li?o.tag===27&&ul(o.type):!1)||o.tag===4}function Tr(o){e:for(;;){for(;o.sibling===null;){if(o.return===null||Cd(o.return))return null;o=o.return}for(o.sibling.return=o.return,o=o.sibling;o.tag!==5&&o.tag!==6&&o.tag!==18;){if(Li&&o.tag===27&&ul(o.type)||o.flags&2||o.child===null||o.tag===4)continue e;o.child.return=o,o=o.child}if(!(o.flags&2))return o.stateNode}}function Tf(o,l,p){var v=o.tag;if(v===5||v===6)o=o.stateNode,l?Sg(p,o,l):Yd(p,o);else if(v!==4&&(Li&&v===27&&ul(o.type)&&(p=o.stateNode,l=null),o=o.child,o!==null))for(Tf(o,l,p),o=o.sibling;o!==null;)Tf(o,l,p),o=o.sibling}function tc(o,l,p){var v=o.tag;if(v===5||v===6)o=o.stateNode,l?bg(p,o,l):jd(p,o);else if(v!==4&&(Li&&v===27&&ul(o.type)&&(p=o.stateNode),o=o.child,o!==null))for(tc(o,l,p),o=o.sibling;o!==null;)tc(o,l,p),o=o.sibling}function Rd(o,l,p){o=o.containerInfo;try{ep(o,p)}catch(v){Vt(l,l.return,v)}}function rg(o){var l=o.stateNode,p=o.memoizedProps;try{Mi(o.type,p,l,o)}catch(v){Vt(o,o.return,v)}}function i_(o,l){for(Vf(o.containerInfo),mi=l;mi!==null;)if(o=mi,l=o.child,(o.subtreeFlags&1028)!==0&&l!==null)l.return=o,mi=l;else for(;mi!==null;){o=mi;var p=o.alternate;switch(l=o.flags,o.tag){case 0:if((l&4)!==0&&(l=o.updateQueue,l=l!==null?l.events:null,l!==null))for(var v=0;v";case fu:return":has("+(Yl(o)||"")+")";case hu:return'[role="'+o.value+'"]';case Eo:return'"'+o.value+'"';case Ec:return'[data-testname="'+o.value+'"]';default:throw Error(s(365))}}function Zl(o,l){var p=[];o=[o,0];for(var v=0;vp?32:p;p=Ut.T;var T=ps();try{hn(v),Ut.T=null,v=hh,hh=null;var C=Vr,F=hr;if(Ti=0,_l=Vr=null,hr=0,(cn&6)!==0)throw Error(s(331));var ee=cn;if(cn|=4,Rf(C.current),wf(C,C.current,F,v),cn=ee,Ke(0,!1),Aa&&typeof Aa.onPostCommitFiberRoot=="function")try{Aa.onPostCommitFiberRoot(hl,C)}catch{}return!0}finally{hn(T),Ut.T=p,If(o,l)}}function fo(o,l,p){l=be(p,l),l=gd(o.stateNode,l,2),o=Ha(o,l,2),o!==null&&(z(o,2),dt(o))}function Vt(o,l,p){if(o.tag===3)fo(o,o,p);else for(;l!==null;){if(l.tag===3){fo(l,o,p);break}else if(l.tag===1){var v=l.stateNode;if(typeof l.type.getDerivedStateFromError=="function"||typeof v.componentDidCatch=="function"&&(kr===null||!kr.has(v))){o=be(p,o),p=qm(2),v=Ha(l,p,2),v!==null&&(jm(p,v,l,o),z(v,2),dt(v));break}}l=l.return}}function $l(o,l,p){var v=o.pingCache;if(v===null){v=o.pingCache=new Ja;var T=new Set;v.set(l,T)}else T=v.get(l),T===void 0&&(T=new Set,v.set(l,T));T.has(p)||(Ao=!0,T.add(p),o=fg.bind(null,o,l,p),l.then(o,o))}function fg(o,l,p){var v=o.pingCache;v!==null&&v.delete(l),o.pingedLanes|=o.suspendedLanes&p,o.warmLanes&=~p,rn===o&&(pn&p)===p&&(si===4||si===3&&(pn&62914560)===pn&&300>aa()-Ac?(cn&2)===0&&li(o,0):du|=p,pu===pn&&(pu=0)),dt(o)}function hg(o,l){l===0&&(l=U()),o=na(o,l),o!==null&&(z(o,l),dt(o))}function a_(o){var l=o.memoizedState,p=0;l!==null&&(p=l.retryLane),hg(o,p)}function s_(o,l){var p=0;switch(o.tag){case 31:case 13:var v=o.stateNode,T=o.memoizedState;T!==null&&(p=T.retryLane);break;case 19:v=o.stateNode;break;case 22:v=o.stateNode._retryCache;break;default:throw Error(s(314))}v!==null&&v.delete(l),hg(o,p)}function Si(o,l){return vc(o,l)}function Ld(o,l,p,v){this.tag=o,this.key=p,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=l,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=v,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function $o(o){return o=o.prototype,!(!o||!o.isReactComponent)}function qa(o,l){var p=o.alternate;return p===null?(p=t(o.tag,l,o.key,o.mode),p.elementType=o.elementType,p.type=o.type,p.stateNode=o.stateNode,p.alternate=o,o.alternate=p):(p.pendingProps=l,p.type=o.type,p.flags=0,p.subtreeFlags=0,p.deletions=null),p.flags=o.flags&65011712,p.childLanes=o.childLanes,p.lanes=o.lanes,p.child=o.child,p.memoizedProps=o.memoizedProps,p.memoizedState=o.memoizedState,p.updateQueue=o.updateQueue,l=o.dependencies,p.dependencies=l===null?null:{lanes:l.lanes,firstContext:l.firstContext},p.sibling=o.sibling,p.index=o.index,p.ref=o.ref,p.refCleanup=o.refCleanup,p}function Of(o,l){o.flags&=65011714;var p=o.alternate;return p===null?(o.childLanes=0,o.lanes=l,o.child=null,o.subtreeFlags=0,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null,o.stateNode=null):(o.childLanes=p.childLanes,o.lanes=p.lanes,o.child=p.child,o.subtreeFlags=0,o.deletions=null,o.memoizedProps=p.memoizedProps,o.memoizedState=p.memoizedState,o.updateQueue=p.updateQueue,o.type=p.type,l=p.dependencies,o.dependencies=l===null?null:{lanes:l.lanes,firstContext:l.firstContext}),o}function Nr(o,l,p,v,T,C){var F=0;if(v=o,typeof o=="function")$o(o)&&(F=1);else if(typeof o=="string")F=ms&&Li?Qf(o,p,Xi.current)?26:mp(o)?27:5:ms?Qf(o,p,Xi.current)?26:5:Li&&mp(o)?27:5;else e:switch(o){case cc:return o=t(31,p,l,T),o.elementType=cc,o.lanes=C,o;case il:return hs(p.children,T,C,l);case al:F=8,T|=24;break;case sl:return o=t(12,p,l,T|2),o.elementType=sl,o.lanes=C,o;case Ff:return o=t(13,p,l,T),o.elementType=Ff,o.lanes=C,o;case Dr:return o=t(19,p,l,T),o.elementType=Dr,o.lanes=C,o;default:if(typeof o=="object"&&o!==null)switch(o.$$typeof){case ds:F=10;break e;case uc:F=9;break e;case eu:F=11;break e;case kf:F=14;break e;case ha:F=16,v=null;break e}F=29,p=Error(s(130,o===null?"null":typeof o,"")),v=null}return l=t(F,p,l,T),l.elementType=o,l.type=v,l.lanes=C,l}function hs(o,l,p,v){return o=t(7,o,v,l),o.lanes=p,o}function Ud(o,l,p){return o=t(6,o,null,l),o.lanes=p,o}function Id(o){var l=t(18,null,null,0);return l.stateNode=o,l}function Od(o,l,p){return l=t(4,o.children!==null?o.children:[],o.key,l),l.lanes=p,l.stateNode={containerInfo:o.containerInfo,pendingChildren:null,implementation:o.implementation},l}function dg(o,l,p,v,T,C,F,ee,we){this.tag=1,this.containerInfo=o,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=Ea,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=B(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=B(0),this.hiddenUpdates=B(null),this.identifierPrefix=v,this.onUncaughtError=T,this.onCaughtError=C,this.onRecoverableError=F,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=we,this.incompleteTransitions=new Map}function ho(o,l,p,v,T,C,F,ee,we,ke,it,We){return o=new dg(o,l,p,F,we,ke,it,We,ee),l=1,C===!0&&(l|=24),C=t(3,null,null,l),o.current=C,C.stateNode=o,l=Te(),l.refCount++,o.pooledCache=l,l.refCount++,C.memoizedState={element:v,isDehydrated:p,cache:l},Ri(C),o}function Pf(o){return o?(o=ar,o):ar}function oc(o){var l=o._reactInternals;if(l===void 0)throw typeof o.render=="function"?Error(s(188)):(o=Object.keys(o).join(","),Error(s(268,o)));return o=h(l),o=o!==null?m(o):null,o===null?null:nu(o.stateNode)}function Pd(o,l,p,v,T,C){T=Pf(T),v.context===null?v.context=T:v.pendingContext=T,v=Va(l),v.payload={element:p},C=C===void 0?null:C,C!==null&&(v.callback=C),p=Ha(o,v,l),p!==null&&(ti(p,o,l),$r(p,o,l))}function el(o,l){if(o=o.memoizedState,o!==null&&o.dehydrated!==null){var p=o.retryLane;o.retryLane=p!==0&&p=ke&&C>=We&&T<=it&&F<=gt){o.splice(l,1);break}else if(v!==ke||p.width!==we.width||gtF){if(!(C!==We||p.height!==we.height||itT)){ke>v&&(we.width+=ke-v,we.x=v),itC&&(we.height+=We-C,we.y=C),gtp&&(p=ee)),ee ")+` + +No matching component was found for: + `)+o.join(" > ")}return null},an.getPublicRootInstance=function(o){if(o=o.current,!o.child)return null;switch(o.child.tag){case 27:case 5:return nu(o.child.stateNode);default:return o.child.stateNode}},an.injectIntoDevTools=function(){var o={bundleType:0,version:Bd,rendererPackageName:fc,currentDispatcherRef:Ut,reconcilerVersion:"19.2.0"};if(tu!==null&&(o.rendererConfig=tu),typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")o=!1;else{var l=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(l.isDisabled||!l.supportsFiber)o=!0;else{try{hl=l.inject(o),Aa=l}catch{}o=!!l.checkDCE}}return o},an.isAlreadyRendering=function(){return(cn&6)!==0},an.observeVisibleRects=function(o,l,p,v){if(!Di)throw Error(s(363));o=ba(o,l);var T=Wf(o,p,v).disconnect;return{disconnect:function(){T()}}},an.shouldError=function(){return null},an.shouldSuspend=function(){return!1},an.startHostTransition=function(o,l,p,v){if(o.tag!==5)throw Error(s(476));var T=km(o).queue;Fm(o,T,l,ol,p===null?n:function(){var C=km(o);return C.next===null&&(C=o.alternate.memoizedState),Zu(o,C.next.queue,{},Yn()),p(v)})},an.updateContainer=function(o,l,p,v){var T=l.current,C=Yn();return Pd(T,C,o,l,p,v),C},an.updateContainerSync=function(o,l,p,v){return Pd(l.current,2,o,l,p,v),2},an},r.exports.default=r.exports,Object.defineProperty(r.exports,"__esModule",{value:!0})})(H1)),H1.exports}var X1;function Ez(){return X1||(X1=1,V1.exports=Mz()),V1.exports}var Tz=Ez();const Az=Sz(Tz);function wz(r){const e=Az(r);return e.injectIntoDevTools(),e}const sA=0,nd={},Cz=/^three(?=[A-Z])/,Jy=r=>`${r[0].toUpperCase()}${r.slice(1)}`;let Rz=0;const Nz=r=>typeof r=="function";function Dz(r){if(Nz(r)){const e=`${Rz++}`;return nd[e]=r,e}else Object.assign(nd,r)}function rA(r,e){const t=Jy(r),n=nd[t];if(r!=="primitive"&&!n)throw new Error(`R3F: ${t} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if(r==="primitive"&&!e.object)throw new Error("R3F: Primitives without 'object' are invalid!");if(e.args!==void 0&&!Array.isArray(e.args))throw new Error("R3F: The args prop must be an array!")}function Lz(r,e,t){var n;return r=Jy(r)in nd?r:r.replace(Cz,""),rA(r,e),r==="primitive"&&(n=e.object)!=null&&n.__r3f&&delete e.object.__r3f,uy(e.object,t,r,e)}function Uz(r){if(!r.isHidden){var e;r.props.attach&&(e=r.parent)!=null&&e.object?fy(r.parent,r):ws(r.object)&&(r.object.visible=!1),r.isHidden=!0,od(r)}}function oA(r){if(r.isHidden){var e;r.props.attach&&(e=r.parent)!=null&&e.object?cy(r.parent,r):ws(r.object)&&r.props.visible!==!1&&(r.object.visible=!0),r.isHidden=!1,od(r)}}function oS(r,e,t){const n=e.root.getState();if(!(!r.parent&&r.object!==n.scene)){if(!e.object){var s,u;const f=nd[Jy(e.type)];e.object=(s=e.props.object)!=null?s:new f(...(u=e.props.args)!=null?u:[]),e.object.__r3f=e}if(Lu(e.object,e.props),e.props.attach)cy(r,e);else if(ws(e.object)&&ws(r.object)){const f=r.object.children.indexOf(t?.object);if(t&&f!==-1){const h=r.object.children.indexOf(e.object);if(h!==-1){r.object.children.splice(h,1);const m=h{try{r.dispose()}catch{}};typeof IS_REACT_ACT_ENVIRONMENT<"u"?e():sb.unstable_scheduleCallback(sb.unstable_IdlePriority,e)}}function ob(r,e,t){if(!e)return;e.parent=null;const n=r.children.indexOf(e);n!==-1&&r.children.splice(n,1),e.props.attach?fy(r,e):ws(e.object)&&ws(r.object)&&(r.object.remove(e.object),dz(KT(e),e.object));const s=e.props.dispose!==null&&t!==!1;for(let u=e.children.length-1;u>=0;u--){const f=e.children[u];ob(e,f,s)}e.children.length=0,delete e.object.__r3f,s&&e.type!=="primitive"&&e.object.type!=="Scene"&&lA(e.object),t===void 0&&od(e)}function Iz(r,e){for(const t of[r,r.alternate])if(t!==null)if(typeof t.ref=="function"){t.refCleanup==null||t.refCleanup();const n=t.ref(e);typeof n=="function"&&(t.refCleanup=n)}else t.ref&&(t.ref.current=e)}const gv=[];function Oz(){for(const[t]of gv){const n=t.parent;if(n){t.props.attach?fy(n,t):ws(t.object)&&ws(n.object)&&n.object.remove(t.object);for(const s of t.children)s.props.attach?fy(t,s):ws(s.object)&&ws(t.object)&&t.object.remove(s.object)}t.isHidden&&oA(t),t.object.__r3f&&delete t.object.__r3f,t.type!=="primitive"&&lA(t.object)}for(const[t,n,s]of gv){t.props=n;const u=t.parent;if(u){var r,e;const f=nd[Jy(t.type)];t.object=(r=t.props.object)!=null?r:new f(...(e=t.props.args)!=null?e:[]),t.object.__r3f=t,Iz(s,t.object),Lu(t.object,t.props),t.props.attach?cy(u,t):ws(t.object)&&ws(u.object)&&u.object.add(t.object);for(const h of t.children)h.props.attach?cy(t,h):ws(h.object)&&ws(t.object)&&t.object.add(h.object);od(t)}}gv.length=0}const Ix=()=>{},q1={};let cv=sA;const Pz=0,zz=4,lb=wz({isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:Lz,removeChild:ob,appendChild:Ux,appendInitialChild:Ux,insertBefore:W1,appendChildToContainer(r,e){const t=r.getState().scene.__r3f;!e||!t||Ux(t,e)},removeChildFromContainer(r,e){const t=r.getState().scene.__r3f;!e||!t||ob(t,e)},insertInContainerBefore(r,e,t){const n=r.getState().scene.__r3f;!e||!t||!n||W1(n,e,t)},getRootHostContext:()=>q1,getChildHostContext:()=>q1,commitUpdate(r,e,t,n,s){var u,f,h;rA(e,n);let m=!1;if((r.type==="primitive"&&t.object!==n.object||((u=n.args)==null?void 0:u.length)!==((f=t.args)==null?void 0:f.length)||(h=n.args)!=null&&h.some((_,x)=>{var b;return _!==((b=t.args)==null?void 0:b[x])}))&&(m=!0),m)gv.push([r,{...n},s]);else{const _=uz(r,n);Object.keys(_).length&&(Object.assign(r.props,_),Lu(r.object,_))}(s.sibling===null||(s.flags&zz)===Pz)&&Oz()},finalizeInitialChildren:()=>!1,commitMount(){},getPublicInstance:r=>r?.object,prepareForCommit:()=>null,preparePortalMount:r=>uy(r.getState().scene,r,"",{}),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance:Uz,unhideInstance:oA,createTextInstance:Ix,hideTextInstance:Ix,unhideTextInstance:Ix,scheduleTimeout:typeof setTimeout=="function"?setTimeout:void 0,cancelTimeout:typeof clearTimeout=="function"?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=>null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},prepareScopeUpdate(){},getInstanceFromScope:()=>null,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,requestPostPaintCallback(){},maySuspendCommit:()=>!1,preloadInstance:()=>!0,suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,HostTransitionContext:rt.createContext(null),setCurrentUpdatePriority(r){cv=r},getCurrentUpdatePriority(){return cv},resolveUpdatePriority(){var r;if(cv!==sA)return cv;switch(typeof window<"u"&&((r=window.event)==null?void 0:r.type)){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return xz;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return yz;default:return _z}},resetFormInstance(){},rendererPackageName:"@react-three/fiber",rendererVersion:bz.version,applyViewTransitionName(r,e,t){},restoreViewTransitionName(r,e){},cancelViewTransitionName(r,e,t){},cancelRootViewTransitionName(r){},restoreRootViewTransitionName(r){},InstanceMeasurement:null,measureInstance:r=>null,wasInstanceInViewport:r=>!0,hasInstanceChanged:(r,e)=>!1,hasInstanceAffectedParent:(r,e)=>!1,suspendOnActiveViewTransition(r,e){},startGestureTransition:()=>null,startViewTransition:()=>null,stopViewTransition(r){},createViewTransitionInstance:r=>null,getCurrentGestureOffset(r){throw new Error("startGestureTransition is not yet supported in react-three-fiber.")},cloneMutableInstance(r,e){return r},cloneMutableTextInstance(r){return r},cloneRootViewTransitionContainer(r){throw new Error("Not implemented.")},removeRootViewTransitionClone(r,e){throw new Error("Not implemented.")},createFragmentInstance:r=>null,updateFragmentInstanceFiber(r,e){},commitNewChildToFragmentInstance(r,e){},deleteChildFromFragmentInstance(r,e){},measureClonedInstance:r=>null,maySuspendCommitOnUpdate:(r,e,t)=>!1,maySuspendCommitInSyncRender:(r,e)=>!1,startSuspendingCommit:()=>null,getSuspendedCommitReason:(r,e)=>null}),sf=new Map,Fh={objects:"shallow",strict:!1};function Bz(r,e){if(!e&&typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement&&r.parentElement){const{width:t,height:n,top:s,left:u}=r.parentElement.getBoundingClientRect();return{width:t,height:n,top:s,left:u}}else if(!e&&typeof OffscreenCanvas<"u"&&r instanceof OffscreenCanvas)return{width:r.width,height:r.height,top:0,left:0};return{width:0,height:0,top:0,left:0,...e}}function Fz(r){const e=sf.get(r),t=e?.fiber,n=e?.store;e&&console.warn("R3F.createRoot should only be called once!");const s=typeof reportError=="function"?reportError:console.error,u=n||mz(fb,Y1),f=t||lb.createContainer(u,vz,null,!1,null,"",s,s,s,null);e||sf.set(r,{fiber:f,store:u});let h,m,g=!1,_=null;return{async configure(x={}){let b;_=new Promise(X=>b=X);let{gl:M,size:A,scene:R,events:w,onCreated:E,shadows:N=!1,linear:D=!1,flat:U=!1,legacy:B=!1,orthographic:z=!1,frameloop:H="always",dpr:W=[1,2],performance:I,raycaster:P,camera:Z,onPointerMissed:se}=x,te=u.getState(),fe=te.gl;if(!te.gl){const X={canvas:r,powerPreference:"high-performance",antialias:!0,alpha:!0},oe=typeof M=="function"?await M(X):M;k1(oe)?fe=oe:fe=new jT({...X,...M}),te.set({gl:fe})}let pe=te.raycaster;pe||te.set({raycaster:pe=new FT});const{params:Y,...q}=P||{};if(yi.equ(q,pe,Fh)||Lu(pe,{...q}),yi.equ(Y,pe.params,Fh)||Lu(pe,{params:{...pe.params,...Y}}),!te.camera||te.camera===m&&!yi.equ(m,Z,Fh)){m=Z;const X=Z?.isCamera,oe=X?Z:z?new Dl(0,0,0,0,.1,1e3):new zi(75,0,.1,1e3);X||(oe.position.z=5,Z&&(Lu(oe,Z),oe.manual||("aspect"in Z||"left"in Z||"right"in Z||"bottom"in Z||"top"in Z)&&(oe.manual=!0,oe.updateProjectionMatrix())),!te.camera&&!(Z!=null&&Z.rotation)&&oe.lookAt(0,0,0)),te.set({camera:oe}),pe.camera=oe}if(!te.scene){let X;R!=null&&R.isScene?(X=R,uy(X,u,"",{})):(X=new Lb,uy(X,u,"",{}),R&&Lu(X,R)),te.set({scene:X})}w&&!te.events.handlers&&te.set({events:w(u)});const ne=Bz(r,A);if(yi.equ(ne,te.size,Fh)||te.setSize(ne.width,ne.height,ne.top,ne.left),W&&te.viewport.dpr!==eA(W)&&te.setDpr(W),te.frameloop!==H&&te.setFrameloop(H),te.onPointerMissed||te.set({onPointerMissed:se}),I&&!yi.equ(I,te.performance,Fh)&&te.set(X=>({performance:{...X.performance,...I}})),!te.xr){var be;const X=(Fe,lt)=>{const de=u.getState();de.frameloop!=="never"&&Y1(Fe,!0,de,lt)},oe=()=>{const Fe=u.getState();Fe.gl.xr.enabled=Fe.gl.xr.isPresenting,Fe.gl.xr.setAnimationLoop(Fe.gl.xr.isPresenting?X:null),Fe.gl.xr.isPresenting||fb(Fe)},Ae={connect(){const Fe=u.getState().gl;Fe.xr.addEventListener("sessionstart",oe),Fe.xr.addEventListener("sessionend",oe)},disconnect(){const Fe=u.getState().gl;Fe.xr.removeEventListener("sessionstart",oe),Fe.xr.removeEventListener("sessionend",oe)}};typeof((be=fe.xr)==null?void 0:be.addEventListener)=="function"&&Ae.connect(),te.set({xr:Ae})}if(fe.shadowMap){const X=fe.shadowMap.enabled,oe=fe.shadowMap.type;if(fe.shadowMap.enabled=!!N,yi.boo(N))fe.shadowMap.type=Kp;else if(yi.str(N)){var Ne;const Ae={basic:sE,percentage:Xh,soft:Kp,variance:jc};fe.shadowMap.type=(Ne=Ae[N])!=null?Ne:Kp}else yi.obj(N)&&Object.assign(fe.shadowMap,N);(X!==fe.shadowMap.enabled||oe!==fe.shadowMap.type)&&(fe.shadowMap.needsUpdate=!0)}return Sn.enabled=!B,g||(fe.outputColorSpace=D?zu:Ia,fe.toneMapping=U?gr:gy),te.legacy!==B&&te.set(()=>({legacy:B})),te.linear!==D&&te.set(()=>({linear:D})),te.flat!==U&&te.set(()=>({flat:U})),M&&!yi.fun(M)&&!k1(M)&&!yi.equ(M,fe,Fh)&&Lu(fe,M),h=E,g=!0,b(),this},render(x){return!g&&!_&&this.configure(),_.then(()=>{lb.updateContainer(he.jsx(kz,{store:u,children:x,onCreated:h,rootElement:r}),f,null,()=>{})}),u},unmount(){uA(r)}}}function kz({store:r,children:e,onCreated:t,rootElement:n}){return Om(()=>{const s=r.getState();s.set(u=>({internal:{...u.internal,active:!0}})),t&&t(s),r.getState().events.connected||s.events.connect==null||s.events.connect(n)},[]),he.jsx(iA.Provider,{value:r,children:e})}function uA(r,e){const t=sf.get(r),n=t?.fiber;if(n){const s=t?.store.getState();s&&(s.internal.active=!1),lb.updateContainer(null,n,null,()=>{s&&setTimeout(()=>{try{var u,f,h,m;s.events.disconnect==null||s.events.disconnect(),(u=s.gl)==null||(f=u.renderLists)==null||f.dispose==null||f.dispose(),(h=s.gl)==null||h.forceContextLoss==null||h.forceContextLoss(),(m=s.gl)!=null&&m.xr&&s.xr.disconnect(),rz(s.scene),sf.delete(r)}catch{}},500)})}}const Vz=new Set,Hz=new Set,Gz=new Set;function Ox(r,e){if(r.size)for(const{callback:t}of r.values())t(e)}function rm(r,e){switch(r){case"before":return Ox(Vz,e);case"after":return Ox(Hz,e);case"tail":return Ox(Gz,e)}}let Px,zx;function ub(r,e,t){let n=e.clock.getDelta();e.frameloop==="never"&&typeof r=="number"&&(n=r-e.clock.elapsedTime,e.clock.oldTime=e.clock.elapsedTime,e.clock.elapsedTime=r),Px=e.internal.subscribers;for(let s=0;s0)&&!((e=kh.gl.xr)!=null&&e.isPresenting)&&(Bx+=ub(r,kh))}if(cb=!1,rm("after",r),Bx===0)return rm("tail",r),hy=!1,cancelAnimationFrame(j1)}function fb(r,e=1){var t;if(!r)return sf.forEach(n=>fb(n.store.getState(),e));(t=r.gl.xr)!=null&&t.isPresenting||!r.internal.active||r.frameloop==="never"||(e>1?r.internal.frames=Math.min(60,r.internal.frames+e):cb?r.internal.frames=2:r.internal.frames=1,hy||(hy=!0,requestAnimationFrame(cA)))}function Y1(r,e=!0,t,n){if(e&&rm("before",r),t)ub(r,t,n);else for(const s of sf.values())ub(r,s.store.getState());e&&rm("after",r)}const Fx={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function Xz(r){const{handlePointer:e}=pz(r);return{priority:1,enabled:!0,compute(t,n,s){n.pointer.set(t.offsetX/n.size.width*2-1,-(t.offsetY/n.size.height)*2+1),n.raycaster.setFromCamera(n.pointer,n.camera)},connected:void 0,handlers:Object.keys(Fx).reduce((t,n)=>({...t,[n]:e(n)}),{}),update:()=>{var t;const{events:n,internal:s}=r.getState();(t=s.lastEvent)!=null&&t.current&&n.handlers&&n.handlers.onPointerMove(s.lastEvent.current)},connect:t=>{const{set:n,events:s}=r.getState();if(s.disconnect==null||s.disconnect(),n(u=>({events:{...u.events,connected:t}})),s.handlers)for(const u in s.handlers){const f=s.handlers[u],[h,m]=Fx[u];t.addEventListener(h,f,{passive:m})}},disconnect:()=>{const{set:t,events:n}=r.getState();if(n.connected){if(n.handlers)for(const s in n.handlers){const u=n.handlers[s],[f]=Fx[s];n.connected.removeEventListener(f,u)}t(s=>({events:{...s.events,connected:void 0}}))}}}}function Z1(r,e){let t;return(...n)=>{window.clearTimeout(t),t=window.setTimeout(()=>r(...n),e)}}function Wz({debounce:r,scroll:e,polyfill:t,offsetSize:n}={debounce:0,scroll:!1,offsetSize:!1}){const s=t||(typeof window>"u"?class{}:window.ResizeObserver);if(!s)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[u,f]=rt.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),h=rt.useRef({element:null,scrollContainers:null,resizeObserver:null,lastBounds:u,orientationHandler:null}),m=r?typeof r=="number"?r:r.scroll:null,g=r?typeof r=="number"?r:r.resize:null,_=rt.useRef(!1);rt.useEffect(()=>(_.current=!0,()=>{_.current=!1}));const[x,b,M]=rt.useMemo(()=>{const E=()=>{if(!h.current.element)return;const{left:N,top:D,width:U,height:B,bottom:z,right:H,x:W,y:I}=h.current.element.getBoundingClientRect(),P={left:N,top:D,width:U,height:B,bottom:z,right:H,x:W,y:I};h.current.element instanceof HTMLElement&&n&&(P.height=h.current.element.offsetHeight,P.width=h.current.element.offsetWidth),Object.freeze(P),_.current&&!Zz(h.current.lastBounds,P)&&f(h.current.lastBounds=P)};return[E,g?Z1(E,g):E,m?Z1(E,m):E]},[f,n,m,g]);function A(){h.current.scrollContainers&&(h.current.scrollContainers.forEach(E=>E.removeEventListener("scroll",M,!0)),h.current.scrollContainers=null),h.current.resizeObserver&&(h.current.resizeObserver.disconnect(),h.current.resizeObserver=null),h.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",h.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",h.current.orientationHandler))}function R(){h.current.element&&(h.current.resizeObserver=new s(M),h.current.resizeObserver.observe(h.current.element),e&&h.current.scrollContainers&&h.current.scrollContainers.forEach(E=>E.addEventListener("scroll",M,{capture:!0,passive:!0})),h.current.orientationHandler=()=>{M()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",h.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",h.current.orientationHandler))}const w=E=>{!E||E===h.current.element||(A(),h.current.element=E,h.current.scrollContainers=fA(E),R())};return jz(M,!!e),qz(b),rt.useEffect(()=>{A(),R()},[e,M,b]),rt.useEffect(()=>A,[]),[w,u,x]}function qz(r){rt.useEffect(()=>{const e=r;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}},[r])}function jz(r,e){rt.useEffect(()=>{if(e){const t=r;return window.addEventListener("scroll",t,{capture:!0,passive:!0}),()=>{window.removeEventListener("scroll",t,!0)}}},[r,e])}function fA(r){const e=[];if(!r||r===document.body)return e;const{overflow:t,overflowX:n,overflowY:s}=window.getComputedStyle(r);return[t,n,s].some(u=>u==="auto"||u==="scroll")&&e.push(r),[...e,...fA(r.parentElement)]}const Yz=["x","y","top","bottom","left","right","width","height"],Zz=(r,e)=>Yz.every(t=>r[t]===e[t]);function Qz({ref:r,children:e,fallback:t,resize:n,style:s,gl:u,events:f=Xz,eventSource:h,eventPrefix:m,shadows:g,linear:_,flat:x,legacy:b,orthographic:M,frameloop:A,dpr:R,performance:w,raycaster:E,camera:N,scene:D,onPointerMissed:U,onCreated:B,...z}){rt.useMemo(()=>Dz(BP),[]);const H=iz(),[W,I]=Wz({scroll:!0,debounce:{scroll:50,resize:0},...n}),P=rt.useRef(null),Z=rt.useRef(null);rt.useImperativeHandle(r,()=>P.current);const se=$T(U),[te,fe]=rt.useState(!1),[pe,Y]=rt.useState(!1);if(te)throw te;if(pe)throw pe;const q=rt.useRef(null);Om(()=>{const be=P.current;if(I.width>0&&I.height>0&&be){q.current||(q.current=Fz(be));async function Ne(){await q.current.configure({gl:u,scene:D,events:f,shadows:g,linear:_,flat:x,legacy:b,orthographic:M,frameloop:A,dpr:R,performance:w,raycaster:E,camera:N,size:I,onPointerMissed:(...X)=>se.current==null?void 0:se.current(...X),onCreated:X=>{X.events.connect==null||X.events.connect(h?tz(h)?h.current:h:Z.current),m&&X.setEvents({compute:(oe,Ae)=>{const Fe=oe[m+"X"],lt=oe[m+"Y"];Ae.pointer.set(Fe/Ae.size.width*2-1,-(lt/Ae.size.height)*2+1),Ae.raycaster.setFromCamera(Ae.pointer,Ae.camera)}}),B?.(X)}}),q.current.render(he.jsx(H,{children:he.jsx(sz,{set:Y,children:he.jsx(rt.Suspense,{fallback:he.jsx(az,{set:fe}),children:e??null})})}))}Ne()}}),rt.useEffect(()=>{const be=P.current;if(be)return()=>uA(be)},[]);const ne=h?"none":"auto";return he.jsx("div",{ref:Z,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:ne,...s},...z,children:he.jsx("div",{ref:W,style:{width:"100%",height:"100%"},children:he.jsx("canvas",{ref:P,style:{display:"block"},children:t})})})}function Kz(r){return he.jsx(ZT,{children:he.jsx(Qz,{...r})})}var Jz=Object.defineProperty,$z=(r,e,t)=>e in r?Jz(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,e4=(r,e,t)=>($z(r,e+"",t),t);class t4{constructor(){e4(this,"_listeners")}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const s=this._listeners[e];if(s!==void 0){const u=s.indexOf(t);u!==-1&&s.splice(u,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const n=this._listeners[e.type];if(n!==void 0){e.target=this;const s=n.slice(0);for(let u=0,f=s.length;ue in r?n4(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Bt=(r,e,t)=>(i4(r,typeof e!="symbol"?e+"":e,t),t);const fv=new of,Q1=new wl,a4=Math.cos(70*(Math.PI/180)),K1=(r,e)=>(r%e+e)%e;let s4=class extends t4{constructor(e,t){super(),Bt(this,"object"),Bt(this,"domElement"),Bt(this,"enabled",!0),Bt(this,"target",new j),Bt(this,"minDistance",0),Bt(this,"maxDistance",1/0),Bt(this,"minZoom",0),Bt(this,"maxZoom",1/0),Bt(this,"minPolarAngle",0),Bt(this,"maxPolarAngle",Math.PI),Bt(this,"minAzimuthAngle",-1/0),Bt(this,"maxAzimuthAngle",1/0),Bt(this,"enableDamping",!1),Bt(this,"dampingFactor",.05),Bt(this,"enableZoom",!0),Bt(this,"zoomSpeed",1),Bt(this,"enableRotate",!0),Bt(this,"rotateSpeed",1),Bt(this,"enablePan",!0),Bt(this,"panSpeed",1),Bt(this,"screenSpacePanning",!0),Bt(this,"keyPanSpeed",7),Bt(this,"zoomToCursor",!1),Bt(this,"autoRotate",!1),Bt(this,"autoRotateSpeed",2),Bt(this,"reverseOrbit",!1),Bt(this,"reverseHorizontalOrbit",!1),Bt(this,"reverseVerticalOrbit",!1),Bt(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),Bt(this,"mouseButtons",{LEFT:Gc.ROTATE,MIDDLE:Gc.DOLLY,RIGHT:Gc.PAN}),Bt(this,"touches",{ONE:Xc.ROTATE,TWO:Xc.DOLLY_PAN}),Bt(this,"target0"),Bt(this,"position0"),Bt(this,"zoom0"),Bt(this,"_domElementKeyEvents",null),Bt(this,"getPolarAngle"),Bt(this,"getAzimuthalAngle"),Bt(this,"setPolarAngle"),Bt(this,"setAzimuthalAngle"),Bt(this,"getDistance"),Bt(this,"getZoomScale"),Bt(this,"listenToKeyEvents"),Bt(this,"stopListenToKeyEvents"),Bt(this,"saveState"),Bt(this,"reset"),Bt(this,"update"),Bt(this,"connect"),Bt(this,"dispose"),Bt(this,"dollyIn"),Bt(this,"dollyOut"),Bt(this,"getScale"),Bt(this,"setScale"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>_.phi,this.getAzimuthalAngle=()=>_.theta,this.setPolarAngle=K=>{let me=K1(K,2*Math.PI),et=_.phi;et<0&&(et+=2*Math.PI),me<0&&(me+=2*Math.PI);let J=Math.abs(me-et);2*Math.PI-J{let me=K1(K,2*Math.PI),et=_.theta;et<0&&(et+=2*Math.PI),me<0&&(me+=2*Math.PI);let J=Math.abs(me-et);2*Math.PI-Jn.object.position.distanceTo(n.target),this.listenToKeyEvents=K=>{K.addEventListener("keydown",Ee),this._domElementKeyEvents=K},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",Ee),this._domElementKeyEvents=null},this.saveState=()=>{n.target0.copy(n.target),n.position0.copy(n.object.position),n.zoom0=n.object.zoom},this.reset=()=>{n.target.copy(n.target0),n.object.position.copy(n.position0),n.object.zoom=n.zoom0,n.object.updateProjectionMatrix(),n.dispatchEvent(s),n.update(),m=h.NONE},this.update=(()=>{const K=new j,me=new j(0,1,0),et=new Pa().setFromUnitVectors(e.up,me),J=et.clone().invert(),je=new j,Ge=new Pa,at=2*Math.PI;return function(){const Ue=n.object.position;et.setFromUnitVectors(e.up,me),J.copy(et).invert(),K.copy(Ue).sub(n.target),K.applyQuaternion(et),_.setFromVector3(K),n.autoRotate&&m===h.NONE&&fe(se()),n.enableDamping?(_.theta+=x.theta*n.dampingFactor,_.phi+=x.phi*n.dampingFactor):(_.theta+=x.theta,_.phi+=x.phi);let Ye=n.minAzimuthAngle,Ct=n.maxAzimuthAngle;isFinite(Ye)&&isFinite(Ct)&&(Ye<-Math.PI?Ye+=at:Ye>Math.PI&&(Ye-=at),Ct<-Math.PI?Ct+=at:Ct>Math.PI&&(Ct-=at),Ye<=Ct?_.theta=Math.max(Ye,Math.min(Ct,_.theta)):_.theta=_.theta>(Ye+Ct)/2?Math.max(Ye,_.theta):Math.min(Ct,_.theta)),_.phi=Math.max(n.minPolarAngle,Math.min(n.maxPolarAngle,_.phi)),_.makeSafe(),n.enableDamping===!0?n.target.addScaledVector(M,n.dampingFactor):n.target.add(M),n.zoomToCursor&&I||n.object.isOrthographicCamera?_.radius=Ae(_.radius):_.radius=Ae(_.radius*b),K.setFromSpherical(_),K.applyQuaternion(J),Ue.copy(n.target).add(K),n.object.matrixAutoUpdate||n.object.updateMatrix(),n.object.lookAt(n.target),n.enableDamping===!0?(x.theta*=1-n.dampingFactor,x.phi*=1-n.dampingFactor,M.multiplyScalar(1-n.dampingFactor)):(x.set(0,0,0),M.set(0,0,0));let Jt=!1;if(n.zoomToCursor&&I){let nn=null;if(n.object instanceof zi&&n.object.isPerspectiveCamera){const Jn=K.length();nn=Ae(Jn*b);const Ci=Jn-nn;n.object.position.addScaledVector(H,Ci),n.object.updateMatrixWorld()}else if(n.object.isOrthographicCamera){const Jn=new j(W.x,W.y,0);Jn.unproject(n.object),n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/b)),n.object.updateProjectionMatrix(),Jt=!0;const Ci=new j(W.x,W.y,0);Ci.unproject(n.object),n.object.position.sub(Ci).add(Jn),n.object.updateMatrixWorld(),nn=K.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),n.zoomToCursor=!1;nn!==null&&(n.screenSpacePanning?n.target.set(0,0,-1).transformDirection(n.object.matrix).multiplyScalar(nn).add(n.object.position):(fv.origin.copy(n.object.position),fv.direction.set(0,0,-1).transformDirection(n.object.matrix),Math.abs(n.object.up.dot(fv.direction))g||8*(1-Ge.dot(n.object.quaternion))>g?(n.dispatchEvent(s),je.copy(n.object.position),Ge.copy(n.object.quaternion),Jt=!1,!0):!1}})(),this.connect=K=>{n.domElement=K,n.domElement.style.touchAction="none",n.domElement.addEventListener("contextmenu",vt),n.domElement.addEventListener("pointerdown",Qe),n.domElement.addEventListener("pointercancel",O),n.domElement.addEventListener("wheel",Ie)},this.dispose=()=>{var K,me,et,J,je,Ge;n.domElement&&(n.domElement.style.touchAction="auto"),(K=n.domElement)==null||K.removeEventListener("contextmenu",vt),(me=n.domElement)==null||me.removeEventListener("pointerdown",Qe),(et=n.domElement)==null||et.removeEventListener("pointercancel",O),(J=n.domElement)==null||J.removeEventListener("wheel",Ie),(je=n.domElement)==null||je.ownerDocument.removeEventListener("pointermove",G),(Ge=n.domElement)==null||Ge.ownerDocument.removeEventListener("pointerup",O),n._domElementKeyEvents!==null&&n._domElementKeyEvents.removeEventListener("keydown",Ee)};const n=this,s={type:"change"},u={type:"start"},f={type:"end"},h={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let m=h.NONE;const g=1e-6,_=new eb,x=new eb;let b=1;const M=new j,A=new ze,R=new ze,w=new ze,E=new ze,N=new ze,D=new ze,U=new ze,B=new ze,z=new ze,H=new j,W=new ze;let I=!1;const P=[],Z={};function se(){return 2*Math.PI/60/60*n.autoRotateSpeed}function te(){return Math.pow(.95,n.zoomSpeed)}function fe(K){n.reverseOrbit||n.reverseHorizontalOrbit?x.theta+=K:x.theta-=K}function pe(K){n.reverseOrbit||n.reverseVerticalOrbit?x.phi+=K:x.phi-=K}const Y=(()=>{const K=new j;return function(et,J){K.setFromMatrixColumn(J,0),K.multiplyScalar(-et),M.add(K)}})(),q=(()=>{const K=new j;return function(et,J){n.screenSpacePanning===!0?K.setFromMatrixColumn(J,1):(K.setFromMatrixColumn(J,0),K.crossVectors(n.object.up,K)),K.multiplyScalar(et),M.add(K)}})(),ne=(()=>{const K=new j;return function(et,J){const je=n.domElement;if(je&&n.object instanceof zi&&n.object.isPerspectiveCamera){const Ge=n.object.position;K.copy(Ge).sub(n.target);let at=K.length();at*=Math.tan(n.object.fov/2*Math.PI/180),Y(2*et*at/je.clientHeight,n.object.matrix),q(2*J*at/je.clientHeight,n.object.matrix)}else je&&n.object instanceof Dl&&n.object.isOrthographicCamera?(Y(et*(n.object.right-n.object.left)/n.object.zoom/je.clientWidth,n.object.matrix),q(J*(n.object.top-n.object.bottom)/n.object.zoom/je.clientHeight,n.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),n.enablePan=!1)}})();function be(K){n.object instanceof zi&&n.object.isPerspectiveCamera||n.object instanceof Dl&&n.object.isOrthographicCamera?b=K:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function Ne(K){be(b/K)}function X(K){be(b*K)}function oe(K){if(!n.zoomToCursor||!n.domElement)return;I=!0;const me=n.domElement.getBoundingClientRect(),et=K.clientX-me.left,J=K.clientY-me.top,je=me.width,Ge=me.height;W.x=et/je*2-1,W.y=-(J/Ge)*2+1,H.set(W.x,W.y,1).unproject(n.object).sub(n.object.position).normalize()}function Ae(K){return Math.max(n.minDistance,Math.min(n.maxDistance,K))}function Fe(K){A.set(K.clientX,K.clientY)}function lt(K){oe(K),U.set(K.clientX,K.clientY)}function de(K){E.set(K.clientX,K.clientY)}function Re(K){R.set(K.clientX,K.clientY),w.subVectors(R,A).multiplyScalar(n.rotateSpeed);const me=n.domElement;me&&(fe(2*Math.PI*w.x/me.clientHeight),pe(2*Math.PI*w.y/me.clientHeight)),A.copy(R),n.update()}function tt(K){B.set(K.clientX,K.clientY),z.subVectors(B,U),z.y>0?Ne(te()):z.y<0&&X(te()),U.copy(B),n.update()}function st(K){N.set(K.clientX,K.clientY),D.subVectors(N,E).multiplyScalar(n.panSpeed),ne(D.x,D.y),E.copy(N),n.update()}function ht(K){oe(K),K.deltaY<0?X(te()):K.deltaY>0&&Ne(te()),n.update()}function jt(K){let me=!1;switch(K.code){case n.keys.UP:ne(0,n.keyPanSpeed),me=!0;break;case n.keys.BOTTOM:ne(0,-n.keyPanSpeed),me=!0;break;case n.keys.LEFT:ne(n.keyPanSpeed,0),me=!0;break;case n.keys.RIGHT:ne(-n.keyPanSpeed,0),me=!0;break}me&&(K.preventDefault(),n.update())}function tn(){if(P.length==1)A.set(P[0].pageX,P[0].pageY);else{const K=.5*(P[0].pageX+P[1].pageX),me=.5*(P[0].pageY+P[1].pageY);A.set(K,me)}}function Nt(){if(P.length==1)E.set(P[0].pageX,P[0].pageY);else{const K=.5*(P[0].pageX+P[1].pageX),me=.5*(P[0].pageY+P[1].pageY);E.set(K,me)}}function Le(){const K=P[0].pageX-P[1].pageX,me=P[0].pageY-P[1].pageY,et=Math.sqrt(K*K+me*me);U.set(0,et)}function He(){n.enableZoom&&Le(),n.enablePan&&Nt()}function Oe(){n.enableZoom&&Le(),n.enableRotate&&tn()}function nt(K){if(P.length==1)R.set(K.pageX,K.pageY);else{const et=ct(K),J=.5*(K.pageX+et.x),je=.5*(K.pageY+et.y);R.set(J,je)}w.subVectors(R,A).multiplyScalar(n.rotateSpeed);const me=n.domElement;me&&(fe(2*Math.PI*w.x/me.clientHeight),pe(2*Math.PI*w.y/me.clientHeight)),A.copy(R)}function Q(K){if(P.length==1)N.set(K.pageX,K.pageY);else{const me=ct(K),et=.5*(K.pageX+me.x),J=.5*(K.pageY+me.y);N.set(et,J)}D.subVectors(N,E).multiplyScalar(n.panSpeed),ne(D.x,D.y),E.copy(N)}function Et(K){const me=ct(K),et=K.pageX-me.x,J=K.pageY-me.y,je=Math.sqrt(et*et+J*J);B.set(0,je),z.set(0,Math.pow(B.y/U.y,n.zoomSpeed)),Ne(z.y),U.copy(B)}function ot(K){n.enableZoom&&Et(K),n.enablePan&&Q(K)}function Tt(K){n.enableZoom&&Et(K),n.enableRotate&&nt(K)}function Qe(K){var me,et;n.enabled!==!1&&(P.length===0&&((me=n.domElement)==null||me.ownerDocument.addEventListener("pointermove",G),(et=n.domElement)==null||et.ownerDocument.addEventListener("pointerup",O)),Dt(K),K.pointerType==="touch"?dt(K):ae(K))}function G(K){n.enabled!==!1&&(K.pointerType==="touch"?Ke(K):Te(K))}function O(K){var me,et,J;Ve(K),P.length===0&&((me=n.domElement)==null||me.releasePointerCapture(K.pointerId),(et=n.domElement)==null||et.ownerDocument.removeEventListener("pointermove",G),(J=n.domElement)==null||J.ownerDocument.removeEventListener("pointerup",O)),n.dispatchEvent(f),m=h.NONE}function ae(K){let me;switch(K.button){case 0:me=n.mouseButtons.LEFT;break;case 1:me=n.mouseButtons.MIDDLE;break;case 2:me=n.mouseButtons.RIGHT;break;default:me=-1}switch(me){case Gc.DOLLY:if(n.enableZoom===!1)return;lt(K),m=h.DOLLY;break;case Gc.ROTATE:if(K.ctrlKey||K.metaKey||K.shiftKey){if(n.enablePan===!1)return;de(K),m=h.PAN}else{if(n.enableRotate===!1)return;Fe(K),m=h.ROTATE}break;case Gc.PAN:if(K.ctrlKey||K.metaKey||K.shiftKey){if(n.enableRotate===!1)return;Fe(K),m=h.ROTATE}else{if(n.enablePan===!1)return;de(K),m=h.PAN}break;default:m=h.NONE}m!==h.NONE&&n.dispatchEvent(u)}function Te(K){if(n.enabled!==!1)switch(m){case h.ROTATE:if(n.enableRotate===!1)return;Re(K);break;case h.DOLLY:if(n.enableZoom===!1)return;tt(K);break;case h.PAN:if(n.enablePan===!1)return;st(K);break}}function Ie(K){n.enabled===!1||n.enableZoom===!1||m!==h.NONE&&m!==h.ROTATE||(K.preventDefault(),n.dispatchEvent(u),ht(K),n.dispatchEvent(f))}function Ee(K){n.enabled===!1||n.enablePan===!1||jt(K)}function dt(K){switch(Ze(K),P.length){case 1:switch(n.touches.ONE){case Xc.ROTATE:if(n.enableRotate===!1)return;tn(),m=h.TOUCH_ROTATE;break;case Xc.PAN:if(n.enablePan===!1)return;Nt(),m=h.TOUCH_PAN;break;default:m=h.NONE}break;case 2:switch(n.touches.TWO){case Xc.DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;He(),m=h.TOUCH_DOLLY_PAN;break;case Xc.DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;Oe(),m=h.TOUCH_DOLLY_ROTATE;break;default:m=h.NONE}break;default:m=h.NONE}m!==h.NONE&&n.dispatchEvent(u)}function Ke(K){switch(Ze(K),m){case h.TOUCH_ROTATE:if(n.enableRotate===!1)return;nt(K),n.update();break;case h.TOUCH_PAN:if(n.enablePan===!1)return;Q(K),n.update();break;case h.TOUCH_DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;ot(K),n.update();break;case h.TOUCH_DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;Tt(K),n.update();break;default:m=h.NONE}}function vt(K){n.enabled!==!1&&K.preventDefault()}function Dt(K){P.push(K)}function Ve(K){delete Z[K.pointerId];for(let me=0;me{X(K),n.update()},this.dollyOut=(K=te())=>{Ne(K),n.update()},this.getScale=()=>b,this.setScale=K=>{be(K),n.update()},this.getZoomScale=()=>te(),t!==void 0&&this.connect(t),this.update()}};const r4=rt.forwardRef(({makeDefault:r,camera:e,regress:t,domElement:n,enableDamping:s=!0,keyEvents:u=!1,onChange:f,onStart:h,onEnd:m,...g},_)=>{const x=Nu(z=>z.invalidate),b=Nu(z=>z.camera),M=Nu(z=>z.gl),A=Nu(z=>z.events),R=Nu(z=>z.setEvents),w=Nu(z=>z.set),E=Nu(z=>z.get),N=Nu(z=>z.performance),D=e||b,U=n||A.connected||M.domElement,B=rt.useMemo(()=>new s4(D),[D]);return gz(()=>{B.enabled&&B.update()},-1),rt.useEffect(()=>(u&&B.connect(u===!0?U:u),B.connect(U),()=>{B.dispose()}),[u,U,t,B,x]),rt.useEffect(()=>{const z=I=>{x(),t&&N.regress(),f&&f(I)},H=I=>{h&&h(I)},W=I=>{m&&m(I)};return B.addEventListener("change",z),B.addEventListener("start",H),B.addEventListener("end",W),()=>{B.removeEventListener("start",H),B.removeEventListener("end",W),B.removeEventListener("change",z)}},[f,h,m,B,x,R]),rt.useEffect(()=>{if(r){const z=E().controls;return w({controls:B}),()=>w({controls:z})}},[r,B]),rt.createElement("primitive",kx({ref:_,object:B,enableDamping:s},g))}),o4=Object.assign({"../../glitch_assumption_toggle/src/index.tsx":()=>Hr(()=>import("./index-B1PtMIUq.js"),__vite__mapDeps([0,1])),"../../glitch_ccd/src/index.tsx":()=>Hr(()=>import("./index-CMvlyyxu.js"),__vite__mapDeps([2,3])),"../../glitch_chess_analogy/src/index.tsx":()=>Hr(()=>import("./index-CwQ-ysLn.js"),__vite__mapDeps([4,5])),"./index.tsx":()=>Hr(()=>import("./index-CDPygLjY.js"),[]),"../../glitch_level_questions/src/index.tsx":()=>Hr(()=>import("./index-CRhmqMwz.js"),__vite__mapDeps([6,7])),"../../glitch_lightlane/src/index.tsx":()=>Hr(()=>import("./index-C370CA0j.js"),[]),"../../glitch_migration_paradox/src/index.tsx":()=>Hr(()=>import("./index-BOUPxVBe.js"),__vite__mapDeps([8,9])),"../../glitch_onboarding/src/index.tsx":()=>Hr(()=>import("./index-DOdpM0HQ.js"),__vite__mapDeps([10,11])),"../../glitch_onboarding2/src/index.tsx":()=>Hr(()=>import("./index-MgCr_Urj.js"),__vite__mapDeps([12,13])),"../../glitch_sphere_paradox/src/index.tsx":()=>Hr(()=>import("./index-Be41ZfS7.js"),__vite__mapDeps([14,15])),"../../glitch_voxel_universe/src/index.tsx":()=>Hr(()=>import("./index-DnqmHVBx.js"),__vite__mapDeps([16,17]))}),l4=Object.assign({"../../glitch_assumption_toggle/glitch.manifest.json":_w,"../../glitch_ccd/glitch.manifest.json":Cw,"../../glitch_chess_analogy/glitch.manifest.json":zw,"../glitch.manifest.json":qw,"../../glitch_level_questions/glitch.manifest.json":tC,"../../glitch_lightlane/glitch.manifest.json":cC,"../../glitch_migration_paradox/glitch.manifest.json":_C,"../../glitch_onboarding/glitch.manifest.json":CC,"../../glitch_onboarding2/glitch.manifest.json":zC,"../../glitch_sphere_paradox/glitch.manifest.json":qC,"../../glitch_voxel_universe/glitch.manifest.json":t3}),$y=new Set(["glitch_gallery"]),lS=Object.fromEntries(Object.entries(o4).map(([r,e])=>[gA(r),e]).filter(([r])=>!$y.has(r))),u4=Object.fromEntries(Object.entries(l4).map(([r,e])=>[gA(r),e]).filter(([r])=>!$y.has(r))),uS=Object.keys(lS).sort((r,e)=>r.localeCompare(e)),c4=[{folder:"glitch_epicycles",note:"No exported GlitchComponent entry point yet."},{folder:"glitch_threshold_theory",note:"Standalone HTML experiment, not a React GlitchComponent."}],hA=new Set(["glitch_lightlane"]),dA=[{id:"fluid",label:"Fluid",width:null,height:null,note:"Host size"},{id:"desktop",label:"Desktop",width:1440,height:900,note:"1440×900"},{id:"tablet",label:"Tablet",width:834,height:1112,note:"834×1112"},{id:"mobile",label:"Mobile",width:390,height:844,note:"390×844"},{id:"narrow",label:"Narrow",width:320,height:640,note:"320×640"}],f4={primary:"#7dff9b",accent:"#ffb84d",bg:"#050505",bgSecondary:"#101613",text:"#f3ffee",textMuted:"#8cc99a",border:"rgba(125, 255, 155, 0.22)"},h4=new URL("/assets/blblblbl-D60GLrQ8.mp3",import.meta.url).href,d4=new URL("/assets/blblblbl-BrzQxThI.m4a",import.meta.url).href,p4={glitch_assumption_toggle:{"machine.compute_step":[h4,d4]}},J1={"ui.button_click":[{frequency:640,durationMs:55,gain:.025,type:"square"},{frequency:880,durationMs:40,gain:.018,type:"triangle",delayMs:36}],"ui.button_hover":[{frequency:540,durationMs:40,gain:.012,type:"sine"}],"machine.compute_start":[{frequency:240,durationMs:90,gain:.02,type:"sawtooth"},{frequency:320,durationMs:90,gain:.018,type:"sawtooth",delayMs:82},{frequency:430,durationMs:90,gain:.016,type:"triangle",delayMs:164}],"machine.compute_step":[{frequency:780,durationMs:26,gain:.009,type:"square"}],"machine.compute_done":[{frequency:520,durationMs:80,gain:.018,type:"triangle"},{frequency:780,durationMs:110,gain:.018,type:"triangle",delayMs:70}],"machine.verdict_stable":[{frequency:440,durationMs:90,gain:.016,type:"triangle"},{frequency:554,durationMs:90,gain:.016,type:"triangle",delayMs:65},{frequency:659,durationMs:140,gain:.015,type:"triangle",delayMs:130}],"machine.verdict_alert":[{frequency:180,durationMs:120,gain:.022,type:"sawtooth"},{frequency:140,durationMs:140,gain:.02,type:"sawtooth",delayMs:100}]},pA=Object.fromEntries(dA.map(r=>[r.id,r])),dy=uS.map(r=>{const e=u4[r];return{folder:r,componentId:e?.componentId??rf(r).replace(/\s+/g,"-").toLowerCase(),displayName:e?.displayName??rf(r),version:e?.version??"0.0.0",packageName:e?.packageName??r,tags:e?.tags??[],description:e?.description,thumbnailLabel:e?.thumbnailLabel,kind:hA.has(r)?"canvas":"standard"}}).filter(r=>!($y.has(r.folder)||r.componentId==="gallery"||r.packageName==="@glitch-components/gallery")),m4=Object.fromEntries(dy.map(r=>[r.folder,r])),mA="preview";let jp=null;class g4 extends hb.Component{constructor(){super(...arguments),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidUpdate(e){e.resetKey!==this.props.resetKey&&this.state.error&&this.setState({error:null})}render(){return this.state.error?he.jsxs("div",{className:"gallery-state gallery-state-error",children:[he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Render Error"}),he.jsx("h3",{children:"Component crashed while rendering."}),he.jsx("pre",{className:"gallery-pre",children:this.state.error.stack??this.state.error.message})]}):this.props.children}}function gA(r){const e=r.split("/");return e[e.length-3]??r}function rf(r){return r.replace(/^glitch[_-]?/i,"").replace(/[_-]+/g," ").replace(/\b\w/g,e=>e.toUpperCase())}function v4(r,e){const t=e.metadata??{},n=rf(r).replace(/\s+/g,"-").toLowerCase();return{name:t.name??n,displayName:t.displayName??rf(r),version:t.version??"0.0.0",description:t.description,tags:t.tags??[],paramSchema:t.paramSchema??{},defaultParams:t.defaultParams??{}}}function vA(){if(typeof window>"u")return dy[0]?.folder??"";const r=new URLSearchParams(window.location.search).get("component");return r&&!$y.has(r)&&uS.includes(r)?r:dy[0]?.folder??""}function $1(){return typeof window>"u"?!1:new URLSearchParams(window.location.search).get("mode")===mA}function y4(){if(typeof window>"u")return"fluid";const r=new URLSearchParams(window.location.search).get("viewport");return r&&r in pA?r:"fluid"}async function yA(r){const e=lS[r];if(!e)throw new Error("Missing loader for this component folder.");const t=await e();return{Component:t.default,kind:hA.has(r)?"canvas":"standard",metadata:v4(r,t)}}function _4(r){return r.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function eE(r){if(r===void 0)return"undefined";try{return JSON.stringify(r,null,2)}catch(e){return`Could not serialize payload: ${String(e)}`}}function x4(r,e){return String(r.value)===e}function hv(r,e){if(r.type==="boolean")return!!e;if(r.type==="number"||r.type==="range"){const t=Number(e);return Number.isFinite(t)?t:r.default??0}return r.type==="select"&&typeof e=="string"&&r.options?r.options.find(n=>x4(n,e))?.value??e:e}function b4(r){let e=0;for(let n=0;ne.charAt(0).toUpperCase()).join("")}function M4(){if(typeof window>"u")return null;const r=window.AudioContext||window.webkitAudioContext;return r?(jp||(jp=new r),jp.state==="suspended"&&jp.resume(),jp):null}function E4(r,e){const t=r.currentTime+(e.delayMs??0)/1e3,n=t+e.durationMs/1e3,s=r.createOscillator(),u=r.createGain();s.type=e.type??"triangle",s.frequency.setValueAtTime(e.frequency,t),u.gain.setValueAtTime(1e-4,t),u.gain.exponentialRampToValueAtTime(e.gain??.02,t+.008),u.gain.exponentialRampToValueAtTime(1e-4,n),s.connect(u),u.connect(r.destination),s.start(t),s.stop(n+.02)}function tE(r){const e=M4();if(!e)return;const t=J1[r]??J1["ui.button_click"];for(const n of t)E4(e,n)}function T4(r,e){return p4[r]?.[e]??[]}function A4({entry:r,hostBridge:e,params:t,previewKey:n,onComplete:s,onProgress:u}){const h={config:{id:`${r.metadata.name}-gallery`,name:r.metadata.name,version:r.metadata.version,params:t},theme:f4,host:e,onComplete:s,onProgress:u},m=r.Component;return r.kind==="canvas"?he.jsx("div",{className:"gallery-canvas-shell",children:he.jsxs(Kz,{camera:{position:[8,8,8],fov:45},children:[he.jsx(m,{...h}),he.jsx(r4,{makeDefault:!0})]})},n):he.jsx("div",{className:"gallery-standard-shell",children:he.jsx(m,{...h})},n)}function w4({paramKey:r,schema:e,value:t,onChange:n}){const s=e.label??rf(r),u=`gallery-param-${r}`;if(e.type==="boolean")return he.jsxs("label",{className:"gallery-control gallery-checkbox",htmlFor:u,children:[he.jsxs("span",{className:"gallery-control-copy",children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null]}),he.jsx("input",{checked:!!t,id:u,type:"checkbox",onChange:f=>n(r,f.currentTarget.checked)})]});if(e.type==="select")return he.jsxs("label",{className:"gallery-control",htmlFor:u,children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsx("select",{className:"gallery-input",id:u,value:String(t??""),onChange:f=>n(r,hv(e,f.currentTarget.value)),children:(e.options??[]).map(f=>he.jsx("option",{value:String(f.value),children:f.label},`${r}-${f.label}-${f.value}`))})]});if(e.type==="range"){const f=typeof t=="number"?t:Number(e.default??0);return he.jsxs("div",{className:"gallery-control",children:[he.jsx("label",{className:"gallery-control-label",htmlFor:u,children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsxs("div",{className:"gallery-range-row",children:[he.jsx("input",{className:"gallery-range",id:u,max:e.max,min:e.min,step:e.step,type:"range",value:f,onChange:h=>n(r,hv(e,h.currentTarget.value))}),he.jsx("input",{className:"gallery-number",max:e.max,min:e.min,step:e.step,type:"number",value:f,onChange:h=>n(r,hv(e,h.currentTarget.value))})]})]})}return e.type==="number"?he.jsxs("label",{className:"gallery-control",htmlFor:u,children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsx("input",{className:"gallery-input",id:u,max:e.max,min:e.min,step:e.step,type:"number",value:typeof t=="number"?t:Number(e.default??0),onChange:f=>n(r,hv(e,f.currentTarget.value))})]}):he.jsxs("label",{className:"gallery-control",htmlFor:u,children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsx("input",{className:"gallery-input",id:u,type:e.type==="color"?"color":"text",value:typeof t=="string"?t:String(t??""),onChange:f=>n(r,f.currentTarget.value)})]})}function C4(){return rt.useEffect(()=>{if(typeof document>"u")return;const r=$1()?"preview":"shell";return document.body.dataset.galleryMode=r,()=>{delete document.body.dataset.galleryMode}},[]),$1()?he.jsx(N4,{}):he.jsx(R4,{})}function R4(){const[r,e]=rt.useState(vA),[t,n]=rt.useState(y4),[s,u]=rt.useState({}),[f,h]=rt.useState({}),[m,g]=rt.useState({}),[_,x]=rt.useState(null),[b,M]=rt.useState(null),[A,R]=rt.useState([]),[w,E]=rt.useState(0),N=rt.useRef(null),[D,U]=rt.useState(!1),B=rt.useCallback((q,ne)=>{R(be=>[{id:Date.now()+be.length,kind:q,payload:ne,timestamp:_4(new Date)},...be].slice(0,32))},[]),z=rt.useCallback(async q=>{if(s[q])return s[q];if(!lS[q])return h(ne=>({...ne,[q]:{status:"error",error:"Missing loader for this component folder."}})),null;h(ne=>({...ne,[q]:{status:"loading"}}));try{const ne=await yA(q);return u(be=>({...be,[q]:ne})),g(be=>be[q]?be:{...be,[q]:{...ne.metadata.defaultParams}}),h(be=>({...be,[q]:{status:"idle"}})),ne}catch(ne){const be=ne instanceof Error?ne.message:String(ne);return h(Ne=>({...Ne,[q]:{status:"error",error:be}})),B("system",{component:q,error:be,type:"load-error"}),null}},[B,s]);rt.useEffect(()=>{if(!r)return;const q=window.setTimeout(()=>{z(r)},0);return()=>window.clearTimeout(q)},[z,r]),rt.useEffect(()=>{if(!r||typeof window>"u")return;const q=new URL(window.location.href);q.searchParams.set("component",r),q.searchParams.set("viewport",t),window.history.replaceState({},"",q)},[r,t]),rt.useEffect(()=>{const q=window.setTimeout(()=>{x(null),M(null),R([]),E(ne=>ne+1),U(!1)},0);return()=>window.clearTimeout(q)},[r]);const H=rt.useCallback(q=>{N.current?.contentWindow&&N.current.contentWindow.postMessage({source:"glitch-gallery-shell",type:"sync",payload:q},window.location.origin)},[]);rt.useEffect(()=>{const q=ne=>{if(!(ne.origin!==window.location.origin||!ne.data||ne.data.source!=="glitch-gallery-preview")){if(ne.data.type==="ready"){U(!0);return}if(ne.data.type==="progress"){x(ne.data.percent),B("progress",{percent:ne.data.percent});return}if(ne.data.type==="complete"){M(ne.data.payload),B("complete",ne.data.payload);return}ne.data.type==="log"&&B(ne.data.kind,ne.data.payload)}};return window.addEventListener("message",q),()=>window.removeEventListener("message",q)},[B]);const W=r?s[r]:void 0,I=r?m4[r]:void 0,P=r?f[r]:void 0,Z=pA[t],se=rt.useMemo(()=>r?m[r]??W?.metadata.defaultParams??{}:{},[m,W?.metadata.defaultParams,r]);rt.useEffect(()=>{!r||!D||H({component:r,params:se,revision:w})},[H,D,w,se,r]);const te=rt.useCallback((q,ne)=>{r&&g(be=>({...be,[r]:{...be[r]??{},[q]:ne}}))},[r]),fe=rt.useCallback(()=>{!r||!W||(g(q=>({...q,[r]:{...W.metadata.defaultParams}})),E(q=>q+1),B("system",{component:r,type:"params-reset"}))},[B,W,r]),pe=rt.useCallback(()=>{r&&(E(q=>q+1),B("system",{component:r,type:"preview-remount"}))},[B,r]),Y=rt.useMemo(()=>{if(typeof window>"u")return"";const q=new URL(window.location.href);return q.search="",q.searchParams.set("mode",mA),q.searchParams.set("component",r),q.toString()},[r]);return he.jsxs("div",{className:"gallery-shell","data-gallery-shell":"true",children:[he.jsxs("aside",{className:"gallery-sidebar",children:[he.jsxs("div",{className:"gallery-sidebar-header",children:[he.jsx("span",{className:"gallery-eyebrow",children:"Dev Host"}),he.jsx("h1",{children:"Glitch Gallery"}),he.jsx("div",{className:"gallery-viewport-switcher gallery-sidebar-viewport-switcher","data-gallery-viewport-switcher":"true",children:dA.map(q=>he.jsxs("button",{className:`gallery-viewport-button gallery-viewport-button-compact${t===q.id?" is-active":""}`,"data-gallery-viewport":q.id,type:"button",onClick:()=>n(q.id),children:[q.label," : ",q.width?`${q.width}px`:"Fluid"]},q.id))})]}),he.jsx("div",{className:"gallery-section",children:he.jsxs("div",{className:"gallery-selected-card",children:[he.jsx("span",{className:"gallery-eyebrow",children:"Selected"}),he.jsx("h2",{className:"gallery-selected-title",children:W?.metadata.displayName??I?.displayName??rf(r)}),he.jsx("p",{className:"gallery-selected-subtitle",children:W?.metadata.description??I?.description??"Gallery loads components lazily and hosts them with the same sound bridge/event logging model used for Glitch University testing."}),he.jsxs("div",{className:"gallery-toolbar-actions gallery-sidebar-actions",children:[he.jsx("button",{className:"gallery-button",type:"button",onClick:pe,children:"Remount Preview"}),he.jsx("button",{className:"gallery-button",type:"button",onClick:fe,disabled:!W,children:"Reset Params"})]})]})}),he.jsxs("div",{className:"gallery-section",children:[he.jsxs("div",{className:"gallery-section-header",children:[he.jsx("h2",{children:"GlitchComponents"}),he.jsx("span",{className:"gallery-badge",children:uS.length})]}),he.jsx("div",{className:"gallery-list","data-gallery-component-list":"true",children:dy.map(q=>{const ne=q.folder,be=s[ne],Ne=r===ne,X=f[ne]?.status??"idle";return he.jsxs("button",{className:`gallery-list-item${Ne?" is-active":""}`,"data-gallery-component":ne,type:"button",onClick:()=>e(ne),style:b4(ne),children:[he.jsx("span",{className:"gallery-list-thumb","aria-hidden":"true",children:he.jsxs("span",{className:"gallery-list-thumb-frame",children:[he.jsx("span",{className:"gallery-list-thumb-type",children:q.kind==="canvas"?"Canvas":"Standard"}),he.jsx("strong",{children:q.thumbnailLabel??S4(q.componentId)}),he.jsx("span",{className:"gallery-list-thumb-id",children:q.componentId})]})}),he.jsxs("span",{className:"gallery-list-copy",children:[he.jsx("span",{className:"gallery-list-title",children:be?.metadata.displayName??q.displayName}),he.jsx("span",{className:"gallery-list-subtitle",children:ne}),he.jsx("span",{className:"gallery-list-note",children:q.tags.slice(0,3).join(" · ")||"No tags exported"})]}),he.jsxs("span",{className:"gallery-list-status",children:[he.jsxs("span",{className:"gallery-badge gallery-badge-muted",children:["v",q.version]}),X==="loading"?he.jsx("span",{className:"gallery-badge",children:"Loading"}):null,X==="error"?he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Error"}):null]})]},ne)})})]}),he.jsxs("div",{className:"gallery-section",children:[he.jsx("div",{className:"gallery-section-header",children:he.jsx("h2",{children:"Not Yet Exported"})}),he.jsx("div",{className:"gallery-list",children:c4.map(q=>he.jsxs("div",{className:"gallery-list-item is-disabled",children:[he.jsxs("span",{className:"gallery-list-copy",children:[he.jsx("span",{className:"gallery-list-title",children:rf(q.folder)}),he.jsx("span",{className:"gallery-list-subtitle",children:q.folder}),he.jsx("span",{className:"gallery-list-note",children:q.note})]}),he.jsx("span",{className:"gallery-badge gallery-badge-muted",children:"Raw"})]},q.folder))})]})]}),he.jsx("main",{className:"gallery-main",children:he.jsxs("div",{className:"gallery-grid",children:[he.jsxs("section",{className:"gallery-preview-panel",children:[he.jsxs("div",{className:"gallery-panel-header",children:[he.jsx("span",{className:"gallery-badge",children:r}),he.jsxs("div",{className:"gallery-stage-badges",children:[he.jsx("span",{className:"gallery-badge gallery-badge-muted",children:Z.width?`${Z.width}px`:"Fluid"}),_!==null?he.jsxs("span",{className:"gallery-badge gallery-badge-accent",children:[Math.round(_),"%"]}):null]})]}),he.jsx("div",{className:"gallery-stage","data-gallery-stage":r,children:he.jsx("div",{className:`gallery-stage-viewport${Z.width?"":" is-fluid"}`,"data-gallery-preview-viewport":t,style:Z.width?{"--gallery-preview-width":`${Z.width}px`,"--gallery-preview-height":`${Z.height}px`}:void 0,children:P?.status==="error"?he.jsxs("div",{className:"gallery-state gallery-state-error",children:[he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Load Error"}),he.jsx("h3",{children:"Unable to import this component."}),he.jsx("pre",{className:"gallery-pre",children:P.error})]}):W?he.jsx("iframe",{ref:N,className:"gallery-preview-frame","data-gallery-preview-frame":r,src:Y,title:`${r} preview`},r):he.jsxs("div",{className:"gallery-state",children:[he.jsx("span",{className:"gallery-badge",children:"Loading"}),he.jsx("h3",{children:"Importing component metadata…"}),he.jsx("p",{children:"The gallery keeps the catalog light and only imports the selected component bundle."})]})})})]}),he.jsxs("aside",{className:"gallery-inspector",children:[he.jsxs("section",{className:"gallery-panel",children:[he.jsx("div",{className:"gallery-section-header",children:he.jsx("h3",{children:"Metadata"})}),W?he.jsxs("dl",{className:"gallery-metadata",children:[he.jsxs("div",{children:[he.jsx("dt",{children:"Name"}),he.jsx("dd",{children:W.metadata.name})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Version"}),he.jsx("dd",{children:W.metadata.version??I?.version})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Wrapper"}),he.jsx("dd",{children:W.kind==="canvas"?"Canvas host":"Standard host"})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Package"}),he.jsx("dd",{children:I?.packageName??"Unknown"})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Viewport"}),he.jsx("dd",{children:Z.width?`${Z.width}px fixed width`:"Fluid host width"})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Tags"}),he.jsx("dd",{children:W.metadata.tags?.length?W.metadata.tags.join(", "):I?.tags.length?I.tags.join(", "):"None exported"})]})]}):he.jsx("p",{className:"gallery-muted",children:"Metadata appears after the module loads."})]}),he.jsxs("section",{className:"gallery-panel gallery-panel-scroll",children:[he.jsxs("div",{className:"gallery-section-header",children:[he.jsx("h3",{children:"Params"}),W?he.jsx("span",{className:"gallery-badge",children:Object.keys(W.metadata.paramSchema).length}):null]}),W&&Object.keys(W.metadata.paramSchema).length>0?he.jsx("div",{className:"gallery-controls gallery-controls-scroll",children:Object.entries(W.metadata.paramSchema).map(([q,ne])=>he.jsx(w4,{onChange:te,paramKey:q,schema:ne,value:se[q]??ne.default},q))}):he.jsx("p",{className:"gallery-muted",children:"This component does not expose parameter controls."})]}),he.jsxs("section",{className:"gallery-panel",children:[he.jsx("div",{className:"gallery-section-header",children:he.jsx("h3",{children:"Latest Result"})}),b?he.jsx("pre",{className:"gallery-pre",children:eE(b)}):he.jsx("p",{className:"gallery-muted",children:"No completion payload yet."})]}),he.jsxs("section",{className:"gallery-panel",children:[he.jsxs("div",{className:"gallery-section-header",children:[he.jsx("h3",{children:"Event Log"}),he.jsx("button",{className:"gallery-button gallery-button-quiet",type:"button",onClick:()=>R([]),children:"Clear"})]}),A.length>0?he.jsx("div",{className:"gallery-log-list",children:A.map(q=>he.jsxs("article",{className:"gallery-log-item",children:[he.jsxs("div",{className:"gallery-log-header",children:[he.jsx("span",{className:`gallery-badge gallery-badge-${q.kind}`,children:q.kind}),he.jsx("span",{className:"gallery-log-time",children:q.timestamp})]}),he.jsx("pre",{className:"gallery-pre",children:eE(q.payload)})]},q.id))}):he.jsx("p",{className:"gallery-muted",children:"Progress, completion, host events, and sound calls appear here."})]})]})]})})]})}function N4(){const[r,e]=rt.useState(vA),[t,n]=rt.useState(null),[s,u]=rt.useState(null),[f,h]=rt.useState({}),[m,g]=rt.useState(0),_=rt.useRef({}),x=rt.useCallback(M=>{typeof window>"u"||window.parent===window||window.parent.postMessage(M,window.location.origin)},[]);rt.useEffect(()=>{x({source:"glitch-gallery-preview",type:"ready"})},[x]),rt.useEffect(()=>{const M=A=>{if(A.origin!==window.location.origin||!A.data||A.data.source!=="glitch-gallery-shell"||A.data.type!=="sync")return;const R=A.data.payload;e(R.component),h(R.params),g(R.revision)};return window.addEventListener("message",M),()=>window.removeEventListener("message",M)},[]),rt.useEffect(()=>{let M=!1;return yA(r).then(A=>{M||(n(A),u(null),h(R=>Object.keys(R).length>0?R:{...A.metadata.defaultParams}))}).catch(A=>{if(M)return;const R=A instanceof Error?A.message:String(A);n(null),u(R),x({source:"glitch-gallery-preview",type:"log",kind:"system",payload:{type:"load-error",component:r,error:R}})}),()=>{M=!0}},[x,r]);const b=rt.useMemo(()=>({playSound(M,A){const R=`${r}:${M}`,w=T4(r,M);let E=!1;if(w.length>0&&typeof window<"u"){E=!0;const[N]=w,D=_.current[R]??new Audio(N);_.current[R]=D,D.pause(),D.currentTime=0;const U=D.play();U&&U.catch(()=>{tE(M)})}E||tE(M),x({source:"glitch-gallery-preview",type:"log",kind:"sound",payload:{id:M,payload:A}})},stopSound(M,A){const R=`${r}:${M}`,w=_.current[R];w&&(w.pause(),w.currentTime=0),x({source:"glitch-gallery-preview",type:"log",kind:"sound",payload:{id:`stop:${M}`,payload:A}})},emit(M,A){x({source:"glitch-gallery-preview",type:"log",kind:"host",payload:{type:M,payload:A}})}}),[x]);return s?he.jsx("div",{className:"gallery-runtime-root",children:he.jsxs("div",{className:"gallery-state gallery-state-error",children:[he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Load Error"}),he.jsx("h3",{children:"Unable to import this component."}),he.jsx("pre",{className:"gallery-pre",children:s})]})}):t?he.jsx("div",{className:"gallery-runtime-root","data-gallery-runtime":r,children:he.jsx(g4,{resetKey:`${r}:${m}`,children:he.jsx(A4,{entry:t,hostBridge:b,onComplete:M=>{x({source:"glitch-gallery-preview",type:"complete",payload:M})},onProgress:M=>{x({source:"glitch-gallery-preview",type:"progress",percent:M})},params:f,previewKey:`${r}:${m}`})})}):he.jsx("div",{className:"gallery-runtime-root",children:he.jsxs("div",{className:"gallery-state",children:[he.jsx("span",{className:"gallery-badge",children:"Loading"}),he.jsx("h3",{children:"Importing preview runtime…"})]})})}lw.createRoot(document.getElementById("root")).render(he.jsx(C4,{}));export{PD as A,as as B,yt as C,Uo as D,Ny as F,C4 as G,QE as I,uR as M,Dl as O,zi as P,Pa as Q,my as R,yr as S,Xc as T,iS as U,j as V,jT as W,kx as _,gz as a,ze as b,ow as c,XE as d,Dz as e,wl as f,Kz as g,r4 as h,Cn as i,he as j,FD as k,Gc as l,eb as m,of as n,Lb as o,Kp as p,qy as q,rt as r,Xb as s,Yi as t,Nu as u,lf as v,Vu as w,NT as x,RT as y,CT as z}; diff --git a/dist/glitch/glitch_gallery/assets/index-CMvlyyxu.js b/dist/glitch/glitch_gallery/assets/index-CMvlyyxu.js new file mode 100644 index 0000000..99fa45f --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-CMvlyyxu.js @@ -0,0 +1 @@ +import{r as o,j as e}from"./index-CEeZxcxj.js";const F=18,W=F*F,O=1e3,L=12,K=O*L,Q=K+O,J=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],I=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],j=[{label:"Red",shortLabel:"R",wavelength:690,hue:2,saturation:100,lightness:66,energy:.44,decay:700,radius:.28},{label:"Orange",shortLabel:"O",wavelength:620,hue:18,saturation:100,lightness:64,energy:.5,decay:760,radius:.3},{label:"Amber",shortLabel:"A",wavelength:590,hue:36,saturation:100,lightness:66,energy:.56,decay:820,radius:.32},{label:"Yellow",shortLabel:"Y",wavelength:570,hue:56,saturation:100,lightness:69,energy:.62,decay:900,radius:.34},{label:"Green",shortLabel:"G",wavelength:530,hue:108,saturation:84,lightness:66,energy:.7,decay:980,radius:.36},{label:"Cyan",shortLabel:"C",wavelength:500,hue:188,saturation:94,lightness:68,energy:.8,decay:1120,radius:.4},{label:"Blue",shortLabel:"B",wavelength:450,hue:232,saturation:100,lightness:71,energy:.92,decay:1300,radius:.45},{label:"Violet",shortLabel:"V",wavelength:410,hue:274,saturation:100,lightness:74,energy:1.08,decay:1540,radius:.52}],ee=[{page:"binning",title:"Count events per second",diagram:"count-time",rule:"Group event rows into 1 second time bins and count how many clicks fall into each bin.",output:"Light curve / count periodogram"},{page:"flux",title:"Sum energy per second",diagram:"energy-time",rule:"Group event rows into 1 second time bins and sum the total photon energy inside each bin.",output:"Flux variability"},{page:"periodogram",title:"Sum energy by wavelength bin",diagram:"energy-wavelength",rule:"Group event rows by wavelength and sum the energy across the recent time window.",output:"Spectrum"},{page:"spectrogram",title:"Count events by wavelength over time",diagram:"count-wavelength-time",rule:"Group event rows into both time bins and wavelength bins, then count clicks in each cell.",output:"Spectrogram"}],U={"transition-photon":{title:"Every photon has energy",body:"Colour tells us something about wavelength and energy. Before we record the hits, it helps to see what that means.",nextPage:"photon",emoji:"😶‍🌫️"},"transition-eventlist":{title:"Now record the hits",body:"Each photon hit becomes one row with a time, an energy, and a CCD position.",nextPage:"eventlist",emoji:"📝"},"transition-binning":{title:"Chart #1 : Brightness over time",body:"We now use the data and make the first chart",nextPage:"binning",emoji:"🫰🏻⏰"},"transition-flux":{title:"Chart #2: Energy over time",body:"Instead of counting clicks equally, we sum up the energy of each phton inside each time bin.",nextPage:"flux",emoji:"🔥⏰"},"transition-periodogram":{title:"Chart #3: Build a spectrum",body:"The same event list can also be grouped by wavelength. Is it lots of low-energy red photons, or high-energy violet ones? Let`s find out.",nextPage:"periodogram",emoji:"🌈"},"transition-spectrogram":{title:"Chart #3 : Let´s mix things up",body:"Now try both time bins, and wavelength/energy bins at the same time!",nextPage:"spectrogram",emoji:"🤪"}},Y=["receptor","photon","eventlist","binning","flux","periodogram","spectrogram"];function se(){return Array.from({length:W},(t,n)=>({id:n,level:0,size:.22,decay:900,tint:"hsla(0 0% 100% / 0)",glow:"hsla(0 0% 100% / 0)"}))}function te(){return Array.from({length:j.length},()=>0)}function ne(){return{cells:se(),eventHistory:[],totalPhotons:0}}function G(t,n,s){return Math.min(s,Math.max(n,t))}function ae(t){const n=Math.floor(t/1e3),s=Math.floor(n/60),a=n%60,c=Math.floor(t%1e3/10);return[s,a].map(r=>String(r).padStart(2,"0")).join(":")+"."+String(c).padStart(2,"0")}function ce(t){const n=t.replace(/^#/,"");return J.includes(n)?n:"orbit"}function z(){return typeof window>"u"?"orbit":ce(window.location.hash)}function B(t,n,s,a){return`hsla(${t} ${n}% ${s}% / ${a})`}function k(t,n){const s=j[t],a=G(.08+n*.88,.08,.96),c=Math.min(84,s.lightness+n*10);return`hsla(${s.hue} ${s.saturation}% ${c}% / ${a})`}function V(t,n,s,a){if(t.length===0)return"";const c=a?.min??Math.min(...t),r=a?.max??Math.max(...t),i=Math.max(r-c,1e-4);return t.map((d,p)=>{const u=t.length===1?n/2:p/(t.length-1)*n,m=s-(d-c)/i*(s-8)-4;return`${p===0?"M":"L"} ${u.toFixed(2)} ${m.toFixed(2)}`}).join(" ")}function re(t,n,s,a){return t.length===0?"":`${V(t,n,s,a)} L ${n} ${s} L 0 ${s} Z`}function ie(t){const s=G(t,0,1)*(j.length-1),a=Math.floor(s),c=Math.min(j.length-1,Math.ceil(s)),r=s-a,i=j[a],d=j[c],p=(u,m)=>u+(m-u)*r;return{label:r<.5?i.label:d.label,wavelength:p(i.wavelength,d.wavelength),energy:p(i.energy,d.energy),hue:p(i.hue,d.hue),saturation:p(i.saturation,d.saturation),lightness:p(i.lightness,d.lightness)}}function le(){return Array.from({length:42},(t,n)=>({x:n*73%100/100,y:(n*37+11)%100/100,size:.8+n*17%7*.22,opacity:.24+n*29%10*.05}))}function oe(t){const n=le(),s=t*24e-5,c=Math.cos(s)*178,r=Math.sin(s*.72)*34,i=Math.sin(s)*132,p=c*.72,u=r*.45,m=T=>1+T/620,N=460+(0-p)*.72,f=264+(0-u)*.42+i*.08,M=G(m(-p*.05),.88,1.14),C=460+(c-p)*.72,y=236+(r-u)*.5-i*.16,v=G(m(i),.82,1.34),h=s*.9;return{earth:{x:N,y:f,scale:M},telescope:{x:C,y,scale:v,rotation:h},stars:n}}function de(){const[t,n]=o.useState(0);o.useEffect(()=>{let a=0;const c=performance.now(),r=i=>{n(i-c),a=window.requestAnimationFrame(r)};return a=window.requestAnimationFrame(r),()=>window.cancelAnimationFrame(a)},[]);const s=oe(t);return e.jsxs("div",{className:"ccd-orbit-screen",children:[e.jsxs("div",{className:"ccd-orbit-copy",children:[e.jsx("span",{className:"ccd-stat-label",children:"Glitch Hunters's guide to telescopes"}),e.jsx("h2",{children:"Orbital telescopes"}),e.jsx("p",{children:"Humanity has launched multiple telescopes into orbit, each designed to observe the universe from different vantage points."})]}),e.jsx("div",{className:"ccd-orbit-stage",children:e.jsxs("svg",{className:"ccd-orbit-svg",viewBox:"0 0 920 520","aria-label":"Telescope orbiting Earth",children:[e.jsxs("defs",{children:[e.jsxs("radialGradient",{id:"orbitEarthGlow",cx:"42%",cy:"34%",r:"68%",children:[e.jsx("stop",{offset:"0%",stopColor:"#6bd3ff"}),e.jsx("stop",{offset:"36%",stopColor:"#2f88d8"}),e.jsx("stop",{offset:"72%",stopColor:"#124180"}),e.jsx("stop",{offset:"100%",stopColor:"#061327"})]}),e.jsxs("linearGradient",{id:"orbitCubeFront",x1:"0",x2:"1",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#fff7e9"}),e.jsx("stop",{offset:"100%",stopColor:"#ff9d77"})]}),e.jsxs("linearGradient",{id:"orbitCubeSide",x1:"0",x2:"1",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#d3caf7"}),e.jsx("stop",{offset:"100%",stopColor:"#7967db"})]})]}),s.stars.map((a,c)=>e.jsx("circle",{cx:a.x*920,cy:a.y*520,fill:"rgba(255,255,255,0.92)",opacity:a.opacity,r:a.size},c)),e.jsx("ellipse",{className:"ccd-orbit-track",cx:s.earth.x,cy:s.earth.y+8,rx:174*s.earth.scale,ry:62*s.earth.scale}),e.jsxs("g",{transform:`translate(${s.earth.x} ${s.earth.y}) scale(${s.earth.scale})`,children:[e.jsx("circle",{className:"ccd-orbit-earth-atmosphere",cx:"0",cy:"0",r:"112"}),e.jsx("circle",{cx:"0",cy:"0",fill:"url(#orbitEarthGlow)",r:"96"}),e.jsx("path",{className:"ccd-orbit-continent",d:"M -38 -20 C -18 -46 8 -44 22 -12 C 36 10 18 26 -4 32 C -20 38 -42 22 -48 0 Z"}),e.jsx("path",{className:"ccd-orbit-continent",d:"M 18 20 C 38 14 54 26 48 48 C 42 62 18 62 10 44 C 6 34 8 24 18 20 Z"}),e.jsx("circle",{className:"ccd-orbit-night-shadow",cx:"30",cy:"4",r:"92"})]}),e.jsx("g",{transform:`translate(${s.telescope.x} ${s.telescope.y}) rotate(${s.telescope.rotation*180/Math.PI}) scale(${s.telescope.scale})`,children:e.jsxs("g",{className:"ccd-orbit-telescope",children:[e.jsx("polygon",{points:"-18,-18 12,-28 12,4 -18,14",fill:"url(#orbitCubeFront)"}),e.jsx("polygon",{points:"12,-28 30,-14 30,18 12,4",fill:"url(#orbitCubeSide)"}),e.jsx("polygon",{points:"-18,-18 0,-4 30,-14 12,-28",fill:"rgba(255,255,255,0.82)"}),e.jsx("rect",{x:"-42",y:"-5",width:"18",height:"10",rx:"2.5",fill:"#d9d2f5"}),e.jsx("rect",{x:"30",y:"-4",width:"22",height:"8",rx:"3",fill:"#ffc66f"}),e.jsx("rect",{x:"-6",y:"18",width:"12",height:"34",rx:"5",fill:"#bdb4e8"}),e.jsx("rect",{x:"-34",y:"30",width:"68",height:"10",rx:"5",fill:"#8e78ff",opacity:"0.88"})]})})]})}),e.jsx("div",{className:"ccd-orbit-actions",children:e.jsx("a",{className:"ccd-experience-button",href:"#intro",children:"Next"})})]})}function q(t,n,s,a){const c=Array.from({length:L},()=>0),r=Math.max(0,s-L);return t.forEach(i=>{const d=Math.floor((i.time-n)/O);d=s||(c[d-r]+=a(i))}),c}function he(t,n,s){const a=Array.from({length:j.length},()=>Array.from({length:L},()=>0)),c=Math.max(0,s-L);return t.forEach(r=>{const i=Math.floor((r.time-n)/O);i=s||(a[r.photonIndex][i-c]+=1)}),a}function me(t,n,s){const a=te();if(s<=0)return a;const c=Math.max(0,s-L);return t.forEach(r=>{const i=Math.floor((r.time-n)/O);i>=c&&i"u")return null;const t=window.AudioContext??window.webkitAudioContext;return t?new t:null}function pe(t){const[n,s]=o.useState(()=>ne()),[a,c]=o.useState(0),[r,i]=o.useState(!1),[d,p]=o.useState(!0),[u]=o.useState(()=>Date.now()),m=o.useRef(u),N=o.useRef(null),f=o.useRef(null),M=o.useRef(t),C=o.useRef(null);o.useEffect(()=>{M.current=t},[t]);const y=()=>{const h=C.current??xe();if(!h){p(!1);return}C.current=h,h.resume().then(()=>{p(!0),i(h.state==="running")}).catch(()=>{i(!1)})};o.useEffect(()=>{const h=()=>{y()};return window.addEventListener("pointerdown",h,{passive:!0}),window.addEventListener("keydown",h),()=>{window.removeEventListener("pointerdown",h),window.removeEventListener("keydown",h)}},[]),o.useEffect(()=>()=>{C.current&&C.current.close()},[]);const v=(h,T,R)=>{if(!M.current)return;const E=C.current;if(!E||E.state!=="running")return;const x=E.currentTime+R,b=E.createOscillator(),A=E.createGain(),w=E.createBiquadFilter(),_=j[h],l=820+h*92,g=.006+T*.004,S=.018+T*.02;b.type="triangle",b.frequency.setValueAtTime(l,x),b.frequency.exponentialRampToValueAtTime(l*.74,x+S),w.type="bandpass",w.frequency.setValueAtTime(1400+_.hue*2.4,x),w.Q.setValueAtTime(1.4,x),A.gain.setValueAtTime(1e-4,x),A.gain.exponentialRampToValueAtTime(g,x+.003),A.gain.exponentialRampToValueAtTime(1e-4,x+S),b.connect(w),w.connect(A),A.connect(E.destination),b.start(x),b.stop(x+S+.008)};return o.useEffect(()=>{const h=()=>{c(Date.now()-m.current)};return h(),N.current=window.setInterval(h,90),()=>{N.current!==null&&window.clearInterval(N.current)}},[]),o.useEffect(()=>{let h=!1;const T=()=>{if(h)return;const R=[],E=[];s(x=>{const b=Date.now(),A=x.cells.map(g=>{if(g.level<=.001)return g.level===0?g:{...g,level:0};const S=36/g.decay;return{...g,level:Math.max(0,g.level-S),size:Math.max(.2,g.size-S*.3)}});let w=x.totalPhotons;const _=Math.random()<.28?2:1;for(let g=0;g<_;g+=1){const S=Math.floor(Math.random()*W),$=Math.floor(Math.random()*j.length),P=j[$],H=A[S],X=G(H.level+P.energy,0,1.25),Z=Math.max(H.size,P.radius+P.energy*.22);A[S]={...H,level:X,size:Z,decay:Math.max(H.decay,P.decay),tint:B(P.hue,P.saturation,P.lightness,.96),glow:B(P.hue,P.saturation,Math.min(88,P.lightness+8),.78)},w+=1,R.push({photonIndex:$,energy:P.energy}),E.push({time:b,photonIndex:$,energy:P.energy,cellIndex:S})}const l=[...x.eventHistory,...E].filter(g=>b-g.time{v(x.photonIndex,x.energy,b*.012)}),f.current=window.setTimeout(T,36+Math.random()*70)};return T(),()=>{h=!0,f.current!==null&&window.clearTimeout(f.current)}},[]),{audioArmed:r,audioSupported:d,enableAudio:y,elapsedMilliseconds:a,exposureStartTime:u,simulation:n}}function ge({cells:t,activeHits:n,averageEnergy:s,guide:a}){return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-stage",children:[e.jsx("div",{className:"ccd-grid-frame",children:e.jsxs("div",{className:"ccd-grid","aria-label":"Photon receptor grid",children:[t.map(c=>e.jsx("div",{className:"ccd-cell",children:e.jsx("span",{className:"ccd-hit",style:{opacity:c.opacity,transform:`translate(-50%, -50%) scale(${c.scale})`,width:`${c.size}rem`,height:`${c.size}rem`,background:c.tint,boxShadow:`0 0 ${.9+c.opacity*1.8}rem ${c.glow}`}})},c.id)),e.jsx("div",{className:"ccd-grid-glow"})]})}),a||null,e.jsxs("div",{className:"ccd-readout","aria-label":"Sensor readout",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Active pixels"}),e.jsx("strong",{children:String(n).padStart(3,"0")})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Mean charge"}),e.jsx("strong",{children:s.toFixed(3)})]})]})]})})}const je={eyebrow:"Detector Plane",title:"Telescope detector view",description:"The core of the telescope is a camera, called a CCD array. Photons - light from distant galaxies - strike the CCD and light up specific pixels. This is the raw material for the everything a telescope does."},fe={stepLabel:"Step 1",title:"Photons are hitting the detector",body:"Notice how some pixels are bigger than others? They have more energy."};function ve(){return e.jsx("div",{className:"ccd-intro-screen",children:e.jsxs("div",{className:"ccd-intro-panel",children:[e.jsx("div",{className:"ccd-intro-logo-frame","aria-hidden":"true",children:e.jsx("img",{alt:"",className:"ccd-intro-logo",src:"/glitchhunterlogo.png"})}),e.jsx("div",{className:"ccd-intro-brand",children:e.jsx("span",{className:"ccd-intro-brand-mark",children:"Glitch Hunter's"})}),e.jsxs("div",{className:"ccd-intro-copy",children:[e.jsx("h2",{children:"Guide to Telescopes"}),e.jsx("p",{children:"How do they work? What does the telescope actually do?"})]}),e.jsxs("div",{className:"ccd-intro-covers",children:[e.jsx("span",{className:"ccd-stat-label",children:"In this experience, you will see:"}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"01"}),e.jsx("strong",{children:"The CCD"}),e.jsx("p",{children:"The telescope's eye, where photons land."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"02"}),e.jsx("strong",{children:"Energy and wavelength"}),e.jsx("p",{children:"Colour tells us whether a photon is lower-energy red or higher-energy violet."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"03"}),e.jsx("strong",{children:"The event list"}),e.jsx("p",{children:"Each photon hit becomes a recorded row with time, energy, and detector position."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"04"}),e.jsx("strong",{children:"Periodograms"}),e.jsx("p",{children:"Group events by time or wavelength to see brightness and spectral power."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"05"}),e.jsx("strong",{children:"Spectrograms"}),e.jsx("p",{children:"Bin by both time and wavelength to see how the colours evolve."})]})]}),e.jsx("div",{className:"ccd-intro-actions",children:e.jsx("a",{className:"ccd-experience-button",href:"#receptor",children:"Next"})})]})})}function be(t){return t in U}function ye({onComplete:t}){return e.jsx("div",{className:"ccd-closing-screen",children:e.jsxs("div",{className:"ccd-closing-panel",children:[e.jsx("span",{className:"ccd-stat-label",children:"Key Concepts"}),e.jsx("h2",{children:"What to remember"}),e.jsxs("div",{className:"ccd-closing-grid",children:[e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Binning"}),e.jsx("p",{children:"Grouping events because they arrive at a similar time, or have a similar colour."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Energy / wavelength"}),e.jsx("p",{children:"Red means long wavelength and low energy. Violet means short wavelength and high energy."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Periodogram"}),e.jsx("p",{children:"How the brightness goes up and down over time."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Spectrogram"}),e.jsx("p",{children:"How much there is of each colour."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Periodo-spectrogram"}),e.jsx("p",{children:"Binning by both time and wavelength / frequency."})]})]}),e.jsx("p",{className:"ccd-closing-message",children:"You're on your way to becoming a Cosmotologist!"}),e.jsxs("div",{className:"ccd-closing-actions",children:[e.jsx("a",{className:"ccd-experience-button ccd-experience-button-secondary",href:"#orbit",children:"Start Over"}),e.jsx("button",{className:"ccd-experience-button",onClick:()=>{t?.({success:!0,score:100,data:{completedExperience:"ccd-photon-explorer",finalPage:"closing"}})},type:"button",children:"Take the Glitch Gate"})]})]})})}function Ne({page:t}){const n=U[t];return e.jsx("div",{className:"ccd-transition-screen",children:e.jsxs("div",{className:"ccd-transition-card",children:[e.jsx("span",{className:"ccd-stat-label emojilarge",children:n.emoji}),e.jsx("h2",{children:n.title}),e.jsx("p",{children:n.body}),e.jsx("div",{className:"ccd-transition-actions",children:e.jsx("a",{className:"ccd-experience-button",href:`#${n.nextPage}`,children:"Next"})})]})})}const D={eyebrow:"",title:"Space telescope 101",description:"In this interactive tutorial, you will see how photons hit eye of the telescope, and how that is turned into turned into different scientific charts. We`ll cover:"};function we(){const[t,n]=o.useState(.5),s=ie(t),a=B(s.hue,s.saturation,s.lightness,.98);return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-energy-panel",children:[e.jsxs("div",{className:"ccd-energy-scale",children:[e.jsx("div",{className:"ccd-energy-spectrum","aria-hidden":"true",style:{"--ccd-spectrum-position":`${t*100}%`,"--ccd-spectrum-color":a}}),e.jsx("div",{className:"ccd-energy-slider-wrap",children:e.jsx("input",{"aria-label":"Photon wavelength and energy slider",className:"ccd-energy-slider",max:1,min:0,onChange:c=>n(Number(c.target.value)),step:.001,type:"range",value:t})}),e.jsxs("div",{className:"ccd-energy-scale-labels",children:[e.jsx("span",{children:"Longer wavelength"}),e.jsx("span",{children:"Shorter wavelength"})]}),e.jsxs("div",{className:"ccd-energy-scale-labels ccd-energy-scale-labels-strong",children:[e.jsx("span",{children:"Red, lower energy"}),e.jsx("span",{children:"Violet, higher energy"})]})]}),e.jsxs("div",{className:"ccd-energy-readout",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Selected colour"}),e.jsx("strong",{style:{color:a},children:s.label})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Wavelength"}),e.jsxs("strong",{children:[s.wavelength.toFixed(0)," nm"]})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Energy"}),e.jsxs("strong",{children:[s.energy.toFixed(2)," units"]})]})]})]})})}const Ee={eyebrow:"Photon Energy And Wavelength",title:"Photon colour maps to wavelength",description:"Each hit has energy and wavelength. Red means longer wavelength and lower energy, while violet means shorter wavelength and higher energy. Wavelength is mesaured in nano-meters (nm). One nanometer is one billionth of a meter - about the size of a virus. The visible spectrum ranges from around 380 nm (violet) to 750 nm (red). But telescopes can see beyond that, into high-energy ultraviolet and infrared wavelengths that our eyes can´t detect."},Se={stepLabel:"Colour has meaning",title:"One photon, one observation",body:"In this demo, whenever you see the 🟣 colour, it indicates high energy - short wavelength. 🔴 is lower energy, but longer wavelength. "};function Pe({type:t}){if(t==="count-wavelength-time")return e.jsx("div",{className:"ccd-mini-diagram ccd-mini-diagram-grid","aria-hidden":"true",children:Array.from({length:12},(s,a)=>e.jsx("span",{className:"ccd-mini-diagram-grid-cell",style:{opacity:.28+a%4*.14}},a))});const n=t==="count-time"?[.28,.58,.38,.76,.46,.66]:t==="energy-time"?[.22,.5,.42,.88,.56,.72]:[.2,.32,.48,.84,.6,.3];return e.jsx("div",{className:"ccd-mini-diagram","aria-hidden":"true",children:n.map((s,a)=>e.jsx("span",{className:`ccd-mini-diagram-bar${t!=="count-time"?" is-energy":""}`,style:{height:`${s*100}%`}},a))})}function Ce({page:t,onSelect:n,showGuide:s,onToggleGuide:a}){const c=t==="receptor",r=t==="photon",i=t==="eventlist";return e.jsxs("section",{className:"ccd-selector","aria-label":"Visualization selector",children:[e.jsxs("div",{className:"ccd-selector-root",children:[e.jsx("span",{className:"ccd-stat-label",children:"These plots are different ways of binning the same event list."}),e.jsx("p",{children:"Everything begins with the CCD receiving photons. Those hits become rows in an event list. After that, different binning rules produce different plots."})]}),e.jsxs("div",{className:"ccd-selector-raw",children:[e.jsxs("a",{className:`ccd-selector-link${c?" is-active":""}`,href:"#receptor",onClick:n,children:[e.jsx("span",{className:"ccd-selector-link-label",children:"Raw data"}),e.jsx("strong",{children:"1. Photons hit CCD pixels"}),e.jsx("span",{children:"This is the detector plane: the spatial pattern of hits on the telescope CCD."})]}),e.jsxs("a",{className:`ccd-selector-link${r?" is-active":""}`,href:"#photon",onClick:n,children:[e.jsx("span",{className:"ccd-selector-link-label",children:"Photon properties"}),e.jsx("strong",{children:"2. Colour indicates wavelength and energy"}),e.jsx("span",{children:"Red means lower energy and violet means higher energy, which is why later plots can bin by wavelength."})]}),e.jsxs("a",{className:`ccd-selector-link${i?" is-active":""}`,href:"#eventlist",onClick:n,children:[e.jsx("span",{className:"ccd-selector-link-label",children:"Recorded data"}),e.jsx("strong",{children:"3. Each hit becomes a row: time, energy, x, y"}),e.jsx("span",{children:"This is the FITS-style event table. Every later diagram is derived from these same rows."})]})]}),e.jsx("div",{className:"ccd-selector-section",children:e.jsxs("div",{className:"ccd-selector-axis",children:[e.jsx("span",{className:"ccd-stat-label",children:"4. Choose a binning rule"}),e.jsx("strong",{children:"Derived view: binned visualization"}),e.jsx("p",{children:"These plots are different ways of grouping the same event rows."})]})}),e.jsx("div",{className:"ccd-selector-results",children:ee.map(d=>e.jsxs("a",{className:`ccd-selector-leaf${d.page===t?" is-active":""}`,href:`#${d.page}`,onClick:n,children:[e.jsx("span",{className:"ccd-selector-leaf-dim",children:"Input: same event list"}),e.jsx(Pe,{type:d.diagram}),e.jsx("strong",{children:d.title}),e.jsxs("span",{children:["Rule: ",d.rule]}),e.jsxs("span",{children:["Output: ",d.output]})]},d.page))}),e.jsxs("div",{className:"ccd-selector-current",children:[e.jsx("span",{className:"ccd-stat-label",children:"Recording"}),e.jsx("button",{className:`ccd-selector-option${s?" is-active":""}`,onClick:a,type:"button",children:s?"Guide overlay on":"Guide overlay off"})]})]})}function Te(t){switch(t){case"intro":return D;case"receptor":return je;case"photon":return Ee;case"eventlist":return ke;case"binning":return We;case"flux":return De;case"periodogram":return Le;case"spectrogram":return $e;case"closing":return D;default:return D}}function Ae(t){switch(t){case"intro":return null;case"receptor":return fe;case"photon":return Se;case"eventlist":return Ge;case"binning":return Ye;case"flux":return Be;case"periodogram":return _e;case"spectrogram":return He}}function Me({page:t}){const n=I.indexOf(t),s=n>0?I[n-1]:null,a=n>=0&&n{const r=ue(a.cellIndex),i=(a.time-n)/1e3;return j[a.photonIndex],e.jsxs("div",{className:"ccd-event-table",children:[e.jsx("span",{children:i.toFixed(3)}),e.jsx("span",{style:{color:k(a.photonIndex,.92)},children:a.energy.toFixed(2)}),e.jsx("span",{children:String(r.x).padStart(2,"0")}),e.jsx("span",{children:String(r.y).padStart(2,"0")})]},`${a.time}-${a.cellIndex}-${c}`)}),s.length===0?e.jsxs("div",{className:"ccd-event-table ccd-event-table-empty",children:[e.jsx("span",{children:"No rows yet"}),e.jsx("span",{children:"Waiting"}),e.jsx("span",{children:"--"}),e.jsx("span",{children:"--"})]}):null]})]}),e.jsx("div",{className:"ccd-flux-legend",children:j.map((a,c)=>e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-legend-dot",style:{background:k(c,.92),boxShadow:`0 0 0.8rem ${k(c,.56)}`}}),e.jsx("span",{children:a.label})]},a.label))})]})})}const ke={eyebrow:"FITS Event Table",title:"Photon event list view",description:"The clicks are recorded in a table, called the event list, with the time, energy, and CCD pixel position."},Ge={stepLabel:"Step 3",title:"Each hit becomes a row in the event list",body:"Astronomy pipelines often save these events as FITS tables. This is the raw data you can download from Telescopes like Chandra!"};function Ie({spectralEnergy:t}){const n=Math.max(...t,.01),s=t.reduce((a,c)=>a+c,0)||1;return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Integrated over last 12 completed 1.0 s bins"}),e.jsxs("strong",{children:[s.toFixed(2)," total energy units"]})]}),e.jsx("div",{className:"ccd-periodogram","aria-label":"Periodogram chart",children:j.map((a,c)=>{const r=G(t[c]/n,0,1),i=t[c]/s;return e.jsxs("div",{className:"ccd-periodogram-band",children:[e.jsx("div",{className:"ccd-bar-shell",children:e.jsx("div",{className:"ccd-bar-fill",style:{height:`${18+r*82}%`,background:`linear-gradient(180deg, ${k(c,.55)}, ${k(c,1)})`,boxShadow:`0 0 1.4rem ${k(c,.72)}`}})}),e.jsxs("div",{className:"ccd-band-meta",children:[e.jsx("strong",{children:a.shortLabel}),e.jsxs("span",{children:[a.wavelength," nm"]}),e.jsxs("span",{children:[t[c].toFixed(2)," E"]}),e.jsxs("span",{children:[(i*100).toFixed(1),"%"]})]})]},a.label)})})]})})}const Le={eyebrow:"Spectral power",title:"Spectrogram of energy",description:"We put low-energy on the left, and high energy on the right. The energy of all the photons in each frequency bin integrated over some period (here last 12 secs) gives us the shape of the spectrum during that time."},_e={stepLabel:"Step 6",title:"Spectral power",body:"Spectral power reveals the energy distribution, and it´s very important for many applications. It can tell us a lot about how stars work"};function Oe({spectrogramBins:t}){const n=Math.max(...t.flat(),1);return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Clicks per 1.0 s time bin"}),e.jsxs("strong",{children:[L," time bins x ",j.length," frequency bins"]})]}),e.jsxs("div",{className:"ccd-spectrogram-shell",children:[e.jsx("div",{className:"ccd-spectrogram-axis",children:j.map(s=>e.jsx("span",{children:s.label},s.label))}),e.jsx("div",{className:"ccd-spectrogram","aria-label":"Spectrogram heat map",children:j.map((s,a)=>e.jsx("div",{className:"ccd-spectrogram-row",children:t[a].map((c,r)=>e.jsx("span",{className:"ccd-spectrogram-cell",style:{background:k(a,c/n),boxShadow:c>0?`0 0 0.8rem ${k(a,c/n)}`:"none"}},`${s.label}-${r}`))},s.label))})]}),e.jsxs("div",{className:"ccd-spectrogram-footer",children:[e.jsx("span",{children:"Earlier"}),e.jsx("span",{children:"Now"})]})]})})}const $e={eyebrow:"Frequency X Time",title:"Periodo-spectro-gram!",description:"You can play around with the same data and make many charts! This shows the energy arriving during each time bin for each frequency bin!"},He={stepLabel:"Step 7",title:"Binned by time and frequency",body:"Is it useful? Maybe not for a lot of applications, but it looks pretty!"};function Fe({fluxBins:t}){const n=t.some(y=>y>0)?t:[1.2,1.8,1.4,2.1,1.7,1.5,2.3,1.6,1.9,1.4,2,1.7],s=n.map((y,v)=>{const h=n.slice(0,v+1);return h.reduce((T,R)=>T+R,0)/h.length}),a=n[n.length-1]??0,c=n.reduce((y,v)=>y+v,0)/n.length,r=n.reduce((y,v)=>y+(v-c)**2,0)/n.length,i=Math.sqrt(r),d=Math.min(...n),p=Math.max(...n),u=Math.min(...s),m=Math.max(...s),N={min:Math.min(d,u),max:Math.max(p,m)},f=V(n,760,240,N),M=re(n,760,240,N),C=V(s,760,240,N);return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Total energy per 1.0 s bin"}),e.jsxs("strong",{children:[a.toFixed(2)," energy units in latest bin"]})]}),e.jsxs("div",{className:"ccd-flux-chart-shell",children:[e.jsxs("svg",{className:"ccd-flux-chart",viewBox:"0 0 760 240","aria-label":"Total flux variability chart",preserveAspectRatio:"none",children:[e.jsxs("defs",{children:[e.jsxs("linearGradient",{id:"fluxArea",x1:"0",x2:"0",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"rgba(255, 113, 74, 0.40)"}),e.jsx("stop",{offset:"100%",stopColor:"rgba(125, 100, 255, 0.03)"})]}),e.jsxs("linearGradient",{id:"fluxLine",x1:"0",x2:"1",y1:"0",y2:"0",children:[e.jsx("stop",{offset:"0%",stopColor:"#ff8d66"}),e.jsx("stop",{offset:"55%",stopColor:"#ffd35d"}),e.jsx("stop",{offset:"100%",stopColor:"#8f7dff"})]})]}),n.map((y,v)=>{const h=760/n.length;return e.jsx("rect",{className:v%2===0?"ccd-flux-bin":"ccd-flux-bin ccd-flux-bin-alt",x:v*h,y:0,width:h,height:240},v)}),e.jsx("path",{className:"ccd-flux-area",d:M,fill:"url(#fluxArea)"}),e.jsx("path",{className:"ccd-flux-line",d:f,stroke:"url(#fluxLine)"}),e.jsx("path",{className:"ccd-flux-mean-line",d:C})]}),e.jsxs("div",{className:"ccd-flux-legend",children:[e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-raw"}),e.jsx("span",{children:"Raw flux"})]}),e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-mean"}),e.jsx("span",{children:"Running mean"})]})]}),e.jsxs("div",{className:"ccd-flux-axis",children:[e.jsx("span",{children:"Earlier"}),e.jsx("span",{children:"Now"})]})]}),e.jsxs("div",{className:"ccd-flux-metrics",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Mean flux"}),e.jsx("strong",{children:c.toFixed(4)})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Sigma"}),e.jsx("strong",{children:i.toFixed(4)})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Range"}),e.jsxs("strong",{children:[d.toFixed(4)," to ",p.toFixed(4)]})]})]})]})})}const De={eyebrow:"Flux Variability",title:"Total flux periodogram",description:"If we focus on the energy instead of the count, we get the flux - energy per second. It tells us how the total energy varies over time (1 sec bins)."},Be={stepLabel:"Step 5",title:"Periodogram of flux",body:"This tells you how much the flux varies over time . The dotted line is the running mean, which helps show trends over time."};function Ve({countBins:t}){const n=t.some(c=>c>0)?t:[3,5,4,7,6,5,8,4,6,5,7,4],s=Math.max(...n,1),a=n.reduce((c,r)=>c+r,0)/n.length;return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Photon clicks per 1.0 s bin"}),e.jsxs("strong",{children:[a.toFixed(1)," clicks / second bin"]})]}),e.jsxs("div",{className:"ccd-counts-shell",children:[e.jsx("div",{className:"ccd-counts-chart","aria-label":"Photon counts per bin chart",children:n.map((c,r)=>e.jsxs("div",{className:"ccd-count-bin",children:[e.jsx("div",{className:"ccd-count-bin-label",children:c}),e.jsx("div",{className:"ccd-count-bar-shell",children:e.jsx("div",{className:"ccd-count-bar",style:{height:`${12+c/s*88}%`}})})]},r))}),e.jsxs("div",{className:"ccd-flux-axis",children:[e.jsx("span",{children:"Earlier"}),e.jsx("span",{children:"Now!"})]})]}),e.jsx("div",{className:"ccd-flux-legend",children:e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-flux-legend-swatch ccd-counts-legend-swatch-bin"}),e.jsx("span",{children:"Photon count bins"})]})}),e.jsxs("div",{className:"ccd-flux-metrics",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Bin width"}),e.jsx("strong",{children:"1.0 s"})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Latest bin"}),e.jsxs("strong",{children:[n[n.length-1]??0," clicks"]})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Mean bin count"}),e.jsx("strong",{children:a.toFixed(2)})]})]})]})})}const We={eyebrow:"Brightness",title:"Periodogram of counts",description:"The first chart is the periodogram. We put the clicks into groups. They arrive same second, same group! This is called time bining. (each bin 1 sec). This gives us the count per second - or the periodogram of photon counts."},Ye={stepLabel:"Step 4",title:"Brightness is counting clicks!",body:"If we ignore photon energy and just count how many events arrive each second, we get a brightness-style light curve from the same event list."};function ze({onComplete:t,onProgress:n}={}){const[s,a]=o.useState(()=>z()),[c,r]=o.useState(!1),[i,d]=o.useState(!0),{elapsedMilliseconds:p,exposureStartTime:u,simulation:m}=pe(s==="receptor");o.useEffect(()=>{const l=()=>{a(z()),r(!1)};return window.addEventListener("hashchange",l),()=>window.removeEventListener("hashchange",l)},[]),o.useEffect(()=>{const l=I.indexOf(s);l<0||n?.(Math.round(l/(I.length-1)*100))},[n,s]),o.useEffect(()=>{if(!c)return;const l=g=>{g.key==="Escape"&&r(!1)};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[c]);const N=o.useMemo(()=>m.cells.map(l=>({id:l.id,opacity:G(l.level,0,1),scale:.72+G(l.level*.7,0,.86),size:l.size,tint:l.tint,glow:l.glow})),[m.cells]),f=Math.floor(p/O),M=o.useMemo(()=>me(m.eventHistory,u,f),[f,u,m.eventHistory]),C=o.useMemo(()=>q(m.eventHistory,u,f,l=>l.energy),[f,u,m.eventHistory]),y=o.useMemo(()=>q(m.eventHistory,u,f,()=>1),[f,u,m.eventHistory]),v=o.useMemo(()=>he(m.eventHistory,u,f),[f,u,m.eventHistory]),h=N.filter(l=>l.opacity>.08).length,T=N.reduce((l,g)=>l+g.opacity,0)/W,R=M.reduce((l,g,S,$)=>g>$[l]?S:l,0),E=j[R],x=be(s)?s:null,b=s==="orbit"||s==="intro"||s==="closing",A=s==="orbit",w=x||b?null:Te(s),_=i&&!b&&!x?e.jsx(Me,{page:s}):null;return e.jsx("main",{className:"ccd-shell",children:e.jsxs("section",{className:`ccd-panel${A?" ccd-panel-wide-scene":""}`,children:[w?e.jsx("header",{className:"ccd-topbar",children:e.jsxs("div",{className:"ccd-copy",children:[e.jsx("p",{className:"ccd-kicker",children:w.eyebrow}),e.jsx("h1",{children:w.title}),e.jsx("p",{className:"ccd-description",children:w.description})]})}):null,c?e.jsx("div",{className:"ccd-modal-backdrop",onClick:()=>r(!1),role:"presentation",children:e.jsxs("div",{className:"ccd-modal",onClick:l=>l.stopPropagation(),role:"dialog","aria-modal":"true","aria-label":"Visualization chooser",children:[e.jsxs("div",{className:"ccd-modal-header",children:[e.jsxs("div",{className:"ccd-copy",children:[e.jsx("p",{className:"ccd-kicker",children:"Data Pipeline"}),e.jsx("h2",{children:"How do we transform the event list?"})]}),e.jsx("button",{className:"ccd-modal-close",onClick:()=>r(!1),type:"button","aria-label":"Close visualization chooser",children:"Close"})]}),e.jsx(Ce,{page:s,onSelect:()=>r(!1),showGuide:i,onToggleGuide:()=>d(l=>!l)})]})}):null,e.jsxs("div",{className:"ccd-experience-frame",children:[s==="orbit"?e.jsx(de,{}):null,s==="intro"?e.jsx(ve,{}):null,s==="closing"?e.jsx(ye,{onComplete:t}):null,x?e.jsx(Ne,{page:x}):null,s==="receptor"?e.jsx(ge,{cells:N,activeHits:h,averageEnergy:T,guide:_}):null,s==="photon"?e.jsx(we,{}):null,s==="eventlist"?e.jsx(Re,{events:m.eventHistory,exposureStartTime:u}):null,s==="periodogram"?e.jsx(Ie,{spectralEnergy:M}):null,s==="spectrogram"?e.jsx(Oe,{spectrogramBins:v}):null,s==="flux"?e.jsx(Fe,{fluxBins:C}):null,s==="binning"?e.jsx(Ve,{countBins:y}):null,s!=="receptor"?_:null]}),!b&&!x?e.jsxs("div",{className:"ccd-summary-row","aria-label":"Simulation summary",children:[e.jsxs("div",{className:"ccd-summary-card",children:[e.jsx("span",{className:"ccd-stat-label",children:"Exposure time"}),e.jsx("strong",{children:ae(p)})]}),e.jsxs("div",{className:"ccd-summary-card",children:[e.jsx("span",{className:"ccd-stat-label",children:"Photon count"}),e.jsx("strong",{children:m.totalPhotons})]}),e.jsxs("div",{className:"ccd-summary-card",children:[e.jsx("span",{className:"ccd-stat-label",children:"Dominant Band (Last 1 s)"}),e.jsx("strong",{children:E.label})]})]}):null]})})}function Ue({className:t,onComplete:n,onProgress:s}){return e.jsx("div",{className:t,children:e.jsx(ze,{onComplete:n,onProgress:s})})}const Xe={name:"ccd",displayName:"CCD Photon Explorer",version:"0.1.0",paramSchema:{},defaultParams:{}};export{Ue as default,Xe as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-CRhmqMwz.js b/dist/glitch/glitch_gallery/assets/index-CRhmqMwz.js new file mode 100644 index 0000000..eb87cac --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-CRhmqMwz.js @@ -0,0 +1,10 @@ +import{r as n,j as e}from"./index-CEeZxcxj.js";const L="_container_12iml_1",$="_introScreen_12iml_19",z="_introTitle_12iml_27",E="_introSubtitle_12iml_33",Q="_carouselDots_12iml_39",W="_carouselDot_12iml_39",F="_active_12iml_53",K="_continueButton_12iml_57",P="_quizScreen_12iml_75",U="_intro_12iml_19",V="_progress_12iml_90",G="_progressDot_12iml_97",H="_completed_12iml_109",J="_questionContainer_12iml_113",X="_questionText_12iml_120",Z="_questionContext_12iml_127",tt="_options_12iml_134",et="_option_12iml_134",st="_selected_12iml_158",ot="_diagnosticComplete_12iml_171",it="_summaryBox_12iml_178",nt="_summaryLabel_12iml_186",rt="_summaryText_12iml_194",ct="_roleCards_12iml_210",at="_roleCard_12iml_210",ut="_recommended_12iml_202",lt="_roleTitle_12iml_242",mt="_roleDescription_12iml_249",dt="_roleStrengths_12iml_255",ht="_strengthTag_12iml_262",yt="_selectable_12iml_267",pt="_resultScreen_12iml_277",_t="_assignedLabel_12iml_285",xt="_resultCard_12iml_292",bt="_resultButtons_12iml_314",gt="_acceptButton_12iml_321",ft="_decideButton_12iml_338",Rt="_selectionScreen_12iml_356",vt="_selectionTitle_12iml_363",t={container:L,introScreen:$,introTitle:z,introSubtitle:E,carouselDots:Q,carouselDot:W,active:F,continueButton:K,quizScreen:P,intro:U,progress:V,progressDot:G,completed:H,questionContainer:J,questionText:X,questionContext:Z,options:tt,option:et,selected:st,diagnosticComplete:ot,summaryBox:it,summaryLabel:nt,summaryText:rt,roleCards:ct,roleCard:at,recommended:ut,roleTitle:lt,roleDescription:mt,roleStrengths:dt,strengthTag:ht,selectable:yt,resultScreen:pt,assignedLabel:_t,resultCard:xt,resultButtons:bt,acceptButton:gt,decideButton:ft,selectionScreen:Rt,selectionTitle:vt},St="Your glitch-modalities will now be tested.",Nt=[{id:"q1",question:'Mom says: "Ask Dad." Dad says: "Ask Mom."',context:"What do you do?",options:[{id:"a",text:"I technically asked both. That's permission.",scores:{authorityAutonomy:2,structureOutcome:1,stabilityReconstruction:0}},{id:"b",text:"I don't have permission. Stop.",scores:{authorityAutonomy:-2,structureOutcome:-1,stabilityReconstruction:-1}},{id:"c",text:"Tell Dad: Mom said you decide.",scores:{authorityAutonomy:1,structureOutcome:0,stabilityReconstruction:1}},{id:"d",text:"Tell Mom: Dad said you decide.",scores:{authorityAutonomy:1,structureOutcome:0,stabilityReconstruction:1}}]},{id:"q2",question:"A system works flawlessly. You discover it rests on a shaky assumption.",context:"Do you:",options:[{id:"a",text:"Ignore it. It works.",scores:{authorityAutonomy:-1,structureOutcome:2,stabilityReconstruction:-2}},{id:"b",text:"Patch the assumption quietly.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:0}},{id:"c",text:"Expose the assumption publicly.",scores:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:1}},{id:"d",text:"Rebuild the system to remove it.",scores:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:2}}]},{id:"q3",question:"You find a paradox in your own model.",context:"Your reaction:",options:[{id:"a",text:"I must be wrong.",scores:{authorityAutonomy:-1,structureOutcome:0,stabilityReconstruction:-1}},{id:"b",text:"The paradox is wrong.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:-1}},{id:"c",text:"The definitions are wrong.",scores:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:1}},{id:"d",text:"This is interesting. Push deeper.",scores:{authorityAutonomy:2,structureOutcome:0,stabilityReconstruction:2}}]},{id:"q4",question:"You prove something elegant. Reality disagrees.",context:"You:",options:[{id:"a",text:"Recheck the math.",scores:{authorityAutonomy:-1,structureOutcome:-1,stabilityReconstruction:0}},{id:"b",text:"Recheck the experiment.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:0}},{id:"c",text:"Recheck the assumptions.",scores:{authorityAutonomy:1,structureOutcome:0,stabilityReconstruction:1}},{id:"d",text:"Accept chaos.",scores:{authorityAutonomy:2,structureOutcome:1,stabilityReconstruction:2}}]},{id:"q5",question:"What annoys you more?",options:[{id:"a",text:"Vague thinking.",scores:{authorityAutonomy:0,structureOutcome:-2,stabilityReconstruction:0}},{id:"b",text:"Sloppy math.",scores:{authorityAutonomy:-1,structureOutcome:-2,stabilityReconstruction:-1}},{id:"c",text:"Blind obedience.",scores:{authorityAutonomy:2,structureOutcome:0,stabilityReconstruction:1}},{id:"d",text:"Overconfidence.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:0}}]}],jt=[{id:"philosopher-builder",name:"philosopher-builder",title:"Philosopher-Builder",description:"You approach systems from first principles. You like pulling assumptions apart and rebuilding from scratch. Formal training may vary — curiosity does not.",strengths:["Identifying hidden assumptions","Navigating paradox","Reconstructing from new foundations"],risk:"Building a house of cards. Impressive but useless.",mission:"Clarify structure before defending it.",axisProfile:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:2},summaries:[`You break loops instead of waiting inside them. +You are comfortable redirecting authority.`,`You question foundations before building on them. +Assumptions are targets, not givens.`,`You prefer rebuilding to patching. +Clarity matters more than comfort.`]},{id:"cross-domain-nerd",name:"cross-domain-nerd",title:"Cross-Domain Nerd",description:"You are fluent somewhere else. Math, biology, finance, code, art — you've built things in another domain. You suspect physics might benefit from outside pattern recognition.",strengths:["Translating ideas across domains","Spotting structural analogies","Bringing alien intuition"],risk:"Overextending metaphors. Using your favourite tool. Always.",mission:"Stress-test physics with alien intuition.",axisProfile:{authorityAutonomy:1,structureOutcome:1,stabilityReconstruction:1},summaries:[`You see patterns that others miss. +Your intuition comes from somewhere else.`,`You translate fluently between worlds. +Analogies are your native tongue.`,`You import tools from foreign domains. +Fresh perspective is your advantage.`]},{id:"formal-student",name:"formal-student",title:"Formal Student",description:"You are inside the machinery of formal education. You work with equations daily. You care about precision.",strengths:["Technical rigor","Mathematical discipline","Knowing what is good enough"],risk:"Over-trusting established formalism. Thinking you own the place.",mission:"Master the tools. Then question them.",axisProfile:{authorityAutonomy:-1,structureOutcome:-1,stabilityReconstruction:-1},summaries:[`You trust the process but verify the details. +Rigor is your foundation.`,`You work within structure to understand it. +Precision is non-negotiable.`,`You respect the machinery of knowledge. +Mastery precedes revolution.`]}],f={intro:St,questions:Nt,roles:jt};function Ct({onComplete:_,onProgress:u,className:j}){const[y,g]=n.useState("intro"),[A,C]=n.useState(0),[m,T]=n.useState(0),[d,q]=n.useState({}),[r,w]=n.useState(null),R=n.useRef(null),O=n.useRef(null),h=f.questions,l=f.roles,v=n.useCallback(s=>{const o={authorityAutonomy:0,structureOutcome:0,stabilityReconstruction:0};return h.forEach(i=>{const c=s[i.id],a=i.options.find(b=>b.id===c);a&&(o.authorityAutonomy+=a.scores.authorityAutonomy,o.structureOutcome+=a.scores.structureOutcome,o.stabilityReconstruction+=a.scores.stabilityReconstruction)}),o},[h]),S=n.useCallback(s=>{let o=l[0],i=1/0;return l.forEach(c=>{const a=Math.sqrt(Math.pow(s.authorityAutonomy-c.axisProfile.authorityAutonomy,2)+Math.pow(s.structureOutcome-c.axisProfile.structureOutcome,2)+Math.pow(s.stabilityReconstruction-c.axisProfile.stabilityReconstruction,2));a{const i=Math.max(Math.abs(o.authorityAutonomy),Math.abs(o.structureOutcome),Math.abs(o.stabilityReconstruction));let c=0;return Math.abs(o.structureOutcome)===i&&(c=1),Math.abs(o.stabilityReconstruction)===i&&(c=2),s.summaries[c]||s.summaries[0]},[]),k=n.useCallback((s,o)=>{const i={...d,[s]:o};q(i);const c=(m+1)/h.length*50;u?.(c),setTimeout(()=>{if(m{if(!r)return;const s=l.find(o=>o.id===r.recommendedRole);s&&(u?.(100),_({success:!0,score:100,data:{selectedRole:s.id,recommendedRole:r.recommendedRole,scores:r.scores,answers:d,completedAt:new Date().toISOString()}}))},[r,l,d,_,u]),B=n.useCallback(()=>{g("selection"),u?.(80)},[u]),Y=n.useCallback(s=>{r&&(u?.(100),_({success:!0,score:100,data:{selectedRole:s.id,recommendedRole:r.recommendedRole,scores:r.scores,answers:d,completedAt:new Date().toISOString()}}))},[r,d,_,u]),M=n.useCallback(()=>{g("quiz"),u?.(10)},[u]);n.useEffect(()=>{const s=R.current;if(!s||y!=="intro")return;const o=()=>{const i=s.scrollLeft,a=Math.round(i/296);C(Math.min(Math.max(a,0),l.length-1))};return s.addEventListener("scroll",o),()=>s.removeEventListener("scroll",o)},[y,l.length]);const p=h[m],x=r?l.find(s=>s.id===r.recommendedRole):null;return e.jsxs("div",{className:`${t.container} ${j||""}`,children:[y==="intro"&&e.jsxs("div",{className:t.introScreen,children:[e.jsx("h2",{className:t.introTitle,children:"Meet the Operator Modes"}),e.jsx("p",{className:t.introSubtitle,children:"Swipe to explore the three paths"}),e.jsx("div",{className:t.roleCards,ref:R,children:l.map(s=>e.jsxs("div",{className:t.roleCard,children:[e.jsx("h3",{className:t.roleTitle,children:s.title}),e.jsx("p",{className:t.roleDescription,children:s.description}),e.jsx("div",{className:t.roleStrengths,children:s.strengths.map((o,i)=>e.jsxs("span",{className:t.strengthTag,children:["+ ",o]},i))})]},s.id))}),e.jsx("div",{className:t.carouselDots,children:l.map((s,o)=>e.jsx("div",{className:`${t.carouselDot} ${o===A?t.active:""}`},o))}),e.jsx("button",{className:t.continueButton,onClick:M,children:"Begin Diagnostic"})]}),y==="quiz"&&e.jsxs("div",{className:t.quizScreen,children:[m===0&&e.jsx("h2",{className:t.intro,children:f.intro}),e.jsx("div",{className:t.progress,children:h.map((s,o)=>e.jsx("div",{className:`${t.progressDot} ${o===m?t.active:""} ${oe.jsx("button",{className:`${t.option} ${d[p.id]===s.id?t.selected:""}`,onClick:()=>k(p.id,s.id),children:s.text},s.id))})]})]}),y==="result"&&r&&x&&e.jsxs("div",{className:t.resultScreen,children:[e.jsx("p",{className:t.diagnosticComplete,children:"Diagnostic complete."}),e.jsxs("div",{className:t.summaryBox,children:[e.jsx("p",{className:t.summaryLabel,children:"Your reflex under uncertainty:"}),e.jsx("p",{className:t.summaryText,children:r.summary})]}),e.jsx("p",{className:t.assignedLabel,children:"Your assigned operator mode:"}),e.jsxs("div",{className:t.resultCard,children:[e.jsx("h3",{className:t.roleTitle,children:x.title}),e.jsx("p",{className:t.roleDescription,children:x.description}),e.jsx("div",{className:t.roleStrengths,children:x.strengths.map((s,o)=>e.jsxs("span",{className:t.strengthTag,children:["+ ",s]},o))})]}),e.jsxs("div",{className:t.resultButtons,children:[e.jsx("button",{className:t.acceptButton,onClick:D,children:"Accept"}),e.jsx("button",{className:t.decideButton,onClick:B,children:"I want to decide"})]})]}),y==="selection"&&r&&e.jsxs("div",{className:t.selectionScreen,children:[e.jsx("p",{className:t.selectionTitle,children:"Choose your operator mode"}),e.jsx("div",{className:t.roleCards,ref:O,children:l.map(s=>e.jsxs("div",{className:`${t.roleCard} ${t.selectable} ${s.id===r.recommendedRole?t.recommended:""}`,onClick:()=>Y(s),children:[e.jsx("h3",{className:t.roleTitle,children:s.title}),e.jsx("p",{className:t.roleDescription,children:s.description}),e.jsx("div",{className:t.roleStrengths,children:s.strengths.map((o,i)=>e.jsxs("span",{className:t.strengthTag,children:["+ ",o]},i))})]},s.id))})]})]})}const Tt={name:"level-questions",displayName:"Level Questions",version:"1.0.0",paramSchema:{},defaultParams:{}};export{Ct as default,Tt as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-CwQ-ysLn.js b/dist/glitch/glitch_gallery/assets/index-CwQ-ysLn.js new file mode 100644 index 0000000..5eeef3a --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-CwQ-ysLn.js @@ -0,0 +1 @@ +import{r as n,j as t}from"./index-CEeZxcxj.js";const ke="_wrapper_h2w9g_1",je="_frame_h2w9g_12",Pe="_frameSucceeded_h2w9g_25",ve="_header_h2w9g_33",$e="_title_h2w9g_37",Te="_statsLine_h2w9g_50",Oe="_boardPanel_h2w9g_58",Ee="_board_h2w9g_58",Re="_trailOverlay_h2w9g_76",Ae="_trailPath_h2w9g_85",Le="_trailHead_h2w9g_94",Me="_cell_h2w9g_99",Ie="_lightCell_h2w9g_105",De="_darkCell_h2w9g_109",He="_knight_h2w9g_113",Ge="_target_h2w9g_130",Be="_readout_h2w9g_138",Ue="_readoutLine_h2w9g_145",Fe="_programPanel_h2w9g_154",Ye="_programTrack_h2w9g_160",Ve="_placeholder_h2w9g_171",Xe="_step_h2w9g_176",Ke="_stepExecuted_h2w9g_187",Ze="_programButtons_h2w9g_192",ze="_controlRow_h2w9g_193",We="_button_h2w9g_199",qe="_buttonPrimary_h2w9g_200",Je="_legend_h2w9g_233",Qe="_promptOverlay_h2w9g_239",et="_promptTitle_h2w9g_250",tt="_promptText_h2w9g_258",rt="_promptOptions_h2w9g_264",st="_promptOption_h2w9g_264",nt="_promptSelected_h2w9g_282",at="_promptHint_h2w9g_287",e={wrapper:ke,frame:je,frameSucceeded:Pe,header:ve,title:$e,statsLine:Te,boardPanel:Oe,board:Ee,trailOverlay:Re,trailPath:Ae,trailHead:Le,cell:Me,lightCell:Ie,darkCell:De,knight:He,target:Ge,readout:Be,readoutLine:Ue,programPanel:Fe,programTrack:Ye,placeholder:Ve,step:Xe,stepExecuted:Ke,programButtons:Ze,controlRow:ze,button:We,buttonPrimary:qe,legend:Je,promptOverlay:Qe,promptTitle:et,promptText:tt,promptOptions:rt,promptOption:st,promptSelected:nt,promptHint:at},b=8,h={x:0,y:b-1},ot=220,ct=64,lt=3,I=100,it=5,dt={up:{dx:0,dy:-1},down:{dx:0,dy:1},left:{dx:-1,dy:0},right:{dx:1,dy:0}},pt={up:"↑",down:"↓",left:"←",right:"→"},de=[{dx:0,dy:1},{dx:1,dy:1},{dx:1,dy:2},{dx:1,dy:3},{dx:2,dy:3},{dx:1,dy:5},{dx:1,dy:6}],X=(s,o,u)=>Math.min(u,Math.max(o,s)),pe=s=>s.x>=0&&s.x=0&&s.ys.x===o.x&&s.y===o.y,se=(s,o)=>o===0?s:se(o,s%o),mt=(s,o)=>{const u=Math.abs(o.x-s.x),d=Math.abs(o.y-s.y);if(u===0&&d===0)return 0;if(u===0||d===0)return u+d;const g=se(u,d);return u/g+d/g},ht=s=>new Promise(o=>{window.setTimeout(o,s)}),ie=s=>s==="Enter"||s==="NumpadEnter"||s===" "||s==="Space"||s==="Spacebar",gt=s=>`${(s.x+.5)*I},${(s.y+.5)*I}`,K=s=>X(s,0,de.length-1),ue=s=>de[K(s)],te=s=>{const o=ue(s);return o.dx+o.dy},re=s=>{const o=ue(s),u=[];for(let g=1;git&&u.push(p)}if(u.length===0)return{x:h.x+o.dx,y:h.y-o.dy};const d=Math.floor(Math.random()*u.length);return u[d]};function _t({config:s,onComplete:o,onProgress:u,theme:d,className:g}){const p=n.useMemo(()=>{const a=s.params.goalCaptures;return typeof a!="number"?lt:X(Math.round(a),1,10)},[s.params.goalCaptures]),[N,ne]=n.useState(0),[w,Z]=n.useState(h),[k,ae]=n.useState(()=>re(0)),[x,z]=n.useState([]),[D,H]=n.useState([h]),[_,j]=n.useState("idle"),[me,v]=n.useState(-1),[y,oe]=n.useState(0),[ce,O]=n.useState(""),[E,G]=n.useState("yes"),[R,B]=n.useState("continue"),[f,he]=n.useState(!1),C=n.useRef(0),U=n.useRef(!1),i=_==="running",m=_==="gameOverPrompt"||_==="successPrompt"||_==="finished",W=te(N),ge=n.useMemo(()=>d?{"--gc-primary":d.primary,"--gc-accent":d.accent,"--gc-bg":d.bg,"--gc-bg-secondary":d.bgSecondary,"--gc-text":d.text,"--gc-text-muted":d.textMuted,"--gc-border":d.border}:{},[d]);n.useEffect(()=>{const a=y/p;u?.(Math.round(X(a*100,0,100)))},[y,p,u]);const F=n.useCallback((a,r,c="")=>{C.current+=1,j("idle"),ne(K(a)),Z(h),ae(re(a)),H([h]),v(-1),oe(r),G("yes"),B("continue"),O(c)},[]),q=n.useCallback(()=>{F(N,0,`Looking for a ${W}-step move set.`)},[N,W,F]),Y=n.useCallback((a=0)=>{const r=K(N+1),c=te(r);F(r,a,`Looking for a ${c}-step move set.`)},[N,F]),J=n.useCallback(()=>{U.current||(U.current=!0,C.current+=1,j("finished"),o({success:!1,error:"Player chose no after game over.",data:{captures:y,goalCaptures:p,configId:s.id,completedAt:new Date().toISOString(),hasEverSucceeded:f}}))},[y,s.id,p,f,o]),L=n.useCallback(()=>{U.current||(U.current=!0,C.current+=1,j("finished"),o({success:!0,score:100,data:{captures:y,goalCaptures:p,configId:s.id,completedAt:new Date().toISOString(),hasEverSucceeded:f}}))},[y,s.id,p,f,o]),A=n.useCallback(a=>{z(r=>i||m||r.length>=ct?r:[...r,a])},[m,i]),xe=n.useCallback(()=>{i||m||z(a=>a.slice(0,-1))},[m,i]),_e=n.useCallback(()=>{i||m||z([])},[m,i]),ye=n.useCallback(()=>{C.current+=1,j("idle"),v(-1),O("Program stopped.")},[]),fe=n.useCallback(async()=>{if(i||m||x.length===0)return;const a=C.current+1;C.current=a;let r=w,c=k,l=y,P=0;for(j("running"),v(-1),H([w]),O("");C.current===a;)for(let S=0;S[...T,$]),v(S),ut($,c)){if(l+=1,oe(l),he(!0),l>=p){j("successPrompt"),B("continue"),v(-1),O(`Success. ${l} challenge(s) complete.`);return}const T=K(N+1),ee=re(T),Ne=te(T);r=h,c=ee,j("idle"),ne(T),Z(h),ae(ee),H([h]),v(-1),O(`Challenge ${l}/${p} complete. Looking for a ${Ne}-step move set.`);return}}},[y,N,p,m,w,x,i,k]);n.useEffect(()=>{const a=r=>{const c={ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right"};if(_==="gameOverPrompt"){if(r.key==="ArrowLeft"||r.key==="ArrowUp"){r.preventDefault(),G("yes");return}if(r.key==="ArrowRight"||r.key==="ArrowDown"){r.preventDefault(),G("no");return}ie(r.key)&&(r.preventDefault(),E==="yes"?q():f?L():J());return}if(_==="successPrompt"){if(r.key==="ArrowLeft"||r.key==="ArrowUp"){r.preventDefault(),B("continue");return}if(r.key==="ArrowRight"||r.key==="ArrowDown"){r.preventDefault(),B("done");return}ie(r.key)&&(r.preventDefault(),R==="continue"?Y():L());return}if(_!=="idle")return;const l=c[r.key];l&&(r.preventDefault(),A(l))};return window.addEventListener("keydown",a),()=>{window.removeEventListener("keydown",a)}},[A,J,L,E,f,_,q,Y,R]),n.useEffect(()=>()=>{C.current+=1},[]);const be=n.useMemo(()=>{const a=k.x-w.x,r=w.y-k.y,c=Math.abs(a),l=Math.abs(r),P=mt(w,k);if(c===0&&l===0)return{angle:0,motifLength:P,motif:"On target"};if(c===0||l===0)return{angle:c===0?90:0,motifLength:P,motif:c===0?`${r>=0?"U":"D"} x ${l}`:`${a>=0?"R":"L"} x ${c}`};const S=se(c,l),M=c/S,V=l/S,$=`${a>=0?"R":"L"} x ${M}`,T=`${r>=0?"U":"D"} x ${V}`;return{angle:Math.atan2(l,c)*(180/Math.PI),motifLength:P,motif:`${$}, ${T}`}},[w,k]),we=Math.round(X(y/p*100,0,100)),Ce=g?`${e.wrapper} ${g}`:e.wrapper,le=b*I,Se=D.map(gt).join(" "),Q=D[D.length-1];return t.jsx("div",{className:Ce,style:ge,children:t.jsxs("section",{className:`${e.frame} ${f?e.frameSucceeded:""}`,"aria-label":"Chess move set trainer",children:[t.jsxs("header",{className:e.header,children:[t.jsx("h2",{className:e.title,children:"The Chess Analogy"}),t.jsxs("p",{className:e.statsLine,children:["Captures ",y,"/",p," • Progress ",we,"% • Program ",x.length," • Target ",W]})]}),t.jsx("div",{className:e.boardPanel,children:t.jsxs("div",{className:e.board,role:"grid","aria-label":"8 by 8 checkerboard",children:[t.jsxs("svg",{className:e.trailOverlay,viewBox:`0 0 ${le} ${le}`,preserveAspectRatio:"none","aria-hidden":"true",children:[D.length>1&&t.jsx("polyline",{className:e.trailPath,points:Se}),Q&&t.jsx("circle",{className:e.trailHead,cx:(Q.x+.5)*I,cy:(Q.y+.5)*I,r:6})]}),Array.from({length:b*b}).map((a,r)=>{const c=r%b,l=Math.floor(r/b),P=(c+l)%2===1,S=w.x===c&&w.y===l,M=k.x===c&&k.y===l;return t.jsxs("div",{className:`${e.cell} ${P?e.darkCell:e.lightCell}`,role:"gridcell","aria-label":`x ${c+1}, y ${b-l}`,children:[M&&t.jsx("span",{className:e.target,"aria-hidden":"true",children:"●"}),S&&t.jsx("span",{className:e.knight,"aria-hidden":"true",children:"♞"})]},`${c}-${l}`)})]})}),t.jsxs("div",{className:e.readout,children:[t.jsxs("p",{className:e.readoutLine,children:["Angle: ",t.jsxs("strong",{children:[be.angle.toFixed(1),"°"]})]}),!1]}),t.jsxs("div",{className:e.programPanel,children:[t.jsxs("div",{className:e.programTrack,"aria-live":"polite",children:[x.length===0&&t.jsx("span",{className:e.placeholder,children:"Empty move set"}),x.map((a,r)=>t.jsx("span",{className:`${e.step} ${i&&r===me?e.stepExecuted:""}`,children:pt[a]},`${a}-${r}`))]}),t.jsxs("div",{className:e.programButtons,children:[t.jsx("button",{type:"button",className:e.button,onClick:()=>A("up"),disabled:i||m,children:"↑"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>A("left"),disabled:i||m,children:"←"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>A("down"),disabled:i||m,children:"↓"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>A("right"),disabled:i||m,children:"→"})]}),t.jsxs("div",{className:e.controlRow,children:[t.jsx("button",{type:"button",className:e.button,onClick:xe,disabled:i||m||x.length===0,children:"Undo"}),t.jsx("button",{type:"button",className:e.button,onClick:_e,disabled:i||m||x.length===0,children:"Clear"}),t.jsx("button",{type:"button",className:e.buttonPrimary,onClick:i?ye:fe,disabled:m||x.length===0,children:i?"Stop":"Run"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>Y(),disabled:i,children:"Reset"})]}),ce&&t.jsx("p",{className:e.legend,children:ce})]}),_==="gameOverPrompt"&&t.jsxs("div",{className:e.promptOverlay,role:"dialog","aria-modal":"true","aria-label":"Game over prompt",children:[t.jsx("p",{className:e.promptTitle,children:"Game over"}),t.jsx("p",{className:e.promptText,children:f?"Try again or stop?":"Try again?"}),t.jsxs("div",{className:e.promptOptions,children:[t.jsxs("button",{type:"button",className:`${e.promptOption} ${E==="yes"?e.promptSelected:""}`,onClick:q,children:[E==="yes"?"▶ ":"","Yes"]}),t.jsxs("button",{type:"button",className:`${e.promptOption} ${E==="no"?e.promptSelected:""}`,onClick:f?L:J,children:[E==="no"?"▶ ":"",f?"I'm done":"No"]})]}),t.jsx("p",{className:e.promptHint,children:"Use arrows + Enter."})]}),_==="successPrompt"&&t.jsxs("div",{className:e.promptOverlay,role:"dialog","aria-modal":"true","aria-label":"Success prompt",children:[t.jsx("p",{className:e.promptTitle,children:"Success"}),t.jsx("p",{className:e.promptText,children:"Continue?"}),t.jsxs("div",{className:e.promptOptions,children:[t.jsxs("button",{type:"button",className:`${e.promptOption} ${R==="continue"?e.promptSelected:""}`,onClick:()=>Y(),children:[R==="continue"?"▶ ":"","Yes"]}),t.jsxs("button",{type:"button",className:`${e.promptOption} ${R==="done"?e.promptSelected:""}`,onClick:L,children:[R==="done"?"▶ ":"","I'm done"]})]}),t.jsx("p",{className:e.promptHint,children:"Use arrows + Enter."})]})]})})}const yt={name:"chess_analogy",displayName:"Chess Move Set Lab",version:"1.0.0",paramSchema:{goalCaptures:{type:"range",label:"Targets To Capture",description:"How many red targets must be captured before completion.",default:3,min:1,max:10,step:1}},defaultParams:{goalCaptures:3}};export{_t as default,yt as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-D0SeHWP2.css b/dist/glitch/glitch_gallery/assets/index-D0SeHWP2.css new file mode 100644 index 0000000..4264792 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-D0SeHWP2.css @@ -0,0 +1 @@ +._wrapper_61dhl_1{--gc-bg: var(--color-bg, #0a0a0f);--gc-bg-secondary: var(--color-bg-secondary, #12121a);--gc-text: var(--color-text, #e8e8ec);--gc-text-muted: var(--color-text-muted, #9999a8);--gc-primary: var(--color-primary, #6366f1);--gc-accent: var(--color-accent, #22d3ee);--gc-border: var(--color-border, #2a2a3a);--gc-font-main: var(--font-main, "Iceland", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-display: var(--font-display, "Russo One", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-text: "VT323", var(--font-mono, monospace);width:100%}._frame_61dhl_15{position:relative;width:100%;height:100dvh;min-height:100vh;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border) 60%,transparent);color:var(--gc-text);font-family:var(--gc-font-text);background:radial-gradient(circle at 18% 14%,color-mix(in srgb,var(--gc-accent) 18%,transparent),transparent 35%),radial-gradient(circle at 88% 2%,color-mix(in srgb,var(--gc-primary) 22%,transparent),transparent 30%),linear-gradient(165deg,var(--gc-bg),var(--gc-bg-secondary))}._scan_61dhl_30{position:absolute;inset:0;pointer-events:none;opacity:.18;mix-blend-mode:screen;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.1) 0,rgba(255,255,255,.1) 1px,transparent 1px,transparent 3px);animation:_scanDrift_61dhl_1 8s linear infinite}._stack_61dhl_47{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:22px 16px 18px}._meta_61dhl_57{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gc-text-muted);font-family:var(--gc-font-main)}._progressTrack_61dhl_68{margin-top:8px;width:100%;height:3px;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--gc-accent) 20%,transparent)}._progressFill_61dhl_77{height:100%;transition:width .24s ease;background:linear-gradient(90deg,var(--gc-accent),color-mix(in srgb,var(--gc-primary) 45%,var(--gc-accent)))}._slide_61dhl_87{flex:1;display:flex;flex-direction:column;justify-content:center;gap:20px}._title_61dhl_95{margin:0;width:fit-content;font-family:var(--gc-font-display);text-transform:uppercase;letter-spacing:.02em;line-height:1.04;font-size:clamp(28px,8.5vw,46px)}._rgbGlitch_61dhl_105{position:relative;display:inline-block}._rgbBase_61dhl_110{position:relative;z-index:1;color:color-mix(in srgb,var(--gc-text) 38%,#000)}._rgbLayer_61dhl_116{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.2}._layerR_61dhl_124{color:#ff3737bf;animation:_layerRShift_61dhl_1 2.4s infinite steps(2,end)}._layerG_61dhl_129{color:#37ff5fbf;animation:_layerGShift_61dhl_1 2.1s infinite steps(2,end)}._layerB_61dhl_134{color:#4182ffbf;animation:_layerBShift_61dhl_1 2.7s infinite steps(2,end)}._content_61dhl_139{display:flex;flex-direction:column;gap:10px;font-family:var(--gc-font-text);font-size:clamp(16px,4.2vw,22px);line-height:1.45}._line_61dhl_148{margin:0;color:var(--gc-text)}._spacer_61dhl_153{margin:0;min-height:.6em}._list_61dhl_158{margin:3px 0 0;padding-left:1.1em;display:flex;flex-direction:column;gap:7px}._warning_61dhl_166{list-style:none;padding-left:0}._warning_61dhl_166 li:before{content:"- ";color:var(--gc-accent)}._cta_61dhl_176{margin-top:10px;width:fit-content;border:1px solid var(--gc-accent);background:color-mix(in srgb,var(--gc-accent) 8%,transparent);color:var(--gc-accent);font:inherit;letter-spacing:.06em;text-transform:uppercase;padding:10px 14px;cursor:pointer;font-family:var(--gc-font-main);transition:transform .14s ease,background-color .14s ease}._cta_61dhl_176:active{transform:scale(.98)}._controls_61dhl_195{display:grid;grid-template-columns:1fr 1fr;gap:8px}._navButton_61dhl_201{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:color-mix(in srgb,var(--gc-bg-secondary) 75%,transparent);color:var(--gc-text);font:inherit;text-transform:uppercase;letter-spacing:.08em;padding:10px 12px;cursor:pointer;font-family:var(--gc-font-main)}._navButton_61dhl_201:disabled{opacity:.45;cursor:not-allowed}@keyframes _layerRShift_61dhl_1{0%,81%,to{transform:translate(0)}84%{transform:translate(-4px,2px)}88%{transform:translate(4px,-2px)}92%{transform:translate(2px)}96%{transform:translate(-2px,2px)}}@keyframes _layerGShift_61dhl_1{0%,79%,to{transform:translate(0)}83%{transform:translate(2px,-2px)}87%{transform:translate(-2px,4px)}91%{transform:translateY(-2px)}95%{transform:translate(2px)}}@keyframes _layerBShift_61dhl_1{0%,82%,to{transform:translate(0)}86%{transform:translate(4px)}90%{transform:translate(-4px,-2px)}94%{transform:translate(2px,2px)}98%{transform:translate(-2px)}}@keyframes _scanDrift_61dhl_1{0%{transform:translateY(-10px)}to{transform:translateY(10px)}}@media(min-width:600px){._frame_61dhl_15{max-width:420px;margin:0 auto}} diff --git a/dist/glitch/glitch_gallery/assets/index-DOIp2aoq.css b/dist/glitch/glitch_gallery/assets/index-DOIp2aoq.css new file mode 100644 index 0000000..7476ca3 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-DOIp2aoq.css @@ -0,0 +1 @@ +.gc-assumption-toggle{--shell-bg: radial-gradient(circle at top, rgba(40, 58, 34, .35), transparent 42%), linear-gradient(180deg, #070a08, #0f160f 58%, #090b09);--screen-bg: #616161;--screen-error: #7f1d1d;--screen-glow: rgba(0, 0, 0, .5);--text-primary: var(--gc-text, #0f172a);--text-secondary: var(--gc-text-muted, #6bff5b);--accent-color: var(--gc-accent, #1c6a00);--panel-green: var(--gc-primary, #248a00);--panel-white: rgba(255, 255, 255, .92);--font-display: "Russo One", sans-serif;--font-ui: "VT323", sans-serif;color:var(--text-primary);width:100%}.gc-assumption-toggle *,.gc-assumption-toggle *:before,.gc-assumption-toggle *:after{box-sizing:border-box}.gc-assumption-toggle .component-shell{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px 0;background:var(--shell-bg)}.gc-assumption-toggle .main-wrapper{width:min(100%,1000px);aspect-ratio:1000 / 678;background-image:var(--assumption-frame-image);background-position:center;background-repeat:no-repeat;background-size:100% 100%;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .crt-screen{position:relative;width:51.8%;height:66.3%;transform:translateY(.6%);background:var(--screen-bg);border-radius:7.5%;display:flex;justify-content:center;align-items:center;overflow:hidden;box-shadow:inset 0 0 40px var(--screen-glow);transition:background-color .4s ease}.gc-assumption-toggle .crt-screen.paradox-errors{background:var(--screen-error)}.gc-assumption-toggle .crt-screen:after{content:"";position:absolute;inset:0;background:linear-gradient(#12101000 50%,#0000003d 50%),linear-gradient(90deg,#ff00000d,#00ff0005,#0000ff0d);background-size:100% 2px,3px 100%;pointer-events:none;z-index:20}.gc-assumption-toggle .slides-wrapper{width:100%;height:100%;display:flex;justify-content:center;align-items:center;transform-origin:center}.gc-assumption-toggle .slide{width:100%;height:100%;padding:20px;display:flex;flex-direction:column;justify-content:center;align-items:center}.gc-assumption-toggle .slide-splash{text-align:center}.gc-assumption-toggle .splash-content h1{margin:0 0 18px;font-size:clamp(1.4rem,2.7vw,2.2rem);line-height:1.3;color:var(--text-primary);font-family:var(--font-display);font-weight:400;text-transform:uppercase;text-shadow:0 0 4px rgba(0,0,0,.35)}.gc-assumption-toggle .splash-content h2{margin:0 0 42px;color:var(--text-secondary);font-size:clamp(1rem,1.5vw,1.2rem);font-weight:400;letter-spacing:.08em;font-family:var(--font-ui)}.gc-assumption-toggle .widget-header h1{margin:0 0 18px;color:var(--text-secondary);font-size:clamp(1.4rem,2.5vw,1.8rem);font-weight:400;letter-spacing:.05em;text-transform:uppercase;font-family:var(--font-display);text-shadow:0 0 5px rgba(255,255,255,.35)}.gc-assumption-toggle .switch-group{width:100%;display:flex;flex-direction:column;gap:18px;padding:0 24px}.gc-assumption-toggle .switch-item{width:100%}.gc-assumption-toggle .switch-input{position:absolute;opacity:0;pointer-events:none}.gc-assumption-toggle .toggle-track{position:relative;width:100%;min-height:58px;padding:4px;display:flex;align-items:stretch;justify-content:space-between;gap:8px;border-radius:28px;cursor:pointer;overflow:hidden;border:1px solid rgba(255,255,255,.08);background:#0006}.gc-assumption-toggle .toggle-track:before{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:calc(50% - 4px);border-radius:24px;background:var(--panel-green);transition:transform .35s cubic-bezier(.16,1,.3,1)}.gc-assumption-toggle .switch-input:checked+.toggle-track:before{transform:translate(100%)}.gc-assumption-toggle .option-left,.gc-assumption-toggle .option-right{position:relative;z-index:1;flex:1;display:flex;align-items:center;justify-content:center;text-align:center;padding:10px 8px;color:#ffffff9e;font-size:clamp(.78rem,2vw,1.4rem);font-weight:500;letter-spacing:.04em;line-height:1.15;font-family:var(--font-ui);transition:color .25s ease,font-weight .25s ease}.gc-assumption-toggle .switch-input:not(:checked)+.toggle-track .option-left,.gc-assumption-toggle .switch-input:checked+.toggle-track .option-right{color:#fff;font-weight:700}.gc-assumption-toggle .action-button{margin-top:24px;border:none;border-radius:8px;padding:12px 32px;background:var(--accent-color);color:#fff;cursor:pointer;text-transform:uppercase;font-family:var(--font-display);font-size:clamp(1rem,2vw,1.35rem);font-weight:400;letter-spacing:.06em;box-shadow:0 4px #00000047;transition:transform .12s ease,box-shadow .12s ease,opacity .2s ease}.gc-assumption-toggle .action-button:hover{opacity:.92}.gc-assumption-toggle .action-button:active{transform:translateY(3px);box-shadow:none}.gc-assumption-toggle .action-button.secondary{font-size:1rem;padding:7px 88px;color:var(--text-secondary);background:transparent;border:2px solid var(--text-secondary);box-shadow:none}.gc-assumption-toggle .bottom-container{width:100%;height:100%;display:flex;flex-direction:column;gap:16px}.gc-assumption-toggle .slide-processing{justify-content:flex-start;padding:26px 20px 20px}.gc-assumption-toggle .processing-shell{width:100%;height:100%;display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:18px;background:linear-gradient(180deg,#041207f5,#07180ceb),radial-gradient(circle at top,rgba(87,255,143,.14),transparent 40%);border:1px solid rgba(120,255,154,.22);box-shadow:inset 0 0 28px #00000047}.gc-assumption-toggle .processing-header{display:flex;align-items:center;gap:10px}.gc-assumption-toggle .processing-led{width:10px;height:10px;border-radius:999px;background:#5cff8b;box-shadow:0 0 10px #5cff8be6;animation:assumption-led-pulse 1.2s ease-in-out infinite}.gc-assumption-toggle .processing-header h2{margin:0;color:#dfffe7;font-family:var(--font-display);font-size:clamp(1.05rem,2vw,1.3rem);font-weight:400;letter-spacing:.06em;text-transform:uppercase}.gc-assumption-toggle .processing-subtitle{color:#b6ffc6b8;font-family:var(--font-ui);font-size:clamp(.88rem,1.6vw,1rem);letter-spacing:.05em;text-transform:uppercase}.gc-assumption-toggle .processing-terminal{flex:1;min-height:0;padding:14px 16px;border-radius:14px;background:linear-gradient(180deg,#030904f0,#071008f5),repeating-linear-gradient(180deg,rgba(255,255,255,.02) 0,rgba(255,255,255,.02) 1px,transparent 1px,transparent 18px);border:1px solid rgba(120,255,154,.12);overflow:hidden}.gc-assumption-toggle .processing-line{display:flex;align-items:baseline;gap:8px;min-height:1.45em;color:#b7ffca;font-family:var(--font-ui);font-size:clamp(1rem,1.8vw,1.18rem);letter-spacing:.04em;line-height:1.35;word-break:break-word}.gc-assumption-toggle .processing-line+.processing-line{margin-top:4px}.gc-assumption-toggle .processing-line-active{color:#edfff2}.gc-assumption-toggle .processing-prompt{flex:0 0 auto;color:#5cff8b;font-family:var(--font-display)}.gc-assumption-toggle .processing-cursor{display:inline-block;width:9px;height:1.05em;margin-left:2px;vertical-align:text-bottom;background:#74ff97;box-shadow:0 0 8px #74ff97a6;animation:assumption-cursor-blink .9s steps(1) infinite}.gc-assumption-toggle .visualization-container,.gc-assumption-toggle .result-container{width:100%;border-radius:16px}.gc-assumption-toggle .visualization-container{flex:1.5;min-height:0;display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(255,255,255,.05);background:#00000052}.gc-assumption-toggle .result-container{position:relative;flex:1;min-height:0;padding:18px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#ffffff52;border:1px solid rgba(0,0,0,.08);text-align:center}.gc-assumption-toggle .summary-box{width:100%}.gc-assumption-toggle .summary-label{display:block;margin-bottom:8px;color:var(--text-secondary);font-size:.84rem;letter-spacing:.08em;text-transform:uppercase;font-family:var(--font-display)}.gc-assumption-toggle .summary-value{display:block;color:var(--text-primary);font-size:clamp(.9rem,1.5vw,1rem);letter-spacing:.04em;line-height:1.4;font-family:var(--font-ui)}.gc-assumption-toggle .result-value{display:block;width:100%;margin-top:4px;font-size:clamp(1.7rem,3vw,2rem);font-weight:400;letter-spacing:.05em;background-clip:text;-webkit-background-clip:text;color:transparent;font-family:var(--font-display)}.gc-assumption-toggle .result-stable{background-image:linear-gradient(90deg,#064e3b,#16a34a)}.gc-assumption-toggle .result-warning{background-image:linear-gradient(90deg,#7c2d12,#d97706)}.gc-assumption-toggle .result-paradox{background-image:linear-gradient(90deg,#831843,#be185d)}.gc-assumption-toggle .result-uncertain{background-image:linear-gradient(90deg,#4338ca,#7c3aed)}.gc-assumption-toggle .result-description{display:block;width:100%;margin-top:4px;color:#000;font-size:clamp(.96rem,1.8vw,1.08rem);letter-spacing:.03em;line-height:1.35;font-family:var(--font-ui)}.gc-assumption-toggle .intermediate-result{margin-top:14px;color:var(--text-secondary);font-size:.76rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-family:var(--font-display)}.gc-assumption-toggle .art-canvas{position:relative;width:100%;height:100%;min-height:160px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .art-canvas:after{content:"";position:absolute;width:8px;height:8px;border-radius:999px;background:#fff;box-shadow:0 0 12px #ffffffe6}.gc-assumption-toggle .art-canvas.paradox-point:after,.gc-assumption-toggle .art-canvas.paradox-chunk:after{display:none}.gc-assumption-toggle .cube-wrapper{position:relative;width:64px;height:64px;perspective:400px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .cube{position:relative;width:64px;height:64px;transform-style:preserve-3d;animation:assumption-slow-spin 10s linear infinite}.gc-assumption-toggle .face{position:absolute;inset:0;border:1px solid rgba(255,255,255,.35);background:#ffffff0d}.gc-assumption-toggle .cube .front{transform:translateZ(32px)}.gc-assumption-toggle .cube .back{transform:rotateY(180deg) translateZ(32px)}.gc-assumption-toggle .cube .right{transform:rotateY(90deg) translateZ(32px)}.gc-assumption-toggle .cube .left{transform:rotateY(-90deg) translateZ(32px)}.gc-assumption-toggle .cube .top{transform:rotateX(90deg) translateZ(32px)}.gc-assumption-toggle .cube .bottom{transform:rotateX(-90deg) translateZ(32px)}.gc-assumption-toggle .particle-point{position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:999px;transform:translate(-50%,-50%);background:#a10356;box-shadow:0 0 12px #a10356}.gc-assumption-toggle .info-arrow{position:absolute;left:-70px;top:50%;transform:translateY(-50%);display:flex;align-items:center;opacity:0;animation:assumption-arrow-enter .9s ease forwards .3s}.gc-assumption-toggle .arrow-line{width:34px;height:2px;background:#a10356;box-shadow:0 0 5px #a10356}.gc-assumption-toggle .arrow-head{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid #a10356}.gc-assumption-toggle .infinite-symbol{position:absolute;top:-25px;left:8px;color:#a10356;font-size:1.4rem;font-weight:700;text-shadow:0 0 10px rgba(161,3,86,.45)}.gc-assumption-toggle .chakana-wrapper{position:relative;width:90px;height:90px;transform-style:preserve-3d;transform:rotateX(-30deg) rotateY(45deg);animation:assumption-float 6s ease-in-out infinite}.gc-assumption-toggle .gold-cube{position:absolute;width:42px;height:42px;transform-style:preserve-3d}.gc-assumption-toggle .gold-cube.center{transform:translate(24px,24px)}.gc-assumption-toggle .gold-cube.top-arm{transform:translate(24px,-14px)}.gc-assumption-toggle .gold-cube.bottom-arm{transform:translate(24px,62px)}.gc-assumption-toggle .gold-cube.left-arm{transform:translate(-14px,24px)}.gc-assumption-toggle .gold-cube.right-arm{transform:translate(62px,24px)}.gc-assumption-toggle .gold-cube .face{background:linear-gradient(135deg,#fcd34d,#fbbf24,#d97706);border-color:#0000002e}.gc-assumption-toggle .gold-cube .front{transform:translateZ(21px)}.gc-assumption-toggle .gold-cube .back{transform:rotateY(180deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .right{transform:rotateY(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .left{transform:rotateY(-90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .top{transform:rotateX(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .bottom{transform:rotateX(-90deg) translateZ(21px)}.gc-assumption-toggle .chaos-wrapper{position:relative;width:120px;height:120px;perspective:600px}.gc-assumption-toggle .central-source{position:absolute;left:50%;top:50%;width:22px;height:22px;transform-style:preserve-3d;transform:translate(-50%,-50%);animation:assumption-pulsar 2.1s ease-out infinite}.gc-assumption-toggle .central-source .face{background:#a10356;border:1px solid rgba(255,255,255,.78);box-shadow:0 0 15px #c084fc}.gc-assumption-toggle .central-source .front{transform:translateZ(11px)}.gc-assumption-toggle .central-source .back{transform:rotateY(180deg) translateZ(11px)}.gc-assumption-toggle .central-source .right{transform:rotateY(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .left{transform:rotateY(-90deg) translateZ(11px)}.gc-assumption-toggle .central-source .top{transform:rotateX(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .bottom{transform:rotateX(-90deg) translateZ(11px)}.gc-assumption-toggle .debris-cube{position:absolute;left:50%;top:50%;width:10px;height:10px;transform-style:preserve-3d}.gc-assumption-toggle .debris-cube .face{background:linear-gradient(45deg,#c084fc,#a10356);border:1px solid rgba(255,255,255,.4)}.gc-assumption-toggle .debris-cube .front{transform:translateZ(5px)}.gc-assumption-toggle .debris-cube .back{transform:rotateY(180deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .right{transform:rotateY(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .left{transform:rotateY(-90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .top{transform:rotateX(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .bottom{transform:rotateX(-90deg) translateZ(5px)}.gc-assumption-toggle .d-0{animation:assumption-explode-0 2.1s linear infinite}.gc-assumption-toggle .d-1{animation:assumption-explode-1 2.3s linear infinite .2s}.gc-assumption-toggle .d-2{animation:assumption-explode-2 1.9s linear infinite .4s}.gc-assumption-toggle .d-3{animation:assumption-explode-3 2.4s linear infinite .1s}.gc-assumption-toggle .d-4{animation:assumption-explode-4 2.1s linear infinite .5s}.gc-assumption-toggle .d-5{animation:assumption-explode-5 1.9s linear infinite .25s}.gc-assumption-toggle .d-6{animation:assumption-explode-6 2.25s linear infinite .45s}.gc-assumption-toggle .d-7{animation:assumption-explode-7 2.4s linear infinite .15s}.gc-assumption-toggle .d-8{animation:assumption-explode-8 1.75s linear infinite .65s}.gc-assumption-toggle .d-9{animation:assumption-explode-9 2.5s linear infinite .1s}.gc-assumption-toggle .signal-orbit,.gc-assumption-toggle .field-node{position:relative;width:112px;height:112px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .signal-ring,.gc-assumption-toggle .field-ring{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-ring{inset:22px;border:2px dashed rgba(255,255,255,.45);animation:assumption-rotate 7s linear infinite}.gc-assumption-toggle .signal-axis{position:absolute;width:100px;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent);transform:rotate(-25deg)}.gc-assumption-toggle .signal-dot,.gc-assumption-toggle .field-core{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-dot{width:14px;height:14px;background:#fc6;box-shadow:0 0 18px #ffcc66b3}.gc-assumption-toggle .signal-cube{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#f5d565,#e08e18);box-shadow:0 0 22px #e08e1899}.gc-assumption-toggle .signal-orbit-point .signal-dot{animation:assumption-jitter .22s infinite}.gc-assumption-toggle .signal-orbit-chunk .signal-cube{animation:assumption-tilt 2.8s ease-in-out infinite}.gc-assumption-toggle .field-ring-outer{inset:10px;border:1px solid rgba(123,245,186,.38)}.gc-assumption-toggle .field-ring-inner{inset:28px;border:1px dashed rgba(123,245,186,.55);animation:assumption-rotate 9s linear infinite reverse}.gc-assumption-toggle .field-core{width:16px;height:16px;background:#4ade80;box-shadow:0 0 18px #4ade80cc}.gc-assumption-toggle .field-core-chunk{width:30px;height:30px;border-radius:10px;background:linear-gradient(135deg,#4ade80,#16a34a)}.gc-assumption-toggle .field-question{position:absolute;top:12px;right:16px;color:#ffffffd9;font-size:1.4rem;font-weight:700}.gc-assumption-toggle .crt-collapse{animation:assumption-crt-collapse .1s cubic-bezier(.25,.46,.45,.94) forwards}.gc-assumption-toggle .crt-expand{animation:assumption-crt-expand .1s cubic-bezier(.25,.46,.45,.94) forwards}@keyframes assumption-crt-collapse{0%{transform:scaleY(1)}60%{transform:scaleY(.1)}to{transform:scaleY(.005)}}@keyframes assumption-crt-expand{0%{transform:scaleY(.005)}60%{transform:scaleY(.1)}to{transform:scaleY(1)}}@keyframes assumption-slow-spin{0%{transform:rotateX(-20deg) rotateY(0)}to{transform:rotateX(-20deg) rotateY(360deg)}}@keyframes assumption-arrow-enter{0%{opacity:0;transform:translate(-12px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes assumption-float{0%{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}50%{transform:rotateX(-30deg) rotateY(45deg) translateY(-10px)}to{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}}@keyframes assumption-pulsar{0%{transform:translate(-50%,-50%) scale3d(.15,.15,.15) rotate(0);opacity:0}50%{transform:translate(-50%,-50%) scale3d(1.45,1.45,1.45) rotate(180deg);opacity:1}to{transform:translate(-50%,-50%) scale3d(3,3,3) rotate(360deg);opacity:0}}@keyframes assumption-explode-0{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(56px,54px) rotate(360deg)}}@keyframes assumption-explode-1{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-72px,48px) rotate(-180deg)}}@keyframes assumption-explode-2{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(30px,-84px) rotate(90deg)}}@keyframes assumption-explode-3{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-58px,-44px) rotate(-270deg)}}@keyframes assumption-explode-4{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(12px,74px) rotate(45deg)}}@keyframes assumption-explode-5{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-92px,6px) rotate(-45deg)}}@keyframes assumption-explode-6{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(48px,-54px) rotate(120deg)}}@keyframes assumption-explode-7{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-64px,58px) rotate(200deg)}}@keyframes assumption-explode-8{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(74px,18px) rotate(-100deg)}}@keyframes assumption-explode-9{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-26px,-82px) rotate(60deg)}}@keyframes assumption-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes assumption-jitter{0%{transform:translate(0)}25%{transform:translate(1px,1px)}50%{transform:translate(-1px,-1px)}75%{transform:translate(-1px,1px)}to{transform:translate(1px,-1px)}}@keyframes assumption-tilt{0%{transform:rotate(0) scale(1)}50%{transform:rotate(18deg) scale(1.08)}to{transform:rotate(0) scale(1)}}@keyframes assumption-cursor-blink{0%,45%{opacity:1}46%,to{opacity:0}}@keyframes assumption-led-pulse{0%,to{opacity:.5;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}@media(max-width:900px){.gc-assumption-toggle .component-shell{padding:12px 0}.gc-assumption-toggle .switch-group{gap:12px;padding:0 14px}.gc-assumption-toggle .toggle-track{min-height:50px}.gc-assumption-toggle .action-button{padding:10px 22px}.gc-assumption-toggle .action-button.secondary{padding:6px 36px}.gc-assumption-toggle .result-container{padding:14px}.gc-assumption-toggle .intermediate-result{margin-top:10px;font-size:.68rem}.gc-assumption-toggle .slide-processing{padding:18px 14px 14px}.gc-assumption-toggle .processing-shell,.gc-assumption-toggle .processing-terminal{padding:12px}}.gc-assumption-toggle .visualization-container{background:radial-gradient(circle at 50% 30%,rgba(156,255,197,.12),transparent 42%),linear-gradient(180deg,#09130de6,#060c08f5)}.gc-assumption-toggle .result-container{background:linear-gradient(180deg,#f7fcf8eb,#dcede2f0);border:1px solid rgba(8,33,18,.12);box-shadow:inset 0 1px #ffffff59}.gc-assumption-toggle .summary-box{padding:4px 0}.gc-assumption-toggle .summary-value{color:#0f2d18}.gc-assumption-toggle .intermediate-result{padding:7px 12px;border-radius:999px;color:#d9ffe5;background:linear-gradient(180deg,#071b0eeb,#0c2814f0);border:1px solid rgba(120,255,154,.18);box-shadow:inset 0 1px #ffffff14,0 8px 20px #0000001f;opacity:1}.gc-assumption-toggle .digital-lattice{position:relative;width:150px;height:150px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .digital-grid{position:absolute;inset:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;transform:rotate(45deg)}.gc-assumption-toggle .digital-cell{border-radius:10px;background:linear-gradient(135deg,#f6cb4d40,#c98010ad),linear-gradient(180deg,#ffffff24,#0000001a);border:1px solid rgba(255,222,118,.35);box-shadow:inset 0 1px #ffffff1a,0 0 18px #f6b7311f;animation:assumption-digital-flicker 2.6s ease-in-out infinite}.gc-assumption-toggle .digital-cell-core{background:linear-gradient(135deg,#ffeb8ecc,#f09c16eb),linear-gradient(180deg,#ffffff2e,#0000000f);box-shadow:0 0 26px #ffd86ba6,inset 0 0 12px #fff3}.gc-assumption-toggle .digital-cell-0{animation-delay:.05s}.gc-assumption-toggle .digital-cell-1{animation-delay:.25s}.gc-assumption-toggle .digital-cell-2{animation-delay:.55s}.gc-assumption-toggle .digital-cell-3{animation-delay:.35s}.gc-assumption-toggle .digital-cell-4{animation-delay:.12s}.gc-assumption-toggle .digital-cell-5{animation-delay:.68s}.gc-assumption-toggle .digital-cell-6{animation-delay:.44s}.gc-assumption-toggle .digital-cell-7{animation-delay:.2s}.gc-assumption-toggle .digital-cell-8{animation-delay:.78s}.gc-assumption-toggle .digital-core{position:relative;z-index:2;width:54px;height:54px;border-radius:16px;border:1px solid rgba(255,230,136,.45);background:radial-gradient(circle at 35% 35%,rgba(255,248,202,.45),transparent 55%),linear-gradient(145deg,#624008eb,#eca718eb);box-shadow:0 0 34px #efb83c5c,inset 0 0 20px #fff6ae33;transform:rotate(45deg)}.gc-assumption-toggle .digital-core-dot{position:absolute;inset:18px;border-radius:12px;background:#fff8d2f0;box-shadow:0 0 18px #fff5be99}.gc-assumption-toggle .digital-scan{position:absolute;z-index:1;border-radius:999px;background:#91ffbf2e}.gc-assumption-toggle .digital-scan-horizontal{width:132px;height:2px;animation:assumption-digital-scan-x 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-scan-vertical{width:2px;height:132px;animation:assumption-digital-scan-y 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-aura{position:absolute;inset:6px;border-radius:28px;border:1px solid rgba(255,226,118,.18);box-shadow:0 0 34px #f5bc3f26}.gc-assumption-toggle .physics-observatory{position:relative;width:158px;height:158px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .physics-grid{position:absolute;inset:10px;border-radius:999px;background:radial-gradient(circle,rgba(151,244,209,.09),transparent 58%),repeating-radial-gradient(circle,rgba(255,255,255,.09) 0 1px,transparent 1px 18px);-webkit-mask-image:radial-gradient(circle,black 58%,transparent 78%);mask-image:radial-gradient(circle,black 58%,transparent 78%);opacity:.75}.gc-assumption-toggle .physics-halo{position:absolute;border-radius:999px;border:1px solid rgba(157,253,224,.28)}.gc-assumption-toggle .physics-halo-outer{inset:8px;animation:assumption-rotate 18s linear infinite}.gc-assumption-toggle .physics-halo-inner{inset:28px;border-style:dashed;border-color:#76edc68a;animation:assumption-rotate 12s linear infinite reverse}.gc-assumption-toggle .physics-core-shell{position:absolute;width:54px;height:54px;border-radius:999px;background:radial-gradient(circle at 35% 35%,rgba(255,255,255,.4),transparent 52%),linear-gradient(180deg,#1b5c45e0,#0a241cf2);box-shadow:inset 0 0 22px #b2ffe429,0 0 34px #54d9a452}.gc-assumption-toggle .physics-core-shell-chunk{border-radius:18px;transform:rotate(45deg)}.gc-assumption-toggle .physics-core-point{position:absolute;inset:17px;border-radius:999px;background:radial-gradient(circle,#baffe6,#4ade80 48%,#16825b);box-shadow:0 0 22px #85ffcca6,0 0 42px #5adca242}.gc-assumption-toggle .physics-core-chunk{border-radius:9px}.gc-assumption-toggle .physics-orbit{position:absolute;width:10px;height:10px;border-radius:999px;background:linear-gradient(180deg,#f2fff9,#89ffd0);box-shadow:0 0 16px #89ffd094}.gc-assumption-toggle .physics-orbit-1{animation:assumption-orbit-one 6.4s linear infinite}.gc-assumption-toggle .physics-orbit-2{width:8px;height:8px;background:linear-gradient(180deg,#fff6d7,#ffcf69);box-shadow:0 0 14px #ffcf698c;animation:assumption-orbit-two 8.2s linear infinite reverse}.gc-assumption-toggle .physics-orbit-3{width:6px;height:6px;background:linear-gradient(180deg,#dffcff,#73d4ff);box-shadow:0 0 12px #73d4ff80;animation:assumption-orbit-three 10s linear infinite}.gc-assumption-toggle .physics-question-ring{position:absolute;inset:44px;display:flex;justify-content:center;align-items:center;border-radius:999px;border:1px dashed rgba(255,241,171,.28)}.gc-assumption-toggle .physics-question{color:#fff8d2f0;font-size:1.2rem;font-weight:700;text-shadow:0 0 12px rgba(255,226,130,.35)}@keyframes assumption-digital-flicker{0%,to{opacity:.72;transform:scale(1)}35%{opacity:1;transform:scale(1.04)}60%{opacity:.84;transform:scale(.98)}}@keyframes assumption-digital-scan-x{0%,to{transform:translateY(-48px);opacity:.2}50%{transform:translateY(48px);opacity:.9}}@keyframes assumption-digital-scan-y{0%,to{transform:translate(-48px);opacity:.18}50%{transform:translate(48px);opacity:.88}}@keyframes assumption-orbit-one{0%{transform:rotate(0) translate(54px) rotate(0)}to{transform:rotate(360deg) translate(54px) rotate(-360deg)}}@keyframes assumption-orbit-two{0%{transform:rotate(40deg) translate(34px) translateY(-14px) rotate(0)}to{transform:rotate(400deg) translate(34px) translateY(-14px) rotate(-360deg)}}@keyframes assumption-orbit-three{0%{transform:rotate(-20deg) translate(64px) translateY(4px) rotate(0)}to{transform:rotate(340deg) translate(64px) translateY(4px) rotate(-360deg)}} diff --git a/dist/glitch/glitch_gallery/assets/index-DOdpM0HQ.js b/dist/glitch/glitch_gallery/assets/index-DOdpM0HQ.js new file mode 100644 index 0000000..327b0a9 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-DOdpM0HQ.js @@ -0,0 +1 @@ +import{r as s,j as t}from"./index-CEeZxcxj.js";const b="_container_18jex_3",B="_grid_18jex_18",C="_textBlock_18jex_34",f="_mainText_18jex_41",k="_delayed_18jex_50",I="_sphere_18jex_63",M="_glitching_18jex_82",S="_voxelOverlay_18jex_113",w="_visible_18jex_122",$="_voxel_18jex_113",A="_rebelText_18jex_137",G="_enterButton_18jex_146",O="_migrationContent_18jex_168",D="_tagline_18jex_175",F="_notList_18jex_183",E="_notItem_18jex_190",L="_isText_18jex_212",R="_ruleBox_18jex_221",W="_ruleTitle_18jex_231",U="_ruleContent_18jex_238",z="_continueButton_18jex_244",H="_agreementContent_18jex_265",P="_agreementTitle_18jex_272",Y="_pledgeText_18jex_280",q="_signatureArea_18jex_293",J="_paper_18jex_302",K="_signatureMark_18jex_313",Q="_pencil_18jex_339",V="_animating_18jex_346",X="_signButton_18jex_365",Z="_navigationContent_18jex_390",ee="_welcomeText_18jex_397",te="_choiceButtons_18jex_405",ne="_choiceButton_18jex_405",se="_choiceTitle_18jex_434",ie="_choiceDesc_18jex_440",ae="_arrow_18jex_445",oe="_screenFadeIn_18jex_463",e={container:b,grid:B,textBlock:C,mainText:f,delayed:k,sphere:I,glitching:M,voxelOverlay:S,visible:w,voxel:$,rebelText:A,enterButton:G,migrationContent:O,tagline:D,notList:F,notItem:E,isText:L,ruleBox:R,ruleTitle:W,ruleContent:U,continueButton:z,agreementContent:H,agreementTitle:P,pledgeText:Y,signatureArea:q,paper:J,signatureMark:K,pencil:Q,animating:V,signButton:X,navigationContent:Z,welcomeText:ee,choiceButtons:te,choiceButton:ne,choiceTitle:se,choiceDesc:ie,arrow:ae,screenFadeIn:oe};function me({onComplete:l,onProgress:d,theme:n,className:h}){const[a,c]=s.useState("disorientation"),[x,m]=s.useState(!1),[_,j]=s.useState(!1),[u,p]=s.useState(!1),o=n?{"--gc-primary":n.primary,"--gc-accent":n.accent,"--gc-bg":n.bg,"--gc-bgSecondary":n.bgSecondary,"--gc-text":n.text,"--gc-textMuted":n.textMuted,"--gc-border":n.border}:{};s.useEffect(()=>{d?.({disorientation:25,migration:50,agreement:75,navigation:100}[a])},[a,d]),s.useEffect(()=>{if(a!=="disorientation")return;const i=()=>{m(!0),setTimeout(()=>m(!1),150)},r=setTimeout(i,4e3),T=setInterval(()=>{const y=Math.random()*3e3+3e3;setTimeout(i,y)},6e3);return()=>{clearTimeout(r),clearInterval(T)}},[a]);const v=s.useCallback(()=>{j(!0),setTimeout(()=>{p(!0),setTimeout(()=>{c("navigation")},1e3)},800)},[]),g=s.useCallback(i=>{l({success:!0,data:{choice:i,agreedToTerms:!0},rewards:{achievements:["onboarding_complete"],unlocks:i==="lesson"?["tech_tree"]:["character_builder"]}})},[l]),N={disorientation:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.textBlock,children:[t.jsx("p",{className:e.mainText,children:"You are standing on a smooth sphere. It looks continuous. It feels continuous."}),t.jsx("div",{className:e.sphere+(x?` ${e.glitching}`:""),children:t.jsx("div",{className:e.voxelOverlay+(x?` ${e.visible}`:""),children:Array.from({length:36}).map((i,r)=>t.jsx("div",{className:e.voxel,style:{opacity:Math.random()>.5?.8:0}},r))})}),t.jsx("p",{className:`${e.mainText} ${e.delayed}`,children:"But what if it isn't?"}),t.jsxs("p",{className:e.rebelText,children:["Most people assume the universe is continuous.",t.jsx("br",{}),"We're not most people."]}),t.jsx("button",{className:e.enterButton,onClick:()=>c("migration"),children:"Enter the Glitch"})]})]}),migration:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.migrationContent,children:[t.jsx("p",{className:e.tagline,children:"A migration project for physics. That might fail. Or not."}),t.jsxs("ul",{className:e.notList,children:[t.jsx("li",{className:e.notItem,children:"This is not a fringe physics forum."}),t.jsx("li",{className:e.notItem,children:"This is not an online RPG."}),t.jsx("li",{className:e.notItem,children:"This is not a lecture series in philosophy, physics and computer science."})]}),t.jsx("p",{className:e.isText,children:"It's all of those things."}),t.jsxs("div",{className:e.ruleBox,children:[t.jsx("div",{className:e.ruleTitle,children:"RULE 1"}),t.jsxs("div",{className:e.ruleContent,children:["Nothing is obvious. Show it.",t.jsx("br",{}),"Predictions matter more than opinions."]})]}),t.jsx("button",{className:e.continueButton,onClick:()=>c("agreement"),children:"Continue →"})]})]}),agreement:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.agreementContent,children:[t.jsx("p",{className:e.agreementTitle,children:"Make your mark and sign here"}),t.jsx("div",{className:e.pledgeText,children:'"I agree to test ideas against reality"'}),t.jsxs("div",{className:e.signatureArea,children:[t.jsx("div",{className:e.paper,children:t.jsx("span",{className:e.signatureMark+(u?` ${e.visible}`:""),children:"✕"})}),t.jsx("span",{className:e.pencil+(_?` ${e.animating}`:""),children:"✏️"})]}),!u&&t.jsx("button",{className:e.signButton,onClick:v,disabled:_,children:"Sign"})]})]}),navigation:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.navigationContent,children:[t.jsx("p",{className:e.welcomeText,children:"Welcome to the Glitch. What would you like to do?"}),t.jsxs("div",{className:e.choiceButtons,children:[t.jsxs("button",{className:e.choiceButton,onClick:()=>g("lesson"),children:[t.jsxs("div",{className:e.choiceTitle,children:["Take me to the first lesson ",t.jsx("span",{className:e.arrow,children:"→"})]}),t.jsx("div",{className:e.choiceDesc,children:"Opens the tech tree and begins your journey"})]}),t.jsxs("button",{className:e.choiceButton,onClick:()=>g("character"),children:[t.jsxs("div",{className:e.choiceTitle,children:["Build my character first ",t.jsx("span",{className:e.arrow,children:"→"})]}),t.jsx("div",{className:e.choiceDesc,children:"Customize your presence in the Glitch"})]})]})]})]})};return t.jsx("div",{className:h,children:N[a]()})}const _e={name:"onboarding",version:"1.0.0",displayName:"Glitch University Onboarding",description:"Multi-screen onboarding experience introducing users to the Glitch universe",author:"Glitch.university",paramSchema:{},tags:["onboarding","intro","welcome"]};export{me as OnboardingComponent,me as default,_e as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-DczjPplt.css b/dist/glitch/glitch_gallery/assets/index-DczjPplt.css new file mode 100644 index 0000000..aac4251 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-DczjPplt.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Iceland&family=JetBrains+Mono:wght@400;600&family=Russo+One&display=swap";@import"https://fonts.googleapis.com/css2?family=Iceland&family=Russo+One&family=VT323&display=swap";:root{--font-headline: "Russo One", sans-serif;--font-ui: "VT323", "Iceland", sans-serif;--terminal-green: #7dff9b;--terminal-green-soft: #b9ffca;--terminal-green-dim: #5fd67b;--terminal-green-muted: #4f7b59;--terminal-panel-border: rgba(125, 255, 155, .22);font-family:var(--font-ui)}body{margin:0;min-width:320px;min-height:100vh;overflow:hidden;background:radial-gradient(circle at top left,rgba(125,255,155,.12),transparent 26%),radial-gradient(circle at top right,rgba(255,184,77,.08),transparent 22%),linear-gradient(180deg,#040605,#070b08 46%,#050505);color:var(--terminal-green-soft);font-family:var(--font-ui);letter-spacing:.04em;text-shadow:0 0 10px rgba(125,255,155,.08)}#root{width:100%;height:100vh}html,body{width:100%;height:100%;min-height:100%}button,input,select,textarea{font:inherit}code{font-family:SFMono-Regular,Menlo,monospace}.gallery-shell{display:grid;grid-template-columns:280px minmax(0,1fr);width:100%;height:100%}.gallery-sidebar{display:flex;flex-direction:column;gap:22px;padding:24px 18px;border-right:1px solid rgba(125,255,155,.14);background:#060a08eb;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);overflow:auto}.gallery-sidebar-header h1,.gallery-toolbar h2,.gallery-section-header h2,.gallery-section-header h3{margin:0;font-family:var(--font-headline);font-weight:400;letter-spacing:.08em;text-transform:uppercase}.gallery-sidebar-header h1{font-size:1.7rem}.gallery-sidebar-header p,.gallery-toolbar-subtitle,.gallery-muted,.gallery-list-subtitle,.gallery-list-note,.gallery-control-help,.gallery-log-time,.gallery-metadata dt{color:var(--terminal-green-muted)}.gallery-sidebar-header p,.gallery-toolbar-subtitle,.gallery-muted,.gallery-list-note,.gallery-control-help{font-size:.95rem}.gallery-eyebrow{display:inline-flex;margin-bottom:6px;color:var(--terminal-green-dim);font-size:.95rem;text-transform:uppercase;letter-spacing:.18em}.gallery-section{display:flex;flex-direction:column;gap:10px}.gallery-section-header,.gallery-panel-header,.gallery-log-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.gallery-list{display:flex;flex-direction:column;gap:10px}.gallery-list-item{display:flex;align-items:stretch;justify-content:space-between;gap:12px;width:100%;padding:10px 12px;border:1px solid rgba(125,255,155,.14);border-radius:16px;background:#0d1510e0;color:inherit;text-align:left}button.gallery-list-item{cursor:pointer;transition:border-color .18s ease,transform .18s ease,background .18s ease}button.gallery-list-item:hover{transform:translateY(-1px);border-color:#7dff9b57;background:#121d16f0}.gallery-list-item.is-active{border-color:#7dff9b80;box-shadow:0 0 0 1px #7dff9b2e,inset 0 0 0 1px #7dff9b1f}.gallery-list-item.is-disabled{opacity:.7}.gallery-list-copy{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.gallery-list-title{color:var(--terminal-green-soft);font-size:1.08rem}.gallery-list-subtitle{font-family:SFMono-Regular,Menlo,monospace;font-size:.72rem;word-break:break-word}.gallery-list-note{line-height:1.2}.gallery-list-thumb{--gallery-card-accent: hsl(var(--gallery-card-hue, 120) 80% 70%);width:84px;min-width:84px;border-radius:14px;padding:1px;background:linear-gradient(145deg,color-mix(in srgb,var(--gallery-card-accent) 72%,transparent),transparent 62%),#7dff9b1f}.gallery-list-thumb-frame{display:flex;flex-direction:column;justify-content:space-between;gap:8px;min-height:84px;padding:10px;border-radius:13px;background:radial-gradient(circle at top left,color-mix(in srgb,var(--gallery-card-accent) 26%,transparent),transparent 58%),linear-gradient(180deg,#080d0af5,#060907fa)}.gallery-list-thumb-type,.gallery-list-thumb-id{font-size:.64rem;line-height:1;text-transform:uppercase;letter-spacing:.12em}.gallery-list-thumb-type{color:color-mix(in srgb,var(--gallery-card-accent) 72%,white)}.gallery-list-thumb-frame strong{color:#f6fff8;font-family:var(--font-headline);font-size:1.65rem;font-weight:400;line-height:.9}.gallery-list-thumb-id{color:#ffffffad}.gallery-list-status{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.gallery-selected-card{display:flex;flex-direction:column;gap:14px;padding:18px;border:1px solid rgba(125,255,155,.14);border-radius:20px;background:#0a100de0}.gallery-selected-title{margin:0;font-family:var(--font-headline);font-size:1.5rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase}.gallery-selected-subtitle{margin:0;color:var(--terminal-green-muted);font-size:.95rem}.gallery-sidebar-viewport-switcher{margin-top:14px}.gallery-main{display:flex;flex-direction:column;min-width:0;height:100%;padding:20px}.gallery-toolbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.gallery-viewport-switcher{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:8px}.gallery-sidebar-actions{justify-content:flex-start}.gallery-viewport-button{min-width:94px;padding:10px 12px;border:1px solid rgba(125,255,155,.14);border-radius:14px;background:#080e0ae0;color:var(--terminal-green-soft);cursor:pointer;text-align:left;transition:border-color .18s ease,transform .18s ease,background .18s ease}.gallery-viewport-button-compact{min-width:0;padding:6px 10px;border-radius:999px;font-size:.78rem;line-height:1.1;white-space:nowrap}.gallery-viewport-button:hover{transform:translateY(-1px);border-color:#7dff9b52}.gallery-viewport-button.is-active{border-color:#7dff9b6b;background:linear-gradient(180deg,#142018f5,#0a100deb);box-shadow:inset 0 0 0 1px #7dff9b1f}.gallery-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;height:100%;min-height:0;flex:1}.gallery-preview-panel,.gallery-panel{display:flex;flex-direction:column;gap:14px;min-height:0;padding:18px;border:1px solid rgba(125,255,155,.14);border-radius:20px;background:#0a100de0}.gallery-panel-scroll{flex:1 1 0;overflow:hidden}.gallery-inspector{display:flex;flex-direction:column;gap:18px;max-height:100%;min-height:0;overflow-x:hidden;overflow-y:scroll;overscroll-behavior:contain}.gallery-stage{position:relative;align-items:center;justify-content:center;min-height:0;flex:1;border:1px solid rgba(125,255,155,.14);border-radius:18px;background:linear-gradient(180deg,#060b08e0,#040705fa),repeating-linear-gradient(0deg,rgba(125,255,155,.02),rgba(125,255,155,.02) 1px,transparent 1px,transparent 30px);overflow:auto}.gallery-stage-badges{display:flex;align-items:center;gap:8px}.gallery-stage-viewport{width:min(100%,var(--gallery-preview-width));height:min(100%,var(--gallery-preview-height));min-height:0;min-width:0;display:flex;flex:0 0 auto;overflow:hidden;border-radius:14px;box-shadow:0 0 0 1px #7dff9b24,0 18px 38px #00000042}.gallery-stage-viewport.is-fluid{width:100%;height:100%;flex:1 1 auto;border-radius:0;box-shadow:none}.gallery-canvas-shell,.gallery-standard-shell,.gallery-state{width:100%;height:100%;flex:1 1 auto;min-width:100%;min-height:100%}.gallery-preview-frame{display:block;flex:1 1 auto;width:100%;height:100%;border:0;background:transparent}.gallery-runtime-root{display:flex;width:100%;height:100%;min-height:100%}.gallery-canvas-shell{display:flex;height:100%}.gallery-state{display:grid;place-items:center;padding:32px;text-align:center}.gallery-state h3{margin:8px 0 0;font-family:var(--font-headline);font-weight:400}.gallery-state p{max-width:360px}.gallery-state-error{place-items:start;text-align:left}.gallery-controls{display:flex;flex-direction:column;gap:14px}.gallery-controls-scroll{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding-right:4px}.gallery-control{display:flex;flex-direction:column;gap:7px}.gallery-checkbox{flex-direction:row;align-items:center;justify-content:space-between;gap:12px}.gallery-control-copy{display:flex;flex-direction:column;gap:4px}.gallery-control-label{color:var(--terminal-green-soft);font-size:1rem}.gallery-range-row{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:10px}.gallery-input,.gallery-number,.gallery-range,.gallery-button,.gallery-checkbox input{accent-color:var(--terminal-green)}.gallery-input,.gallery-number{width:100%;padding:10px 12px;border:1px solid rgba(125,255,155,.18);border-radius:12px;background:#070c09eb;color:var(--terminal-green-soft)}.gallery-range{width:100%}.gallery-button{padding:10px 14px;border:1px solid rgba(125,255,155,.18);border-radius:999px;background:#0c1610eb;color:var(--terminal-green-soft);cursor:pointer;transition:border-color .18s ease,background .18s ease}.gallery-button:hover:not(:disabled){border-color:#7dff9b57;background:#101c15f5}.gallery-button:disabled{opacity:.45;cursor:not-allowed}.gallery-button-quiet{padding:6px 10px}.gallery-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 9px;border-radius:999px;border:1px solid rgba(125,255,155,.18);background:#0c1610eb;color:var(--terminal-green-soft);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}.gallery-badge-muted{border-color:#7dff9b14;color:var(--terminal-green-muted)}.gallery-badge-accent{border-color:#ffb84d4d;color:#ffcd82}.gallery-badge-danger{border-color:#ff6b6b4d;color:#ff9b9b}.gallery-badge-progress{border-color:#7dff9b4d}.gallery-badge-complete{border-color:#4db8ff57;color:#98dbff}.gallery-badge-sound{border-color:#ffb84d4d;color:#ffcd82}.gallery-badge-host{border-color:#b57dff4d;color:#d8b8ff}.gallery-badge-system{border-color:#7dff9b24;color:var(--terminal-green-muted)}.gallery-metadata{display:grid;gap:12px;margin:0}.gallery-metadata div{display:grid;gap:4px}.gallery-metadata dt{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}.gallery-metadata dd{margin:0;color:var(--terminal-green-soft)}.gallery-log-list{display:flex;flex-direction:column;gap:12px;max-height:360px;overflow:auto}.gallery-log-item{padding:12px;border-radius:14px;background:#070c09eb;border:1px solid rgba(125,255,155,.1)}.gallery-pre{margin:0;white-space:pre-wrap;word-break:break-word;color:#d8f9df;font-family:SFMono-Regular,Menlo,monospace;font-size:.78rem;line-height:1.45}@media(max-width:1200px){.gallery-grid{grid-template-columns:minmax(0,1fr) 320px}}@media(max-width:960px){body{overflow:auto}body[data-gallery-mode=shell] #root{height:auto;min-height:100%}.gallery-shell{grid-template-columns:1fr;height:auto}.gallery-sidebar{border-right:0;border-bottom:1px solid rgba(125,255,155,.14)}.gallery-grid{grid-template-columns:1fr}.gallery-viewport-switcher,.gallery-toolbar-actions{justify-content:flex-start}.gallery-stage{min-height:70vh}} diff --git a/dist/glitch/glitch_gallery/assets/index-DnqmHVBx.js b/dist/glitch/glitch_gallery/assets/index-DnqmHVBx.js new file mode 100644 index 0000000..10c4a01 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-DnqmHVBx.js @@ -0,0 +1 @@ +import{k as Zt,V as g,l as U,T as Y,Q as yt,m as bt,b as E,n as Ht,f as Kt,M as Ft,r as b,o as gt,C as Et,F as wt,P as Xt,W as Vt,p as Wt,q as qt,s as Pt,t as Gt,v as Bt,w as Qt,I as Mt,i as $t,j as w,x as Jt,y as te,z as Dt}from"./index-CEeZxcxj.js";const St={type:"change"},et={type:"start"},Ct={type:"end"},V=new Ht,Tt=new Kt,ee=Math.cos(70*Ft.DEG2RAD),h=new g,f=2*Math.PI,a={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},$=1e-6;class se extends Zt{constructor(t,e=null){super(t,e),this.state=a.NONE,this.target=new g,this.cursor=new g,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:U.ROTATE,MIDDLE:U.DOLLY,RIGHT:U.PAN},this.touches={ONE:Y.ROTATE,TWO:Y.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new g,this._lastQuaternion=new yt,this._lastTargetPosition=new g,this._quat=new yt().setFromUnitVectors(t.up,new g(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new bt,this._sphericalDelta=new bt,this._scale=1,this._panOffset=new g,this._rotateStart=new E,this._rotateEnd=new E,this._rotateDelta=new E,this._panStart=new E,this._panEnd=new E,this._panDelta=new E,this._dollyStart=new E,this._dollyEnd=new E,this._dollyDelta=new E,this._dollyDirection=new g,this._mouse=new E,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=oe.bind(this),this._onPointerDown=ie.bind(this),this._onPointerUp=ae.bind(this),this._onContextMenu=pe.bind(this),this._onMouseWheel=he.bind(this),this._onKeyDown=le.bind(this),this._onTouchStart=ce.bind(this),this._onTouchMove=de.bind(this),this._onMouseDown=ne.bind(this),this._onMouseMove=re.bind(this),this._interceptControlDown=ue.bind(this),this._interceptControlUp=me.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}connect(t){super.connect(t),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(t){t.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=t}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(St),this.update(),this.state=a.NONE}update(t=null){const e=this.object.position;h.copy(e).sub(this.target),h.applyQuaternion(this._quat),this._spherical.setFromVector3(h),this.autoRotate&&this.state===a.NONE&&this._rotateLeft(this._getAutoRotationAngle(t)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let i=this.minAzimuthAngle,o=this.maxAzimuthAngle;isFinite(i)&&isFinite(o)&&(i<-Math.PI?i+=f:i>Math.PI&&(i-=f),o<-Math.PI?o+=f:o>Math.PI&&(o-=f),i<=o?this._spherical.theta=Math.max(i,Math.min(o,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+o)/2?Math.max(i,this._spherical.theta):Math.min(o,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let n=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const r=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),n=r!=this._spherical.radius}if(h.setFromSpherical(this._spherical),h.applyQuaternion(this._quatInverse),e.copy(this.target).add(h),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let r=null;if(this.object.isPerspectiveCamera){const l=h.length();r=this._clampDistance(l*this._scale);const m=l-r;this.object.position.addScaledVector(this._dollyDirection,m),this.object.updateMatrixWorld(),n=!!m}else if(this.object.isOrthographicCamera){const l=new g(this._mouse.x,this._mouse.y,0);l.unproject(this.object);const m=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),n=m!==this.object.zoom;const c=new g(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(l),this.object.updateMatrixWorld(),r=h.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;r!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(r).add(this.object.position):(V.origin.copy(this.object.position),V.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(V.direction))$||8*(1-this._lastQuaternion.dot(this.object.quaternion))>$||this._lastTargetPosition.distanceToSquared(this.target)>$?(this.dispatchEvent(St),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(t){return t!==null?f/60*this.autoRotateSpeed*t:f/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(t*.01);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){h.setFromMatrixColumn(e,0),h.multiplyScalar(-t),this._panOffset.add(h)}_panUp(t,e){this.screenSpacePanning===!0?h.setFromMatrixColumn(e,1):(h.setFromMatrixColumn(e,0),h.crossVectors(this.object.up,h)),h.multiplyScalar(t),this._panOffset.add(h)}_pan(t,e){const i=this.domElement;if(this.object.isPerspectiveCamera){const o=this.object.position;h.copy(o).sub(this.target);let n=h.length();n*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*n/i.clientHeight,this.object.matrix),this._panUp(2*e*n/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const i=this.domElement.getBoundingClientRect(),o=t-i.left,n=e-i.top,r=i.width,l=i.height;this._mouse.x=o/r*2-1,this._mouse.y=-(n/l)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(f*this._rotateDelta.x/e.clientHeight),this._rotateUp(f*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0;break}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(this._pointers.length===1)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._rotateStart.set(i,o)}}_handleTouchStartPan(t){if(this._pointers.length===1)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._panStart.set(i,o)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,o=t.pageY-e.y,n=Math.sqrt(i*i+o*o);this._dollyStart.set(0,n)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(this._pointers.length==1)this._rotateEnd.set(t.pageX,t.pageY);else{const i=this._getSecondPointerPosition(t),o=.5*(t.pageX+i.x),n=.5*(t.pageY+i.y);this._rotateEnd.set(o,n)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(f*this._rotateDelta.x/e.clientHeight),this._rotateUp(f*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(this._pointers.length===1)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._panEnd.set(i,o)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,o=t.pageY-e.y,n=Math.sqrt(i*i+o*o);this._dollyEnd.set(0,n),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const r=(t.pageX+e.x)*.5,l=(t.pageY+e.y)*.5;this._updateZoomParameters(r,l)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;eMath.min(e,Math.max(t,s)),tt=(s,t,e,i,o=1)=>{if(typeof s!="number"||Number.isNaN(s))return t;const n=Math.round(s/o)*o;return xe(n,e,i)};function Ot(s){const t=new Jt(16777215,.65);s.add(t);const e=new te(16777215,1.1);e.position.set(20,50,20),e.castShadow=!0,e.shadow.mapSize.width=2048,e.shadow.mapSize.height=2048,s.add(e);const i=new Dt(3900150,1.1,50);i.position.set(-10,10,-10),s.add(i);const o=new Dt(16743001,.9,50);o.position.set(10,-10,10),s.add(o)}function Re(s){if(Array.isArray(s)){s.forEach(t=>t.dispose());return}s.dispose()}function Lt(s){s.traverse(t=>{const e=t;e.geometry&&e.geometry.dispose(),e.material&&Re(e.material)})}function Le({config:s,onComplete:t,onProgress:e,theme:i,className:o}){const n=s.params??{},r=tt(n.gridSize,24,12,80,1),l=tt(n.majorRadius,8,4,10,.5),m=tt(n.minorRadius,3,1,5,.25),[c,st]=b.useState(r),[v,jt]=b.useState({layout:"landscape",width:0,height:0}),it=b.useRef(null),ot=b.useRef(null),W=b.useRef(!1);b.useEffect(()=>{const y=it.current;if(!y)return;const T=()=>{const L=y.clientWidth,_=y.clientHeight;if(!L||!_)return;const d=L>=_?"landscape":"portrait";let p=L,N=_;d==="landscape"?(N=Math.min(_,L*(9/16)),p=N*(16/9)):(p=Math.min(L,_/2),N=p*2),jt({layout:d,width:p,height:N})},M=new ResizeObserver(T);return M.observe(y),T(),()=>{M.disconnect()}},[]),b.useEffect(()=>{st(r),W.current=!1},[s.id,r,l,m]);const at=b.useMemo(()=>Math.max(Se,(l+m+1.5)*2),[l,m]),S=b.useMemo(()=>at/c,[at,c]);b.useEffect(()=>{e?.(c===r?0:100)},[r,e,c]),b.useEffect(()=>{c===r||W.current||(W.current=!0,t({success:!0,score:100,data:{configId:s.id,completedAt:new Date().toISOString(),params:{gridSize:c,majorRadius:l,minorRadius:m}}}))},[s.id,r,l,m,t,c]),b.useEffect(()=>{const y=ot.current;if(!y)return;const T=new gt,M=new gt,L=new Et(J);T.background=L,T.fog=new wt(J,.02),M.background=L,M.fog=new wt(J,.02),Ot(T),Ot(M);const _=new Xt(45,1,.1,1e3);_.position.copy(xt);const d=new Vt({antialias:!0,alpha:!0});d.shadowMap.enabled=!0,d.shadowMap.type=Wt,d.setPixelRatio(Math.min(window.devicePixelRatio,2)),d.setScissorTest(!0),y.appendChild(d.domElement);const p=new se(_,d.domElement);p.enableDamping=!0,p.dampingFactor=.05,p.minDistance=5,p.maxDistance=100,p.target.copy(Rt);const N=new qt(l,m,64,128),Nt=new Pt({color:3900150,roughness:.22,metalness:.1}),Z=new Gt(N,Nt);Z.castShadow=!0,Z.receiveShadow=!0,Z.rotation.x=-Math.PI/2,T.add(Z);const kt=S*.12,q=Math.max(S-kt,S*.2),nt=new Bt(q,q,q),zt=new Pt({color:3900150,roughness:.22,metalness:.1}),It=new Qt({color:0,transparent:!0,opacity:.08,wireframe:!0}),rt=Math.pow(c,3),D=new Mt(nt,zt,rt),k=new Mt(nt,It,rt),G=(c-1)*S/2,K=new $t;D.castShadow=!0,D.receiveShadow=!0,M.add(D),M.add(k);let F=0,B=0;for(let O=0;O{x=y.clientWidth,R=y.clientHeight,!(!x||!R)&&(_.aspect=1,_.updateProjectionMatrix(),d.setSize(x,R,!1))},dt=new ResizeObserver(ct);dt.observe(y),ct();const pt=()=>{X=!1,z!==null&&(window.clearTimeout(z),z=null)},ut=()=>{z=window.setTimeout(()=>{X=!0},Te)};p.addEventListener("start",pt),p.addEventListener("end",ut);let mt=0;const _t=()=>{if(mt=window.requestAnimationFrame(_t),X&&(_.position.lerp(ht,.05),p.target.lerp(lt,.05),_.position.distanceTo(ht)<.1&&p.target.distanceTo(lt)<.1&&(X=!1)),Z.rotation.z+=.002,D.rotation.y+=.002,k.rotation.y+=.002,k.visible=!1,p.update(),!x||!R)return;const O=x>=R,u=O?Math.min(x/2,R):Math.min(x,R/2),C=O?(x-u*2)/2:(x-u)/2,j=O?(R-u)/2:(R-u*2)/2,A=C,I=O?j:j+u,H=O?C+u:C,Q=j;d.setScissor(A,I,u,u),d.setViewport(A,I,u,u),d.render(T,_),d.setScissor(H,Q,u,u),d.setViewport(H,Q,u,u),d.render(M,_)};return _t(),()=>{window.cancelAnimationFrame(mt),z!==null&&window.clearTimeout(z),dt.disconnect(),p.removeEventListener("start",pt),p.removeEventListener("end",ut),p.dispose(),d.dispose(),Lt(T),Lt(M),y.removeChild(d.domElement)}},[l,m,c,S]);const At=b.useMemo(()=>({"--gc-primary":i?.primary??"var(--color-primary, #45c4b0)","--gc-accent":i?.accent??"var(--color-accent, #ff7a59)","--gc-bg":i?.bg??"var(--color-bg, #0d1117)","--gc-bg-secondary":i?.bgSecondary??"var(--color-bg-secondary, #182237)","--gc-text":i?.text??"var(--color-text, #f1f4ef)","--gc-text-muted":i?.textMuted??"var(--color-text-muted, #b6c0d4)","--gc-border":i?.border??"var(--color-border, #34516f)"}),[i]),vt=y=>{st(Number(y.target.value))};return w.jsx("div",{className:[P.wrapper,o].filter(Boolean).join(" "),style:At,ref:it,children:w.jsxs("div",{className:P.canvasShell,"data-layout":v.layout,style:{width:v.width?`${v.width}px`:void 0,height:v.height?`${v.height}px`:void 0},children:[w.jsx("div",{className:P.canvas,ref:ot}),w.jsxs("div",{className:P.viewportLabels,"data-layout":v.layout,children:[w.jsx("div",{className:P.splitLabel,children:"Continuous"}),w.jsx("div",{className:P.splitLabel,children:"Discrete"})]}),w.jsx("div",{className:P.controlOverlay,children:w.jsx("label",{className:P.resolutionCard,children:w.jsxs("span",{className:P.resolutionControl,children:[w.jsx("input",{className:P.slider,type:"range",min:"12",max:"80",step:"1",value:c,onChange:vt}),w.jsxs("span",{className:P.sliderValue,children:[S.toFixed(2),"u"]})]})})})]})})}const Ce={name:"voxel_universe",displayName:"Voxel Universe",version:"1.0.0",paramSchema:{gridSize:{type:"range",label:"Voxel Resolution",description:"How many voxels are used per axis. Higher values make each voxel smaller.",default:24,min:12,max:80,step:1},majorRadius:{type:"range",label:"Major Radius",description:"Overall radius of the torus shape.",default:8,min:4,max:10,step:.5},minorRadius:{type:"range",label:"Minor Radius",description:"Thickness of the torus ring.",default:3,min:1,max:5,step:.25}},defaultParams:{gridSize:24,majorRadius:8,minorRadius:3}};export{Le as default,Ce as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-MgCr_Urj.js b/dist/glitch/glitch_gallery/assets/index-MgCr_Urj.js new file mode 100644 index 0000000..ee925a2 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-MgCr_Urj.js @@ -0,0 +1 @@ +import{r as c,j as s}from"./index-CEeZxcxj.js";const w="_wrapper_61dhl_1",k="_frame_61dhl_15",v="_scan_61dhl_30",S="_stack_61dhl_47",B="_meta_61dhl_57",$="_progressTrack_61dhl_68",C="_progressFill_61dhl_77",E="_slide_61dhl_87",G="_title_61dhl_95",L="_rgbGlitch_61dhl_105",F="_rgbBase_61dhl_110",R="_rgbLayer_61dhl_116",Y="_layerR_61dhl_124",I="_layerG_61dhl_129",P="_layerB_61dhl_134",W="_content_61dhl_139",M="_line_61dhl_148",A="_spacer_61dhl_153",D="_list_61dhl_158",H="_warning_61dhl_166",O="_cta_61dhl_176",q="_controls_61dhl_195",U="_navButton_61dhl_201",e={wrapper:w,frame:k,scan:v,stack:S,meta:B,progressTrack:$,progressFill:C,slide:E,title:G,rgbGlitch:L,rgbBase:F,rgbLayer:R,layerR:Y,layerG:I,layerB:P,content:W,line:M,spacer:A,list:D,warning:H,cta:O,controls:q,navButton:U},z=40,i=[{title:"The Premise",lines:["This facility tests foundational assumptions.","","Not interpretations.","Assumptions."]},{title:"The method",lines:["This is math and philosophy.","Make assumption.","Pretend it's true.","Where does that lead?"]},{title:"The law",lines:["We make predictions.","If they fail, the idea fails."]},{title:"The way",lines:["You will:"],bullets:["Pass challenges","Collect paradoxes","Examine anomalies","Learn to think sharply"]},{title:"Warning",lines:["You may feel:"],bullets:["This is not a game!","Temporary confusion","The urge to defend existing physics!"],bulletStyle:"warning",after:"Good. This is not for everyone."},{title:"How This Works",lines:["Watch a short module","Pass the glitch gate","Unlock the next tech","That's it. For now."]},{title:"Proceed",lines:["You may proceed as an investigator.","Begin at the intersection","Get briefed"],cta:"[ ENTER FACILITY ]"}];function K({config:h,onComplete:u,onProgress:_,theme:n,className:p}){const[l,g]=c.useState(0),o=c.useRef(null),y=c.useMemo(()=>n?{"--gc-primary":n.primary,"--gc-accent":n.accent,"--gc-bg":n.bg,"--gc-bg-secondary":n.bgSecondary,"--gc-text":n.text,"--gc-text-muted":n.textMuted,"--gc-border":n.border}:{},[n]);c.useEffect(()=>{const t=(l+1)/i.length*100;_?.(Math.round(t))},[l,_]);const d=c.useCallback(t=>{if(t>0&&l===i.length-1){g(0);return}const r=l+t;r<0||r>=i.length||g(r)},[l]),b=c.useCallback(t=>{o.current=t.changedTouches[0]?.clientY??null},[]),x=c.useCallback(t=>{if(o.current==null)return;const r=t.changedTouches[0]?.clientY??o.current,m=o.current-r;Math.abs(m)>z&&d(m>0?1:-1),o.current=null},[d]),f=c.useCallback(()=>{u({success:!0,score:100,data:{sequence:"facility-slideshow",configId:h.id,completedAt:new Date().toISOString()}})},[h.id,u]),a=i[l],j=l===i.length-1,N=(l+1)/i.length*100,T=p?`${e.wrapper} ${p}`:e.wrapper;return s.jsx("div",{className:T,style:y,children:s.jsxs("section",{className:e.frame,"aria-label":"Facility onboarding slideshow",onTouchStart:b,onTouchEnd:x,children:[s.jsx("div",{className:e.scan,"aria-hidden":"true"}),s.jsxs("div",{className:e.stack,children:[s.jsxs("header",{children:[s.jsxs("div",{className:e.meta,children:[s.jsx("span",{children:"Glitch Facility"}),s.jsxs("span",{children:[l+1," / ",i.length]})]}),s.jsx("div",{className:e.progressTrack,children:s.jsx("div",{className:e.progressFill,style:{width:`${N}%`}})})]}),s.jsxs("article",{className:e.slide,"aria-live":"polite",children:[s.jsx("h2",{className:e.title,children:s.jsxs("span",{className:e.rgbGlitch,children:[s.jsx("span",{className:e.rgbBase,children:a.title}),s.jsx("span",{className:`${e.rgbLayer} ${e.layerR}`,"aria-hidden":"true",children:a.title}),s.jsx("span",{className:`${e.rgbLayer} ${e.layerG}`,"aria-hidden":"true",children:a.title}),s.jsx("span",{className:`${e.rgbLayer} ${e.layerB}`,"aria-hidden":"true",children:a.title})]})}),s.jsxs("div",{className:e.content,children:[a.lines.map((t,r)=>t===""?s.jsx("p",{className:e.spacer,"aria-hidden":"true"},`line-${r}`):s.jsx("p",{className:e.line,children:t},`line-${r}`)),a.bullets&&s.jsx("ul",{className:`${e.list} ${a.bulletStyle==="warning"?e.warning:""}`,children:a.bullets.map(t=>s.jsx("li",{children:t},t))}),a.after&&s.jsx("p",{className:e.line,children:a.after}),a.cta&&s.jsx("button",{type:"button",className:e.cta,onClick:f,children:a.cta})]})]}),s.jsxs("nav",{className:e.controls,"aria-label":"Slideshow controls",children:[s.jsx("button",{type:"button",className:e.navButton,onClick:()=>d(-1),disabled:l===0,children:"Previous"}),s.jsx("button",{type:"button",className:e.navButton,onClick:()=>d(1),children:j?"Restart":"Next"})]})]})]})})}const Q={name:"onboarding2",displayName:"Facility Slideshow",version:"1.0.0",paramSchema:{},defaultParams:{}};export{K as default,Q as metadata}; diff --git a/dist/glitch/glitch_gallery/assets/index-WVFKiT6G.css b/dist/glitch/glitch_gallery/assets/index-WVFKiT6G.css new file mode 100644 index 0000000..5cb8dd1 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-WVFKiT6G.css @@ -0,0 +1 @@ +._container_166qm_3{--component-font-main: var(--font-main, system-ui, sans-serif);--component-font-display: var(--font-display, var(--component-font-main));--component-font-mono: var(--font-mono, monospace);background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:var(--component-font-main);line-height:1.6;max-width:640px;margin:0 auto;padding:1rem}._container_166qm_3 *,._container_166qm_3 *:before,._container_166qm_3 *:after{box-sizing:inherit}._panel_166qm_21{animation:_fadeIn_166qm_1 .3s ease;background:var(--gc-bg-secondary, #12121a);border:4px solid var(--gc-border, #2a2a3a);border-radius:4px;box-shadow:0 0 0 2px var(--gc-bg, #0a0a0f),0 0 20px #6366f126,inset 0 0 60px #00000080}@keyframes _fadeIn_166qm_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}._imageFrame_166qm_38{width:100%;min-height:100%;object-fit:contain;aspect-ratio:16 / 9;background:#000;border-bottom:4px solid var(--gc-border, #2a2a3a);overflow:hidden;position:relative}._imageFrame_166qm_38:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.4) 0%,transparent 20%,transparent 80%,rgba(0,0,0,.2) 100%);pointer-events:none}._sceneImage_166qm_63{width:100%;height:100%;object-fit:contain;image-rendering:auto}._sceneFallback_166qm_70{--scene-accent: var(--gc-primary, #6366f1);--scene-glow: rgb(99 102 241 / 26%);--scene-panel: rgb(8 10 20 / 92%);position:relative;display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:1rem;background:radial-gradient(circle at 20% 18%,var(--scene-glow),transparent 34%),linear-gradient(145deg,#080a14f5,#05060cf5);overflow:hidden}._sceneFallback_166qm_70[data-tone=danger]{--scene-accent: #ef4444;--scene-glow: rgb(239 68 68 / 22%)}._sceneFallback_166qm_70[data-tone=accent]{--scene-accent: var(--gc-accent, #22d3ee);--scene-glow: rgb(34 211 238 / 20%)}._sceneFallback_166qm_70[data-tone=success]{--scene-accent: #22c55e;--scene-glow: rgb(34 197 94 / 20%)}._sceneFallbackGlow_166qm_102{position:absolute;inset:12% auto auto 8%;width:40%;aspect-ratio:1;border-radius:999px;background:radial-gradient(circle,var(--scene-glow),transparent 70%);filter:blur(8px);pointer-events:none}._sceneFallbackHud_166qm_113{position:relative;display:flex;justify-content:space-between;gap:.75rem;align-items:center;z-index:1}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{border:1px solid color-mix(in srgb,var(--scene-accent) 55%,transparent);background:color-mix(in srgb,var(--scene-panel) 88%,transparent);color:color-mix(in srgb,var(--scene-accent) 86%,white);padding:.35rem .55rem;text-transform:uppercase;letter-spacing:.14em;font-family:var(--component-font-mono);font-size:.66rem}._sceneFallbackSignal_166qm_123{opacity:.85}._sceneFallbackCopy_166qm_138{position:relative;z-index:1;display:grid;gap:.45rem;max-width:28rem}._sceneFallbackKicker_166qm_146{margin:0;color:color-mix(in srgb,var(--scene-accent) 78%,white);font-family:var(--component-font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}._sceneFallbackTitle_166qm_155{margin:0;color:#fff;font-family:var(--component-font-display);font-size:clamp(1.3rem,2.8vw,2rem);line-height:1.05;text-transform:uppercase}._sceneFallbackDetail_166qm_164{margin:0;color:#e8e8ecc2;font-size:.88rem;max-width:32ch}._sceneFallbackBars_166qm_171{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;align-items:end}._sceneFallbackBars_166qm_171 span{height:.35rem;border-radius:999px;background:linear-gradient(90deg,var(--scene-accent),color-mix(in srgb,var(--scene-accent) 18%,transparent));opacity:.9}._sceneFallbackBars_166qm_171 span:nth-child(2){width:82%}._sceneFallbackBars_166qm_171 span:nth-child(3){width:64%}._dialogueBox_166qm_196{padding:1.5rem;position:relative}._dialogueBox_166qm_196:before{content:"";position:absolute;top:0;left:1rem;right:1rem;height:1px;background:linear-gradient(90deg,transparent,var(--gc-primary, #6366f1) 20%,var(--gc-primary, #6366f1) 80%,transparent)}._dialogueHeader_166qm_217{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}._title_166qm_224{color:var(--gc-primary, #6366f1);font-family:var(--component-font-display);margin:0;font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 10px rgba(99,102,241,.5)}._loopBadge_166qm_235{background:#ef444433;color:#ef4444;padding:.25rem .75rem;border:2px solid #ef4444;border-radius:2px;font-family:var(--component-font-mono);font-size:.75rem;font-weight:700;letter-spacing:.1em;animation:_loopPulse_166qm_1 1.5s ease-in-out infinite}@keyframes _loopPulse_166qm_1{0%,to{opacity:1}50%{opacity:.6}}._description_166qm_253{color:var(--gc-text-muted, #9999a8);margin:0 0 1.25rem;font-size:.95rem;line-height:1.7}._actionButton_166qm_261{background:linear-gradient(180deg,#4f46e5,#3730a3);color:#fff;border:2px solid #6366f1;padding:.875rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #1e1b4b,0 6px 10px #0000004d;position:relative;top:0}._actionButton_166qm_261:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #1e1b4b,0 8px 15px #0000004d}._actionButton_166qm_261:active{top:4px;box-shadow:0 0 #1e1b4b,0 2px 5px #0000004d}._choices_166qm_296{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}._choiceButton_166qm_303{background:var(--gc-bg, #0a0a0f);border:2px solid var(--gc-border, #2a2a3a);padding:1rem;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;gap:1rem;position:relative;overflow:hidden}._choiceButton_166qm_303:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gc-primary, #6366f1);opacity:0;transition:opacity .15s ease}._choiceButton_166qm_303:hover{border-color:var(--gc-primary, #6366f1);background:#6366f114}._choiceButton_166qm_303:hover:before{opacity:1}._choiceKey_166qm_337{width:2.5rem;height:2.5rem;background:linear-gradient(180deg,#374151,#1f2937);border:2px solid #4b5563;border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--component-font-mono);font-size:1.25rem;font-weight:700;color:#e5e7eb;flex-shrink:0;box-shadow:0 3px #111827,inset 0 1px #ffffff1a;text-shadow:0 1px 2px rgba(0,0,0,.5)}._choiceButton_166qm_303:hover ._choiceKey_166qm_337{background:linear-gradient(180deg,#4f46e5,#3730a3);border-color:#6366f1;box-shadow:0 3px #1e1b4b,inset 0 1px #ffffff26,0 0 10px #6366f14d}._choiceContent_166qm_366{display:flex;flex-direction:column;gap:.25rem;text-align:left}._choiceTitle_166qm_373{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-weight:700;font-size:1rem}._choiceDesc_166qm_380{color:var(--gc-text-muted, #9999a8);font-size:.8rem;font-style:italic}._rejection_166qm_387{background:#ef444414;border:2px solid rgba(239,68,68,.4);padding:1.25rem;margin-bottom:1.25rem;position:relative}._rejectionBadge_166qm_395{display:inline-block;background:#dc2626;color:#fff;padding:.25rem .75rem;font-family:var(--component-font-mono);font-size:.8rem;font-weight:700;letter-spacing:.15em;margin-bottom:1rem;animation:_shake_166qm_1 .5s ease-in-out}@keyframes _shake_166qm_1{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}._quote_166qm_416{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-size:1.1rem;font-weight:700;margin:0 0 .75rem;padding-left:1rem;border-left:3px solid #ef4444}._explanation_166qm_426{color:var(--gc-text-muted, #9999a8);margin:0;font-size:.9rem;padding-left:1rem;border-left:3px solid transparent}._insightButton_166qm_435{background:transparent;border:2px dashed var(--gc-accent, #22d3ee);color:var(--gc-accent, #22d3ee);padding:.75rem 1rem;font-family:var(--component-font-display);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:1rem;width:100%;animation:_glowPulse_166qm_1 2s ease-in-out infinite}@keyframes _glowPulse_166qm_1{0%,to{box-shadow:0 0 5px #22d3ee4d}50%{box-shadow:0 0 15px #22d3ee80}}._insightButton_166qm_435:hover{background:#22d3ee1a;border-style:solid}._insight_166qm_435{text-align:center}._insightTitle_166qm_465{color:var(--gc-accent, #22d3ee);margin:0 0 1.5rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-shadow:0 0 15px rgba(34,211,238,.5)}._paradoxDiagram_166qm_474{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1.5rem;padding:1rem;background:#0006;border:1px solid var(--gc-border, #2a2a3a)}._paradoxNode_166qm_486{background:var(--gc-bg, #0a0a0f);border:1px solid var(--gc-border, #2a2a3a);padding:.4rem .6rem;font-family:var(--component-font-mono);font-size:.7rem;color:var(--gc-text-muted, #9999a8)}._paradoxArrow_166qm_495{color:var(--gc-primary, #6366f1);font-size:1rem;font-weight:700}._paradoxLoop_166qm_501{color:var(--gc-accent, #22d3ee);font-size:1.5rem;margin-left:.5rem;animation:_spin_166qm_1 3s linear infinite}@keyframes _spin_166qm_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._insightText_166qm_513{color:var(--gc-text, #e8e8ec);margin:0 0 1rem;font-size:.9rem;line-height:1.7;text-align:left}._insightText_166qm_513:last-of-type{margin-bottom:0}._insightText_166qm_513 strong{color:var(--gc-accent, #22d3ee)}._completeButton_166qm_530{background:linear-gradient(180deg,#059669,#047857);color:#fff;border:2px solid #10b981;padding:1rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;margin-top:1.5rem;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #064e3b,0 6px 10px #0000004d;position:relative;top:0}._completeButton_166qm_530:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #064e3b,0 8px 15px #0000004d}._completeButton_166qm_530:active{top:4px;box-shadow:0 0 #064e3b,0 2px 5px #0000004d}._successBox_166qm_566{text-align:center}._successTitle_166qm_570{color:#22c55e;margin:0 0 1rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 15px rgba(34,197,94,.5)}._stats_166qm_581{color:var(--gc-text-muted, #9999a8);margin:0 0 1.5rem;font-size:.9rem}._scoreDisplay_166qm_587{background:#0006;border:2px solid var(--gc-accent, #22d3ee);padding:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}._scoreLabel_166qm_597{color:var(--gc-text-muted, #9999a8);font-family:var(--component-font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.2em}._scoreValue_166qm_605{color:var(--gc-accent, #22d3ee);font-size:3rem;font-weight:700;text-shadow:0 0 20px rgba(34,211,238,.5)}@media(max-width:480px){._container_166qm_3{padding:.5rem}._dialogueBox_166qm_196{padding:1rem}._title_166qm_224{font-size:1.1rem}._choiceKey_166qm_337{width:2rem;height:2rem;font-size:1rem}._paradoxDiagram_166qm_474{gap:.25rem;padding:.75rem}._paradoxNode_166qm_486{font-size:.6rem;padding:.3rem .5rem}._sceneFallback_166qm_70{padding:.85rem}._sceneFallbackHud_166qm_113{gap:.5rem}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{font-size:.58rem;padding:.3rem .45rem}._sceneFallbackTitle_166qm_155{font-size:1.1rem}._sceneFallbackDetail_166qm_164{font-size:.78rem}} diff --git a/dist/glitch/glitch_gallery/assets/index-hWn6tbl7.css b/dist/glitch/glitch_gallery/assets/index-hWn6tbl7.css new file mode 100644 index 0000000..5b74a39 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-hWn6tbl7.css @@ -0,0 +1 @@ +._container_18jex_3{width:100%;height:100vh;background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden}._grid_18jex_18{position:absolute;inset:0;background-image:linear-gradient(rgba(99,102,241,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.03) 1px,transparent 1px);background-size:40px 40px;opacity:.5;animation:_gridPulse_18jex_1 4s ease-in-out infinite}@keyframes _gridPulse_18jex_1{0%,to{opacity:.3}50%{opacity:.6}}._textBlock_18jex_34{max-width:600px;text-align:center;z-index:10;padding:2rem}._mainText_18jex_41{font-size:1.25rem;line-height:1.8;color:var(--gc-text, #e8e8ec);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards}._mainText_18jex_41._delayed_18jex_50{animation-delay:2s}._questionText_18jex_54{font-size:1.1rem;color:var(--gc-textMuted, #9999a8);font-style:italic;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:3.5s}._sphere_18jex_63{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(99,102,241,.3),rgba(34,211,238,.1) 50%,transparent 70%);border:1px solid rgba(99,102,241,.3);margin:2rem auto;position:relative;animation:_sphereFloat_18jex_1 3s ease-in-out infinite}@keyframes _sphereFloat_18jex_1{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}._sphere_18jex_63._glitching_18jex_82{animation:_sphereGlitch_18jex_1 .15s steps(2) forwards}@keyframes _sphereGlitch_18jex_1{0%{border-radius:50%;filter:none}25%{border-radius:10%;filter:hue-rotate(90deg);transform:scale(1.1) skew(5deg)}50%{border-radius:5%;filter:hue-rotate(180deg) saturate(2);transform:scale(.9) skew(-5deg)}75%{border-radius:20%;filter:hue-rotate(270deg);transform:scale(1.05)}to{border-radius:50%;filter:none;transform:scale(1)}}._voxelOverlay_18jex_113{position:absolute;inset:0;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(6,1fr);opacity:0}._voxelOverlay_18jex_113._visible_18jex_122{opacity:1;animation:_voxelFlash_18jex_1 .15s steps(1) forwards}._voxel_18jex_113{background:var(--gc-primary, #6366f1);opacity:.8}@keyframes _voxelFlash_18jex_1{0%{opacity:1}to{opacity:0}}._rebelText_18jex_137{font-size:.95rem;color:var(--gc-accent, #22d3ee);margin-top:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:5s}._enterButton_18jex_146{margin-top:3rem;padding:1rem 2.5rem;background:transparent;border:1px solid var(--gc-primary, #6366f1);color:var(--gc-primary, #6366f1);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:6.5s;transition:all .3s ease}._enterButton_18jex_146:hover{background:var(--gc-primary, #6366f1);color:var(--gc-bg, #0a0a0f);box-shadow:0 0 20px #6366f166}._migrationContent_18jex_168{max-width:650px;text-align:center;z-index:10;padding:2rem}._tagline_18jex_175{font-size:1.4rem;color:var(--gc-accent, #22d3ee);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._notList_18jex_183{list-style:none;padding:0;margin:0 0 2rem;text-align:left}._notItem_18jex_190{font-size:1rem;color:var(--gc-textMuted, #9999a8);padding:.5rem 0 .5rem 2rem;position:relative;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._notItem_18jex_190:before{content:"×";position:absolute;left:0;color:#ef4444b3;font-weight:700}._notItem_18jex_190:nth-child(1){animation-delay:.5s}._notItem_18jex_190:nth-child(2){animation-delay:.8s}._notItem_18jex_190:nth-child(3){animation-delay:1.1s}._isText_18jex_212{font-size:1.1rem;color:var(--gc-text, #e8e8ec);margin:2rem 0;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1.8s}._ruleBox_18jex_221{border:1px solid var(--gc-border, #2a2a3a);padding:1.5rem;margin:2rem 0;text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:2.5s}._ruleTitle_18jex_231{font-size:.85rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem;letter-spacing:.1em}._ruleContent_18jex_238{font-size:1rem;color:var(--gc-text, #e8e8ec);line-height:1.6}._continueButton_18jex_244{margin-top:2rem;padding:.8rem 2rem;background:transparent;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-textMuted, #9999a8);font-family:Courier New,monospace;font-size:.9rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards;animation-delay:3.2s;transition:all .3s ease}._continueButton_18jex_244:hover{border-color:var(--gc-primary, #6366f1);color:var(--gc-text, #e8e8ec)}._agreementContent_18jex_265{max-width:550px;text-align:center;z-index:10;padding:2rem}._agreementTitle_18jex_272{font-size:1.2rem;color:var(--gc-textMuted, #9999a8);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._pledgeText_18jex_280{font-size:1.5rem;color:var(--gc-text, #e8e8ec);font-style:italic;margin:2rem 0;padding:1.5rem;border-left:2px solid var(--gc-primary, #6366f1);text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:.5s}._signatureArea_18jex_293{margin:3rem 0;position:relative;height:120px;display:flex;align-items:center;justify-content:center}._paper_18jex_302{width:200px;height:100px;background:#ffffff08;border:1px solid var(--gc-border, #2a2a3a);position:relative;display:flex;align-items:center;justify-content:center}._signatureMark_18jex_313{font-size:4rem;color:var(--gc-primary, #6366f1);opacity:0;transform:scale(0)}._signatureMark_18jex_313._visible_18jex_122{animation:_drawX_18jex_1 .8s ease forwards}@keyframes _drawX_18jex_1{0%{opacity:0;transform:scale(0) rotate(-45deg)}50%{opacity:1;transform:scale(1.2) rotate(0)}to{opacity:1;transform:scale(1) rotate(0)}}._pencil_18jex_339{position:absolute;font-size:2rem;opacity:0;transform:translate(80px,-60px) rotate(-45deg)}._pencil_18jex_339._animating_18jex_346{animation:_pencilDraw_18jex_1 .8s ease forwards}@keyframes _pencilDraw_18jex_1{0%{opacity:1;transform:translate(80px,-60px) rotate(-45deg)}50%{opacity:1;transform:translate(0) rotate(-45deg)}to{opacity:0;transform:translate(-80px,60px) rotate(-45deg)}}._signButton_18jex_365{padding:1rem 2.5rem;background:var(--gc-primary, #6366f1);border:none;color:var(--gc-bg, #0a0a0f);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1s}._signButton_18jex_365:hover{box-shadow:0 0 25px #6366f180;transform:translateY(-2px)}._signButton_18jex_365:disabled{opacity:.5;cursor:not-allowed}._navigationContent_18jex_390{max-width:600px;text-align:center;z-index:10;padding:2rem}._welcomeText_18jex_397{font-size:1rem;color:var(--gc-textMuted, #9999a8);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._choiceButtons_18jex_405{display:flex;flex-direction:column;gap:1.5rem}._choiceButton_18jex_405{padding:1.5rem 2rem;background:#6366f10d;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;text-align:left;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._choiceButton_18jex_405:nth-child(1){animation-delay:.5s}._choiceButton_18jex_405:nth-child(2){animation-delay:.8s}._choiceButton_18jex_405:hover{border-color:var(--gc-primary, #6366f1);background:#6366f11a;transform:translate(5px)}._choiceTitle_18jex_434{font-size:1.1rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem}._choiceDesc_18jex_440{font-size:.85rem;color:var(--gc-textMuted, #9999a8)}._arrow_18jex_445{float:right;color:var(--gc-primary, #6366f1)}@keyframes _fadeInUp_18jex_1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}._screenFadeIn_18jex_463{animation:_screenEnter_18jex_1 .6s ease forwards}@keyframes _screenEnter_18jex_1{0%{opacity:0}to{opacity:1}} diff --git a/dist/glitch/glitch_gallery/assets/index-mpZwhQDb.css b/dist/glitch/glitch_gallery/assets/index-mpZwhQDb.css new file mode 100644 index 0000000..9f98957 --- /dev/null +++ b/dist/glitch/glitch_gallery/assets/index-mpZwhQDb.css @@ -0,0 +1 @@ +._wrapper_1xs2z_1{--gc-paper: #f2f0ea;box-sizing:border-box;width:100%;height:100%;min-height:100%;margin:0;padding:0;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:24px;background:radial-gradient(circle at 12% 8%,color-mix(in srgb,var(--gc-primary, #45c4b0) 16%,transparent),transparent 34%),radial-gradient(circle at 88% 10%,color-mix(in srgb,var(--gc-accent, #ff7a59) 14%,transparent),transparent 28%),linear-gradient(160deg,var(--gc-bg, #0d1117),var(--gc-bg-secondary, #182237));color:var(--gc-text, #f1f4ef);box-shadow:0 24px 64px #00000047;display:grid;place-items:center}._wrapper_1xs2z_1,._wrapper_1xs2z_1 *,._wrapper_1xs2z_1 *:before,._wrapper_1xs2z_1 *:after{box-sizing:inherit}._canvasShell_1xs2z_28{position:relative;overflow:hidden;flex:none;border:1px solid rgb(0 0 0 / 22%);background:var(--gc-paper, #f2f0ea);box-shadow:inset 0 0 0 1px #ffffff1f}._canvas_1xs2z_28{width:100%;height:100%}._canvas_1xs2z_28 canvas{display:block;width:100%;height:100%}._viewportLabels_1xs2z_48{position:absolute;inset:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));pointer-events:none}._viewportLabels_1xs2z_48[data-layout=portrait]{grid-template-columns:1fr;grid-template-rows:repeat(2,minmax(0,1fr))}._splitLabel_1xs2z_61{display:grid;place-items:center;color:#111827d1;font-size:clamp(1.15rem,2.7vw,2.1rem);font-weight:700;font-family:IBM Plex Sans Condensed,Avenir Next Condensed,sans-serif;text-transform:uppercase;letter-spacing:.34em;text-shadow:0 2px 12px rgb(255 255 255 / 42%)}._controlOverlay_1xs2z_73{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:center;pointer-events:none}._resolutionCard_1xs2z_83{pointer-events:auto;display:flex;align-items:center;justify-content:center;width:min(100%,26rem);padding:.75rem .9rem;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:16px;background:#070f199e;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 30px #0000002e}._resolutionControl_1xs2z_97{display:flex;align-items:center;gap:.85rem;width:100%;min-width:0}._slider_1xs2z_105{width:100%;accent-color:var(--gc-primary, #45c4b0);cursor:pointer}._sliderValue_1xs2z_111{min-width:3.75rem;text-align:right;font-family:IBM Plex Mono,JetBrains Mono,monospace;font-size:.95rem}@media(max-width:900px){._resolutionControl_1xs2z_97{min-width:0}}@media(max-width:720px){._wrapper_1xs2z_1{padding:0}._splitLabel_1xs2z_61{font-size:clamp(.95rem,5vw,1.4rem);letter-spacing:.24em}._controlOverlay_1xs2z_73{right:0rem;bottom:0rem;left:0rem}} diff --git a/dist/glitch/glitch_gallery/assets/technoborder-4brzcuN1.png b/dist/glitch/glitch_gallery/assets/technoborder-4brzcuN1.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd7f4af423ba286c4e4196a3dedd8b6e6986b8c GIT binary patch literal 846039 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Μ#CKYMQ=78-f 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

    `1_ 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

    ?LgzuWz)2%{-x-^3oWO_{UtMK6^ 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%0A0`nK^zNP1@J0G12AASSw16=8|ibJShb; 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 z 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

\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'level-questions',\n displayName: 'Level Questions',\n version: '1.0.0',\n paramSchema: {},\n defaultParams: {}\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n QuizQuestion,\n QuizOption,\n Role,\n AxisScores,\n QuizResult\n} from './types';\n"],"names":["LevelQuestions","onComplete","onProgress","className","screen","setScreen","useState","introIndex","setIntroIndex","currentQuestion","setCurrentQuestion","answers","setAnswers","quizResult","setQuizResult","introCarouselRef","useRef","selectionCarouselRef","questions","questionsData","roles","calculateScores","useCallback","userAnswers","totals","q","answerId","option","o","findBestRole","scores","bestRole","bestDistance","role","distance","generateSummary","dominant","index","handleAnswer","questionId","optionId","newAnswers","progress","recommended","summary","handleAcceptRecommended","recommendedRole","r","handleWantToDecide","handleRoleSelect","handleStartQuiz","useEffect","carousel","handleScroll","scrollLeft","newIndex","currentQ","jsxs","styles","jsx","s","i","_","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/glitch/glitch_lightlane/Component.d.ts b/dist/glitch/glitch_lightlane/Component.d.ts new file mode 100644 index 0000000..b416453 --- /dev/null +++ b/dist/glitch/glitch_lightlane/Component.d.ts @@ -0,0 +1,14 @@ +import { type GlitchComponentProps } from './types'; +type ComponentDevUiOverrides = { + showNumericDiagnostics?: boolean; + compactNumericDiagnostics?: boolean; + onOpenHarness?: () => void; + onSetParam?: (name: 'complexity' | 'speedup', value: number) => void; + maxComplexity?: number; + maxSpeedup?: number; +}; +type ComponentProps = GlitchComponentProps & { + devUi?: ComponentDevUiOverrides; +}; +export default function Component(props: ComponentProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/glitch/glitch_lightlane/components/DiophantineVectors.d.ts b/dist/glitch/glitch_lightlane/components/DiophantineVectors.d.ts new file mode 100644 index 0000000..c58efa8 --- /dev/null +++ b/dist/glitch/glitch_lightlane/components/DiophantineVectors.d.ts @@ -0,0 +1,10 @@ +interface DiophantineVectorsProps { + complexity: number; + lightlanes?: boolean; + radius?: number; + distance?: number; + allSectors?: boolean; + cumulative?: boolean; +} +export declare function DiophantineVectors({ complexity, lightlanes, radius, distance, allSectors, cumulative }: DiophantineVectorsProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts b/dist/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts new file mode 100644 index 0000000..b2a1b67 --- /dev/null +++ b/dist/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts @@ -0,0 +1,22 @@ +import type { GlitchHostBridge } from '../types'; +interface FanoSweepPanelProps { + radius: number; + distance: number; + chandraDistance: number; + allSectors: boolean; + cumulative: boolean; + theta: number; + phi: number; + orbitSpeed: number; + thetaDrift: number; + thetaJitter: number; + phiJitter: number; + K: number; + speedup: number; + usePoisson: boolean; + bottomInset?: number; + onBack?: () => void; + host?: GlitchHostBridge; +} +export declare function FanoSweepPanel(props: FanoSweepPanelProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/glitch/glitch_lightlane/components/OrbitingObject.d.ts b/dist/glitch/glitch_lightlane/components/OrbitingObject.d.ts new file mode 100644 index 0000000..8190e96 --- /dev/null +++ b/dist/glitch/glitch_lightlane/components/OrbitingObject.d.ts @@ -0,0 +1,12 @@ +import { type MutableRefObject } from 'react'; +interface OrbitingObjectProps { + radius: number; + theta: number; + phi: number; + orbitTime: MutableRefObject; + simTime?: MutableRefObject; + thetaDrift?: number; + paused?: boolean; +} +export declare function OrbitingObject({ radius, theta, phi, orbitTime, simTime, thetaDrift, paused }: OrbitingObjectProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/glitch/glitch_lightlane/components/PoissonShell.d.ts b/dist/glitch/glitch_lightlane/components/PoissonShell.d.ts new file mode 100644 index 0000000..002434d --- /dev/null +++ b/dist/glitch/glitch_lightlane/components/PoissonShell.d.ts @@ -0,0 +1,3 @@ +export declare function PoissonShell({ radius }: { + radius: number; +}): import("react/jsx-runtime").JSX.Element; diff --git a/dist/glitch/glitch_lightlane/components/PulsingSphere.d.ts b/dist/glitch/glitch_lightlane/components/PulsingSphere.d.ts new file mode 100644 index 0000000..6673eb6 --- /dev/null +++ b/dist/glitch/glitch_lightlane/components/PulsingSphere.d.ts @@ -0,0 +1,6 @@ +interface PulsingSphereProps { + radius: number; + paused?: boolean; +} +export declare function PulsingSphere({ radius, paused }: PulsingSphereProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/glitch/glitch_lightlane/components/SamplingSystem.d.ts b/dist/glitch/glitch_lightlane/components/SamplingSystem.d.ts new file mode 100644 index 0000000..ea738ce --- /dev/null +++ b/dist/glitch/glitch_lightlane/components/SamplingSystem.d.ts @@ -0,0 +1,29 @@ +import type { GlitchHostBridge, SceneViewMode } from '../types'; +interface SamplingSystemProps { + complexity: number; + radius: number; + distance: number; + theta: number; + phi: number; + observationMode: 'orbit' | 'randomSphere'; + allSectors: boolean; + cumulative: boolean; + K: number; + orbitRadius: number; + orbitVelocity: number; + thetaDrift: number; + thetaJitter: number; + phiJitter: number; + usePoisson: boolean; + speedup: number; + paused: boolean; + sceneView: SceneViewMode; + bottomInset?: number; + showNumericDiagnostics?: boolean; + compactNumericDiagnostics?: boolean; + host?: GlitchHostBridge; + centerDistribution?: boolean; + hideFlyingBars?: boolean; +} +export declare function SamplingSystem({ complexity, radius, distance, theta, phi, observationMode, allSectors, cumulative, K, orbitRadius, orbitVelocity, thetaDrift, thetaJitter, phiJitter, usePoisson, speedup, paused, sceneView, bottomInset, showNumericDiagnostics, compactNumericDiagnostics, host, centerDistribution, hideFlyingBars }: SamplingSystemProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/glitch/glitch_lightlane/components/TargetDisc.d.ts b/dist/glitch/glitch_lightlane/components/TargetDisc.d.ts new file mode 100644 index 0000000..4a95429 --- /dev/null +++ b/dist/glitch/glitch_lightlane/components/TargetDisc.d.ts @@ -0,0 +1,6 @@ +interface TargetDiscProps { + radius: number; + distance: number; +} +export declare function TargetDisc({ radius, distance }: TargetDiscProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/glitch/glitch_lightlane/components/VectorArrow.d.ts b/dist/glitch/glitch_lightlane/components/VectorArrow.d.ts new file mode 100644 index 0000000..349ed2a --- /dev/null +++ b/dist/glitch/glitch_lightlane/components/VectorArrow.d.ts @@ -0,0 +1,7 @@ +interface VectorArrowProps { + vector: [number, number, number]; + origin?: [number, number, number]; + color?: string; +} +export declare function VectorArrow({ vector, origin, color }: VectorArrowProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/glitch/glitch_lightlane/dev.d.ts b/dist/glitch/glitch_lightlane/dev.d.ts new file mode 100644 index 0000000..2c068e0 --- /dev/null +++ b/dist/glitch/glitch_lightlane/dev.d.ts @@ -0,0 +1 @@ +import './dev-theme.css'; diff --git a/dist/glitch/glitch_lightlane/devHostBridge.d.ts b/dist/glitch/glitch_lightlane/devHostBridge.d.ts new file mode 100644 index 0000000..3fba17e --- /dev/null +++ b/dist/glitch/glitch_lightlane/devHostBridge.d.ts @@ -0,0 +1,8 @@ +import type { GlitchHostBridge } from './types'; +export type DevHostBridgeOptions = { + isMuted?: () => boolean; + onSound?: (id: string, payload?: Record) => void; + onEmit?: (type: string, payload?: unknown) => void; +}; +export declare function createDevHostBridge(options?: DevHostBridgeOptions): GlitchHostBridge; +export declare function attachWindowSoundBridge(host: GlitchHostBridge): () => void; diff --git a/dist/glitch/glitch_lightlane/glitch.manifest.json b/dist/glitch/glitch_lightlane/glitch.manifest.json new file mode 100644 index 0000000..c4fb622 --- /dev/null +++ b/dist/glitch/glitch_lightlane/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "lightlane", + "displayName": "Lightlane Challenge", + "version": "0.1.0", + "folderName": "glitch_lightlane", + "packageName": "@nommo/lightlane", + "entry": "dist/lightlane.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "reference", + "3d" + ] +} diff --git a/dist/glitch/glitch_lightlane/hostBridge.d.ts b/dist/glitch/glitch_lightlane/hostBridge.d.ts new file mode 100644 index 0000000..fa85f46 --- /dev/null +++ b/dist/glitch/glitch_lightlane/hostBridge.d.ts @@ -0,0 +1,17 @@ +import type { GlitchHostBridge } from './types'; +export declare const HOST_SOUND_EVENT = "glitch:play-sound"; +export declare const HOST_STOP_SOUND_EVENT = "glitch:stop-sound"; +export declare const HOST_EMIT_PREFIX = "glitch:host:"; +export declare const SOUND_IDS: { + readonly click: "ui.button_click"; + readonly hover: "ui.button_hover"; + readonly computeStart: "machine.compute_start"; + readonly computeStep: "machine.compute_step"; + readonly computeDone: "machine.compute_done"; + readonly verdictStable: "machine.verdict_stable"; + readonly verdictAlert: "machine.verdict_alert"; +}; +export type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS]; +export declare function safePlaySound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeStopSound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown): void; diff --git a/dist/glitch/glitch_lightlane/index.d.ts b/dist/glitch/glitch_lightlane/index.d.ts new file mode 100644 index 0000000..50f28d5 --- /dev/null +++ b/dist/glitch/glitch_lightlane/index.d.ts @@ -0,0 +1,5 @@ +import Component from './Component'; +import { type GlitchComponentMetadata } from './types'; +export default Component; +export declare const metadata: GlitchComponentMetadata; +export type { GlitchComponentProps, GlitchComponentConfig, GlitchComponentResult, GlitchHostBridge } from './types'; diff --git a/dist/glitch/glitch_lightlane/lightlane.js b/dist/glitch/glitch_lightlane/lightlane.js new file mode 100644 index 0000000..030f745 --- /dev/null +++ b/dist/glitch/glitch_lightlane/lightlane.js @@ -0,0 +1,2805 @@ +import { jsx as n, jsxs as i, Fragment as Fe } from "react/jsx-runtime"; +import { useMemo as he, useState as $, useRef as Z, useEffect as de } from "react"; +import { useFrame as Qe } from "@react-three/fiber"; +import { Html as De, Grid as At } from "@react-three/drei"; +import * as Ye from "three"; +import { Color as Dt } from "three"; +function Nt({ vector: e, origin: t = [0, 0, 0], color: o = "#facc15" }) { + const { dir: r, len: l, position: a } = he(() => { + const c = new Ye.Vector3(...t), s = new Ye.Vector3(...e), d = c.distanceTo(s); + return { dir: s.clone().sub(c).normalize(), len: d, position: c }; + }, [e, t]), h = he(() => new Ye.ArrowHelper(r, a, l, o, 0.2 * Math.min(l, 1) + 0.1, 0.1 * Math.min(l, 1) + 0.05), [r, l, a, o]); + return /* @__PURE__ */ n("primitive", { object: h }); +} +function _t(e, t = !1) { + const o = []; + for (let r = 0; r <= e; r++) + for (let l = 0; l <= e - r; l++) { + const a = e - r - l; + if (a >= 0) + if (!t) + o.push([r, l, a]); + else { + const h = r === 0 ? [1] : [1, -1], c = l === 0 ? [1] : [1, -1], s = a === 0 ? [1] : [1, -1]; + for (const d of h) + for (const m of c) + for (const u of s) + o.push([r * d, l * m, a * u]); + } + } + return o; +} +function Ht({ vector: e, radius: t, distance: o, color: r }) { + const { position: l, quaternion: a } = he(() => { + const h = new Ye.Vector3(...e).normalize(), c = new Ye.Vector3(0, 1, 0), s = new Ye.Quaternion().setFromUnitVectors(c, h); + return { position: h.clone().multiplyScalar(o / 2), quaternion: s }; + }, [e, o]); + return /* @__PURE__ */ i("mesh", { position: l, quaternion: a, children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [t, t, o, 32] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: r, opacity: 0.5, transparent: !0 }) + ] }); +} +function Wt({ complexity: e, lightlanes: t = !1, radius: o = 0.5, distance: r = 5, allSectors: l = !1, cumulative: a = !1 }) { + const h = he(() => { + const s = [], d = a ? 1 : e, m = e; + for (let u = d; u <= m; u++) { + const x = _t(u, l); + for (const y of x) + s.push({ vec: y, c: u }); + } + return s; + }, [e, l, a]), c = (s) => { + const d = a ? Math.max(e, 1) : e; + return `hsl(${270 * (1 - (d > 1 ? (s - 1) / (d - 1) : 1))}, 100%, 50%)`; + }; + return /* @__PURE__ */ n("group", { children: h.map((s, d) => { + const m = a ? c(s.c) : t ? "#ff33c5" : "#4ade80"; + return t ? /* @__PURE__ */ n( + Ht, + { + vector: s.vec, + radius: o, + distance: r, + color: m + }, + `cyl-${d}-${s.vec.join(",")}-${s.c}` + ) : /* @__PURE__ */ n( + Nt, + { + vector: s.vec, + color: m + }, + `vec-${d}-${s.vec.join(",")}-${s.c}` + ); + }) }); +} +const Vt = "glitch:play-sound", jt = "glitch:stop-sound", we = { + click: "ui.button_click", + hover: "ui.button_hover", + computeStart: "machine.compute_start", + computeStep: "machine.compute_step", + computeDone: "machine.compute_done" +}; +function Ct(e, t) { + typeof window > "u" || window.dispatchEvent(new CustomEvent(e, { detail: t })); +} +function Ce(e, t, o) { + try { + if (e?.playSound) { + e.playSound(t, o); + return; + } + } catch { + } + Ct(Vt, { id: t, payload: o }); +} +function Yt(e, t, o) { + try { + if (e?.stopSound) { + e.stopSound(t, o); + return; + } + } catch { + } + Ct(jt, { id: t, payload: o }); +} +const Ue = 1e-12; +function ut(e = 123456789) { + let t = e >>> 0; + return function() { + t |= 0, t = t + 1831565813 | 0; + let r = Math.imul(t ^ t >>> 15, 1 | t); + return r = r + Math.imul(r ^ r >>> 7, 61 | r) ^ r, ((r ^ r >>> 14) >>> 0) / 4294967296; + }; +} +function Ut(e, t = Math.random) { + if (!Number.isFinite(e) || e <= 0) return 0; + if (e < 30) { + const h = Math.exp(-e); + let c = 0, s = 1; + do + c++, s *= t(); + while (s > h); + return c - 1; + } + const o = Math.max(1e-12, t()), r = t(), l = Math.sqrt(-2 * Math.log(o)) * Math.cos(2 * Math.PI * r), a = e + Math.sqrt(e) * l; + return Math.max(0, Math.round(a)); +} +function st(e) { + return [e[0] ?? e.x, e[1] ?? e.y, e[2] ?? e.z]; +} +function Gt(e, t, o) { + return Math.sqrt(e * e + t * t + o * o); +} +function kt(e) { + const t = 2 * Math.PI; + let o = e % t; + return o < 0 && (o += t), o; +} +function Jt(e) { + const t = 2 * e() - 1, o = 2 * Math.PI * e(); + return { + theta: Math.acos(Math.max(-1, Math.min(1, t))), + phi: o + }; +} +function mt(e) { + const t = 2 * Math.PI; + let o = e % t; + return o < 0 && (o += t), o > Math.PI && (o = t - o), o; +} +function Mt(e = Math.random) { + const t = Math.max(1e-12, e()), o = e(); + return Math.sqrt(-2 * Math.log(t)) * Math.cos(2 * Math.PI * o); +} +function qt(e, t, o) { + const r = Math.sin(t); + return [ + e * r * Math.cos(o), + e * Math.cos(t), + e * r * Math.sin(o) + ]; +} +function Xt(e, t = !1, o = !1) { + const r = [], l = o ? 1 : e, a = e; + for (let h = l; h <= a; h++) + for (let c = 0; c <= h; c++) + for (let s = 0; s <= h - c; s++) { + const d = h - c - s; + if (!t) { + r.push([c, s, d]); + continue; + } + const m = c === 0 ? [1] : [1, -1], u = s === 0 ? [1] : [1, -1], x = d === 0 ? [1] : [1, -1]; + for (const y of m) + for (const B of u) + for (const F of x) + r.push([c * y, s * B, d * F]); + } + return r; +} +function wt({ + D: e, + complexity: t, + allSectors: o = !1, + cumulative: r = !1 +}) { + if (!Number.isFinite(e) || e <= 0) return []; + if (!Number.isInteger(t) || t < 1) return []; + const l = Xt(t, o, r), a = []; + for (let h = 0; h < l.length; h++) { + const [c, s, d] = l[h], m = Gt(c, s, d); + m <= Ue || a.push([e * c / m, e * s / m, e * d / m]); + } + return a; +} +function Kt(e, t, o) { + if (!e || e.length === 0 || !Number.isFinite(o) || o <= 0) return 0; + const [r, l, a] = st(t), h = o * o; + let c = 0; + for (let s = 0; s < e.length; s++) { + const [d, m, u] = st(e[s]), x = d * d + m * m + u * u; + if (x <= Ue) continue; + let y = (r * d + l * m + a * u) / x; + y < 0 && (y = 0), y > 1 && (y = 1); + const B = y * d, F = y * m, R = y * u, C = r - B, j = l - F, v = a - R; + C * C + j * j + v * v < h && c++; + } + return c; +} +function Qt(e, t, o, r) { + if (!e || e.length === 0 || !Number.isFinite(t) || t <= 0 || !Number.isFinite(r) || r <= 0) return 0; + const [l, a, h] = st(o), s = t * t - 0.5 * r * r; + let d = 0; + for (let m = 0; m < e.length; m++) { + const [u, x, y] = st(e[m]); + l * u + a * x + h * y > s && d++; + } + return d; +} +function Bt({ D: e, lane_radius: t }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(t) || t <= 0) return 0; + const o = t * t / (4 * e * e); + return o <= 0 ? 0 : o > 1 ? 1 : o; +} +function Zt({ D: e, lane_radius: t, lane_length: o }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(t) || t <= 0 || !Number.isFinite(o) || o <= 0) return 0; + if (o >= e - Ue) + return Bt({ D: e, lane_radius: t }); + const r = t, l = o, a = e - l; + if (r <= a) return 0; + if (r >= e + l) return 1; + const h = Math.sqrt(Math.max(0, e * e - l * l)); + let c; + return r < h ? c = (e * e + l * l - r * r) / (2 * e * l) : r < e ? c = Math.sqrt(Math.max(0, 1 - r * r / (e * e))) : c = -1, Number.isFinite(c) ? (c < -1 && (c = -1), c > 1 && (c = 1), (1 - c) / 2) : 0; +} +function en({ flux: e, D: t, lane_radius: o, dt: r }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(r) || r <= 0) return 0; + const l = Bt({ D: t, lane_radius: o }); + return e * l * r; +} +function tn({ flux: e, D: t, lane_radius: o, lane_length: r, dt: l }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(l) || l <= 0) return 0; + const a = Zt({ D: t, lane_radius: o, lane_length: r }); + return e * a * l; +} +function Et({ + flux: e, + D: t, + lane_radius: o, + dt: r, + hitTestModel: l = "shell", + lane_length: a +}) { + return l === "segment" ? tn({ flux: e, D: t, lane_radius: o, lane_length: a, dt: r }) : en({ flux: e, D: t, lane_radius: o, dt: r }); +} +function nn(e) { + if (!e || typeof e != "object") + throw new Error("createSamplingSimulation: config object is required."); + const t = e.lane_radius ?? e.radius, o = e.D, r = e.complexity, l = e.flux, a = e.bin_size ?? 1, h = e.sub_bin_sampling ?? 4, c = e.thetaDrift ?? e.theta_drift ?? 0, s = e.thetaJitter ?? e.theta_jitter ?? 0, d = e.phiJitter ?? e.phi_jitter ?? 0, m = e.laneLength ?? e.lane_length ?? e.distance ?? o, u = e.hitTestModel ?? e.hit_test_model ?? "shell", x = e.observationMode ?? e.observation_mode ?? "orbit"; + if (!Number.isFinite(o) || o <= 0) + throw new Error("createSamplingSimulation: D must be a positive number."); + if (!Number.isFinite(t) || t <= 0) + throw new Error("createSamplingSimulation: lane_radius (or radius) must be a positive number."); + if (!Number.isInteger(r) || r < 1) + throw new Error("createSamplingSimulation: complexity must be an integer >= 1."); + if (!Number.isFinite(l) || l < 0) + throw new Error("createSamplingSimulation: flux must be a finite number >= 0."); + if (!Number.isFinite(a) || a <= 0) + throw new Error("createSamplingSimulation: bin_size must be a positive number."); + if (!Number.isInteger(h) || h < 1) + throw new Error("createSamplingSimulation: sub_bin_sampling must be an integer >= 1."); + if (!Number.isFinite(c)) + throw new Error("createSamplingSimulation: thetaDrift must be finite."); + if (!Number.isFinite(s) || s < 0) + throw new Error("createSamplingSimulation: thetaJitter must be a finite number >= 0."); + if (!Number.isFinite(d) || d < 0) + throw new Error("createSamplingSimulation: phiJitter must be a finite number >= 0."); + if (!Number.isFinite(m) || m <= 0) + throw new Error("createSamplingSimulation: laneLength/lane_length/distance must be a positive number."); + if (u !== "shell" && u !== "segment") + throw new Error('createSamplingSimulation: hitTestModel must be "shell" or "segment".'); + if (x !== "orbit" && x !== "randomSphere") + throw new Error('createSamplingSimulation: observationMode must be "orbit" or "randomSphere".'); + return { + D: o, + lane_radius: t, + complexity: r, + flux: l, + bin_size: a, + sub_bin_sampling: h, + theta: mt(e.theta ?? Math.PI / 2), + phi: kt(e.phi ?? 0), + velocity: e.velocity ?? 0, + thetaDrift: c, + thetaJitter: s, + phiJitter: d, + lane_length: m, + hitTestModel: u, + observationMode: x, + allSectors: !!e.allSectors, + cumulative: !!e.cumulative, + usePoisson: e.usePoisson !== !1, + seed: Number.isFinite(e.seed) ? e.seed : 1 + }; +} +function It(e) { + const t = nn(e), o = wt(t), r = t.hitTestModel === "segment" ? wt({ ...t, D: t.lane_length }) : o, l = ut(t.seed), a = ut(t.seed + 1), h = ut(t.seed + 2), c = t.bin_size / t.sub_bin_sampling, s = Et({ + flux: t.flux, + D: t.D, + lane_radius: t.lane_radius, + dt: c, + hitTestModel: t.hitTestModel, + lane_length: t.lane_length + }); + let d = 0, m = 0, u = t.phi, x = t.theta, y = 0, B = 0, F = 0, R = 0, C = 0, j = 0, v = 0; + function L(k, A) { + return t.usePoisson ? Ut(k, A) : k; + } + function O(k = x, A = u) { + return qt(t.D, k, A); + } + function J() { + let k, A; + if (t.observationMode === "randomSphere") { + const P = Jt(h); + k = P.theta, A = P.phi; + } else + k = mt( + x + (t.thetaJitter > 0 ? t.thetaJitter * Mt(h) : 0) + ), A = kt( + u + (t.phiJitter > 0 ? t.phiJitter * Mt(h) : 0) + ); + const ee = O(k, A), z = t.hitTestModel === "segment" ? Kt(r, ee, t.lane_radius) : Qt(o, t.D, ee, t.lane_radius); + j = z; + const D = o.length, N = D > 0 ? z * t.flux * c / D : 0; + return B += L(N, l), F += L(s, a), R += N, v += z, C++, { + laneCount: z, + satPos: ee, + lambdaLightlaneSubBin: N, + phase: A, + theta: k + }; + } + function _() { + const k = C > 0 ? C * c : t.bin_size, A = s * t.sub_bin_sampling, D = { + time: y, + bin_size: k, + lightlane: B, + isotropic: F, + lambdaIsotropic: C > 0 ? s * C : A, + overlaps: j, + overlapsMean: C > 0 ? v / C : 0, + subBins: C, + phase: u, + theta: x, + lambdaLightlaneExpected: R + }; + return B = 0, F = 0, R = 0, v = 0, C = 0, D; + } + return { + config: { ...t }, + getLaneCount() { + return o.length; + }, + getState() { + return { + elapsed: y, + phase: u, + theta: x, + timeInBin: d, + timeInSubBin: m, + accumulatedLightlane: B, + accumulatedIsotropic: F, + expectedLightlaneThisBin: R, + processedSubBinsInCurrentBin: C, + lastLaneCount: j, + laneCount: o.length + }; + }, + reset() { + d = 0, m = 0, u = t.phi, x = t.theta, y = 0, B = 0, F = 0, R = 0, C = 0, j = 0, v = 0; + }, + flushPartialBin() { + if (C <= 0) return null; + const k = _(); + return d = 0, m = 0, k; + }, + simulate(k) { + if (!Number.isFinite(k) || k <= 0) + return { + bins: [], + lastLaneCount: j, + subBinEvents: 0, + elapsed: y + }; + let A = k, ee = 0; + const z = []; + for (; A > Ue; ) { + const D = c - m, N = t.bin_size - d, P = Math.min(A, D, N); + u += t.velocity * P, x = mt(x + t.thetaDrift * P), y += P, m += P, d += P, A -= P, m >= c - Ue && (m = 0, J(), ee++), d >= t.bin_size - Ue && (d = 0, z.push(_())); + } + return { + bins: z, + lastLaneCount: j, + subBinEvents: ee, + elapsed: y + }; + } + }; +} +function Ft(e, t) { + const o = e.n + 1, r = t - e.mean, l = e.mean + r / o, a = e.m2 + r * (t - l); + return { n: o, mean: l, m2: a }; +} +function Pt() { + return { n: 0, mean: 0, m2: 0 }; +} +function on({ + complexity: e, + samplesPerPoint: t, + runsPerPoint: o, + binSize: r, + subBinSampling: l, + props: a, + observationMode: h, + seed: c +}) { + let s = Pt(), d = Pt(), m = 0; + for (let F = 0; F < o; F++) { + const R = It({ + D: a.chandraDistance, + theta: a.theta, + phi: a.phi, + observationMode: h, + velocity: a.orbitSpeed, + thetaDrift: a.thetaDrift, + thetaJitter: a.thetaJitter, + phiJitter: a.phiJitter, + bin_size: r, + complexity: e, + sub_bin_sampling: l, + flux: a.K, + lane_radius: a.radius, + distance: a.distance, + hitTestModel: "segment", + allSectors: a.allSectors, + cumulative: a.cumulative, + usePoisson: a.usePoisson, + seed: c + F * 7919 + }); + F === 0 && (m = R.getLaneCount()); + for (let C = 0; C < t; C++) { + const { bins: j } = R.simulate(r), v = j[0]; + v && (s = Ft(s, v.lightlane), d = Ft(d, v.isotropic)); + } + } + const u = s.n > 1 ? s.m2 / (s.n - 1) : 0, x = d.n > 1 ? d.m2 / (d.n - 1) : 0, y = s.mean > 0 ? u / s.mean : 0, B = d.mean > 0 ? x / d.mean : 0; + return { + complexity: e, + laneCount: m, + meanBlue: s.mean, + meanYellow: d.mean, + fanoBlue: y, + fanoYellow: B, + fanoExcess: Math.max(0, y - B) + }; +} +function rn(e, t = 1) { + const o = e.filter((u) => u.complexity >= t && u.complexity > 1 && u.fanoExcess > 1e-6); + if (o.length < 3) return null; + let r = 0, l = 0, a = 0, h = 0; + const c = o.length; + for (const u of o) { + const x = Math.log(u.laneCount), y = Math.log(u.fanoExcess); + r += x, l += y, a += x * x, h += x * y; + } + const s = c * a - r * r; + if (Math.abs(s) < 1e-12) return null; + const d = (c * h - r * l) / s, m = (l - d * r) / c; + return { + A: Math.exp(m), + alpha: -d, + predictFanoExcessFromLaneCount(u) { + return Math.exp(m + d * Math.log(Math.max(1, u))); + } + }; +} +function an(e, t = 1) { + const o = e.filter((c) => c.complexity >= t && c.complexity > 1 && c.fanoExcess > 1e-6); + if (o.length < 4) return null; + const r = Math.min(...o.map((c) => c.fanoExcess)), l = Math.max(0, r * 0.98); + let a = null; + const h = 80; + for (let c = 0; c <= h; c++) { + const s = c / h * l, d = o.map((O) => ({ x: O.laneCount, y: O.fanoExcess - s })).filter((O) => O.y > 1e-9); + if (d.length < 3) continue; + let m = 0, u = 0, x = 0, y = 0; + const B = d.length; + for (const O of d) { + const J = Math.log(O.x), _ = Math.log(O.y); + m += J, u += _, x += J * J, y += J * _; + } + const F = B * x - m * m; + if (Math.abs(F) < 1e-12) continue; + const R = (B * y - m * u) / F, C = (u - R * m) / B, j = Math.exp(C), v = -R; + if (!(j > 0) || !(v > 0)) continue; + let L = 0; + for (const O of o) { + const J = s + j * Math.pow(Math.max(1, O.laneCount), -v), _ = Math.log(Math.max(1e-9, O.fanoExcess)) - Math.log(Math.max(1e-9, J)); + L += _ * _; + } + (!a || L < a.score) && (a = { A: j, alpha: v, B: s, score: L }); + } + return a ? { + A: a.A, + alpha: a.alpha, + B: a.B, + score: a.score, + predictFanoExcessFromLaneCount(c) { + return a.B + a.A * Math.pow(Math.max(1, c), -a.alpha); + } + } : null; +} +function sn(e) { + const t = e.filter((u) => u.x > 0 && u.y > 0); + if (t.length < 3) return null; + let o = 0, r = 0, l = 0, a = 0; + const h = t.length; + for (const u of t) { + const x = Math.log(u.x), y = Math.log(u.y); + o += x, r += y, l += x * x, a += x * y; + } + const c = h * l - o * o; + if (Math.abs(c) < 1e-12) return null; + const s = (h * a - o * r) / c, d = (r - s * o) / h, m = Math.exp(d); + return { + A: m, + beta: s, + predict(u) { + return m * Math.pow(Math.max(1e-9, u), s); + }, + invert(u) { + return m <= 0 || Math.abs(s) < 1e-12 || u <= 0 ? null : Math.pow(u / m, 1 / s); + } + }; +} +function ln(e, t) { + if (!Number.isFinite(t) || t <= 0 || e.length === 0) return null; + const o = [...e].sort((s, d) => s.complexity - d.complexity), r = [...o].sort((s, d) => s.laneCount - d.laneCount), l = r[0], a = r[r.length - 1]; + if (t <= l.laneCount) + return { complexity: l.complexity, mode: "observed-range" }; + for (let s = 1; s < r.length; s++) { + const d = r[s - 1], m = r[s]; + if (t <= m.laneCount) { + const u = Math.max(1e-9, m.laneCount - d.laneCount), x = (t - d.laneCount) / u; + return { + complexity: d.complexity + x * (m.complexity - d.complexity), + mode: "observed-range" + }; + } + } + const c = sn(o.map((s) => ({ x: s.complexity, y: s.laneCount })))?.invert(t) ?? null; + return c && Number.isFinite(c) ? { complexity: c, mode: "extrapolated" } : { complexity: a.complexity, mode: "observed-max" }; +} +function Tt(e, t, o, r) { + return e.map((l, a) => `${a === 0 ? "M" : "L"} ${o(l.complexity)} ${r(t(l))}`).join(" "); +} +function cn(e) { + return e >= 10 ? e.toFixed(0) : e >= 2 ? e.toFixed(1) : e.toFixed(2); +} +function dn(e, t) { + const r = [ + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 1, + 1.1, + 1.2, + 1.4, + 1.6, + 1.8, + 2, + 2.5, + 3, + 4, + 5, + 7.5, + 10 + ].filter((c) => c >= e && c <= t); + if (r.length >= 3) return r; + const l = 5, a = Math.log(e), h = Math.log(t); + return Array.from({ length: l }, (c, s) => { + const d = s / (l - 1); + return Math.exp(a + (h - a) * d); + }); +} +function pn(e) { + const [t, o] = $(40), [r, l] = $(1e3), [a, h] = $(3), [c, s] = $(1), [d, m] = $(4), [u, x] = $("randomSphere"), [y, B] = $(0.05), [F, R] = $(10), [C, j] = $(0), [v, L] = $([]), [O, J] = $(0), [_, k] = $(!1), A = Z(!1), ee = Z(-1), z = () => { + Ce(e.host, we.hover, { page: "fano" }); + }, D = (b, T) => { + Ce(e.host, we.click, { page: "fano", target: b, ...T }); + }; + de(() => { + let b = !1; + return L([]), J(0), k(!0), (async () => { + const T = []; + for (let E = 1; E <= t; E++) { + if (b) return; + const I = on({ + complexity: E, + samplesPerPoint: r, + runsPerPoint: a, + binSize: c, + subBinSampling: d, + props: e, + observationMode: u, + seed: 1e4 + E * 97 + C * 100003 + }); + T.push(I), L([...T]), J(E / t), await new Promise((ne) => setTimeout(ne, 0)); + } + b || k(!1); + })(), () => { + b = !0; + }; + }, [ + t, + r, + a, + c, + d, + u, + C, + e.radius, + e.distance, + e.chandraDistance, + e.allSectors, + e.cumulative, + e.theta, + e.phi, + e.orbitSpeed, + e.thetaDrift, + e.thetaJitter, + e.phiJitter, + e.K, + e.speedup, + e.usePoisson + ]), de(() => { + const b = A.current; + if (A.current = _, _ && !b) { + ee.current = -1, Ce(e.host, we.computeStart, { page: "fano" }); + return; + } + !_ && b && (Yt(e.host, we.computeStep, { page: "fano" }), Ce(e.host, we.computeDone, { page: "fano", points: v.length })); + }, [_, e.host, v.length]), de(() => { + if (!_) return; + const b = Math.floor(O * 10); + b <= ee.current || (ee.current = b, Ce(e.host, we.computeStep, { page: "fano", progress: O })); + }, [O, _, e.host]); + const N = he(() => rn(v, F), [v, F]), P = he(() => an(v, F), [v, F]), H = he(() => { + if (!N || N.alpha <= 0 || y <= 0) return null; + if (P && P.B >= y) + return { + targetExcess: y, + requiredLaneCount: Number.POSITIVE_INFINITY, + measuredCrossing: v.find((se) => se.fanoExcess <= y) ?? null, + complexityEstimate: null, + blockedByFloor: !0, + floorExcess: P.B + }; + const b = P ? Math.max(1e-9, y - P.B) : y, T = P ? P.A : N.A, E = P ? P.alpha : N.alpha, I = Math.pow(T / b, 1 / E); + if (!Number.isFinite(I) || I <= 0) return null; + const ne = v.find((se) => se.fanoExcess <= y) ?? null, G = ln(v, I); + return { + targetExcess: y, + requiredLaneCount: I, + measuredCrossing: ne, + complexityEstimate: G, + blockedByFloor: !1, + floorExcess: P?.B ?? 0 + }; + }, [N, P, v, y]), g = he(() => { + const E = { top: 20, right: 20, bottom: 42, left: 48 }, I = 860 - E.left - E.right, ne = 360 - E.top - E.bottom, G = Math.max(2, t), se = [ + 1, + ...v.map((Y) => Y.fanoBlue), + ...v.map((Y) => Y.fanoYellow), + ...v.map((Y) => 1 + Y.fanoExcess) + ].filter((Y) => Number.isFinite(Y) && Y > 0), ve = Math.min(...se), Re = Math.max(...se), X = Math.max(1e-3, Math.min(0.95, ve * 0.95)), Pe = Math.max(1.05, Re * 1.05), Be = Math.log(X), Je = Math.log(Pe), me = (Y) => E.left + (Y - 1) / (G - 1) * I, Ee = (Y) => { + const Ie = Math.min(Pe, Math.max(X, Y)), le = Math.log(Ie); + return E.top + ne - (le - Be) / Math.max(1e-9, Je - Be) * ne; + }, Se = dn(X, Pe); + return { width: 860, height: 360, margin: E, innerW: I, innerH: ne, xToPx: me, yToPx: Ee, yMax: Pe, yMin: X, yTicks: Se }; + }, [v, t]), ue = he( + () => v.length > 1 ? Tt(v, (b) => b.fanoBlue, g.xToPx, g.yToPx) : "", + [v, g] + ), ke = he( + () => v.length > 1 ? Tt(v, (b) => b.fanoYellow, g.xToPx, g.yToPx) : "", + [v, g] + ), q = v.at(-1) ?? null; + return /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "auto" }, children: /* @__PURE__ */ i( + "div", + { + style: { + width: "100%", + height: "100%", + display: "flex", + flexDirection: "column", + background: "radial-gradient(circle at 20% 10%, rgba(30,41,59,0.9), rgba(2,6,23,0.96))", + color: "var(--terminal-green-soft)", + padding: "16px", + paddingBottom: `${16 + (e.bottomInset ?? 0)}px`, + boxSizing: "border-box", + gap: "12px", + fontFamily: "var(--font-ui)" + }, + children: [ + /* @__PURE__ */ i("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", gap: "12px", flexWrap: "wrap" }, children: [ + /* @__PURE__ */ i("div", { children: [ + /* @__PURE__ */ n("div", { style: { fontSize: "14px", fontWeight: 400, letterSpacing: "0.12em", textTransform: "uppercase", fontFamily: "var(--font-headline)", color: "var(--terminal-green-soft)" }, children: "Fano Sweep" }), + /* @__PURE__ */ i("div", { style: { fontSize: "11px", color: "var(--terminal-green)", marginTop: "4px" }, children: [ + "Goal: show ", + "Fano(Blue)", + " trending toward 1.0 (or toward Yellow) as complexity increases." + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [ + e.onBack && /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("back-to-simulator"), e.onBack?.(); + }, + onPointerEnter: z, + style: { + border: "1px solid var(--terminal-panel-border)", + background: "rgba(7,19,11,0.8)", + color: "var(--terminal-green-soft)", + padding: "8px 12px", + borderRadius: "8px", + cursor: "pointer", + fontSize: "12px", + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.08em", + textTransform: "uppercase" + }, + children: "Back To Simulator" + } + ), + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("rerun-sweep"), j((b) => b + 1); + }, + onPointerEnter: z, + style: { + border: "1px solid var(--terminal-panel-border)", + background: _ ? "rgba(125, 255, 155, 0.14)" : "rgba(7,19,11,0.8)", + color: "var(--terminal-green-soft)", + padding: "8px 12px", + borderRadius: "8px", + cursor: "pointer", + fontSize: "12px", + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.08em", + textTransform: "uppercase" + }, + children: _ ? "Rerun (queued)" : "Rerun Sweep" + } + ) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [ + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("preset-video-demo"), x("randomSphere"), o(60), l(1200), h(2), s(1), m(4), R(12); + }, + onPointerEnter: z, + style: { + border: "1px solid var(--terminal-panel-border)", + background: "rgba(7,19,11,0.8)", + color: "var(--terminal-green-soft)", + padding: "6px 10px", + borderRadius: 8, + cursor: "pointer", + fontSize: 11, + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.06em" + }, + children: "Preset: Video Demo" + } + ), + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("preset-robust-sweep"), x("randomSphere"), o(200), l(3e3), h(5), s(1), m(16), R(40); + }, + onPointerEnter: z, + style: { + border: "1px solid rgba(125, 255, 155, 0.32)", + background: "rgba(2,6,23,0.8)", + color: "var(--terminal-green-soft)", + padding: "6px 10px", + borderRadius: 8, + cursor: "pointer", + fontSize: 11, + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.06em" + }, + children: "Preset: Robust Sweep" + } + ) + ] }), + /* @__PURE__ */ i("div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(140px, 1fr))", gap: "8px" }, children: [ + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Max Complexity", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 2, + max: 200, + value: t, + onChange: (b) => o(Math.max(2, Math.min(200, Number(b.target.value) || 2))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Samples / Point", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 100, + max: 2e4, + step: 100, + value: r, + onChange: (b) => l(Math.max(100, Math.min(2e4, Number(b.target.value) || 100))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Runs / Point (Seeds)", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1, + max: 20, + step: 1, + value: a, + onChange: (b) => h(Math.max(1, Math.min(20, Number(b.target.value) || 1))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Bin Size (s)", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 0.1, + max: 20, + step: 0.1, + value: c, + onChange: (b) => s(Math.max(0.1, Math.min(20, Number(b.target.value) || 0.1))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Sub-Bin Sampling", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1, + max: 256, + step: 1, + value: d, + onChange: (b) => m(Math.max(1, Math.min(256, Math.round(Number(b.target.value) || 1)))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Observation Mode", + /* @__PURE__ */ i( + "select", + { + value: u, + onChange: (b) => x(b.target.value), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }, + children: [ + /* @__PURE__ */ n("option", { value: "randomSphere", children: "Random Sphere (recommended)" }), + /* @__PURE__ */ n("option", { value: "orbit", children: "Orbit (path-biased)" }) + ] + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Target Excess (B-Y)", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1e-3, + max: 1, + step: 5e-3, + value: y, + onChange: (b) => B(Math.max(1e-3, Math.min(1, Number(b.target.value) || 0.05))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Fit Start Complexity", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1, + max: t, + step: 1, + value: F, + onChange: (b) => R(Math.max(1, Math.min(t, Number(b.target.value) || 1))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("div", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "6px" }, children: [ + "Progress", + /* @__PURE__ */ n("div", { style: { background: "rgba(7,19,11,0.9)", border: "1px solid var(--terminal-panel-border)", borderRadius: "999px", padding: "3px" }, children: /* @__PURE__ */ n( + "div", + { + style: { + height: "8px", + width: `${Math.round(O * 100)}%`, + background: "linear-gradient(90deg, var(--terminal-green-dim), var(--terminal-green-soft))", + borderRadius: "999px", + transition: "width 0.15s ease" + } + } + ) }), + /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: _ ? `Running ${Math.round(O * 100)}%` : "Complete" }) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { display: "flex", flexDirection: "column", gap: "12px", minHeight: 0, flex: 1 }, children: [ + /* @__PURE__ */ n( + "div", + { + style: { + background: "rgba(7,19,11,0.72)", + border: "1px solid var(--terminal-panel-border)", + borderRadius: "10px", + padding: "10px", + width: "100%", + minWidth: 0, + minHeight: "min(58vh, 520px)" + }, + children: /* @__PURE__ */ i("svg", { viewBox: `0 0 ${g.width} ${g.height}`, style: { width: "100%", height: "100%" }, children: [ + /* @__PURE__ */ n("rect", { x: 0, y: 0, width: g.width, height: g.height, fill: "transparent" }), + g.yTicks.map((b, T) => { + const E = g.yToPx(b); + return /* @__PURE__ */ i("g", { children: [ + /* @__PURE__ */ n("line", { x1: g.margin.left, y1: E, x2: g.margin.left + g.innerW, y2: E, stroke: "rgba(125, 255, 155, 0.12)" }), + /* @__PURE__ */ n("text", { x: 8, y: E + 4, fill: "var(--terminal-green)", fontSize: "10", fontFamily: "var(--font-ui)", children: cn(b) }) + ] }, `ygrid-${T}`); + }), + /* @__PURE__ */ n( + "line", + { + x1: g.margin.left, + y1: g.yToPx(1), + x2: g.margin.left + g.innerW, + y2: g.yToPx(1), + stroke: "#f97316", + strokeDasharray: "4 4", + opacity: 0.8 + } + ), + /* @__PURE__ */ n("text", { x: g.margin.left + 6, y: g.yToPx(1) - 6, fill: "#fdba74", fontSize: "10", children: "Fano = 1" }), + /* @__PURE__ */ n("line", { x1: g.margin.left, y1: g.margin.top + g.innerH, x2: g.margin.left + g.innerW, y2: g.margin.top + g.innerH, stroke: "rgba(125, 255, 155, 0.3)" }), + /* @__PURE__ */ n("line", { x1: g.margin.left, y1: g.margin.top, x2: g.margin.left, y2: g.margin.top + g.innerH, stroke: "rgba(125, 255, 155, 0.3)" }), + Array.from({ length: Math.min(t, 10) }, (b, T) => { + const E = 1 + (t - 1) * T / Math.max(1, Math.min(t - 1, 9)), I = g.xToPx(E); + return /* @__PURE__ */ i("g", { children: [ + /* @__PURE__ */ n("line", { x1: I, y1: g.margin.top + g.innerH, x2: I, y2: g.margin.top + g.innerH + 4, stroke: "rgba(125, 255, 155, 0.3)" }), + /* @__PURE__ */ n("text", { x: I, y: g.margin.top + g.innerH + 18, fill: "var(--terminal-green)", fontSize: "10", fontFamily: "var(--font-ui)", textAnchor: "middle", children: Math.round(E) }) + ] }, `xtick-${T}`); + }), + ke && /* @__PURE__ */ n("path", { d: ke, fill: "none", stroke: "#fbbf24", strokeWidth: "2", opacity: 0.95 }), + ue && /* @__PURE__ */ n("path", { d: ue, fill: "none", stroke: "#60a5fa", strokeWidth: "2.25", opacity: 0.95 }), + N && v.length > 2 && (() => { + const b = v.filter((T) => T.complexity >= F).map((T, E) => { + const I = 1 + N.predictFanoExcessFromLaneCount(T.laneCount); + return `${E === 0 ? "M" : "L"} ${g.xToPx(T.complexity)} ${g.yToPx(I)}`; + }).join(" "); + return /* @__PURE__ */ n("path", { d: b, fill: "none", stroke: "#93c5fd", strokeDasharray: "5 4", strokeWidth: "1.5", opacity: 0.8 }); + })(), + P && v.length > 2 && (() => { + const b = v.filter((T) => T.complexity >= F).map((T, E) => { + const I = 1 + P.predictFanoExcessFromLaneCount(T.laneCount); + return `${E === 0 ? "M" : "L"} ${g.xToPx(T.complexity)} ${g.yToPx(I)}`; + }).join(" "); + return /* @__PURE__ */ n("path", { d: b, fill: "none", stroke: "#22d3ee", strokeDasharray: "2 4", strokeWidth: "1.5", opacity: 0.7 }); + })(), + v.map((b) => /* @__PURE__ */ i("g", { children: [ + /* @__PURE__ */ n("circle", { cx: g.xToPx(b.complexity), cy: g.yToPx(b.fanoYellow), r: "2.2", fill: "#fbbf24" }), + /* @__PURE__ */ n("circle", { cx: g.xToPx(b.complexity), cy: g.yToPx(b.fanoBlue), r: "2.5", fill: "#60a5fa" }) + ] }, `dot-${b.complexity}`)), + /* @__PURE__ */ n("text", { x: g.margin.left + g.innerW / 2, y: g.height - 8, fill: "var(--terminal-green)", fontSize: "11", fontFamily: "var(--font-ui)", textAnchor: "middle", children: "Complexity" }), + /* @__PURE__ */ n( + "text", + { + x: 14, + y: g.margin.top + g.innerH / 2, + fill: "var(--terminal-green)", + fontSize: "11", + fontFamily: "var(--font-ui)", + textAnchor: "middle", + transform: `rotate(-90 14 ${g.margin.top + g.innerH / 2})`, + children: "Fano Factor (Var / Mean, log scale)" + } + ) + ] }) + } + ), + /* @__PURE__ */ i( + "div", + { + style: { + display: "grid", + gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))", + gap: "8px", + alignItems: "start" + }, + children: [ + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Legend" }), + /* @__PURE__ */ n("div", { style: { color: "#60a5fa" }, children: "Blue: Lightlane Fano" }), + /* @__PURE__ */ n("div", { style: { color: "#fbbf24" }, children: "Yellow: Isotropic Fano" }), + /* @__PURE__ */ n("div", { style: { color: "#fdba74", marginTop: "4px" }, children: "Dashed orange: Fano = 1" }), + /* @__PURE__ */ n("div", { style: { color: "#93c5fd", marginTop: "4px" }, children: "Dashed blue: power-fit extrapolation (blue excess over yellow)" }), + /* @__PURE__ */ n("div", { style: { color: "#22d3ee", marginTop: "4px" }, children: "Dashed cyan: floor-aware fit (B + A×N^-α)" }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Latest Point" }), + q ? /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ i("div", { children: [ + "Complexity: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.complexity }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Lanes: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.laneCount }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Mean Ratio (B/Y): ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: (q.meanBlue / Math.max(1e-9, q.meanYellow)).toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Fano Blue: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#93c5fd" }, children: q.fanoBlue.toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Fano Yellow: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#fef3c7" }, children: q.fanoYellow.toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Excess (B-Y): ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.fanoExcess.toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ + "Aggregated over ", + r.toLocaleString(), + " bins × ", + a, + " seeds" + ] }) + ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "No points yet." }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Power Fit" }), + N ? /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green-soft)" }, children: [ + "Excess ≈ ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: N.A.toExponential(2) }), + " × N", + /* @__PURE__ */ i("sup", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: [ + "-", + N.alpha.toFixed(2) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ + "Fit is on blue excess over yellow using lane count N, starting at complexity ", + F, + "." + ] }) + ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "Need more points with nonzero excess." }), + P && /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ + "Floor fit: excess ≈ ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: P.B.toFixed(3) }), + " + ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: P.A.toExponential(2) }), + " × N", + /* @__PURE__ */ i("sup", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: [ + "-", + P.alpha.toFixed(2) + ] }) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Indistinguishable Target" }), + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginBottom: "6px" }, children: [ + "Criterion: ", + /* @__PURE__ */ i("span", { style: { color: "var(--terminal-green-soft)" }, children: [ + "Fano Blue - Fano Yellow ≤ ", + y.toFixed(3) + ] }) + ] }), + H ? /* @__PURE__ */ i(Fe, { children: [ + H.blockedByFloor ? /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ n("div", { style: { color: "#ff8f8f" }, children: "Floor-aware fit predicts no finite crossing for this threshold." }), + /* @__PURE__ */ i("div", { children: [ + "Fitted excess floor:", + " ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: H.floorExcess.toFixed(3) }) + ] }), + /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: "Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau." }) + ] }) : /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ i("div", { children: [ + "Required lane count N (fit):", + " ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: Math.round(H.requiredLaneCount).toLocaleString() }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Estimated complexity:", + " ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#93c5fd" }, children: H.complexityEstimate ? Math.ceil(H.complexityEstimate.complexity).toLocaleString() : "n/a" }), + H.complexityEstimate && /* @__PURE__ */ i("span", { style: { color: "var(--terminal-green)" }, children: [ + " ", + "(", + H.complexityEstimate.mode === "observed-range" ? "interpolated from current sweep" : H.complexityEstimate.mode === "extrapolated" ? "extrapolated" : "bounded by current sweep", + ")" + ] }) + ] }) + ] }), + /* @__PURE__ */ n("div", { style: { marginTop: "6px", color: "var(--terminal-green)" }, children: H.measuredCrossing ? `Observed crossing already reached at complexity ${H.measuredCrossing.complexity}.` : "No observed crossing yet in current sweep; estimate uses fit." }) + ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "Need a stable excess fit (nonzero blue excess across multiple points)." }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px", color: "var(--terminal-green)" }, children: [ + "Use ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "Random Sphere" }), + " to isolate discretization convergence from path bias. Orbit mode is still useful to show persistent anisotropy on specific trajectories.", + /* @__PURE__ */ i("div", { style: { marginTop: "6px" }, children: [ + "For a stronger/cleaner claim in the video: report the threshold estimate together with ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "bin size" }), + ", ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "sub-bin sampling" }), + ", and ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "runs/point" }), + "." + ] }), + /* @__PURE__ */ n("div", { style: { marginTop: "6px" }, children: "If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers." }) + ] }) + ] + } + ) + ] }) + ] + } + ) }); +} +const Ge = new Dt("#dbeafe"); +function hn(e, t) { + const o = new Float32Array(t * 3), r = new Float32Array(t * 3), l = [], a = e + 0.01; + for (let h = 0; h < t; h += 1) { + const c = Math.random(), s = Math.random(), d = 2 * Math.PI * c, m = 1 - 2 * s, u = Math.sqrt(Math.max(0, 1 - m * m)), x = h * 3; + o[x] = a * u * Math.cos(d), o[x + 1] = a * u * Math.sin(d), o[x + 2] = a * m, r[x] = Ge.r * 0.15, r[x + 1] = Ge.g * 0.15, r[x + 2] = Ge.b * 0.15, l.push({ + speed: 0.8 + Math.random() * 2.6, + phase: Math.random() * Math.PI * 2, + minBrightness: 0.03 + Math.random() * 0.06, + maxBoost: 0.35 + Math.random() * 0.85 + }); + } + return { positions: o, colors: r, sparklePoints: l }; +} +function un({ radius: e }) { + const t = Z(null), o = 16e3, { positions: r, colors: l, sparklePoints: a } = he( + () => hn(e, o), + [e] + ); + return Qe(({ clock: h }) => { + const c = t.current; + if (!c) return; + const s = c.geometry.getAttribute("color"); + if (!s) return; + const d = h.getElapsedTime(), m = s.array; + for (let u = 0; u < a.length; u += 1) { + const x = a[u], y = Math.pow(Math.max(0, Math.sin(d * x.speed + x.phase)), 24), B = x.minBrightness + y * x.maxBoost, F = u * 3; + m[F] = Ge.r * B, m[F + 1] = Ge.g * B, m[F + 2] = Ge.b * B; + } + s.needsUpdate = !0; + }), /* @__PURE__ */ i("group", { children: [ + /* @__PURE__ */ i("mesh", { children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [e, 64, 64] }), + /* @__PURE__ */ n( + "meshStandardMaterial", + { + color: "#60a5fa", + emissive: "#1d4ed8", + emissiveIntensity: 0.18, + transparent: !0, + opacity: 0.08, + roughness: 0.15, + metalness: 0.05 + } + ) + ] }), + /* @__PURE__ */ i("mesh", { renderOrder: 2, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [e, 48, 48] }), + /* @__PURE__ */ n( + "meshBasicMaterial", + { + color: "#93c5fd", + wireframe: !0, + transparent: !0, + opacity: 0.14, + toneMapped: !1 + } + ) + ] }), + /* @__PURE__ */ i("points", { ref: t, renderOrder: 3, children: [ + /* @__PURE__ */ i("bufferGeometry", { children: [ + /* @__PURE__ */ n("bufferAttribute", { attach: "attributes-position", args: [r, 3] }), + /* @__PURE__ */ n("bufferAttribute", { attach: "attributes-color", args: [l, 3] }) + ] }), + /* @__PURE__ */ n( + "pointsMaterial", + { + size: Math.max(0.06, e * 0.018), + sizeAttenuation: !0, + transparent: !0, + opacity: 0.95, + vertexColors: !0, + depthWrite: !1, + toneMapped: !1 + } + ) + ] }) + ] }); +} +function mn({ radius: e, paused: t = !1 }) { + const o = Z(null); + return Qe((r) => { + if (!t && o.current) { + const l = r.clock.elapsedTime * 3, a = 0.5 + (Math.sin(l) + 1) / 2 * 1.5; + o.current.emissiveIntensity = a; + } + }), /* @__PURE__ */ i("mesh", { position: [0, 0, 0], children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [e, 64, 64] }), + /* @__PURE__ */ n( + "meshStandardMaterial", + { + ref: o, + color: "#ec4899", + emissive: "#db2777", + emissiveIntensity: 1, + toneMapped: !1 + } + ) + ] }); +} +function fn(e) { + const t = 2 * Math.PI; + let o = e % t; + return o < 0 && (o += t), o > Math.PI && (o = t - o), o; +} +function gn({ radius: e, theta: t, phi: o, orbitTime: r, simTime: l, thetaDrift: a = 0, paused: h = !1 }) { + const c = Z(null); + return Qe(() => { + if (!h && c.current) { + const s = o + r.current, d = fn(t + (l?.current ?? 0) * a), m = e * Math.sin(d) * Math.cos(s), u = e * Math.cos(d), x = e * Math.sin(d) * Math.sin(s); + c.current.position.set(m, u, x), c.current.lookAt(0, 0, 0); + } + }), /* @__PURE__ */ i("group", { ref: c, children: [ + /* @__PURE__ */ i("mesh", { renderOrder: 10, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.09, 16, 16] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#22d3ee", toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("mesh", { renderOrder: 9, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.16, 16, 16] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#22d3ee", transparent: !0, opacity: 0.18, toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("mesh", { rotation: [Math.PI / 2, 0, 0], children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.14, 0.18, 1, 16] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#c0c0c0", metalness: 0.8, roughness: 0.2 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.3], rotation: [Math.PI / 2, 0, 0], children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.18, 0.18, 0.16, 8] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#d4af37", metalness: 0.95, roughness: 0.18 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.6], rotation: [Math.PI / 2, 0, 0], children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.22, 0.22, 0.2, 16] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#ffd700", metalness: 1, roughness: 0.1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.7], renderOrder: 11, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.05, 12, 12] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#f97316", toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.35], rotation: [Math.PI / 2, 0, 0], renderOrder: 8, children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.015, 0.015, 0.7, 8] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#f97316", transparent: !0, opacity: 0.7, toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("group", { position: [0, 0, 0.22], children: [ + /* @__PURE__ */ i("mesh", { position: [0.6, 0, 0], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.8, 0.4, 0.05] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#1e3a8a", metalness: 0.5, roughness: 0.1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [-0.6, 0, 0], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.8, 0.4, 0.05] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#1e3a8a", metalness: 0.5, roughness: 0.1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0.28, 0, -0.01], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.18, 0.05, 0.04] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#94a3b8", metalness: 0.7, roughness: 0.22 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [-0.28, 0, -0.01], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.18, 0.05, 0.04] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#94a3b8", metalness: 0.7, roughness: 0.22 }) + ] }) + ] }) + ] }); +} +const ce = { + solid: "#60a5fa", + dark: "#3b82f6", + light: "#93c5fd", + glow: "rgba(96,165,250,0.5)", + panel: "rgba(0,20,40,0.8)" +}, ae = { + solid: "#fbbf24", + dark: "#f59e0b", + light: "#fef3c7", + glow: "rgba(251,191,36,0.5)" +}, it = "var(--font-headline)", pe = "var(--font-ui)", xn = "var(--terminal-green)", Ae = "var(--terminal-green-soft)", ye = "var(--terminal-green-muted)"; +function bn({ bars: e }) { + const t = window.innerHeight; + return /* @__PURE__ */ i(Fe, { children: [ + e.map((o) => { + const r = t - o.startBottom - o.barHeight, l = o.targetLeft - o.startLeft, a = o.targetTop - r; + return /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: `${o.startLeft}px`, + top: `${r}px`, + width: `${o.barWidth}px`, + height: `${o.barHeight}px`, + background: o.color, + borderRadius: "2px 2px 0 0", + opacity: 0.95, + animation: "flyToDistribution 1.2s ease-in-out forwards", + "--delta-x": `${l}px`, + "--delta-y": `${a}px`, + zIndex: 1e3, + boxShadow: `0 0 15px ${o.color}` + } + }, + o.id + ); + }), + /* @__PURE__ */ n("style", { children: ` + @keyframes flyToDistribution { + 0% { + transform: translate(0, 0) scale(1); + opacity: 0.95; + } + 40% { + transform: translate(calc(var(--delta-x) * 0.3), calc(var(--delta-y) * 0.5)) scale(0.9); + opacity: 0.9; + } + 85% { + transform: translate(calc(var(--delta-x) * 0.95), calc(var(--delta-y) * 0.95)) scale(0.7); + opacity: 0.85; + } + 100% { + transform: translate(var(--delta-x), var(--delta-y)) scale(0.6); + opacity: 0; + } + } + .clickable-bar { + transition: all 0.2s ease; + } + .clickable-bar:hover { + transform: scaleY(1.1) scaleX(1.2); + filter: brightness(1.3); + box-shadow: 0 0 10px currentColor; + } + ` }) + ] }); +} +function at() { + return { n: 0, meanObs: 0, m2Obs: 0, meanIso: 0, m2Iso: 0 }; +} +function yn(e, t, o) { + const r = e.n + 1, l = t - e.meanObs, a = e.meanObs + l / r, h = e.m2Obs + l * (t - a), c = o - e.meanIso, s = e.meanIso + c / r, d = e.m2Iso + c * (o - s); + return { n: r, meanObs: a, m2Obs: h, meanIso: s, m2Iso: d }; +} +function vn({ + complexity: e, + radius: t, + distance: o, + theta: r, + phi: l, + observationMode: a, + allSectors: h, + cumulative: c, + K: s, + orbitRadius: d, + orbitVelocity: m, + thetaDrift: u, + thetaJitter: x, + phiJitter: y, + usePoisson: B, + speedup: F, + paused: R, + sceneView: C, + bottomInset: j = 0, + showNumericDiagnostics: v = !0, + compactNumericDiagnostics: L = !1, + host: O, + centerDistribution: J = !1, + hideFlyingBars: _ = !1 +}) { + const [k, A] = $({ + current: 0, + total: 0, + lastCheck: 0, + overlaps: 0, + currentTheory: 0, + binOverlapsMean: 0, + currentExpectedLightlane: 0 + }), ee = 4, z = he(() => It({ + D: d, + theta: r, + phi: l, + observationMode: a, + velocity: m, + thetaDrift: u, + thetaJitter: x, + phiJitter: y, + distance: o, + hitTestModel: "segment", + bin_size: 1, + complexity: e, + sub_bin_sampling: ee, + flux: s, + lane_radius: t, + allSectors: h, + cumulative: c, + usePoisson: B + }), [d, r, l, a, m, u, x, y, e, s, t, o, h, c, B]), D = 60, N = Z(new Array(D).fill(-1)), P = Z(new Array(D).fill(-1)), H = Z(0), [g, ue] = $(new Array(D).fill(-1)), [ke, q] = $(new Array(D).fill(-1)), b = Et({ + flux: s, + D: d, + lane_radius: t, + dt: 1, + hitTestModel: "segment", + lane_length: o + }), T = Math.sqrt(b), E = 15, I = 4 * T, ne = Math.max(0, b - I), G = b + I, se = B, ve = Math.max(0, Math.floor(ne)), Re = Math.max(ve, Math.ceil(G)), X = se ? Re - ve + 1 : E, Pe = se ? 1 : Math.max(1e-9, (G - ne) / E), Be = (f) => { + if (se) { + const S = Math.round(f); + return S <= ve ? 0 : S >= Re ? X - 1 : S - ve; + } + return f < ne ? 0 : f >= G ? X - 1 : Math.floor((f - ne) / Pe); + }, Je = (f) => se ? ve + f : ne + (f + 0.5) * Pe, [me, Ee] = $(new Array(X).fill(0)), [Se, Y] = $(new Array(X).fill(0)), [Ie, le] = $(/* @__PURE__ */ new Set()), [qe, Le] = $(/* @__PURE__ */ new Set()), [Ne, ze] = $([]), $e = Z(0), _e = Z(at()), [U, Ze] = $(at()), et = Z(R), tt = Z(0); + de(() => { + Ee(new Array(X).fill(0)), Y(new Array(X).fill(0)), N.current.fill(-1), P.current.fill(-1), H.current = 0, ue(new Array(D).fill(-1)), q(new Array(D).fill(-1)), le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set()), ze([]), _e.current = at(), Ze(at()), A({ + current: 0, + total: 0, + lastCheck: 0, + overlaps: 0, + currentTheory: 0, + binOverlapsMean: 0, + currentExpectedLightlane: 0 + }); + }, [e, s, t, o, d, r, l, a, m, u, x, y, h, c, B, X]); + const nt = (f, S) => { + if (f.length === 0) return; + let w = 0, oe = 0, te = 0, fe = k.binOverlapsMean, V = k.currentExpectedLightlane, re = _e.current; + for (const ie of f) { + const ge = ie.lightlane, xe = ie.isotropic; + if (w += ge, oe = ge, te = xe, fe = ie.overlapsMean, V = ie.lambdaLightlaneExpected, re = yn(re, ge, xe), N.current[H.current] = ge, P.current[H.current] = xe, H.current++, H.current >= D) { + const Me = Math.max(10, ...N.current.filter((Q) => Q >= 0), ...P.current.filter((Q) => Q >= 0)); + K([...N.current], [...P.current], Me), N.current.fill(-1), P.current.fill(-1), H.current = 0, le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set()); + } + } + _e.current = re, A((ie) => ({ + current: oe, + total: ie.total + w, + lastCheck: Date.now(), + overlaps: S, + currentTheory: te, + binOverlapsMean: fe, + currentExpectedLightlane: V + })), Ze(re), ue([...N.current]), q([...P.current]); + }, He = Z(!1), We = Z(null), ot = (f, S) => { + f.stopPropagation(), He.current = !0, We.current = S, f.target.setPointerCapture(f.pointerId), Ce(O, we.click, { target: `${S}-periodogram`, action: "pointer-down" }); + }, rt = (f, S, w, oe) => { + if (!He.current || We.current !== S) return; + f.stopPropagation(); + const te = f.currentTarget.getBoundingClientRect(), fe = f.clientX - te.left, V = Math.floor(fe / te.width * D); + if (V >= 0 && V < D) { + const re = w[V], ie = S === "observed" ? Ie.has(V) : qe.has(V); + re >= 0 && !ie && W(V, re, S, oe); + } + }, p = (f) => { + f.stopPropagation(), He.current = !1, We.current = null; + }, M = (f, S, w, oe) => { + const te = window.innerWidth, fe = f / D * te, V = te / D, re = Math.max(2, S / oe * 80), xe = w === "observed" ? 25 : 110, Me = Be(S), Q = 20, be = te - 2 * Q, Te = Q + (Me + 0.5) / X * be; + return { startLeft: fe, startBottom: xe, barHeight: re, barWidth: V, targetLeft: Te, targetTop: 150, binIndex: Me }; + }, W = (f, S, w, oe) => { + if (S < 0) return; + const te = Date.now(); + te - tt.current >= 45 && (tt.current = te, Ce(O, we.computeStep, { target: `${w}-periodogram`, value: S })); + const { startLeft: fe, startBottom: V, barHeight: re, barWidth: ie, targetLeft: ge, targetTop: xe } = M(f, S, w, oe), Me = { + id: $e.current++, + value: S, + startLeft: fe, + startBottom: V, + barHeight: re, + barWidth: ie, + targetLeft: ge, + targetTop: xe, + color: w === "observed" ? ae.solid : ce.solid, + type: w + }; + ze((Q) => [...Q, Me]), w === "observed" ? (le((Q) => new Set(Q).add(f)), Ee((Q) => { + const be = [...Q], Te = Be(S); + return be[Te]++, be; + })) : (Le((Q) => new Set(Q).add(f)), Y((Q) => { + const be = [...Q], Te = Be(S); + return be[Te]++, be; + })); + }, K = (f, S, w) => { + const oe = [], te = [...me], fe = [...Se]; + f.forEach((V, re) => { + if (V >= 0) { + const { startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, binIndex: Te } = M(re, V, "observed", w); + oe.push({ + id: $e.current++, + value: V, + startLeft: ie, + startBottom: ge, + barHeight: xe, + barWidth: Me, + targetLeft: Q, + targetTop: be, + color: ae.solid, + type: "observed" + }), te[Te]++; + } + }), S.forEach((V, re) => { + if (V >= 0) { + const { startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, binIndex: Te } = M(re, V, "theory", w); + oe.push({ + id: $e.current++, + value: V, + startLeft: ie, + startBottom: ge, + barHeight: xe, + barWidth: Me, + targetLeft: Q, + targetTop: be, + color: ce.solid, + type: "theory" + }), fe[Te]++; + } + }), ze((V) => [...V, ...oe]), Ee(te), Y(fe); + }; + de(() => { + if (Ne.length > 0) { + const f = setTimeout(() => { + ze([]); + }, 1300); + return () => clearTimeout(f); + } + }, [Ne.length]); + const Ve = Z(0); + de(() => { + H.current < Ve.current && (le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set())), Ve.current = H.current; + }), de(() => { + const f = et.current; + if (et.current = R, !R || f) return; + const S = z.flushPartialBin(); + S && nt([S], S.overlaps); + }, [R, z]), Qe((f, S) => { + if (R) return; + const w = z.simulate(S * F); + w.subBinEvents > 0 && A((oe) => ({ ...oe, overlaps: w.lastLaneCount })), nt(w.bins, w.lastLaneCount); + }); + const zt = g.filter((f) => f >= 0), Rt = ke.filter((f) => f >= 0), lt = Math.max(10, Math.max(0, ...zt)), ct = Math.max(10, Math.max(0, ...Rt)), ft = Math.max(1, ...me, ...Se), gt = U.n > 1 ? U.m2Obs / (U.n - 1) : 0, dt = U.n > 1 ? U.m2Iso / (U.n - 1) : 0, Lt = U.meanIso > 0 ? U.meanObs / U.meanIso : 0, xt = dt > 0 ? gt / dt : 0, pt = U.meanObs > 0 ? gt / U.meanObs : 0, Xe = U.meanIso > 0 ? dt / U.meanIso : 0, ht = z.getLaneCount(), bt = ht > 0 && s > 0 ? ht * b / s : 0, yt = v && !L, Ke = C !== "lightlane", Oe = C !== "poisson", $t = Ne.filter((f) => f.type === "theory" && Ke || f.type === "observed" && Oe), Ot = C === "poisson" ? "Shot Noise Distribution" : C === "lightlane" ? "Shot Noise + Lightlane" : "Head to Head", je = { + background: "rgba(255,255,255,0.04)", + border: "1px solid var(--terminal-panel-border)", + borderRadius: "6px", + padding: "6px 8px", + fontFamily: pe + }, vt = /* @__PURE__ */ i("div", { style: { + marginTop: L ? "0" : "12px", + display: "grid", + gridTemplateColumns: L ? "1fr" : "repeat(3, minmax(0, 1fr))", + gap: L ? "6px" : "8px", + fontSize: "10px", + color: Ae, + fontFamily: pe + }, children: [ + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Samples" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace" }, children: U.n }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Mean Ratio (Lightlane/Poisson)" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: Ae }, children: U.n > 0 ? Lt.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Var Ratio (Lightlane/Poisson)" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: xt > 1.1 ? ae.light : ce.light }, children: U.n > 1 ? xt.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Lightlane" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: ae.light }, children: U.n > 1 ? pt.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Poisson" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: ce.light }, children: U.n > 1 ? Xe.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Ratio (Lightlane/Poisson)" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: Xe > 0 && pt / Xe > 1.05 ? ae.light : Ae }, children: U.n > 1 && Xe > 0 ? (pt / Xe).toFixed(3) : "n/a" }) + ] }) + ] }), St = /* @__PURE__ */ i("div", { style: { + marginTop: L ? "6px" : "8px", + display: L ? "grid" : "flex", + gridTemplateColumns: L ? "1fr" : void 0, + justifyContent: L ? void 0 : "center", + gap: L ? "4px" : "12px", + flexWrap: L ? void 0 : "wrap", + fontSize: "10px", + color: ye, + fontFamily: pe + }, children: [ + /* @__PURE__ */ i("span", { children: [ + "LC(now): ", + k.overlaps + ] }), + /* @__PURE__ */ i("span", { children: [ + "LC(bin avg): ", + k.binOverlapsMean.toFixed(2) + ] }), + /* @__PURE__ */ i("span", { children: [ + "LC iso target: ", + Number.isFinite(bt) ? bt.toFixed(2) : "n/a" + ] }), + /* @__PURE__ */ i("span", { children: [ + "E[Lightlane|bin]: ", + k.currentExpectedLightlane.toFixed(2) + ] }), + /* @__PURE__ */ i("span", { children: [ + "Lightlane(last): ", + typeof k.current == "number" ? Number(k.current).toFixed(2) : k.current + ] }), + /* @__PURE__ */ i("span", { children: [ + "Lanes: ", + ht + ] }), + /* @__PURE__ */ i("span", { children: [ + "Mode: ", + a === "randomSphere" ? "Random Sphere" : "Orbit" + ] }), + /* @__PURE__ */ i("span", { children: [ + "theta drift: ", + u.toFixed(3) + ] }), + /* @__PURE__ */ i("span", { children: [ + "theta jitter: ", + x.toFixed(3) + ] }), + /* @__PURE__ */ i("span", { children: [ + "phi jitter: ", + y.toFixed(3) + ] }) + ] }); + return /* @__PURE__ */ i(Fe, { children: [ + !_ && /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none" }, children: /* @__PURE__ */ n(bn, { bars: $t }) }), + /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", display: "flex", flexDirection: "column", justifyContent: J ? "center" : "flex-start" }, children: [ + /* @__PURE__ */ i("div", { style: { + position: "absolute", + top: "18px", + left: "20px", + right: "20px", + color: Ae, + fontSize: "12px", + fontWeight: 400, + textAlign: "center", + textTransform: "uppercase", + letterSpacing: "0.16em", + fontFamily: it + }, children: [ + Ot, + /* @__PURE__ */ i("span", { style: { fontSize: "10px", fontWeight: "normal", marginLeft: "10px", opacity: 0.8, fontFamily: pe, color: xn }, children: [ + "(λ = ", + b.toFixed(1), + ", σ = ", + T.toFixed(1), + ")" + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { + width: "100%", + padding: J ? "20px" : "60px 20px 20px 20px", + background: J ? "transparent" : "linear-gradient(to bottom, rgba(0,0,0,0.9), transparent)", + fontFamily: pe, + alignSelf: "center" + }, children: [ + /* @__PURE__ */ n("div", { style: { + position: "absolute", + left: "5px", + top: J ? "130px" : "170px", + transform: "rotate(-90deg)", + transformOrigin: "left top", + fontSize: "10px", + color: ye, + fontStyle: "italic", + whiteSpace: "nowrap", + fontFamily: pe + }, children: "← Frequency (how many)" }), + /* @__PURE__ */ n("div", { style: { + display: "flex", + height: "100px", + gap: "2px", + alignItems: "flex-end", + padding: "0 20px" + }, children: me.map((f, S) => { + const w = Se[S], oe = f / ft * 100, te = w / ft * 100; + return /* @__PURE__ */ i("div", { style: { + flex: 1, + display: "flex", + flexDirection: "column", + alignItems: "center", + position: "relative", + height: "100%", + justifyContent: "flex-end" + }, children: [ + /* @__PURE__ */ i("div", { style: { + width: "100%", + display: "flex", + justifyContent: "center", + gap: "1px", + alignItems: "flex-end", + height: "100%", + position: "relative" + }, children: [ + Ke && /* @__PURE__ */ n("div", { style: { + width: Oe ? "45%" : "92%", + height: `${te}%`, + background: `linear-gradient(to top, ${ce.solid}, ${ce.dark})`, + borderRadius: "2px 2px 0 0", + minHeight: w > 0 ? "2px" : "0", + transition: "height 0.3s ease", + boxShadow: w > 0 ? `0 0 5px ${ce.glow}` : "none", + position: "relative" + }, children: w > 0 && /* @__PURE__ */ n("div", { style: { + position: "absolute", + top: "-16px", + left: "50%", + transform: "translateX(-50%)", + fontSize: "9px", + fontWeight: "bold", + color: ce.solid, + textShadow: "0 0 3px rgba(0,0,0,0.8)" + }, children: w }) }), + Oe && /* @__PURE__ */ n("div", { style: { + width: Ke ? "45%" : "92%", + height: `${oe}%`, + background: `linear-gradient(to top, ${ae.solid}, ${ae.dark})`, + borderRadius: "2px 2px 0 0", + minHeight: f > 0 ? "2px" : "0", + transition: "height 0.3s ease", + boxShadow: f > 0 ? `0 0 5px ${ae.glow}` : "none", + position: "relative" + }, children: f > 0 && /* @__PURE__ */ n("div", { style: { + position: "absolute", + top: "-16px", + left: "50%", + transform: "translateX(-50%)", + fontSize: "9px", + fontWeight: "bold", + color: ae.solid, + textShadow: "0 0 3px rgba(0,0,0,0.8)" + }, children: f }) }) + ] }), + /* @__PURE__ */ n("div", { style: { + position: "absolute", + bottom: "-18px", + fontSize: "9px", + color: ye, + fontWeight: "bold", + fontFamily: pe + }, children: Je(S).toFixed(0) }) + ] }, S); + }) }), + /* @__PURE__ */ n("div", { style: { + textAlign: "center", + marginTop: "25px", + fontSize: "10px", + color: ye, + fontStyle: "italic", + fontFamily: pe + }, children: "Photon Count Value →" }), + /* @__PURE__ */ i("div", { style: { + display: "flex", + justifyContent: "center", + gap: "20px", + marginTop: "25px", + fontSize: "10px" + }, children: [ + Ke && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "5px" }, children: [ + /* @__PURE__ */ n("div", { style: { width: "12px", height: "12px", background: ce.solid, borderRadius: "2px" } }), + /* @__PURE__ */ n("span", { style: { color: ce.solid }, children: "Theory (Poisson)" }) + ] }), + Oe && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "5px" }, children: [ + /* @__PURE__ */ n("div", { style: { width: "12px", height: "12px", background: ae.solid, borderRadius: "2px" } }), + /* @__PURE__ */ n("span", { style: { color: ae.solid }, children: "Observed (Lightlanes)" }) + ] }) + ] }), + yt && vt, + yt && St + ] }) + ] }), + v && L && /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none" }, children: /* @__PURE__ */ i("div", { style: { + position: "absolute", + top: "88px", + left: "12px", + width: "min(300px, calc(100vw - 24px))", + background: "linear-gradient(to bottom, rgba(0,0,0,0.88), rgba(0,0,0,0.55))", + border: "1px solid var(--terminal-panel-border)", + borderRadius: "10px", + padding: "10px", + boxShadow: "0 8px 24px rgba(0,0,0,0.35)", + fontFamily: pe + }, children: [ + /* @__PURE__ */ n("div", { style: { + color: Ae, + fontSize: "10px", + textTransform: "uppercase", + letterSpacing: "0.08em", + marginBottom: "8px", + fontWeight: 400, + fontFamily: it + }, children: "Diagnostics" }), + vt, + St + ] }) }), + /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", display: "flex", flexDirection: "column", justifyContent: "flex-end", paddingBottom: `${j}px`, boxSizing: "border-box" }, children: [ + Ke && /* @__PURE__ */ i( + "div", + { + onPointerDown: (f) => ot(f, "theory"), + onPointerMove: (f) => rt(f, "theory", ke, ct), + onPointerUp: p, + onPointerLeave: p, + style: { + width: "100%", + height: "100px", + background: `linear-gradient(to top, ${ce.panel}, transparent)`, + display: "flex", + alignItems: "flex-end", + padding: Oe ? "0 20px 5px 20px" : "0 20px 20px 20px", + gap: "2px", + position: "relative", + borderBottom: Oe ? "1px solid #555" : "none", + pointerEvents: "auto", + touchAction: "none", + cursor: "crosshair" + }, + children: [ + /* @__PURE__ */ n("div", { style: { position: "absolute", top: "10px", left: "20px", color: ce.solid, fontSize: "10px", fontWeight: 400, pointerEvents: "none", fontFamily: it, letterSpacing: "0.08em" }, children: "THEORY (Poisson) - Swipe or click to count" }), + ke.map((f, S) => { + const w = qe.has(S); + return /* @__PURE__ */ n( + "div", + { + className: f >= 0 && !w ? "clickable-bar" : "", + style: { + flex: 1, + height: f >= 0 && !w ? `${f / ct * 100}%` : "0", + background: f === 0 ? "rgba(255,255,255,0.1)" : ce.solid, + color: ce.solid, + minHeight: f >= 0 && !w ? "1px" : "0", + transition: "all 0.3s ease", + opacity: w ? 0 : 0.8, + borderRadius: "2px 2px 0 0", + transform: w ? "scale(0)" : "scale(1)", + pointerEvents: "none" + } + }, + S + ); + }), + /* @__PURE__ */ i("div", { style: { position: "absolute", bottom: "10px", right: "80px", color: Ae, fontFamily: pe, fontSize: "10px", pointerEvents: "none" }, children: [ + "Max: ", + ct + ] }) + ] + } + ), + Oe && /* @__PURE__ */ i( + "div", + { + onPointerDown: (f) => ot(f, "observed"), + onPointerMove: (f) => rt(f, "observed", g, lt), + onPointerUp: p, + onPointerLeave: p, + style: { + width: "100%", + height: "100px", + background: "linear-gradient(to top, rgba(0,0,0,0.8), transparent)", + display: "flex", + alignItems: "flex-end", + padding: "0 20px 20px 20px", + gap: "2px", + position: "relative", + pointerEvents: "auto", + touchAction: "none", + cursor: "crosshair" + }, + children: [ + /* @__PURE__ */ n("div", { style: { position: "absolute", top: "10px", left: "20px", color: ae.solid, fontSize: "10px", fontWeight: 400, pointerEvents: "none", fontFamily: it, letterSpacing: "0.08em" }, children: "OBSERVED (Lightlanes) - Swipe or click to count" }), + g.map((f, S) => { + const w = Ie.has(S); + return /* @__PURE__ */ n( + "div", + { + className: f >= 0 && !w ? "clickable-bar" : "", + style: { + flex: 1, + height: f >= 0 && !w ? `${f / lt * 100}%` : "0", + background: f === 0 ? "rgba(255,255,255,0.1)" : f > 0 ? ae.solid : "transparent", + color: ae.solid, + minHeight: f >= 0 && !w ? "2px" : "0", + transition: "all 0.3s ease", + borderTop: f >= 0 && !w ? `2px solid ${ae.light}` : "none", + opacity: w ? 0 : 0.8, + position: "relative", + borderRadius: "2px 2px 0 0", + transform: w ? "scale(0)" : "scale(1)", + pointerEvents: "none" + }, + children: (S + 1) % 5 === 0 && !w && /* @__PURE__ */ n("div", { style: { + position: "absolute", + bottom: "-20px", + left: "50%", + transform: "translateX(-50%)", + width: "1px", + height: "5px", + background: "#fff", + opacity: 0.5, + pointerEvents: "none" + }, children: /* @__PURE__ */ n("span", { style: { position: "absolute", top: "5px", left: "-50%", fontSize: "10px", color: ye, fontFamily: pe }, children: S + 1 }) }) + }, + S + ); + }), + /* @__PURE__ */ i("div", { style: { position: "absolute", bottom: "10px", right: "80px", color: Ae, fontFamily: pe, fontSize: "10px" }, children: [ + "Max: ", + lt + ] }) + ] + } + ) + ] }) + ] }); +} +const Sn = { + complexity: 1, + radius: 2, + distance: 5, + chandraDistance: 6, + showAxes: !1, + // Cleaner look for challenge + lightlanes: !0, + // Always show lightlanes + allSectors: !0, + cumulative: !1, + phi: 0, + theta: Math.PI / 2, + observationMode: "orbit", + orbitSpeed: 0.2, + thetaDrift: 0, + thetaJitter: 0, + phiJitter: 0, + speedup: 1, + K: 1e3, + usePoisson: !0, + sceneView: "both", + hideScenePresentation: !1, + hideFlyingBars: !1, + hideDataBoxes: !1 +}; +function kn(e) { + const t = e.host, o = e.devUi?.compactNumericDiagnostics ?? !1, r = e.devUi?.maxComplexity ?? 20, l = e.devUi?.maxSpeedup ?? 240, a = 74, h = 20, c = e.config?.params || {}, { + complexity: s, + radius: d, + distance: m, + chandraDistance: u, + showAxes: x, + lightlanes: y, + allSectors: B, + cumulative: F, + phi: R, + theta: C, + observationMode: j, + orbitSpeed: v, + thetaDrift: L, + thetaJitter: O, + phiJitter: J, + speedup: _, + K: k, + usePoisson: A, + sceneView: ee, + hideScenePresentation: z, + hideFlyingBars: D, + hideDataBoxes: N + } = { ...Sn, ...c }, P = !N, H = Z(0), g = Z(0), [ue, ke] = $(!1), [q, b] = $("scene"), [T, E] = $(ee), [I, ne] = $(s), [G, se] = $(_), [ve, Re] = $(null), X = Z(null); + de(() => { + E(ee); + }, [ee]), de(() => { + ne(s); + }, [s]), de(() => { + se(_); + }, [_]); + const Pe = G > 20, Be = T !== "lightlane", Je = T !== "poisson", me = q === "scene" && T !== "poisson", Ee = (p) => p === "poisson" ? "Poisson" : p === "lightlane" ? "Lightlane" : "Both", Se = () => { + Ce(t, we.hover, { page: q, sceneView: T }); + }, Y = (p, M) => { + Ce(t, we.click, { page: q, sceneView: T, target: p, ...M }); + }, Ie = (p) => { + Re(p), X.current && clearTimeout(X.current), X.current = setTimeout(() => { + Re(null), X.current = null; + }, 1500); + }, le = (p) => { + const M = Array.from({ length: h }, (W, K) => K === 0 ? 1 : K === h - 1 ? p : Math.round(1 + (p - 1) * K / (h - 1))); + return Array.from(new Set(M)).sort((W, K) => W - K); + }, qe = (p, M) => { + const W = le(M); + return W.find((K) => p < K) ?? W[W.length - 1]; + }, Le = (p, M) => { + const W = le(M); + for (let K = W.length - 1; K >= 0; K -= 1) + if (p > W[K]) return W[K]; + return W[0]; + }, Ne = (p, M) => { + const W = le(M), K = W.findIndex((Ve) => p <= Ve); + return K >= 0 ? K : W.length - 1; + }, ze = Ne(I, r), $e = Ne(G, l), _e = `${(ze + 1) / h * 100}%`, U = `${($e + 1) / h * 100}%`, Ze = me && I > le(r)[0], et = me && I < le(r).at(-1), tt = G > le(l)[0], nt = G < le(l).at(-1), He = (p) => { + if (!me) return; + const M = p === "up" ? qe(I, r) : Le(I, r); + M !== I && (Y("complexity", { direction: p, value: M }), ne(M), e.devUi?.onSetParam?.("complexity", M), Ie(`Complexity ${M}`)); + }, We = (p) => { + const M = p === "up" ? qe(G, l) : Le(G, l); + M !== G && (Y("turbo", { direction: p, value: M }), se(M), e.devUi?.onSetParam?.("speedup", M), Ie(`Turbo ${M}x`)); + }, ot = () => { + const p = ["poisson", "lightlane", "both"], M = p.indexOf(T), W = p[(M + 1) % p.length]; + Y("mode", { value: W }), E(W), Ie(`Mode ${Ee(W)}`); + }, rt = () => { + Y("fano-page", { value: q === "scene" ? "fano" : "scene" }), b((p) => p === "scene" ? "fano" : "scene"); + }; + return de(() => { + const p = (M) => { + if (M.code !== "Space" || M.repeat) return; + const W = M.target, K = W?.tagName; + K === "INPUT" || K === "TEXTAREA" || W?.isContentEditable || (M.preventDefault(), ke((Ve) => !Ve)); + }; + return window.addEventListener("keydown", p), () => window.removeEventListener("keydown", p); + }, []), de(() => () => { + X.current && clearTimeout(X.current); + }, []), Qe((p, M) => { + ue || q === "fano" || (H.current += M * v * G, g.current += M * G); + }), de(() => { + H.current = 0, g.current = 0; + }, [ + I, + d, + m, + u, + R, + C, + j, + v, + L, + O, + J, + G, + k, + B, + F, + A + ]), /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none", zIndex: 3e3 }, children: /* @__PURE__ */ n("div", { style: { position: "absolute", top: 12, right: 12, display: "flex", gap: 8, pointerEvents: "auto" }, children: /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + Y("advanced"), e.devUi?.onOpenHarness?.(); + }, + onPointerEnter: Se, + style: { + border: "1px solid var(--terminal-panel-border)", + background: "rgba(7,19,11,0.86)", + color: "var(--terminal-green-soft)", + borderRadius: 10, + padding: "10px 12px", + fontSize: 12, + fontWeight: 400, + letterSpacing: "0.08em", + fontFamily: "var(--font-headline)", + textTransform: "uppercase", + cursor: "pointer", + boxShadow: "0 8px 24px rgba(0,0,0,0.25)" + }, + children: "Advanced" + } + ) }) }), + /* @__PURE__ */ n("ambientLight", { intensity: 0.4 }), + /* @__PURE__ */ n("directionalLight", { position: [10, 10, 5], intensity: 1, castShadow: !0 }), + /* @__PURE__ */ n("pointLight", { position: [-10, -10, -10], intensity: 0.5, color: "blue" }), + q === "scene" ? /* @__PURE__ */ i(Fe, { children: [ + !z && Be && /* @__PURE__ */ n(un, { radius: u }), + !z && Je && /* @__PURE__ */ n( + Wt, + { + complexity: I, + lightlanes: y, + radius: d, + distance: m, + allSectors: B, + cumulative: F + } + ), + !z && /* @__PURE__ */ n(mn, { radius: d, paused: ue }), + /* @__PURE__ */ n( + gn, + { + radius: u, + theta: C, + phi: R, + orbitTime: H, + simTime: g, + thetaDrift: L, + paused: ue + } + ), + /* @__PURE__ */ n( + vn, + { + complexity: I, + radius: d, + distance: m, + theta: C, + phi: R, + observationMode: j, + allSectors: B, + cumulative: F, + K: k, + orbitRadius: u, + orbitVelocity: v, + thetaDrift: L, + thetaJitter: O, + phiJitter: J, + usePoisson: A, + speedup: G, + paused: ue, + sceneView: T, + bottomInset: a, + showNumericDiagnostics: P, + compactNumericDiagnostics: o, + host: t, + centerDistribution: z, + hideFlyingBars: D || Pe + } + ), + ue && /* @__PURE__ */ n("group", { position: [0, u + 1.5, 0], children: /* @__PURE__ */ i("mesh", { children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.12, 16, 16] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#ef4444", toneMapped: !1 }) + ] }) }), + x && /* @__PURE__ */ n("axesHelper", { args: [Math.max(5, I)] }), + /* @__PURE__ */ n( + At, + { + infiniteGrid: !0, + fadeDistance: 50, + sectionColor: "#333", + cellColor: "#111", + position: [0, -0.01, 0] + } + ) + ] }) : /* @__PURE__ */ n( + pn, + { + radius: d, + distance: m, + chandraDistance: u, + allSectors: B, + cumulative: F, + theta: C, + phi: R, + orbitSpeed: v, + thetaDrift: L, + thetaJitter: O, + phiJitter: J, + K: k, + speedup: G, + usePoisson: A, + bottomInset: a, + onBack: () => b("scene"), + host: t + } + ), + /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", zIndex: 3200 }, children: [ + ve && /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%) skewX(-12deg)", + padding: "16px 28px", + color: "var(--terminal-green-soft)", + fontFamily: "var(--font-headline)", + fontStyle: "italic", + fontSize: 42, + letterSpacing: "0.16em", + textTransform: "uppercase", + textShadow: "0 0 20px rgba(125,255,155,0.38), 0 0 42px rgba(125,255,155,0.18)" + }, + children: /* @__PURE__ */ n("span", { style: { display: "inline-block", transform: "skewX(12deg)" }, children: ve }) + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 10, + bottom: a + 16, + width: 26, + height: "min(44vh, 320px)", + display: "flex", + alignItems: "flex-end" + }, + children: /* @__PURE__ */ i( + "div", + { + style: { + position: "relative", + width: "100%", + height: "100%", + borderRadius: 14, + border: "1px solid rgba(251,191,36,0.35)", + background: "linear-gradient(to top, rgba(30,18,0,0.92), rgba(7,19,11,0.15))", + boxShadow: "0 0 22px rgba(251,191,36,0.12)", + overflow: "hidden", + opacity: me ? 1 : 0.35, + transition: "opacity 0.2s ease" + }, + children: [ + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "6px", + borderRadius: 10, + border: "1px solid rgba(251,191,36,0.14)" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 5, + right: 5, + bottom: 5, + height: _e, + borderRadius: 9, + background: "linear-gradient(to top, rgba(245,158,11,0.96), rgba(253,224,71,0.96))", + boxShadow: "0 0 18px rgba(251,191,36,0.5)", + transition: "height 0.25s ease" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "8px 7px", + display: "grid", + gridTemplateRows: `repeat(${h}, 1fr)`, + pointerEvents: "none" + }, + children: Array.from({ length: h }).map((p, M) => /* @__PURE__ */ n( + "div", + { + style: { + borderTop: M === 0 ? "none" : "1px solid rgba(251,191,36,0.15)" + } + }, + `complexity-tick-${M}` + )) + } + ), + /* @__PURE__ */ i( + "div", + { + style: { + position: "absolute", + left: 34, + bottom: 0, + color: "#fcd34d", + fontFamily: "var(--font-headline)", + fontSize: 10, + letterSpacing: "0.08em", + textTransform: "uppercase", + writingMode: "vertical-rl", + transform: "rotate(180deg)", + textShadow: "0 0 12px rgba(251,191,36,0.25)" + }, + children: [ + "Complexity ", + ze + 1, + "/", + h + ] + } + ) + ] + } + ) + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + right: 10, + bottom: a + 16, + width: 26, + height: "min(44vh, 320px)", + display: "flex", + alignItems: "flex-end" + }, + children: /* @__PURE__ */ i( + "div", + { + style: { + position: "relative", + width: "100%", + height: "100%", + borderRadius: 14, + border: "1px solid rgba(244,114,182,0.35)", + background: "linear-gradient(to top, rgba(42,7,23,0.94), rgba(7,19,11,0.15))", + boxShadow: "0 0 22px rgba(244,114,182,0.14)", + overflow: "hidden" + }, + children: [ + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "6px", + borderRadius: 10, + border: "1px solid rgba(244,114,182,0.14)" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 5, + right: 5, + bottom: 5, + height: U, + borderRadius: 9, + background: "linear-gradient(to top, rgba(236,72,153,0.96), rgba(244,114,182,0.98))", + boxShadow: "0 0 18px rgba(244,114,182,0.5)", + transition: "height 0.25s ease" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "8px 7px", + display: "grid", + gridTemplateRows: `repeat(${h}, 1fr)`, + pointerEvents: "none" + }, + children: Array.from({ length: h }).map((p, M) => /* @__PURE__ */ n( + "div", + { + style: { + borderTop: M === 0 ? "none" : "1px solid rgba(244,114,182,0.15)" + } + }, + `turbo-tick-${M}` + )) + } + ), + /* @__PURE__ */ i( + "div", + { + style: { + position: "absolute", + right: 34, + bottom: 0, + color: "#f9a8d4", + fontFamily: "var(--font-headline)", + fontSize: 10, + letterSpacing: "0.08em", + textTransform: "uppercase", + writingMode: "vertical-rl", + textShadow: "0 0 12px rgba(244,114,182,0.25)" + }, + children: [ + "Turbo ", + $e + 1, + "/", + h + ] + } + ) + ] + } + ) + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 12, + right: 12, + bottom: 10, + display: "grid", + gridTemplateColumns: "repeat(4, minmax(0, 1fr))", + gap: 8, + pointerEvents: "auto" + }, + children: [ + { + label: "Complexity", + kind: "adjust", + active: !1, + disabled: !me, + accent: "rgba(245,158,11,0.2)", + sublabel: `${I} • ${ze + 1}/${h}`, + meterColor: "linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))", + meterSide: "left", + meterFill: _e, + onDecrease: () => He("down"), + onIncrease: () => He("up"), + canDecrease: Ze, + canIncrease: et + }, + { + label: "Mode", + kind: "action", + onClick: ot, + active: !1, + accent: "rgba(59,130,246,0.18)", + sublabel: Ee(T) + }, + { + label: "Fano Sweep", + kind: "action", + onClick: rt, + active: q === "fano", + accent: "rgba(59,130,246,0.22)", + sublabel: q === "fano" ? "Open" : "Scene" + }, + { + label: "Turbo", + kind: "adjust", + active: !1, + accent: "rgba(34,197,94,0.2)", + sublabel: `${G}x • ${$e + 1}/${h}`, + meterColor: "linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))", + meterSide: "right", + meterFill: U, + onDecrease: () => We("down"), + onIncrease: () => We("up"), + canDecrease: tt, + canIncrease: nt + } + ].map((p) => p.kind === "adjust" ? /* @__PURE__ */ i( + "div", + { + style: { + minHeight: 54, + border: "1px solid var(--terminal-panel-border)", + background: p.active ? p.accent : "rgba(7,19,11,0.86)", + color: "var(--terminal-green-soft)", + borderRadius: 10, + padding: "8px 10px", + display: "flex", + flexDirection: "column", + alignItems: "center", + justifyContent: "center", + gap: 6, + boxShadow: p.active ? "0 0 18px rgba(125,255,155,0.12)" : "0 8px 24px rgba(0,0,0,0.25)", + position: "relative", + overflow: "hidden", + opacity: p.disabled ? 0.38 : 1 + }, + children: [ + "meterColor" in p && /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + top: 6, + bottom: 6, + left: p.meterSide === "left" ? 6 : void 0, + right: p.meterSide === "right" ? 6 : void 0, + width: 6, + borderRadius: 999, + background: "rgba(255,255,255,0.07)", + border: "1px solid rgba(255,255,255,0.08)" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + bottom: 7, + left: p.meterSide === "left" ? 7 : void 0, + right: p.meterSide === "right" ? 7 : void 0, + width: 4, + height: p.meterFill, + borderRadius: 999, + background: p.meterColor, + boxShadow: p.meterSide === "left" ? "0 0 10px rgba(251,191,36,0.45)" : "0 0 10px rgba(244,114,182,0.45)", + transition: "height 0.25s ease" + } + } + ) + ] }), + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-headline)", + fontSize: 11, + fontWeight: 400, + letterSpacing: "0.08em", + textTransform: "uppercase", + lineHeight: 1.1 + }, + children: p.label + } + ), + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-ui)", + fontSize: 10, + color: "var(--terminal-green)", + letterSpacing: "0.08em", + lineHeight: 1 + }, + children: p.sublabel + } + ), + /* @__PURE__ */ i("div", { style: { display: "grid", gridTemplateColumns: "repeat(2, minmax(0, 1fr))", gap: 6, width: "100%", marginTop: "auto" }, children: [ + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: p.onDecrease, + onPointerEnter: Se, + disabled: p.disabled || !p.canDecrease, + style: { + border: "1px solid rgba(255,255,255,0.12)", + background: "rgba(255,255,255,0.04)", + color: "var(--terminal-green-soft)", + borderRadius: 8, + minHeight: 24, + cursor: p.disabled || !p.canDecrease ? "not-allowed" : "pointer", + fontFamily: "var(--font-headline)", + fontSize: 12, + letterSpacing: "0.08em", + opacity: p.disabled || !p.canDecrease ? 0.35 : 1, + position: "relative", + zIndex: 1 + }, + children: "-" + } + ), + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: p.onIncrease, + onPointerEnter: Se, + disabled: p.disabled || !p.canIncrease, + style: { + border: "1px solid rgba(255,255,255,0.12)", + background: "rgba(255,255,255,0.04)", + color: "var(--terminal-green-soft)", + borderRadius: 8, + minHeight: 24, + cursor: p.disabled || !p.canIncrease ? "not-allowed" : "pointer", + fontFamily: "var(--font-headline)", + fontSize: 12, + letterSpacing: "0.08em", + opacity: p.disabled || !p.canIncrease ? 0.35 : 1, + position: "relative", + zIndex: 1 + }, + children: "+" + } + ) + ] }) + ] + }, + p.label + ) : /* @__PURE__ */ i( + "button", + { + type: "button", + onClick: p.onClick, + onPointerEnter: Se, + disabled: "disabled" in p ? p.disabled : !1, + style: { + minHeight: 54, + border: "1px solid var(--terminal-panel-border)", + background: p.active ? p.accent : "rgba(7,19,11,0.86)", + color: "var(--terminal-green-soft)", + borderRadius: 10, + padding: "8px 10px", + cursor: "disabled" in p && p.disabled ? "not-allowed" : "pointer", + display: "flex", + flexDirection: "column", + alignItems: "center", + justifyContent: "center", + gap: 2, + boxShadow: p.active ? "0 0 18px rgba(125,255,155,0.12)" : "0 8px 24px rgba(0,0,0,0.25)", + position: "relative", + overflow: "hidden", + opacity: "disabled" in p && p.disabled ? 0.38 : 1 + }, + children: [ + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-headline)", + fontSize: 11, + fontWeight: 400, + letterSpacing: "0.08em", + textTransform: "uppercase", + lineHeight: 1.1 + }, + children: p.label + } + ), + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-ui)", + fontSize: 10, + color: "var(--terminal-green)", + letterSpacing: "0.08em", + lineHeight: 1 + }, + children: p.sublabel + } + ) + ] + }, + p.label + )) + } + ) + ] }), + /* @__PURE__ */ n("color", { attach: "background", args: ["#050505"] }) + ] }); +} +const Bn = { + name: "lightlane", + displayName: "Lightlane Challenge", + version: "1.1.0", + paramSchema: { + hideScenePresentation: { type: "boolean", label: "Hide Sphere + Lightlanes", default: !1 }, + hideFlyingBars: { type: "boolean", label: "Hide Flying Bars", default: !1 }, + hideDataBoxes: { type: "boolean", label: "Hide Data Boxes", default: !1 }, + complexity: { type: "range", label: "Complexity", default: 5, min: 1, max: 20, step: 1 }, + radius: { type: "range", label: "Distance to star", default: 2, min: 0.1, max: 5, step: 0.1 }, + chandraDistance: { type: "range", label: "Chandra Camera Distance", default: 6, min: 5, max: 30, step: 0.5 }, + observationMode: { + type: "select", + label: "Observation Mode", + default: "randomSphere", + options: [ + { value: "orbit", label: "Orbit" }, + { value: "randomSphere", label: "Random Sphere" } + ] + }, + sceneView: { + type: "select", + label: "Scene View", + default: "both", + options: [ + { value: "both", label: "Both" }, + { value: "poisson", label: "Poisson" }, + { value: "lightlane", label: "Lightlane" } + ] + }, + orbitSpeed: { type: "range", label: "Orbit Speed", default: 0.2, min: 0, max: 2, step: 0.01 }, + thetaDrift: { type: "range", label: "Theta Drift", default: 0, min: -1, max: 1, step: 0.01 }, + thetaJitter: { type: "range", label: "Theta Jitter", default: 0, min: 0, max: 0.25, step: 5e-3 }, + phiJitter: { type: "range", label: "Phi Jitter", default: 0, min: 0, max: 0.5, step: 0.01 }, + speedup: { type: "range", label: "Speedup", default: 1, min: 1, max: 240, step: 1 } + }, + defaultParams: { + complexity: 5, + radius: 2, + orbitSpeed: 0.2, + thetaDrift: 0, + thetaJitter: 0, + phiJitter: 0, + chandraDistance: 6, + observationMode: "randomSphere", + sceneView: "both", + speedup: 1, + // Internal defaults will handle the rest + distance: 5, + showAxes: !1, + lightlanes: !0, + allSectors: !0, + cumulative: !1, + phi: 0, + theta: Math.PI / 2, + K: 1e3, + usePoisson: !0, + hideScenePresentation: !1, + hideFlyingBars: !1, + hideDataBoxes: !1 + } +}; +export { + kn as default, + Bn as metadata +}; +//# sourceMappingURL=lightlane.js.map diff --git a/dist/glitch/glitch_lightlane/lightlane.js.map b/dist/glitch/glitch_lightlane/lightlane.js.map new file mode 100644 index 0000000..6b3be1e --- /dev/null +++ b/dist/glitch/glitch_lightlane/lightlane.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lightlane.js","sources":["../src/components/VectorArrow.tsx","../src/vectors.ts","../src/components/DiophantineVectors.tsx","../src/hostBridge.ts","../src/components/lightlane-engine.js","../src/components/FanoSweepPanel.tsx","../src/components/PoissonShell.tsx","../src/components/PulsingSphere.tsx","../src/components/OrbitingObject.tsx","../src/components/SamplingSystem.tsx","../src/types.ts","../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport * as THREE from 'three';\n\ninterface VectorArrowProps {\n vector: [number, number, number];\n origin?: [number, number, number];\n color?: string;\n}\n\nexport function VectorArrow({ vector, origin = [0, 0, 0], color = '#facc15' }: VectorArrowProps) {\n const { dir, len, position } = useMemo(() => {\n const start = new THREE.Vector3(...origin);\n const end = new THREE.Vector3(...vector);\n\n const len = start.distanceTo(end);\n const dir = end.clone().sub(start).normalize();\n\n // ArrowHelper takes direction, origin, length.\n return { dir, len, position: start };\n }, [vector, origin]);\n\n // Using primitive ArrowHelper for geometrical correctness and simplicity\n // We can wrap it in a primitive. \n // However, ArrowHelper manages its own geometry updates which can be tricky in React.\n // Re-creating the helper when props change is a safe pattern for simple props.\n const arrowHelper = useMemo(() => {\n return new THREE.ArrowHelper(dir, position, len, color, 0.2 * Math.min(len, 1) + 0.1, 0.1 * Math.min(len, 1) + 0.05);\n }, [dir, len, position, color]);\n\n return ;\n}\n","export type Vector3Tuple = [number, number, number];\n\nexport function getVectors(complexity: number, allSectors: boolean = false): Vector3Tuple[] {\n const vectors: Vector3Tuple[] = [];\n\n // Complexity N corresponds to integer solutions for x + y + z = N\n // where x, y, z >= 0\n\n for (let x = 0; x <= complexity; x++) {\n for (let y = 0; y <= complexity - x; y++) {\n const z = complexity - x - y;\n\n if (z >= 0) {\n if (!allSectors) {\n vectors.push([x, y, z]);\n } else {\n // Generate permutations for all octants\n // For each component, if it's non-zero, it can be + or -\n const xSigns = x === 0 ? [1] : [1, -1];\n const ySigns = y === 0 ? [1] : [1, -1];\n const zSigns = z === 0 ? [1] : [1, -1];\n\n for (const sx of xSigns) {\n for (const sy of ySigns) {\n for (const sz of zSigns) {\n vectors.push([x * sx, y * sy, z * sz]);\n }\n }\n }\n }\n }\n }\n }\n\n return vectors;\n}\n","import { useMemo } from 'react';\nimport { VectorArrow } from './VectorArrow';\nimport { getVectors } from '../vectors';\nimport * as THREE from 'three';\n\ninterface DiophantineVectorsProps {\n complexity: number;\n lightlanes?: boolean;\n radius?: number;\n distance?: number;\n allSectors?: boolean;\n cumulative?: boolean;\n}\n\nfunction LightlaneCylinder({ vector, radius, distance, color }: { vector: [number, number, number], radius: number, distance: number, color: string }) {\n const { position, quaternion } = useMemo(() => {\n const v = new THREE.Vector3(...vector).normalize();\n const up = new THREE.Vector3(0, 1, 0);\n const quaternion = new THREE.Quaternion().setFromUnitVectors(up, v);\n const position = v.clone().multiplyScalar(distance / 2);\n return { position, quaternion };\n }, [vector, distance]);\n\n return (\n \n \n \n \n );\n}\n\nexport function DiophantineVectors({ complexity, lightlanes = false, radius = 0.5, distance = 5, allSectors = false, cumulative = false }: DiophantineVectorsProps) {\n const vectorData = useMemo(() => {\n const data: { vec: [number, number, number], c: number }[] = [];\n\n const start = cumulative ? 1 : complexity;\n const end = complexity;\n\n for (let c = start; c <= end; c++) {\n const result = getVectors(c, allSectors);\n for (const v of result) {\n data.push({ vec: v, c });\n }\n }\n return data;\n }, [complexity, allSectors, cumulative]);\n\n // Helper to get color based on complexity\n // Low (1) -> Purple (~270)\n // High (max) -> Red (~0 or 360, but let's go down to 0)\n // But wait, standard HSL: Red=0/360, Purple=270.\n // User wants: Higher = Red, Lower = Purple.\n // So mapping: c=1 -> 270, c=max -> 0.\n const getColor = (c: number) => {\n const maxC = cumulative ? Math.max(complexity, 1) : complexity;\n const ratio = maxC > 1 ? (c - 1) / (maxC - 1) : 1;\n // inverse ratio for hue: 1 -> 0, 0 -> 1 ?\n // We want ratio 0 (c=1) -> 270\n // We want ratio 1 (c=max) -> 0\n const hue = 270 * (1 - ratio);\n return `hsl(${hue}, 100%, 50%)`;\n };\n\n return (\n \n {vectorData.map((item, i) => {\n const color = cumulative ? getColor(item.c) : (lightlanes ? \"#ff33c5\" : \"#4ade80\");\n\n return lightlanes ? (\n \n ) : (\n \n );\n })}\n \n );\n}\n","import type { GlitchHostBridge } from './types';\n\nexport const HOST_SOUND_EVENT = 'glitch:play-sound';\nexport const HOST_STOP_SOUND_EVENT = 'glitch:stop-sound';\nexport const HOST_EMIT_PREFIX = 'glitch:host:';\n\nexport const SOUND_IDS = {\n click: 'ui.button_click',\n hover: 'ui.button_hover',\n computeStart: 'machine.compute_start',\n computeStep: 'machine.compute_step',\n computeDone: 'machine.compute_done',\n verdictStable: 'machine.verdict_stable',\n verdictAlert: 'machine.verdict_alert'\n} as const;\n\nexport type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS];\n\nfunction dispatchWindowEvent(type: string, detail: T) {\n if (typeof window === 'undefined') return;\n window.dispatchEvent(new CustomEvent(type, { detail }));\n}\n\nexport function safePlaySound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.playSound) {\n host.playSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_SOUND_EVENT, { id, payload });\n}\n\nexport function safeStopSound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.stopSound) {\n host.stopSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_STOP_SOUND_EVENT, { id, payload });\n}\n\nexport function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown) {\n try {\n if (host?.emit) {\n host.emit(type, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(`${HOST_EMIT_PREFIX}${type}`, payload);\n}\n","// Pure JS sampling/simulation engine used by the React visualization.\n// The module owns the sampling state and exposes simulate(dt).\n\nconst EPS = 1e-12;\n\nexport function createRng(seed = 123456789) {\n let a = seed >>> 0;\n return function rand() {\n a |= 0;\n a = (a + 0x6d2b79f5) | 0;\n let t = Math.imul(a ^ (a >>> 15), 1 | a);\n t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n };\n}\n\nexport function samplePoisson(lambda, rand = Math.random) {\n if (!Number.isFinite(lambda) || lambda <= 0) return 0;\n\n if (lambda < 30) {\n const L = Math.exp(-lambda);\n let k = 0;\n let p = 1;\n do {\n k++;\n p *= rand();\n } while (p > L);\n return k - 1;\n }\n\n const u1 = Math.max(1e-12, rand());\n const u2 = rand();\n const z = Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n const x = lambda + Math.sqrt(lambda) * z;\n return Math.max(0, Math.round(x));\n}\n\nfunction toXYZ(v) {\n return [v[0] ?? v.x, v[1] ?? v.y, v[2] ?? v.z];\n}\n\nfunction norm3(x, y, z) {\n return Math.sqrt(x * x + y * y + z * z);\n}\n\nfunction wrapAngle(angle) {\n const twoPi = 2 * Math.PI;\n let a = angle % twoPi;\n if (a < 0) a += twoPi;\n return a;\n}\n\nfunction randomSphereAngles(rand) {\n const u = 2 * rand() - 1; // cos(theta) uniform\n const phi = 2 * Math.PI * rand();\n return {\n theta: Math.acos(Math.max(-1, Math.min(1, u))),\n phi,\n };\n}\n\n// Reflect polar angle back into [0, pi] so continuous drift can pass poles\n// without creating invalid spherical coordinates.\nexport function reflectPolarTheta(theta) {\n const twoPi = 2 * Math.PI;\n let t = theta % twoPi;\n if (t < 0) t += twoPi;\n if (t > Math.PI) t = twoPi - t;\n return t;\n}\n\nexport function sampleNormal(rand = Math.random) {\n const u1 = Math.max(1e-12, rand());\n const u2 = rand();\n return Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n}\n\nexport function vecOnSphereFromAngles(D, theta, phi) {\n const sinT = Math.sin(theta);\n return [\n D * sinT * Math.cos(phi),\n D * Math.cos(theta),\n D * sinT * Math.sin(phi),\n ];\n}\n\nexport function getDiophantineVectors(complexity, allSectors = false, cumulative = false) {\n const vectors = [];\n const start = cumulative ? 1 : complexity;\n const end = complexity;\n\n for (let c = start; c <= end; c++) {\n for (let x = 0; x <= c; x++) {\n for (let y = 0; y <= c - x; y++) {\n const z = c - x - y;\n if (!allSectors) {\n vectors.push([x, y, z]);\n continue;\n }\n\n const xSigns = x === 0 ? [1] : [1, -1];\n const ySigns = y === 0 ? [1] : [1, -1];\n const zSigns = z === 0 ? [1] : [1, -1];\n for (const sx of xSigns) {\n for (const sy of ySigns) {\n for (const sz of zSigns) {\n vectors.push([x * sx, y * sy, z * sz]);\n }\n }\n }\n }\n }\n }\n\n return vectors;\n}\n\nexport function buildLaneEndpointsOnShell({\n D,\n complexity,\n allSectors = false,\n cumulative = false,\n}) {\n if (!Number.isFinite(D) || D <= 0) return [];\n if (!Number.isInteger(complexity) || complexity < 1) return [];\n\n const raw = getDiophantineVectors(complexity, allSectors, cumulative);\n const out = [];\n for (let i = 0; i < raw.length; i++) {\n const [x, y, z] = raw[i];\n const n = norm3(x, y, z);\n if (n <= EPS) continue;\n out.push([(D * x) / n, (D * y) / n, (D * z) / n]);\n }\n return out;\n}\n\nexport function countLaneOverlapsOnSegments(lanes, satPos, laneRadius) {\n if (!lanes || lanes.length === 0) return 0;\n if (!Number.isFinite(laneRadius) || laneRadius <= 0) return 0;\n\n const [Px, Py, Pz] = toXYZ(satPos);\n const r2 = laneRadius * laneRadius;\n let count = 0;\n\n for (let i = 0; i < lanes.length; i++) {\n const [Bx, By, Bz] = toXYZ(lanes[i]);\n const b2 = Bx * Bx + By * By + Bz * Bz;\n if (b2 <= EPS) continue;\n\n let t = (Px * Bx + Py * By + Pz * Bz) / b2;\n if (t < 0) t = 0;\n if (t > 1) t = 1;\n\n const Cx = t * Bx;\n const Cy = t * By;\n const Cz = t * Bz;\n const dx = Px - Cx;\n const dy = Py - Cy;\n const dz = Pz - Cz;\n\n if (dx * dx + dy * dy + dz * dz < r2) count++;\n }\n\n return count;\n}\n\nexport function countLaneOverlapsOnShell(lanes, D, satPos, laneRadius) {\n if (!lanes || lanes.length === 0) return 0;\n if (!Number.isFinite(D) || D <= 0) return 0;\n if (!Number.isFinite(laneRadius) || laneRadius <= 0) return 0;\n\n const [Px, Py, Pz] = toXYZ(satPos);\n const R2 = D * D;\n const dotThreshold = R2 - 0.5 * laneRadius * laneRadius;\n\n let count = 0;\n for (let i = 0; i < lanes.length; i++) {\n const [Bx, By, Bz] = toXYZ(lanes[i]);\n if (Px * Bx + Py * By + Pz * Bz > dotThreshold) count++;\n }\n return count;\n}\n\nexport function isotropicCoverageProbability({ D, lane_radius }) {\n if (!Number.isFinite(D) || D <= 0) return 0;\n if (!Number.isFinite(lane_radius) || lane_radius <= 0) return 0;\n const p = (lane_radius * lane_radius) / (4 * D * D);\n if (p <= 0) return 0;\n return p > 1 ? 1 : p;\n}\n\nexport function isotropicCoverageProbabilitySegment({ D, lane_radius, lane_length }) {\n if (!Number.isFinite(D) || D <= 0) return 0;\n if (!Number.isFinite(lane_radius) || lane_radius <= 0) return 0;\n if (!Number.isFinite(lane_length) || lane_length <= 0) return 0;\n\n // If the visual segment reaches the observation shell, the shell-cap model is exact.\n if (lane_length >= D - EPS) {\n return isotropicCoverageProbability({ D, lane_radius });\n }\n\n const r = lane_radius;\n const L = lane_length;\n\n // No possible hit if the aperture is smaller than the endpoint gap.\n const dMin = D - L;\n if (r <= dMin) return 0;\n\n // For unrealistic very large apertures, clamp to full coverage.\n if (r >= D + L) return 1;\n\n // Minimum distance to the segment is a monotone function of c = cos(alpha) on c in [0,1].\n // The hit set is a spherical cap c > c0.\n const dJoin = Math.sqrt(Math.max(0, D * D - L * L)); // distance at projection hitting the endpoint boundary\n let c0;\n\n if (r < dJoin) {\n // Endpoint-limited branch (nearest point is the segment endpoint)\n c0 = (D * D + L * L - r * r) / (2 * D * L);\n } else if (r < D) {\n // Interior cylinder branch\n c0 = Math.sqrt(Math.max(0, 1 - (r * r) / (D * D)));\n } else {\n // r >= D covers the whole front hemisphere and may extend beyond; clamp conservatively.\n c0 = -1;\n }\n\n if (!Number.isFinite(c0)) return 0;\n if (c0 < -1) c0 = -1;\n if (c0 > 1) c0 = 1;\n return (1 - c0) / 2;\n}\n\nexport function lambdaIsotropic({ flux, D, lane_radius, dt }) {\n if (!Number.isFinite(flux) || flux <= 0) return 0;\n if (!Number.isFinite(dt) || dt <= 0) return 0;\n const p = isotropicCoverageProbability({ D, lane_radius });\n return flux * p * dt;\n}\n\nexport function lambdaIsotropicSegment({ flux, D, lane_radius, lane_length, dt }) {\n if (!Number.isFinite(flux) || flux <= 0) return 0;\n if (!Number.isFinite(dt) || dt <= 0) return 0;\n const p = isotropicCoverageProbabilitySegment({ D, lane_radius, lane_length });\n return flux * p * dt;\n}\n\nexport function lambdaIsotropicForGeometry({\n flux,\n D,\n lane_radius,\n dt,\n hitTestModel = \"shell\",\n lane_length,\n}) {\n if (hitTestModel === \"segment\") {\n return lambdaIsotropicSegment({ flux, D, lane_radius, lane_length, dt });\n }\n return lambdaIsotropic({ flux, D, lane_radius, dt });\n}\n\nfunction validateConfig(config) {\n if (!config || typeof config !== \"object\") {\n throw new Error(\"createSamplingSimulation: config object is required.\");\n }\n\n const lane_radius = config.lane_radius ?? config.radius;\n const D = config.D;\n const complexity = config.complexity;\n const flux = config.flux;\n const bin_size = config.bin_size ?? 1;\n const sub_bin_sampling = config.sub_bin_sampling ?? 4;\n const thetaDrift = config.thetaDrift ?? config.theta_drift ?? 0;\n const thetaJitter = config.thetaJitter ?? config.theta_jitter ?? 0;\n const phiJitter = config.phiJitter ?? config.phi_jitter ?? 0;\n const lane_length = config.laneLength ?? config.lane_length ?? config.distance ?? D;\n const hitTestModel = config.hitTestModel ?? config.hit_test_model ?? \"shell\";\n const observationMode = config.observationMode ?? config.observation_mode ?? \"orbit\";\n\n if (!Number.isFinite(D) || D <= 0) {\n throw new Error(\"createSamplingSimulation: D must be a positive number.\");\n }\n if (!Number.isFinite(lane_radius) || lane_radius <= 0) {\n throw new Error(\"createSamplingSimulation: lane_radius (or radius) must be a positive number.\");\n }\n if (!Number.isInteger(complexity) || complexity < 1) {\n throw new Error(\"createSamplingSimulation: complexity must be an integer >= 1.\");\n }\n if (!Number.isFinite(flux) || flux < 0) {\n throw new Error(\"createSamplingSimulation: flux must be a finite number >= 0.\");\n }\n if (!Number.isFinite(bin_size) || bin_size <= 0) {\n throw new Error(\"createSamplingSimulation: bin_size must be a positive number.\");\n }\n if (!Number.isInteger(sub_bin_sampling) || sub_bin_sampling < 1) {\n throw new Error(\"createSamplingSimulation: sub_bin_sampling must be an integer >= 1.\");\n }\n if (!Number.isFinite(thetaDrift)) {\n throw new Error(\"createSamplingSimulation: thetaDrift must be finite.\");\n }\n if (!Number.isFinite(thetaJitter) || thetaJitter < 0) {\n throw new Error(\"createSamplingSimulation: thetaJitter must be a finite number >= 0.\");\n }\n if (!Number.isFinite(phiJitter) || phiJitter < 0) {\n throw new Error(\"createSamplingSimulation: phiJitter must be a finite number >= 0.\");\n }\n if (!Number.isFinite(lane_length) || lane_length <= 0) {\n throw new Error(\"createSamplingSimulation: laneLength/lane_length/distance must be a positive number.\");\n }\n if (hitTestModel !== \"shell\" && hitTestModel !== \"segment\") {\n throw new Error('createSamplingSimulation: hitTestModel must be \"shell\" or \"segment\".');\n }\n if (observationMode !== \"orbit\" && observationMode !== \"randomSphere\") {\n throw new Error('createSamplingSimulation: observationMode must be \"orbit\" or \"randomSphere\".');\n }\n\n return {\n D,\n lane_radius,\n complexity,\n flux,\n bin_size,\n sub_bin_sampling,\n theta: reflectPolarTheta(config.theta ?? Math.PI / 2),\n phi: wrapAngle(config.phi ?? 0),\n velocity: config.velocity ?? 0,\n thetaDrift,\n thetaJitter,\n phiJitter,\n lane_length,\n hitTestModel,\n observationMode,\n allSectors: Boolean(config.allSectors),\n cumulative: Boolean(config.cumulative),\n usePoisson: config.usePoisson !== false,\n seed: Number.isFinite(config.seed) ? config.seed : 1,\n };\n}\n\nexport function createSamplingSimulation(config) {\n const cfg = validateConfig(config);\n const lanes = buildLaneEndpointsOnShell(cfg);\n const laneSegments =\n cfg.hitTestModel === \"segment\"\n ? buildLaneEndpointsOnShell({ ...cfg, D: cfg.lane_length })\n : lanes;\n const lightlaneRand = createRng(cfg.seed);\n const isotropicRand = createRng(cfg.seed + 1);\n const pathRand = createRng(cfg.seed + 2);\n\n const subBinSize = cfg.bin_size / cfg.sub_bin_sampling;\n const lambdaIsoSubBin = lambdaIsotropicForGeometry({\n flux: cfg.flux,\n D: cfg.D,\n lane_radius: cfg.lane_radius,\n dt: subBinSize,\n hitTestModel: cfg.hitTestModel,\n lane_length: cfg.lane_length,\n });\n let timeInBin = 0;\n let timeInSubBin = 0;\n let phase = cfg.phi;\n let thetaNow = cfg.theta;\n let elapsed = 0;\n let accumulatedLightlane = 0;\n let accumulatedIsotropic = 0;\n let expectedLightlaneThisBin = 0;\n let processedSubBinsInCurrentBin = 0;\n let lastLaneCount = 0;\n let overlapSumThisBin = 0;\n\n function sampleCount(lambda, rand) {\n return cfg.usePoisson ? samplePoisson(lambda, rand) : lambda;\n }\n\n function currentSatPos(sampleTheta = thetaNow, samplePhi = phase) {\n return vecOnSphereFromAngles(cfg.D, sampleTheta, samplePhi);\n }\n\n function processSubBin() {\n let sampleTheta;\n let samplePhi;\n if (cfg.observationMode === \"randomSphere\") {\n const ang = randomSphereAngles(pathRand);\n sampleTheta = ang.theta;\n samplePhi = ang.phi;\n } else {\n sampleTheta = reflectPolarTheta(\n thetaNow + (cfg.thetaJitter > 0 ? cfg.thetaJitter * sampleNormal(pathRand) : 0)\n );\n samplePhi = wrapAngle(\n phase + (cfg.phiJitter > 0 ? cfg.phiJitter * sampleNormal(pathRand) : 0)\n );\n }\n const satPos = currentSatPos(sampleTheta, samplePhi);\n const laneCount =\n cfg.hitTestModel === \"segment\"\n ? countLaneOverlapsOnSegments(laneSegments, satPos, cfg.lane_radius)\n : countLaneOverlapsOnShell(lanes, cfg.D, satPos, cfg.lane_radius);\n lastLaneCount = laneCount;\n\n const N = lanes.length;\n const lam = N > 0 ? (laneCount * cfg.flux * subBinSize) / N : 0;\n accumulatedLightlane += sampleCount(lam, lightlaneRand);\n accumulatedIsotropic += sampleCount(lambdaIsoSubBin, isotropicRand);\n expectedLightlaneThisBin += lam;\n overlapSumThisBin += laneCount;\n processedSubBinsInCurrentBin++;\n\n return {\n laneCount,\n satPos,\n lambdaLightlaneSubBin: lam,\n phase: samplePhi,\n theta: sampleTheta,\n };\n }\n\n function finalizeBin() {\n const effectiveBinSize =\n processedSubBinsInCurrentBin > 0 ? processedSubBinsInCurrentBin * subBinSize : cfg.bin_size;\n const lamIso = lambdaIsoSubBin * cfg.sub_bin_sampling;\n const isotropic = accumulatedIsotropic;\n const lightlane = accumulatedLightlane;\n\n const bin = {\n time: elapsed,\n bin_size: effectiveBinSize,\n lightlane,\n isotropic,\n lambdaIsotropic: processedSubBinsInCurrentBin > 0 ? lambdaIsoSubBin * processedSubBinsInCurrentBin : lamIso,\n overlaps: lastLaneCount,\n overlapsMean:\n processedSubBinsInCurrentBin > 0\n ? overlapSumThisBin / processedSubBinsInCurrentBin\n : 0,\n subBins: processedSubBinsInCurrentBin,\n phase,\n theta: thetaNow,\n lambdaLightlaneExpected: expectedLightlaneThisBin,\n };\n\n accumulatedLightlane = 0;\n accumulatedIsotropic = 0;\n expectedLightlaneThisBin = 0;\n overlapSumThisBin = 0;\n processedSubBinsInCurrentBin = 0;\n return bin;\n }\n\n return {\n config: { ...cfg },\n getLaneCount() {\n return lanes.length;\n },\n getState() {\n return {\n elapsed,\n phase,\n theta: thetaNow,\n timeInBin,\n timeInSubBin,\n accumulatedLightlane,\n accumulatedIsotropic,\n expectedLightlaneThisBin,\n processedSubBinsInCurrentBin,\n lastLaneCount,\n laneCount: lanes.length,\n };\n },\n reset() {\n timeInBin = 0;\n timeInSubBin = 0;\n phase = cfg.phi;\n thetaNow = cfg.theta;\n elapsed = 0;\n accumulatedLightlane = 0;\n accumulatedIsotropic = 0;\n expectedLightlaneThisBin = 0;\n processedSubBinsInCurrentBin = 0;\n lastLaneCount = 0;\n overlapSumThisBin = 0;\n },\n flushPartialBin() {\n if (processedSubBinsInCurrentBin <= 0) return null;\n const bin = finalizeBin();\n // Drop any partial sub-bin time so the visual pause appears immediate.\n timeInBin = 0;\n timeInSubBin = 0;\n return bin;\n },\n simulate(dt) {\n if (!Number.isFinite(dt) || dt <= 0) {\n return {\n bins: [],\n lastLaneCount,\n subBinEvents: 0,\n elapsed,\n };\n }\n\n let remaining = dt;\n let subBinEvents = 0;\n const bins = [];\n\n while (remaining > EPS) {\n const untilSub = subBinSize - timeInSubBin;\n const untilBin = cfg.bin_size - timeInBin;\n const step = Math.min(remaining, untilSub, untilBin);\n\n phase += cfg.velocity * step;\n thetaNow = reflectPolarTheta(thetaNow + cfg.thetaDrift * step);\n elapsed += step;\n timeInSubBin += step;\n timeInBin += step;\n remaining -= step;\n\n if (timeInSubBin >= subBinSize - EPS) {\n timeInSubBin = 0;\n processSubBin();\n subBinEvents++;\n }\n\n if (timeInBin >= cfg.bin_size - EPS) {\n timeInBin = 0;\n bins.push(finalizeBin());\n }\n }\n\n return {\n bins,\n lastLaneCount,\n subBinEvents,\n elapsed,\n };\n },\n };\n}\n\n// Backwards-compatible aliases while transitioning callers.\nexport const createDualRegimeSimulation = createSamplingSimulation;\n","import { Html } from '@react-three/drei';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { SOUND_IDS, safePlaySound, safeStopSound } from '../hostBridge';\nimport type { GlitchHostBridge } from '../types';\nimport { createSamplingSimulation } from './lightlane-engine.js';\n\ninterface FanoSweepPanelProps {\n radius: number;\n distance: number;\n chandraDistance: number;\n allSectors: boolean;\n cumulative: boolean;\n theta: number;\n phi: number;\n orbitSpeed: number;\n thetaDrift: number;\n thetaJitter: number;\n phiJitter: number;\n K: number;\n speedup: number;\n usePoisson: boolean;\n bottomInset?: number;\n onBack?: () => void;\n host?: GlitchHostBridge;\n}\n\ninterface SweepPoint {\n complexity: number;\n laneCount: number;\n meanBlue: number;\n meanYellow: number;\n fanoBlue: number;\n fanoYellow: number;\n fanoExcess: number;\n}\n\ninterface RunningMoments {\n n: number;\n mean: number;\n m2: number;\n}\n\nfunction updateMoments(m: RunningMoments, x: number): RunningMoments {\n const n = m.n + 1;\n const delta = x - m.mean;\n const mean = m.mean + delta / n;\n const m2 = m.m2 + delta * (x - mean);\n return { n, mean, m2 };\n}\n\nfunction emptyMoments(): RunningMoments {\n return { n: 0, mean: 0, m2: 0 };\n}\n\nfunction sampleFanoPoint({\n complexity,\n samplesPerPoint,\n runsPerPoint,\n binSize,\n subBinSampling,\n props,\n observationMode,\n seed,\n}: {\n complexity: number;\n samplesPerPoint: number;\n runsPerPoint: number;\n binSize: number;\n subBinSampling: number;\n props: FanoSweepPanelProps;\n observationMode: 'orbit' | 'randomSphere';\n seed: number;\n}): SweepPoint {\n let blue = emptyMoments();\n let yellow = emptyMoments();\n let laneCount = 0;\n\n for (let run = 0; run < runsPerPoint; run++) {\n const sim = createSamplingSimulation({\n D: props.chandraDistance,\n theta: props.theta,\n phi: props.phi,\n observationMode,\n velocity: props.orbitSpeed,\n thetaDrift: props.thetaDrift,\n thetaJitter: props.thetaJitter,\n phiJitter: props.phiJitter,\n bin_size: binSize,\n complexity,\n sub_bin_sampling: subBinSampling,\n flux: props.K,\n lane_radius: props.radius,\n distance: props.distance,\n hitTestModel: 'segment',\n allSectors: props.allSectors,\n cumulative: props.cumulative,\n usePoisson: props.usePoisson,\n seed: seed + run * 7_919,\n });\n if (run === 0) laneCount = sim.getLaneCount();\n\n for (let i = 0; i < samplesPerPoint; i++) {\n const { bins } = sim.simulate(binSize);\n const bin = bins[0];\n if (!bin) continue;\n blue = updateMoments(blue, bin.lightlane);\n yellow = updateMoments(yellow, bin.isotropic);\n }\n }\n\n const varBlue = blue.n > 1 ? blue.m2 / (blue.n - 1) : 0;\n const varYellow = yellow.n > 1 ? yellow.m2 / (yellow.n - 1) : 0;\n const fanoBlue = blue.mean > 0 ? varBlue / blue.mean : 0;\n const fanoYellow = yellow.mean > 0 ? varYellow / yellow.mean : 0;\n\n return {\n complexity,\n laneCount,\n meanBlue: blue.mean,\n meanYellow: yellow.mean,\n fanoBlue,\n fanoYellow,\n fanoExcess: Math.max(0, fanoBlue - fanoYellow),\n };\n}\n\nfunction fitPowerLaw(points: SweepPoint[], minComplexity = 1) {\n const usable = points.filter(p => p.complexity >= minComplexity && p.complexity > 1 && p.fanoExcess > 1e-6);\n if (usable.length < 3) return null;\n\n let sx = 0;\n let sy = 0;\n let sxx = 0;\n let sxy = 0;\n const n = usable.length;\n\n for (const p of usable) {\n const x = Math.log(p.laneCount);\n const y = Math.log(p.fanoExcess);\n sx += x;\n sy += y;\n sxx += x * x;\n sxy += x * y;\n }\n\n const denom = n * sxx - sx * sx;\n if (Math.abs(denom) < 1e-12) return null;\n\n const slope = (n * sxy - sx * sy) / denom;\n const intercept = (sy - slope * sx) / n;\n\n return {\n A: Math.exp(intercept),\n alpha: -slope,\n predictFanoExcessFromLaneCount(laneCount: number) {\n return Math.exp(intercept + slope * Math.log(Math.max(1, laneCount)));\n },\n };\n}\n\nfunction fitPowerLawWithFloor(points: SweepPoint[], minComplexity = 1) {\n const usable = points.filter(p => p.complexity >= minComplexity && p.complexity > 1 && p.fanoExcess > 1e-6);\n if (usable.length < 4) return null;\n\n const minY = Math.min(...usable.map((p) => p.fanoExcess));\n const maxB = Math.max(0, minY * 0.98);\n let best: null | {\n A: number;\n alpha: number;\n B: number;\n score: number;\n } = null;\n\n const steps = 80;\n for (let i = 0; i <= steps; i++) {\n const B = (i / steps) * maxB;\n const shifted = usable\n .map((p) => ({ x: p.laneCount, y: p.fanoExcess - B }))\n .filter((p) => p.y > 1e-9);\n if (shifted.length < 3) continue;\n\n let sx = 0;\n let sy = 0;\n let sxx = 0;\n let sxy = 0;\n const n = shifted.length;\n\n for (const p of shifted) {\n const x = Math.log(p.x);\n const y = Math.log(p.y);\n sx += x;\n sy += y;\n sxx += x * x;\n sxy += x * y;\n }\n\n const denom = n * sxx - sx * sx;\n if (Math.abs(denom) < 1e-12) continue;\n\n const slope = (n * sxy - sx * sy) / denom;\n const intercept = (sy - slope * sx) / n;\n const A = Math.exp(intercept);\n const alpha = -slope;\n if (!(A > 0) || !(alpha > 0)) continue;\n\n let score = 0;\n for (const p of usable) {\n const pred = B + A * Math.pow(Math.max(1, p.laneCount), -alpha);\n const err = Math.log(Math.max(1e-9, p.fanoExcess)) - Math.log(Math.max(1e-9, pred));\n score += err * err;\n }\n\n if (!best || score < best.score) {\n best = { A, alpha, B, score };\n }\n }\n\n if (!best) return null;\n\n return {\n A: best.A,\n alpha: best.alpha,\n B: best.B,\n score: best.score,\n predictFanoExcessFromLaneCount(laneCount: number) {\n return best.B + best.A * Math.pow(Math.max(1, laneCount), -best.alpha);\n },\n };\n}\n\nfunction fitPowerXY(samples: Array<{ x: number; y: number }>) {\n const usable = samples.filter((s) => s.x > 0 && s.y > 0);\n if (usable.length < 3) return null;\n\n let sx = 0;\n let sy = 0;\n let sxx = 0;\n let sxy = 0;\n const n = usable.length;\n\n for (const s of usable) {\n const x = Math.log(s.x);\n const y = Math.log(s.y);\n sx += x;\n sy += y;\n sxx += x * x;\n sxy += x * y;\n }\n\n const denom = n * sxx - sx * sx;\n if (Math.abs(denom) < 1e-12) return null;\n\n const slope = (n * sxy - sx * sy) / denom;\n const intercept = (sy - slope * sx) / n;\n const A = Math.exp(intercept);\n\n return {\n A,\n beta: slope,\n predict(x: number) {\n return A * Math.pow(Math.max(1e-9, x), slope);\n },\n invert(y: number) {\n if (A <= 0 || Math.abs(slope) < 1e-12 || y <= 0) return null;\n return Math.pow(y / A, 1 / slope);\n },\n };\n}\n\nfunction estimateComplexityFromLaneCount(points: SweepPoint[], targetLaneCount: number) {\n if (!Number.isFinite(targetLaneCount) || targetLaneCount <= 0 || points.length === 0) return null;\n\n const sorted = [...points].sort((a, b) => a.complexity - b.complexity);\n const byLane = [...sorted].sort((a, b) => a.laneCount - b.laneCount);\n const first = byLane[0];\n const last = byLane[byLane.length - 1];\n\n if (targetLaneCount <= first.laneCount) {\n return { complexity: first.complexity, mode: 'observed-range' as const };\n }\n\n for (let i = 1; i < byLane.length; i++) {\n const a = byLane[i - 1];\n const b = byLane[i];\n if (targetLaneCount <= b.laneCount) {\n const denom = Math.max(1e-9, b.laneCount - a.laneCount);\n const t = (targetLaneCount - a.laneCount) / denom;\n return {\n complexity: a.complexity + t * (b.complexity - a.complexity),\n mode: 'observed-range' as const,\n };\n }\n }\n\n const growthFit = fitPowerXY(sorted.map((p) => ({ x: p.complexity, y: p.laneCount })));\n const extrapolated = growthFit?.invert(targetLaneCount) ?? null;\n if (extrapolated && Number.isFinite(extrapolated)) {\n return { complexity: extrapolated, mode: 'extrapolated' as const };\n }\n\n return { complexity: last.complexity, mode: 'observed-max' as const };\n}\n\nfunction linePath(points: SweepPoint[], getY: (p: SweepPoint) => number, xToPx: (x: number) => number, yToPx: (y: number) => number) {\n return points\n .map((p, i) => `${i === 0 ? 'M' : 'L'} ${xToPx(p.complexity)} ${yToPx(getY(p))}`)\n .join(' ');\n}\n\nfunction formatYAxisTick(value: number) {\n if (value >= 10) return value.toFixed(0);\n if (value >= 2) return value.toFixed(1);\n return value.toFixed(2);\n}\n\nfunction buildLogTicks(min: number, max: number) {\n const candidates = [\n 0.5, 0.6, 0.7, 0.8, 0.9,\n 1.0, 1.1, 1.2, 1.4, 1.6, 1.8,\n 2.0, 2.5, 3.0, 4.0, 5.0, 7.5, 10.0,\n ];\n\n const ticks = candidates.filter(v => v >= min && v <= max);\n if (ticks.length >= 3) return ticks;\n\n // Fallback for unusual ranges.\n const steps = 5;\n const logMin = Math.log(min);\n const logMax = Math.log(max);\n return Array.from({ length: steps }, (_, i) => {\n const t = i / (steps - 1);\n return Math.exp(logMin + (logMax - logMin) * t);\n });\n}\n\nexport function FanoSweepPanel(props: FanoSweepPanelProps) {\n const [maxComplexity, setMaxComplexity] = useState(40);\n const [samplesPerPoint, setSamplesPerPoint] = useState(1000);\n const [runsPerPoint, setRunsPerPoint] = useState(3);\n const [binSize, setBinSize] = useState(1);\n const [subBinSampling, setSubBinSampling] = useState(4);\n const [observationMode, setObservationMode] = useState<'orbit' | 'randomSphere'>('randomSphere');\n const [targetExcess, setTargetExcess] = useState(0.05);\n const [fitStartComplexity, setFitStartComplexity] = useState(10);\n const [runId, setRunId] = useState(0);\n const [points, setPoints] = useState([]);\n const [progress, setProgress] = useState(0);\n const [running, setRunning] = useState(false);\n const wasRunningRef = useRef(false);\n const progressStepRef = useRef(-1);\n\n const playUiHover = () => {\n safePlaySound(props.host, SOUND_IDS.hover, { page: 'fano' });\n };\n\n const playUiClick = (target: string, payload?: Record) => {\n safePlaySound(props.host, SOUND_IDS.click, { page: 'fano', target, ...payload });\n };\n\n useEffect(() => {\n let cancelled = false;\n setPoints([]);\n setProgress(0);\n setRunning(true);\n\n (async () => {\n const nextPoints: SweepPoint[] = [];\n\n for (let c = 1; c <= maxComplexity; c++) {\n if (cancelled) return;\n const point = sampleFanoPoint({\n complexity: c,\n samplesPerPoint,\n runsPerPoint,\n binSize,\n subBinSampling,\n props,\n observationMode,\n seed: 10_000 + c * 97 + runId * 100_003,\n });\n nextPoints.push(point);\n setPoints([...nextPoints]);\n setProgress(c / maxComplexity);\n await new Promise(resolve => setTimeout(resolve, 0));\n }\n\n if (!cancelled) setRunning(false);\n })();\n\n return () => {\n cancelled = true;\n };\n }, [\n maxComplexity,\n samplesPerPoint,\n runsPerPoint,\n binSize,\n subBinSampling,\n observationMode,\n runId,\n props.radius,\n props.distance,\n props.chandraDistance,\n props.allSectors,\n props.cumulative,\n props.theta,\n props.phi,\n props.orbitSpeed,\n props.thetaDrift,\n props.thetaJitter,\n props.phiJitter,\n props.K,\n props.speedup,\n props.usePoisson,\n ]);\n\n useEffect(() => {\n const wasRunning = wasRunningRef.current;\n wasRunningRef.current = running;\n\n if (running && !wasRunning) {\n progressStepRef.current = -1;\n safePlaySound(props.host, SOUND_IDS.computeStart, { page: 'fano' });\n return;\n }\n\n if (!running && wasRunning) {\n safeStopSound(props.host, SOUND_IDS.computeStep, { page: 'fano' });\n safePlaySound(props.host, SOUND_IDS.computeDone, { page: 'fano', points: points.length });\n }\n }, [running, props.host, points.length]);\n\n useEffect(() => {\n if (!running) return;\n const nextProgressStep = Math.floor(progress * 10);\n if (nextProgressStep <= progressStepRef.current) return;\n progressStepRef.current = nextProgressStep;\n safePlaySound(props.host, SOUND_IDS.computeStep, { page: 'fano', progress });\n }, [progress, running, props.host]);\n\n const fit = useMemo(() => fitPowerLaw(points, fitStartComplexity), [points, fitStartComplexity]);\n const floorFit = useMemo(() => fitPowerLawWithFloor(points, fitStartComplexity), [points, fitStartComplexity]);\n const indistinguishableEstimate = useMemo(() => {\n if (!fit || fit.alpha <= 0 || targetExcess <= 0) return null;\n\n if (floorFit && floorFit.B >= targetExcess) {\n return {\n targetExcess,\n requiredLaneCount: Number.POSITIVE_INFINITY,\n measuredCrossing: points.find((p) => p.fanoExcess <= targetExcess) ?? null,\n complexityEstimate: null,\n blockedByFloor: true as const,\n floorExcess: floorFit.B,\n };\n }\n\n const effectiveTarget = floorFit ? Math.max(1e-9, targetExcess - floorFit.B) : targetExcess;\n const effectiveA = floorFit ? floorFit.A : fit.A;\n const effectiveAlpha = floorFit ? floorFit.alpha : fit.alpha;\n const requiredLaneCount = Math.pow(effectiveA / effectiveTarget, 1 / effectiveAlpha);\n if (!Number.isFinite(requiredLaneCount) || requiredLaneCount <= 0) return null;\n\n const measuredCrossing = points.find((p) => p.fanoExcess <= targetExcess) ?? null;\n const complexityEstimate = estimateComplexityFromLaneCount(points, requiredLaneCount);\n\n return {\n targetExcess,\n requiredLaneCount,\n measuredCrossing,\n complexityEstimate,\n blockedByFloor: false as const,\n floorExcess: floorFit?.B ?? 0,\n };\n }, [fit, floorFit, points, targetExcess]);\n\n const plot = useMemo(() => {\n const width = 860;\n const height = 360;\n const margin = { top: 20, right: 20, bottom: 42, left: 48 };\n const innerW = width - margin.left - margin.right;\n const innerH = height - margin.top - margin.bottom;\n const maxX = Math.max(2, maxComplexity);\n const positiveYs = [\n 1,\n ...points.map(p => p.fanoBlue),\n ...points.map(p => p.fanoYellow),\n ...points.map(p => 1 + p.fanoExcess),\n ].filter((v) => Number.isFinite(v) && v > 0);\n const rawYMin = Math.min(...positiveYs);\n const rawYMax = Math.max(...positiveYs);\n const yMin = Math.max(1e-3, Math.min(0.95, rawYMin * 0.95));\n const yMax = Math.max(1.05, rawYMax * 1.05);\n const logMin = Math.log(yMin);\n const logMax = Math.log(yMax);\n\n const xToPx = (x: number) => margin.left + ((x - 1) / (maxX - 1)) * innerW;\n const yToPx = (y: number) => {\n const safeY = Math.min(yMax, Math.max(yMin, y));\n const ly = Math.log(safeY);\n return margin.top + innerH - ((ly - logMin) / Math.max(1e-9, (logMax - logMin))) * innerH;\n };\n const yTicks = buildLogTicks(yMin, yMax);\n\n return { width, height, margin, innerW, innerH, xToPx, yToPx, yMax, yMin, yTicks };\n }, [points, maxComplexity]);\n\n const bluePath = useMemo(\n () => (points.length > 1 ? linePath(points, p => p.fanoBlue, plot.xToPx, plot.yToPx) : ''),\n [points, plot]\n );\n const yellowPath = useMemo(\n () => (points.length > 1 ? linePath(points, p => p.fanoYellow, plot.xToPx, plot.yToPx) : ''),\n [points, plot]\n );\n\n const latest = points.at(-1) ?? null;\n\n return (\n \n \n
\n
\n
\n Fano Sweep\n
\n
\n Goal: show {`Fano(Blue)`} trending toward 1.0 (or toward Yellow) as complexity increases.\n
\n
\n
\n {props.onBack && (\n {\n playUiClick('back-to-simulator');\n props.onBack?.();\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: 'rgba(7,19,11,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '8px 12px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.08em',\n textTransform: 'uppercase',\n }}\n >\n Back To Simulator\n \n )}\n {\n playUiClick('rerun-sweep');\n setRunId(prev => prev + 1);\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: running ? 'rgba(125, 255, 155, 0.14)' : 'rgba(7,19,11,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '8px 12px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.08em',\n textTransform: 'uppercase',\n }}\n >\n {running ? 'Rerun (queued)' : 'Rerun Sweep'}\n \n
\n
\n\n
\n {\n playUiClick('preset-video-demo');\n setObservationMode('randomSphere');\n setMaxComplexity(60);\n setSamplesPerPoint(1200);\n setRunsPerPoint(2);\n setBinSize(1);\n setSubBinSampling(4);\n setFitStartComplexity(12);\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: 'rgba(7,19,11,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '6px 10px',\n borderRadius: 8,\n cursor: 'pointer',\n fontSize: 11,\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.06em',\n }}\n >\n Preset: Video Demo\n \n {\n playUiClick('preset-robust-sweep');\n setObservationMode('randomSphere');\n setMaxComplexity(200);\n setSamplesPerPoint(3000);\n setRunsPerPoint(5);\n setBinSize(1);\n setSubBinSampling(16);\n setFitStartComplexity(40);\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid rgba(125, 255, 155, 0.32)',\n background: 'rgba(2,6,23,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '6px 10px',\n borderRadius: 8,\n cursor: 'pointer',\n fontSize: 11,\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.06em',\n }}\n >\n Preset: Robust Sweep\n \n
\n\n
\n \n \n \n \n \n \n \n \n
\n Progress\n
\n \n
\n
{running ? `Running ${Math.round(progress * 100)}%` : 'Complete'}
\n
\n
\n \n
\n \n \n \n\n {plot.yTicks.map((y, i) => {\n const py = plot.yToPx(y);\n return (\n \n \n {formatYAxisTick(y)}\n \n );\n })}\n\n \n Fano = 1\n\n \n \n\n {Array.from({ length: Math.min(maxComplexity, 10) }, (_, i) => {\n const x = 1 + ((maxComplexity - 1) * i) / Math.max(1, Math.min(maxComplexity - 1, 9));\n const px = plot.xToPx(x);\n return (\n \n \n \n {Math.round(x)}\n \n \n );\n })}\n\n {yellowPath && }\n {bluePath && }\n\n {fit && points.length > 2 && (() => {\n const fitPath = points\n .filter((p) => p.complexity >= fitStartComplexity)\n .map((p, i) => {\n const y = 1 + fit.predictFanoExcessFromLaneCount(p.laneCount);\n return `${i === 0 ? 'M' : 'L'} ${plot.xToPx(p.complexity)} ${plot.yToPx(y)}`;\n })\n .join(' ');\n return ;\n })()}\n\n {floorFit && points.length > 2 && (() => {\n const fitPath = points\n .filter((p) => p.complexity >= fitStartComplexity)\n .map((p, i) => {\n const y = 1 + floorFit.predictFanoExcessFromLaneCount(p.laneCount);\n return `${i === 0 ? 'M' : 'L'} ${plot.xToPx(p.complexity)} ${plot.yToPx(y)}`;\n })\n .join(' ');\n return ;\n })()}\n\n {points.map((p) => (\n \n \n \n \n ))}\n\n \n Complexity\n \n \n Fano Factor (Var / Mean, log scale)\n \n \n
\n\n \n
\n
Legend
\n
Blue: Lightlane Fano
\n
Yellow: Isotropic Fano
\n
Dashed orange: Fano = 1
\n
Dashed blue: power-fit extrapolation (blue excess over yellow)
\n
Dashed cyan: floor-aware fit (B + A×N^-α)
\n
\n\n
\n
Latest Point
\n {latest ? (\n <>\n
Complexity: {latest.complexity}
\n
Lanes: {latest.laneCount}
\n
Mean Ratio (B/Y): {(latest.meanBlue / Math.max(1e-9, latest.meanYellow)).toFixed(3)}
\n
Fano Blue: {latest.fanoBlue.toFixed(3)}
\n
Fano Yellow: {latest.fanoYellow.toFixed(3)}
\n
Excess (B-Y): {latest.fanoExcess.toFixed(3)}
\n
\n Aggregated over {samplesPerPoint.toLocaleString()} bins × {runsPerPoint} seeds\n
\n \n ) : (\n
No points yet.
\n )}\n
\n\n
\n
Power Fit
\n {fit ? (\n <>\n
\n Excess ≈ {fit.A.toExponential(2)} × N-{fit.alpha.toFixed(2)}\n
\n
\n Fit is on blue excess over yellow using lane count N, starting at complexity {fitStartComplexity}.\n
\n \n ) : (\n
Need more points with nonzero excess.
\n )}\n {floorFit && (\n
\n Floor fit: excess ≈ {floorFit.B.toFixed(3)} + {floorFit.A.toExponential(2)} × N-{floorFit.alpha.toFixed(2)}\n
\n )}\n
\n\n
\n
Indistinguishable Target
\n
\n Criterion: Fano Blue - Fano Yellow ≤ {targetExcess.toFixed(3)}\n
\n {indistinguishableEstimate ? (\n <>\n {indistinguishableEstimate.blockedByFloor ? (\n <>\n
\n Floor-aware fit predicts no finite crossing for this threshold.\n
\n
\n Fitted excess floor:{' '}\n \n {indistinguishableEstimate.floorExcess.toFixed(3)}\n \n
\n
\n Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau.\n
\n \n ) : (\n <>\n
\n Required lane count N (fit):{' '}\n \n {Math.round(indistinguishableEstimate.requiredLaneCount).toLocaleString()}\n \n
\n
\n Estimated complexity:{' '}\n \n {indistinguishableEstimate.complexityEstimate\n ? Math.ceil(indistinguishableEstimate.complexityEstimate.complexity).toLocaleString()\n : 'n/a'}\n \n {indistinguishableEstimate.complexityEstimate && (\n \n {' '}\n ({indistinguishableEstimate.complexityEstimate.mode === 'observed-range'\n ? 'interpolated from current sweep'\n : indistinguishableEstimate.complexityEstimate.mode === 'extrapolated'\n ? 'extrapolated'\n : 'bounded by current sweep'})\n \n )}\n
\n \n )}\n
\n {indistinguishableEstimate.measuredCrossing\n ? `Observed crossing already reached at complexity ${indistinguishableEstimate.measuredCrossing.complexity}.`\n : 'No observed crossing yet in current sweep; estimate uses fit.'}\n
\n \n ) : (\n
\n Need a stable excess fit (nonzero blue excess across multiple points).\n
\n )}\n
\n\n
\n Use Random Sphere to isolate discretization convergence from path bias.\n Orbit mode is still useful to show persistent anisotropy on specific trajectories.\n
\n For a stronger/cleaner claim in the video: report the threshold estimate together with bin size, sub-bin sampling, and runs/point.\n
\n
\n If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers.\n
\n
\n
\n
\n
\n \n );\n}\n","import { useMemo, useRef } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport { Color } from 'three';\nimport type { BufferGeometry, Points as ThreePoints, PointsMaterial } from 'three';\n\ntype SparklePoint = {\n speed: number;\n phase: number;\n minBrightness: number;\n maxBoost: number;\n};\n\nconst sparkleColor = new Color('#dbeafe');\n\nfunction createSparkleField(radius: number, count: number) {\n const positions = new Float32Array(count * 3);\n const colors = new Float32Array(count * 3);\n const sparklePoints: SparklePoint[] = [];\n const shellRadius = radius + 0.01;\n\n for (let index = 0; index < count; index += 1) {\n const u = Math.random();\n const v = Math.random();\n const theta = 2 * Math.PI * u;\n const z = 1 - 2 * v;\n const radial = Math.sqrt(Math.max(0, 1 - z * z));\n const offset = index * 3;\n\n positions[offset] = shellRadius * radial * Math.cos(theta);\n positions[offset + 1] = shellRadius * radial * Math.sin(theta);\n positions[offset + 2] = shellRadius * z;\n\n colors[offset] = sparkleColor.r * 0.15;\n colors[offset + 1] = sparkleColor.g * 0.15;\n colors[offset + 2] = sparkleColor.b * 0.15;\n\n sparklePoints.push({\n speed: 0.8 + Math.random() * 2.6,\n phase: Math.random() * Math.PI * 2,\n minBrightness: 0.03 + Math.random() * 0.06,\n maxBoost: 0.35 + Math.random() * 0.85,\n });\n }\n\n return { positions, colors, sparklePoints };\n}\n\nexport function PoissonShell({ radius }: { radius: number }) {\n const sparkleRef = useRef>(null);\n const sparkleCount = 16000;\n const { positions, colors, sparklePoints } = useMemo(\n () => createSparkleField(radius, sparkleCount),\n [radius]\n );\n\n useFrame(({ clock }) => {\n const sparkleCloud = sparkleRef.current;\n if (!sparkleCloud) return;\n\n const colorAttribute = sparkleCloud.geometry.getAttribute('color');\n if (!colorAttribute) return;\n\n const time = clock.getElapsedTime();\n const colorArray = colorAttribute.array as Float32Array;\n\n for (let index = 0; index < sparklePoints.length; index += 1) {\n const point = sparklePoints[index];\n const pulse = Math.pow(Math.max(0, Math.sin(time * point.speed + point.phase)), 24);\n const intensity = point.minBrightness + pulse * point.maxBoost;\n const offset = index * 3;\n\n colorArray[offset] = sparkleColor.r * intensity;\n colorArray[offset + 1] = sparkleColor.g * intensity;\n colorArray[offset + 2] = sparkleColor.b * intensity;\n }\n\n colorAttribute.needsUpdate = true;\n });\n\n return (\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n );\n}\n","import { useRef } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport { MeshStandardMaterial } from 'three';\n\ninterface PulsingSphereProps {\n radius: number;\n paused?: boolean;\n}\n\nexport function PulsingSphere({ radius, paused = false }: PulsingSphereProps) {\n const materialRef = useRef(null);\n\n useFrame((state) => {\n if (paused) return;\n if (materialRef.current) {\n // Pulse emissive intensity between 0.5 and 2.0\n // Sine wave from -1 to 1 -> mapped to 0.5 to 2.0\n // (sin + 1) / 2 is 0 to 1.\n // 0.5 + (0 -> 1) * 1.5 = 0.5 to 2.0\n const t = state.clock.elapsedTime * 3; // Speed\n const intensity = 0.5 + ((Math.sin(t) + 1) / 2) * 1.5;\n materialRef.current.emissiveIntensity = intensity;\n }\n });\n\n return (\n \n \n \n \n );\n}\n","import { useRef, type MutableRefObject } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport * as THREE from 'three';\n\nfunction reflectPolarTheta(theta: number): number {\n const twoPi = 2 * Math.PI;\n let t = theta % twoPi;\n if (t < 0) t += twoPi;\n if (t > Math.PI) t = twoPi - t;\n return t;\n}\n\ninterface OrbitingObjectProps {\n radius: number; // This corresponds to 'distance' from center\n theta: number; // Polar angle (0 to PI)\n phi: number; // Azimuthal angle (0 to 2PI)\n orbitTime: MutableRefObject; // Accumulated orbit time ref\n simTime?: MutableRefObject;\n thetaDrift?: number;\n paused?: boolean;\n}\n\nexport function OrbitingObject({ radius, theta, phi, orbitTime, simTime, thetaDrift = 0, paused = false }: OrbitingObjectProps) {\n const groupRef = useRef(null);\n\n useFrame(() => {\n if (paused) return;\n if (groupRef.current) {\n // Calculate position using spherical coordinates\n // Three.js uses Y-up, so usually:\n // Use passed accumulated time from ref\n const currentPhi = phi + orbitTime.current;\n const currentTheta = reflectPolarTheta(theta + (simTime?.current ?? 0) * thetaDrift);\n\n const x = radius * Math.sin(currentTheta) * Math.cos(currentPhi);\n const y = radius * Math.cos(currentTheta);\n const z = radius * Math.sin(currentTheta) * Math.sin(currentPhi);\n\n groupRef.current.position.set(x, y, z);\n\n // Orient towards center\n groupRef.current.lookAt(0, 0, 0);\n }\n });\n\n return (\n \n {/* Sampling point cue (engine uses the group origin as the camera/sample position) */}\n \n \n \n \n \n \n \n \n\n {/* Main Body - Cylindrical Telescope - Aligned to Z axis */}\n \n \n \n \n\n {/* Short forward octagonal gold collar */}\n \n \n \n \n\n {/* Front Aperture - Wider - At +Z end */}\n \n \n \n \n {/* Aperture center cue for visual alignment checks */}\n \n \n \n \n {/* Local +Z axis cue (helps spot orientation / offset issues) */}\n \n \n \n \n\n {/* Solar Panels - shifted forward toward the star-facing end */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { useState, useMemo, useRef, useEffect } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport { Html } from '@react-three/drei';\n\nimport { createSamplingSimulation, lambdaIsotropicForGeometry } from './lightlane-engine.js';\nimport { SOUND_IDS, safePlaySound } from '../hostBridge';\nimport type { GlitchHostBridge, SceneViewMode } from '../types';\n\n// Flying bar animation component\ninterface FlyingBar {\n id: number;\n value: number;\n startBottom: number; // Distance from bottom of viewport\n startLeft: number; // Distance from left of viewport\n barHeight: number;\n barWidth: number;\n targetLeft: number; // Target X position in distribution\n targetTop: number; // Target Y position (from top of viewport)\n color: string;\n type: 'observed' | 'theory';\n}\n\nconst poissonPalette = {\n solid: '#60a5fa',\n dark: '#3b82f6',\n light: '#93c5fd',\n glow: 'rgba(96,165,250,0.5)',\n panel: 'rgba(0,20,40,0.8)',\n};\n\nconst lightlanePalette = {\n solid: '#fbbf24',\n dark: '#f59e0b',\n light: '#fef3c7',\n glow: 'rgba(251,191,36,0.5)',\n panel: 'rgba(40,20,0,0.8)',\n};\n\nconst headlineFont = 'var(--font-headline)';\nconst uiFont = 'var(--font-ui)';\nconst terminalGreen = 'var(--terminal-green)';\nconst terminalGreenSoft = 'var(--terminal-green-soft)';\nconst terminalGreenMuted = 'var(--terminal-green-muted)';\n\nfunction FlyingBars({ bars }: { bars: FlyingBar[] }) {\n const screenHeight = window.innerHeight;\n // const screenWidth = window.innerWidth;\n\n return (\n <>\n {bars.map((bar) => {\n // Convert bottom to top positioning\n // startBottom is distance from bottom, so top = screenHeight - startBottom - barHeight\n const startTop = screenHeight - bar.startBottom - bar.barHeight;\n\n const deltaX = bar.targetLeft - bar.startLeft;\n const deltaY = bar.targetTop - startTop; // negative = move up\n\n return (\n \n );\n })}\n \n \n );\n}\n\ninterface RunningMoments {\n n: number;\n meanObs: number;\n m2Obs: number;\n meanIso: number;\n m2Iso: number;\n}\n\nfunction createEmptyMoments(): RunningMoments {\n return { n: 0, meanObs: 0, m2Obs: 0, meanIso: 0, m2Iso: 0 };\n}\n\nfunction updateMoments(m: RunningMoments, observed: number, isotropic: number): RunningMoments {\n const nextN = m.n + 1;\n\n const deltaObs = observed - m.meanObs;\n const meanObs = m.meanObs + deltaObs / nextN;\n const m2Obs = m.m2Obs + deltaObs * (observed - meanObs);\n\n const deltaIso = isotropic - m.meanIso;\n const meanIso = m.meanIso + deltaIso / nextN;\n const m2Iso = m.m2Iso + deltaIso * (isotropic - meanIso);\n\n return { n: nextN, meanObs, m2Obs, meanIso, m2Iso };\n}\n\ninterface SamplingSystemProps {\n complexity: number;\n radius: number; // Lightlane radius (collision threshold)\n distance: number; // Visual lightlane cylinder length\n theta: number;\n phi: number;\n observationMode: 'orbit' | 'randomSphere';\n allSectors: boolean;\n cumulative: boolean;\n K: number; // Poisson constant\n orbitRadius: number; // Satellite orbit radius\n orbitVelocity: number;\n thetaDrift: number;\n thetaJitter: number;\n phiJitter: number;\n usePoisson: boolean;\n speedup: number; // Time speedup factor\n paused: boolean;\n sceneView: SceneViewMode;\n bottomInset?: number;\n showNumericDiagnostics?: boolean;\n compactNumericDiagnostics?: boolean;\n host?: GlitchHostBridge;\n centerDistribution?: boolean;\n hideFlyingBars?: boolean;\n}\n\nexport function SamplingSystem({\n complexity,\n radius,\n distance,\n theta,\n phi,\n observationMode,\n allSectors,\n cumulative,\n K,\n orbitRadius,\n orbitVelocity,\n thetaDrift,\n thetaJitter,\n phiJitter,\n usePoisson,\n speedup,\n paused,\n sceneView,\n bottomInset = 0,\n showNumericDiagnostics = true,\n compactNumericDiagnostics = false,\n host,\n centerDistribution = false,\n hideFlyingBars = false\n}: SamplingSystemProps) {\n const [stats, setStats] = useState({\n current: 0,\n total: 0,\n lastCheck: 0,\n overlaps: 0,\n currentTheory: 0,\n binOverlapsMean: 0,\n currentExpectedLightlane: 0\n });\n const subBinSamples = 4;\n const simulator = useMemo(() => createSamplingSimulation({\n D: orbitRadius,\n theta,\n phi,\n observationMode,\n velocity: orbitVelocity,\n thetaDrift,\n thetaJitter,\n phiJitter,\n distance,\n hitTestModel: 'segment',\n bin_size: 1,\n complexity,\n sub_bin_sampling: subBinSamples,\n flux: K,\n lane_radius: radius,\n allSectors,\n cumulative,\n usePoisson\n }), [orbitRadius, theta, phi, observationMode, orbitVelocity, thetaDrift, thetaJitter, phiJitter, complexity, K, radius, distance, allSectors, cumulative, usePoisson]);\n\n // Fixed size buffer for display\n const bufferSize = 60;\n const historyRef = useRef(new Array(bufferSize).fill(-1));\n const historyTheoryRef = useRef(new Array(bufferSize).fill(-1));\n const currentIndexRef = useRef(0);\n const [history, setHistory] = useState(new Array(bufferSize).fill(-1));\n const [historyTheory, setHistoryTheory] = useState(new Array(bufferSize).fill(-1));\n\n // Calculate expected lambda (mean) from theory: K * r² / (4 * d²)\n const lambdaMean = lambdaIsotropicForGeometry({\n flux: K,\n D: orbitRadius,\n lane_radius: radius,\n dt: 1,\n hitTestModel: 'segment',\n lane_length: distance\n });\n const lambdaStdDev = Math.sqrt(lambdaMean);\n\n // Distribution binning:\n // - Poisson mode: integer-aligned bins (one photon count per bin) to avoid quantization artifacts\n // - Deterministic mode: coarse continuous bins for readability\n const distributionBinsContinuous = 15;\n const binRangeHalf = 4 * lambdaStdDev;\n const binMin = Math.max(0, lambdaMean - binRangeHalf);\n const binMax = lambdaMean + binRangeHalf;\n const useDiscreteCountBins = usePoisson;\n const discreteBinMin = Math.max(0, Math.floor(binMin));\n const discreteBinMax = Math.max(discreteBinMin, Math.ceil(binMax));\n const distributionBins = useDiscreteCountBins\n ? (discreteBinMax - discreteBinMin + 1)\n : distributionBinsContinuous;\n const binWidth = useDiscreteCountBins\n ? 1\n : Math.max(1e-9, (binMax - binMin) / distributionBinsContinuous);\n\n // Helper to convert a count value to a bin index\n const valueToBinIndex = (value: number): number => {\n if (useDiscreteCountBins) {\n const k = Math.round(value);\n if (k <= discreteBinMin) return 0;\n if (k >= discreteBinMax) return distributionBins - 1;\n return k - discreteBinMin;\n }\n\n if (value < binMin) return 0;\n if (value >= binMax) return distributionBins - 1;\n return Math.floor((value - binMin) / binWidth);\n };\n\n // Helper to get the center value of a bin (for display)\n const binIndexToValue = (index: number): number => {\n if (useDiscreteCountBins) return discreteBinMin + index;\n return binMin + (index + 0.5) * binWidth;\n };\n\n const [distributionObserved, setDistributionObserved] = useState(new Array(distributionBins).fill(0));\n const [distributionTheory, setDistributionTheory] = useState(new Array(distributionBins).fill(0));\n\n // Track which bars have been unfastened (clicked)\n const [unfastenedObserved, setUnfastenedObserved] = useState>(new Set());\n const [unfastenedTheory, setUnfastenedTheory] = useState>(new Set());\n\n // Flying bars state\n const [flyingBars, setFlyingBars] = useState([]);\n const flyingBarIdRef = useRef(0);\n const summaryRef = useRef(createEmptyMoments());\n const [summary, setSummary] = useState(createEmptyMoments());\n const pausedRef = useRef(paused);\n const lastBarSoundAtRef = useRef(0);\n\n // Reset all counting when complexity or mean-affecting parameters change\n // (K, radius, orbitRadius affect lambdaMean which determines bin ranges)\n useEffect(() => {\n // Reset distribution histograms\n setDistributionObserved(new Array(distributionBins).fill(0));\n setDistributionTheory(new Array(distributionBins).fill(0));\n\n // Reset periodogram buffers\n historyRef.current.fill(-1);\n historyTheoryRef.current.fill(-1);\n currentIndexRef.current = 0;\n setHistory(new Array(bufferSize).fill(-1));\n setHistoryTheory(new Array(bufferSize).fill(-1));\n\n // Reset unfastened tracking\n setUnfastenedObserved(new Set());\n setUnfastenedTheory(new Set());\n\n // Clear flying bars\n setFlyingBars([]);\n summaryRef.current = createEmptyMoments();\n setSummary(createEmptyMoments());\n setStats({\n current: 0,\n total: 0,\n lastCheck: 0,\n overlaps: 0,\n currentTheory: 0,\n binOverlapsMean: 0,\n currentExpectedLightlane: 0\n });\n }, [complexity, K, radius, distance, orbitRadius, theta, phi, observationMode, orbitVelocity, thetaDrift, thetaJitter, phiJitter, allSectors, cumulative, usePoisson, distributionBins]);\n\n const ingestBins = (bins: Array<{\n lightlane: number;\n isotropic: number;\n overlapsMean: number;\n lambdaLightlaneExpected: number;\n }>, lastLaneCount: number) => {\n if (bins.length === 0) return;\n\n let totalObservedAdded = 0;\n let lastObserved = 0;\n let lastTheory = 0;\n let lastBinOverlapsMean = stats.binOverlapsMean;\n let lastExpectedLightlane = stats.currentExpectedLightlane;\n let nextSummary = summaryRef.current;\n\n for (const bin of bins) {\n const observed = bin.lightlane;\n const observedTheory = bin.isotropic;\n totalObservedAdded += observed;\n lastObserved = observed;\n lastTheory = observedTheory;\n lastBinOverlapsMean = bin.overlapsMean;\n lastExpectedLightlane = bin.lambdaLightlaneExpected;\n nextSummary = updateMoments(nextSummary, observed, observedTheory);\n\n historyRef.current[currentIndexRef.current] = observed;\n historyTheoryRef.current[currentIndexRef.current] = observedTheory;\n currentIndexRef.current++;\n\n if (currentIndexRef.current >= bufferSize) {\n const currentMaxVal = Math.max(10, ...historyRef.current.filter(v => v >= 0), ...historyTheoryRef.current.filter(v => v >= 0));\n autoAccumulateRow([...historyRef.current], [...historyTheoryRef.current], currentMaxVal);\n\n historyRef.current.fill(-1);\n historyTheoryRef.current.fill(-1);\n currentIndexRef.current = 0;\n setUnfastenedObserved(new Set());\n setUnfastenedTheory(new Set());\n }\n }\n summaryRef.current = nextSummary;\n\n setStats(prev => ({\n current: lastObserved,\n total: prev.total + totalObservedAdded,\n lastCheck: Date.now(),\n overlaps: lastLaneCount,\n currentTheory: lastTheory,\n binOverlapsMean: lastBinOverlapsMean,\n currentExpectedLightlane: lastExpectedLightlane\n }));\n setSummary(nextSummary);\n setHistory([...historyRef.current]);\n setHistoryTheory([...historyTheoryRef.current]);\n };\n\n // Swipe state for unfastening multiple bars\n const isDraggingRef = useRef(false);\n const dragTypeRef = useRef<'observed' | 'theory' | null>(null);\n\n // Handle swipe/drag to unfasten multiple bars\n const handlePointerDown = (e: React.PointerEvent, type: 'observed' | 'theory') => {\n e.stopPropagation();\n isDraggingRef.current = true;\n dragTypeRef.current = type;\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n safePlaySound(host, SOUND_IDS.click, { target: `${type}-periodogram`, action: 'pointer-down' });\n };\n\n const handlePointerMove = (e: React.PointerEvent, type: 'observed' | 'theory', historyData: number[], maxValue: number) => {\n if (!isDraggingRef.current || dragTypeRef.current !== type) return;\n e.stopPropagation();\n\n // Calculate which bar index we're over\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const x = e.clientX - rect.left;\n const barIndex = Math.floor((x / rect.width) * bufferSize);\n\n if (barIndex >= 0 && barIndex < bufferSize) {\n const val = historyData[barIndex];\n const isUnfastened = type === 'observed' ? unfastenedObserved.has(barIndex) : unfastenedTheory.has(barIndex);\n if (val >= 0 && !isUnfastened) {\n handleBarClick(barIndex, val, type, maxValue);\n }\n }\n };\n\n const handlePointerUp = (e: React.PointerEvent) => {\n e.stopPropagation();\n isDraggingRef.current = false;\n dragTypeRef.current = null;\n };\n\n // Calculate bar dimensions for flying animation\n const getBarDimensions = (index: number, value: number, type: 'observed' | 'theory', maxValue: number) => {\n const screenWidth = window.innerWidth;\n // const screenHeight = window.innerHeight;\n\n // Starting X position: (index / bufferSize) * screenWidth\n const startLeft = (index / bufferSize) * screenWidth;\n\n // Bar width\n const barWidth = screenWidth / bufferSize;\n\n // Bar height based on value\n const barHeight = Math.max(2, (value / maxValue) * 80);\n\n // Starting position from BOTTOM of viewport\n // Observed histogram: 100px container at very bottom with 20px padding\n // Theory histogram: 100px container above observed with 5px padding\n // Bars are aligned to bottom of their containers\n const observedBottom = 25; // within observed container\n const theoryBottom = 110; // within theory container (100px + some padding)\n const startBottom = type === 'observed' ? observedBottom : theoryBottom;\n\n // Bin index using the centered distribution mapping\n const binIndex = valueToBinIndex(value);\n\n // Target X position: place at the bin's visual position in the distribution histogram\n // The histogram spans the full width with distributionBins bins\n // Account for padding (20px on each side)\n const histogramPadding = 20;\n const histogramWidth = screenWidth - (2 * histogramPadding);\n const targetLeft = histogramPadding + ((binIndex + 0.5) / distributionBins) * histogramWidth;\n\n // Target Y position (from TOP of viewport) - aim for distribution area\n const targetTop = 150;\n\n return { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop, binIndex };\n };\n\n // Handle clicking on a bar to unfasten it\n const handleBarClick = (index: number, value: number, type: 'observed' | 'theory', maxValue: number) => {\n if (value < 0) return; // Don't unfasten empty slots\n\n const now = Date.now();\n if (now - lastBarSoundAtRef.current >= 45) {\n lastBarSoundAtRef.current = now;\n safePlaySound(host, SOUND_IDS.computeStep, { target: `${type}-periodogram`, value });\n }\n\n const { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop } = getBarDimensions(index, value, type, maxValue);\n\n // Create flying bar\n const newBar: FlyingBar = {\n id: flyingBarIdRef.current++,\n value,\n startLeft,\n startBottom,\n barHeight,\n barWidth,\n targetLeft,\n targetTop,\n color: type === 'observed' ? lightlanePalette.solid : poissonPalette.solid,\n type\n };\n\n setFlyingBars(prev => [...prev, newBar]);\n\n // Mark bar as unfastened\n if (type === 'observed') {\n setUnfastenedObserved(prev => new Set(prev).add(index));\n // Update distribution using centered binning\n setDistributionObserved(prev => {\n const newDist = [...prev];\n const binIdx = valueToBinIndex(value);\n newDist[binIdx]++;\n return newDist;\n });\n } else {\n setUnfastenedTheory(prev => new Set(prev).add(index));\n // Update distribution using centered binning\n setDistributionTheory(prev => {\n const newDist = [...prev];\n const binIdx = valueToBinIndex(value);\n newDist[binIdx]++;\n return newDist;\n });\n }\n };\n\n // Auto-accumulate entire row when buffer fills\n const autoAccumulateRow = (historyData: number[], theoryData: number[], maxValue: number) => {\n const newFlyingBars: FlyingBar[] = [];\n const newDistObserved = [...distributionObserved];\n const newDistTheory = [...distributionTheory];\n\n // Process observed bars\n historyData.forEach((val, i) => {\n if (val >= 0) {\n const { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop, binIndex } = getBarDimensions(i, val, 'observed', maxValue);\n newFlyingBars.push({\n id: flyingBarIdRef.current++,\n value: val,\n startLeft,\n startBottom,\n barHeight,\n barWidth,\n targetLeft,\n targetTop,\n color: lightlanePalette.solid,\n type: 'observed'\n });\n newDistObserved[binIndex]++;\n }\n });\n\n // Process theory bars\n theoryData.forEach((val, i) => {\n if (val >= 0) {\n const { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop, binIndex } = getBarDimensions(i, val, 'theory', maxValue);\n newFlyingBars.push({\n id: flyingBarIdRef.current++,\n value: val,\n startLeft,\n startBottom,\n barHeight,\n barWidth,\n targetLeft,\n targetTop,\n color: poissonPalette.solid,\n type: 'theory'\n });\n newDistTheory[binIndex]++;\n }\n });\n\n setFlyingBars(prev => [...prev, ...newFlyingBars]);\n setDistributionObserved(newDistObserved);\n setDistributionTheory(newDistTheory);\n };\n\n // Clean up flying bars after animation completes\n useEffect(() => {\n if (flyingBars.length > 0) {\n const timer = setTimeout(() => {\n setFlyingBars([]);\n }, 1300); // Clear after animation duration (1.2s) + buffer\n return () => clearTimeout(timer);\n }\n }, [flyingBars.length]); // Only trigger on length change to avoid infinite loops\n\n // Reset unfastened state when buffer resets\n const prevIndexRef = useRef(0);\n useEffect(() => {\n if (currentIndexRef.current < prevIndexRef.current) {\n // Buffer was reset\n setUnfastenedObserved(new Set());\n setUnfastenedTheory(new Set());\n }\n prevIndexRef.current = currentIndexRef.current;\n });\n useEffect(() => {\n const wasPaused = pausedRef.current;\n pausedRef.current = paused;\n if (!paused || wasPaused) return;\n\n const flushed = simulator.flushPartialBin();\n if (flushed) {\n ingestBins([flushed], flushed.overlaps);\n }\n }, [paused, simulator]);\n\n useFrame((_, delta) => {\n if (paused) return;\n const step = simulator.simulate(delta * speedup);\n\n if (step.subBinEvents > 0) {\n setStats(prev => ({ ...prev, overlaps: step.lastLaneCount }));\n }\n\n ingestBins(step.bins, step.lastLaneCount);\n });\n\n // Calculate max ignoring -1 placeholders\n const validValues = history.filter(v => v >= 0);\n const validValuesTheory = historyTheory.filter(v => v >= 0);\n const maxValLightlane = Math.max(10, Math.max(0, ...validValues));\n const maxValPoisson = Math.max(10, Math.max(0, ...validValuesTheory));\n // Distribution max for scaling\n const maxDistribution = Math.max(1, ...distributionObserved, ...distributionTheory);\n const observedVariance = summary.n > 1 ? summary.m2Obs / (summary.n - 1) : 0;\n const isotropicVariance = summary.n > 1 ? summary.m2Iso / (summary.n - 1) : 0;\n const meanRatio = summary.meanIso > 0 ? summary.meanObs / summary.meanIso : 0;\n const varianceRatio = isotropicVariance > 0 ? observedVariance / isotropicVariance : 0;\n const fanoObserved = summary.meanObs > 0 ? observedVariance / summary.meanObs : 0;\n const fanoIsotropic = summary.meanIso > 0 ? isotropicVariance / summary.meanIso : 0;\n const laneCount = simulator.getLaneCount();\n const lcIsoTarget = laneCount > 0 && K > 0 ? (laneCount * lambdaMean) / K : 0;\n const renderNumericInline = showNumericDiagnostics && !compactNumericDiagnostics;\n const showPoissonView = sceneView !== 'lightlane';\n const showLightlaneView = sceneView !== 'poisson';\n const visibleFlyingBars = flyingBars.filter((bar) => (\n (bar.type === 'theory' && showPoissonView) || (bar.type === 'observed' && showLightlaneView)\n ));\n const distributionTitle = sceneView === 'poisson'\n ? 'Shot Noise Distribution'\n : sceneView === 'lightlane'\n ? 'Shot Noise + Lightlane'\n : 'Head to Head';\n\n const metricCardBase: React.CSSProperties = {\n background: 'rgba(255,255,255,0.04)',\n border: '1px solid var(--terminal-panel-border)',\n borderRadius: '6px',\n padding: '6px 8px',\n fontFamily: uiFont\n };\n\n const numericCards = (\n
\n
\n
Samples
\n
{summary.n}
\n
\n
\n
Mean Ratio (Lightlane/Poisson)
\n
{summary.n > 0 ? meanRatio.toFixed(3) : 'n/a'}
\n
\n
\n
Var Ratio (Lightlane/Poisson)
\n
1.1 ? lightlanePalette.light : poissonPalette.light }}>\n {summary.n > 1 ? varianceRatio.toFixed(3) : 'n/a'}\n
\n
\n
\n
Fano Lightlane
\n
\n {summary.n > 1 ? fanoObserved.toFixed(3) : 'n/a'}\n
\n
\n
\n
Fano Poisson
\n
\n {summary.n > 1 ? fanoIsotropic.toFixed(3) : 'n/a'}\n
\n
\n
\n
Fano Ratio (Lightlane/Poisson)
\n
0 && fanoObserved / fanoIsotropic > 1.05 ? lightlanePalette.light : terminalGreenSoft }}>\n {summary.n > 1 && fanoIsotropic > 0 ? (fanoObserved / fanoIsotropic).toFixed(3) : 'n/a'}\n
\n
\n
\n );\n\n const numericContext = (\n
\n LC(now): {stats.overlaps}\n LC(bin avg): {stats.binOverlapsMean.toFixed(2)}\n LC iso target: {Number.isFinite(lcIsoTarget) ? lcIsoTarget.toFixed(2) : 'n/a'}\n E[Lightlane|bin]: {stats.currentExpectedLightlane.toFixed(2)}\n Lightlane(last): {typeof stats.current === 'number' ? Number(stats.current).toFixed(2) : stats.current}\n Lanes: {laneCount}\n Mode: {observationMode === 'randomSphere' ? 'Random Sphere' : 'Orbit'}\n theta drift: {thetaDrift.toFixed(3)}\n theta jitter: {thetaJitter.toFixed(3)}\n phi jitter: {phiJitter.toFixed(3)}\n
\n );\n\n return (\n <>\n {/* Flying bars animation */}\n {!hideFlyingBars && (\n \n \n \n )}\n\n {/* Distribution Histogram at Top */}\n \n
\n {distributionTitle}\n \n (λ = {lambdaMean.toFixed(1)}, σ = {lambdaStdDev.toFixed(1)})\n \n
\n
\n {/* Y-axis label */}\n
\n ← Frequency (how many)\n
\n
\n {distributionObserved.map((count, i) => {\n const theoryCount = distributionTheory[i];\n const obsHeight = (count / maxDistribution) * 100;\n const theoryHeight = (theoryCount / maxDistribution) * 100;\n\n return (\n
\n
\n {showPoissonView && (\n
0 ? '2px' : '0',\n transition: 'height 0.3s ease',\n boxShadow: theoryCount > 0 ? `0 0 5px ${poissonPalette.glow}` : 'none',\n position: 'relative'\n }}>\n {theoryCount > 0 && (\n
\n {theoryCount}\n
\n )}\n
\n )}\n {showLightlaneView && (\n
0 ? '2px' : '0',\n transition: 'height 0.3s ease',\n boxShadow: count > 0 ? `0 0 5px ${lightlanePalette.glow}` : 'none',\n position: 'relative'\n }}>\n {count > 0 && (\n
\n {count}\n
\n )}\n
\n )}\n
\n {/* Bin label (photon count value - center of bin) */}\n
\n {binIndexToValue(i).toFixed(0)}\n
\n
\n );\n })}\n
\n {/* X-axis label */}\n
\n Photon Count Value →\n
\n
\n {showPoissonView && (\n
\n
\n Theory (Poisson)\n
\n )}\n {showLightlaneView && (\n
\n
\n Observed (Lightlanes)\n
\n )}\n
\n {renderNumericInline && numericCards}\n {renderNumericInline && numericContext}\n
\n \n\n {showNumericDiagnostics && compactNumericDiagnostics && (\n \n
\n
\n Diagnostics\n
\n {numericCards}\n {numericContext}\n
\n \n )}\n\n {/* Periodogram Histograms at Bottom of Screen */}\n \n {showPoissonView && (\n handlePointerDown(e, 'theory')}\n onPointerMove={(e) => handlePointerMove(e, 'theory', historyTheory, maxValPoisson)}\n onPointerUp={handlePointerUp}\n onPointerLeave={handlePointerUp}\n style={{\n width: '100%',\n height: '100px',\n background: `linear-gradient(to top, ${poissonPalette.panel}, transparent)`,\n display: 'flex',\n alignItems: 'flex-end',\n padding: showLightlaneView ? '0 20px 5px 20px' : '0 20px 20px 20px',\n gap: '2px',\n position: 'relative',\n borderBottom: showLightlaneView ? '1px solid #555' : 'none',\n pointerEvents: 'auto',\n touchAction: 'none',\n cursor: 'crosshair'\n }}\n >\n
\n THEORY (Poisson) - Swipe or click to count\n
\n {historyTheory.map((val, i) => {\n const isUnfastened = unfastenedTheory.has(i);\n return (\n = 0 && !isUnfastened ? 'clickable-bar' : ''}\n style={{\n flex: 1,\n height: val >= 0 && !isUnfastened ? `${(val / maxValPoisson) * 100}%` : '0',\n background: val === 0 ? 'rgba(255,255,255,0.1)' : poissonPalette.solid,\n color: poissonPalette.solid,\n minHeight: val >= 0 && !isUnfastened ? '1px' : '0',\n transition: 'all 0.3s ease',\n opacity: isUnfastened ? 0 : 0.8,\n borderRadius: '2px 2px 0 0',\n transform: isUnfastened ? 'scale(0)' : 'scale(1)',\n pointerEvents: 'none',\n }}\n />\n );\n })}\n
\n Max: {maxValPoisson}\n
\n
\n )}\n\n {showLightlaneView && (\n handlePointerDown(e, 'observed')}\n onPointerMove={(e) => handlePointerMove(e, 'observed', history, maxValLightlane)}\n onPointerUp={handlePointerUp}\n onPointerLeave={handlePointerUp}\n style={{\n width: '100%',\n height: '100px',\n background: 'linear-gradient(to top, rgba(0,0,0,0.8), transparent)',\n display: 'flex',\n alignItems: 'flex-end',\n padding: '0 20px 20px 20px',\n gap: '2px',\n position: 'relative',\n pointerEvents: 'auto',\n touchAction: 'none',\n cursor: 'crosshair'\n }}\n >\n
\n OBSERVED (Lightlanes) - Swipe or click to count\n
\n {history.map((val, i) => {\n const isUnfastened = unfastenedObserved.has(i);\n return (\n = 0 && !isUnfastened ? 'clickable-bar' : ''}\n style={{\n flex: 1,\n height: val >= 0 && !isUnfastened ? `${(val / maxValLightlane) * 100}%` : '0',\n background: val === 0 ? 'rgba(255,255,255,0.1)' : (val > 0 ? lightlanePalette.solid : 'transparent'),\n color: lightlanePalette.solid,\n minHeight: val >= 0 && !isUnfastened ? '2px' : '0',\n transition: 'all 0.3s ease',\n borderTop: val >= 0 && !isUnfastened ? `2px solid ${lightlanePalette.light}` : 'none',\n opacity: isUnfastened ? 0 : 0.8,\n position: 'relative',\n borderRadius: '2px 2px 0 0',\n transform: isUnfastened ? 'scale(0)' : 'scale(1)',\n pointerEvents: 'none',\n }}\n >\n {(i + 1) % 5 === 0 && !isUnfastened && (\n
\n {i + 1}\n
\n )}\n
\n );\n })}\n
\n Max: {maxValLightlane}\n
\n
\n )}\n \n \n );\n}\n","\nexport type SceneViewMode = 'both' | 'poisson' | 'lightlane';\n\nexport interface LightlaneProps {\n complexity?: number;\n radius?: number;\n distance?: number;\n chandraDistance?: number;\n showAxes?: boolean;\n lightlanes?: boolean;\n allSectors?: boolean;\n cumulative?: boolean;\n phi?: number;\n theta?: number;\n observationMode?: 'orbit' | 'randomSphere';\n orbitSpeed?: number;\n thetaDrift?: number;\n thetaJitter?: number;\n phiJitter?: number;\n speedup?: number;\n K?: number;\n usePoisson?: boolean;\n sceneView?: SceneViewMode;\n hideScenePresentation?: boolean;\n hideFlyingBars?: boolean;\n hideDataBoxes?: boolean;\n}\n\nexport const defaultProps: Required = {\n complexity: 1,\n radius: 2,\n distance: 5,\n chandraDistance: 6,\n showAxes: false, // Cleaner look for challenge\n lightlanes: true, // Always show lightlanes\n allSectors: true,\n cumulative: false,\n phi: 0,\n theta: Math.PI / 2,\n observationMode: 'orbit',\n orbitSpeed: 0.2,\n thetaDrift: 0,\n thetaJitter: 0,\n phiJitter: 0,\n speedup: 1,\n K: 1000,\n usePoisson: true,\n sceneView: 'both',\n hideScenePresentation: false,\n hideFlyingBars: false,\n hideDataBoxes: false\n};\n\nexport interface GlitchComponentConfig {\n id: string;\n name: string;\n version: string;\n params: Record;\n}\n\nexport interface GlitchHostBridge {\n playSound?: (id: string, payload?: Record) => void;\n stopSound?: (id: string, payload?: Record) => void;\n emit?: (type: string, payload?: unknown) => void;\n}\n\nexport interface GlitchTheme {\n primary: string; // #6366f1\n accent: string; // #22d3ee\n bg: string; // #0a0a0f\n bgSecondary: string; // #12121a\n text: string; // #e8e8ec\n textMuted: string; // #9999a8\n border: string; // #2a2a3a\n}\n\nexport interface GlitchComponentResult {\n success: boolean;\n score?: number;\n data?: unknown;\n error?: string;\n}\n\nexport interface GlitchComponentProps {\n config: GlitchComponentConfig;\n onComplete: (result: GlitchComponentResult) => void;\n onProgress?: (percent: number) => void;\n theme?: GlitchTheme;\n className?: string;\n host?: GlitchHostBridge;\n}\n\nexport interface ParamSchema {\n [key: string]: {\n type: 'number' | 'string' | 'boolean' | 'color' | 'select' | 'range';\n label?: string;\n description?: string;\n default: unknown;\n options?: { value: string | number; label: string }[];\n min?: number;\n max?: number;\n step?: number;\n };\n}\n\nexport interface GlitchComponentMetadata {\n name: string;\n displayName: string;\n version: string;\n paramSchema: ParamSchema;\n defaultParams: Record;\n}\n","import { useEffect, useRef, useState } from 'react'\nimport { useFrame } from '@react-three/fiber'\nimport { Grid, Html } from '@react-three/drei'\nimport { DiophantineVectors } from './components/DiophantineVectors'\nimport { FanoSweepPanel } from './components/FanoSweepPanel'\nimport { PoissonShell } from './components/PoissonShell'\nimport { PulsingSphere } from './components/PulsingSphere'\nimport { OrbitingObject } from './components/OrbitingObject'\nimport { SamplingSystem } from './components/SamplingSystem'\nimport { SOUND_IDS, safePlaySound } from './hostBridge'\nimport { type GlitchComponentProps, type LightlaneProps, type SceneViewMode, defaultProps as internalDefaults } from './types'\n\ntype ComponentDevUiOverrides = {\n showNumericDiagnostics?: boolean;\n compactNumericDiagnostics?: boolean;\n onOpenHarness?: () => void;\n onSetParam?: (name: 'complexity' | 'speedup', value: number) => void;\n maxComplexity?: number;\n maxSpeedup?: number;\n};\n\ntype ComponentProps = GlitchComponentProps & {\n devUi?: ComponentDevUiOverrides;\n};\n\nexport default function Component(props: ComponentProps) {\n const host = props.host;\n const compactNumericDiagnostics = props.devUi?.compactNumericDiagnostics ?? false;\n const maxComplexity = props.devUi?.maxComplexity ?? 20;\n const maxSpeedup = props.devUi?.maxSpeedup ?? 240;\n const bottomMenuHeight = 74;\n const cycleLevelCount = 20;\n\n // Extract params from config\n const params = props.config?.params || {};\n\n // Merge props with defaults, casting params to LightlaneProps\n const {\n complexity,\n radius,\n distance,\n chandraDistance,\n showAxes,\n lightlanes,\n allSectors,\n cumulative,\n phi,\n theta,\n observationMode,\n orbitSpeed,\n thetaDrift,\n thetaJitter,\n phiJitter,\n speedup,\n K,\n usePoisson,\n sceneView: configuredSceneView,\n hideScenePresentation,\n hideFlyingBars,\n hideDataBoxes\n } = { ...internalDefaults, ...params } as Required;\n const showNumericDiagnostics = !hideDataBoxes;\n\n // Track global orbit time to ensure continuity\n const orbitTimeRef = useRef(0);\n const simTimeRef = useRef(0);\n const [paused, setPaused] = useState(false);\n const [page, setPage] = useState<'scene' | 'fano'>('scene');\n const [sceneView, setSceneView] = useState(configuredSceneView);\n const [effectiveComplexity, setEffectiveComplexity] = useState(complexity);\n const [effectiveSpeedup, setEffectiveSpeedup] = useState(speedup);\n const [settingFlash, setSettingFlash] = useState(null);\n const settingFlashTimerRef = useRef | null>(null);\n\n useEffect(() => {\n setSceneView(configuredSceneView);\n }, [configuredSceneView]);\n\n useEffect(() => {\n setEffectiveComplexity(complexity);\n }, [complexity]);\n\n useEffect(() => {\n setEffectiveSpeedup(speedup);\n }, [speedup]);\n\n const hideFlyingBarsAtHighSpeed = effectiveSpeedup > 20;\n const showPoissonView = sceneView !== 'lightlane';\n const showLightlaneView = sceneView !== 'poisson';\n const isComplexityEnabled = page === 'scene' && sceneView !== 'poisson';\n\n const getModeLabel = (mode: SceneViewMode) => {\n if (mode === 'poisson') return 'Poisson';\n if (mode === 'lightlane') return 'Lightlane';\n return 'Both';\n };\n\n const playUiHover = () => {\n safePlaySound(host, SOUND_IDS.hover, { page, sceneView });\n };\n\n const playUiClick = (target: string, payload?: Record) => {\n safePlaySound(host, SOUND_IDS.click, { page, sceneView, target, ...payload });\n };\n\n const flashSetting = (message: string) => {\n setSettingFlash(message);\n if (settingFlashTimerRef.current) clearTimeout(settingFlashTimerRef.current);\n settingFlashTimerRef.current = setTimeout(() => {\n setSettingFlash(null);\n settingFlashTimerRef.current = null;\n }, 1500);\n };\n\n const getCycleLevels = (maxValue: number) => {\n if (cycleLevelCount <= 1) return [maxValue];\n\n const interpolatedLevels = Array.from({ length: cycleLevelCount }, (_, index) => {\n if (index === 0) return 1;\n if (index === cycleLevelCount - 1) return maxValue;\n return Math.round(1 + ((maxValue - 1) * index) / (cycleLevelCount - 1));\n });\n\n return Array.from(new Set(interpolatedLevels)).sort((a, b) => a - b);\n };\n\n const getNextCycledValue = (current: number, maxValue: number) => {\n const levels = getCycleLevels(maxValue);\n return levels.find((level) => current < level) ?? levels[levels.length - 1];\n };\n\n const getPreviousCycledValue = (current: number, maxValue: number) => {\n const levels = getCycleLevels(maxValue);\n for (let index = levels.length - 1; index >= 0; index -= 1) {\n if (current > levels[index]) return levels[index];\n }\n return levels[0];\n };\n\n const getCycleLevelIndex = (current: number, maxValue: number) => {\n const levels = getCycleLevels(maxValue);\n const index = levels.findIndex((level) => current <= level);\n return index >= 0 ? index : levels.length - 1;\n };\n\n const complexityLevel = getCycleLevelIndex(effectiveComplexity, maxComplexity);\n const turboLevel = getCycleLevelIndex(effectiveSpeedup, maxSpeedup);\n const complexityFill = `${((complexityLevel + 1) / cycleLevelCount) * 100}%`;\n const turboFill = `${((turboLevel + 1) / cycleLevelCount) * 100}%`;\n const canDecreaseComplexity = isComplexityEnabled && effectiveComplexity > getCycleLevels(maxComplexity)[0];\n const canIncreaseComplexity = isComplexityEnabled && effectiveComplexity < getCycleLevels(maxComplexity).at(-1)!;\n const canDecreaseSpeedup = effectiveSpeedup > getCycleLevels(maxSpeedup)[0];\n const canIncreaseSpeedup = effectiveSpeedup < getCycleLevels(maxSpeedup).at(-1)!;\n\n const stepComplexity = (direction: 'down' | 'up') => {\n if (!isComplexityEnabled) return;\n const next = direction === 'up'\n ? getNextCycledValue(effectiveComplexity, maxComplexity)\n : getPreviousCycledValue(effectiveComplexity, maxComplexity);\n if (next === effectiveComplexity) return;\n playUiClick('complexity', { direction, value: next });\n setEffectiveComplexity(next);\n props.devUi?.onSetParam?.('complexity', next);\n flashSetting(`Complexity ${next}`);\n };\n\n const stepSpeedup = (direction: 'down' | 'up') => {\n const next = direction === 'up'\n ? getNextCycledValue(effectiveSpeedup, maxSpeedup)\n : getPreviousCycledValue(effectiveSpeedup, maxSpeedup);\n if (next === effectiveSpeedup) return;\n playUiClick('turbo', { direction, value: next });\n setEffectiveSpeedup(next);\n props.devUi?.onSetParam?.('speedup', next);\n flashSetting(`Turbo ${next}x`);\n };\n\n const cycleMode = () => {\n const modes: SceneViewMode[] = ['poisson', 'lightlane', 'both'];\n const currentIndex = modes.indexOf(sceneView);\n const nextMode = modes[(currentIndex + 1) % modes.length];\n playUiClick('mode', { value: nextMode });\n setSceneView(nextMode);\n flashSetting(`Mode ${getModeLabel(nextMode)}`);\n };\n\n const toggleFanoPage = () => {\n playUiClick('fano-page', { value: page === 'scene' ? 'fano' : 'scene' });\n setPage((prev) => (prev === 'scene' ? 'fano' : 'scene'));\n };\n\n useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.code !== 'Space' || event.repeat) return;\n\n const target = event.target as HTMLElement | null;\n const tag = target?.tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || target?.isContentEditable) return;\n\n event.preventDefault();\n setPaused(prev => !prev);\n };\n\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, []);\n\n useEffect(() => () => {\n if (settingFlashTimerRef.current) clearTimeout(settingFlashTimerRef.current);\n }, []);\n\n useFrame((_, delta) => {\n if (paused || page === 'fano') return;\n // Accumulate orbit time continuously based on current speed and speedup\n orbitTimeRef.current += delta * orbitSpeed * effectiveSpeedup;\n simTimeRef.current += delta * effectiveSpeedup;\n });\n\n // Keep the visual camera model aligned with the sampling engine when the\n // simulator is recreated/reset by configuration changes (e.g. complexity).\n useEffect(() => {\n orbitTimeRef.current = 0;\n simTimeRef.current = 0;\n }, [\n effectiveComplexity,\n radius,\n distance,\n chandraDistance,\n phi,\n theta,\n observationMode,\n orbitSpeed,\n thetaDrift,\n thetaJitter,\n phiJitter,\n effectiveSpeedup,\n K,\n allSectors,\n cumulative,\n usePoisson,\n ]);\n\n return (\n <>\n \n
\n {\n playUiClick('advanced');\n props.devUi?.onOpenHarness?.();\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: 'rgba(7,19,11,0.86)',\n color: 'var(--terminal-green-soft)',\n borderRadius: 10,\n padding: '10px 12px',\n fontSize: 12,\n fontWeight: 400,\n letterSpacing: '0.08em',\n fontFamily: 'var(--font-headline)',\n textTransform: 'uppercase',\n cursor: 'pointer',\n boxShadow: '0 8px 24px rgba(0,0,0,0.25)',\n }}\n >\n Advanced\n \n
\n \n\n {/* Lighting */}\n \n \n \n\n {page === 'scene' ? (\n <>\n {/* Main content */}\n {!hideScenePresentation && showPoissonView && }\n\n {!hideScenePresentation && showLightlaneView && (\n \n )}\n\n {!hideScenePresentation && }\n\n \n\n \n\n {paused && (\n \n \n \n \n \n \n )}\n\n {/* Helpers */}\n {showAxes && }\n \n \n ) : (\n setPage('scene')}\n host={host}\n />\n )}\n\n \n {settingFlash && (\n \n {settingFlash}\n
\n )}\n \n \n \n \n \n {Array.from({ length: cycleLevelCount }).map((_, index) => (\n \n ))}\n
\n \n Complexity {complexityLevel + 1}/{cycleLevelCount}\n
\n
\n
\n \n \n \n \n \n {Array.from({ length: cycleLevelCount }).map((_, index) => (\n \n ))}\n
\n \n Turbo {turboLevel + 1}/{cycleLevelCount}\n
\n
\n
\n \n {[\n {\n label: 'Complexity',\n kind: 'adjust' as const,\n active: false,\n disabled: !isComplexityEnabled,\n accent: 'rgba(245,158,11,0.2)',\n sublabel: `${effectiveComplexity} • ${complexityLevel + 1}/${cycleLevelCount}`,\n meterColor: 'linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))',\n meterSide: 'left' as const,\n meterFill: complexityFill,\n onDecrease: () => stepComplexity('down'),\n onIncrease: () => stepComplexity('up'),\n canDecrease: canDecreaseComplexity,\n canIncrease: canIncreaseComplexity,\n },\n {\n label: 'Mode',\n kind: 'action' as const,\n onClick: cycleMode,\n active: false,\n accent: 'rgba(59,130,246,0.18)',\n sublabel: getModeLabel(sceneView)\n },\n {\n label: 'Fano Sweep',\n kind: 'action' as const,\n onClick: toggleFanoPage,\n active: page === 'fano',\n accent: 'rgba(59,130,246,0.22)',\n sublabel: page === 'fano' ? 'Open' : 'Scene'\n },\n {\n label: 'Turbo',\n kind: 'adjust' as const,\n active: false,\n accent: 'rgba(34,197,94,0.2)',\n sublabel: `${effectiveSpeedup}x • ${turboLevel + 1}/${cycleLevelCount}`,\n meterColor: 'linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))',\n meterSide: 'right' as const,\n meterFill: turboFill,\n onDecrease: () => stepSpeedup('down'),\n onIncrease: () => stepSpeedup('up'),\n canDecrease: canDecreaseSpeedup,\n canIncrease: canIncreaseSpeedup,\n }\n ].map((item) => (\n item.kind === 'adjust' ? (\n \n {'meterColor' in item && (\n <>\n \n \n \n )}\n \n {item.label}\n \n \n {item.sublabel}\n \n
\n \n -\n \n \n +\n \n
\n
\n ) : (\n \n \n {item.label}\n \n \n {item.sublabel}\n \n \n )\n ))}\n
\n \n\n \n \n )\n}\n","import Component from './Component';\nimport { type GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'lightlane',\n displayName: 'Lightlane Challenge',\n version: '1.1.0',\n paramSchema: {\n hideScenePresentation: { type: 'boolean', label: 'Hide Sphere + Lightlanes', default: false },\n hideFlyingBars: { type: 'boolean', label: 'Hide Flying Bars', default: false },\n hideDataBoxes: { type: 'boolean', label: 'Hide Data Boxes', default: false },\n complexity: { type: 'range', label: 'Complexity', default: 5, min: 1, max: 20, step: 1 },\n radius: { type: 'range', label: 'Distance to star', default: 2, min: 0.1, max: 5, step: 0.1 },\n chandraDistance: { type: 'range', label: 'Chandra Camera Distance', default: 6, min: 5, max: 30, step: 0.5 },\n observationMode: {\n type: 'select',\n label: 'Observation Mode',\n default: 'randomSphere',\n options: [\n { value: 'orbit', label: 'Orbit' },\n { value: 'randomSphere', label: 'Random Sphere' }\n ]\n },\n sceneView: {\n type: 'select',\n label: 'Scene View',\n default: 'both',\n options: [\n { value: 'both', label: 'Both' },\n { value: 'poisson', label: 'Poisson' },\n { value: 'lightlane', label: 'Lightlane' }\n ]\n },\n orbitSpeed: { type: 'range', label: 'Orbit Speed', default: 0.2, min: 0, max: 2, step: 0.01 },\n thetaDrift: { type: 'range', label: 'Theta Drift', default: 0, min: -1, max: 1, step: 0.01 },\n thetaJitter: { type: 'range', label: 'Theta Jitter', default: 0, min: 0, max: 0.25, step: 0.005 },\n phiJitter: { type: 'range', label: 'Phi Jitter', default: 0, min: 0, max: 0.5, step: 0.01 },\n speedup: { type: 'range', label: 'Speedup', default: 1, min: 1, max: 240, step: 1 }\n },\n defaultParams: {\n complexity: 5,\n radius: 2,\n orbitSpeed: 0.2,\n thetaDrift: 0,\n thetaJitter: 0,\n phiJitter: 0,\n chandraDistance: 6,\n observationMode: 'randomSphere',\n sceneView: 'both',\n speedup: 1,\n // Internal defaults will handle the rest\n distance: 5,\n showAxes: false,\n lightlanes: true,\n allSectors: true,\n cumulative: false,\n phi: 0,\n theta: Math.PI / 2,\n K: 1000,\n usePoisson: true,\n hideScenePresentation: false,\n hideFlyingBars: false,\n hideDataBoxes: false\n }\n};\n\nexport type { GlitchComponentProps, GlitchComponentConfig, GlitchComponentResult, GlitchHostBridge } from './types';\n"],"names":["VectorArrow","vector","origin","color","dir","len","position","useMemo","start","THREE","end","arrowHelper","jsx","getVectors","complexity","allSectors","vectors","x","y","z","xSigns","ySigns","zSigns","sx","sy","sz","LightlaneCylinder","radius","distance","quaternion","v","up","jsxs","DiophantineVectors","lightlanes","cumulative","vectorData","data","c","result","getColor","maxC","item","i","HOST_SOUND_EVENT","HOST_STOP_SOUND_EVENT","SOUND_IDS","dispatchWindowEvent","type","detail","safePlaySound","host","id","payload","safeStopSound","EPS","createRng","seed","a","t","samplePoisson","lambda","rand","L","k","p","u1","u2","toXYZ","norm3","wrapAngle","angle","twoPi","randomSphereAngles","u","phi","reflectPolarTheta","theta","sampleNormal","vecOnSphereFromAngles","D","sinT","getDiophantineVectors","buildLaneEndpointsOnShell","raw","out","n","countLaneOverlapsOnSegments","lanes","satPos","laneRadius","Px","Py","Pz","r2","count","Bx","By","Bz","b2","Cx","Cy","Cz","dx","dy","dz","countLaneOverlapsOnShell","dotThreshold","isotropicCoverageProbability","lane_radius","isotropicCoverageProbabilitySegment","lane_length","dMin","dJoin","c0","lambdaIsotropic","flux","dt","lambdaIsotropicSegment","lambdaIsotropicForGeometry","hitTestModel","validateConfig","config","bin_size","sub_bin_sampling","thetaDrift","thetaJitter","phiJitter","observationMode","createSamplingSimulation","cfg","laneSegments","lightlaneRand","isotropicRand","pathRand","subBinSize","lambdaIsoSubBin","timeInBin","timeInSubBin","phase","thetaNow","elapsed","accumulatedLightlane","accumulatedIsotropic","expectedLightlaneThisBin","processedSubBinsInCurrentBin","lastLaneCount","overlapSumThisBin","sampleCount","currentSatPos","sampleTheta","samplePhi","processSubBin","ang","laneCount","N","lam","finalizeBin","effectiveBinSize","lamIso","bin","remaining","subBinEvents","bins","untilSub","untilBin","step","updateMoments","m","delta","mean","m2","emptyMoments","sampleFanoPoint","samplesPerPoint","runsPerPoint","binSize","subBinSampling","props","blue","yellow","run","sim","varBlue","varYellow","fanoBlue","fanoYellow","fitPowerLaw","points","minComplexity","usable","sxx","sxy","denom","slope","intercept","fitPowerLawWithFloor","minY","maxB","best","steps","B","shifted","A","alpha","score","pred","err","fitPowerXY","samples","s","estimateComplexityFromLaneCount","targetLaneCount","sorted","b","byLane","first","last","extrapolated","linePath","getY","xToPx","yToPx","formatYAxisTick","value","buildLogTicks","min","max","ticks","logMin","logMax","_","FanoSweepPanel","maxComplexity","setMaxComplexity","useState","setSamplesPerPoint","setRunsPerPoint","setBinSize","setSubBinSampling","setObservationMode","targetExcess","setTargetExcess","fitStartComplexity","setFitStartComplexity","runId","setRunId","setPoints","progress","setProgress","running","setRunning","wasRunningRef","useRef","progressStepRef","playUiHover","playUiClick","target","useEffect","cancelled","nextPoints","point","resolve","wasRunning","nextProgressStep","fit","floorFit","indistinguishableEstimate","effectiveTarget","effectiveA","effectiveAlpha","requiredLaneCount","measuredCrossing","complexityEstimate","plot","margin","innerW","innerH","maxX","positiveYs","rawYMin","rawYMax","yMin","yMax","safeY","ly","yTicks","bluePath","yellowPath","latest","Html","prev","e","py","px","fitPath","Fragment","sparkleColor","Color","createSparkleField","positions","colors","sparklePoints","shellRadius","index","radial","offset","PoissonShell","sparkleRef","sparkleCount","useFrame","clock","sparkleCloud","colorAttribute","time","colorArray","pulse","intensity","PulsingSphere","paused","materialRef","state","OrbitingObject","orbitTime","simTime","groupRef","currentPhi","currentTheta","poissonPalette","lightlanePalette","headlineFont","uiFont","terminalGreen","terminalGreenSoft","terminalGreenMuted","FlyingBars","bars","screenHeight","bar","startTop","deltaX","deltaY","createEmptyMoments","observed","isotropic","nextN","deltaObs","meanObs","m2Obs","deltaIso","meanIso","m2Iso","SamplingSystem","K","orbitRadius","orbitVelocity","usePoisson","speedup","sceneView","bottomInset","showNumericDiagnostics","compactNumericDiagnostics","centerDistribution","hideFlyingBars","stats","setStats","subBinSamples","simulator","bufferSize","historyRef","historyTheoryRef","currentIndexRef","history","setHistory","historyTheory","setHistoryTheory","lambdaMean","lambdaStdDev","distributionBinsContinuous","binRangeHalf","binMin","binMax","useDiscreteCountBins","discreteBinMin","discreteBinMax","distributionBins","binWidth","valueToBinIndex","binIndexToValue","distributionObserved","setDistributionObserved","distributionTheory","setDistributionTheory","unfastenedObserved","setUnfastenedObserved","unfastenedTheory","setUnfastenedTheory","flyingBars","setFlyingBars","flyingBarIdRef","summaryRef","summary","setSummary","pausedRef","lastBarSoundAtRef","ingestBins","totalObservedAdded","lastObserved","lastTheory","lastBinOverlapsMean","lastExpectedLightlane","nextSummary","observedTheory","currentMaxVal","autoAccumulateRow","isDraggingRef","dragTypeRef","handlePointerDown","handlePointerMove","historyData","maxValue","rect","barIndex","val","isUnfastened","handleBarClick","handlePointerUp","getBarDimensions","screenWidth","startLeft","barWidth","barHeight","startBottom","binIndex","histogramPadding","histogramWidth","targetLeft","now","targetTop","newBar","newDist","binIdx","theoryData","newFlyingBars","newDistObserved","newDistTheory","timer","prevIndexRef","wasPaused","flushed","validValues","validValuesTheory","maxValLightlane","maxValPoisson","maxDistribution","observedVariance","isotropicVariance","meanRatio","varianceRatio","fanoObserved","fanoIsotropic","lcIsoTarget","renderNumericInline","showPoissonView","showLightlaneView","visibleFlyingBars","distributionTitle","metricCardBase","numericCards","numericContext","theoryCount","obsHeight","theoryHeight","defaultProps","Component","maxSpeedup","bottomMenuHeight","cycleLevelCount","params","chandraDistance","showAxes","orbitSpeed","configuredSceneView","hideScenePresentation","hideDataBoxes","internalDefaults","orbitTimeRef","simTimeRef","setPaused","page","setPage","setSceneView","effectiveComplexity","setEffectiveComplexity","effectiveSpeedup","setEffectiveSpeedup","settingFlash","setSettingFlash","settingFlashTimerRef","hideFlyingBarsAtHighSpeed","isComplexityEnabled","getModeLabel","mode","flashSetting","message","getCycleLevels","interpolatedLevels","getNextCycledValue","current","levels","level","getPreviousCycledValue","getCycleLevelIndex","complexityLevel","turboLevel","complexityFill","turboFill","canDecreaseComplexity","canIncreaseComplexity","canDecreaseSpeedup","canIncreaseSpeedup","stepComplexity","direction","next","stepSpeedup","cycleMode","modes","currentIndex","nextMode","toggleFanoPage","onKeyDown","event","tag","Grid","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/glitch/glitch_lightlane/presets.d.ts b/dist/glitch/glitch_lightlane/presets.d.ts new file mode 100644 index 0000000..5e71c13 --- /dev/null +++ b/dist/glitch/glitch_lightlane/presets.d.ts @@ -0,0 +1,94 @@ +export interface Config { + complexity: number; + radius: number; + distance: number; + lightlanes: boolean; + allSectors: boolean; + cumulative: boolean; + phi: number; + theta: number; + orbitSpeed?: number; + usePoisson?: boolean; +} +export interface Preset { + name: string; + description: string; + duration: number; + start: Config; + end: Config; +} +export declare const presets: Preset[]; +export declare const namedPresets: { + "Iso: High Complexity": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Iso: Fast Orbit": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Iso: Optimal": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Aniso: Low Complexity": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Aniso: Slow Speed": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Aniso: High Distance": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; +}; diff --git a/dist/glitch/glitch_lightlane/types.d.ts b/dist/glitch/glitch_lightlane/types.d.ts new file mode 100644 index 0000000..114197e --- /dev/null +++ b/dist/glitch/glitch_lightlane/types.d.ts @@ -0,0 +1,82 @@ +export type SceneViewMode = 'both' | 'poisson' | 'lightlane'; +export interface LightlaneProps { + complexity?: number; + radius?: number; + distance?: number; + chandraDistance?: number; + showAxes?: boolean; + lightlanes?: boolean; + allSectors?: boolean; + cumulative?: boolean; + phi?: number; + theta?: number; + observationMode?: 'orbit' | 'randomSphere'; + orbitSpeed?: number; + thetaDrift?: number; + thetaJitter?: number; + phiJitter?: number; + speedup?: number; + K?: number; + usePoisson?: boolean; + sceneView?: SceneViewMode; + hideScenePresentation?: boolean; + hideFlyingBars?: boolean; + hideDataBoxes?: boolean; +} +export declare const defaultProps: Required; +export interface GlitchComponentConfig { + id: string; + name: string; + version: string; + params: Record; +} +export interface GlitchHostBridge { + playSound?: (id: string, payload?: Record) => void; + stopSound?: (id: string, payload?: Record) => void; + emit?: (type: string, payload?: unknown) => void; +} +export interface GlitchTheme { + primary: string; + accent: string; + bg: string; + bgSecondary: string; + text: string; + textMuted: string; + border: string; +} +export interface GlitchComponentResult { + success: boolean; + score?: number; + data?: unknown; + error?: string; +} +export interface GlitchComponentProps { + config: GlitchComponentConfig; + onComplete: (result: GlitchComponentResult) => void; + onProgress?: (percent: number) => void; + theme?: GlitchTheme; + className?: string; + host?: GlitchHostBridge; +} +export interface ParamSchema { + [key: string]: { + type: 'number' | 'string' | 'boolean' | 'color' | 'select' | 'range'; + label?: string; + description?: string; + default: unknown; + options?: { + value: string | number; + label: string; + }[]; + min?: number; + max?: number; + step?: number; + }; +} +export interface GlitchComponentMetadata { + name: string; + displayName: string; + version: string; + paramSchema: ParamSchema; + defaultParams: Record; +} diff --git a/dist/glitch/glitch_lightlane/vectors.d.ts b/dist/glitch/glitch_lightlane/vectors.d.ts new file mode 100644 index 0000000..15013f8 --- /dev/null +++ b/dist/glitch/glitch_lightlane/vectors.d.ts @@ -0,0 +1,2 @@ +export type Vector3Tuple = [number, number, number]; +export declare function getVectors(complexity: number, allSectors?: boolean): Vector3Tuple[]; diff --git a/dist/glitch/glitch_lightlane/vite.svg b/dist/glitch/glitch_lightlane/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/dist/glitch/glitch_lightlane/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/glitch/glitch_migration_paradox/glitch.manifest.json b/dist/glitch/glitch_migration_paradox/glitch.manifest.json new file mode 100644 index 0000000..755f96e --- /dev/null +++ b/dist/glitch/glitch_migration_paradox/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "migration-paradox", + "displayName": "The Migration Paradox", + "version": "1.0.0", + "folderName": "glitch_migration_paradox", + "packageName": "migration-paradox", + "entry": "dist/migration-paradox.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "paradox", + "narrative" + ] +} diff --git a/dist/glitch/glitch_migration_paradox/migration-paradox.js b/dist/glitch/glitch_migration_paradox/migration-paradox.js new file mode 100644 index 0000000..e8de3a7 --- /dev/null +++ b/dist/glitch/glitch_migration_paradox/migration-paradox.js @@ -0,0 +1,422 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._container_166qm_3{--component-font-main: var(--font-main, system-ui, sans-serif);--component-font-display: var(--font-display, var(--component-font-main));--component-font-mono: var(--font-mono, monospace);background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:var(--component-font-main);line-height:1.6;max-width:640px;margin:0 auto;padding:1rem}._container_166qm_3 *,._container_166qm_3 *:before,._container_166qm_3 *:after{box-sizing:inherit}._panel_166qm_21{animation:_fadeIn_166qm_1 .3s ease;background:var(--gc-bg-secondary, #12121a);border:4px solid var(--gc-border, #2a2a3a);border-radius:4px;box-shadow:0 0 0 2px var(--gc-bg, #0a0a0f),0 0 20px #6366f126,inset 0 0 60px #00000080}@keyframes _fadeIn_166qm_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}._imageFrame_166qm_38{width:100%;min-height:100%;object-fit:contain;aspect-ratio:16 / 9;background:#000;border-bottom:4px solid var(--gc-border, #2a2a3a);overflow:hidden;position:relative}._imageFrame_166qm_38:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(0deg,rgba(0,0,0,.4) 0%,transparent 20%,transparent 80%,rgba(0,0,0,.2) 100%);pointer-events:none}._sceneImage_166qm_63{width:100%;height:100%;object-fit:contain;image-rendering:auto}._sceneFallback_166qm_70{--scene-accent: var(--gc-primary, #6366f1);--scene-glow: rgb(99 102 241 / 26%);--scene-panel: rgb(8 10 20 / 92%);position:relative;display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:1rem;background:radial-gradient(circle at 20% 18%,var(--scene-glow),transparent 34%),linear-gradient(145deg,rgb(8 10 20 / 96%),rgb(5 6 12 / 96%));overflow:hidden}._sceneFallback_166qm_70[data-tone=danger]{--scene-accent: #ef4444;--scene-glow: rgb(239 68 68 / 22%)}._sceneFallback_166qm_70[data-tone=accent]{--scene-accent: var(--gc-accent, #22d3ee);--scene-glow: rgb(34 211 238 / 20%)}._sceneFallback_166qm_70[data-tone=success]{--scene-accent: #22c55e;--scene-glow: rgb(34 197 94 / 20%)}._sceneFallbackGlow_166qm_102{position:absolute;inset:12% auto auto 8%;width:40%;aspect-ratio:1;border-radius:999px;background:radial-gradient(circle,var(--scene-glow),transparent 70%);filter:blur(8px);pointer-events:none}._sceneFallbackHud_166qm_113{position:relative;display:flex;justify-content:space-between;gap:.75rem;align-items:center;z-index:1}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{border:1px solid color-mix(in srgb,var(--scene-accent) 55%,transparent);background:color-mix(in srgb,var(--scene-panel) 88%,transparent);color:color-mix(in srgb,var(--scene-accent) 86%,white);padding:.35rem .55rem;text-transform:uppercase;letter-spacing:.14em;font-family:var(--component-font-mono);font-size:.66rem}._sceneFallbackSignal_166qm_123{opacity:.85}._sceneFallbackCopy_166qm_138{position:relative;z-index:1;display:grid;gap:.45rem;max-width:28rem}._sceneFallbackKicker_166qm_146{margin:0;color:color-mix(in srgb,var(--scene-accent) 78%,white);font-family:var(--component-font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}._sceneFallbackTitle_166qm_155{margin:0;color:#fff;font-family:var(--component-font-display);font-size:clamp(1.3rem,2.8vw,2rem);line-height:1.05;text-transform:uppercase}._sceneFallbackDetail_166qm_164{margin:0;color:#e8e8ecc2;font-size:.88rem;max-width:32ch}._sceneFallbackBars_166qm_171{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;align-items:end}._sceneFallbackBars_166qm_171 span{height:.35rem;border-radius:999px;background:linear-gradient(90deg,var(--scene-accent),color-mix(in srgb,var(--scene-accent) 18%,transparent));opacity:.9}._sceneFallbackBars_166qm_171 span:nth-child(2){width:82%}._sceneFallbackBars_166qm_171 span:nth-child(3){width:64%}._dialogueBox_166qm_196{padding:1.5rem;position:relative}._dialogueBox_166qm_196:before{content:"";position:absolute;top:0;left:1rem;right:1rem;height:1px;background:linear-gradient(90deg,transparent,var(--gc-primary, #6366f1) 20%,var(--gc-primary, #6366f1) 80%,transparent)}._dialogueHeader_166qm_217{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}._title_166qm_224{color:var(--gc-primary, #6366f1);font-family:var(--component-font-display);margin:0;font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 10px rgba(99,102,241,.5)}._loopBadge_166qm_235{background:rgba(239,68,68,.2);color:#ef4444;padding:.25rem .75rem;border:2px solid #ef4444;border-radius:2px;font-family:var(--component-font-mono);font-size:.75rem;font-weight:700;letter-spacing:.1em;animation:_loopPulse_166qm_1 1.5s ease-in-out infinite}@keyframes _loopPulse_166qm_1{0%,to{opacity:1}50%{opacity:.6}}._description_166qm_253{color:var(--gc-text-muted, #9999a8);margin:0 0 1.25rem;font-size:.95rem;line-height:1.7}._actionButton_166qm_261{background:linear-gradient(180deg,#4f46e5 0%,#3730a3 100%);color:#fff;border:2px solid #6366f1;padding:.875rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #1e1b4b,0 6px 10px #0000004d;position:relative;top:0}._actionButton_166qm_261:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #1e1b4b,0 8px 15px #0000004d}._actionButton_166qm_261:active{top:4px;box-shadow:0 0 #1e1b4b,0 2px 5px #0000004d}._choices_166qm_296{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}._choiceButton_166qm_303{background:var(--gc-bg, #0a0a0f);border:2px solid var(--gc-border, #2a2a3a);padding:1rem;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;gap:1rem;position:relative;overflow:hidden}._choiceButton_166qm_303:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gc-primary, #6366f1);opacity:0;transition:opacity .15s ease}._choiceButton_166qm_303:hover{border-color:var(--gc-primary, #6366f1);background:rgba(99,102,241,.08)}._choiceButton_166qm_303:hover:before{opacity:1}._choiceKey_166qm_337{width:2.5rem;height:2.5rem;background:linear-gradient(180deg,#374151 0%,#1f2937 100%);border:2px solid #4b5563;border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--component-font-mono);font-size:1.25rem;font-weight:700;color:#e5e7eb;flex-shrink:0;box-shadow:0 3px #111827,inset 0 1px #ffffff1a;text-shadow:0 1px 2px rgba(0,0,0,.5)}._choiceButton_166qm_303:hover ._choiceKey_166qm_337{background:linear-gradient(180deg,#4f46e5 0%,#3730a3 100%);border-color:#6366f1;box-shadow:0 3px #1e1b4b,inset 0 1px #ffffff26,0 0 10px #6366f14d}._choiceContent_166qm_366{display:flex;flex-direction:column;gap:.25rem;text-align:left}._choiceTitle_166qm_373{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-weight:700;font-size:1rem}._choiceDesc_166qm_380{color:var(--gc-text-muted, #9999a8);font-size:.8rem;font-style:italic}._rejection_166qm_387{background:rgba(239,68,68,.08);border:2px solid rgba(239,68,68,.4);padding:1.25rem;margin-bottom:1.25rem;position:relative}._rejectionBadge_166qm_395{display:inline-block;background:#dc2626;color:#fff;padding:.25rem .75rem;font-family:var(--component-font-mono);font-size:.8rem;font-weight:700;letter-spacing:.15em;margin-bottom:1rem;animation:_shake_166qm_1 .5s ease-in-out}@keyframes _shake_166qm_1{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}._quote_166qm_416{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-size:1.1rem;font-weight:700;margin:0 0 .75rem;padding-left:1rem;border-left:3px solid #ef4444}._explanation_166qm_426{color:var(--gc-text-muted, #9999a8);margin:0;font-size:.9rem;padding-left:1rem;border-left:3px solid transparent}._insightButton_166qm_435{background:transparent;border:2px dashed var(--gc-accent, #22d3ee);color:var(--gc-accent, #22d3ee);padding:.75rem 1rem;font-family:var(--component-font-display);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:1rem;width:100%;animation:_glowPulse_166qm_1 2s ease-in-out infinite}@keyframes _glowPulse_166qm_1{0%,to{box-shadow:0 0 5px #22d3ee4d}50%{box-shadow:0 0 15px #22d3ee80}}._insightButton_166qm_435:hover{background:rgba(34,211,238,.1);border-style:solid}._insight_166qm_435{text-align:center}._insightTitle_166qm_465{color:var(--gc-accent, #22d3ee);margin:0 0 1.5rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-shadow:0 0 15px rgba(34,211,238,.5)}._paradoxDiagram_166qm_474{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1.5rem;padding:1rem;background:rgba(0,0,0,.4);border:1px solid var(--gc-border, #2a2a3a)}._paradoxNode_166qm_486{background:var(--gc-bg, #0a0a0f);border:1px solid var(--gc-border, #2a2a3a);padding:.4rem .6rem;font-family:var(--component-font-mono);font-size:.7rem;color:var(--gc-text-muted, #9999a8)}._paradoxArrow_166qm_495{color:var(--gc-primary, #6366f1);font-size:1rem;font-weight:700}._paradoxLoop_166qm_501{color:var(--gc-accent, #22d3ee);font-size:1.5rem;margin-left:.5rem;animation:_spin_166qm_1 3s linear infinite}@keyframes _spin_166qm_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._insightText_166qm_513{color:var(--gc-text, #e8e8ec);margin:0 0 1rem;font-size:.9rem;line-height:1.7;text-align:left}._insightText_166qm_513:last-of-type{margin-bottom:0}._insightText_166qm_513 strong{color:var(--gc-accent, #22d3ee)}._completeButton_166qm_530{background:linear-gradient(180deg,#059669 0%,#047857 100%);color:#fff;border:2px solid #10b981;padding:1rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;margin-top:1.5rem;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #064e3b,0 6px 10px #0000004d;position:relative;top:0}._completeButton_166qm_530:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #064e3b,0 8px 15px #0000004d}._completeButton_166qm_530:active{top:4px;box-shadow:0 0 #064e3b,0 2px 5px #0000004d}._successBox_166qm_566{text-align:center}._successTitle_166qm_570{color:#22c55e;margin:0 0 1rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 15px rgba(34,197,94,.5)}._stats_166qm_581{color:var(--gc-text-muted, #9999a8);margin:0 0 1.5rem;font-size:.9rem}._scoreDisplay_166qm_587{background:rgba(0,0,0,.4);border:2px solid var(--gc-accent, #22d3ee);padding:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}._scoreLabel_166qm_597{color:var(--gc-text-muted, #9999a8);font-family:var(--component-font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.2em}._scoreValue_166qm_605{color:var(--gc-accent, #22d3ee);font-size:3rem;font-weight:700;text-shadow:0 0 20px rgba(34,211,238,.5)}@media (max-width: 480px){._container_166qm_3{padding:.5rem}._dialogueBox_166qm_196{padding:1rem}._title_166qm_224{font-size:1.1rem}._choiceKey_166qm_337{width:2rem;height:2rem;font-size:1rem}._paradoxDiagram_166qm_474{gap:.25rem;padding:.75rem}._paradoxNode_166qm_486{font-size:.6rem;padding:.3rem .5rem}._sceneFallback_166qm_70{padding:.85rem}._sceneFallbackHud_166qm_113{gap:.5rem}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{font-size:.58rem;padding:.3rem .45rem}._sceneFallbackTitle_166qm_155{font-size:1.1rem}._sceneFallbackDetail_166qm_164{font-size:.78rem}}')),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})(); +import { jsxs as t, jsx as a } from "react/jsx-runtime"; +import { useState as b, useMemo as I, useCallback as d } from "react"; +const K = "_container_166qm_3", O = "_panel_166qm_21", V = "_fadeIn_166qm_1", $ = "_imageFrame_166qm_38", G = "_sceneImage_166qm_63", W = "_sceneFallback_166qm_70", J = "_sceneFallbackGlow_166qm_102", z = "_sceneFallbackHud_166qm_113", Q = "_sceneFallbackBadge_166qm_122", X = "_sceneFallbackSignal_166qm_123", Z = "_sceneFallbackCopy_166qm_138", P = "_sceneFallbackKicker_166qm_146", ee = "_sceneFallbackTitle_166qm_155", ae = "_sceneFallbackDetail_166qm_164", te = "_sceneFallbackBars_166qm_171", ne = "_dialogueBox_166qm_196", se = "_dialogueHeader_166qm_217", ce = "_title_166qm_224", oe = "_loopBadge_166qm_235", ie = "_loopPulse_166qm_1", le = "_description_166qm_253", re = "_actionButton_166qm_261", de = "_choices_166qm_296", me = "_choiceButton_166qm_303", he = "_choiceKey_166qm_337", pe = "_choiceContent_166qm_366", ue = "_choiceTitle_166qm_373", ge = "_choiceDesc_166qm_380", _e = "_rejection_166qm_387", Ne = "_rejectionBadge_166qm_395", be = "_shake_166qm_1", ke = "_quote_166qm_416", xe = "_explanation_166qm_426", ye = "_insightButton_166qm_435", Be = "_glowPulse_166qm_1", ve = "_insight_166qm_435", qe = "_insightTitle_166qm_465", Ce = "_paradoxDiagram_166qm_474", Te = "_paradoxNode_166qm_486", Fe = "_paradoxArrow_166qm_495", fe = "_paradoxLoop_166qm_501", we = "_spin_166qm_1", Ae = "_insightText_166qm_513", Ie = "_completeButton_166qm_530", Ee = "_successBox_166qm_566", Se = "_successTitle_166qm_570", je = "_stats_166qm_581", De = "_scoreDisplay_166qm_587", Me = "_scoreLabel_166qm_597", Le = "_scoreValue_166qm_605", e = { + container: K, + panel: O, + fadeIn: V, + imageFrame: $, + sceneImage: G, + sceneFallback: W, + sceneFallbackGlow: J, + sceneFallbackHud: z, + sceneFallbackBadge: Q, + sceneFallbackSignal: X, + sceneFallbackCopy: Z, + sceneFallbackKicker: P, + sceneFallbackTitle: ee, + sceneFallbackDetail: ae, + sceneFallbackBars: te, + dialogueBox: ne, + dialogueHeader: se, + title: ce, + loopBadge: oe, + loopPulse: ie, + description: le, + actionButton: re, + choices: de, + choiceButton: me, + choiceKey: he, + choiceContent: pe, + choiceTitle: ue, + choiceDesc: ge, + rejection: _e, + rejectionBadge: Ne, + shake: be, + quote: ke, + explanation: xe, + insightButton: ye, + glowPulse: Be, + insight: ve, + insightTitle: qe, + paradoxDiagram: Ce, + paradoxNode: Te, + paradoxArrow: Fe, + paradoxLoop: fe, + spin: we, + insightText: Ae, + completeButton: Ie, + successBox: Ee, + successTitle: Se, + stats: je, + scoreDisplay: De, + scoreLabel: Me, + scoreValue: Le +}, E = "/glitch/migration-paradox", Re = 2, He = 1, _ = { + presenting: { + badge: "Migration Briefing", + title: "Stakeholders Await Your Plan", + copy: "Frame the migration as progress without triggering fear.", + detail: "You need a strategy that creates momentum before the paradox closes in.", + tone: "primary" + }, + "rejection-value": { + badge: "Stakeholder Response", + title: "Too Much Change", + copy: "Your pitch sounded valuable, but it also sounded dangerous.", + detail: "They want new capability only if nothing important feels different.", + tone: "danger" + }, + "rejection-same": { + badge: "Stakeholder Response", + title: "Too Little Value", + copy: "Your pitch sounded safe, but it also sounded pointless.", + detail: "They want risk contained, but they still expect the migration to matter.", + tone: "danger" + }, + awareness: { + badge: "Pattern Detected", + title: "Expose The Contradiction", + copy: "Show how value and continuity need different phases, not one impossible promise.", + detail: "Explore, preserve, and then innovate.", + tone: "accent" + }, + complete: { + badge: "Challenge Complete", + title: "Paradox Resolved", + copy: "You reframed the migration into a sequence stakeholders can accept.", + detail: "Value and stability can coexist when delivery is phased.", + tone: "success" + } +}; +function Ue(o) { + if (typeof o != "string") + return E; + const i = o.trim(); + return i ? i.replace(/\/+$/, "") : E; +} +function y(o, i) { + return `${o}/${i}`; +} +function S(o, i) { + const n = o === "A" ? Re : He, s = Math.floor(Math.random() * n) + 1; + return y(i, `rejection${o}_${s}.png`); +} +function N({ + src: o, + alt: i, + fallback: n, + onImageError: s +}) { + return /* @__PURE__ */ a("div", { className: e.imageFrame, children: o ? /* @__PURE__ */ a( + "img", + { + src: o, + alt: i, + className: e.sceneImage, + onError: () => s(o) + } + ) : /* @__PURE__ */ t( + "div", + { + className: e.sceneFallback, + "data-tone": n.tone, + role: "img", + "aria-label": i, + children: [ + /* @__PURE__ */ a("div", { className: e.sceneFallbackGlow }), + /* @__PURE__ */ t("div", { className: e.sceneFallbackHud, children: [ + /* @__PURE__ */ a("span", { className: e.sceneFallbackBadge, children: n.badge }), + /* @__PURE__ */ a("span", { className: e.sceneFallbackSignal, children: "GLITCH SIM" }) + ] }), + /* @__PURE__ */ t("div", { className: e.sceneFallbackCopy, children: [ + /* @__PURE__ */ a("p", { className: e.sceneFallbackKicker, children: n.copy }), + /* @__PURE__ */ a("h3", { className: e.sceneFallbackTitle, children: n.title }), + /* @__PURE__ */ a("p", { className: e.sceneFallbackDetail, children: n.detail }) + ] }), + /* @__PURE__ */ t("div", { className: e.sceneFallbackBars, "aria-hidden": "true", children: [ + /* @__PURE__ */ a("span", {}), + /* @__PURE__ */ a("span", {}), + /* @__PURE__ */ a("span", {}) + ] }) + ] + } + ) }); +} +function Oe({ + config: o, + onComplete: i, + onProgress: n, + theme: s, + className: j +}) { + const k = (o == null ? void 0 : o.params) ?? {}, [h, p] = b("intro"), [l, T] = b({ + loopCount: 0, + valueAttempts: 0, + sameAttempts: 0 + }), [B, D] = b(!1), [F, f] = b(""), [w, M] = b({}), r = I( + () => Ue(k.assetBaseUrl ?? k.imageBaseUrl), + [k.assetBaseUrl, k.imageBaseUrl] + ), x = I(() => ({ + presenting: y(r, "presenting.png"), + insight: y(r, "insight.png"), + complete: y(r, "complete.png") + }), [r]), L = { + "--gc-primary": (s == null ? void 0 : s.primary) || "#6366f1", + "--gc-accent": (s == null ? void 0 : s.accent) || "#22d3ee", + "--gc-bg": (s == null ? void 0 : s.bg) || "#0a0a0f", + "--gc-bg-secondary": (s == null ? void 0 : s.bgSecondary) || "#12121a", + "--gc-text": (s == null ? void 0 : s.text) || "#e8e8ec", + "--gc-text-muted": (s == null ? void 0 : s.textMuted) || "#9999a8", + "--gc-border": (s == null ? void 0 : s.border) || "#2a2a3a" + }, m = l.valueAttempts + l.sameAttempts, v = m >= 4, u = d((c) => w[c] ? void 0 : c, [w]), g = d((c) => { + M((C) => C[c] ? C : { ...C, [c]: !0 }); + }, []), R = d(() => { + p("choice"), n == null || n(10); + }, [n]), H = d(() => { + f(S("A", r)), T((c) => ({ + ...c, + valueAttempts: c.valueAttempts + 1, + loopCount: c.loopCount + (c.sameAttempts > c.valueAttempts ? 0.5 : 0) + })), p("rejection-value"), n == null || n(Math.min(30 + m * 10, 80)); + }, [r, m, n]), U = d(() => { + f(S("B", r)), T((c) => ({ + ...c, + sameAttempts: c.sameAttempts + 1, + loopCount: c.loopCount + (c.valueAttempts > c.sameAttempts ? 0.5 : 0) + })), p("rejection-same"), n == null || n(Math.min(30 + m * 10, 80)); + }, [r, m, n]), A = d(() => { + p("choice"); + }, []), q = d(() => { + D(!0), p("awareness"), n == null || n(90); + }, [n]), Y = d(() => { + p("complete"), n == null || n(100), i({ + success: !0, + score: 100, + data: { + loopsBeforeInsight: Math.floor(l.loopCount), + totalAttempts: m, + valueAttempts: l.valueAttempts, + sameAttempts: l.sameAttempts + }, + rewards: { + paradoxes: [{ + id: "migration-paradox", + name: "The Migration Paradox", + description: "Stakeholders simultaneously demand that a migration adds value AND changes nothing.", + rarity: "uncommon" + }] + } + }); + }, [i, n, l, m]); + return /* @__PURE__ */ t("div", { className: `${e.container} ${j || ""}`, style: L, children: [ + h === "intro" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.presenting), + alt: "Presenting to stakeholders", + fallback: _.presenting, + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ a("h2", { className: e.title, children: "The Migration Paradox" }), + /* @__PURE__ */ a("p", { className: e.description, children: "You've been tasked with migrating the core system. Your stakeholders are waiting for your strategy." }), + /* @__PURE__ */ a("button", { className: e.actionButton, onClick: R, children: "▶ Present Your Strategy" }) + ] }) + ] }), + h === "choice" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.presenting), + alt: "Presenting options", + fallback: _.presenting, + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.dialogueHeader, children: [ + /* @__PURE__ */ a("h2", { className: e.title, children: "Choose Your Approach" }), + l.loopCount > 0 && /* @__PURE__ */ t("span", { className: e.loopBadge, children: [ + "LOOP ", + Math.floor(l.loopCount) + 1 + ] }) + ] }), + /* @__PURE__ */ a("p", { className: e.description, children: "How will you pitch the migration project?" }), + /* @__PURE__ */ t("div", { className: e.choices, children: [ + /* @__PURE__ */ t( + "button", + { + className: e.choiceButton, + onClick: H, + children: [ + /* @__PURE__ */ a("span", { className: e.choiceKey, children: "A" }), + /* @__PURE__ */ t("span", { className: e.choiceContent, children: [ + /* @__PURE__ */ a("span", { className: e.choiceTitle, children: "Emphasize Change" }), + /* @__PURE__ */ a("span", { className: e.choiceDesc, children: '"The new system will add value and enable new capabilities"' }) + ] }) + ] + } + ), + /* @__PURE__ */ t( + "button", + { + className: e.choiceButton, + onClick: U, + children: [ + /* @__PURE__ */ a("span", { className: e.choiceKey, children: "B" }), + /* @__PURE__ */ t("span", { className: e.choiceContent, children: [ + /* @__PURE__ */ a("span", { className: e.choiceTitle, children: "Emphasize No Change" }), + /* @__PURE__ */ a("span", { className: e.choiceDesc, children: '"Everything will work exactly the same as before"' }) + ] }) + ] + } + ) + ] }), + v && !B && /* @__PURE__ */ a( + "button", + { + className: e.insightButton, + onClick: q, + children: "✦ Wait... I see the pattern" + } + ) + ] }) + ] }), + h === "rejection-value" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(F), + alt: "Stakeholder rejection", + fallback: _["rejection-value"], + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.rejection, children: [ + /* @__PURE__ */ a("span", { className: e.rejectionBadge, children: "✗ REJECTED" }), + /* @__PURE__ */ a("p", { className: e.quote, children: '"Are you insane? This will break everything!"' }), + /* @__PURE__ */ a("p", { className: e.explanation, children: `"If you want to change the core system, you need to make absolutely sure that everything works exactly the same. We can't risk any disruption."` }) + ] }), + /* @__PURE__ */ a("button", { className: e.actionButton, onClick: A, children: "▶ Try a Different Approach" }), + v && !B && /* @__PURE__ */ a( + "button", + { + className: e.insightButton, + onClick: q, + children: "✦ Wait... I see the pattern" + } + ) + ] }) + ] }), + h === "rejection-same" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(F), + alt: "Stakeholder rejection", + fallback: _["rejection-same"], + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.rejection, children: [ + /* @__PURE__ */ a("span", { className: e.rejectionBadge, children: "✗ REJECTED" }), + /* @__PURE__ */ a("p", { className: e.quote, children: '"This is insane. Why would we do this?"' }), + /* @__PURE__ */ a("p", { className: e.explanation, children: `"If everything is going to stay exactly the same, why would we spend all this time and money replacing the core system? What's the point?"` }) + ] }), + /* @__PURE__ */ a("button", { className: e.actionButton, onClick: A, children: "▶ Try a Different Approach" }), + v && !B && /* @__PURE__ */ a( + "button", + { + className: e.insightButton, + onClick: q, + children: "✦ Wait... I see the pattern" + } + ) + ] }) + ] }), + h === "awareness" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.insight), + alt: "Insight moment", + fallback: _.awareness, + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.insight, children: [ + /* @__PURE__ */ a("h2", { className: e.insightTitle, children: "★ The Paradox Revealed ★" }), + /* @__PURE__ */ t("p", { className: e.insightText, children: [ + "You've discovered the ", + /* @__PURE__ */ a("strong", { children: "Migration Paradox" }), + ": stakeholders demand that you change things - to give value. But also that nothing changes, to contain risk." + ] }), + /* @__PURE__ */ t("p", { className: e.insightText, children: [ + "The solution is ", + /* @__PURE__ */ a("strong", { children: "phased delivery" }), + ". First, prove business case. Then prove you can preserve existing functionality. Then introduce new capabilities." + ] }), + /* @__PURE__ */ t("div", { className: e.paradoxDiagram, children: [ + /* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Explore"' }), + /* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }), + /* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Preserve"' }), + /* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }), + /* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Innovate"' }), + /* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }) + ] }) + ] }), + /* @__PURE__ */ a("button", { className: e.completeButton, onClick: Y, children: "▶ Complete Challenge" }) + ] }) + ] }), + h === "complete" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.complete), + alt: "Challenge complete", + fallback: _.complete, + onImageError: g + } + ), + /* @__PURE__ */ a("div", { className: e.dialogueBox, children: /* @__PURE__ */ t("div", { className: e.successBox, children: [ + /* @__PURE__ */ a("h2", { className: e.successTitle, children: "★ CHALLENGE COMPLETE ★" }), + /* @__PURE__ */ t("p", { className: e.stats, children: [ + "You experienced ", + Math.floor(l.loopCount), + " loop(s) before seeing the pattern." + ] }), + /* @__PURE__ */ t("div", { className: e.scoreDisplay, children: [ + /* @__PURE__ */ a("span", { className: e.scoreLabel, children: "SCORE" }), + /* @__PURE__ */ a("span", { className: e.scoreValue, children: "100" }) + ] }) + ] }) }) + ] }) + ] }); +} +const Ve = { + name: "migration-paradox", + displayName: "The Migration Paradox", + version: "1.0.0", + paramSchema: { + assetBaseUrl: { + type: "string", + label: "Asset Base URL", + description: "Shared CDN or public folder containing presenting.png, insight.png, complete.png, rejectionA_1.png, rejectionA_2.png, and rejectionB_1.png.", + default: "/glitch/migration-paradox" + } + }, + defaultParams: { + assetBaseUrl: "/glitch/migration-paradox" + } +}; +export { + Oe as default, + Ve as metadata +}; +//# sourceMappingURL=migration-paradox.js.map diff --git a/dist/glitch/glitch_migration_paradox/migration-paradox.js.map b/dist/glitch/glitch_migration_paradox/migration-paradox.js.map new file mode 100644 index 0000000..9a7c8da --- /dev/null +++ b/dist/glitch/glitch_migration_paradox/migration-paradox.js.map @@ -0,0 +1 @@ +{"version":3,"file":"migration-paradox.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport styles from './styles.module.css';\nimport type { GlitchComponentProps } from './types';\n\ntype Phase = 'intro' | 'choice' | 'rejection-value' | 'rejection-same' | 'awareness' | 'complete';\ntype SceneTone = 'primary' | 'danger' | 'accent' | 'success';\n\ninterface LoopState {\n loopCount: number;\n valueAttempts: number;\n sameAttempts: number;\n}\n\ninterface SceneFallback {\n badge: string;\n title: string;\n copy: string;\n detail: string;\n tone: SceneTone;\n}\n\nconst DEFAULT_ASSET_BASE = '/glitch/migration-paradox';\nconst REJECTION_A_COUNT = 2; // Number of rejectionA_X.png variants (1 to X)\nconst REJECTION_B_COUNT = 1; // Number of rejectionB_X.png variants (1 to X)\nconst SCENE_FALLBACKS: Record<'presenting' | 'rejection-value' | 'rejection-same' | 'awareness' | 'complete', SceneFallback> = {\n presenting: {\n badge: 'Migration Briefing',\n title: 'Stakeholders Await Your Plan',\n copy: 'Frame the migration as progress without triggering fear.',\n detail: 'You need a strategy that creates momentum before the paradox closes in.',\n tone: 'primary'\n },\n 'rejection-value': {\n badge: 'Stakeholder Response',\n title: 'Too Much Change',\n copy: 'Your pitch sounded valuable, but it also sounded dangerous.',\n detail: 'They want new capability only if nothing important feels different.',\n tone: 'danger'\n },\n 'rejection-same': {\n badge: 'Stakeholder Response',\n title: 'Too Little Value',\n copy: 'Your pitch sounded safe, but it also sounded pointless.',\n detail: 'They want risk contained, but they still expect the migration to matter.',\n tone: 'danger'\n },\n awareness: {\n badge: 'Pattern Detected',\n title: 'Expose The Contradiction',\n copy: 'Show how value and continuity need different phases, not one impossible promise.',\n detail: 'Explore, preserve, and then innovate.',\n tone: 'accent'\n },\n complete: {\n badge: 'Challenge Complete',\n title: 'Paradox Resolved',\n copy: 'You reframed the migration into a sequence stakeholders can accept.',\n detail: 'Value and stability can coexist when delivery is phased.',\n tone: 'success'\n }\n};\n\nfunction normalizeAssetBase(candidate: unknown): string {\n if (typeof candidate !== 'string') {\n return DEFAULT_ASSET_BASE;\n }\n\n const trimmed = candidate.trim();\n if (!trimmed) {\n return DEFAULT_ASSET_BASE;\n }\n\n return trimmed.replace(/\\/+$/, '');\n}\n\nfunction buildAssetUrl(base: string, assetName: string): string {\n return `${base}/${assetName}`;\n}\n\nfunction getRandomRejectionImage(choice: 'A' | 'B', assetBase: string): string {\n const count = choice === 'A' ? REJECTION_A_COUNT : REJECTION_B_COUNT;\n const index = Math.floor(Math.random() * count) + 1;\n return buildAssetUrl(assetBase, `rejection${choice}_${index}.png`);\n}\n\nfunction SceneMedia({\n src,\n alt,\n fallback,\n onImageError\n}: {\n src?: string;\n alt: string;\n fallback: SceneFallback;\n onImageError: (src: string) => void;\n}) {\n return (\n
\n {src ? (\n onImageError(src)}\n />\n ) : (\n \n
\n
\n {fallback.badge}\n GLITCH SIM\n
\n
\n

{fallback.copy}

\n

{fallback.title}

\n

{fallback.detail}

\n
\n
\n \n \n \n
\n
\n )}\n
\n );\n}\n\nexport default function MigrationParadox({\n config: _config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const params = _config?.params ?? {};\n const [phase, setPhase] = useState('intro');\n const [loopState, setLoopState] = useState({\n loopCount: 0,\n valueAttempts: 0,\n sameAttempts: 0\n });\n const [showInsight, setShowInsight] = useState(false);\n const [currentRejectionImage, setCurrentRejectionImage] = useState('');\n const [failedImages, setFailedImages] = useState>({});\n\n const assetBase = useMemo(\n () => normalizeAssetBase(params.assetBaseUrl ?? params.imageBaseUrl),\n [params.assetBaseUrl, params.imageBaseUrl]\n );\n\n const images = useMemo(() => ({\n presenting: buildAssetUrl(assetBase, 'presenting.png'),\n insight: buildAssetUrl(assetBase, 'insight.png'),\n complete: buildAssetUrl(assetBase, 'complete.png')\n }), [assetBase]);\n\n const cssVars = {\n '--gc-primary': theme?.primary || '#6366f1',\n '--gc-accent': theme?.accent || '#22d3ee',\n '--gc-bg': theme?.bg || '#0a0a0f',\n '--gc-bg-secondary': theme?.bgSecondary || '#12121a',\n '--gc-text': theme?.text || '#e8e8ec',\n '--gc-text-muted': theme?.textMuted || '#9999a8',\n '--gc-border': theme?.border || '#2a2a3a',\n } as React.CSSProperties;\n\n const totalAttempts = loopState.valueAttempts + loopState.sameAttempts;\n const canSeeInsight = totalAttempts >= 4;\n const getSceneImage = useCallback((src: string) => (\n failedImages[src] ? undefined : src\n ), [failedImages]);\n const handleImageError = useCallback((src: string) => {\n setFailedImages(prev => (\n prev[src] ? prev : { ...prev, [src]: true }\n ));\n }, []);\n\n const handleStart = useCallback(() => {\n setPhase('choice');\n onProgress?.(10);\n }, [onProgress]);\n\n const handleChooseValue = useCallback(() => {\n setCurrentRejectionImage(getRandomRejectionImage('A', assetBase));\n setLoopState(prev => ({\n ...prev,\n valueAttempts: prev.valueAttempts + 1,\n loopCount: prev.loopCount + (prev.sameAttempts > prev.valueAttempts ? 0.5 : 0)\n }));\n setPhase('rejection-value');\n onProgress?.(Math.min(30 + totalAttempts * 10, 80));\n }, [assetBase, totalAttempts, onProgress]);\n\n const handleChooseSame = useCallback(() => {\n setCurrentRejectionImage(getRandomRejectionImage('B', assetBase));\n setLoopState(prev => ({\n ...prev,\n sameAttempts: prev.sameAttempts + 1,\n loopCount: prev.loopCount + (prev.valueAttempts > prev.sameAttempts ? 0.5 : 0)\n }));\n setPhase('rejection-same');\n onProgress?.(Math.min(30 + totalAttempts * 10, 80));\n }, [assetBase, totalAttempts, onProgress]);\n\n const handleTryAgain = useCallback(() => {\n setPhase('choice');\n }, []);\n\n const handleSeeInsight = useCallback(() => {\n setShowInsight(true);\n setPhase('awareness');\n onProgress?.(90);\n }, [onProgress]);\n\n const handleComplete = useCallback(() => {\n setPhase('complete');\n onProgress?.(100);\n onComplete({\n success: true,\n score: 100,\n data: {\n loopsBeforeInsight: Math.floor(loopState.loopCount),\n totalAttempts,\n valueAttempts: loopState.valueAttempts,\n sameAttempts: loopState.sameAttempts\n },\n rewards: {\n paradoxes: [{\n id: 'migration-paradox',\n name: 'The Migration Paradox',\n description: 'Stakeholders simultaneously demand that a migration adds value AND changes nothing.',\n rarity: 'uncommon'\n }]\n }\n });\n }, [onComplete, onProgress, loopState, totalAttempts]);\n\n return (\n
\n {phase === 'intro' && (\n
\n \n
\n

The Migration Paradox

\n

\n You've been tasked with migrating the core system.\n Your stakeholders are waiting for your strategy.\n

\n \n
\n
\n )}\n\n {phase === 'choice' && (\n
\n \n
\n
\n

Choose Your Approach

\n {loopState.loopCount > 0 && (\n \n LOOP {Math.floor(loopState.loopCount) + 1}\n \n )}\n
\n

\n How will you pitch the migration project?\n

\n
\n \n A\n \n Emphasize Change\n \n \"The new system will add value and enable new capabilities\"\n \n \n \n \n B\n \n Emphasize No Change\n \n \"Everything will work exactly the same as before\"\n \n \n \n
\n {canSeeInsight && !showInsight && (\n \n ✦ Wait... I see the pattern\n \n )}\n
\n
\n )}\n\n {phase === 'rejection-value' && (\n
\n \n
\n
\n ✗ REJECTED\n

\n \"Are you insane? This will break everything!\"\n

\n

\n \"If you want to change the core system, you need to make absolutely\n sure that everything works exactly the same. We can't risk any disruption.\"\n

\n
\n \n {canSeeInsight && !showInsight && (\n \n ✦ Wait... I see the pattern\n \n )}\n
\n
\n )}\n\n {phase === 'rejection-same' && (\n
\n \n
\n
\n ✗ REJECTED\n

\n \"This is insane. Why would we do this?\"\n

\n

\n \"If everything is going to stay exactly the same, why would we spend\n all this time and money replacing the core system? What's the point?\"\n

\n
\n \n {canSeeInsight && !showInsight && (\n \n ✦ Wait... I see the pattern\n \n )}\n
\n
\n )}\n\n {phase === 'awareness' && (\n
\n \n
\n
\n

★ The Paradox Revealed ★

\n \n

\n You've discovered the Migration Paradox: stakeholders\n demand that you change things - to give value. But also that nothing changes, to contain risk.\n

\n

\n The solution is phased delivery. First, prove business case. Then \n prove you can preserve existing functionality. Then introduce new\n capabilities.\n

\n
\n
\"Explore\"
\n
\n
\"Preserve\"
\n
\n
\"Innovate\"
\n
\n
\n
\n \n
\n
\n )}\n\n {phase === 'complete' && (\n
\n \n
\n
\n

★ CHALLENGE COMPLETE ★

\n

\n You experienced {Math.floor(loopState.loopCount)} loop(s) before seeing the pattern.\n

\n
\n SCORE\n 100\n
\n
\n
\n
\n )}\n
\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'migration-paradox',\n displayName: 'The Migration Paradox',\n version: '1.0.0',\n paramSchema: {\n assetBaseUrl: {\n type: 'string',\n label: 'Asset Base URL',\n description: 'Shared CDN or public folder containing presenting.png, insight.png, complete.png, rejectionA_1.png, rejectionA_2.png, and rejectionB_1.png.',\n default: '/glitch/migration-paradox'\n }\n },\n defaultParams: {\n assetBaseUrl: '/glitch/migration-paradox'\n }\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult\n} from './types';\n"],"names":["DEFAULT_ASSET_BASE","REJECTION_A_COUNT","REJECTION_B_COUNT","SCENE_FALLBACKS","normalizeAssetBase","candidate","trimmed","buildAssetUrl","base","assetName","getRandomRejectionImage","choice","assetBase","count","index","SceneMedia","src","alt","fallback","onImageError","jsx","styles","jsxs","MigrationParadox","_config","onComplete","onProgress","theme","className","params","phase","setPhase","useState","loopState","setLoopState","showInsight","setShowInsight","currentRejectionImage","setCurrentRejectionImage","failedImages","setFailedImages","useMemo","images","cssVars","totalAttempts","canSeeInsight","getSceneImage","useCallback","handleImageError","prev","handleStart","handleChooseValue","handleChooseSame","handleTryAgain","handleSeeInsight","handleComplete","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/glitch/glitch_onboarding/glitch.manifest.json b/dist/glitch/glitch_onboarding/glitch.manifest.json new file mode 100644 index 0000000..7685d65 --- /dev/null +++ b/dist/glitch/glitch_onboarding/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "onboarding", + "displayName": "Glitch University Onboarding", + "version": "1.0.0", + "folderName": "glitch_onboarding", + "packageName": "@glitch-components/onboarding", + "entry": "dist/onboarding.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "onboarding", + "narrative" + ] +} diff --git a/dist/glitch/glitch_onboarding/onboarding.js b/dist/glitch/glitch_onboarding/onboarding.js new file mode 100644 index 0000000..9c3499a --- /dev/null +++ b/dist/glitch/glitch_onboarding/onboarding.js @@ -0,0 +1,847 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._container_18jex_3{width:100%;height:100vh;background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden}._grid_18jex_18{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(99,102,241,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.03) 1px,transparent 1px);background-size:40px 40px;opacity:.5;animation:_gridPulse_18jex_1 4s ease-in-out infinite}@keyframes _gridPulse_18jex_1{0%,to{opacity:.3}50%{opacity:.6}}._textBlock_18jex_34{max-width:600px;text-align:center;z-index:10;padding:2rem}._mainText_18jex_41{font-size:1.25rem;line-height:1.8;color:var(--gc-text, #e8e8ec);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards}._mainText_18jex_41._delayed_18jex_50{animation-delay:2s}._questionText_18jex_54{font-size:1.1rem;color:var(--gc-textMuted, #9999a8);font-style:italic;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:3.5s}._sphere_18jex_63{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(99,102,241,.3),rgba(34,211,238,.1) 50%,transparent 70%);border:1px solid rgba(99,102,241,.3);margin:2rem auto;position:relative;animation:_sphereFloat_18jex_1 3s ease-in-out infinite}@keyframes _sphereFloat_18jex_1{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}._sphere_18jex_63._glitching_18jex_82{animation:_sphereGlitch_18jex_1 .15s steps(2) forwards}@keyframes _sphereGlitch_18jex_1{0%{border-radius:50%;filter:none}25%{border-radius:10%;filter:hue-rotate(90deg);transform:scale(1.1) skew(5deg)}50%{border-radius:5%;filter:hue-rotate(180deg) saturate(2);transform:scale(.9) skew(-5deg)}75%{border-radius:20%;filter:hue-rotate(270deg);transform:scale(1.05)}to{border-radius:50%;filter:none;transform:scale(1)}}._voxelOverlay_18jex_113{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(6,1fr);opacity:0}._voxelOverlay_18jex_113._visible_18jex_122{opacity:1;animation:_voxelFlash_18jex_1 .15s steps(1) forwards}._voxel_18jex_113{background:var(--gc-primary, #6366f1);opacity:.8}@keyframes _voxelFlash_18jex_1{0%{opacity:1}to{opacity:0}}._rebelText_18jex_137{font-size:.95rem;color:var(--gc-accent, #22d3ee);margin-top:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:5s}._enterButton_18jex_146{margin-top:3rem;padding:1rem 2.5rem;background:transparent;border:1px solid var(--gc-primary, #6366f1);color:var(--gc-primary, #6366f1);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:6.5s;transition:all .3s ease}._enterButton_18jex_146:hover{background:var(--gc-primary, #6366f1);color:var(--gc-bg, #0a0a0f);box-shadow:0 0 20px #6366f166}._migrationContent_18jex_168{max-width:650px;text-align:center;z-index:10;padding:2rem}._tagline_18jex_175{font-size:1.4rem;color:var(--gc-accent, #22d3ee);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._notList_18jex_183{list-style:none;padding:0;margin:0 0 2rem;text-align:left}._notItem_18jex_190{font-size:1rem;color:var(--gc-textMuted, #9999a8);padding:.5rem 0 .5rem 2rem;position:relative;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._notItem_18jex_190:before{content:"×";position:absolute;left:0;color:#ef4444b3;font-weight:700}._notItem_18jex_190:nth-child(1){animation-delay:.5s}._notItem_18jex_190:nth-child(2){animation-delay:.8s}._notItem_18jex_190:nth-child(3){animation-delay:1.1s}._isText_18jex_212{font-size:1.1rem;color:var(--gc-text, #e8e8ec);margin:2rem 0;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1.8s}._ruleBox_18jex_221{border:1px solid var(--gc-border, #2a2a3a);padding:1.5rem;margin:2rem 0;text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:2.5s}._ruleTitle_18jex_231{font-size:.85rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem;letter-spacing:.1em}._ruleContent_18jex_238{font-size:1rem;color:var(--gc-text, #e8e8ec);line-height:1.6}._continueButton_18jex_244{margin-top:2rem;padding:.8rem 2rem;background:transparent;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-textMuted, #9999a8);font-family:Courier New,monospace;font-size:.9rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards;animation-delay:3.2s;transition:all .3s ease}._continueButton_18jex_244:hover{border-color:var(--gc-primary, #6366f1);color:var(--gc-text, #e8e8ec)}._agreementContent_18jex_265{max-width:550px;text-align:center;z-index:10;padding:2rem}._agreementTitle_18jex_272{font-size:1.2rem;color:var(--gc-textMuted, #9999a8);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._pledgeText_18jex_280{font-size:1.5rem;color:var(--gc-text, #e8e8ec);font-style:italic;margin:2rem 0;padding:1.5rem;border-left:2px solid var(--gc-primary, #6366f1);text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:.5s}._signatureArea_18jex_293{margin:3rem 0;position:relative;height:120px;display:flex;align-items:center;justify-content:center}._paper_18jex_302{width:200px;height:100px;background:#ffffff08;border:1px solid var(--gc-border, #2a2a3a);position:relative;display:flex;align-items:center;justify-content:center}._signatureMark_18jex_313{font-size:4rem;color:var(--gc-primary, #6366f1);opacity:0;transform:scale(0)}._signatureMark_18jex_313._visible_18jex_122{animation:_drawX_18jex_1 .8s ease forwards}@keyframes _drawX_18jex_1{0%{opacity:0;transform:scale(0) rotate(-45deg)}50%{opacity:1;transform:scale(1.2) rotate(0)}to{opacity:1;transform:scale(1) rotate(0)}}._pencil_18jex_339{position:absolute;font-size:2rem;opacity:0;transform:translate(80px,-60px) rotate(-45deg)}._pencil_18jex_339._animating_18jex_346{animation:_pencilDraw_18jex_1 .8s ease forwards}@keyframes _pencilDraw_18jex_1{0%{opacity:1;transform:translate(80px,-60px) rotate(-45deg)}50%{opacity:1;transform:translate(0) rotate(-45deg)}to{opacity:0;transform:translate(-80px,60px) rotate(-45deg)}}._signButton_18jex_365{padding:1rem 2.5rem;background:var(--gc-primary, #6366f1);border:none;color:var(--gc-bg, #0a0a0f);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1s}._signButton_18jex_365:hover{box-shadow:0 0 25px #6366f180;transform:translateY(-2px)}._signButton_18jex_365:disabled{opacity:.5;cursor:not-allowed}._navigationContent_18jex_390{max-width:600px;text-align:center;z-index:10;padding:2rem}._welcomeText_18jex_397{font-size:1rem;color:var(--gc-textMuted, #9999a8);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._choiceButtons_18jex_405{display:flex;flex-direction:column;gap:1.5rem}._choiceButton_18jex_405{padding:1.5rem 2rem;background:#6366f10d;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;text-align:left;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._choiceButton_18jex_405:nth-child(1){animation-delay:.5s}._choiceButton_18jex_405:nth-child(2){animation-delay:.8s}._choiceButton_18jex_405:hover{border-color:var(--gc-primary, #6366f1);background:#6366f11a;transform:translate(5px)}._choiceTitle_18jex_434{font-size:1.1rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem}._choiceDesc_18jex_440{font-size:.85rem;color:var(--gc-textMuted, #9999a8)}._arrow_18jex_445{float:right;color:var(--gc-primary, #6366f1)}@keyframes _fadeInUp_18jex_1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}._screenFadeIn_18jex_463{animation:_screenEnter_18jex_1 .6s ease forwards}@keyframes _screenEnter_18jex_1{0%{opacity:0}to{opacity:1}}')),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})(); +import Be, { useState as q, useEffect as Ae, useCallback as Ie } from "react"; +var ie = { exports: {} }, Y = {}; +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var De; +function _r() { + if (De) return Y; + De = 1; + var A = Be, y = Symbol.for("react.element"), m = Symbol.for("react.fragment"), R = Object.prototype.hasOwnProperty, b = A.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, C = { key: !0, ref: !0, __self: !0, __source: !0 }; + function O(T, d, S) { + var v, j = {}, p = null, I = null; + S !== void 0 && (p = "" + S), d.key !== void 0 && (p = "" + d.key), d.ref !== void 0 && (I = d.ref); + for (v in d) R.call(d, v) && !C.hasOwnProperty(v) && (j[v] = d[v]); + if (T && T.defaultProps) for (v in d = T.defaultProps, d) j[v] === void 0 && (j[v] = d[v]); + return { $$typeof: y, type: T, key: p, ref: I, props: j, _owner: b.current }; + } + return Y.Fragment = m, Y.jsx = O, Y.jsxs = O, Y; +} +var L = {}; +/** + * @license React + * react-jsx-runtime.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var Fe; +function gr() { + return Fe || (Fe = 1, process.env.NODE_ENV !== "production" && function() { + var A = Be, y = Symbol.for("react.element"), m = Symbol.for("react.portal"), R = Symbol.for("react.fragment"), b = Symbol.for("react.strict_mode"), C = Symbol.for("react.profiler"), O = Symbol.for("react.provider"), T = Symbol.for("react.context"), d = Symbol.for("react.forward_ref"), S = Symbol.for("react.suspense"), v = Symbol.for("react.suspense_list"), j = Symbol.for("react.memo"), p = Symbol.for("react.lazy"), I = Symbol.for("react.offscreen"), B = Symbol.iterator, oe = "@@iterator"; + function se(e) { + if (e === null || typeof e != "object") + return null; + var r = B && e[B] || e[oe]; + return typeof r == "function" ? r : null; + } + var k = A.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + function _(e) { + { + for (var r = arguments.length, t = new Array(r > 1 ? r - 1 : 0), i = 1; i < r; i++) + t[i - 1] = arguments[i]; + K("error", e, t); + } + } + function K(e, r, t) { + { + var i = k.ReactDebugCurrentFrame, c = i.getStackAddendum(); + c !== "" && (r += "%s", t = t.concat([c])); + var l = t.map(function(s) { + return String(s); + }); + l.unshift("Warning: " + r), Function.prototype.apply.call(console[e], console, l); + } + } + var E = !1, $ = !1, z = !1, X = !1, $e = !1, ce; + ce = Symbol.for("react.module.reference"); + function Me(e) { + return !!(typeof e == "string" || typeof e == "function" || e === R || e === C || $e || e === b || e === S || e === v || X || e === I || E || $ || z || typeof e == "object" && e !== null && (e.$$typeof === p || e.$$typeof === j || e.$$typeof === O || e.$$typeof === T || e.$$typeof === d || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + e.$$typeof === ce || e.getModuleId !== void 0)); + } + function We(e, r, t) { + var i = e.displayName; + if (i) + return i; + var c = r.displayName || r.name || ""; + return c !== "" ? t + "(" + c + ")" : t; + } + function le(e) { + return e.displayName || "Context"; + } + function w(e) { + if (e == null) + return null; + if (typeof e.tag == "number" && _("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof e == "function") + return e.displayName || e.name || null; + if (typeof e == "string") + return e; + switch (e) { + case R: + return "Fragment"; + case m: + return "Portal"; + case C: + return "Profiler"; + case b: + return "StrictMode"; + case S: + return "Suspense"; + case v: + return "SuspenseList"; + } + if (typeof e == "object") + switch (e.$$typeof) { + case T: + var r = e; + return le(r) + ".Consumer"; + case O: + var t = e; + return le(t._context) + ".Provider"; + case d: + return We(e, e.render, "ForwardRef"); + case j: + var i = e.displayName || null; + return i !== null ? i : w(e.type) || "Memo"; + case p: { + var c = e, l = c._payload, s = c._init; + try { + return w(s(l)); + } catch { + return null; + } + } + } + return null; + } + var N = Object.assign, M = 0, ue, fe, de, ve, _e, ge, he; + function me() { + } + me.__reactDisabledLog = !0; + function Ye() { + { + if (M === 0) { + ue = console.log, fe = console.info, de = console.warn, ve = console.error, _e = console.group, ge = console.groupCollapsed, he = console.groupEnd; + var e = { + configurable: !0, + enumerable: !0, + value: me, + writable: !0 + }; + Object.defineProperties(console, { + info: e, + log: e, + warn: e, + error: e, + group: e, + groupCollapsed: e, + groupEnd: e + }); + } + M++; + } + } + function Le() { + { + if (M--, M === 0) { + var e = { + configurable: !0, + enumerable: !0, + writable: !0 + }; + Object.defineProperties(console, { + log: N({}, e, { + value: ue + }), + info: N({}, e, { + value: fe + }), + warn: N({}, e, { + value: de + }), + error: N({}, e, { + value: ve + }), + group: N({}, e, { + value: _e + }), + groupCollapsed: N({}, e, { + value: ge + }), + groupEnd: N({}, e, { + value: he + }) + }); + } + M < 0 && _("disabledDepth fell below zero. This is a bug in React. Please file an issue."); + } + } + var H = k.ReactCurrentDispatcher, Z; + function U(e, r, t) { + { + if (Z === void 0) + try { + throw Error(); + } catch (c) { + var i = c.stack.trim().match(/\n( *(at )?)/); + Z = i && i[1] || ""; + } + return ` +` + Z + e; + } + } + var Q = !1, V; + { + var Ue = typeof WeakMap == "function" ? WeakMap : Map; + V = new Ue(); + } + function pe(e, r) { + if (!e || Q) + return ""; + { + var t = V.get(e); + if (t !== void 0) + return t; + } + var i; + Q = !0; + var c = Error.prepareStackTrace; + Error.prepareStackTrace = void 0; + var l; + l = H.current, H.current = null, Ye(); + try { + if (r) { + var s = function() { + throw Error(); + }; + if (Object.defineProperty(s.prototype, "props", { + set: function() { + throw Error(); + } + }), typeof Reflect == "object" && Reflect.construct) { + try { + Reflect.construct(s, []); + } catch (h) { + i = h; + } + Reflect.construct(e, [], s); + } else { + try { + s.call(); + } catch (h) { + i = h; + } + e.call(s.prototype); + } + } else { + try { + throw Error(); + } catch (h) { + i = h; + } + e(); + } + } catch (h) { + if (h && i && typeof h.stack == "string") { + for (var o = h.stack.split(` +`), g = i.stack.split(` +`), u = o.length - 1, f = g.length - 1; u >= 1 && f >= 0 && o[u] !== g[f]; ) + f--; + for (; u >= 1 && f >= 0; u--, f--) + if (o[u] !== g[f]) { + if (u !== 1 || f !== 1) + do + if (u--, f--, f < 0 || o[u] !== g[f]) { + var x = ` +` + o[u].replace(" at new ", " at "); + return e.displayName && x.includes("") && (x = x.replace("", e.displayName)), typeof e == "function" && V.set(e, x), x; + } + while (u >= 1 && f >= 0); + break; + } + } + } finally { + Q = !1, H.current = l, Le(), Error.prepareStackTrace = c; + } + var F = e ? e.displayName || e.name : "", P = F ? U(F) : ""; + return typeof e == "function" && V.set(e, P), P; + } + function Ve(e, r, t) { + return pe(e, !1); + } + function Ge(e) { + var r = e.prototype; + return !!(r && r.isReactComponent); + } + function G(e, r, t) { + if (e == null) + return ""; + if (typeof e == "function") + return pe(e, Ge(e)); + if (typeof e == "string") + return U(e); + switch (e) { + case S: + return U("Suspense"); + case v: + return U("SuspenseList"); + } + if (typeof e == "object") + switch (e.$$typeof) { + case d: + return Ve(e.render); + case j: + return G(e.type, r, t); + case p: { + var i = e, c = i._payload, l = i._init; + try { + return G(l(c), r, t); + } catch { + } + } + } + return ""; + } + var W = Object.prototype.hasOwnProperty, xe = {}, je = k.ReactDebugCurrentFrame; + function J(e) { + if (e) { + var r = e._owner, t = G(e.type, e._source, r ? r.type : null); + je.setExtraStackFrame(t); + } else + je.setExtraStackFrame(null); + } + function Je(e, r, t, i, c) { + { + var l = Function.call.bind(W); + for (var s in e) + if (l(e, s)) { + var o = void 0; + try { + if (typeof e[s] != "function") { + var g = Error((i || "React class") + ": " + t + " type `" + s + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof e[s] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."); + throw g.name = "Invariant Violation", g; + } + o = e[s](r, s, i, t, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); + } catch (u) { + o = u; + } + o && !(o instanceof Error) && (J(c), _("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", i || "React class", t, s, typeof o), J(null)), o instanceof Error && !(o.message in xe) && (xe[o.message] = !0, J(c), _("Failed %s type: %s", t, o.message), J(null)); + } + } + } + var qe = Array.isArray; + function ee(e) { + return qe(e); + } + function Ke(e) { + { + var r = typeof Symbol == "function" && Symbol.toStringTag, t = r && e[Symbol.toStringTag] || e.constructor.name || "Object"; + return t; + } + } + function ze(e) { + try { + return ye(e), !1; + } catch { + return !0; + } + } + function ye(e) { + return "" + e; + } + function be(e) { + if (ze(e)) + return _("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Ke(e)), ye(e); + } + var Te = k.ReactCurrentOwner, Xe = { + key: !0, + ref: !0, + __self: !0, + __source: !0 + }, Ee, Re; + function He(e) { + if (W.call(e, "ref")) { + var r = Object.getOwnPropertyDescriptor(e, "ref").get; + if (r && r.isReactWarning) + return !1; + } + return e.ref !== void 0; + } + function Ze(e) { + if (W.call(e, "key")) { + var r = Object.getOwnPropertyDescriptor(e, "key").get; + if (r && r.isReactWarning) + return !1; + } + return e.key !== void 0; + } + function Qe(e, r) { + typeof e.ref == "string" && Te.current; + } + function er(e, r) { + { + var t = function() { + Ee || (Ee = !0, _("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", r)); + }; + t.isReactWarning = !0, Object.defineProperty(e, "key", { + get: t, + configurable: !0 + }); + } + } + function rr(e, r) { + { + var t = function() { + Re || (Re = !0, _("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", r)); + }; + t.isReactWarning = !0, Object.defineProperty(e, "ref", { + get: t, + configurable: !0 + }); + } + } + var tr = function(e, r, t, i, c, l, s) { + var o = { + // This tag allows us to uniquely identify this as a React Element + $$typeof: y, + // Built-in properties that belong on the element + type: e, + key: r, + ref: t, + props: s, + // Record the component responsible for creating this element. + _owner: l + }; + return o._store = {}, Object.defineProperty(o._store, "validated", { + configurable: !1, + enumerable: !1, + writable: !0, + value: !1 + }), Object.defineProperty(o, "_self", { + configurable: !1, + enumerable: !1, + writable: !1, + value: i + }), Object.defineProperty(o, "_source", { + configurable: !1, + enumerable: !1, + writable: !1, + value: c + }), Object.freeze && (Object.freeze(o.props), Object.freeze(o)), o; + }; + function nr(e, r, t, i, c) { + { + var l, s = {}, o = null, g = null; + t !== void 0 && (be(t), o = "" + t), Ze(r) && (be(r.key), o = "" + r.key), He(r) && (g = r.ref, Qe(r, c)); + for (l in r) + W.call(r, l) && !Xe.hasOwnProperty(l) && (s[l] = r[l]); + if (e && e.defaultProps) { + var u = e.defaultProps; + for (l in u) + s[l] === void 0 && (s[l] = u[l]); + } + if (o || g) { + var f = typeof e == "function" ? e.displayName || e.name || "Unknown" : e; + o && er(s, f), g && rr(s, f); + } + return tr(e, o, g, c, i, Te.current, s); + } + } + var re = k.ReactCurrentOwner, Ce = k.ReactDebugCurrentFrame; + function D(e) { + if (e) { + var r = e._owner, t = G(e.type, e._source, r ? r.type : null); + Ce.setExtraStackFrame(t); + } else + Ce.setExtraStackFrame(null); + } + var te; + te = !1; + function ne(e) { + return typeof e == "object" && e !== null && e.$$typeof === y; + } + function Oe() { + { + if (re.current) { + var e = w(re.current.type); + if (e) + return ` + +Check the render method of \`` + e + "`."; + } + return ""; + } + } + function ar(e) { + return ""; + } + var Se = {}; + function ir(e) { + { + var r = Oe(); + if (!r) { + var t = typeof e == "string" ? e : e.displayName || e.name; + t && (r = ` + +Check the top-level render call using <` + t + ">."); + } + return r; + } + } + function we(e, r) { + { + if (!e._store || e._store.validated || e.key != null) + return; + e._store.validated = !0; + var t = ir(r); + if (Se[t]) + return; + Se[t] = !0; + var i = ""; + e && e._owner && e._owner !== re.current && (i = " It was passed a child from " + w(e._owner.type) + "."), D(e), _('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', t, i), D(null); + } + } + function ke(e, r) { + { + if (typeof e != "object") + return; + if (ee(e)) + for (var t = 0; t < e.length; t++) { + var i = e[t]; + ne(i) && we(i, r); + } + else if (ne(e)) + e._store && (e._store.validated = !0); + else if (e) { + var c = se(e); + if (typeof c == "function" && c !== e.entries) + for (var l = c.call(e), s; !(s = l.next()).done; ) + ne(s.value) && we(s.value, r); + } + } + } + function or(e) { + { + var r = e.type; + if (r == null || typeof r == "string") + return; + var t; + if (typeof r == "function") + t = r.propTypes; + else if (typeof r == "object" && (r.$$typeof === d || // Note: Memo only checks outer props here. + // Inner props are checked in the reconciler. + r.$$typeof === j)) + t = r.propTypes; + else + return; + if (t) { + var i = w(r); + Je(t, e.props, "prop", i, e); + } else if (r.PropTypes !== void 0 && !te) { + te = !0; + var c = w(r); + _("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", c || "Unknown"); + } + typeof r.getDefaultProps == "function" && !r.getDefaultProps.isReactClassApproved && _("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead."); + } + } + function sr(e) { + { + for (var r = Object.keys(e.props), t = 0; t < r.length; t++) { + var i = r[t]; + if (i !== "children" && i !== "key") { + D(e), _("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", i), D(null); + break; + } + } + e.ref !== null && (D(e), _("Invalid attribute `ref` supplied to `React.Fragment`."), D(null)); + } + } + var Ne = {}; + function Pe(e, r, t, i, c, l) { + { + var s = Me(e); + if (!s) { + var o = ""; + (e === void 0 || typeof e == "object" && e !== null && Object.keys(e).length === 0) && (o += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."); + var g = ar(); + g ? o += g : o += Oe(); + var u; + e === null ? u = "null" : ee(e) ? u = "array" : e !== void 0 && e.$$typeof === y ? (u = "<" + (w(e.type) || "Unknown") + " />", o = " Did you accidentally export a JSX literal instead of a component?") : u = typeof e, _("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", u, o); + } + var f = nr(e, r, t, c, l); + if (f == null) + return f; + if (s) { + var x = r.children; + if (x !== void 0) + if (i) + if (ee(x)) { + for (var F = 0; F < x.length; F++) + ke(x[F], e); + Object.freeze && Object.freeze(x); + } else + _("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."); + else + ke(x, e); + } + if (W.call(r, "key")) { + var P = w(e), h = Object.keys(r).filter(function(vr) { + return vr !== "key"; + }), ae = h.length > 0 ? "{key: someKey, " + h.join(": ..., ") + ": ...}" : "{key: someKey}"; + if (!Ne[P + ae]) { + var dr = h.length > 0 ? "{" + h.join(": ..., ") + ": ...}" : "{}"; + _(`A props object containing a "key" prop is being spread into JSX: + let props = %s; + <%s {...props} /> +React keys must be passed directly to JSX without using spread: + let props = %s; + <%s key={someKey} {...props} />`, ae, P, dr, P), Ne[P + ae] = !0; + } + } + return e === R ? sr(f) : or(f), f; + } + } + function cr(e, r, t) { + return Pe(e, r, t, !0); + } + function lr(e, r, t) { + return Pe(e, r, t, !1); + } + var ur = lr, fr = cr; + L.Fragment = R, L.jsx = ur, L.jsxs = fr; + }()), L; +} +process.env.NODE_ENV === "production" ? ie.exports = _r() : ie.exports = gr(); +var a = ie.exports; +const hr = "_container_18jex_3", mr = "_grid_18jex_18", pr = "_textBlock_18jex_34", xr = "_mainText_18jex_41", jr = "_delayed_18jex_50", yr = "_sphere_18jex_63", br = "_glitching_18jex_82", Tr = "_voxelOverlay_18jex_113", Er = "_visible_18jex_122", Rr = "_voxel_18jex_113", Cr = "_rebelText_18jex_137", Or = "_enterButton_18jex_146", Sr = "_migrationContent_18jex_168", wr = "_tagline_18jex_175", kr = "_notList_18jex_183", Nr = "_notItem_18jex_190", Pr = "_isText_18jex_212", Ar = "_ruleBox_18jex_221", Ir = "_ruleTitle_18jex_231", Dr = "_ruleContent_18jex_238", Fr = "_continueButton_18jex_244", Br = "_agreementContent_18jex_265", $r = "_agreementTitle_18jex_272", Mr = "_pledgeText_18jex_280", Wr = "_signatureArea_18jex_293", Yr = "_paper_18jex_302", Lr = "_signatureMark_18jex_313", Ur = "_pencil_18jex_339", Vr = "_animating_18jex_346", Gr = "_signButton_18jex_365", Jr = "_navigationContent_18jex_390", qr = "_welcomeText_18jex_397", Kr = "_choiceButtons_18jex_405", zr = "_choiceButton_18jex_405", Xr = "_choiceTitle_18jex_434", Hr = "_choiceDesc_18jex_440", Zr = "_arrow_18jex_445", Qr = "_screenFadeIn_18jex_463", n = { + container: hr, + grid: mr, + textBlock: pr, + mainText: xr, + delayed: jr, + sphere: yr, + glitching: br, + voxelOverlay: Tr, + visible: Er, + voxel: Rr, + rebelText: Cr, + enterButton: Or, + migrationContent: Sr, + tagline: wr, + notList: kr, + notItem: Nr, + isText: Pr, + ruleBox: Ar, + ruleTitle: Ir, + ruleContent: Dr, + continueButton: Fr, + agreementContent: Br, + agreementTitle: $r, + pledgeText: Mr, + signatureArea: Wr, + paper: Yr, + signatureMark: Lr, + pencil: Ur, + animating: Vr, + signButton: Gr, + navigationContent: Jr, + welcomeText: qr, + choiceButtons: Kr, + choiceButton: zr, + choiceTitle: Xr, + choiceDesc: Hr, + arrow: Zr, + screenFadeIn: Qr +}; +function rt({ + onComplete: A, + onProgress: y, + theme: m, + className: R +}) { + const [b, C] = q("disorientation"), [O, T] = q(!1), [d, S] = q(!1), [v, j] = q(!1), p = m ? { + "--gc-primary": m.primary, + "--gc-accent": m.accent, + "--gc-bg": m.bg, + "--gc-bgSecondary": m.bgSecondary, + "--gc-text": m.text, + "--gc-textMuted": m.textMuted, + "--gc-border": m.border + } : {}; + Ae(() => { + const E = { + disorientation: 25, + migration: 50, + agreement: 75, + navigation: 100 + }; + y == null || y(E[b]); + }, [b, y]), Ae(() => { + if (b !== "disorientation") return; + const E = () => { + T(!0), setTimeout(() => T(!1), 150); + }, $ = setTimeout(E, 4e3), z = setInterval(() => { + const X = Math.random() * 3e3 + 3e3; + setTimeout(E, X); + }, 6e3); + return () => { + clearTimeout($), clearInterval(z); + }; + }, [b]); + const I = Ie(() => { + S(!0), setTimeout(() => { + j(!0), setTimeout(() => { + C("navigation"); + }, 1e3); + }, 800); + }, []), B = Ie((E) => { + A({ + success: !0, + data: { + choice: E, + agreedToTerms: !0 + }, + rewards: { + achievements: ["onboarding_complete"], + unlocks: E === "lesson" ? ["tech_tree"] : ["character_builder"] + } + }); + }, [A]), K = { + disorientation: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.textBlock, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.mainText, children: "You are standing on a smooth sphere. It looks continuous. It feels continuous." }), + /* @__PURE__ */ a.jsx("div", { className: n.sphere + (O ? ` ${n.glitching}` : ""), children: /* @__PURE__ */ a.jsx("div", { className: n.voxelOverlay + (O ? ` ${n.visible}` : ""), children: Array.from({ length: 36 }).map((E, $) => /* @__PURE__ */ a.jsx("div", { className: n.voxel, style: { + opacity: Math.random() > 0.5 ? 0.8 : 0 + } }, $)) }) }), + /* @__PURE__ */ a.jsx("p", { className: `${n.mainText} ${n.delayed}`, children: "But what if it isn't?" }), + /* @__PURE__ */ a.jsxs("p", { className: n.rebelText, children: [ + "Most people assume the universe is continuous.", + /* @__PURE__ */ a.jsx("br", {}), + "We're not most people." + ] }), + /* @__PURE__ */ a.jsx( + "button", + { + className: n.enterButton, + onClick: () => C("migration"), + children: "Enter the Glitch" + } + ) + ] }) + ] }), + migration: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.migrationContent, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.tagline, children: "A migration project for physics. That might fail. Or not." }), + /* @__PURE__ */ a.jsxs("ul", { className: n.notList, children: [ + /* @__PURE__ */ a.jsx("li", { className: n.notItem, children: "This is not a fringe physics forum." }), + /* @__PURE__ */ a.jsx("li", { className: n.notItem, children: "This is not an online RPG." }), + /* @__PURE__ */ a.jsx("li", { className: n.notItem, children: "This is not a lecture series in philosophy, physics and computer science." }) + ] }), + /* @__PURE__ */ a.jsx("p", { className: n.isText, children: "It's all of those things." }), + /* @__PURE__ */ a.jsxs("div", { className: n.ruleBox, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.ruleTitle, children: "RULE 1" }), + /* @__PURE__ */ a.jsxs("div", { className: n.ruleContent, children: [ + "Nothing is obvious. Show it.", + /* @__PURE__ */ a.jsx("br", {}), + "Predictions matter more than opinions." + ] }) + ] }), + /* @__PURE__ */ a.jsx( + "button", + { + className: n.continueButton, + onClick: () => C("agreement"), + children: "Continue →" + } + ) + ] }) + ] }), + agreement: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.agreementContent, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.agreementTitle, children: "Make your mark and sign here" }), + /* @__PURE__ */ a.jsx("div", { className: n.pledgeText, children: '"I agree to test ideas against reality"' }), + /* @__PURE__ */ a.jsxs("div", { className: n.signatureArea, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.paper, children: /* @__PURE__ */ a.jsx("span", { className: n.signatureMark + (v ? ` ${n.visible}` : ""), children: "✕" }) }), + /* @__PURE__ */ a.jsx("span", { className: n.pencil + (d ? ` ${n.animating}` : ""), children: "✏️" }) + ] }), + !v && /* @__PURE__ */ a.jsx( + "button", + { + className: n.signButton, + onClick: I, + disabled: d, + children: "Sign" + } + ) + ] }) + ] }), + navigation: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.navigationContent, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.welcomeText, children: "Welcome to the Glitch. What would you like to do?" }), + /* @__PURE__ */ a.jsxs("div", { className: n.choiceButtons, children: [ + /* @__PURE__ */ a.jsxs( + "button", + { + className: n.choiceButton, + onClick: () => B("lesson"), + children: [ + /* @__PURE__ */ a.jsxs("div", { className: n.choiceTitle, children: [ + "Take me to the first lesson ", + /* @__PURE__ */ a.jsx("span", { className: n.arrow, children: "→" }) + ] }), + /* @__PURE__ */ a.jsx("div", { className: n.choiceDesc, children: "Opens the tech tree and begins your journey" }) + ] + } + ), + /* @__PURE__ */ a.jsxs( + "button", + { + className: n.choiceButton, + onClick: () => B("character"), + children: [ + /* @__PURE__ */ a.jsxs("div", { className: n.choiceTitle, children: [ + "Build my character first ", + /* @__PURE__ */ a.jsx("span", { className: n.arrow, children: "→" }) + ] }), + /* @__PURE__ */ a.jsx("div", { className: n.choiceDesc, children: "Customize your presence in the Glitch" }) + ] + } + ) + ] }) + ] }) + ] }) + }; + return /* @__PURE__ */ a.jsx("div", { className: R, children: K[b]() }); +} +const tt = { + name: "onboarding", + version: "1.0.0", + displayName: "Glitch University Onboarding", + description: "Multi-screen onboarding experience introducing users to the Glitch universe", + author: "Glitch.university", + paramSchema: {}, + tags: ["onboarding", "intro", "welcome"] +}; +export { + rt as OnboardingComponent, + rt as default, + tt as metadata +}; +//# sourceMappingURL=onboarding.js.map diff --git a/dist/glitch/glitch_onboarding/onboarding.js.map b/dist/glitch/glitch_onboarding/onboarding.js.map new file mode 100644 index 0000000..b9d5e06 --- /dev/null +++ b/dist/glitch/glitch_onboarding/onboarding.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onboarding.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/OnboardingComponent.tsx","../src/index.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie.
\n // or
). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n //
, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n {\n if (hasOwnProperty.call(props, 'key')) {\n var componentName = getComponentNameFromType(type);\n var keys = Object.keys(props).filter(function (k) {\n return k !== 'key';\n });\n var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n error('A props object containing a \"key\" prop is being spread into JSX:\\n' + ' let props = %s;\\n' + ' <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + ' let props = %s;\\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n didWarnAboutKeySpread[componentName + beforeExample] = true;\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport type { GlitchComponentProps, OnboardingScreen } from './types'\nimport styles from './styles.module.css'\n\nexport function OnboardingComponent({\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const [currentScreen, setCurrentScreen] = useState('disorientation')\n const [sphereGlitching, setSphereGlitching] = useState(false)\n const [signatureAnimating, setSignatureAnimating] = useState(false)\n const [hasAgreed, setHasAgreed] = useState(false)\n\n // Apply theme as CSS variables\n const themeStyle = theme ? {\n '--gc-primary': theme.primary,\n '--gc-accent': theme.accent,\n '--gc-bg': theme.bg,\n '--gc-bgSecondary': theme.bgSecondary,\n '--gc-text': theme.text,\n '--gc-textMuted': theme.textMuted,\n '--gc-border': theme.border,\n } as React.CSSProperties : {}\n\n // Progress tracking\n useEffect(() => {\n const progressMap: Record = {\n disorientation: 25,\n migration: 50,\n agreement: 75,\n navigation: 100\n }\n onProgress?.(progressMap[currentScreen])\n }, [currentScreen, onProgress])\n\n // Sphere glitch effect on Screen 1\n useEffect(() => {\n if (currentScreen !== 'disorientation') return\n\n const triggerGlitch = () => {\n setSphereGlitching(true)\n setTimeout(() => setSphereGlitching(false), 150)\n }\n\n // First glitch after 4 seconds\n const initialTimeout = setTimeout(triggerGlitch, 4000)\n\n // Random glitches every 3-6 seconds\n const interval = setInterval(() => {\n const delay = Math.random() * 3000 + 3000\n setTimeout(triggerGlitch, delay)\n }, 6000)\n\n return () => {\n clearTimeout(initialTimeout)\n clearInterval(interval)\n }\n }, [currentScreen])\n\n const handleSign = useCallback(() => {\n setSignatureAnimating(true)\n setTimeout(() => {\n setHasAgreed(true)\n setTimeout(() => {\n setCurrentScreen('navigation')\n }, 1000)\n }, 800)\n }, [])\n\n const handleComplete = useCallback((choice: 'lesson' | 'character') => {\n onComplete({\n success: true,\n data: {\n choice,\n agreedToTerms: true\n },\n rewards: {\n achievements: ['onboarding_complete'],\n unlocks: choice === 'lesson' ? ['tech_tree'] : ['character_builder']\n }\n })\n }, [onComplete])\n\n // Screen 1: The Disorientation\n const renderDisorientation = () => (\n
\n
\n\n
\n

\n You are standing on a smooth sphere. It looks continuous. It feels continuous.\n

\n\n
\n
\n {Array.from({ length: 36 }).map((_, i) => (\n
0.5 ? 0.8 : 0\n }} />\n ))}\n
\n
\n\n

\n But what if it isn't?\n

\n\n

\n Most people assume the universe is continuous.
\n We're not most people.\n

\n\n setCurrentScreen('migration')}\n >\n Enter the Glitch\n \n
\n
\n )\n\n // Screen 2: Migration Description\n const renderMigration = () => (\n
\n
\n\n
\n

\n A migration project for physics. That might fail. Or not.\n

\n\n
    \n
  • This is not a fringe physics forum.
  • \n
  • This is not an online RPG.
  • \n
  • This is not a lecture series in philosophy, physics and computer science.
  • \n
\n\n

\n It's all of those things.\n

\n\n
\n
RULE 1
\n
\n Nothing is obvious. Show it.
\n Predictions matter more than opinions.\n
\n
\n\n setCurrentScreen('agreement')}\n >\n Continue →\n \n
\n
\n )\n\n // Screen 3: Agreement\n const renderAgreement = () => (\n
\n
\n\n
\n

\n Make your mark and sign here\n

\n\n
\n \"I agree to test ideas against reality\"\n
\n\n
\n
\n \n ✕\n \n
\n \n ✏️\n \n
\n\n {!hasAgreed && (\n \n Sign\n \n )}\n
\n
\n )\n\n // Screen 4: Navigation\n const renderNavigation = () => (\n
\n
\n\n
\n

\n Welcome to the Glitch. What would you like to do?\n

\n\n
\n handleComplete('lesson')}\n >\n
\n Take me to the first lesson \n
\n
\n Opens the tech tree and begins your journey\n
\n \n\n handleComplete('character')}\n >\n
\n Build my character first \n
\n
\n Customize your presence in the Glitch\n
\n \n
\n
\n
\n )\n\n // Render current screen\n const screenRenderers: Record JSX.Element> = {\n disorientation: renderDisorientation,\n migration: renderMigration,\n agreement: renderAgreement,\n navigation: renderNavigation\n }\n\n return (\n
\n {screenRenderers[currentScreen]()}\n
\n )\n}\n","import { OnboardingComponent } from './OnboardingComponent'\nimport type { GlitchComponentProps, GlitchComponentResult } from './types'\n\nexport { OnboardingComponent }\nexport type { GlitchComponentProps, GlitchComponentResult }\n\nexport const metadata = {\n name: 'onboarding',\n version: '1.0.0',\n displayName: 'Glitch University Onboarding',\n description: 'Multi-screen onboarding experience introducing users to the Glitch universe',\n author: 'Glitch.university',\n paramSchema: {},\n tags: ['onboarding', 'intro', 'welcome']\n}\n\nexport default OnboardingComponent\n"],"names":["f","require$$0","k","l","m","n","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min","React","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","args","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","props","reenableLogs","ReactCurrentDispatcher","prefix","describeBuiltInComponentFrame","name","source","ownerFn","x","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","Component","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","value","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","key","ref","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","didWarnAboutKeySpread","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","children","beforeExample","afterExample","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","require$$1","OnboardingComponent","onComplete","onProgress","theme","className","currentScreen","setCurrentScreen","useState","sphereGlitching","setSphereGlitching","signatureAnimating","setSignatureAnimating","hasAgreed","setHasAgreed","themeStyle","useEffect","progressMap","triggerGlitch","initialTimeout","interval","delay","handleSign","useCallback","handleComplete","choice","screenRenderers","styles","_","metadata"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/glitch/glitch_onboarding2/glitch.manifest.json b/dist/glitch/glitch_onboarding2/glitch.manifest.json new file mode 100644 index 0000000..bbcbe10 --- /dev/null +++ b/dist/glitch/glitch_onboarding2/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "onboarding2", + "displayName": "Facility Slideshow", + "version": "1.0.0", + "folderName": "glitch_onboarding2", + "packageName": "@glitch-components/onboarding2", + "entry": "dist/onboarding2.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "onboarding", + "slideshow" + ] +} diff --git a/dist/glitch/glitch_onboarding2/onboarding2.js b/dist/glitch/glitch_onboarding2/onboarding2.js new file mode 100644 index 0000000..d254f0b --- /dev/null +++ b/dist/glitch/glitch_onboarding2/onboarding2.js @@ -0,0 +1,212 @@ +(function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode('._wrapper_61dhl_1{--gc-bg: var(--color-bg, #0a0a0f);--gc-bg-secondary: var(--color-bg-secondary, #12121a);--gc-text: var(--color-text, #e8e8ec);--gc-text-muted: var(--color-text-muted, #9999a8);--gc-primary: var(--color-primary, #6366f1);--gc-accent: var(--color-accent, #22d3ee);--gc-border: var(--color-border, #2a2a3a);--gc-font-main: var(--font-main, "Iceland", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-display: var(--font-display, "Russo One", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-text: "VT323", var(--font-mono, monospace);width:100%}._frame_61dhl_15{position:relative;width:100%;height:100dvh;min-height:100vh;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border) 60%,transparent);color:var(--gc-text);font-family:var(--gc-font-text);background:radial-gradient(circle at 18% 14%,color-mix(in srgb,var(--gc-accent) 18%,transparent),transparent 35%),radial-gradient(circle at 88% 2%,color-mix(in srgb,var(--gc-primary) 22%,transparent),transparent 30%),linear-gradient(165deg,var(--gc-bg),var(--gc-bg-secondary))}._scan_61dhl_30{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.18;mix-blend-mode:screen;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.1) 0,rgba(255,255,255,.1) 1px,transparent 1px,transparent 3px);animation:_scanDrift_61dhl_1 8s linear infinite}._stack_61dhl_47{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:22px 16px 18px}._meta_61dhl_57{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gc-text-muted);font-family:var(--gc-font-main)}._progressTrack_61dhl_68{margin-top:8px;width:100%;height:3px;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--gc-accent) 20%,transparent)}._progressFill_61dhl_77{height:100%;transition:width .24s ease;background:linear-gradient(90deg,var(--gc-accent),color-mix(in srgb,var(--gc-primary) 45%,var(--gc-accent)))}._slide_61dhl_87{flex:1;display:flex;flex-direction:column;justify-content:center;gap:20px}._title_61dhl_95{margin:0;width:fit-content;font-family:var(--gc-font-display);text-transform:uppercase;letter-spacing:.02em;line-height:1.04;font-size:clamp(28px,8.5vw,46px)}._rgbGlitch_61dhl_105{position:relative;display:inline-block}._rgbBase_61dhl_110{position:relative;z-index:1;color:color-mix(in srgb,var(--gc-text) 38%,#000)}._rgbLayer_61dhl_116{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;opacity:.2}._layerR_61dhl_124{color:#ff3737bf;animation:_layerRShift_61dhl_1 2.4s infinite steps(2,end)}._layerG_61dhl_129{color:#37ff5fbf;animation:_layerGShift_61dhl_1 2.1s infinite steps(2,end)}._layerB_61dhl_134{color:#4182ffbf;animation:_layerBShift_61dhl_1 2.7s infinite steps(2,end)}._content_61dhl_139{display:flex;flex-direction:column;gap:10px;font-family:var(--gc-font-text);font-size:clamp(16px,4.2vw,22px);line-height:1.45}._line_61dhl_148{margin:0;color:var(--gc-text)}._spacer_61dhl_153{margin:0;min-height:.6em}._list_61dhl_158{margin:3px 0 0;padding-left:1.1em;display:flex;flex-direction:column;gap:7px}._warning_61dhl_166{list-style:none;padding-left:0}._warning_61dhl_166 li:before{content:"- ";color:var(--gc-accent)}._cta_61dhl_176{margin-top:10px;width:fit-content;border:1px solid var(--gc-accent);background:color-mix(in srgb,var(--gc-accent) 8%,transparent);color:var(--gc-accent);font:inherit;letter-spacing:.06em;text-transform:uppercase;padding:10px 14px;cursor:pointer;font-family:var(--gc-font-main);transition:transform .14s ease,background-color .14s ease}._cta_61dhl_176:active{transform:scale(.98)}._controls_61dhl_195{display:grid;grid-template-columns:1fr 1fr;gap:8px}._navButton_61dhl_201{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:color-mix(in srgb,var(--gc-bg-secondary) 75%,transparent);color:var(--gc-text);font:inherit;text-transform:uppercase;letter-spacing:.08em;padding:10px 12px;cursor:pointer;font-family:var(--gc-font-main)}._navButton_61dhl_201:disabled{opacity:.45;cursor:not-allowed}@keyframes _layerRShift_61dhl_1{0%,81%,to{transform:translate(0)}84%{transform:translate(-4px,2px)}88%{transform:translate(4px,-2px)}92%{transform:translate(2px)}96%{transform:translate(-2px,2px)}}@keyframes _layerGShift_61dhl_1{0%,79%,to{transform:translate(0)}83%{transform:translate(2px,-2px)}87%{transform:translate(-2px,4px)}91%{transform:translateY(-2px)}95%{transform:translate(2px)}}@keyframes _layerBShift_61dhl_1{0%,82%,to{transform:translate(0)}86%{transform:translate(4px)}90%{transform:translate(-4px,-2px)}94%{transform:translate(2px,2px)}98%{transform:translate(-2px)}}@keyframes _scanDrift_61dhl_1{0%{transform:translateY(-10px)}to{transform:translateY(10px)}}@media (min-width: 600px){._frame_61dhl_15{max-width:420px;margin:0 auto}}')),document.head.appendChild(t)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); +import { jsx as t, jsxs as c } from "react/jsx-runtime"; +import { useState as x, useRef as B, useMemo as $, useEffect as G, useCallback as u } from "react"; +const L = "_wrapper_61dhl_1", E = "_frame_61dhl_15", F = "_scan_61dhl_30", C = "_stack_61dhl_47", R = "_meta_61dhl_57", Y = "_progressTrack_61dhl_68", I = "_progressFill_61dhl_77", W = "_slide_61dhl_87", M = "_title_61dhl_95", A = "_rgbGlitch_61dhl_105", D = "_rgbBase_61dhl_110", H = "_rgbLayer_61dhl_116", P = "_layerR_61dhl_124", j = "_layerG_61dhl_129", O = "_layerB_61dhl_134", q = "_content_61dhl_139", U = "_line_61dhl_148", z = "_spacer_61dhl_153", J = "_list_61dhl_158", K = "_warning_61dhl_166", Q = "_cta_61dhl_176", V = "_controls_61dhl_195", X = "_navButton_61dhl_201", e = { + wrapper: L, + frame: E, + scan: F, + stack: C, + meta: R, + progressTrack: Y, + progressFill: I, + slide: W, + title: M, + rgbGlitch: A, + rgbBase: D, + rgbLayer: H, + layerR: P, + layerG: j, + layerB: O, + content: q, + line: U, + spacer: z, + list: J, + warning: K, + cta: Q, + controls: V, + navButton: X +}, Z = 40, i = [ + { + title: "The Premise", + lines: [ + "This facility tests foundational assumptions.", + "", + "Not interpretations.", + "Assumptions." + ] + }, + { + title: "The method", + lines: [ + "This is math and philosophy.", + "Make assumption.", + "Pretend it's true.", + "Where does that lead?" + ] + }, + { + title: "The law", + lines: [ + "We make predictions.", + "If they fail, the idea fails." + ] + }, + { + title: "The way", + lines: ["You will:"], + bullets: [ + "Pass challenges", + "Collect paradoxes", + "Examine anomalies", + "Learn to think sharply" + ] + }, + { + title: "Warning", + lines: ["You may feel:"], + bullets: [ + "This is not a game!", + "Temporary confusion", + "The urge to defend existing physics!" + ], + bulletStyle: "warning", + after: "Good. This is not for everyone." + }, + { + title: "How This Works", + lines: [ + "Watch a short module", + "Pass the glitch gate", + "Unlock the next tech", + "That's it. For now." + ] + }, + { + title: "Proceed", + lines: [ + "You may proceed as an investigator.", + "Begin at the intersection", + "Get briefed" + ], + cta: "[ ENTER FACILITY ]" + } +]; +function ae({ + config: _, + onComplete: p, + onProgress: d, + theme: r, + className: m +}) { + const [n, g] = x(0), o = B(null), f = $(() => r ? { + "--gc-primary": r.primary, + "--gc-accent": r.accent, + "--gc-bg": r.bg, + "--gc-bg-secondary": r.bgSecondary, + "--gc-text": r.text, + "--gc-text-muted": r.textMuted, + "--gc-border": r.border + } : {}, [r]); + G(() => { + const a = (n + 1) / i.length * 100; + d == null || d(Math.round(a)); + }, [n, d]); + const h = u((a) => { + if (a > 0 && n === i.length - 1) { + g(0); + return; + } + const l = n + a; + l < 0 || l >= i.length || g(l); + }, [n]), N = u((a) => { + var l; + o.current = ((l = a.changedTouches[0]) == null ? void 0 : l.clientY) ?? null; + }, []), T = u((a) => { + var b; + if (o.current == null) return; + const l = ((b = a.changedTouches[0]) == null ? void 0 : b.clientY) ?? o.current, y = o.current - l; + Math.abs(y) > Z && h(y > 0 ? 1 : -1), o.current = null; + }, [h]), w = u(() => { + p({ + success: !0, + score: 100, + data: { + sequence: "facility-slideshow", + configId: _.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString() + } + }); + }, [_.id, p]), s = i[n], v = n === i.length - 1, S = (n + 1) / i.length * 100, k = m ? `${e.wrapper} ${m}` : e.wrapper; + return /* @__PURE__ */ t("div", { className: k, style: f, children: /* @__PURE__ */ c( + "section", + { + className: e.frame, + "aria-label": "Facility onboarding slideshow", + onTouchStart: N, + onTouchEnd: T, + children: [ + /* @__PURE__ */ t("div", { className: e.scan, "aria-hidden": "true" }), + /* @__PURE__ */ c("div", { className: e.stack, children: [ + /* @__PURE__ */ c("header", { children: [ + /* @__PURE__ */ c("div", { className: e.meta, children: [ + /* @__PURE__ */ t("span", { children: "Glitch Facility" }), + /* @__PURE__ */ c("span", { children: [ + n + 1, + " / ", + i.length + ] }) + ] }), + /* @__PURE__ */ t("div", { className: e.progressTrack, children: /* @__PURE__ */ t("div", { className: e.progressFill, style: { width: `${S}%` } }) }) + ] }), + /* @__PURE__ */ c("article", { className: e.slide, "aria-live": "polite", children: [ + /* @__PURE__ */ t("h2", { className: e.title, children: /* @__PURE__ */ c("span", { className: e.rgbGlitch, children: [ + /* @__PURE__ */ t("span", { className: e.rgbBase, children: s.title }), + /* @__PURE__ */ t("span", { className: `${e.rgbLayer} ${e.layerR}`, "aria-hidden": "true", children: s.title }), + /* @__PURE__ */ t("span", { className: `${e.rgbLayer} ${e.layerG}`, "aria-hidden": "true", children: s.title }), + /* @__PURE__ */ t("span", { className: `${e.rgbLayer} ${e.layerB}`, "aria-hidden": "true", children: s.title }) + ] }) }), + /* @__PURE__ */ c("div", { className: e.content, children: [ + s.lines.map((a, l) => a === "" ? /* @__PURE__ */ t("p", { className: e.spacer, "aria-hidden": "true" }, `line-${l}`) : /* @__PURE__ */ t("p", { className: e.line, children: a }, `line-${l}`)), + s.bullets && /* @__PURE__ */ t("ul", { className: `${e.list} ${s.bulletStyle === "warning" ? e.warning : ""}`, children: s.bullets.map((a) => /* @__PURE__ */ t("li", { children: a }, a)) }), + s.after && /* @__PURE__ */ t("p", { className: e.line, children: s.after }), + s.cta && /* @__PURE__ */ t("button", { type: "button", className: e.cta, onClick: w, children: s.cta }) + ] }) + ] }), + /* @__PURE__ */ c("nav", { className: e.controls, "aria-label": "Slideshow controls", children: [ + /* @__PURE__ */ t( + "button", + { + type: "button", + className: e.navButton, + onClick: () => h(-1), + disabled: n === 0, + children: "Previous" + } + ), + /* @__PURE__ */ t( + "button", + { + type: "button", + className: e.navButton, + onClick: () => h(1), + children: v ? "Restart" : "Next" + } + ) + ] }) + ] }) + ] + } + ) }); +} +const se = { + name: "onboarding2", + displayName: "Facility Slideshow", + version: "1.0.0", + paramSchema: {}, + defaultParams: {} +}; +export { + ae as default, + se as metadata +}; +//# sourceMappingURL=onboarding2.js.map diff --git a/dist/glitch/glitch_onboarding2/onboarding2.js.map b/dist/glitch/glitch_onboarding2/onboarding2.js.map new file mode 100644 index 0000000..e9f29bc --- /dev/null +++ b/dist/glitch/glitch_onboarding2/onboarding2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onboarding2.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { CSSProperties, TouchEvent } from 'react'\nimport type { GlitchComponentProps, SlideData } from './types'\nimport styles from './styles.module.css'\n\nconst SWIPE_THRESHOLD = 40\n\nconst SLIDES: SlideData[] = [\n {\n title: 'The Premise',\n lines: [\n 'This facility tests foundational assumptions.',\n '',\n 'Not interpretations.',\n 'Assumptions.'\n ]\n },\n {\n title: 'The method',\n lines: [\n 'This is math and philosophy.',\n 'Make assumption.',\n \"Pretend it's true.\",\n 'Where does that lead?'\n ]\n },\n {\n title: 'The law',\n lines: [\n 'We make predictions.',\n 'If they fail, the idea fails.'\n ]\n },\n {\n title: 'The way',\n lines: ['You will:'],\n bullets: [\n 'Pass challenges',\n 'Collect paradoxes',\n 'Examine anomalies',\n 'Learn to think sharply'\n ]\n },\n {\n title: 'Warning',\n lines: ['You may feel:'],\n bullets: [\n 'This is not a game!',\n 'Temporary confusion',\n 'The urge to defend existing physics!'\n ],\n bulletStyle: 'warning',\n after: 'Good. This is not for everyone.'\n },\n {\n title: 'How This Works',\n lines: [\n 'Watch a short module',\n 'Pass the glitch gate',\n 'Unlock the next tech',\n \"That's it. For now.\",\n ],\n },\n {\n title: 'Proceed',\n lines: [\n 'You may proceed as an investigator.',\n 'Begin at the intersection',\n 'Get briefed',\n ],\n cta: '[ ENTER FACILITY ]'\n }\n]\n\nexport default function Component({\n config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const [index, setIndex] = useState(0)\n const touchStartY = useRef(null)\n\n const themeStyle = useMemo(() => {\n if (!theme) return {}\n\n return {\n '--gc-primary': theme.primary,\n '--gc-accent': theme.accent,\n '--gc-bg': theme.bg,\n '--gc-bg-secondary': theme.bgSecondary,\n '--gc-text': theme.text,\n '--gc-text-muted': theme.textMuted,\n '--gc-border': theme.border\n } as CSSProperties\n }, [theme])\n\n useEffect(() => {\n const percent = ((index + 1) / SLIDES.length) * 100\n onProgress?.(Math.round(percent))\n }, [index, onProgress])\n\n const move = useCallback((direction: -1 | 1) => {\n if (direction > 0 && index === SLIDES.length - 1) {\n setIndex(0)\n return\n }\n\n const next = index + direction\n if (next < 0 || next >= SLIDES.length) return\n setIndex(next)\n }, [index])\n\n const handleTouchStart = useCallback((event: TouchEvent) => {\n touchStartY.current = event.changedTouches[0]?.clientY ?? null\n }, [])\n\n const handleTouchEnd = useCallback((event: TouchEvent) => {\n if (touchStartY.current == null) return\n\n const endY = event.changedTouches[0]?.clientY ?? touchStartY.current\n const delta = touchStartY.current - endY\n\n if (Math.abs(delta) > SWIPE_THRESHOLD) {\n move(delta > 0 ? 1 : -1)\n }\n\n touchStartY.current = null\n }, [move])\n\n const handleComplete = useCallback(() => {\n onComplete({\n success: true,\n score: 100,\n data: {\n sequence: 'facility-slideshow',\n configId: config.id,\n completedAt: new Date().toISOString()\n }\n })\n }, [config.id, onComplete])\n\n const slide = SLIDES[index]\n const isLastSlide = index === SLIDES.length - 1\n const progress = ((index + 1) / SLIDES.length) * 100\n const rootClassName = className ? `${styles.wrapper} ${className}` : styles.wrapper\n\n return (\n
\n \n \n )\n}\n","import Component from './Component'\nimport type { GlitchComponentMetadata } from './types'\n\nexport default Component\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'onboarding2',\n displayName: 'Facility Slideshow',\n version: '1.0.0',\n paramSchema: {},\n defaultParams: {}\n}\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n GlitchTheme,\n GlitchComponentMetadata,\n SlideData\n} from './types'\n"],"names":["SWIPE_THRESHOLD","SLIDES","Component","config","onComplete","onProgress","theme","className","index","setIndex","useState","touchStartY","useRef","themeStyle","useMemo","useEffect","percent","move","useCallback","direction","next","handleTouchStart","event","_a","handleTouchEnd","endY","delta","handleComplete","slide","isLastSlide","progress","rootClassName","styles","jsx","jsxs","line","lineIndex","item","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/glitch/glitch_sphere_paradox/glitch.manifest.json b/dist/glitch/glitch_sphere_paradox/glitch.manifest.json new file mode 100644 index 0000000..503f205 --- /dev/null +++ b/dist/glitch/glitch_sphere_paradox/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "sphere-paradox", + "displayName": "Create a Perfect Sphere", + "version": "1.0.0", + "folderName": "glitch_sphere_paradox", + "packageName": "sphere-paradox", + "entry": "dist/sphere-paradox.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "3d", + "paradox" + ] +} diff --git a/dist/glitch/glitch_sphere_paradox/sphere-paradox.js b/dist/glitch/glitch_sphere_paradox/sphere-paradox.js new file mode 100644 index 0000000..c3ecc55 --- /dev/null +++ b/dist/glitch/glitch_sphere_paradox/sphere-paradox.js @@ -0,0 +1,352 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._container_101xd_1{background:radial-gradient(circle at top,rgba(99,102,241,.14),transparent 48%),linear-gradient(180deg,var(--gc-bg-secondary, #12121a),var(--gc-bg, #0a0a0f));color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:Russo One,system-ui,-apple-system,sans-serif;line-height:1.5;width:100%;min-height:100%}._container_101xd_1,._container_101xd_1 *,._container_101xd_1 *:before,._container_101xd_1 *:after{box-sizing:inherit}._frame_101xd_20{width:100%;aspect-ratio:16 / 9;padding:var(--frame-pad, 1rem)}._squareLayout_101xd_26{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:var(--panel-gap, 1rem)}._squarePanel_101xd_35{position:relative;flex:0 0 auto;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent);border-radius:28px;box-shadow:0 28px 70px #00000040}._viewportPanel_101xd_44{background:radial-gradient(circle at 50% 18%,rgba(34,211,238,.2),transparent 32%),linear-gradient(160deg,rgba(18,18,26,.95),rgba(10,10,15,.98))}._contentPanel_101xd_50{background:linear-gradient(180deg,rgba(18,18,26,.96),rgba(10,10,15,.98)),var(--gc-bg, #0a0a0f)}._panelBody_101xd_56{width:100%;height:100%;padding:clamp(1rem,3vw,2rem);display:flex;flex-direction:column;justify-content:center;gap:1rem}._copy_101xd_66{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.15rem);line-height:1.65}._muted_101xd_73{color:var(--gc-text-muted, #9999a8)}._badge_101xd_77{align-self:flex-start;padding:.35rem .7rem;border-radius:999px;background:rgba(99,102,241,.14);color:var(--gc-primary, #6366f1);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}._startButton_101xd_88,._choiceButton_101xd_89,._completeButton_101xd_90{border:none;border-radius:14px;padding:.95rem 1.2rem;font:inherit;color:#fff;cursor:pointer;transition:transform .18s ease,filter .18s ease,border-color .18s ease,background .18s ease}._startButton_101xd_88:hover,._choiceButton_101xd_89:hover,._completeButton_101xd_90:hover{transform:translateY(-1px);filter:brightness(1.06)}._startButton_101xd_88,._completeButton_101xd_90{background:linear-gradient(135deg,var(--gc-primary, #6366f1),var(--gc-accent, #22d3ee))}._sliderSection_101xd_112{display:flex;flex-direction:column;gap:.8rem}._sliderHeader_101xd_118{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}._sliderLabel_101xd_125{color:var(--gc-text-muted, #9999a8);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}._sliderValue_101xd_132{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(1.2rem,2.4vw,1.8rem)}._valueInfinity_101xd_138{color:#ef4444}._slider_101xd_112{width:100%;height:12px;border-radius:999px;background:rgba(255,255,255,.08);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}._slider_101xd_112::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:26px;height:26px;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._slider_101xd_112::-moz-range-thumb{width:26px;height:26px;border:0;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._sliderInfinity_101xd_170{background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(239,68,68,.7))}._sliderInfinity_101xd_170::-webkit-slider-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderInfinity_101xd_170::-moz-range-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderHint_101xd_184{color:var(--gc-text-muted, #9999a8);font-size:.85rem}._statsOverlay_101xd_189{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:space-between;gap:.75rem;pointer-events:none}._stat_101xd_189{min-width:0;padding:.7rem .85rem;border-radius:16px;background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._statLabel_101xd_208{display:block;margin-bottom:.2rem;color:var(--gc-text-muted, #9999a8);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}._statValue_101xd_217{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(.95rem,1.8vw,1.15rem)}._statInfinity_101xd_223{color:#ef4444}._warning_101xd_227{display:flex;flex-direction:column;gap:1rem}._warningText_101xd_233,._warningQuestion_101xd_234{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.1rem);line-height:1.65}._warningQuestion_101xd_234{color:#ef4444}._warningChoices_101xd_245{display:flex;flex-direction:column;gap:.85rem}._choiceButton_101xd_89{text-align:left;background:rgba(255,255,255,.04);border:1px solid var(--gc-border, #2a2a3a)}._choiceInfinity_101xd_257{border-color:#ef444473}._choiceInfinity_101xd_257:hover{background:rgba(239,68,68,.14)}._choiceFinite_101xd_265{border-color:#22c55e73}._choiceFinite_101xd_265:hover{background:rgba(34,197,94,.14)}._resultStats_101xd_273{padding:1rem 1.1rem;border-radius:20px;background:rgba(255,255,255,.04);border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent)}._resultRow_101xd_280{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;color:var(--gc-text-muted, #9999a8);font-size:.92rem}._resultRow_101xd_280+._resultRow_101xd_280{border-top:1px solid rgba(255,255,255,.08)}._resultRow_101xd_280 span:last-child{font-family:SF Mono,Monaco,Consolas,monospace;font-weight:700}._resultMessage_101xd_298{margin:0;color:var(--gc-text-muted, #9999a8);font-size:clamp(.92rem,1.8vw,1rem);line-height:1.7}._resultMessage_101xd_298 strong{color:var(--gc-text, #e8e8ec)}._resultSuccess_101xd_309{color:#22c55e}._resultAccent_101xd_313{color:var(--gc-accent, #22d3ee)}@media (orientation: portrait),(max-aspect-ratio: 1 / 1){._frame_101xd_20{aspect-ratio:1 / 2}}@media (max-width: 768px){._squarePanel_101xd_35{border-radius:22px}._panelBody_101xd_56{padding:1rem}._statsOverlay_101xd_189{right:.75rem;bottom:.75rem;left:.75rem}._stat_101xd_189{padding:.55rem .7rem}}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); +import { jsx as e, jsxs as a, Fragment as _ } from "react/jsx-runtime"; +import { useState as N, useRef as F, useMemo as q, useEffect as z, useCallback as V } from "react"; +import { Canvas as I, useFrame as Q } from "@react-three/fiber"; +import { OrbitControls as W } from "@react-three/drei"; +import * as te from "three"; +const ne = "_container_101xd_1", ie = "_frame_101xd_20", se = "_squareLayout_101xd_26", ae = "_squarePanel_101xd_35", ce = "_viewportPanel_101xd_44", oe = "_contentPanel_101xd_50", re = "_panelBody_101xd_56", le = "_copy_101xd_66", de = "_muted_101xd_73", ue = "_badge_101xd_77", fe = "_startButton_101xd_88", he = "_choiceButton_101xd_89", me = "_completeButton_101xd_90", pe = "_sliderSection_101xd_112", _e = "_sliderHeader_101xd_118", ye = "_sliderLabel_101xd_125", xe = "_sliderValue_101xd_132", ge = "_valueInfinity_101xd_138", ve = "_slider_101xd_112", be = "_sliderInfinity_101xd_170", Se = "_sliderHint_101xd_184", we = "_statsOverlay_101xd_189", Ne = "_stat_101xd_189", Me = "_statLabel_101xd_208", Ie = "_statValue_101xd_217", $e = "_statInfinity_101xd_223", Re = "_warning_101xd_227", Le = "_warningText_101xd_233", Ce = "_warningQuestion_101xd_234", Be = "_warningChoices_101xd_245", Ve = "_choiceInfinity_101xd_257", ke = "_choiceFinite_101xd_265", qe = "_resultStats_101xd_273", ze = "_resultRow_101xd_280", Ae = "_resultMessage_101xd_298", Fe = "_resultSuccess_101xd_309", He = "_resultAccent_101xd_313", t = { + container: ne, + frame: ie, + squareLayout: se, + squarePanel: ae, + viewportPanel: ce, + contentPanel: oe, + panelBody: re, + copy: le, + muted: de, + badge: ue, + startButton: fe, + choiceButton: he, + completeButton: me, + sliderSection: pe, + sliderHeader: _e, + sliderLabel: ye, + sliderValue: xe, + valueInfinity: ge, + slider: ve, + sliderInfinity: be, + sliderHint: Se, + statsOverlay: we, + stat: Ne, + statLabel: Me, + statValue: Ie, + statInfinity: $e, + warning: Re, + warningText: Le, + warningQuestion: Ce, + warningChoices: Be, + choiceInfinity: Ve, + choiceFinite: ke, + resultStats: qe, + resultRow: ze, + resultMessage: Ae, + resultSuccess: Fe, + resultAccent: He +}, A = 5, y = 41; +function Oe(d) { + const r = Math.min(Math.max(d, A), y); + return r % 2 === 0 ? r + 1 : r; +} +function j(d) { + const r = [], n = d, f = 2 / n; + for (let u = 0; u < n; u++) + for (let m = 0; m < n; m++) + for (let o = 0; o < n; o++) { + const g = -1 + f * (u + 0.5), i = -1 + f * (m + 0.5), x = -1 + f * (o + 0.5), p = Math.sqrt(g * g + i * i + x * x), $ = f * 1.2; + p <= 1 && p > 1 - $ && r.push(g, i, x); + } + return { positions: r, count: r.length / 3 }; +} +function Te({ resolution: d, isInfinity: r }) { + const s = F(null), n = q(() => new te.Object3D(), []), { positions: f, count: u, cubeSize: m } = q(() => { + const i = Math.min(d, y), x = j(i), p = 2 / i * 0.85; + return { + positions: x.positions, + count: x.count, + cubeSize: p + }; + }, [d]); + z(() => { + if (!(!s.current || u === 0)) { + for (let i = 0; i < u; i++) + n.position.set( + f[i * 3], + f[i * 3 + 1], + f[i * 3 + 2] + ), n.scale.setScalar(m), n.updateMatrix(), s.current.setMatrixAt(i, n.matrix); + s.current.instanceMatrix.needsUpdate = !0, s.current.count = u; + } + }, [f, u, m, n]), Q((i) => { + s.current && (s.current.rotation.y = i.clock.elapsedTime * 0.2); + }); + const o = r ? "#ef4444" : "#818cf8"; + return /* @__PURE__ */ a("instancedMesh", { ref: s, args: [void 0, void 0, 1e4], frustumCulled: !1, children: [ + /* @__PURE__ */ e("boxGeometry", { args: [1, 1, 1] }), + /* @__PURE__ */ e( + "meshStandardMaterial", + { + color: o, + emissive: o, + emissiveIntensity: 0.05, + roughness: 0.4, + metalness: 0.3 + } + ) + ] }); +} +function k({ resolution: d, isInfinity: r }) { + return /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("ambientLight", { intensity: 0.3 }), + /* @__PURE__ */ e("directionalLight", { position: [5, 8, 5], intensity: 1.2, castShadow: !0 }), + /* @__PURE__ */ e("directionalLight", { position: [-3, -2, -4], intensity: 0.4, color: "#22d3ee" }), + /* @__PURE__ */ e("pointLight", { position: [0, 5, 0], intensity: 0.5 }), + /* @__PURE__ */ e(Te, { resolution: d, isInfinity: r }), + /* @__PURE__ */ e( + W, + { + enableZoom: !0, + enablePan: !1, + autoRotate: !1, + minDistance: 2, + maxDistance: 6 + } + ) + ] }); +} +function De() { + const d = F(null); + return Q((r) => { + d.current && (d.current.rotation.y = r.clock.elapsedTime * 0.3); + }), /* @__PURE__ */ a("mesh", { ref: d, children: [ + /* @__PURE__ */ e("sphereGeometry", { args: [1, 128, 128] }), + /* @__PURE__ */ e( + "meshStandardMaterial", + { + color: "#22d3ee", + emissive: "#22d3ee", + emissiveIntensity: 0.08, + roughness: 0.15, + metalness: 0.9, + envMapIntensity: 1 + } + ) + ] }); +} +function Ee() { + return /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("ambientLight", { intensity: 0.3 }), + /* @__PURE__ */ e("directionalLight", { position: [5, 8, 5], intensity: 1.5 }), + /* @__PURE__ */ e("directionalLight", { position: [-4, -2, -3], intensity: 0.5, color: "#6366f1" }), + /* @__PURE__ */ e("pointLight", { position: [0, 3, 3], intensity: 0.8, color: "#ffffff" }), + /* @__PURE__ */ e(De, {}), + /* @__PURE__ */ e( + W, + { + enableZoom: !1, + enablePan: !1, + autoRotate: !0, + autoRotateSpeed: 1.5 + } + ) + ] }); +} +function Pe({ + config: d, + onComplete: r, + onProgress: s, + theme: n, + className: f +}) { + const [u, m] = N("exploring"), [o, g] = N(A), [i, x] = N(null), [p, $] = N(!1), H = F(null), [v, K] = N({ + stacked: !1, + panelSize: 320, + gap: 16, + padding: 16 + }), M = o >= y, O = q(() => j(Math.min(o, y)).count, [o]); + z(() => { + const c = H.current; + if (!c || typeof ResizeObserver > "u") + return; + const l = () => { + const { width: h, height: S } = c.getBoundingClientRect(); + if (!h || !S) + return; + const C = S > h, E = Math.min(h, S), w = Math.round(Math.max(12, Math.min(28, E * 0.04))), B = Math.round(Math.max(12, Math.min(22, E * 0.03))), X = C ? h - w * 2 : (h - w * 2 - B) / 2, ee = C ? (S - w * 2 - B) / 2 : S - w * 2; + K({ + stacked: C, + panelSize: Math.max(0, Math.floor(Math.min(X, ee))), + gap: B, + padding: w + }); + }; + l(); + const b = new ResizeObserver(l); + return b.observe(c), () => b.disconnect(); + }, []); + const P = { + "--gc-primary": (n == null ? void 0 : n.primary) || "#6366f1", + "--gc-accent": (n == null ? void 0 : n.accent) || "#22d3ee", + "--gc-bg": (n == null ? void 0 : n.bg) || "#0a0a0f", + "--gc-bg-secondary": (n == null ? void 0 : n.bgSecondary) || "#12121a", + "--gc-text": (n == null ? void 0 : n.text) || "#e8e8ec", + "--gc-text-muted": (n == null ? void 0 : n.textMuted) || "#9999a8", + "--gc-border": (n == null ? void 0 : n.border) || "#2a2a3a", + "--panel-gap": `${v.gap}px`, + "--frame-pad": `${v.padding}px` + }, T = { + width: `${v.panelSize}px`, + height: `${v.panelSize}px` + }; + z(() => { + s == null || s(10); + }, [s]); + const G = V((c) => { + const l = Oe(parseInt(c.target.value, 10)); + g(l); + const b = 10 + l / y * 40; + s == null || s(Math.min(b, 50)), l >= y && !p && (m("warning"), $(!0), s == null || s(70)); + }, [p, s, y]), D = V((c) => { + x(c), m("result"), s == null || s(100); + }, [s]), Z = V(() => { + r({ + success: !0, + score: 100, + data: { + choice: i, + finalResolution: o, + exploredInfinity: p, + completedAt: (/* @__PURE__ */ new Date()).toISOString() + } + }); + }, [i, o, p, r]), U = (c) => c >= y ? "∞" : c.toString(), Y = (c, l) => l ? "∞" : c.toLocaleString(), J = (c, l) => { + if (l) + return "∞"; + const h = c * 80; + return h < 1024 ? `${h} B` : h < 1024 * 1024 ? `${(h / 1024).toFixed(1)} KB` : `${(h / (1024 * 1024)).toFixed(2)} MB`; + }, R = (c, l) => /* @__PURE__ */ a("div", { className: `${t.squarePanel} ${t.viewportPanel}`, style: T, children: [ + c, + /* @__PURE__ */ a("div", { className: t.statsOverlay, children: [ + /* @__PURE__ */ a("div", { className: t.stat, children: [ + /* @__PURE__ */ e("span", { className: t.statLabel, children: "Blocks" }), + /* @__PURE__ */ e("span", { className: `${t.statValue} ${l ? t.statInfinity : ""}`, children: Y(O, l) }) + ] }), + /* @__PURE__ */ a("div", { className: t.stat, children: [ + /* @__PURE__ */ e("span", { className: t.statLabel, children: "Memory" }), + /* @__PURE__ */ e("span", { className: `${t.statValue} ${l ? t.statInfinity : ""}`, children: J(O, l) }) + ] }) + ] }) + ] }), L = (c) => /* @__PURE__ */ e("div", { className: `${t.squarePanel} ${t.contentPanel}`, style: T, children: /* @__PURE__ */ e("div", { className: t.panelBody, children: c }) }); + return /* @__PURE__ */ e("div", { className: `${t.container} ${f || ""}`, style: P, children: /* @__PURE__ */ e("div", { ref: H, className: t.frame, children: /* @__PURE__ */ a( + "div", + { + className: t.squareLayout, + style: { flexDirection: v.stacked ? "column" : "row" }, + children: [ + u === "exploring" && /* @__PURE__ */ a(_, { children: [ + R( + /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: M }) }), + M + ), + L( + /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("div", { className: t.badge, children: "Resolution" }), + /* @__PURE__ */ e("p", { className: `${t.copy} ${t.muted}`, children: "Every step adds more cubes to the shell. Keep sliding until the approximation breaks open." }), + /* @__PURE__ */ a("div", { className: t.sliderSection, children: [ + /* @__PURE__ */ a("div", { className: t.sliderHeader, children: [ + /* @__PURE__ */ e("span", { className: t.sliderLabel, children: "Current Level" }), + /* @__PURE__ */ e("span", { className: `${t.sliderValue} ${M ? t.valueInfinity : ""}`, children: U(o) }) + ] }), + /* @__PURE__ */ e( + "input", + { + type: "range", + min: A, + max: y, + step: "2", + value: o, + onChange: G, + className: `${t.slider} ${M ? t.sliderInfinity : ""}` + } + ), + /* @__PURE__ */ e("div", { className: t.sliderHint, children: "Drag right to approach a perfectly smooth sphere." }) + ] }) + ] }) + ) + ] }), + u === "warning" && /* @__PURE__ */ a(_, { children: [ + R( + /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: !0 }) }), + !0 + ), + L( + /* @__PURE__ */ a("div", { className: t.warning, children: [ + /* @__PURE__ */ e("div", { className: t.badge, children: "Limit Reached" }), + /* @__PURE__ */ e("p", { className: t.warningText, children: "At infinite resolution, the sphere needs infinitely many blocks." }), + /* @__PURE__ */ e("p", { className: t.warningText, children: "Infinitely many blocks means infinite information and unbounded memory." }), + /* @__PURE__ */ e("p", { className: t.warningQuestion, children: "Do you want the perfect sphere anyway?" }), + /* @__PURE__ */ a("div", { className: t.warningChoices, children: [ + /* @__PURE__ */ e( + "button", + { + className: `${t.choiceButton} ${t.choiceInfinity}`, + onClick: () => D("infinity"), + children: "Embrace Infinity" + } + ), + /* @__PURE__ */ e( + "button", + { + className: `${t.choiceButton} ${t.choiceFinite}`, + onClick: () => D("finite"), + children: "Keep It Finite" + } + ) + ] }) + ] }) + ) + ] }), + u === "result" && /* @__PURE__ */ a(_, { children: [ + R( + i === "infinity" ? /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3], fov: 50 }, children: /* @__PURE__ */ e(Ee, {}) }) : /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: !1 }) }), + i === "infinity" + ), + L( + /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("div", { className: t.badge, children: i === "finite" ? "Finite Wins" : "Infinity Chosen" }), + /* @__PURE__ */ a("div", { className: t.resultStats, children: [ + /* @__PURE__ */ a("div", { className: t.resultRow, children: [ + /* @__PURE__ */ e("span", { children: "Memory Required" }), + /* @__PURE__ */ e("span", { className: i === "finite" ? t.resultSuccess : t.resultAccent, children: i === "finite" ? "Finite" : "∞" }) + ] }), + /* @__PURE__ */ a("div", { className: t.resultRow, children: [ + /* @__PURE__ */ e("span", { children: "Simulation Possible" }), + /* @__PURE__ */ e("span", { className: i === "finite" ? t.resultSuccess : t.resultAccent, children: i === "finite" ? "Yes" : "Only in theory" }) + ] }) + ] }), + /* @__PURE__ */ e("p", { className: t.resultMessage, children: i === "finite" ? /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("strong", { children: "Discreteness can be enough." }), + " A finite model never becomes perfect, but it can get close enough to feel continuous." + ] }) : /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("strong", { children: "Perfect smoothness costs infinity." }), + " A mathematically exact sphere cannot be simulated without infinite information." + ] }) }), + /* @__PURE__ */ e("button", { className: t.completeButton, onClick: Z, children: "Complete Challenge" }) + ] }) + ) + ] }) + ] + } + ) }) }); +} +const Ge = { + name: "sphere-paradox", + displayName: "Create a Perfect Sphere", + version: "1.0.0", + paramSchema: {}, + defaultParams: {} +}; +export { + Pe as default, + Ge as metadata +}; +//# sourceMappingURL=sphere-paradox.js.map diff --git a/dist/glitch/glitch_sphere_paradox/sphere-paradox.js.map b/dist/glitch/glitch_sphere_paradox/sphere-paradox.js.map new file mode 100644 index 0000000..159cadb --- /dev/null +++ b/dist/glitch/glitch_sphere_paradox/sphere-paradox.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sphere-paradox.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useState,\n useRef,\n useEffect,\n type CSSProperties,\n type ChangeEvent,\n type ReactNode\n} from 'react';\nimport { Canvas, useFrame } from '@react-three/fiber';\nimport { OrbitControls } from '@react-three/drei';\nimport * as THREE from 'three';\nimport styles from './styles.module.css';\nimport type { GlitchComponentProps } from './types';\n\ninterface VoxelSphereProps {\n resolution: number;\n isInfinity: boolean;\n}\n\nconst minResolution = 5;\nconst maxResolution = 41;\n\nfunction normalizeOddResolution(value: number): number {\n const clamped = Math.min(Math.max(value, minResolution), maxResolution);\n return clamped % 2 === 0 ? clamped + 1 : clamped;\n}\n\n// Generate voxel positions for a solid sphere (filled, not just shell)\nfunction generateVoxelSphere(resolution: number): { positions: number[], count: number } {\n const positions: number[] = [];\n const radius = 1.0;\n\n // Number of voxels along each axis\n const gridSize = resolution;\n const voxelSize = 2 / gridSize;\n\n for (let ix = 0; ix < gridSize; ix++) {\n for (let iy = 0; iy < gridSize; iy++) {\n for (let iz = 0; iz < gridSize; iz++) {\n // Center of this voxel\n const x = -1 + voxelSize * (ix + 0.5);\n const y = -1 + voxelSize * (iy + 0.5);\n const z = -1 + voxelSize * (iz + 0.5);\n\n const dist = Math.sqrt(x * x + y * y + z * z);\n\n // Include voxels on the surface (shell)\n // Shell thickness scales with voxel size\n const shellThickness = voxelSize * 1.2;\n if (dist <= radius && dist > radius - shellThickness) {\n positions.push(x, y, z);\n }\n }\n }\n }\n\n return { positions, count: positions.length / 3 };\n}\n\nfunction VoxelSphere({ resolution, isInfinity }: VoxelSphereProps) {\n const meshRef = useRef(null);\n const dummy = useMemo(() => new THREE.Object3D(), []);\n\n // Generate voxel data\n const { positions, count, cubeSize } = useMemo(() => {\n const effectiveRes = Math.min(resolution, maxResolution);\n const data = generateVoxelSphere(effectiveRes);\n const size = (2 / effectiveRes) * 0.85; // Slightly smaller to show gaps\n return {\n positions: data.positions,\n count: data.count,\n cubeSize: size\n };\n }, [resolution]);\n\n // Update instance matrices when positions change\n useEffect(() => {\n if (!meshRef.current || count === 0) return;\n\n for (let i = 0; i < count; i++) {\n dummy.position.set(\n positions[i * 3],\n positions[i * 3 + 1],\n positions[i * 3 + 2]\n );\n dummy.scale.setScalar(cubeSize);\n dummy.updateMatrix();\n meshRef.current.setMatrixAt(i, dummy.matrix);\n }\n meshRef.current.instanceMatrix.needsUpdate = true;\n meshRef.current.count = count;\n }, [positions, count, cubeSize, dummy]);\n\n // Rotate the sphere\n useFrame((state) => {\n if (meshRef.current) {\n meshRef.current.rotation.y = state.clock.elapsedTime * 0.2;\n }\n });\n\n const color = isInfinity ? '#ef4444' : '#818cf8';\n\n // Use a large initial count to avoid recreating the mesh\n const maxInstances = 10000;\n\n return (\n \n \n \n \n );\n}\n\nfunction Scene({ resolution, isInfinity }: VoxelSphereProps) {\n return (\n <>\n \n \n \n \n \n \n \n );\n}\n\n// Smooth parametric sphere for the \"infinity\" result\nfunction SmoothSphere() {\n const meshRef = useRef(null);\n\n useFrame((state) => {\n if (meshRef.current) {\n meshRef.current.rotation.y = state.clock.elapsedTime * 0.3;\n }\n });\n\n return (\n \n \n \n \n );\n}\n\nfunction SmoothSphereScene() {\n return (\n <>\n \n \n \n \n \n \n \n );\n}\n\ntype Phase = 'exploring' | 'warning' | 'result';\ntype Choice = 'infinity' | 'finite' | null;\n\ninterface LayoutState {\n stacked: boolean;\n panelSize: number;\n gap: number;\n padding: number;\n}\n\nexport default function SphereParadox({\n config: _config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n void _config;\n const [phase, setPhase] = useState('exploring');\n const [resolution, setResolution] = useState(minResolution);\n const [choice, setChoice] = useState(null);\n const [hasSeenWarning, setHasSeenWarning] = useState(false);\n const frameRef = useRef(null);\n const [layout, setLayout] = useState({\n stacked: false,\n panelSize: 320,\n gap: 16,\n padding: 16\n });\n const isAtInfinity = resolution >= maxResolution;\n\n // Calculate actual voxel count\n const voxelCount = useMemo(() => {\n const data = generateVoxelSphere(Math.min(resolution, maxResolution));\n return data.count;\n }, [resolution]);\n\n useEffect(() => {\n const frame = frameRef.current;\n if (!frame || typeof ResizeObserver === 'undefined') return;\n\n const measure = () => {\n const { width, height } = frame.getBoundingClientRect();\n if (!width || !height) return;\n\n const stacked = height > width;\n const minEdge = Math.min(width, height);\n const padding = Math.round(Math.max(12, Math.min(28, minEdge * 0.04)));\n const gap = Math.round(Math.max(12, Math.min(22, minEdge * 0.03)));\n const maxSquareWidth = stacked\n ? width - padding * 2\n : (width - padding * 2 - gap) / 2;\n const maxSquareHeight = stacked\n ? (height - padding * 2 - gap) / 2\n : height - padding * 2;\n\n setLayout({\n stacked,\n panelSize: Math.max(0, Math.floor(Math.min(maxSquareWidth, maxSquareHeight))),\n gap,\n padding\n });\n };\n\n measure();\n\n const observer = new ResizeObserver(measure);\n observer.observe(frame);\n\n return () => observer.disconnect();\n }, []);\n\n const cssVars = {\n '--gc-primary': theme?.primary || '#6366f1',\n '--gc-accent': theme?.accent || '#22d3ee',\n '--gc-bg': theme?.bg || '#0a0a0f',\n '--gc-bg-secondary': theme?.bgSecondary || '#12121a',\n '--gc-text': theme?.text || '#e8e8ec',\n '--gc-text-muted': theme?.textMuted || '#9999a8',\n '--gc-border': theme?.border || '#2a2a3a',\n '--panel-gap': `${layout.gap}px`,\n '--frame-pad': `${layout.padding}px`\n } as CSSProperties;\n\n const squareStyle = {\n width: `${layout.panelSize}px`,\n height: `${layout.panelSize}px`\n } as CSSProperties;\n\n useEffect(() => {\n onProgress?.(10);\n }, [onProgress]);\n\n const handleSliderChange = useCallback((e: ChangeEvent) => {\n const val = normalizeOddResolution(parseInt(e.target.value, 10));\n setResolution(val);\n\n const progress = 10 + (val / maxResolution) * 40;\n onProgress?.(Math.min(progress, 50));\n\n if (val >= maxResolution && !hasSeenWarning) {\n setPhase('warning');\n setHasSeenWarning(true);\n onProgress?.(70);\n }\n }, [hasSeenWarning, onProgress, maxResolution]);\n\n const handleChoice = useCallback((selectedChoice: 'infinity' | 'finite') => {\n setChoice(selectedChoice);\n setPhase('result');\n onProgress?.(100);\n }, [onProgress]);\n\n const handleComplete = useCallback(() => {\n // Both choices succeed - this is an educational step, not a gate\n onComplete({\n success: true,\n score: 100,\n data: {\n choice,\n finalResolution: resolution,\n exploredInfinity: hasSeenWarning,\n completedAt: new Date().toISOString()\n }\n });\n }, [choice, resolution, hasSeenWarning, onComplete]);\n\n const formatResolution = (res: number) => {\n if (res >= maxResolution) return '∞';\n return res.toString();\n };\n\n const formatVoxelCount = (count: number, isInf: boolean) => {\n if (isInf) return '∞';\n return count.toLocaleString();\n };\n\n const formatMemory = (count: number, isInf: boolean) => {\n if (isInf) return '∞';\n const bytesPerVoxel = 80;\n const bytes = count * bytesPerVoxel;\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;\n };\n\n const renderViewportPanel = (scene: ReactNode, isInf: boolean) => (\n
\n {scene}\n
\n
\n Blocks\n \n {formatVoxelCount(voxelCount, isInf)}\n \n
\n
\n Memory\n \n {formatMemory(voxelCount, isInf)}\n \n
\n
\n
\n );\n\n const renderContentPanel = (content: ReactNode) => (\n
\n
{content}
\n
\n );\n\n return (\n
\n
\n \n {phase === 'exploring' && (\n <>\n {renderViewportPanel(\n \n \n ,\n isAtInfinity\n )}\n {renderContentPanel(\n <>\n
Resolution
\n

\n Every step adds more cubes to the shell. Keep sliding until the approximation breaks open.\n

\n\n
\n
\n Current Level\n \n {formatResolution(resolution)}\n \n
\n \n
\n Drag right to approach a perfectly smooth sphere.\n
\n
\n \n )}\n \n )}\n\n {phase === 'warning' && (\n <>\n {renderViewportPanel(\n \n \n ,\n true\n )}\n {renderContentPanel(\n
\n
Limit Reached
\n

\n At infinite resolution, the sphere needs infinitely many blocks.\n

\n

\n Infinitely many blocks means infinite information and unbounded memory.\n

\n

\n Do you want the perfect sphere anyway?\n

\n
\n handleChoice('infinity')}\n >\n Embrace Infinity\n \n handleChoice('finite')}\n >\n Keep It Finite\n \n
\n
\n )}\n \n )}\n\n {phase === 'result' && (\n <>\n {renderViewportPanel(\n choice === 'infinity' ? (\n \n \n \n ) : (\n \n \n \n ),\n choice === 'infinity'\n )}\n {renderContentPanel(\n <>\n
\n {choice === 'finite' ? 'Finite Wins' : 'Infinity Chosen'}\n
\n
\n
\n Memory Required\n \n {choice === 'finite' ? 'Finite' : '∞'}\n \n
\n
\n Simulation Possible\n \n {choice === 'finite' ? 'Yes' : 'Only in theory'}\n \n
\n
\n\n

\n {choice === 'finite' ? (\n <>\n Discreteness can be enough. A finite model never becomes perfect, but it can get close enough to feel continuous.\n \n ) : (\n <>\n Perfect smoothness costs infinity. A mathematically exact sphere cannot be simulated without infinite information.\n \n )}\n

\n\n \n \n )}\n \n )}\n
\n
\n
\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'sphere-paradox',\n displayName: 'Create a Perfect Sphere',\n version: '1.0.0',\n paramSchema: {},\n defaultParams: {}\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult\n} from './types';\n"],"names":["minResolution","maxResolution","normalizeOddResolution","value","clamped","generateVoxelSphere","resolution","positions","gridSize","voxelSize","ix","iy","iz","x","y","z","dist","shellThickness","VoxelSphere","isInfinity","meshRef","useRef","dummy","useMemo","THREE","count","cubeSize","effectiveRes","data","size","useEffect","useFrame","state","color","jsxs","jsx","Scene","Fragment","OrbitControls","SmoothSphere","SmoothSphereScene","SphereParadox","_config","onComplete","onProgress","theme","className","phase","setPhase","useState","setResolution","choice","setChoice","hasSeenWarning","setHasSeenWarning","frameRef","layout","setLayout","isAtInfinity","voxelCount","frame","measure","width","height","stacked","minEdge","padding","gap","maxSquareWidth","maxSquareHeight","observer","cssVars","squareStyle","handleSliderChange","useCallback","e","val","progress","handleChoice","selectedChoice","handleComplete","formatResolution","res","formatVoxelCount","isInf","formatMemory","bytes","renderViewportPanel","scene","styles","renderContentPanel","content","Canvas","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/glitch/glitch_voxel_universe/glitch.manifest.json b/dist/glitch/glitch_voxel_universe/glitch.manifest.json new file mode 100644 index 0000000..978bde3 --- /dev/null +++ b/dist/glitch/glitch_voxel_universe/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "voxel-universe", + "displayName": "Voxel Universe", + "version": "1.0.0", + "folderName": "glitch_voxel_universe", + "packageName": "@glitch-components/voxel-universe", + "entry": "dist/voxel_universe.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "voxel", + "geometry" + ] +} diff --git a/dist/glitch/glitch_voxel_universe/host.js b/dist/glitch/glitch_voxel_universe/host.js new file mode 100644 index 0000000..434595e --- /dev/null +++ b/dist/glitch/glitch_voxel_universe/host.js @@ -0,0 +1,29 @@ +import React from "react"; +import { createRoot } from "react-dom/client"; +import VoxelUniverse, { metadata } from "./voxel_universe.js"; + +const rootElement = document.getElementById("root"); + +if (rootElement) { + createRoot(rootElement).render( + React.createElement(VoxelUniverse, { + config: { + id: "voxel-universe-hosted", + name: metadata?.name ?? "voxel_universe", + version: metadata?.version ?? "1.0.0", + params: metadata?.defaultParams ?? {} + }, + theme: { + primary: "#45c4b0", + accent: "#ff7a59", + bg: "#0d1117", + bgSecondary: "#182237", + text: "#f1f4ef", + textMuted: "#b6c0d4", + border: "#34516f" + }, + onProgress: () => {}, + onComplete: () => {} + }) + ); +} diff --git a/dist/glitch/glitch_voxel_universe/index.html b/dist/glitch/glitch_voxel_universe/index.html new file mode 100644 index 0000000..0db95d2 --- /dev/null +++ b/dist/glitch/glitch_voxel_universe/index.html @@ -0,0 +1,34 @@ + + + + + + Voxel Universe + + + + +
+ + + diff --git a/dist/glitch/glitch_voxel_universe/voxel_universe.js b/dist/glitch/glitch_voxel_universe/voxel_universe.js new file mode 100644 index 0000000..cf33839 --- /dev/null +++ b/dist/glitch/glitch_voxel_universe/voxel_universe.js @@ -0,0 +1,14400 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._wrapper_1xs2z_1{--gc-paper: #f2f0ea;box-sizing:border-box;width:100%;height:100%;min-height:100%;margin:0;padding:0;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:24px;background:radial-gradient(circle at 12% 8%,color-mix(in srgb,var(--gc-primary, #45c4b0) 16%,transparent),transparent 34%),radial-gradient(circle at 88% 10%,color-mix(in srgb,var(--gc-accent, #ff7a59) 14%,transparent),transparent 28%),linear-gradient(160deg,var(--gc-bg, #0d1117),var(--gc-bg-secondary, #182237));color:var(--gc-text, #f1f4ef);box-shadow:0 24px 64px #00000047;display:grid;place-items:center}._wrapper_1xs2z_1,._wrapper_1xs2z_1 *,._wrapper_1xs2z_1 *:before,._wrapper_1xs2z_1 *:after{box-sizing:inherit}._canvasShell_1xs2z_28{position:relative;overflow:hidden;flex:none;border:1px solid rgb(0 0 0 / 22%);background:var(--gc-paper, #f2f0ea);box-shadow:inset 0 0 0 1px #ffffff1f}._canvas_1xs2z_28{width:100%;height:100%}._canvas_1xs2z_28 canvas{display:block;width:100%;height:100%}._viewportLabels_1xs2z_48{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));pointer-events:none}._viewportLabels_1xs2z_48[data-layout=portrait]{grid-template-columns:1fr;grid-template-rows:repeat(2,minmax(0,1fr))}._splitLabel_1xs2z_61{display:grid;place-items:center;color:#111827d1;font-size:clamp(1.15rem,2.7vw,2.1rem);font-weight:700;font-family:IBM Plex Sans Condensed,Avenir Next Condensed,sans-serif;text-transform:uppercase;letter-spacing:.34em;text-shadow:0 2px 12px rgb(255 255 255 / 42%)}._controlOverlay_1xs2z_73{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:center;pointer-events:none}._resolutionCard_1xs2z_83{pointer-events:auto;display:flex;align-items:center;justify-content:center;width:min(100%,26rem);padding:.75rem .9rem;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:16px;background:#070f199e;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 30px #0000002e}._resolutionControl_1xs2z_97{display:flex;align-items:center;gap:.85rem;width:100%;min-width:0}._slider_1xs2z_105{width:100%;accent-color:var(--gc-primary, #45c4b0);cursor:pointer}._sliderValue_1xs2z_111{min-width:3.75rem;text-align:right;font-family:IBM Plex Mono,JetBrains Mono,monospace;font-size:.95rem}@media (max-width: 900px){._resolutionControl_1xs2z_97{min-width:0}}@media (max-width: 720px){._wrapper_1xs2z_1{padding:0}._splitLabel_1xs2z_61{font-size:clamp(.95rem,5vw,1.4rem);letter-spacing:.24em}._controlOverlay_1xs2z_73{right:0rem;bottom:0rem;left:0rem}}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); +import { jsx as pn, jsxs as yi } from "react/jsx-runtime"; +import { useState as Ms, useRef as dr, useEffect as ai, useMemo as fr } from "react"; +/** + * @license + * Copyright 2010-2023 Three.js Authors + * SPDX-License-Identifier: MIT + */ +const ss = "160", Ln = { ROTATE: 0, DOLLY: 1, PAN: 2 }, Pn = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 }, Yo = 0, Ss = 1, jo = 2, so = 1, ao = 2, jt = 3, un = 0, Mt = 1, Kt = 2, on = 0, $n = 1, Es = 2, ys = 3, Ts = 4, Ko = 5, Mn = 100, Zo = 101, $o = 102, bs = 103, As = 104, Jo = 200, Qo = 201, el = 202, tl = 203, Kr = 204, Zr = 205, nl = 206, il = 207, rl = 208, sl = 209, al = 210, ol = 211, ll = 212, cl = 213, ul = 214, hl = 0, dl = 1, fl = 2, $i = 3, pl = 4, ml = 5, _l = 6, gl = 7, oo = 0, vl = 1, xl = 2, ln = 0, Ml = 1, Sl = 2, El = 3, yl = 4, Tl = 5, bl = 6, lo = 300, Qn = 301, ei = 302, $r = 303, Jr = 304, rr = 306, Qr = 1e3, Nt = 1001, es = 1002, gt = 1003, ws = 1004, pr = 1005, Rt = 1006, Al = 1007, _i = 1008, cn = 1009, wl = 1010, Rl = 1011, as = 1012, co = 1013, sn = 1014, an = 1015, gi = 1016, uo = 1017, ho = 1018, En = 1020, Cl = 1021, Ft = 1023, Ll = 1024, Pl = 1025, yn = 1026, ti = 1027, Dl = 1028, fo = 1029, Ul = 1030, po = 1031, mo = 1033, mr = 33776, _r = 33777, gr = 33778, vr = 33779, Rs = 35840, Cs = 35841, Ls = 35842, Ps = 35843, _o = 36196, Ds = 37492, Us = 37496, Is = 37808, Ns = 37809, Fs = 37810, Os = 37811, Bs = 37812, zs = 37813, Gs = 37814, Hs = 37815, Vs = 37816, ks = 37817, Ws = 37818, Xs = 37819, qs = 37820, Ys = 37821, xr = 36492, js = 36494, Ks = 36495, Il = 36283, Zs = 36284, $s = 36285, Js = 36286, go = 3e3, Tn = 3001, Nl = 3200, Fl = 3201, vo = 0, Ol = 1, Ct = "", ht = "srgb", $t = "srgb-linear", os = "display-p3", sr = "display-p3-linear", Ji = "linear", Ze = "srgb", Qi = "rec709", er = "p3", Dn = 7680, Qs = 519, Bl = 512, zl = 513, Gl = 514, xo = 515, Hl = 516, Vl = 517, kl = 518, Wl = 519, ea = 35044, ta = "300 es", ts = 1035, Zt = 2e3, tr = 2001; +class Rn { + addEventListener(e, t) { + this._listeners === void 0 && (this._listeners = {}); + const n = this._listeners; + n[e] === void 0 && (n[e] = []), n[e].indexOf(t) === -1 && n[e].push(t); + } + hasEventListener(e, t) { + if (this._listeners === void 0) return !1; + const n = this._listeners; + return n[e] !== void 0 && n[e].indexOf(t) !== -1; + } + removeEventListener(e, t) { + if (this._listeners === void 0) return; + const r = this._listeners[e]; + if (r !== void 0) { + const s = r.indexOf(t); + s !== -1 && r.splice(s, 1); + } + } + dispatchEvent(e) { + if (this._listeners === void 0) return; + const n = this._listeners[e.type]; + if (n !== void 0) { + e.target = this; + const r = n.slice(0); + for (let s = 0, o = r.length; s < o; s++) + r[s].call(this, e); + e.target = null; + } + } +} +const pt = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4a", "4b", "4c", "4d", "4e", "4f", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5a", "5b", "5c", "5d", "5e", "5f", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a", "6b", "6c", "6d", "6e", "6f", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c", "7d", "7e", "7f", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e", "8f", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "da", "db", "dc", "dd", "de", "df", "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "ea", "eb", "ec", "ed", "ee", "ef", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff"], Ki = Math.PI / 180, ns = 180 / Math.PI; +function vi() { + const i = Math.random() * 4294967295 | 0, e = Math.random() * 4294967295 | 0, t = Math.random() * 4294967295 | 0, n = Math.random() * 4294967295 | 0; + return (pt[i & 255] + pt[i >> 8 & 255] + pt[i >> 16 & 255] + pt[i >> 24 & 255] + "-" + pt[e & 255] + pt[e >> 8 & 255] + "-" + pt[e >> 16 & 15 | 64] + pt[e >> 24 & 255] + "-" + pt[t & 63 | 128] + pt[t >> 8 & 255] + "-" + pt[t >> 16 & 255] + pt[t >> 24 & 255] + pt[n & 255] + pt[n >> 8 & 255] + pt[n >> 16 & 255] + pt[n >> 24 & 255]).toLowerCase(); +} +function vt(i, e, t) { + return Math.max(e, Math.min(t, i)); +} +function Xl(i, e) { + return (i % e + e) % e; +} +function Mr(i, e, t) { + return (1 - t) * i + t * e; +} +function na(i) { + return (i & i - 1) === 0 && i !== 0; +} +function is(i) { + return Math.pow(2, Math.floor(Math.log(i) / Math.LN2)); +} +function oi(i, e) { + switch (e.constructor) { + case Float32Array: + return i; + case Uint32Array: + return i / 4294967295; + case Uint16Array: + return i / 65535; + case Uint8Array: + return i / 255; + case Int32Array: + return Math.max(i / 2147483647, -1); + case Int16Array: + return Math.max(i / 32767, -1); + case Int8Array: + return Math.max(i / 127, -1); + default: + throw new Error("Invalid component type."); + } +} +function xt(i, e) { + switch (e.constructor) { + case Float32Array: + return i; + case Uint32Array: + return Math.round(i * 4294967295); + case Uint16Array: + return Math.round(i * 65535); + case Uint8Array: + return Math.round(i * 255); + case Int32Array: + return Math.round(i * 2147483647); + case Int16Array: + return Math.round(i * 32767); + case Int8Array: + return Math.round(i * 127); + default: + throw new Error("Invalid component type."); + } +} +const ql = { + DEG2RAD: Ki +}; +class Ie { + constructor(e = 0, t = 0) { + Ie.prototype.isVector2 = !0, this.x = e, this.y = t; + } + get width() { + return this.x; + } + set width(e) { + this.x = e; + } + get height() { + return this.y; + } + set height(e) { + this.y = e; + } + set(e, t) { + return this.x = e, this.y = t, this; + } + setScalar(e) { + return this.x = e, this.y = e, this; + } + setX(e) { + return this.x = e, this; + } + setY(e) { + return this.y = e, this; + } + setComponent(e, t) { + switch (e) { + case 0: + this.x = t; + break; + case 1: + this.y = t; + break; + default: + throw new Error("index is out of range: " + e); + } + return this; + } + getComponent(e) { + switch (e) { + case 0: + return this.x; + case 1: + return this.y; + default: + throw new Error("index is out of range: " + e); + } + } + clone() { + return new this.constructor(this.x, this.y); + } + copy(e) { + return this.x = e.x, this.y = e.y, this; + } + add(e) { + return this.x += e.x, this.y += e.y, this; + } + addScalar(e) { + return this.x += e, this.y += e, this; + } + addVectors(e, t) { + return this.x = e.x + t.x, this.y = e.y + t.y, this; + } + addScaledVector(e, t) { + return this.x += e.x * t, this.y += e.y * t, this; + } + sub(e) { + return this.x -= e.x, this.y -= e.y, this; + } + subScalar(e) { + return this.x -= e, this.y -= e, this; + } + subVectors(e, t) { + return this.x = e.x - t.x, this.y = e.y - t.y, this; + } + multiply(e) { + return this.x *= e.x, this.y *= e.y, this; + } + multiplyScalar(e) { + return this.x *= e, this.y *= e, this; + } + divide(e) { + return this.x /= e.x, this.y /= e.y, this; + } + divideScalar(e) { + return this.multiplyScalar(1 / e); + } + applyMatrix3(e) { + const t = this.x, n = this.y, r = e.elements; + return this.x = r[0] * t + r[3] * n + r[6], this.y = r[1] * t + r[4] * n + r[7], this; + } + min(e) { + return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this; + } + max(e) { + return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this; + } + clamp(e, t) { + return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this; + } + clampScalar(e, t) { + return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this; + } + clampLength(e, t) { + const n = this.length(); + return this.divideScalar(n || 1).multiplyScalar(Math.max(e, Math.min(t, n))); + } + floor() { + return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this; + } + ceil() { + return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this; + } + round() { + return this.x = Math.round(this.x), this.y = Math.round(this.y), this; + } + roundToZero() { + return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this; + } + negate() { + return this.x = -this.x, this.y = -this.y, this; + } + dot(e) { + return this.x * e.x + this.y * e.y; + } + cross(e) { + return this.x * e.y - this.y * e.x; + } + lengthSq() { + return this.x * this.x + this.y * this.y; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + angle() { + return Math.atan2(-this.y, -this.x) + Math.PI; + } + angleTo(e) { + const t = Math.sqrt(this.lengthSq() * e.lengthSq()); + if (t === 0) return Math.PI / 2; + const n = this.dot(e) / t; + return Math.acos(vt(n, -1, 1)); + } + distanceTo(e) { + return Math.sqrt(this.distanceToSquared(e)); + } + distanceToSquared(e) { + const t = this.x - e.x, n = this.y - e.y; + return t * t + n * n; + } + manhattanDistanceTo(e) { + return Math.abs(this.x - e.x) + Math.abs(this.y - e.y); + } + setLength(e) { + return this.normalize().multiplyScalar(e); + } + lerp(e, t) { + return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this; + } + lerpVectors(e, t, n) { + return this.x = e.x + (t.x - e.x) * n, this.y = e.y + (t.y - e.y) * n, this; + } + equals(e) { + return e.x === this.x && e.y === this.y; + } + fromArray(e, t = 0) { + return this.x = e[t], this.y = e[t + 1], this; + } + toArray(e = [], t = 0) { + return e[t] = this.x, e[t + 1] = this.y, e; + } + fromBufferAttribute(e, t) { + return this.x = e.getX(t), this.y = e.getY(t), this; + } + rotateAround(e, t) { + const n = Math.cos(t), r = Math.sin(t), s = this.x - e.x, o = this.y - e.y; + return this.x = s * n - o * r + e.x, this.y = s * r + o * n + e.y, this; + } + random() { + return this.x = Math.random(), this.y = Math.random(), this; + } + *[Symbol.iterator]() { + yield this.x, yield this.y; + } +} +class Ve { + constructor(e, t, n, r, s, o, a, l, c) { + Ve.prototype.isMatrix3 = !0, this.elements = [ + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1 + ], e !== void 0 && this.set(e, t, n, r, s, o, a, l, c); + } + set(e, t, n, r, s, o, a, l, c) { + const h = this.elements; + return h[0] = e, h[1] = r, h[2] = a, h[3] = t, h[4] = s, h[5] = l, h[6] = n, h[7] = o, h[8] = c, this; + } + identity() { + return this.set( + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1 + ), this; + } + copy(e) { + const t = this.elements, n = e.elements; + return t[0] = n[0], t[1] = n[1], t[2] = n[2], t[3] = n[3], t[4] = n[4], t[5] = n[5], t[6] = n[6], t[7] = n[7], t[8] = n[8], this; + } + extractBasis(e, t, n) { + return e.setFromMatrix3Column(this, 0), t.setFromMatrix3Column(this, 1), n.setFromMatrix3Column(this, 2), this; + } + setFromMatrix4(e) { + const t = e.elements; + return this.set( + t[0], + t[4], + t[8], + t[1], + t[5], + t[9], + t[2], + t[6], + t[10] + ), this; + } + multiply(e) { + return this.multiplyMatrices(this, e); + } + premultiply(e) { + return this.multiplyMatrices(e, this); + } + multiplyMatrices(e, t) { + const n = e.elements, r = t.elements, s = this.elements, o = n[0], a = n[3], l = n[6], c = n[1], h = n[4], d = n[7], p = n[2], m = n[5], g = n[8], v = r[0], f = r[3], u = r[6], b = r[1], S = r[4], R = r[7], D = r[2], C = r[5], A = r[8]; + return s[0] = o * v + a * b + l * D, s[3] = o * f + a * S + l * C, s[6] = o * u + a * R + l * A, s[1] = c * v + h * b + d * D, s[4] = c * f + h * S + d * C, s[7] = c * u + h * R + d * A, s[2] = p * v + m * b + g * D, s[5] = p * f + m * S + g * C, s[8] = p * u + m * R + g * A, this; + } + multiplyScalar(e) { + const t = this.elements; + return t[0] *= e, t[3] *= e, t[6] *= e, t[1] *= e, t[4] *= e, t[7] *= e, t[2] *= e, t[5] *= e, t[8] *= e, this; + } + determinant() { + const e = this.elements, t = e[0], n = e[1], r = e[2], s = e[3], o = e[4], a = e[5], l = e[6], c = e[7], h = e[8]; + return t * o * h - t * a * c - n * s * h + n * a * l + r * s * c - r * o * l; + } + invert() { + const e = this.elements, t = e[0], n = e[1], r = e[2], s = e[3], o = e[4], a = e[5], l = e[6], c = e[7], h = e[8], d = h * o - a * c, p = a * l - h * s, m = c * s - o * l, g = t * d + n * p + r * m; + if (g === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0); + const v = 1 / g; + return e[0] = d * v, e[1] = (r * c - h * n) * v, e[2] = (a * n - r * o) * v, e[3] = p * v, e[4] = (h * t - r * l) * v, e[5] = (r * s - a * t) * v, e[6] = m * v, e[7] = (n * l - c * t) * v, e[8] = (o * t - n * s) * v, this; + } + transpose() { + let e; + const t = this.elements; + return e = t[1], t[1] = t[3], t[3] = e, e = t[2], t[2] = t[6], t[6] = e, e = t[5], t[5] = t[7], t[7] = e, this; + } + getNormalMatrix(e) { + return this.setFromMatrix4(e).invert().transpose(); + } + transposeIntoArray(e) { + const t = this.elements; + return e[0] = t[0], e[1] = t[3], e[2] = t[6], e[3] = t[1], e[4] = t[4], e[5] = t[7], e[6] = t[2], e[7] = t[5], e[8] = t[8], this; + } + setUvTransform(e, t, n, r, s, o, a) { + const l = Math.cos(s), c = Math.sin(s); + return this.set( + n * l, + n * c, + -n * (l * o + c * a) + o + e, + -r * c, + r * l, + -r * (-c * o + l * a) + a + t, + 0, + 0, + 1 + ), this; + } + // + scale(e, t) { + return this.premultiply(Sr.makeScale(e, t)), this; + } + rotate(e) { + return this.premultiply(Sr.makeRotation(-e)), this; + } + translate(e, t) { + return this.premultiply(Sr.makeTranslation(e, t)), this; + } + // for 2D Transforms + makeTranslation(e, t) { + return e.isVector2 ? this.set( + 1, + 0, + e.x, + 0, + 1, + e.y, + 0, + 0, + 1 + ) : this.set( + 1, + 0, + e, + 0, + 1, + t, + 0, + 0, + 1 + ), this; + } + makeRotation(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + t, + -n, + 0, + n, + t, + 0, + 0, + 0, + 1 + ), this; + } + makeScale(e, t) { + return this.set( + e, + 0, + 0, + 0, + t, + 0, + 0, + 0, + 1 + ), this; + } + // + equals(e) { + const t = this.elements, n = e.elements; + for (let r = 0; r < 9; r++) + if (t[r] !== n[r]) return !1; + return !0; + } + fromArray(e, t = 0) { + for (let n = 0; n < 9; n++) + this.elements[n] = e[n + t]; + return this; + } + toArray(e = [], t = 0) { + const n = this.elements; + return e[t] = n[0], e[t + 1] = n[1], e[t + 2] = n[2], e[t + 3] = n[3], e[t + 4] = n[4], e[t + 5] = n[5], e[t + 6] = n[6], e[t + 7] = n[7], e[t + 8] = n[8], e; + } + clone() { + return new this.constructor().fromArray(this.elements); + } +} +const Sr = /* @__PURE__ */ new Ve(); +function Mo(i) { + for (let e = i.length - 1; e >= 0; --e) + if (i[e] >= 65535) return !0; + return !1; +} +function nr(i) { + return document.createElementNS("http://www.w3.org/1999/xhtml", i); +} +function Yl() { + const i = nr("canvas"); + return i.style.display = "block", i; +} +const ia = {}; +function mi(i) { + i in ia || (ia[i] = !0, console.warn(i)); +} +const ra = /* @__PURE__ */ new Ve().set( + 0.8224621, + 0.177538, + 0, + 0.0331941, + 0.9668058, + 0, + 0.0170827, + 0.0723974, + 0.9105199 +), sa = /* @__PURE__ */ new Ve().set( + 1.2249401, + -0.2249404, + 0, + -0.0420569, + 1.0420571, + 0, + -0.0196376, + -0.0786361, + 1.0982735 +), Ti = { + [$t]: { + transfer: Ji, + primaries: Qi, + toReference: (i) => i, + fromReference: (i) => i + }, + [ht]: { + transfer: Ze, + primaries: Qi, + toReference: (i) => i.convertSRGBToLinear(), + fromReference: (i) => i.convertLinearToSRGB() + }, + [sr]: { + transfer: Ji, + primaries: er, + toReference: (i) => i.applyMatrix3(sa), + fromReference: (i) => i.applyMatrix3(ra) + }, + [os]: { + transfer: Ze, + primaries: er, + toReference: (i) => i.convertSRGBToLinear().applyMatrix3(sa), + fromReference: (i) => i.applyMatrix3(ra).convertLinearToSRGB() + } +}, jl = /* @__PURE__ */ new Set([$t, sr]), Ke = { + enabled: !0, + _workingColorSpace: $t, + get workingColorSpace() { + return this._workingColorSpace; + }, + set workingColorSpace(i) { + if (!jl.has(i)) + throw new Error(`Unsupported working color space, "${i}".`); + this._workingColorSpace = i; + }, + convert: function(i, e, t) { + if (this.enabled === !1 || e === t || !e || !t) + return i; + const n = Ti[e].toReference, r = Ti[t].fromReference; + return r(n(i)); + }, + fromWorkingColorSpace: function(i, e) { + return this.convert(i, this._workingColorSpace, e); + }, + toWorkingColorSpace: function(i, e) { + return this.convert(i, e, this._workingColorSpace); + }, + getPrimaries: function(i) { + return Ti[i].primaries; + }, + getTransfer: function(i) { + return i === Ct ? Ji : Ti[i].transfer; + } +}; +function Jn(i) { + return i < 0.04045 ? i * 0.0773993808 : Math.pow(i * 0.9478672986 + 0.0521327014, 2.4); +} +function Er(i) { + return i < 31308e-7 ? i * 12.92 : 1.055 * Math.pow(i, 0.41666) - 0.055; +} +let Un; +class So { + static getDataURL(e) { + if (/^data:/i.test(e.src) || typeof HTMLCanvasElement > "u") + return e.src; + let t; + if (e instanceof HTMLCanvasElement) + t = e; + else { + Un === void 0 && (Un = nr("canvas")), Un.width = e.width, Un.height = e.height; + const n = Un.getContext("2d"); + e instanceof ImageData ? n.putImageData(e, 0, 0) : n.drawImage(e, 0, 0, e.width, e.height), t = Un; + } + return t.width > 2048 || t.height > 2048 ? (console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons", e), t.toDataURL("image/jpeg", 0.6)) : t.toDataURL("image/png"); + } + static sRGBToLinear(e) { + if (typeof HTMLImageElement < "u" && e instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && e instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && e instanceof ImageBitmap) { + const t = nr("canvas"); + t.width = e.width, t.height = e.height; + const n = t.getContext("2d"); + n.drawImage(e, 0, 0, e.width, e.height); + const r = n.getImageData(0, 0, e.width, e.height), s = r.data; + for (let o = 0; o < s.length; o++) + s[o] = Jn(s[o] / 255) * 255; + return n.putImageData(r, 0, 0), t; + } else if (e.data) { + const t = e.data.slice(0); + for (let n = 0; n < t.length; n++) + t instanceof Uint8Array || t instanceof Uint8ClampedArray ? t[n] = Math.floor(Jn(t[n] / 255) * 255) : t[n] = Jn(t[n]); + return { + data: t, + width: e.width, + height: e.height + }; + } else + return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."), e; + } +} +let Kl = 0; +class Eo { + constructor(e = null) { + this.isSource = !0, Object.defineProperty(this, "id", { value: Kl++ }), this.uuid = vi(), this.data = e, this.version = 0; + } + set needsUpdate(e) { + e === !0 && this.version++; + } + toJSON(e) { + const t = e === void 0 || typeof e == "string"; + if (!t && e.images[this.uuid] !== void 0) + return e.images[this.uuid]; + const n = { + uuid: this.uuid, + url: "" + }, r = this.data; + if (r !== null) { + let s; + if (Array.isArray(r)) { + s = []; + for (let o = 0, a = r.length; o < a; o++) + r[o].isDataTexture ? s.push(yr(r[o].image)) : s.push(yr(r[o])); + } else + s = yr(r); + n.url = s; + } + return t || (e.images[this.uuid] = n), n; + } +} +function yr(i) { + return typeof HTMLImageElement < "u" && i instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && i instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && i instanceof ImageBitmap ? So.getDataURL(i) : i.data ? { + data: Array.from(i.data), + width: i.width, + height: i.height, + type: i.data.constructor.name + } : (console.warn("THREE.Texture: Unable to serialize Texture."), {}); +} +let Zl = 0; +class bt extends Rn { + constructor(e = bt.DEFAULT_IMAGE, t = bt.DEFAULT_MAPPING, n = Nt, r = Nt, s = Rt, o = _i, a = Ft, l = cn, c = bt.DEFAULT_ANISOTROPY, h = Ct) { + super(), this.isTexture = !0, Object.defineProperty(this, "id", { value: Zl++ }), this.uuid = vi(), this.name = "", this.source = new Eo(e), this.mipmaps = [], this.mapping = t, this.channel = 0, this.wrapS = n, this.wrapT = r, this.magFilter = s, this.minFilter = o, this.anisotropy = c, this.format = a, this.internalFormat = null, this.type = l, this.offset = new Ie(0, 0), this.repeat = new Ie(1, 1), this.center = new Ie(0, 0), this.rotation = 0, this.matrixAutoUpdate = !0, this.matrix = new Ve(), this.generateMipmaps = !0, this.premultiplyAlpha = !1, this.flipY = !0, this.unpackAlignment = 4, typeof h == "string" ? this.colorSpace = h : (mi("THREE.Texture: Property .encoding has been replaced by .colorSpace."), this.colorSpace = h === Tn ? ht : Ct), this.userData = {}, this.version = 0, this.onUpdate = null, this.isRenderTargetTexture = !1, this.needsPMREMUpdate = !1; + } + get image() { + return this.source.data; + } + set image(e = null) { + this.source.data = e; + } + updateMatrix() { + this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y); + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + return this.name = e.name, this.source = e.source, this.mipmaps = e.mipmaps.slice(0), this.mapping = e.mapping, this.channel = e.channel, this.wrapS = e.wrapS, this.wrapT = e.wrapT, this.magFilter = e.magFilter, this.minFilter = e.minFilter, this.anisotropy = e.anisotropy, this.format = e.format, this.internalFormat = e.internalFormat, this.type = e.type, this.offset.copy(e.offset), this.repeat.copy(e.repeat), this.center.copy(e.center), this.rotation = e.rotation, this.matrixAutoUpdate = e.matrixAutoUpdate, this.matrix.copy(e.matrix), this.generateMipmaps = e.generateMipmaps, this.premultiplyAlpha = e.premultiplyAlpha, this.flipY = e.flipY, this.unpackAlignment = e.unpackAlignment, this.colorSpace = e.colorSpace, this.userData = JSON.parse(JSON.stringify(e.userData)), this.needsUpdate = !0, this; + } + toJSON(e) { + const t = e === void 0 || typeof e == "string"; + if (!t && e.textures[this.uuid] !== void 0) + return e.textures[this.uuid]; + const n = { + metadata: { + version: 4.6, + type: "Texture", + generator: "Texture.toJSON" + }, + uuid: this.uuid, + name: this.name, + image: this.source.toJSON(e).uuid, + mapping: this.mapping, + channel: this.channel, + repeat: [this.repeat.x, this.repeat.y], + offset: [this.offset.x, this.offset.y], + center: [this.center.x, this.center.y], + rotation: this.rotation, + wrap: [this.wrapS, this.wrapT], + format: this.format, + internalFormat: this.internalFormat, + type: this.type, + colorSpace: this.colorSpace, + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + flipY: this.flipY, + generateMipmaps: this.generateMipmaps, + premultiplyAlpha: this.premultiplyAlpha, + unpackAlignment: this.unpackAlignment + }; + return Object.keys(this.userData).length > 0 && (n.userData = this.userData), t || (e.textures[this.uuid] = n), n; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } + transformUv(e) { + if (this.mapping !== lo) return e; + if (e.applyMatrix3(this.matrix), e.x < 0 || e.x > 1) + switch (this.wrapS) { + case Qr: + e.x = e.x - Math.floor(e.x); + break; + case Nt: + e.x = e.x < 0 ? 0 : 1; + break; + case es: + Math.abs(Math.floor(e.x) % 2) === 1 ? e.x = Math.ceil(e.x) - e.x : e.x = e.x - Math.floor(e.x); + break; + } + if (e.y < 0 || e.y > 1) + switch (this.wrapT) { + case Qr: + e.y = e.y - Math.floor(e.y); + break; + case Nt: + e.y = e.y < 0 ? 0 : 1; + break; + case es: + Math.abs(Math.floor(e.y) % 2) === 1 ? e.y = Math.ceil(e.y) - e.y : e.y = e.y - Math.floor(e.y); + break; + } + return this.flipY && (e.y = 1 - e.y), e; + } + set needsUpdate(e) { + e === !0 && (this.version++, this.source.needsUpdate = !0); + } + get encoding() { + return mi("THREE.Texture: Property .encoding has been replaced by .colorSpace."), this.colorSpace === ht ? Tn : go; + } + set encoding(e) { + mi("THREE.Texture: Property .encoding has been replaced by .colorSpace."), this.colorSpace = e === Tn ? ht : Ct; + } +} +bt.DEFAULT_IMAGE = null; +bt.DEFAULT_MAPPING = lo; +bt.DEFAULT_ANISOTROPY = 1; +class $e { + constructor(e = 0, t = 0, n = 0, r = 1) { + $e.prototype.isVector4 = !0, this.x = e, this.y = t, this.z = n, this.w = r; + } + get width() { + return this.z; + } + set width(e) { + this.z = e; + } + get height() { + return this.w; + } + set height(e) { + this.w = e; + } + set(e, t, n, r) { + return this.x = e, this.y = t, this.z = n, this.w = r, this; + } + setScalar(e) { + return this.x = e, this.y = e, this.z = e, this.w = e, this; + } + setX(e) { + return this.x = e, this; + } + setY(e) { + return this.y = e, this; + } + setZ(e) { + return this.z = e, this; + } + setW(e) { + return this.w = e, this; + } + setComponent(e, t) { + switch (e) { + case 0: + this.x = t; + break; + case 1: + this.y = t; + break; + case 2: + this.z = t; + break; + case 3: + this.w = t; + break; + default: + throw new Error("index is out of range: " + e); + } + return this; + } + getComponent(e) { + switch (e) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + case 3: + return this.w; + default: + throw new Error("index is out of range: " + e); + } + } + clone() { + return new this.constructor(this.x, this.y, this.z, this.w); + } + copy(e) { + return this.x = e.x, this.y = e.y, this.z = e.z, this.w = e.w !== void 0 ? e.w : 1, this; + } + add(e) { + return this.x += e.x, this.y += e.y, this.z += e.z, this.w += e.w, this; + } + addScalar(e) { + return this.x += e, this.y += e, this.z += e, this.w += e, this; + } + addVectors(e, t) { + return this.x = e.x + t.x, this.y = e.y + t.y, this.z = e.z + t.z, this.w = e.w + t.w, this; + } + addScaledVector(e, t) { + return this.x += e.x * t, this.y += e.y * t, this.z += e.z * t, this.w += e.w * t, this; + } + sub(e) { + return this.x -= e.x, this.y -= e.y, this.z -= e.z, this.w -= e.w, this; + } + subScalar(e) { + return this.x -= e, this.y -= e, this.z -= e, this.w -= e, this; + } + subVectors(e, t) { + return this.x = e.x - t.x, this.y = e.y - t.y, this.z = e.z - t.z, this.w = e.w - t.w, this; + } + multiply(e) { + return this.x *= e.x, this.y *= e.y, this.z *= e.z, this.w *= e.w, this; + } + multiplyScalar(e) { + return this.x *= e, this.y *= e, this.z *= e, this.w *= e, this; + } + applyMatrix4(e) { + const t = this.x, n = this.y, r = this.z, s = this.w, o = e.elements; + return this.x = o[0] * t + o[4] * n + o[8] * r + o[12] * s, this.y = o[1] * t + o[5] * n + o[9] * r + o[13] * s, this.z = o[2] * t + o[6] * n + o[10] * r + o[14] * s, this.w = o[3] * t + o[7] * n + o[11] * r + o[15] * s, this; + } + divideScalar(e) { + return this.multiplyScalar(1 / e); + } + setAxisAngleFromQuaternion(e) { + this.w = 2 * Math.acos(e.w); + const t = Math.sqrt(1 - e.w * e.w); + return t < 1e-4 ? (this.x = 1, this.y = 0, this.z = 0) : (this.x = e.x / t, this.y = e.y / t, this.z = e.z / t), this; + } + setAxisAngleFromRotationMatrix(e) { + let t, n, r, s; + const l = e.elements, c = l[0], h = l[4], d = l[8], p = l[1], m = l[5], g = l[9], v = l[2], f = l[6], u = l[10]; + if (Math.abs(h - p) < 0.01 && Math.abs(d - v) < 0.01 && Math.abs(g - f) < 0.01) { + if (Math.abs(h + p) < 0.1 && Math.abs(d + v) < 0.1 && Math.abs(g + f) < 0.1 && Math.abs(c + m + u - 3) < 0.1) + return this.set(1, 0, 0, 0), this; + t = Math.PI; + const S = (c + 1) / 2, R = (m + 1) / 2, D = (u + 1) / 2, C = (h + p) / 4, A = (d + v) / 4, W = (g + f) / 4; + return S > R && S > D ? S < 0.01 ? (n = 0, r = 0.707106781, s = 0.707106781) : (n = Math.sqrt(S), r = C / n, s = A / n) : R > D ? R < 0.01 ? (n = 0.707106781, r = 0, s = 0.707106781) : (r = Math.sqrt(R), n = C / r, s = W / r) : D < 0.01 ? (n = 0.707106781, r = 0.707106781, s = 0) : (s = Math.sqrt(D), n = A / s, r = W / s), this.set(n, r, s, t), this; + } + let b = Math.sqrt((f - g) * (f - g) + (d - v) * (d - v) + (p - h) * (p - h)); + return Math.abs(b) < 1e-3 && (b = 1), this.x = (f - g) / b, this.y = (d - v) / b, this.z = (p - h) / b, this.w = Math.acos((c + m + u - 1) / 2), this; + } + min(e) { + return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this.z = Math.min(this.z, e.z), this.w = Math.min(this.w, e.w), this; + } + max(e) { + return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this.z = Math.max(this.z, e.z), this.w = Math.max(this.w, e.w), this; + } + clamp(e, t) { + return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this.z = Math.max(e.z, Math.min(t.z, this.z)), this.w = Math.max(e.w, Math.min(t.w, this.w)), this; + } + clampScalar(e, t) { + return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this.z = Math.max(e, Math.min(t, this.z)), this.w = Math.max(e, Math.min(t, this.w)), this; + } + clampLength(e, t) { + const n = this.length(); + return this.divideScalar(n || 1).multiplyScalar(Math.max(e, Math.min(t, n))); + } + floor() { + return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this.w = Math.floor(this.w), this; + } + ceil() { + return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this.w = Math.ceil(this.w), this; + } + round() { + return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this.w = Math.round(this.w), this; + } + roundToZero() { + return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this.z = Math.trunc(this.z), this.w = Math.trunc(this.w), this; + } + negate() { + return this.x = -this.x, this.y = -this.y, this.z = -this.z, this.w = -this.w, this; + } + dot(e) { + return this.x * e.x + this.y * e.y + this.z * e.z + this.w * e.w; + } + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + setLength(e) { + return this.normalize().multiplyScalar(e); + } + lerp(e, t) { + return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this.z += (e.z - this.z) * t, this.w += (e.w - this.w) * t, this; + } + lerpVectors(e, t, n) { + return this.x = e.x + (t.x - e.x) * n, this.y = e.y + (t.y - e.y) * n, this.z = e.z + (t.z - e.z) * n, this.w = e.w + (t.w - e.w) * n, this; + } + equals(e) { + return e.x === this.x && e.y === this.y && e.z === this.z && e.w === this.w; + } + fromArray(e, t = 0) { + return this.x = e[t], this.y = e[t + 1], this.z = e[t + 2], this.w = e[t + 3], this; + } + toArray(e = [], t = 0) { + return e[t] = this.x, e[t + 1] = this.y, e[t + 2] = this.z, e[t + 3] = this.w, e; + } + fromBufferAttribute(e, t) { + return this.x = e.getX(t), this.y = e.getY(t), this.z = e.getZ(t), this.w = e.getW(t), this; + } + random() { + return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this.w = Math.random(), this; + } + *[Symbol.iterator]() { + yield this.x, yield this.y, yield this.z, yield this.w; + } +} +class $l extends Rn { + constructor(e = 1, t = 1, n = {}) { + super(), this.isRenderTarget = !0, this.width = e, this.height = t, this.depth = 1, this.scissor = new $e(0, 0, e, t), this.scissorTest = !1, this.viewport = new $e(0, 0, e, t); + const r = { width: e, height: t, depth: 1 }; + n.encoding !== void 0 && (mi("THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace."), n.colorSpace = n.encoding === Tn ? ht : Ct), n = Object.assign({ + generateMipmaps: !1, + internalFormat: null, + minFilter: Rt, + depthBuffer: !0, + stencilBuffer: !1, + depthTexture: null, + samples: 0 + }, n), this.texture = new bt(r, n.mapping, n.wrapS, n.wrapT, n.magFilter, n.minFilter, n.format, n.type, n.anisotropy, n.colorSpace), this.texture.isRenderTargetTexture = !0, this.texture.flipY = !1, this.texture.generateMipmaps = n.generateMipmaps, this.texture.internalFormat = n.internalFormat, this.depthBuffer = n.depthBuffer, this.stencilBuffer = n.stencilBuffer, this.depthTexture = n.depthTexture, this.samples = n.samples; + } + setSize(e, t, n = 1) { + (this.width !== e || this.height !== t || this.depth !== n) && (this.width = e, this.height = t, this.depth = n, this.texture.image.width = e, this.texture.image.height = t, this.texture.image.depth = n, this.dispose()), this.viewport.set(0, 0, e, t), this.scissor.set(0, 0, e, t); + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + this.width = e.width, this.height = e.height, this.depth = e.depth, this.scissor.copy(e.scissor), this.scissorTest = e.scissorTest, this.viewport.copy(e.viewport), this.texture = e.texture.clone(), this.texture.isRenderTargetTexture = !0; + const t = Object.assign({}, e.texture.image); + return this.texture.source = new Eo(t), this.depthBuffer = e.depthBuffer, this.stencilBuffer = e.stencilBuffer, e.depthTexture !== null && (this.depthTexture = e.depthTexture.clone()), this.samples = e.samples, this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +} +class bn extends $l { + constructor(e = 1, t = 1, n = {}) { + super(e, t, n), this.isWebGLRenderTarget = !0; + } +} +class yo extends bt { + constructor(e = null, t = 1, n = 1, r = 1) { + super(null), this.isDataArrayTexture = !0, this.image = { data: e, width: t, height: n, depth: r }, this.magFilter = gt, this.minFilter = gt, this.wrapR = Nt, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1; + } +} +class Jl extends bt { + constructor(e = null, t = 1, n = 1, r = 1) { + super(null), this.isData3DTexture = !0, this.image = { data: e, width: t, height: n, depth: r }, this.magFilter = gt, this.minFilter = gt, this.wrapR = Nt, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1; + } +} +class An { + constructor(e = 0, t = 0, n = 0, r = 1) { + this.isQuaternion = !0, this._x = e, this._y = t, this._z = n, this._w = r; + } + static slerpFlat(e, t, n, r, s, o, a) { + let l = n[r + 0], c = n[r + 1], h = n[r + 2], d = n[r + 3]; + const p = s[o + 0], m = s[o + 1], g = s[o + 2], v = s[o + 3]; + if (a === 0) { + e[t + 0] = l, e[t + 1] = c, e[t + 2] = h, e[t + 3] = d; + return; + } + if (a === 1) { + e[t + 0] = p, e[t + 1] = m, e[t + 2] = g, e[t + 3] = v; + return; + } + if (d !== v || l !== p || c !== m || h !== g) { + let f = 1 - a; + const u = l * p + c * m + h * g + d * v, b = u >= 0 ? 1 : -1, S = 1 - u * u; + if (S > Number.EPSILON) { + const D = Math.sqrt(S), C = Math.atan2(D, u * b); + f = Math.sin(f * C) / D, a = Math.sin(a * C) / D; + } + const R = a * b; + if (l = l * f + p * R, c = c * f + m * R, h = h * f + g * R, d = d * f + v * R, f === 1 - a) { + const D = 1 / Math.sqrt(l * l + c * c + h * h + d * d); + l *= D, c *= D, h *= D, d *= D; + } + } + e[t] = l, e[t + 1] = c, e[t + 2] = h, e[t + 3] = d; + } + static multiplyQuaternionsFlat(e, t, n, r, s, o) { + const a = n[r], l = n[r + 1], c = n[r + 2], h = n[r + 3], d = s[o], p = s[o + 1], m = s[o + 2], g = s[o + 3]; + return e[t] = a * g + h * d + l * m - c * p, e[t + 1] = l * g + h * p + c * d - a * m, e[t + 2] = c * g + h * m + a * p - l * d, e[t + 3] = h * g - a * d - l * p - c * m, e; + } + get x() { + return this._x; + } + set x(e) { + this._x = e, this._onChangeCallback(); + } + get y() { + return this._y; + } + set y(e) { + this._y = e, this._onChangeCallback(); + } + get z() { + return this._z; + } + set z(e) { + this._z = e, this._onChangeCallback(); + } + get w() { + return this._w; + } + set w(e) { + this._w = e, this._onChangeCallback(); + } + set(e, t, n, r) { + return this._x = e, this._y = t, this._z = n, this._w = r, this._onChangeCallback(), this; + } + clone() { + return new this.constructor(this._x, this._y, this._z, this._w); + } + copy(e) { + return this._x = e.x, this._y = e.y, this._z = e.z, this._w = e.w, this._onChangeCallback(), this; + } + setFromEuler(e, t = !0) { + const n = e._x, r = e._y, s = e._z, o = e._order, a = Math.cos, l = Math.sin, c = a(n / 2), h = a(r / 2), d = a(s / 2), p = l(n / 2), m = l(r / 2), g = l(s / 2); + switch (o) { + case "XYZ": + this._x = p * h * d + c * m * g, this._y = c * m * d - p * h * g, this._z = c * h * g + p * m * d, this._w = c * h * d - p * m * g; + break; + case "YXZ": + this._x = p * h * d + c * m * g, this._y = c * m * d - p * h * g, this._z = c * h * g - p * m * d, this._w = c * h * d + p * m * g; + break; + case "ZXY": + this._x = p * h * d - c * m * g, this._y = c * m * d + p * h * g, this._z = c * h * g + p * m * d, this._w = c * h * d - p * m * g; + break; + case "ZYX": + this._x = p * h * d - c * m * g, this._y = c * m * d + p * h * g, this._z = c * h * g - p * m * d, this._w = c * h * d + p * m * g; + break; + case "YZX": + this._x = p * h * d + c * m * g, this._y = c * m * d + p * h * g, this._z = c * h * g - p * m * d, this._w = c * h * d - p * m * g; + break; + case "XZY": + this._x = p * h * d - c * m * g, this._y = c * m * d - p * h * g, this._z = c * h * g + p * m * d, this._w = c * h * d + p * m * g; + break; + default: + console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: " + o); + } + return t === !0 && this._onChangeCallback(), this; + } + setFromAxisAngle(e, t) { + const n = t / 2, r = Math.sin(n); + return this._x = e.x * r, this._y = e.y * r, this._z = e.z * r, this._w = Math.cos(n), this._onChangeCallback(), this; + } + setFromRotationMatrix(e) { + const t = e.elements, n = t[0], r = t[4], s = t[8], o = t[1], a = t[5], l = t[9], c = t[2], h = t[6], d = t[10], p = n + a + d; + if (p > 0) { + const m = 0.5 / Math.sqrt(p + 1); + this._w = 0.25 / m, this._x = (h - l) * m, this._y = (s - c) * m, this._z = (o - r) * m; + } else if (n > a && n > d) { + const m = 2 * Math.sqrt(1 + n - a - d); + this._w = (h - l) / m, this._x = 0.25 * m, this._y = (r + o) / m, this._z = (s + c) / m; + } else if (a > d) { + const m = 2 * Math.sqrt(1 + a - n - d); + this._w = (s - c) / m, this._x = (r + o) / m, this._y = 0.25 * m, this._z = (l + h) / m; + } else { + const m = 2 * Math.sqrt(1 + d - n - a); + this._w = (o - r) / m, this._x = (s + c) / m, this._y = (l + h) / m, this._z = 0.25 * m; + } + return this._onChangeCallback(), this; + } + setFromUnitVectors(e, t) { + let n = e.dot(t) + 1; + return n < Number.EPSILON ? (n = 0, Math.abs(e.x) > Math.abs(e.z) ? (this._x = -e.y, this._y = e.x, this._z = 0, this._w = n) : (this._x = 0, this._y = -e.z, this._z = e.y, this._w = n)) : (this._x = e.y * t.z - e.z * t.y, this._y = e.z * t.x - e.x * t.z, this._z = e.x * t.y - e.y * t.x, this._w = n), this.normalize(); + } + angleTo(e) { + return 2 * Math.acos(Math.abs(vt(this.dot(e), -1, 1))); + } + rotateTowards(e, t) { + const n = this.angleTo(e); + if (n === 0) return this; + const r = Math.min(1, t / n); + return this.slerp(e, r), this; + } + identity() { + return this.set(0, 0, 0, 1); + } + invert() { + return this.conjugate(); + } + conjugate() { + return this._x *= -1, this._y *= -1, this._z *= -1, this._onChangeCallback(), this; + } + dot(e) { + return this._x * e._x + this._y * e._y + this._z * e._z + this._w * e._w; + } + lengthSq() { + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + } + length() { + return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w); + } + normalize() { + let e = this.length(); + return e === 0 ? (this._x = 0, this._y = 0, this._z = 0, this._w = 1) : (e = 1 / e, this._x = this._x * e, this._y = this._y * e, this._z = this._z * e, this._w = this._w * e), this._onChangeCallback(), this; + } + multiply(e) { + return this.multiplyQuaternions(this, e); + } + premultiply(e) { + return this.multiplyQuaternions(e, this); + } + multiplyQuaternions(e, t) { + const n = e._x, r = e._y, s = e._z, o = e._w, a = t._x, l = t._y, c = t._z, h = t._w; + return this._x = n * h + o * a + r * c - s * l, this._y = r * h + o * l + s * a - n * c, this._z = s * h + o * c + n * l - r * a, this._w = o * h - n * a - r * l - s * c, this._onChangeCallback(), this; + } + slerp(e, t) { + if (t === 0) return this; + if (t === 1) return this.copy(e); + const n = this._x, r = this._y, s = this._z, o = this._w; + let a = o * e._w + n * e._x + r * e._y + s * e._z; + if (a < 0 ? (this._w = -e._w, this._x = -e._x, this._y = -e._y, this._z = -e._z, a = -a) : this.copy(e), a >= 1) + return this._w = o, this._x = n, this._y = r, this._z = s, this; + const l = 1 - a * a; + if (l <= Number.EPSILON) { + const m = 1 - t; + return this._w = m * o + t * this._w, this._x = m * n + t * this._x, this._y = m * r + t * this._y, this._z = m * s + t * this._z, this.normalize(), this; + } + const c = Math.sqrt(l), h = Math.atan2(c, a), d = Math.sin((1 - t) * h) / c, p = Math.sin(t * h) / c; + return this._w = o * d + this._w * p, this._x = n * d + this._x * p, this._y = r * d + this._y * p, this._z = s * d + this._z * p, this._onChangeCallback(), this; + } + slerpQuaternions(e, t, n) { + return this.copy(e).slerp(t, n); + } + random() { + const e = Math.random(), t = Math.sqrt(1 - e), n = Math.sqrt(e), r = 2 * Math.PI * Math.random(), s = 2 * Math.PI * Math.random(); + return this.set( + t * Math.cos(r), + n * Math.sin(s), + n * Math.cos(s), + t * Math.sin(r) + ); + } + equals(e) { + return e._x === this._x && e._y === this._y && e._z === this._z && e._w === this._w; + } + fromArray(e, t = 0) { + return this._x = e[t], this._y = e[t + 1], this._z = e[t + 2], this._w = e[t + 3], this._onChangeCallback(), this; + } + toArray(e = [], t = 0) { + return e[t] = this._x, e[t + 1] = this._y, e[t + 2] = this._z, e[t + 3] = this._w, e; + } + fromBufferAttribute(e, t) { + return this._x = e.getX(t), this._y = e.getY(t), this._z = e.getZ(t), this._w = e.getW(t), this._onChangeCallback(), this; + } + toJSON() { + return this.toArray(); + } + _onChange(e) { + return this._onChangeCallback = e, this; + } + _onChangeCallback() { + } + *[Symbol.iterator]() { + yield this._x, yield this._y, yield this._z, yield this._w; + } +} +class P { + constructor(e = 0, t = 0, n = 0) { + P.prototype.isVector3 = !0, this.x = e, this.y = t, this.z = n; + } + set(e, t, n) { + return n === void 0 && (n = this.z), this.x = e, this.y = t, this.z = n, this; + } + setScalar(e) { + return this.x = e, this.y = e, this.z = e, this; + } + setX(e) { + return this.x = e, this; + } + setY(e) { + return this.y = e, this; + } + setZ(e) { + return this.z = e, this; + } + setComponent(e, t) { + switch (e) { + case 0: + this.x = t; + break; + case 1: + this.y = t; + break; + case 2: + this.z = t; + break; + default: + throw new Error("index is out of range: " + e); + } + return this; + } + getComponent(e) { + switch (e) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + default: + throw new Error("index is out of range: " + e); + } + } + clone() { + return new this.constructor(this.x, this.y, this.z); + } + copy(e) { + return this.x = e.x, this.y = e.y, this.z = e.z, this; + } + add(e) { + return this.x += e.x, this.y += e.y, this.z += e.z, this; + } + addScalar(e) { + return this.x += e, this.y += e, this.z += e, this; + } + addVectors(e, t) { + return this.x = e.x + t.x, this.y = e.y + t.y, this.z = e.z + t.z, this; + } + addScaledVector(e, t) { + return this.x += e.x * t, this.y += e.y * t, this.z += e.z * t, this; + } + sub(e) { + return this.x -= e.x, this.y -= e.y, this.z -= e.z, this; + } + subScalar(e) { + return this.x -= e, this.y -= e, this.z -= e, this; + } + subVectors(e, t) { + return this.x = e.x - t.x, this.y = e.y - t.y, this.z = e.z - t.z, this; + } + multiply(e) { + return this.x *= e.x, this.y *= e.y, this.z *= e.z, this; + } + multiplyScalar(e) { + return this.x *= e, this.y *= e, this.z *= e, this; + } + multiplyVectors(e, t) { + return this.x = e.x * t.x, this.y = e.y * t.y, this.z = e.z * t.z, this; + } + applyEuler(e) { + return this.applyQuaternion(aa.setFromEuler(e)); + } + applyAxisAngle(e, t) { + return this.applyQuaternion(aa.setFromAxisAngle(e, t)); + } + applyMatrix3(e) { + const t = this.x, n = this.y, r = this.z, s = e.elements; + return this.x = s[0] * t + s[3] * n + s[6] * r, this.y = s[1] * t + s[4] * n + s[7] * r, this.z = s[2] * t + s[5] * n + s[8] * r, this; + } + applyNormalMatrix(e) { + return this.applyMatrix3(e).normalize(); + } + applyMatrix4(e) { + const t = this.x, n = this.y, r = this.z, s = e.elements, o = 1 / (s[3] * t + s[7] * n + s[11] * r + s[15]); + return this.x = (s[0] * t + s[4] * n + s[8] * r + s[12]) * o, this.y = (s[1] * t + s[5] * n + s[9] * r + s[13]) * o, this.z = (s[2] * t + s[6] * n + s[10] * r + s[14]) * o, this; + } + applyQuaternion(e) { + const t = this.x, n = this.y, r = this.z, s = e.x, o = e.y, a = e.z, l = e.w, c = 2 * (o * r - a * n), h = 2 * (a * t - s * r), d = 2 * (s * n - o * t); + return this.x = t + l * c + o * d - a * h, this.y = n + l * h + a * c - s * d, this.z = r + l * d + s * h - o * c, this; + } + project(e) { + return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix); + } + unproject(e) { + return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld); + } + transformDirection(e) { + const t = this.x, n = this.y, r = this.z, s = e.elements; + return this.x = s[0] * t + s[4] * n + s[8] * r, this.y = s[1] * t + s[5] * n + s[9] * r, this.z = s[2] * t + s[6] * n + s[10] * r, this.normalize(); + } + divide(e) { + return this.x /= e.x, this.y /= e.y, this.z /= e.z, this; + } + divideScalar(e) { + return this.multiplyScalar(1 / e); + } + min(e) { + return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this.z = Math.min(this.z, e.z), this; + } + max(e) { + return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this.z = Math.max(this.z, e.z), this; + } + clamp(e, t) { + return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this.z = Math.max(e.z, Math.min(t.z, this.z)), this; + } + clampScalar(e, t) { + return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this.z = Math.max(e, Math.min(t, this.z)), this; + } + clampLength(e, t) { + const n = this.length(); + return this.divideScalar(n || 1).multiplyScalar(Math.max(e, Math.min(t, n))); + } + floor() { + return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this; + } + ceil() { + return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this; + } + round() { + return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this; + } + roundToZero() { + return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this.z = Math.trunc(this.z), this; + } + negate() { + return this.x = -this.x, this.y = -this.y, this.z = -this.z, this; + } + dot(e) { + return this.x * e.x + this.y * e.y + this.z * e.z; + } + // TODO lengthSquared? + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + setLength(e) { + return this.normalize().multiplyScalar(e); + } + lerp(e, t) { + return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this.z += (e.z - this.z) * t, this; + } + lerpVectors(e, t, n) { + return this.x = e.x + (t.x - e.x) * n, this.y = e.y + (t.y - e.y) * n, this.z = e.z + (t.z - e.z) * n, this; + } + cross(e) { + return this.crossVectors(this, e); + } + crossVectors(e, t) { + const n = e.x, r = e.y, s = e.z, o = t.x, a = t.y, l = t.z; + return this.x = r * l - s * a, this.y = s * o - n * l, this.z = n * a - r * o, this; + } + projectOnVector(e) { + const t = e.lengthSq(); + if (t === 0) return this.set(0, 0, 0); + const n = e.dot(this) / t; + return this.copy(e).multiplyScalar(n); + } + projectOnPlane(e) { + return Tr.copy(this).projectOnVector(e), this.sub(Tr); + } + reflect(e) { + return this.sub(Tr.copy(e).multiplyScalar(2 * this.dot(e))); + } + angleTo(e) { + const t = Math.sqrt(this.lengthSq() * e.lengthSq()); + if (t === 0) return Math.PI / 2; + const n = this.dot(e) / t; + return Math.acos(vt(n, -1, 1)); + } + distanceTo(e) { + return Math.sqrt(this.distanceToSquared(e)); + } + distanceToSquared(e) { + const t = this.x - e.x, n = this.y - e.y, r = this.z - e.z; + return t * t + n * n + r * r; + } + manhattanDistanceTo(e) { + return Math.abs(this.x - e.x) + Math.abs(this.y - e.y) + Math.abs(this.z - e.z); + } + setFromSpherical(e) { + return this.setFromSphericalCoords(e.radius, e.phi, e.theta); + } + setFromSphericalCoords(e, t, n) { + const r = Math.sin(t) * e; + return this.x = r * Math.sin(n), this.y = Math.cos(t) * e, this.z = r * Math.cos(n), this; + } + setFromCylindrical(e) { + return this.setFromCylindricalCoords(e.radius, e.theta, e.y); + } + setFromCylindricalCoords(e, t, n) { + return this.x = e * Math.sin(t), this.y = n, this.z = e * Math.cos(t), this; + } + setFromMatrixPosition(e) { + const t = e.elements; + return this.x = t[12], this.y = t[13], this.z = t[14], this; + } + setFromMatrixScale(e) { + const t = this.setFromMatrixColumn(e, 0).length(), n = this.setFromMatrixColumn(e, 1).length(), r = this.setFromMatrixColumn(e, 2).length(); + return this.x = t, this.y = n, this.z = r, this; + } + setFromMatrixColumn(e, t) { + return this.fromArray(e.elements, t * 4); + } + setFromMatrix3Column(e, t) { + return this.fromArray(e.elements, t * 3); + } + setFromEuler(e) { + return this.x = e._x, this.y = e._y, this.z = e._z, this; + } + setFromColor(e) { + return this.x = e.r, this.y = e.g, this.z = e.b, this; + } + equals(e) { + return e.x === this.x && e.y === this.y && e.z === this.z; + } + fromArray(e, t = 0) { + return this.x = e[t], this.y = e[t + 1], this.z = e[t + 2], this; + } + toArray(e = [], t = 0) { + return e[t] = this.x, e[t + 1] = this.y, e[t + 2] = this.z, e; + } + fromBufferAttribute(e, t) { + return this.x = e.getX(t), this.y = e.getY(t), this.z = e.getZ(t), this; + } + random() { + return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this; + } + randomDirection() { + const e = (Math.random() - 0.5) * 2, t = Math.random() * Math.PI * 2, n = Math.sqrt(1 - e ** 2); + return this.x = n * Math.cos(t), this.y = n * Math.sin(t), this.z = e, this; + } + *[Symbol.iterator]() { + yield this.x, yield this.y, yield this.z; + } +} +const Tr = /* @__PURE__ */ new P(), aa = /* @__PURE__ */ new An(); +class Cn { + constructor(e = new P(1 / 0, 1 / 0, 1 / 0), t = new P(-1 / 0, -1 / 0, -1 / 0)) { + this.isBox3 = !0, this.min = e, this.max = t; + } + set(e, t) { + return this.min.copy(e), this.max.copy(t), this; + } + setFromArray(e) { + this.makeEmpty(); + for (let t = 0, n = e.length; t < n; t += 3) + this.expandByPoint(Lt.fromArray(e, t)); + return this; + } + setFromBufferAttribute(e) { + this.makeEmpty(); + for (let t = 0, n = e.count; t < n; t++) + this.expandByPoint(Lt.fromBufferAttribute(e, t)); + return this; + } + setFromPoints(e) { + this.makeEmpty(); + for (let t = 0, n = e.length; t < n; t++) + this.expandByPoint(e[t]); + return this; + } + setFromCenterAndSize(e, t) { + const n = Lt.copy(t).multiplyScalar(0.5); + return this.min.copy(e).sub(n), this.max.copy(e).add(n), this; + } + setFromObject(e, t = !1) { + return this.makeEmpty(), this.expandByObject(e, t); + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + return this.min.copy(e.min), this.max.copy(e.max), this; + } + makeEmpty() { + return this.min.x = this.min.y = this.min.z = 1 / 0, this.max.x = this.max.y = this.max.z = -1 / 0, this; + } + isEmpty() { + return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z; + } + getCenter(e) { + return this.isEmpty() ? e.set(0, 0, 0) : e.addVectors(this.min, this.max).multiplyScalar(0.5); + } + getSize(e) { + return this.isEmpty() ? e.set(0, 0, 0) : e.subVectors(this.max, this.min); + } + expandByPoint(e) { + return this.min.min(e), this.max.max(e), this; + } + expandByVector(e) { + return this.min.sub(e), this.max.add(e), this; + } + expandByScalar(e) { + return this.min.addScalar(-e), this.max.addScalar(e), this; + } + expandByObject(e, t = !1) { + e.updateWorldMatrix(!1, !1); + const n = e.geometry; + if (n !== void 0) { + const s = n.getAttribute("position"); + if (t === !0 && s !== void 0 && e.isInstancedMesh !== !0) + for (let o = 0, a = s.count; o < a; o++) + e.isMesh === !0 ? e.getVertexPosition(o, Lt) : Lt.fromBufferAttribute(s, o), Lt.applyMatrix4(e.matrixWorld), this.expandByPoint(Lt); + else + e.boundingBox !== void 0 ? (e.boundingBox === null && e.computeBoundingBox(), bi.copy(e.boundingBox)) : (n.boundingBox === null && n.computeBoundingBox(), bi.copy(n.boundingBox)), bi.applyMatrix4(e.matrixWorld), this.union(bi); + } + const r = e.children; + for (let s = 0, o = r.length; s < o; s++) + this.expandByObject(r[s], t); + return this; + } + containsPoint(e) { + return !(e.x < this.min.x || e.x > this.max.x || e.y < this.min.y || e.y > this.max.y || e.z < this.min.z || e.z > this.max.z); + } + containsBox(e) { + return this.min.x <= e.min.x && e.max.x <= this.max.x && this.min.y <= e.min.y && e.max.y <= this.max.y && this.min.z <= e.min.z && e.max.z <= this.max.z; + } + getParameter(e, t) { + return t.set( + (e.x - this.min.x) / (this.max.x - this.min.x), + (e.y - this.min.y) / (this.max.y - this.min.y), + (e.z - this.min.z) / (this.max.z - this.min.z) + ); + } + intersectsBox(e) { + return !(e.max.x < this.min.x || e.min.x > this.max.x || e.max.y < this.min.y || e.min.y > this.max.y || e.max.z < this.min.z || e.min.z > this.max.z); + } + intersectsSphere(e) { + return this.clampPoint(e.center, Lt), Lt.distanceToSquared(e.center) <= e.radius * e.radius; + } + intersectsPlane(e) { + let t, n; + return e.normal.x > 0 ? (t = e.normal.x * this.min.x, n = e.normal.x * this.max.x) : (t = e.normal.x * this.max.x, n = e.normal.x * this.min.x), e.normal.y > 0 ? (t += e.normal.y * this.min.y, n += e.normal.y * this.max.y) : (t += e.normal.y * this.max.y, n += e.normal.y * this.min.y), e.normal.z > 0 ? (t += e.normal.z * this.min.z, n += e.normal.z * this.max.z) : (t += e.normal.z * this.max.z, n += e.normal.z * this.min.z), t <= -e.constant && n >= -e.constant; + } + intersectsTriangle(e) { + if (this.isEmpty()) + return !1; + this.getCenter(li), Ai.subVectors(this.max, li), In.subVectors(e.a, li), Nn.subVectors(e.b, li), Fn.subVectors(e.c, li), Jt.subVectors(Nn, In), Qt.subVectors(Fn, Nn), mn.subVectors(In, Fn); + let t = [ + 0, + -Jt.z, + Jt.y, + 0, + -Qt.z, + Qt.y, + 0, + -mn.z, + mn.y, + Jt.z, + 0, + -Jt.x, + Qt.z, + 0, + -Qt.x, + mn.z, + 0, + -mn.x, + -Jt.y, + Jt.x, + 0, + -Qt.y, + Qt.x, + 0, + -mn.y, + mn.x, + 0 + ]; + return !br(t, In, Nn, Fn, Ai) || (t = [1, 0, 0, 0, 1, 0, 0, 0, 1], !br(t, In, Nn, Fn, Ai)) ? !1 : (wi.crossVectors(Jt, Qt), t = [wi.x, wi.y, wi.z], br(t, In, Nn, Fn, Ai)); + } + clampPoint(e, t) { + return t.copy(e).clamp(this.min, this.max); + } + distanceToPoint(e) { + return this.clampPoint(e, Lt).distanceTo(e); + } + getBoundingSphere(e) { + return this.isEmpty() ? e.makeEmpty() : (this.getCenter(e.center), e.radius = this.getSize(Lt).length() * 0.5), e; + } + intersect(e) { + return this.min.max(e.min), this.max.min(e.max), this.isEmpty() && this.makeEmpty(), this; + } + union(e) { + return this.min.min(e.min), this.max.max(e.max), this; + } + applyMatrix4(e) { + return this.isEmpty() ? this : (kt[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(e), kt[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(e), kt[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(e), kt[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(e), kt[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(e), kt[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(e), kt[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(e), kt[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(e), this.setFromPoints(kt), this); + } + translate(e) { + return this.min.add(e), this.max.add(e), this; + } + equals(e) { + return e.min.equals(this.min) && e.max.equals(this.max); + } +} +const kt = [ + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P() +], Lt = /* @__PURE__ */ new P(), bi = /* @__PURE__ */ new Cn(), In = /* @__PURE__ */ new P(), Nn = /* @__PURE__ */ new P(), Fn = /* @__PURE__ */ new P(), Jt = /* @__PURE__ */ new P(), Qt = /* @__PURE__ */ new P(), mn = /* @__PURE__ */ new P(), li = /* @__PURE__ */ new P(), Ai = /* @__PURE__ */ new P(), wi = /* @__PURE__ */ new P(), _n = /* @__PURE__ */ new P(); +function br(i, e, t, n, r) { + for (let s = 0, o = i.length - 3; s <= o; s += 3) { + _n.fromArray(i, s); + const a = r.x * Math.abs(_n.x) + r.y * Math.abs(_n.y) + r.z * Math.abs(_n.z), l = e.dot(_n), c = t.dot(_n), h = n.dot(_n); + if (Math.max(-Math.max(l, c, h), Math.min(l, c, h)) > a) + return !1; + } + return !0; +} +const Ql = /* @__PURE__ */ new Cn(), ci = /* @__PURE__ */ new P(), Ar = /* @__PURE__ */ new P(); +class xi { + constructor(e = new P(), t = -1) { + this.isSphere = !0, this.center = e, this.radius = t; + } + set(e, t) { + return this.center.copy(e), this.radius = t, this; + } + setFromPoints(e, t) { + const n = this.center; + t !== void 0 ? n.copy(t) : Ql.setFromPoints(e).getCenter(n); + let r = 0; + for (let s = 0, o = e.length; s < o; s++) + r = Math.max(r, n.distanceToSquared(e[s])); + return this.radius = Math.sqrt(r), this; + } + copy(e) { + return this.center.copy(e.center), this.radius = e.radius, this; + } + isEmpty() { + return this.radius < 0; + } + makeEmpty() { + return this.center.set(0, 0, 0), this.radius = -1, this; + } + containsPoint(e) { + return e.distanceToSquared(this.center) <= this.radius * this.radius; + } + distanceToPoint(e) { + return e.distanceTo(this.center) - this.radius; + } + intersectsSphere(e) { + const t = this.radius + e.radius; + return e.center.distanceToSquared(this.center) <= t * t; + } + intersectsBox(e) { + return e.intersectsSphere(this); + } + intersectsPlane(e) { + return Math.abs(e.distanceToPoint(this.center)) <= this.radius; + } + clampPoint(e, t) { + const n = this.center.distanceToSquared(e); + return t.copy(e), n > this.radius * this.radius && (t.sub(this.center).normalize(), t.multiplyScalar(this.radius).add(this.center)), t; + } + getBoundingBox(e) { + return this.isEmpty() ? (e.makeEmpty(), e) : (e.set(this.center, this.center), e.expandByScalar(this.radius), e); + } + applyMatrix4(e) { + return this.center.applyMatrix4(e), this.radius = this.radius * e.getMaxScaleOnAxis(), this; + } + translate(e) { + return this.center.add(e), this; + } + expandByPoint(e) { + if (this.isEmpty()) + return this.center.copy(e), this.radius = 0, this; + ci.subVectors(e, this.center); + const t = ci.lengthSq(); + if (t > this.radius * this.radius) { + const n = Math.sqrt(t), r = (n - this.radius) * 0.5; + this.center.addScaledVector(ci, r / n), this.radius += r; + } + return this; + } + union(e) { + return e.isEmpty() ? this : this.isEmpty() ? (this.copy(e), this) : (this.center.equals(e.center) === !0 ? this.radius = Math.max(this.radius, e.radius) : (Ar.subVectors(e.center, this.center).setLength(e.radius), this.expandByPoint(ci.copy(e.center).add(Ar)), this.expandByPoint(ci.copy(e.center).sub(Ar))), this); + } + equals(e) { + return e.center.equals(this.center) && e.radius === this.radius; + } + clone() { + return new this.constructor().copy(this); + } +} +const Wt = /* @__PURE__ */ new P(), wr = /* @__PURE__ */ new P(), Ri = /* @__PURE__ */ new P(), en = /* @__PURE__ */ new P(), Rr = /* @__PURE__ */ new P(), Ci = /* @__PURE__ */ new P(), Cr = /* @__PURE__ */ new P(); +class To { + constructor(e = new P(), t = new P(0, 0, -1)) { + this.origin = e, this.direction = t; + } + set(e, t) { + return this.origin.copy(e), this.direction.copy(t), this; + } + copy(e) { + return this.origin.copy(e.origin), this.direction.copy(e.direction), this; + } + at(e, t) { + return t.copy(this.origin).addScaledVector(this.direction, e); + } + lookAt(e) { + return this.direction.copy(e).sub(this.origin).normalize(), this; + } + recast(e) { + return this.origin.copy(this.at(e, Wt)), this; + } + closestPointToPoint(e, t) { + t.subVectors(e, this.origin); + const n = t.dot(this.direction); + return n < 0 ? t.copy(this.origin) : t.copy(this.origin).addScaledVector(this.direction, n); + } + distanceToPoint(e) { + return Math.sqrt(this.distanceSqToPoint(e)); + } + distanceSqToPoint(e) { + const t = Wt.subVectors(e, this.origin).dot(this.direction); + return t < 0 ? this.origin.distanceToSquared(e) : (Wt.copy(this.origin).addScaledVector(this.direction, t), Wt.distanceToSquared(e)); + } + distanceSqToSegment(e, t, n, r) { + wr.copy(e).add(t).multiplyScalar(0.5), Ri.copy(t).sub(e).normalize(), en.copy(this.origin).sub(wr); + const s = e.distanceTo(t) * 0.5, o = -this.direction.dot(Ri), a = en.dot(this.direction), l = -en.dot(Ri), c = en.lengthSq(), h = Math.abs(1 - o * o); + let d, p, m, g; + if (h > 0) + if (d = o * l - a, p = o * a - l, g = s * h, d >= 0) + if (p >= -g) + if (p <= g) { + const v = 1 / h; + d *= v, p *= v, m = d * (d + o * p + 2 * a) + p * (o * d + p + 2 * l) + c; + } else + p = s, d = Math.max(0, -(o * p + a)), m = -d * d + p * (p + 2 * l) + c; + else + p = -s, d = Math.max(0, -(o * p + a)), m = -d * d + p * (p + 2 * l) + c; + else + p <= -g ? (d = Math.max(0, -(-o * s + a)), p = d > 0 ? -s : Math.min(Math.max(-s, -l), s), m = -d * d + p * (p + 2 * l) + c) : p <= g ? (d = 0, p = Math.min(Math.max(-s, -l), s), m = p * (p + 2 * l) + c) : (d = Math.max(0, -(o * s + a)), p = d > 0 ? s : Math.min(Math.max(-s, -l), s), m = -d * d + p * (p + 2 * l) + c); + else + p = o > 0 ? -s : s, d = Math.max(0, -(o * p + a)), m = -d * d + p * (p + 2 * l) + c; + return n && n.copy(this.origin).addScaledVector(this.direction, d), r && r.copy(wr).addScaledVector(Ri, p), m; + } + intersectSphere(e, t) { + Wt.subVectors(e.center, this.origin); + const n = Wt.dot(this.direction), r = Wt.dot(Wt) - n * n, s = e.radius * e.radius; + if (r > s) return null; + const o = Math.sqrt(s - r), a = n - o, l = n + o; + return l < 0 ? null : a < 0 ? this.at(l, t) : this.at(a, t); + } + intersectsSphere(e) { + return this.distanceSqToPoint(e.center) <= e.radius * e.radius; + } + distanceToPlane(e) { + const t = e.normal.dot(this.direction); + if (t === 0) + return e.distanceToPoint(this.origin) === 0 ? 0 : null; + const n = -(this.origin.dot(e.normal) + e.constant) / t; + return n >= 0 ? n : null; + } + intersectPlane(e, t) { + const n = this.distanceToPlane(e); + return n === null ? null : this.at(n, t); + } + intersectsPlane(e) { + const t = e.distanceToPoint(this.origin); + return t === 0 || e.normal.dot(this.direction) * t < 0; + } + intersectBox(e, t) { + let n, r, s, o, a, l; + const c = 1 / this.direction.x, h = 1 / this.direction.y, d = 1 / this.direction.z, p = this.origin; + return c >= 0 ? (n = (e.min.x - p.x) * c, r = (e.max.x - p.x) * c) : (n = (e.max.x - p.x) * c, r = (e.min.x - p.x) * c), h >= 0 ? (s = (e.min.y - p.y) * h, o = (e.max.y - p.y) * h) : (s = (e.max.y - p.y) * h, o = (e.min.y - p.y) * h), n > o || s > r || ((s > n || isNaN(n)) && (n = s), (o < r || isNaN(r)) && (r = o), d >= 0 ? (a = (e.min.z - p.z) * d, l = (e.max.z - p.z) * d) : (a = (e.max.z - p.z) * d, l = (e.min.z - p.z) * d), n > l || a > r) || ((a > n || n !== n) && (n = a), (l < r || r !== r) && (r = l), r < 0) ? null : this.at(n >= 0 ? n : r, t); + } + intersectsBox(e) { + return this.intersectBox(e, Wt) !== null; + } + intersectTriangle(e, t, n, r, s) { + Rr.subVectors(t, e), Ci.subVectors(n, e), Cr.crossVectors(Rr, Ci); + let o = this.direction.dot(Cr), a; + if (o > 0) { + if (r) return null; + a = 1; + } else if (o < 0) + a = -1, o = -o; + else + return null; + en.subVectors(this.origin, e); + const l = a * this.direction.dot(Ci.crossVectors(en, Ci)); + if (l < 0) + return null; + const c = a * this.direction.dot(Rr.cross(en)); + if (c < 0 || l + c > o) + return null; + const h = -a * en.dot(Cr); + return h < 0 ? null : this.at(h / o, s); + } + applyMatrix4(e) { + return this.origin.applyMatrix4(e), this.direction.transformDirection(e), this; + } + equals(e) { + return e.origin.equals(this.origin) && e.direction.equals(this.direction); + } + clone() { + return new this.constructor().copy(this); + } +} +class Qe { + constructor(e, t, n, r, s, o, a, l, c, h, d, p, m, g, v, f) { + Qe.prototype.isMatrix4 = !0, this.elements = [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ], e !== void 0 && this.set(e, t, n, r, s, o, a, l, c, h, d, p, m, g, v, f); + } + set(e, t, n, r, s, o, a, l, c, h, d, p, m, g, v, f) { + const u = this.elements; + return u[0] = e, u[4] = t, u[8] = n, u[12] = r, u[1] = s, u[5] = o, u[9] = a, u[13] = l, u[2] = c, u[6] = h, u[10] = d, u[14] = p, u[3] = m, u[7] = g, u[11] = v, u[15] = f, this; + } + identity() { + return this.set( + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ), this; + } + clone() { + return new Qe().fromArray(this.elements); + } + copy(e) { + const t = this.elements, n = e.elements; + return t[0] = n[0], t[1] = n[1], t[2] = n[2], t[3] = n[3], t[4] = n[4], t[5] = n[5], t[6] = n[6], t[7] = n[7], t[8] = n[8], t[9] = n[9], t[10] = n[10], t[11] = n[11], t[12] = n[12], t[13] = n[13], t[14] = n[14], t[15] = n[15], this; + } + copyPosition(e) { + const t = this.elements, n = e.elements; + return t[12] = n[12], t[13] = n[13], t[14] = n[14], this; + } + setFromMatrix3(e) { + const t = e.elements; + return this.set( + t[0], + t[3], + t[6], + 0, + t[1], + t[4], + t[7], + 0, + t[2], + t[5], + t[8], + 0, + 0, + 0, + 0, + 1 + ), this; + } + extractBasis(e, t, n) { + return e.setFromMatrixColumn(this, 0), t.setFromMatrixColumn(this, 1), n.setFromMatrixColumn(this, 2), this; + } + makeBasis(e, t, n) { + return this.set( + e.x, + t.x, + n.x, + 0, + e.y, + t.y, + n.y, + 0, + e.z, + t.z, + n.z, + 0, + 0, + 0, + 0, + 1 + ), this; + } + extractRotation(e) { + const t = this.elements, n = e.elements, r = 1 / On.setFromMatrixColumn(e, 0).length(), s = 1 / On.setFromMatrixColumn(e, 1).length(), o = 1 / On.setFromMatrixColumn(e, 2).length(); + return t[0] = n[0] * r, t[1] = n[1] * r, t[2] = n[2] * r, t[3] = 0, t[4] = n[4] * s, t[5] = n[5] * s, t[6] = n[6] * s, t[7] = 0, t[8] = n[8] * o, t[9] = n[9] * o, t[10] = n[10] * o, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, this; + } + makeRotationFromEuler(e) { + const t = this.elements, n = e.x, r = e.y, s = e.z, o = Math.cos(n), a = Math.sin(n), l = Math.cos(r), c = Math.sin(r), h = Math.cos(s), d = Math.sin(s); + if (e.order === "XYZ") { + const p = o * h, m = o * d, g = a * h, v = a * d; + t[0] = l * h, t[4] = -l * d, t[8] = c, t[1] = m + g * c, t[5] = p - v * c, t[9] = -a * l, t[2] = v - p * c, t[6] = g + m * c, t[10] = o * l; + } else if (e.order === "YXZ") { + const p = l * h, m = l * d, g = c * h, v = c * d; + t[0] = p + v * a, t[4] = g * a - m, t[8] = o * c, t[1] = o * d, t[5] = o * h, t[9] = -a, t[2] = m * a - g, t[6] = v + p * a, t[10] = o * l; + } else if (e.order === "ZXY") { + const p = l * h, m = l * d, g = c * h, v = c * d; + t[0] = p - v * a, t[4] = -o * d, t[8] = g + m * a, t[1] = m + g * a, t[5] = o * h, t[9] = v - p * a, t[2] = -o * c, t[6] = a, t[10] = o * l; + } else if (e.order === "ZYX") { + const p = o * h, m = o * d, g = a * h, v = a * d; + t[0] = l * h, t[4] = g * c - m, t[8] = p * c + v, t[1] = l * d, t[5] = v * c + p, t[9] = m * c - g, t[2] = -c, t[6] = a * l, t[10] = o * l; + } else if (e.order === "YZX") { + const p = o * l, m = o * c, g = a * l, v = a * c; + t[0] = l * h, t[4] = v - p * d, t[8] = g * d + m, t[1] = d, t[5] = o * h, t[9] = -a * h, t[2] = -c * h, t[6] = m * d + g, t[10] = p - v * d; + } else if (e.order === "XZY") { + const p = o * l, m = o * c, g = a * l, v = a * c; + t[0] = l * h, t[4] = -d, t[8] = c * h, t[1] = p * d + v, t[5] = o * h, t[9] = m * d - g, t[2] = g * d - m, t[6] = a * h, t[10] = v * d + p; + } + return t[3] = 0, t[7] = 0, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, this; + } + makeRotationFromQuaternion(e) { + return this.compose(ec, e, tc); + } + lookAt(e, t, n) { + const r = this.elements; + return Et.subVectors(e, t), Et.lengthSq() === 0 && (Et.z = 1), Et.normalize(), tn.crossVectors(n, Et), tn.lengthSq() === 0 && (Math.abs(n.z) === 1 ? Et.x += 1e-4 : Et.z += 1e-4, Et.normalize(), tn.crossVectors(n, Et)), tn.normalize(), Li.crossVectors(Et, tn), r[0] = tn.x, r[4] = Li.x, r[8] = Et.x, r[1] = tn.y, r[5] = Li.y, r[9] = Et.y, r[2] = tn.z, r[6] = Li.z, r[10] = Et.z, this; + } + multiply(e) { + return this.multiplyMatrices(this, e); + } + premultiply(e) { + return this.multiplyMatrices(e, this); + } + multiplyMatrices(e, t) { + const n = e.elements, r = t.elements, s = this.elements, o = n[0], a = n[4], l = n[8], c = n[12], h = n[1], d = n[5], p = n[9], m = n[13], g = n[2], v = n[6], f = n[10], u = n[14], b = n[3], S = n[7], R = n[11], D = n[15], C = r[0], A = r[4], W = r[8], x = r[12], y = r[1], z = r[5], Z = r[9], re = r[13], L = r[2], F = r[6], V = r[10], Y = r[14], X = r[3], k = r[7], q = r[11], Q = r[15]; + return s[0] = o * C + a * y + l * L + c * X, s[4] = o * A + a * z + l * F + c * k, s[8] = o * W + a * Z + l * V + c * q, s[12] = o * x + a * re + l * Y + c * Q, s[1] = h * C + d * y + p * L + m * X, s[5] = h * A + d * z + p * F + m * k, s[9] = h * W + d * Z + p * V + m * q, s[13] = h * x + d * re + p * Y + m * Q, s[2] = g * C + v * y + f * L + u * X, s[6] = g * A + v * z + f * F + u * k, s[10] = g * W + v * Z + f * V + u * q, s[14] = g * x + v * re + f * Y + u * Q, s[3] = b * C + S * y + R * L + D * X, s[7] = b * A + S * z + R * F + D * k, s[11] = b * W + S * Z + R * V + D * q, s[15] = b * x + S * re + R * Y + D * Q, this; + } + multiplyScalar(e) { + const t = this.elements; + return t[0] *= e, t[4] *= e, t[8] *= e, t[12] *= e, t[1] *= e, t[5] *= e, t[9] *= e, t[13] *= e, t[2] *= e, t[6] *= e, t[10] *= e, t[14] *= e, t[3] *= e, t[7] *= e, t[11] *= e, t[15] *= e, this; + } + determinant() { + const e = this.elements, t = e[0], n = e[4], r = e[8], s = e[12], o = e[1], a = e[5], l = e[9], c = e[13], h = e[2], d = e[6], p = e[10], m = e[14], g = e[3], v = e[7], f = e[11], u = e[15]; + return g * (+s * l * d - r * c * d - s * a * p + n * c * p + r * a * m - n * l * m) + v * (+t * l * m - t * c * p + s * o * p - r * o * m + r * c * h - s * l * h) + f * (+t * c * d - t * a * m - s * o * d + n * o * m + s * a * h - n * c * h) + u * (-r * a * h - t * l * d + t * a * p + r * o * d - n * o * p + n * l * h); + } + transpose() { + const e = this.elements; + let t; + return t = e[1], e[1] = e[4], e[4] = t, t = e[2], e[2] = e[8], e[8] = t, t = e[6], e[6] = e[9], e[9] = t, t = e[3], e[3] = e[12], e[12] = t, t = e[7], e[7] = e[13], e[13] = t, t = e[11], e[11] = e[14], e[14] = t, this; + } + setPosition(e, t, n) { + const r = this.elements; + return e.isVector3 ? (r[12] = e.x, r[13] = e.y, r[14] = e.z) : (r[12] = e, r[13] = t, r[14] = n), this; + } + invert() { + const e = this.elements, t = e[0], n = e[1], r = e[2], s = e[3], o = e[4], a = e[5], l = e[6], c = e[7], h = e[8], d = e[9], p = e[10], m = e[11], g = e[12], v = e[13], f = e[14], u = e[15], b = d * f * c - v * p * c + v * l * m - a * f * m - d * l * u + a * p * u, S = g * p * c - h * f * c - g * l * m + o * f * m + h * l * u - o * p * u, R = h * v * c - g * d * c + g * a * m - o * v * m - h * a * u + o * d * u, D = g * d * l - h * v * l - g * a * p + o * v * p + h * a * f - o * d * f, C = t * b + n * S + r * R + s * D; + if (C === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + const A = 1 / C; + return e[0] = b * A, e[1] = (v * p * s - d * f * s - v * r * m + n * f * m + d * r * u - n * p * u) * A, e[2] = (a * f * s - v * l * s + v * r * c - n * f * c - a * r * u + n * l * u) * A, e[3] = (d * l * s - a * p * s - d * r * c + n * p * c + a * r * m - n * l * m) * A, e[4] = S * A, e[5] = (h * f * s - g * p * s + g * r * m - t * f * m - h * r * u + t * p * u) * A, e[6] = (g * l * s - o * f * s - g * r * c + t * f * c + o * r * u - t * l * u) * A, e[7] = (o * p * s - h * l * s + h * r * c - t * p * c - o * r * m + t * l * m) * A, e[8] = R * A, e[9] = (g * d * s - h * v * s - g * n * m + t * v * m + h * n * u - t * d * u) * A, e[10] = (o * v * s - g * a * s + g * n * c - t * v * c - o * n * u + t * a * u) * A, e[11] = (h * a * s - o * d * s - h * n * c + t * d * c + o * n * m - t * a * m) * A, e[12] = D * A, e[13] = (h * v * r - g * d * r + g * n * p - t * v * p - h * n * f + t * d * f) * A, e[14] = (g * a * r - o * v * r - g * n * l + t * v * l + o * n * f - t * a * f) * A, e[15] = (o * d * r - h * a * r + h * n * l - t * d * l - o * n * p + t * a * p) * A, this; + } + scale(e) { + const t = this.elements, n = e.x, r = e.y, s = e.z; + return t[0] *= n, t[4] *= r, t[8] *= s, t[1] *= n, t[5] *= r, t[9] *= s, t[2] *= n, t[6] *= r, t[10] *= s, t[3] *= n, t[7] *= r, t[11] *= s, this; + } + getMaxScaleOnAxis() { + const e = this.elements, t = e[0] * e[0] + e[1] * e[1] + e[2] * e[2], n = e[4] * e[4] + e[5] * e[5] + e[6] * e[6], r = e[8] * e[8] + e[9] * e[9] + e[10] * e[10]; + return Math.sqrt(Math.max(t, n, r)); + } + makeTranslation(e, t, n) { + return e.isVector3 ? this.set( + 1, + 0, + 0, + e.x, + 0, + 1, + 0, + e.y, + 0, + 0, + 1, + e.z, + 0, + 0, + 0, + 1 + ) : this.set( + 1, + 0, + 0, + e, + 0, + 1, + 0, + t, + 0, + 0, + 1, + n, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationX(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + 1, + 0, + 0, + 0, + 0, + t, + -n, + 0, + 0, + n, + t, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationY(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + t, + 0, + n, + 0, + 0, + 1, + 0, + 0, + -n, + 0, + t, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationZ(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + t, + -n, + 0, + 0, + n, + t, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationAxis(e, t) { + const n = Math.cos(t), r = Math.sin(t), s = 1 - n, o = e.x, a = e.y, l = e.z, c = s * o, h = s * a; + return this.set( + c * o + n, + c * a - r * l, + c * l + r * a, + 0, + c * a + r * l, + h * a + n, + h * l - r * o, + 0, + c * l - r * a, + h * l + r * o, + s * l * l + n, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeScale(e, t, n) { + return this.set( + e, + 0, + 0, + 0, + 0, + t, + 0, + 0, + 0, + 0, + n, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeShear(e, t, n, r, s, o) { + return this.set( + 1, + n, + s, + 0, + e, + 1, + o, + 0, + t, + r, + 1, + 0, + 0, + 0, + 0, + 1 + ), this; + } + compose(e, t, n) { + const r = this.elements, s = t._x, o = t._y, a = t._z, l = t._w, c = s + s, h = o + o, d = a + a, p = s * c, m = s * h, g = s * d, v = o * h, f = o * d, u = a * d, b = l * c, S = l * h, R = l * d, D = n.x, C = n.y, A = n.z; + return r[0] = (1 - (v + u)) * D, r[1] = (m + R) * D, r[2] = (g - S) * D, r[3] = 0, r[4] = (m - R) * C, r[5] = (1 - (p + u)) * C, r[6] = (f + b) * C, r[7] = 0, r[8] = (g + S) * A, r[9] = (f - b) * A, r[10] = (1 - (p + v)) * A, r[11] = 0, r[12] = e.x, r[13] = e.y, r[14] = e.z, r[15] = 1, this; + } + decompose(e, t, n) { + const r = this.elements; + let s = On.set(r[0], r[1], r[2]).length(); + const o = On.set(r[4], r[5], r[6]).length(), a = On.set(r[8], r[9], r[10]).length(); + this.determinant() < 0 && (s = -s), e.x = r[12], e.y = r[13], e.z = r[14], Pt.copy(this); + const c = 1 / s, h = 1 / o, d = 1 / a; + return Pt.elements[0] *= c, Pt.elements[1] *= c, Pt.elements[2] *= c, Pt.elements[4] *= h, Pt.elements[5] *= h, Pt.elements[6] *= h, Pt.elements[8] *= d, Pt.elements[9] *= d, Pt.elements[10] *= d, t.setFromRotationMatrix(Pt), n.x = s, n.y = o, n.z = a, this; + } + makePerspective(e, t, n, r, s, o, a = Zt) { + const l = this.elements, c = 2 * s / (t - e), h = 2 * s / (n - r), d = (t + e) / (t - e), p = (n + r) / (n - r); + let m, g; + if (a === Zt) + m = -(o + s) / (o - s), g = -2 * o * s / (o - s); + else if (a === tr) + m = -o / (o - s), g = -o * s / (o - s); + else + throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: " + a); + return l[0] = c, l[4] = 0, l[8] = d, l[12] = 0, l[1] = 0, l[5] = h, l[9] = p, l[13] = 0, l[2] = 0, l[6] = 0, l[10] = m, l[14] = g, l[3] = 0, l[7] = 0, l[11] = -1, l[15] = 0, this; + } + makeOrthographic(e, t, n, r, s, o, a = Zt) { + const l = this.elements, c = 1 / (t - e), h = 1 / (n - r), d = 1 / (o - s), p = (t + e) * c, m = (n + r) * h; + let g, v; + if (a === Zt) + g = (o + s) * d, v = -2 * d; + else if (a === tr) + g = s * d, v = -1 * d; + else + throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: " + a); + return l[0] = 2 * c, l[4] = 0, l[8] = 0, l[12] = -p, l[1] = 0, l[5] = 2 * h, l[9] = 0, l[13] = -m, l[2] = 0, l[6] = 0, l[10] = v, l[14] = -g, l[3] = 0, l[7] = 0, l[11] = 0, l[15] = 1, this; + } + equals(e) { + const t = this.elements, n = e.elements; + for (let r = 0; r < 16; r++) + if (t[r] !== n[r]) return !1; + return !0; + } + fromArray(e, t = 0) { + for (let n = 0; n < 16; n++) + this.elements[n] = e[n + t]; + return this; + } + toArray(e = [], t = 0) { + const n = this.elements; + return e[t] = n[0], e[t + 1] = n[1], e[t + 2] = n[2], e[t + 3] = n[3], e[t + 4] = n[4], e[t + 5] = n[5], e[t + 6] = n[6], e[t + 7] = n[7], e[t + 8] = n[8], e[t + 9] = n[9], e[t + 10] = n[10], e[t + 11] = n[11], e[t + 12] = n[12], e[t + 13] = n[13], e[t + 14] = n[14], e[t + 15] = n[15], e; + } +} +const On = /* @__PURE__ */ new P(), Pt = /* @__PURE__ */ new Qe(), ec = /* @__PURE__ */ new P(0, 0, 0), tc = /* @__PURE__ */ new P(1, 1, 1), tn = /* @__PURE__ */ new P(), Li = /* @__PURE__ */ new P(), Et = /* @__PURE__ */ new P(), oa = /* @__PURE__ */ new Qe(), la = /* @__PURE__ */ new An(); +class ar { + constructor(e = 0, t = 0, n = 0, r = ar.DEFAULT_ORDER) { + this.isEuler = !0, this._x = e, this._y = t, this._z = n, this._order = r; + } + get x() { + return this._x; + } + set x(e) { + this._x = e, this._onChangeCallback(); + } + get y() { + return this._y; + } + set y(e) { + this._y = e, this._onChangeCallback(); + } + get z() { + return this._z; + } + set z(e) { + this._z = e, this._onChangeCallback(); + } + get order() { + return this._order; + } + set order(e) { + this._order = e, this._onChangeCallback(); + } + set(e, t, n, r = this._order) { + return this._x = e, this._y = t, this._z = n, this._order = r, this._onChangeCallback(), this; + } + clone() { + return new this.constructor(this._x, this._y, this._z, this._order); + } + copy(e) { + return this._x = e._x, this._y = e._y, this._z = e._z, this._order = e._order, this._onChangeCallback(), this; + } + setFromRotationMatrix(e, t = this._order, n = !0) { + const r = e.elements, s = r[0], o = r[4], a = r[8], l = r[1], c = r[5], h = r[9], d = r[2], p = r[6], m = r[10]; + switch (t) { + case "XYZ": + this._y = Math.asin(vt(a, -1, 1)), Math.abs(a) < 0.9999999 ? (this._x = Math.atan2(-h, m), this._z = Math.atan2(-o, s)) : (this._x = Math.atan2(p, c), this._z = 0); + break; + case "YXZ": + this._x = Math.asin(-vt(h, -1, 1)), Math.abs(h) < 0.9999999 ? (this._y = Math.atan2(a, m), this._z = Math.atan2(l, c)) : (this._y = Math.atan2(-d, s), this._z = 0); + break; + case "ZXY": + this._x = Math.asin(vt(p, -1, 1)), Math.abs(p) < 0.9999999 ? (this._y = Math.atan2(-d, m), this._z = Math.atan2(-o, c)) : (this._y = 0, this._z = Math.atan2(l, s)); + break; + case "ZYX": + this._y = Math.asin(-vt(d, -1, 1)), Math.abs(d) < 0.9999999 ? (this._x = Math.atan2(p, m), this._z = Math.atan2(l, s)) : (this._x = 0, this._z = Math.atan2(-o, c)); + break; + case "YZX": + this._z = Math.asin(vt(l, -1, 1)), Math.abs(l) < 0.9999999 ? (this._x = Math.atan2(-h, c), this._y = Math.atan2(-d, s)) : (this._x = 0, this._y = Math.atan2(a, m)); + break; + case "XZY": + this._z = Math.asin(-vt(o, -1, 1)), Math.abs(o) < 0.9999999 ? (this._x = Math.atan2(p, c), this._y = Math.atan2(a, s)) : (this._x = Math.atan2(-h, m), this._y = 0); + break; + default: + console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: " + t); + } + return this._order = t, n === !0 && this._onChangeCallback(), this; + } + setFromQuaternion(e, t, n) { + return oa.makeRotationFromQuaternion(e), this.setFromRotationMatrix(oa, t, n); + } + setFromVector3(e, t = this._order) { + return this.set(e.x, e.y, e.z, t); + } + reorder(e) { + return la.setFromEuler(this), this.setFromQuaternion(la, e); + } + equals(e) { + return e._x === this._x && e._y === this._y && e._z === this._z && e._order === this._order; + } + fromArray(e) { + return this._x = e[0], this._y = e[1], this._z = e[2], e[3] !== void 0 && (this._order = e[3]), this._onChangeCallback(), this; + } + toArray(e = [], t = 0) { + return e[t] = this._x, e[t + 1] = this._y, e[t + 2] = this._z, e[t + 3] = this._order, e; + } + _onChange(e) { + return this._onChangeCallback = e, this; + } + _onChangeCallback() { + } + *[Symbol.iterator]() { + yield this._x, yield this._y, yield this._z, yield this._order; + } +} +ar.DEFAULT_ORDER = "XYZ"; +class bo { + constructor() { + this.mask = 1; + } + set(e) { + this.mask = (1 << e | 0) >>> 0; + } + enable(e) { + this.mask |= 1 << e | 0; + } + enableAll() { + this.mask = -1; + } + toggle(e) { + this.mask ^= 1 << e | 0; + } + disable(e) { + this.mask &= ~(1 << e | 0); + } + disableAll() { + this.mask = 0; + } + test(e) { + return (this.mask & e.mask) !== 0; + } + isEnabled(e) { + return (this.mask & (1 << e | 0)) !== 0; + } +} +let nc = 0; +const ca = /* @__PURE__ */ new P(), Bn = /* @__PURE__ */ new An(), Xt = /* @__PURE__ */ new Qe(), Pi = /* @__PURE__ */ new P(), ui = /* @__PURE__ */ new P(), ic = /* @__PURE__ */ new P(), rc = /* @__PURE__ */ new An(), ua = /* @__PURE__ */ new P(1, 0, 0), ha = /* @__PURE__ */ new P(0, 1, 0), da = /* @__PURE__ */ new P(0, 0, 1), sc = { type: "added" }, ac = { type: "removed" }; +class dt extends Rn { + constructor() { + super(), this.isObject3D = !0, Object.defineProperty(this, "id", { value: nc++ }), this.uuid = vi(), this.name = "", this.type = "Object3D", this.parent = null, this.children = [], this.up = dt.DEFAULT_UP.clone(); + const e = new P(), t = new ar(), n = new An(), r = new P(1, 1, 1); + function s() { + n.setFromEuler(t, !1); + } + function o() { + t.setFromQuaternion(n, void 0, !1); + } + t._onChange(s), n._onChange(o), Object.defineProperties(this, { + position: { + configurable: !0, + enumerable: !0, + value: e + }, + rotation: { + configurable: !0, + enumerable: !0, + value: t + }, + quaternion: { + configurable: !0, + enumerable: !0, + value: n + }, + scale: { + configurable: !0, + enumerable: !0, + value: r + }, + modelViewMatrix: { + value: new Qe() + }, + normalMatrix: { + value: new Ve() + } + }), this.matrix = new Qe(), this.matrixWorld = new Qe(), this.matrixAutoUpdate = dt.DEFAULT_MATRIX_AUTO_UPDATE, this.matrixWorldAutoUpdate = dt.DEFAULT_MATRIX_WORLD_AUTO_UPDATE, this.matrixWorldNeedsUpdate = !1, this.layers = new bo(), this.visible = !0, this.castShadow = !1, this.receiveShadow = !1, this.frustumCulled = !0, this.renderOrder = 0, this.animations = [], this.userData = {}; + } + onBeforeShadow() { + } + onAfterShadow() { + } + onBeforeRender() { + } + onAfterRender() { + } + applyMatrix4(e) { + this.matrixAutoUpdate && this.updateMatrix(), this.matrix.premultiply(e), this.matrix.decompose(this.position, this.quaternion, this.scale); + } + applyQuaternion(e) { + return this.quaternion.premultiply(e), this; + } + setRotationFromAxisAngle(e, t) { + this.quaternion.setFromAxisAngle(e, t); + } + setRotationFromEuler(e) { + this.quaternion.setFromEuler(e, !0); + } + setRotationFromMatrix(e) { + this.quaternion.setFromRotationMatrix(e); + } + setRotationFromQuaternion(e) { + this.quaternion.copy(e); + } + rotateOnAxis(e, t) { + return Bn.setFromAxisAngle(e, t), this.quaternion.multiply(Bn), this; + } + rotateOnWorldAxis(e, t) { + return Bn.setFromAxisAngle(e, t), this.quaternion.premultiply(Bn), this; + } + rotateX(e) { + return this.rotateOnAxis(ua, e); + } + rotateY(e) { + return this.rotateOnAxis(ha, e); + } + rotateZ(e) { + return this.rotateOnAxis(da, e); + } + translateOnAxis(e, t) { + return ca.copy(e).applyQuaternion(this.quaternion), this.position.add(ca.multiplyScalar(t)), this; + } + translateX(e) { + return this.translateOnAxis(ua, e); + } + translateY(e) { + return this.translateOnAxis(ha, e); + } + translateZ(e) { + return this.translateOnAxis(da, e); + } + localToWorld(e) { + return this.updateWorldMatrix(!0, !1), e.applyMatrix4(this.matrixWorld); + } + worldToLocal(e) { + return this.updateWorldMatrix(!0, !1), e.applyMatrix4(Xt.copy(this.matrixWorld).invert()); + } + lookAt(e, t, n) { + e.isVector3 ? Pi.copy(e) : Pi.set(e, t, n); + const r = this.parent; + this.updateWorldMatrix(!0, !1), ui.setFromMatrixPosition(this.matrixWorld), this.isCamera || this.isLight ? Xt.lookAt(ui, Pi, this.up) : Xt.lookAt(Pi, ui, this.up), this.quaternion.setFromRotationMatrix(Xt), r && (Xt.extractRotation(r.matrixWorld), Bn.setFromRotationMatrix(Xt), this.quaternion.premultiply(Bn.invert())); + } + add(e) { + if (arguments.length > 1) { + for (let t = 0; t < arguments.length; t++) + this.add(arguments[t]); + return this; + } + return e === this ? (console.error("THREE.Object3D.add: object can't be added as a child of itself.", e), this) : (e && e.isObject3D ? (e.parent !== null && e.parent.remove(e), e.parent = this, this.children.push(e), e.dispatchEvent(sc)) : console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.", e), this); + } + remove(e) { + if (arguments.length > 1) { + for (let n = 0; n < arguments.length; n++) + this.remove(arguments[n]); + return this; + } + const t = this.children.indexOf(e); + return t !== -1 && (e.parent = null, this.children.splice(t, 1), e.dispatchEvent(ac)), this; + } + removeFromParent() { + const e = this.parent; + return e !== null && e.remove(this), this; + } + clear() { + return this.remove(...this.children); + } + attach(e) { + return this.updateWorldMatrix(!0, !1), Xt.copy(this.matrixWorld).invert(), e.parent !== null && (e.parent.updateWorldMatrix(!0, !1), Xt.multiply(e.parent.matrixWorld)), e.applyMatrix4(Xt), this.add(e), e.updateWorldMatrix(!1, !0), this; + } + getObjectById(e) { + return this.getObjectByProperty("id", e); + } + getObjectByName(e) { + return this.getObjectByProperty("name", e); + } + getObjectByProperty(e, t) { + if (this[e] === t) return this; + for (let n = 0, r = this.children.length; n < r; n++) { + const o = this.children[n].getObjectByProperty(e, t); + if (o !== void 0) + return o; + } + } + getObjectsByProperty(e, t, n = []) { + this[e] === t && n.push(this); + const r = this.children; + for (let s = 0, o = r.length; s < o; s++) + r[s].getObjectsByProperty(e, t, n); + return n; + } + getWorldPosition(e) { + return this.updateWorldMatrix(!0, !1), e.setFromMatrixPosition(this.matrixWorld); + } + getWorldQuaternion(e) { + return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose(ui, e, ic), e; + } + getWorldScale(e) { + return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose(ui, rc, e), e; + } + getWorldDirection(e) { + this.updateWorldMatrix(!0, !1); + const t = this.matrixWorld.elements; + return e.set(t[8], t[9], t[10]).normalize(); + } + raycast() { + } + traverse(e) { + e(this); + const t = this.children; + for (let n = 0, r = t.length; n < r; n++) + t[n].traverse(e); + } + traverseVisible(e) { + if (this.visible === !1) return; + e(this); + const t = this.children; + for (let n = 0, r = t.length; n < r; n++) + t[n].traverseVisible(e); + } + traverseAncestors(e) { + const t = this.parent; + t !== null && (e(t), t.traverseAncestors(e)); + } + updateMatrix() { + this.matrix.compose(this.position, this.quaternion, this.scale), this.matrixWorldNeedsUpdate = !0; + } + updateMatrixWorld(e) { + this.matrixAutoUpdate && this.updateMatrix(), (this.matrixWorldNeedsUpdate || e) && (this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), this.matrixWorldNeedsUpdate = !1, e = !0); + const t = this.children; + for (let n = 0, r = t.length; n < r; n++) { + const s = t[n]; + (s.matrixWorldAutoUpdate === !0 || e === !0) && s.updateMatrixWorld(e); + } + } + updateWorldMatrix(e, t) { + const n = this.parent; + if (e === !0 && n !== null && n.matrixWorldAutoUpdate === !0 && n.updateWorldMatrix(!0, !1), this.matrixAutoUpdate && this.updateMatrix(), this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), t === !0) { + const r = this.children; + for (let s = 0, o = r.length; s < o; s++) { + const a = r[s]; + a.matrixWorldAutoUpdate === !0 && a.updateWorldMatrix(!1, !0); + } + } + } + toJSON(e) { + const t = e === void 0 || typeof e == "string", n = {}; + t && (e = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {}, + skeletons: {}, + animations: {}, + nodes: {} + }, n.metadata = { + version: 4.6, + type: "Object", + generator: "Object3D.toJSON" + }); + const r = {}; + r.uuid = this.uuid, r.type = this.type, this.name !== "" && (r.name = this.name), this.castShadow === !0 && (r.castShadow = !0), this.receiveShadow === !0 && (r.receiveShadow = !0), this.visible === !1 && (r.visible = !1), this.frustumCulled === !1 && (r.frustumCulled = !1), this.renderOrder !== 0 && (r.renderOrder = this.renderOrder), Object.keys(this.userData).length > 0 && (r.userData = this.userData), r.layers = this.layers.mask, r.matrix = this.matrix.toArray(), r.up = this.up.toArray(), this.matrixAutoUpdate === !1 && (r.matrixAutoUpdate = !1), this.isInstancedMesh && (r.type = "InstancedMesh", r.count = this.count, r.instanceMatrix = this.instanceMatrix.toJSON(), this.instanceColor !== null && (r.instanceColor = this.instanceColor.toJSON())), this.isBatchedMesh && (r.type = "BatchedMesh", r.perObjectFrustumCulled = this.perObjectFrustumCulled, r.sortObjects = this.sortObjects, r.drawRanges = this._drawRanges, r.reservedRanges = this._reservedRanges, r.visibility = this._visibility, r.active = this._active, r.bounds = this._bounds.map((a) => ({ + boxInitialized: a.boxInitialized, + boxMin: a.box.min.toArray(), + boxMax: a.box.max.toArray(), + sphereInitialized: a.sphereInitialized, + sphereRadius: a.sphere.radius, + sphereCenter: a.sphere.center.toArray() + })), r.maxGeometryCount = this._maxGeometryCount, r.maxVertexCount = this._maxVertexCount, r.maxIndexCount = this._maxIndexCount, r.geometryInitialized = this._geometryInitialized, r.geometryCount = this._geometryCount, r.matricesTexture = this._matricesTexture.toJSON(e), this.boundingSphere !== null && (r.boundingSphere = { + center: r.boundingSphere.center.toArray(), + radius: r.boundingSphere.radius + }), this.boundingBox !== null && (r.boundingBox = { + min: r.boundingBox.min.toArray(), + max: r.boundingBox.max.toArray() + })); + function s(a, l) { + return a[l.uuid] === void 0 && (a[l.uuid] = l.toJSON(e)), l.uuid; + } + if (this.isScene) + this.background && (this.background.isColor ? r.background = this.background.toJSON() : this.background.isTexture && (r.background = this.background.toJSON(e).uuid)), this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== !0 && (r.environment = this.environment.toJSON(e).uuid); + else if (this.isMesh || this.isLine || this.isPoints) { + r.geometry = s(e.geometries, this.geometry); + const a = this.geometry.parameters; + if (a !== void 0 && a.shapes !== void 0) { + const l = a.shapes; + if (Array.isArray(l)) + for (let c = 0, h = l.length; c < h; c++) { + const d = l[c]; + s(e.shapes, d); + } + else + s(e.shapes, l); + } + } + if (this.isSkinnedMesh && (r.bindMode = this.bindMode, r.bindMatrix = this.bindMatrix.toArray(), this.skeleton !== void 0 && (s(e.skeletons, this.skeleton), r.skeleton = this.skeleton.uuid)), this.material !== void 0) + if (Array.isArray(this.material)) { + const a = []; + for (let l = 0, c = this.material.length; l < c; l++) + a.push(s(e.materials, this.material[l])); + r.material = a; + } else + r.material = s(e.materials, this.material); + if (this.children.length > 0) { + r.children = []; + for (let a = 0; a < this.children.length; a++) + r.children.push(this.children[a].toJSON(e).object); + } + if (this.animations.length > 0) { + r.animations = []; + for (let a = 0; a < this.animations.length; a++) { + const l = this.animations[a]; + r.animations.push(s(e.animations, l)); + } + } + if (t) { + const a = o(e.geometries), l = o(e.materials), c = o(e.textures), h = o(e.images), d = o(e.shapes), p = o(e.skeletons), m = o(e.animations), g = o(e.nodes); + a.length > 0 && (n.geometries = a), l.length > 0 && (n.materials = l), c.length > 0 && (n.textures = c), h.length > 0 && (n.images = h), d.length > 0 && (n.shapes = d), p.length > 0 && (n.skeletons = p), m.length > 0 && (n.animations = m), g.length > 0 && (n.nodes = g); + } + return n.object = r, n; + function o(a) { + const l = []; + for (const c in a) { + const h = a[c]; + delete h.metadata, l.push(h); + } + return l; + } + } + clone(e) { + return new this.constructor().copy(this, e); + } + copy(e, t = !0) { + if (this.name = e.name, this.up.copy(e.up), this.position.copy(e.position), this.rotation.order = e.rotation.order, this.quaternion.copy(e.quaternion), this.scale.copy(e.scale), this.matrix.copy(e.matrix), this.matrixWorld.copy(e.matrixWorld), this.matrixAutoUpdate = e.matrixAutoUpdate, this.matrixWorldAutoUpdate = e.matrixWorldAutoUpdate, this.matrixWorldNeedsUpdate = e.matrixWorldNeedsUpdate, this.layers.mask = e.layers.mask, this.visible = e.visible, this.castShadow = e.castShadow, this.receiveShadow = e.receiveShadow, this.frustumCulled = e.frustumCulled, this.renderOrder = e.renderOrder, this.animations = e.animations.slice(), this.userData = JSON.parse(JSON.stringify(e.userData)), t === !0) + for (let n = 0; n < e.children.length; n++) { + const r = e.children[n]; + this.add(r.clone()); + } + return this; + } +} +dt.DEFAULT_UP = /* @__PURE__ */ new P(0, 1, 0); +dt.DEFAULT_MATRIX_AUTO_UPDATE = !0; +dt.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = !0; +const Dt = /* @__PURE__ */ new P(), qt = /* @__PURE__ */ new P(), Lr = /* @__PURE__ */ new P(), Yt = /* @__PURE__ */ new P(), zn = /* @__PURE__ */ new P(), Gn = /* @__PURE__ */ new P(), fa = /* @__PURE__ */ new P(), Pr = /* @__PURE__ */ new P(), Dr = /* @__PURE__ */ new P(), Ur = /* @__PURE__ */ new P(); +let Di = !1; +class It { + constructor(e = new P(), t = new P(), n = new P()) { + this.a = e, this.b = t, this.c = n; + } + static getNormal(e, t, n, r) { + r.subVectors(n, t), Dt.subVectors(e, t), r.cross(Dt); + const s = r.lengthSq(); + return s > 0 ? r.multiplyScalar(1 / Math.sqrt(s)) : r.set(0, 0, 0); + } + // static/instance method to calculate barycentric coordinates + // based on: http://www.blackpawn.com/texts/pointinpoly/default.html + static getBarycoord(e, t, n, r, s) { + Dt.subVectors(r, t), qt.subVectors(n, t), Lr.subVectors(e, t); + const o = Dt.dot(Dt), a = Dt.dot(qt), l = Dt.dot(Lr), c = qt.dot(qt), h = qt.dot(Lr), d = o * c - a * a; + if (d === 0) + return s.set(0, 0, 0), null; + const p = 1 / d, m = (c * l - a * h) * p, g = (o * h - a * l) * p; + return s.set(1 - m - g, g, m); + } + static containsPoint(e, t, n, r) { + return this.getBarycoord(e, t, n, r, Yt) === null ? !1 : Yt.x >= 0 && Yt.y >= 0 && Yt.x + Yt.y <= 1; + } + static getUV(e, t, n, r, s, o, a, l) { + return Di === !1 && (console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."), Di = !0), this.getInterpolation(e, t, n, r, s, o, a, l); + } + static getInterpolation(e, t, n, r, s, o, a, l) { + return this.getBarycoord(e, t, n, r, Yt) === null ? (l.x = 0, l.y = 0, "z" in l && (l.z = 0), "w" in l && (l.w = 0), null) : (l.setScalar(0), l.addScaledVector(s, Yt.x), l.addScaledVector(o, Yt.y), l.addScaledVector(a, Yt.z), l); + } + static isFrontFacing(e, t, n, r) { + return Dt.subVectors(n, t), qt.subVectors(e, t), Dt.cross(qt).dot(r) < 0; + } + set(e, t, n) { + return this.a.copy(e), this.b.copy(t), this.c.copy(n), this; + } + setFromPointsAndIndices(e, t, n, r) { + return this.a.copy(e[t]), this.b.copy(e[n]), this.c.copy(e[r]), this; + } + setFromAttributeAndIndices(e, t, n, r) { + return this.a.fromBufferAttribute(e, t), this.b.fromBufferAttribute(e, n), this.c.fromBufferAttribute(e, r), this; + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + return this.a.copy(e.a), this.b.copy(e.b), this.c.copy(e.c), this; + } + getArea() { + return Dt.subVectors(this.c, this.b), qt.subVectors(this.a, this.b), Dt.cross(qt).length() * 0.5; + } + getMidpoint(e) { + return e.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3); + } + getNormal(e) { + return It.getNormal(this.a, this.b, this.c, e); + } + getPlane(e) { + return e.setFromCoplanarPoints(this.a, this.b, this.c); + } + getBarycoord(e, t) { + return It.getBarycoord(e, this.a, this.b, this.c, t); + } + getUV(e, t, n, r, s) { + return Di === !1 && (console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."), Di = !0), It.getInterpolation(e, this.a, this.b, this.c, t, n, r, s); + } + getInterpolation(e, t, n, r, s) { + return It.getInterpolation(e, this.a, this.b, this.c, t, n, r, s); + } + containsPoint(e) { + return It.containsPoint(e, this.a, this.b, this.c); + } + isFrontFacing(e) { + return It.isFrontFacing(this.a, this.b, this.c, e); + } + intersectsBox(e) { + return e.intersectsTriangle(this); + } + closestPointToPoint(e, t) { + const n = this.a, r = this.b, s = this.c; + let o, a; + zn.subVectors(r, n), Gn.subVectors(s, n), Pr.subVectors(e, n); + const l = zn.dot(Pr), c = Gn.dot(Pr); + if (l <= 0 && c <= 0) + return t.copy(n); + Dr.subVectors(e, r); + const h = zn.dot(Dr), d = Gn.dot(Dr); + if (h >= 0 && d <= h) + return t.copy(r); + const p = l * d - h * c; + if (p <= 0 && l >= 0 && h <= 0) + return o = l / (l - h), t.copy(n).addScaledVector(zn, o); + Ur.subVectors(e, s); + const m = zn.dot(Ur), g = Gn.dot(Ur); + if (g >= 0 && m <= g) + return t.copy(s); + const v = m * c - l * g; + if (v <= 0 && c >= 0 && g <= 0) + return a = c / (c - g), t.copy(n).addScaledVector(Gn, a); + const f = h * g - m * d; + if (f <= 0 && d - h >= 0 && m - g >= 0) + return fa.subVectors(s, r), a = (d - h) / (d - h + (m - g)), t.copy(r).addScaledVector(fa, a); + const u = 1 / (f + v + p); + return o = v * u, a = p * u, t.copy(n).addScaledVector(zn, o).addScaledVector(Gn, a); + } + equals(e) { + return e.a.equals(this.a) && e.b.equals(this.b) && e.c.equals(this.c); + } +} +const Ao = { + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + rebeccapurple: 6697881, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 +}, nn = { h: 0, s: 0, l: 0 }, Ui = { h: 0, s: 0, l: 0 }; +function Ir(i, e, t) { + return t < 0 && (t += 1), t > 1 && (t -= 1), t < 1 / 6 ? i + (e - i) * 6 * t : t < 1 / 2 ? e : t < 2 / 3 ? i + (e - i) * 6 * (2 / 3 - t) : i; +} +class Xe { + constructor(e, t, n) { + return this.isColor = !0, this.r = 1, this.g = 1, this.b = 1, this.set(e, t, n); + } + set(e, t, n) { + if (t === void 0 && n === void 0) { + const r = e; + r && r.isColor ? this.copy(r) : typeof r == "number" ? this.setHex(r) : typeof r == "string" && this.setStyle(r); + } else + this.setRGB(e, t, n); + return this; + } + setScalar(e) { + return this.r = e, this.g = e, this.b = e, this; + } + setHex(e, t = ht) { + return e = Math.floor(e), this.r = (e >> 16 & 255) / 255, this.g = (e >> 8 & 255) / 255, this.b = (e & 255) / 255, Ke.toWorkingColorSpace(this, t), this; + } + setRGB(e, t, n, r = Ke.workingColorSpace) { + return this.r = e, this.g = t, this.b = n, Ke.toWorkingColorSpace(this, r), this; + } + setHSL(e, t, n, r = Ke.workingColorSpace) { + if (e = Xl(e, 1), t = vt(t, 0, 1), n = vt(n, 0, 1), t === 0) + this.r = this.g = this.b = n; + else { + const s = n <= 0.5 ? n * (1 + t) : n + t - n * t, o = 2 * n - s; + this.r = Ir(o, s, e + 1 / 3), this.g = Ir(o, s, e), this.b = Ir(o, s, e - 1 / 3); + } + return Ke.toWorkingColorSpace(this, r), this; + } + setStyle(e, t = ht) { + function n(s) { + s !== void 0 && parseFloat(s) < 1 && console.warn("THREE.Color: Alpha component of " + e + " will be ignored."); + } + let r; + if (r = /^(\w+)\(([^\)]*)\)/.exec(e)) { + let s; + const o = r[1], a = r[2]; + switch (o) { + case "rgb": + case "rgba": + if (s = /^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a)) + return n(s[4]), this.setRGB( + Math.min(255, parseInt(s[1], 10)) / 255, + Math.min(255, parseInt(s[2], 10)) / 255, + Math.min(255, parseInt(s[3], 10)) / 255, + t + ); + if (s = /^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a)) + return n(s[4]), this.setRGB( + Math.min(100, parseInt(s[1], 10)) / 100, + Math.min(100, parseInt(s[2], 10)) / 100, + Math.min(100, parseInt(s[3], 10)) / 100, + t + ); + break; + case "hsl": + case "hsla": + if (s = /^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a)) + return n(s[4]), this.setHSL( + parseFloat(s[1]) / 360, + parseFloat(s[2]) / 100, + parseFloat(s[3]) / 100, + t + ); + break; + default: + console.warn("THREE.Color: Unknown color model " + e); + } + } else if (r = /^\#([A-Fa-f\d]+)$/.exec(e)) { + const s = r[1], o = s.length; + if (o === 3) + return this.setRGB( + parseInt(s.charAt(0), 16) / 15, + parseInt(s.charAt(1), 16) / 15, + parseInt(s.charAt(2), 16) / 15, + t + ); + if (o === 6) + return this.setHex(parseInt(s, 16), t); + console.warn("THREE.Color: Invalid hex color " + e); + } else if (e && e.length > 0) + return this.setColorName(e, t); + return this; + } + setColorName(e, t = ht) { + const n = Ao[e.toLowerCase()]; + return n !== void 0 ? this.setHex(n, t) : console.warn("THREE.Color: Unknown color " + e), this; + } + clone() { + return new this.constructor(this.r, this.g, this.b); + } + copy(e) { + return this.r = e.r, this.g = e.g, this.b = e.b, this; + } + copySRGBToLinear(e) { + return this.r = Jn(e.r), this.g = Jn(e.g), this.b = Jn(e.b), this; + } + copyLinearToSRGB(e) { + return this.r = Er(e.r), this.g = Er(e.g), this.b = Er(e.b), this; + } + convertSRGBToLinear() { + return this.copySRGBToLinear(this), this; + } + convertLinearToSRGB() { + return this.copyLinearToSRGB(this), this; + } + getHex(e = ht) { + return Ke.fromWorkingColorSpace(mt.copy(this), e), Math.round(vt(mt.r * 255, 0, 255)) * 65536 + Math.round(vt(mt.g * 255, 0, 255)) * 256 + Math.round(vt(mt.b * 255, 0, 255)); + } + getHexString(e = ht) { + return ("000000" + this.getHex(e).toString(16)).slice(-6); + } + getHSL(e, t = Ke.workingColorSpace) { + Ke.fromWorkingColorSpace(mt.copy(this), t); + const n = mt.r, r = mt.g, s = mt.b, o = Math.max(n, r, s), a = Math.min(n, r, s); + let l, c; + const h = (a + o) / 2; + if (a === o) + l = 0, c = 0; + else { + const d = o - a; + switch (c = h <= 0.5 ? d / (o + a) : d / (2 - o - a), o) { + case n: + l = (r - s) / d + (r < s ? 6 : 0); + break; + case r: + l = (s - n) / d + 2; + break; + case s: + l = (n - r) / d + 4; + break; + } + l /= 6; + } + return e.h = l, e.s = c, e.l = h, e; + } + getRGB(e, t = Ke.workingColorSpace) { + return Ke.fromWorkingColorSpace(mt.copy(this), t), e.r = mt.r, e.g = mt.g, e.b = mt.b, e; + } + getStyle(e = ht) { + Ke.fromWorkingColorSpace(mt.copy(this), e); + const t = mt.r, n = mt.g, r = mt.b; + return e !== ht ? `color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${r.toFixed(3)})` : `rgb(${Math.round(t * 255)},${Math.round(n * 255)},${Math.round(r * 255)})`; + } + offsetHSL(e, t, n) { + return this.getHSL(nn), this.setHSL(nn.h + e, nn.s + t, nn.l + n); + } + add(e) { + return this.r += e.r, this.g += e.g, this.b += e.b, this; + } + addColors(e, t) { + return this.r = e.r + t.r, this.g = e.g + t.g, this.b = e.b + t.b, this; + } + addScalar(e) { + return this.r += e, this.g += e, this.b += e, this; + } + sub(e) { + return this.r = Math.max(0, this.r - e.r), this.g = Math.max(0, this.g - e.g), this.b = Math.max(0, this.b - e.b), this; + } + multiply(e) { + return this.r *= e.r, this.g *= e.g, this.b *= e.b, this; + } + multiplyScalar(e) { + return this.r *= e, this.g *= e, this.b *= e, this; + } + lerp(e, t) { + return this.r += (e.r - this.r) * t, this.g += (e.g - this.g) * t, this.b += (e.b - this.b) * t, this; + } + lerpColors(e, t, n) { + return this.r = e.r + (t.r - e.r) * n, this.g = e.g + (t.g - e.g) * n, this.b = e.b + (t.b - e.b) * n, this; + } + lerpHSL(e, t) { + this.getHSL(nn), e.getHSL(Ui); + const n = Mr(nn.h, Ui.h, t), r = Mr(nn.s, Ui.s, t), s = Mr(nn.l, Ui.l, t); + return this.setHSL(n, r, s), this; + } + setFromVector3(e) { + return this.r = e.x, this.g = e.y, this.b = e.z, this; + } + applyMatrix3(e) { + const t = this.r, n = this.g, r = this.b, s = e.elements; + return this.r = s[0] * t + s[3] * n + s[6] * r, this.g = s[1] * t + s[4] * n + s[7] * r, this.b = s[2] * t + s[5] * n + s[8] * r, this; + } + equals(e) { + return e.r === this.r && e.g === this.g && e.b === this.b; + } + fromArray(e, t = 0) { + return this.r = e[t], this.g = e[t + 1], this.b = e[t + 2], this; + } + toArray(e = [], t = 0) { + return e[t] = this.r, e[t + 1] = this.g, e[t + 2] = this.b, e; + } + fromBufferAttribute(e, t) { + return this.r = e.getX(t), this.g = e.getY(t), this.b = e.getZ(t), this; + } + toJSON() { + return this.getHex(); + } + *[Symbol.iterator]() { + yield this.r, yield this.g, yield this.b; + } +} +const mt = /* @__PURE__ */ new Xe(); +Xe.NAMES = Ao; +let oc = 0; +class Mi extends Rn { + constructor() { + super(), this.isMaterial = !0, Object.defineProperty(this, "id", { value: oc++ }), this.uuid = vi(), this.name = "", this.type = "Material", this.blending = $n, this.side = un, this.vertexColors = !1, this.opacity = 1, this.transparent = !1, this.alphaHash = !1, this.blendSrc = Kr, this.blendDst = Zr, this.blendEquation = Mn, this.blendSrcAlpha = null, this.blendDstAlpha = null, this.blendEquationAlpha = null, this.blendColor = new Xe(0, 0, 0), this.blendAlpha = 0, this.depthFunc = $i, this.depthTest = !0, this.depthWrite = !0, this.stencilWriteMask = 255, this.stencilFunc = Qs, this.stencilRef = 0, this.stencilFuncMask = 255, this.stencilFail = Dn, this.stencilZFail = Dn, this.stencilZPass = Dn, this.stencilWrite = !1, this.clippingPlanes = null, this.clipIntersection = !1, this.clipShadows = !1, this.shadowSide = null, this.colorWrite = !0, this.precision = null, this.polygonOffset = !1, this.polygonOffsetFactor = 0, this.polygonOffsetUnits = 0, this.dithering = !1, this.alphaToCoverage = !1, this.premultipliedAlpha = !1, this.forceSinglePass = !1, this.visible = !0, this.toneMapped = !0, this.userData = {}, this.version = 0, this._alphaTest = 0; + } + get alphaTest() { + return this._alphaTest; + } + set alphaTest(e) { + this._alphaTest > 0 != e > 0 && this.version++, this._alphaTest = e; + } + onBuild() { + } + onBeforeRender() { + } + onBeforeCompile() { + } + customProgramCacheKey() { + return this.onBeforeCompile.toString(); + } + setValues(e) { + if (e !== void 0) + for (const t in e) { + const n = e[t]; + if (n === void 0) { + console.warn(`THREE.Material: parameter '${t}' has value of undefined.`); + continue; + } + const r = this[t]; + if (r === void 0) { + console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`); + continue; + } + r && r.isColor ? r.set(n) : r && r.isVector3 && n && n.isVector3 ? r.copy(n) : this[t] = n; + } + } + toJSON(e) { + const t = e === void 0 || typeof e == "string"; + t && (e = { + textures: {}, + images: {} + }); + const n = { + metadata: { + version: 4.6, + type: "Material", + generator: "Material.toJSON" + } + }; + n.uuid = this.uuid, n.type = this.type, this.name !== "" && (n.name = this.name), this.color && this.color.isColor && (n.color = this.color.getHex()), this.roughness !== void 0 && (n.roughness = this.roughness), this.metalness !== void 0 && (n.metalness = this.metalness), this.sheen !== void 0 && (n.sheen = this.sheen), this.sheenColor && this.sheenColor.isColor && (n.sheenColor = this.sheenColor.getHex()), this.sheenRoughness !== void 0 && (n.sheenRoughness = this.sheenRoughness), this.emissive && this.emissive.isColor && (n.emissive = this.emissive.getHex()), this.emissiveIntensity && this.emissiveIntensity !== 1 && (n.emissiveIntensity = this.emissiveIntensity), this.specular && this.specular.isColor && (n.specular = this.specular.getHex()), this.specularIntensity !== void 0 && (n.specularIntensity = this.specularIntensity), this.specularColor && this.specularColor.isColor && (n.specularColor = this.specularColor.getHex()), this.shininess !== void 0 && (n.shininess = this.shininess), this.clearcoat !== void 0 && (n.clearcoat = this.clearcoat), this.clearcoatRoughness !== void 0 && (n.clearcoatRoughness = this.clearcoatRoughness), this.clearcoatMap && this.clearcoatMap.isTexture && (n.clearcoatMap = this.clearcoatMap.toJSON(e).uuid), this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture && (n.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(e).uuid), this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture && (n.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(e).uuid, n.clearcoatNormalScale = this.clearcoatNormalScale.toArray()), this.iridescence !== void 0 && (n.iridescence = this.iridescence), this.iridescenceIOR !== void 0 && (n.iridescenceIOR = this.iridescenceIOR), this.iridescenceThicknessRange !== void 0 && (n.iridescenceThicknessRange = this.iridescenceThicknessRange), this.iridescenceMap && this.iridescenceMap.isTexture && (n.iridescenceMap = this.iridescenceMap.toJSON(e).uuid), this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture && (n.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON(e).uuid), this.anisotropy !== void 0 && (n.anisotropy = this.anisotropy), this.anisotropyRotation !== void 0 && (n.anisotropyRotation = this.anisotropyRotation), this.anisotropyMap && this.anisotropyMap.isTexture && (n.anisotropyMap = this.anisotropyMap.toJSON(e).uuid), this.map && this.map.isTexture && (n.map = this.map.toJSON(e).uuid), this.matcap && this.matcap.isTexture && (n.matcap = this.matcap.toJSON(e).uuid), this.alphaMap && this.alphaMap.isTexture && (n.alphaMap = this.alphaMap.toJSON(e).uuid), this.lightMap && this.lightMap.isTexture && (n.lightMap = this.lightMap.toJSON(e).uuid, n.lightMapIntensity = this.lightMapIntensity), this.aoMap && this.aoMap.isTexture && (n.aoMap = this.aoMap.toJSON(e).uuid, n.aoMapIntensity = this.aoMapIntensity), this.bumpMap && this.bumpMap.isTexture && (n.bumpMap = this.bumpMap.toJSON(e).uuid, n.bumpScale = this.bumpScale), this.normalMap && this.normalMap.isTexture && (n.normalMap = this.normalMap.toJSON(e).uuid, n.normalMapType = this.normalMapType, n.normalScale = this.normalScale.toArray()), this.displacementMap && this.displacementMap.isTexture && (n.displacementMap = this.displacementMap.toJSON(e).uuid, n.displacementScale = this.displacementScale, n.displacementBias = this.displacementBias), this.roughnessMap && this.roughnessMap.isTexture && (n.roughnessMap = this.roughnessMap.toJSON(e).uuid), this.metalnessMap && this.metalnessMap.isTexture && (n.metalnessMap = this.metalnessMap.toJSON(e).uuid), this.emissiveMap && this.emissiveMap.isTexture && (n.emissiveMap = this.emissiveMap.toJSON(e).uuid), this.specularMap && this.specularMap.isTexture && (n.specularMap = this.specularMap.toJSON(e).uuid), this.specularIntensityMap && this.specularIntensityMap.isTexture && (n.specularIntensityMap = this.specularIntensityMap.toJSON(e).uuid), this.specularColorMap && this.specularColorMap.isTexture && (n.specularColorMap = this.specularColorMap.toJSON(e).uuid), this.envMap && this.envMap.isTexture && (n.envMap = this.envMap.toJSON(e).uuid, this.combine !== void 0 && (n.combine = this.combine)), this.envMapIntensity !== void 0 && (n.envMapIntensity = this.envMapIntensity), this.reflectivity !== void 0 && (n.reflectivity = this.reflectivity), this.refractionRatio !== void 0 && (n.refractionRatio = this.refractionRatio), this.gradientMap && this.gradientMap.isTexture && (n.gradientMap = this.gradientMap.toJSON(e).uuid), this.transmission !== void 0 && (n.transmission = this.transmission), this.transmissionMap && this.transmissionMap.isTexture && (n.transmissionMap = this.transmissionMap.toJSON(e).uuid), this.thickness !== void 0 && (n.thickness = this.thickness), this.thicknessMap && this.thicknessMap.isTexture && (n.thicknessMap = this.thicknessMap.toJSON(e).uuid), this.attenuationDistance !== void 0 && this.attenuationDistance !== 1 / 0 && (n.attenuationDistance = this.attenuationDistance), this.attenuationColor !== void 0 && (n.attenuationColor = this.attenuationColor.getHex()), this.size !== void 0 && (n.size = this.size), this.shadowSide !== null && (n.shadowSide = this.shadowSide), this.sizeAttenuation !== void 0 && (n.sizeAttenuation = this.sizeAttenuation), this.blending !== $n && (n.blending = this.blending), this.side !== un && (n.side = this.side), this.vertexColors === !0 && (n.vertexColors = !0), this.opacity < 1 && (n.opacity = this.opacity), this.transparent === !0 && (n.transparent = !0), this.blendSrc !== Kr && (n.blendSrc = this.blendSrc), this.blendDst !== Zr && (n.blendDst = this.blendDst), this.blendEquation !== Mn && (n.blendEquation = this.blendEquation), this.blendSrcAlpha !== null && (n.blendSrcAlpha = this.blendSrcAlpha), this.blendDstAlpha !== null && (n.blendDstAlpha = this.blendDstAlpha), this.blendEquationAlpha !== null && (n.blendEquationAlpha = this.blendEquationAlpha), this.blendColor && this.blendColor.isColor && (n.blendColor = this.blendColor.getHex()), this.blendAlpha !== 0 && (n.blendAlpha = this.blendAlpha), this.depthFunc !== $i && (n.depthFunc = this.depthFunc), this.depthTest === !1 && (n.depthTest = this.depthTest), this.depthWrite === !1 && (n.depthWrite = this.depthWrite), this.colorWrite === !1 && (n.colorWrite = this.colorWrite), this.stencilWriteMask !== 255 && (n.stencilWriteMask = this.stencilWriteMask), this.stencilFunc !== Qs && (n.stencilFunc = this.stencilFunc), this.stencilRef !== 0 && (n.stencilRef = this.stencilRef), this.stencilFuncMask !== 255 && (n.stencilFuncMask = this.stencilFuncMask), this.stencilFail !== Dn && (n.stencilFail = this.stencilFail), this.stencilZFail !== Dn && (n.stencilZFail = this.stencilZFail), this.stencilZPass !== Dn && (n.stencilZPass = this.stencilZPass), this.stencilWrite === !0 && (n.stencilWrite = this.stencilWrite), this.rotation !== void 0 && this.rotation !== 0 && (n.rotation = this.rotation), this.polygonOffset === !0 && (n.polygonOffset = !0), this.polygonOffsetFactor !== 0 && (n.polygonOffsetFactor = this.polygonOffsetFactor), this.polygonOffsetUnits !== 0 && (n.polygonOffsetUnits = this.polygonOffsetUnits), this.linewidth !== void 0 && this.linewidth !== 1 && (n.linewidth = this.linewidth), this.dashSize !== void 0 && (n.dashSize = this.dashSize), this.gapSize !== void 0 && (n.gapSize = this.gapSize), this.scale !== void 0 && (n.scale = this.scale), this.dithering === !0 && (n.dithering = !0), this.alphaTest > 0 && (n.alphaTest = this.alphaTest), this.alphaHash === !0 && (n.alphaHash = !0), this.alphaToCoverage === !0 && (n.alphaToCoverage = !0), this.premultipliedAlpha === !0 && (n.premultipliedAlpha = !0), this.forceSinglePass === !0 && (n.forceSinglePass = !0), this.wireframe === !0 && (n.wireframe = !0), this.wireframeLinewidth > 1 && (n.wireframeLinewidth = this.wireframeLinewidth), this.wireframeLinecap !== "round" && (n.wireframeLinecap = this.wireframeLinecap), this.wireframeLinejoin !== "round" && (n.wireframeLinejoin = this.wireframeLinejoin), this.flatShading === !0 && (n.flatShading = !0), this.visible === !1 && (n.visible = !1), this.toneMapped === !1 && (n.toneMapped = !1), this.fog === !1 && (n.fog = !1), Object.keys(this.userData).length > 0 && (n.userData = this.userData); + function r(s) { + const o = []; + for (const a in s) { + const l = s[a]; + delete l.metadata, o.push(l); + } + return o; + } + if (t) { + const s = r(e.textures), o = r(e.images); + s.length > 0 && (n.textures = s), o.length > 0 && (n.images = o); + } + return n; + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + this.name = e.name, this.blending = e.blending, this.side = e.side, this.vertexColors = e.vertexColors, this.opacity = e.opacity, this.transparent = e.transparent, this.blendSrc = e.blendSrc, this.blendDst = e.blendDst, this.blendEquation = e.blendEquation, this.blendSrcAlpha = e.blendSrcAlpha, this.blendDstAlpha = e.blendDstAlpha, this.blendEquationAlpha = e.blendEquationAlpha, this.blendColor.copy(e.blendColor), this.blendAlpha = e.blendAlpha, this.depthFunc = e.depthFunc, this.depthTest = e.depthTest, this.depthWrite = e.depthWrite, this.stencilWriteMask = e.stencilWriteMask, this.stencilFunc = e.stencilFunc, this.stencilRef = e.stencilRef, this.stencilFuncMask = e.stencilFuncMask, this.stencilFail = e.stencilFail, this.stencilZFail = e.stencilZFail, this.stencilZPass = e.stencilZPass, this.stencilWrite = e.stencilWrite; + const t = e.clippingPlanes; + let n = null; + if (t !== null) { + const r = t.length; + n = new Array(r); + for (let s = 0; s !== r; ++s) + n[s] = t[s].clone(); + } + return this.clippingPlanes = n, this.clipIntersection = e.clipIntersection, this.clipShadows = e.clipShadows, this.shadowSide = e.shadowSide, this.colorWrite = e.colorWrite, this.precision = e.precision, this.polygonOffset = e.polygonOffset, this.polygonOffsetFactor = e.polygonOffsetFactor, this.polygonOffsetUnits = e.polygonOffsetUnits, this.dithering = e.dithering, this.alphaTest = e.alphaTest, this.alphaHash = e.alphaHash, this.alphaToCoverage = e.alphaToCoverage, this.premultipliedAlpha = e.premultipliedAlpha, this.forceSinglePass = e.forceSinglePass, this.visible = e.visible, this.toneMapped = e.toneMapped, this.userData = JSON.parse(JSON.stringify(e.userData)), this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } + set needsUpdate(e) { + e === !0 && this.version++; + } +} +class ls extends Mi { + constructor(e) { + super(), this.isMeshBasicMaterial = !0, this.type = "MeshBasicMaterial", this.color = new Xe(16777215), this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.specularMap = null, this.alphaMap = null, this.envMap = null, this.combine = oo, this.reflectivity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.fog = !0, this.setValues(e); + } + copy(e) { + return super.copy(e), this.color.copy(e.color), this.map = e.map, this.lightMap = e.lightMap, this.lightMapIntensity = e.lightMapIntensity, this.aoMap = e.aoMap, this.aoMapIntensity = e.aoMapIntensity, this.specularMap = e.specularMap, this.alphaMap = e.alphaMap, this.envMap = e.envMap, this.combine = e.combine, this.reflectivity = e.reflectivity, this.refractionRatio = e.refractionRatio, this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.wireframeLinecap = e.wireframeLinecap, this.wireframeLinejoin = e.wireframeLinejoin, this.fog = e.fog, this; + } +} +const at = /* @__PURE__ */ new P(), Ii = /* @__PURE__ */ new Ie(); +class Bt { + constructor(e, t, n = !1) { + if (Array.isArray(e)) + throw new TypeError("THREE.BufferAttribute: array should be a Typed Array."); + this.isBufferAttribute = !0, this.name = "", this.array = e, this.itemSize = t, this.count = e !== void 0 ? e.length / t : 0, this.normalized = n, this.usage = ea, this._updateRange = { offset: 0, count: -1 }, this.updateRanges = [], this.gpuType = an, this.version = 0; + } + onUploadCallback() { + } + set needsUpdate(e) { + e === !0 && this.version++; + } + get updateRange() { + return console.warn("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."), this._updateRange; + } + setUsage(e) { + return this.usage = e, this; + } + addUpdateRange(e, t) { + this.updateRanges.push({ start: e, count: t }); + } + clearUpdateRanges() { + this.updateRanges.length = 0; + } + copy(e) { + return this.name = e.name, this.array = new e.array.constructor(e.array), this.itemSize = e.itemSize, this.count = e.count, this.normalized = e.normalized, this.usage = e.usage, this.gpuType = e.gpuType, this; + } + copyAt(e, t, n) { + e *= this.itemSize, n *= t.itemSize; + for (let r = 0, s = this.itemSize; r < s; r++) + this.array[e + r] = t.array[n + r]; + return this; + } + copyArray(e) { + return this.array.set(e), this; + } + applyMatrix3(e) { + if (this.itemSize === 2) + for (let t = 0, n = this.count; t < n; t++) + Ii.fromBufferAttribute(this, t), Ii.applyMatrix3(e), this.setXY(t, Ii.x, Ii.y); + else if (this.itemSize === 3) + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.applyMatrix3(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + applyMatrix4(e) { + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.applyMatrix4(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + applyNormalMatrix(e) { + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.applyNormalMatrix(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + transformDirection(e) { + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.transformDirection(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + set(e, t = 0) { + return this.array.set(e, t), this; + } + getComponent(e, t) { + let n = this.array[e * this.itemSize + t]; + return this.normalized && (n = oi(n, this.array)), n; + } + setComponent(e, t, n) { + return this.normalized && (n = xt(n, this.array)), this.array[e * this.itemSize + t] = n, this; + } + getX(e) { + let t = this.array[e * this.itemSize]; + return this.normalized && (t = oi(t, this.array)), t; + } + setX(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize] = t, this; + } + getY(e) { + let t = this.array[e * this.itemSize + 1]; + return this.normalized && (t = oi(t, this.array)), t; + } + setY(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize + 1] = t, this; + } + getZ(e) { + let t = this.array[e * this.itemSize + 2]; + return this.normalized && (t = oi(t, this.array)), t; + } + setZ(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize + 2] = t, this; + } + getW(e) { + let t = this.array[e * this.itemSize + 3]; + return this.normalized && (t = oi(t, this.array)), t; + } + setW(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize + 3] = t, this; + } + setXY(e, t, n) { + return e *= this.itemSize, this.normalized && (t = xt(t, this.array), n = xt(n, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this; + } + setXYZ(e, t, n, r) { + return e *= this.itemSize, this.normalized && (t = xt(t, this.array), n = xt(n, this.array), r = xt(r, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this.array[e + 2] = r, this; + } + setXYZW(e, t, n, r, s) { + return e *= this.itemSize, this.normalized && (t = xt(t, this.array), n = xt(n, this.array), r = xt(r, this.array), s = xt(s, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this.array[e + 2] = r, this.array[e + 3] = s, this; + } + onUpload(e) { + return this.onUploadCallback = e, this; + } + clone() { + return new this.constructor(this.array, this.itemSize).copy(this); + } + toJSON() { + const e = { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: Array.from(this.array), + normalized: this.normalized + }; + return this.name !== "" && (e.name = this.name), this.usage !== ea && (e.usage = this.usage), e; + } +} +class wo extends Bt { + constructor(e, t, n) { + super(new Uint16Array(e), t, n); + } +} +class Ro extends Bt { + constructor(e, t, n) { + super(new Uint32Array(e), t, n); + } +} +class Ht extends Bt { + constructor(e, t, n) { + super(new Float32Array(e), t, n); + } +} +let lc = 0; +const wt = /* @__PURE__ */ new Qe(), Nr = /* @__PURE__ */ new dt(), Hn = /* @__PURE__ */ new P(), yt = /* @__PURE__ */ new Cn(), hi = /* @__PURE__ */ new Cn(), ut = /* @__PURE__ */ new P(); +class hn extends Rn { + constructor() { + super(), this.isBufferGeometry = !0, Object.defineProperty(this, "id", { value: lc++ }), this.uuid = vi(), this.name = "", this.type = "BufferGeometry", this.index = null, this.attributes = {}, this.morphAttributes = {}, this.morphTargetsRelative = !1, this.groups = [], this.boundingBox = null, this.boundingSphere = null, this.drawRange = { start: 0, count: 1 / 0 }, this.userData = {}; + } + getIndex() { + return this.index; + } + setIndex(e) { + return Array.isArray(e) ? this.index = new (Mo(e) ? Ro : wo)(e, 1) : this.index = e, this; + } + getAttribute(e) { + return this.attributes[e]; + } + setAttribute(e, t) { + return this.attributes[e] = t, this; + } + deleteAttribute(e) { + return delete this.attributes[e], this; + } + hasAttribute(e) { + return this.attributes[e] !== void 0; + } + addGroup(e, t, n = 0) { + this.groups.push({ + start: e, + count: t, + materialIndex: n + }); + } + clearGroups() { + this.groups = []; + } + setDrawRange(e, t) { + this.drawRange.start = e, this.drawRange.count = t; + } + applyMatrix4(e) { + const t = this.attributes.position; + t !== void 0 && (t.applyMatrix4(e), t.needsUpdate = !0); + const n = this.attributes.normal; + if (n !== void 0) { + const s = new Ve().getNormalMatrix(e); + n.applyNormalMatrix(s), n.needsUpdate = !0; + } + const r = this.attributes.tangent; + return r !== void 0 && (r.transformDirection(e), r.needsUpdate = !0), this.boundingBox !== null && this.computeBoundingBox(), this.boundingSphere !== null && this.computeBoundingSphere(), this; + } + applyQuaternion(e) { + return wt.makeRotationFromQuaternion(e), this.applyMatrix4(wt), this; + } + rotateX(e) { + return wt.makeRotationX(e), this.applyMatrix4(wt), this; + } + rotateY(e) { + return wt.makeRotationY(e), this.applyMatrix4(wt), this; + } + rotateZ(e) { + return wt.makeRotationZ(e), this.applyMatrix4(wt), this; + } + translate(e, t, n) { + return wt.makeTranslation(e, t, n), this.applyMatrix4(wt), this; + } + scale(e, t, n) { + return wt.makeScale(e, t, n), this.applyMatrix4(wt), this; + } + lookAt(e) { + return Nr.lookAt(e), Nr.updateMatrix(), this.applyMatrix4(Nr.matrix), this; + } + center() { + return this.computeBoundingBox(), this.boundingBox.getCenter(Hn).negate(), this.translate(Hn.x, Hn.y, Hn.z), this; + } + setFromPoints(e) { + const t = []; + for (let n = 0, r = e.length; n < r; n++) { + const s = e[n]; + t.push(s.x, s.y, s.z || 0); + } + return this.setAttribute("position", new Ht(t, 3)), this; + } + computeBoundingBox() { + this.boundingBox === null && (this.boundingBox = new Cn()); + const e = this.attributes.position, t = this.morphAttributes.position; + if (e && e.isGLBufferAttribute) { + console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".', this), this.boundingBox.set( + new P(-1 / 0, -1 / 0, -1 / 0), + new P(1 / 0, 1 / 0, 1 / 0) + ); + return; + } + if (e !== void 0) { + if (this.boundingBox.setFromBufferAttribute(e), t) + for (let n = 0, r = t.length; n < r; n++) { + const s = t[n]; + yt.setFromBufferAttribute(s), this.morphTargetsRelative ? (ut.addVectors(this.boundingBox.min, yt.min), this.boundingBox.expandByPoint(ut), ut.addVectors(this.boundingBox.max, yt.max), this.boundingBox.expandByPoint(ut)) : (this.boundingBox.expandByPoint(yt.min), this.boundingBox.expandByPoint(yt.max)); + } + } else + this.boundingBox.makeEmpty(); + (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) && console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this); + } + computeBoundingSphere() { + this.boundingSphere === null && (this.boundingSphere = new xi()); + const e = this.attributes.position, t = this.morphAttributes.position; + if (e && e.isGLBufferAttribute) { + console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".', this), this.boundingSphere.set(new P(), 1 / 0); + return; + } + if (e) { + const n = this.boundingSphere.center; + if (yt.setFromBufferAttribute(e), t) + for (let s = 0, o = t.length; s < o; s++) { + const a = t[s]; + hi.setFromBufferAttribute(a), this.morphTargetsRelative ? (ut.addVectors(yt.min, hi.min), yt.expandByPoint(ut), ut.addVectors(yt.max, hi.max), yt.expandByPoint(ut)) : (yt.expandByPoint(hi.min), yt.expandByPoint(hi.max)); + } + yt.getCenter(n); + let r = 0; + for (let s = 0, o = e.count; s < o; s++) + ut.fromBufferAttribute(e, s), r = Math.max(r, n.distanceToSquared(ut)); + if (t) + for (let s = 0, o = t.length; s < o; s++) { + const a = t[s], l = this.morphTargetsRelative; + for (let c = 0, h = a.count; c < h; c++) + ut.fromBufferAttribute(a, c), l && (Hn.fromBufferAttribute(e, c), ut.add(Hn)), r = Math.max(r, n.distanceToSquared(ut)); + } + this.boundingSphere.radius = Math.sqrt(r), isNaN(this.boundingSphere.radius) && console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this); + } + } + computeTangents() { + const e = this.index, t = this.attributes; + if (e === null || t.position === void 0 || t.normal === void 0 || t.uv === void 0) { + console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)"); + return; + } + const n = e.array, r = t.position.array, s = t.normal.array, o = t.uv.array, a = r.length / 3; + this.hasAttribute("tangent") === !1 && this.setAttribute("tangent", new Bt(new Float32Array(4 * a), 4)); + const l = this.getAttribute("tangent").array, c = [], h = []; + for (let y = 0; y < a; y++) + c[y] = new P(), h[y] = new P(); + const d = new P(), p = new P(), m = new P(), g = new Ie(), v = new Ie(), f = new Ie(), u = new P(), b = new P(); + function S(y, z, Z) { + d.fromArray(r, y * 3), p.fromArray(r, z * 3), m.fromArray(r, Z * 3), g.fromArray(o, y * 2), v.fromArray(o, z * 2), f.fromArray(o, Z * 2), p.sub(d), m.sub(d), v.sub(g), f.sub(g); + const re = 1 / (v.x * f.y - f.x * v.y); + isFinite(re) && (u.copy(p).multiplyScalar(f.y).addScaledVector(m, -v.y).multiplyScalar(re), b.copy(m).multiplyScalar(v.x).addScaledVector(p, -f.x).multiplyScalar(re), c[y].add(u), c[z].add(u), c[Z].add(u), h[y].add(b), h[z].add(b), h[Z].add(b)); + } + let R = this.groups; + R.length === 0 && (R = [{ + start: 0, + count: n.length + }]); + for (let y = 0, z = R.length; y < z; ++y) { + const Z = R[y], re = Z.start, L = Z.count; + for (let F = re, V = re + L; F < V; F += 3) + S( + n[F + 0], + n[F + 1], + n[F + 2] + ); + } + const D = new P(), C = new P(), A = new P(), W = new P(); + function x(y) { + A.fromArray(s, y * 3), W.copy(A); + const z = c[y]; + D.copy(z), D.sub(A.multiplyScalar(A.dot(z))).normalize(), C.crossVectors(W, z); + const re = C.dot(h[y]) < 0 ? -1 : 1; + l[y * 4] = D.x, l[y * 4 + 1] = D.y, l[y * 4 + 2] = D.z, l[y * 4 + 3] = re; + } + for (let y = 0, z = R.length; y < z; ++y) { + const Z = R[y], re = Z.start, L = Z.count; + for (let F = re, V = re + L; F < V; F += 3) + x(n[F + 0]), x(n[F + 1]), x(n[F + 2]); + } + } + computeVertexNormals() { + const e = this.index, t = this.getAttribute("position"); + if (t !== void 0) { + let n = this.getAttribute("normal"); + if (n === void 0) + n = new Bt(new Float32Array(t.count * 3), 3), this.setAttribute("normal", n); + else + for (let p = 0, m = n.count; p < m; p++) + n.setXYZ(p, 0, 0, 0); + const r = new P(), s = new P(), o = new P(), a = new P(), l = new P(), c = new P(), h = new P(), d = new P(); + if (e) + for (let p = 0, m = e.count; p < m; p += 3) { + const g = e.getX(p + 0), v = e.getX(p + 1), f = e.getX(p + 2); + r.fromBufferAttribute(t, g), s.fromBufferAttribute(t, v), o.fromBufferAttribute(t, f), h.subVectors(o, s), d.subVectors(r, s), h.cross(d), a.fromBufferAttribute(n, g), l.fromBufferAttribute(n, v), c.fromBufferAttribute(n, f), a.add(h), l.add(h), c.add(h), n.setXYZ(g, a.x, a.y, a.z), n.setXYZ(v, l.x, l.y, l.z), n.setXYZ(f, c.x, c.y, c.z); + } + else + for (let p = 0, m = t.count; p < m; p += 3) + r.fromBufferAttribute(t, p + 0), s.fromBufferAttribute(t, p + 1), o.fromBufferAttribute(t, p + 2), h.subVectors(o, s), d.subVectors(r, s), h.cross(d), n.setXYZ(p + 0, h.x, h.y, h.z), n.setXYZ(p + 1, h.x, h.y, h.z), n.setXYZ(p + 2, h.x, h.y, h.z); + this.normalizeNormals(), n.needsUpdate = !0; + } + } + normalizeNormals() { + const e = this.attributes.normal; + for (let t = 0, n = e.count; t < n; t++) + ut.fromBufferAttribute(e, t), ut.normalize(), e.setXYZ(t, ut.x, ut.y, ut.z); + } + toNonIndexed() { + function e(a, l) { + const c = a.array, h = a.itemSize, d = a.normalized, p = new c.constructor(l.length * h); + let m = 0, g = 0; + for (let v = 0, f = l.length; v < f; v++) { + a.isInterleavedBufferAttribute ? m = l[v] * a.data.stride + a.offset : m = l[v] * h; + for (let u = 0; u < h; u++) + p[g++] = c[m++]; + } + return new Bt(p, h, d); + } + if (this.index === null) + return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."), this; + const t = new hn(), n = this.index.array, r = this.attributes; + for (const a in r) { + const l = r[a], c = e(l, n); + t.setAttribute(a, c); + } + const s = this.morphAttributes; + for (const a in s) { + const l = [], c = s[a]; + for (let h = 0, d = c.length; h < d; h++) { + const p = c[h], m = e(p, n); + l.push(m); + } + t.morphAttributes[a] = l; + } + t.morphTargetsRelative = this.morphTargetsRelative; + const o = this.groups; + for (let a = 0, l = o.length; a < l; a++) { + const c = o[a]; + t.addGroup(c.start, c.count, c.materialIndex); + } + return t; + } + toJSON() { + const e = { + metadata: { + version: 4.6, + type: "BufferGeometry", + generator: "BufferGeometry.toJSON" + } + }; + if (e.uuid = this.uuid, e.type = this.type, this.name !== "" && (e.name = this.name), Object.keys(this.userData).length > 0 && (e.userData = this.userData), this.parameters !== void 0) { + const l = this.parameters; + for (const c in l) + l[c] !== void 0 && (e[c] = l[c]); + return e; + } + e.data = { attributes: {} }; + const t = this.index; + t !== null && (e.data.index = { + type: t.array.constructor.name, + array: Array.prototype.slice.call(t.array) + }); + const n = this.attributes; + for (const l in n) { + const c = n[l]; + e.data.attributes[l] = c.toJSON(e.data); + } + const r = {}; + let s = !1; + for (const l in this.morphAttributes) { + const c = this.morphAttributes[l], h = []; + for (let d = 0, p = c.length; d < p; d++) { + const m = c[d]; + h.push(m.toJSON(e.data)); + } + h.length > 0 && (r[l] = h, s = !0); + } + s && (e.data.morphAttributes = r, e.data.morphTargetsRelative = this.morphTargetsRelative); + const o = this.groups; + o.length > 0 && (e.data.groups = JSON.parse(JSON.stringify(o))); + const a = this.boundingSphere; + return a !== null && (e.data.boundingSphere = { + center: a.center.toArray(), + radius: a.radius + }), e; + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + this.index = null, this.attributes = {}, this.morphAttributes = {}, this.groups = [], this.boundingBox = null, this.boundingSphere = null; + const t = {}; + this.name = e.name; + const n = e.index; + n !== null && this.setIndex(n.clone(t)); + const r = e.attributes; + for (const c in r) { + const h = r[c]; + this.setAttribute(c, h.clone(t)); + } + const s = e.morphAttributes; + for (const c in s) { + const h = [], d = s[c]; + for (let p = 0, m = d.length; p < m; p++) + h.push(d[p].clone(t)); + this.morphAttributes[c] = h; + } + this.morphTargetsRelative = e.morphTargetsRelative; + const o = e.groups; + for (let c = 0, h = o.length; c < h; c++) { + const d = o[c]; + this.addGroup(d.start, d.count, d.materialIndex); + } + const a = e.boundingBox; + a !== null && (this.boundingBox = a.clone()); + const l = e.boundingSphere; + return l !== null && (this.boundingSphere = l.clone()), this.drawRange.start = e.drawRange.start, this.drawRange.count = e.drawRange.count, this.userData = e.userData, this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +} +const pa = /* @__PURE__ */ new Qe(), gn = /* @__PURE__ */ new To(), Ni = /* @__PURE__ */ new xi(), ma = /* @__PURE__ */ new P(), Vn = /* @__PURE__ */ new P(), kn = /* @__PURE__ */ new P(), Wn = /* @__PURE__ */ new P(), Fr = /* @__PURE__ */ new P(), Fi = /* @__PURE__ */ new P(), Oi = /* @__PURE__ */ new Ie(), Bi = /* @__PURE__ */ new Ie(), zi = /* @__PURE__ */ new Ie(), _a = /* @__PURE__ */ new P(), ga = /* @__PURE__ */ new P(), va = /* @__PURE__ */ new P(), Gi = /* @__PURE__ */ new P(), Hi = /* @__PURE__ */ new P(); +class Ot extends dt { + constructor(e = new hn(), t = new ls()) { + super(), this.isMesh = !0, this.type = "Mesh", this.geometry = e, this.material = t, this.updateMorphTargets(); + } + copy(e, t) { + return super.copy(e, t), e.morphTargetInfluences !== void 0 && (this.morphTargetInfluences = e.morphTargetInfluences.slice()), e.morphTargetDictionary !== void 0 && (this.morphTargetDictionary = Object.assign({}, e.morphTargetDictionary)), this.material = Array.isArray(e.material) ? e.material.slice() : e.material, this.geometry = e.geometry, this; + } + updateMorphTargets() { + const t = this.geometry.morphAttributes, n = Object.keys(t); + if (n.length > 0) { + const r = t[n[0]]; + if (r !== void 0) { + this.morphTargetInfluences = [], this.morphTargetDictionary = {}; + for (let s = 0, o = r.length; s < o; s++) { + const a = r[s].name || String(s); + this.morphTargetInfluences.push(0), this.morphTargetDictionary[a] = s; + } + } + } + } + getVertexPosition(e, t) { + const n = this.geometry, r = n.attributes.position, s = n.morphAttributes.position, o = n.morphTargetsRelative; + t.fromBufferAttribute(r, e); + const a = this.morphTargetInfluences; + if (s && a) { + Fi.set(0, 0, 0); + for (let l = 0, c = s.length; l < c; l++) { + const h = a[l], d = s[l]; + h !== 0 && (Fr.fromBufferAttribute(d, e), o ? Fi.addScaledVector(Fr, h) : Fi.addScaledVector(Fr.sub(t), h)); + } + t.add(Fi); + } + return t; + } + raycast(e, t) { + const n = this.geometry, r = this.material, s = this.matrixWorld; + r !== void 0 && (n.boundingSphere === null && n.computeBoundingSphere(), Ni.copy(n.boundingSphere), Ni.applyMatrix4(s), gn.copy(e.ray).recast(e.near), !(Ni.containsPoint(gn.origin) === !1 && (gn.intersectSphere(Ni, ma) === null || gn.origin.distanceToSquared(ma) > (e.far - e.near) ** 2)) && (pa.copy(s).invert(), gn.copy(e.ray).applyMatrix4(pa), !(n.boundingBox !== null && gn.intersectsBox(n.boundingBox) === !1) && this._computeIntersections(e, t, gn))); + } + _computeIntersections(e, t, n) { + let r; + const s = this.geometry, o = this.material, a = s.index, l = s.attributes.position, c = s.attributes.uv, h = s.attributes.uv1, d = s.attributes.normal, p = s.groups, m = s.drawRange; + if (a !== null) + if (Array.isArray(o)) + for (let g = 0, v = p.length; g < v; g++) { + const f = p[g], u = o[f.materialIndex], b = Math.max(f.start, m.start), S = Math.min(a.count, Math.min(f.start + f.count, m.start + m.count)); + for (let R = b, D = S; R < D; R += 3) { + const C = a.getX(R), A = a.getX(R + 1), W = a.getX(R + 2); + r = Vi(this, u, e, n, c, h, d, C, A, W), r && (r.faceIndex = Math.floor(R / 3), r.face.materialIndex = f.materialIndex, t.push(r)); + } + } + else { + const g = Math.max(0, m.start), v = Math.min(a.count, m.start + m.count); + for (let f = g, u = v; f < u; f += 3) { + const b = a.getX(f), S = a.getX(f + 1), R = a.getX(f + 2); + r = Vi(this, o, e, n, c, h, d, b, S, R), r && (r.faceIndex = Math.floor(f / 3), t.push(r)); + } + } + else if (l !== void 0) + if (Array.isArray(o)) + for (let g = 0, v = p.length; g < v; g++) { + const f = p[g], u = o[f.materialIndex], b = Math.max(f.start, m.start), S = Math.min(l.count, Math.min(f.start + f.count, m.start + m.count)); + for (let R = b, D = S; R < D; R += 3) { + const C = R, A = R + 1, W = R + 2; + r = Vi(this, u, e, n, c, h, d, C, A, W), r && (r.faceIndex = Math.floor(R / 3), r.face.materialIndex = f.materialIndex, t.push(r)); + } + } + else { + const g = Math.max(0, m.start), v = Math.min(l.count, m.start + m.count); + for (let f = g, u = v; f < u; f += 3) { + const b = f, S = f + 1, R = f + 2; + r = Vi(this, o, e, n, c, h, d, b, S, R), r && (r.faceIndex = Math.floor(f / 3), t.push(r)); + } + } + } +} +function cc(i, e, t, n, r, s, o, a) { + let l; + if (e.side === Mt ? l = n.intersectTriangle(o, s, r, !0, a) : l = n.intersectTriangle(r, s, o, e.side === un, a), l === null) return null; + Hi.copy(a), Hi.applyMatrix4(i.matrixWorld); + const c = t.ray.origin.distanceTo(Hi); + return c < t.near || c > t.far ? null : { + distance: c, + point: Hi.clone(), + object: i + }; +} +function Vi(i, e, t, n, r, s, o, a, l, c) { + i.getVertexPosition(a, Vn), i.getVertexPosition(l, kn), i.getVertexPosition(c, Wn); + const h = cc(i, e, t, n, Vn, kn, Wn, Gi); + if (h) { + r && (Oi.fromBufferAttribute(r, a), Bi.fromBufferAttribute(r, l), zi.fromBufferAttribute(r, c), h.uv = It.getInterpolation(Gi, Vn, kn, Wn, Oi, Bi, zi, new Ie())), s && (Oi.fromBufferAttribute(s, a), Bi.fromBufferAttribute(s, l), zi.fromBufferAttribute(s, c), h.uv1 = It.getInterpolation(Gi, Vn, kn, Wn, Oi, Bi, zi, new Ie()), h.uv2 = h.uv1), o && (_a.fromBufferAttribute(o, a), ga.fromBufferAttribute(o, l), va.fromBufferAttribute(o, c), h.normal = It.getInterpolation(Gi, Vn, kn, Wn, _a, ga, va, new P()), h.normal.dot(n.direction) > 0 && h.normal.multiplyScalar(-1)); + const d = { + a, + b: l, + c, + normal: new P(), + materialIndex: 0 + }; + It.getNormal(Vn, kn, Wn, d.normal), h.face = d; + } + return h; +} +class ii extends hn { + constructor(e = 1, t = 1, n = 1, r = 1, s = 1, o = 1) { + super(), this.type = "BoxGeometry", this.parameters = { + width: e, + height: t, + depth: n, + widthSegments: r, + heightSegments: s, + depthSegments: o + }; + const a = this; + r = Math.floor(r), s = Math.floor(s), o = Math.floor(o); + const l = [], c = [], h = [], d = []; + let p = 0, m = 0; + g("z", "y", "x", -1, -1, n, t, e, o, s, 0), g("z", "y", "x", 1, -1, n, t, -e, o, s, 1), g("x", "z", "y", 1, 1, e, n, t, r, o, 2), g("x", "z", "y", 1, -1, e, n, -t, r, o, 3), g("x", "y", "z", 1, -1, e, t, n, r, s, 4), g("x", "y", "z", -1, -1, e, t, -n, r, s, 5), this.setIndex(l), this.setAttribute("position", new Ht(c, 3)), this.setAttribute("normal", new Ht(h, 3)), this.setAttribute("uv", new Ht(d, 2)); + function g(v, f, u, b, S, R, D, C, A, W, x) { + const y = R / A, z = D / W, Z = R / 2, re = D / 2, L = C / 2, F = A + 1, V = W + 1; + let Y = 0, X = 0; + const k = new P(); + for (let q = 0; q < V; q++) { + const Q = q * z - re; + for (let ce = 0; ce < F; ce++) { + const H = ce * y - Z; + k[v] = H * b, k[f] = Q * S, k[u] = L, c.push(k.x, k.y, k.z), k[v] = 0, k[f] = 0, k[u] = C > 0 ? 1 : -1, h.push(k.x, k.y, k.z), d.push(ce / A), d.push(1 - q / W), Y += 1; + } + } + for (let q = 0; q < W; q++) + for (let Q = 0; Q < A; Q++) { + const ce = p + Q + F * q, H = p + Q + F * (q + 1), j = p + (Q + 1) + F * (q + 1), oe = p + (Q + 1) + F * q; + l.push(ce, H, oe), l.push(H, j, oe), X += 6; + } + a.addGroup(m, X, x), m += X, p += Y; + } + } + copy(e) { + return super.copy(e), this.parameters = Object.assign({}, e.parameters), this; + } + static fromJSON(e) { + return new ii(e.width, e.height, e.depth, e.widthSegments, e.heightSegments, e.depthSegments); + } +} +function ni(i) { + const e = {}; + for (const t in i) { + e[t] = {}; + for (const n in i[t]) { + const r = i[t][n]; + r && (r.isColor || r.isMatrix3 || r.isMatrix4 || r.isVector2 || r.isVector3 || r.isVector4 || r.isTexture || r.isQuaternion) ? r.isRenderTargetTexture ? (console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."), e[t][n] = null) : e[t][n] = r.clone() : Array.isArray(r) ? e[t][n] = r.slice() : e[t][n] = r; + } + } + return e; +} +function _t(i) { + const e = {}; + for (let t = 0; t < i.length; t++) { + const n = ni(i[t]); + for (const r in n) + e[r] = n[r]; + } + return e; +} +function uc(i) { + const e = []; + for (let t = 0; t < i.length; t++) + e.push(i[t].clone()); + return e; +} +function Co(i) { + return i.getRenderTarget() === null ? i.outputColorSpace : Ke.workingColorSpace; +} +const hc = { clone: ni, merge: _t }; +var dc = `void main() { + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); +}`, fc = `void main() { + gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 ); +}`; +class wn extends Mi { + constructor(e) { + super(), this.isShaderMaterial = !0, this.type = "ShaderMaterial", this.defines = {}, this.uniforms = {}, this.uniformsGroups = [], this.vertexShader = dc, this.fragmentShader = fc, this.linewidth = 1, this.wireframe = !1, this.wireframeLinewidth = 1, this.fog = !1, this.lights = !1, this.clipping = !1, this.forceSinglePass = !0, this.extensions = { + derivatives: !1, + // set to use derivatives + fragDepth: !1, + // set to use fragment depth values + drawBuffers: !1, + // set to use draw buffers + shaderTextureLOD: !1, + // set to use shader texture LOD + clipCullDistance: !1 + // set to use vertex shader clipping + }, this.defaultAttributeValues = { + color: [1, 1, 1], + uv: [0, 0], + uv1: [0, 0] + }, this.index0AttributeName = void 0, this.uniformsNeedUpdate = !1, this.glslVersion = null, e !== void 0 && this.setValues(e); + } + copy(e) { + return super.copy(e), this.fragmentShader = e.fragmentShader, this.vertexShader = e.vertexShader, this.uniforms = ni(e.uniforms), this.uniformsGroups = uc(e.uniformsGroups), this.defines = Object.assign({}, e.defines), this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.fog = e.fog, this.lights = e.lights, this.clipping = e.clipping, this.extensions = Object.assign({}, e.extensions), this.glslVersion = e.glslVersion, this; + } + toJSON(e) { + const t = super.toJSON(e); + t.glslVersion = this.glslVersion, t.uniforms = {}; + for (const r in this.uniforms) { + const o = this.uniforms[r].value; + o && o.isTexture ? t.uniforms[r] = { + type: "t", + value: o.toJSON(e).uuid + } : o && o.isColor ? t.uniforms[r] = { + type: "c", + value: o.getHex() + } : o && o.isVector2 ? t.uniforms[r] = { + type: "v2", + value: o.toArray() + } : o && o.isVector3 ? t.uniforms[r] = { + type: "v3", + value: o.toArray() + } : o && o.isVector4 ? t.uniforms[r] = { + type: "v4", + value: o.toArray() + } : o && o.isMatrix3 ? t.uniforms[r] = { + type: "m3", + value: o.toArray() + } : o && o.isMatrix4 ? t.uniforms[r] = { + type: "m4", + value: o.toArray() + } : t.uniforms[r] = { + value: o + }; + } + Object.keys(this.defines).length > 0 && (t.defines = this.defines), t.vertexShader = this.vertexShader, t.fragmentShader = this.fragmentShader, t.lights = this.lights, t.clipping = this.clipping; + const n = {}; + for (const r in this.extensions) + this.extensions[r] === !0 && (n[r] = !0); + return Object.keys(n).length > 0 && (t.extensions = n), t; + } +} +class Lo extends dt { + constructor() { + super(), this.isCamera = !0, this.type = "Camera", this.matrixWorldInverse = new Qe(), this.projectionMatrix = new Qe(), this.projectionMatrixInverse = new Qe(), this.coordinateSystem = Zt; + } + copy(e, t) { + return super.copy(e, t), this.matrixWorldInverse.copy(e.matrixWorldInverse), this.projectionMatrix.copy(e.projectionMatrix), this.projectionMatrixInverse.copy(e.projectionMatrixInverse), this.coordinateSystem = e.coordinateSystem, this; + } + getWorldDirection(e) { + return super.getWorldDirection(e).negate(); + } + updateMatrixWorld(e) { + super.updateMatrixWorld(e), this.matrixWorldInverse.copy(this.matrixWorld).invert(); + } + updateWorldMatrix(e, t) { + super.updateWorldMatrix(e, t), this.matrixWorldInverse.copy(this.matrixWorld).invert(); + } + clone() { + return new this.constructor().copy(this); + } +} +class Tt extends Lo { + constructor(e = 50, t = 1, n = 0.1, r = 2e3) { + super(), this.isPerspectiveCamera = !0, this.type = "PerspectiveCamera", this.fov = e, this.zoom = 1, this.near = n, this.far = r, this.focus = 10, this.aspect = t, this.view = null, this.filmGauge = 35, this.filmOffset = 0, this.updateProjectionMatrix(); + } + copy(e, t) { + return super.copy(e, t), this.fov = e.fov, this.zoom = e.zoom, this.near = e.near, this.far = e.far, this.focus = e.focus, this.aspect = e.aspect, this.view = e.view === null ? null : Object.assign({}, e.view), this.filmGauge = e.filmGauge, this.filmOffset = e.filmOffset, this; + } + /** + * Sets the FOV by focal length in respect to the current .filmGauge. + * + * The default film gauge is 35, so that the focal length can be specified for + * a 35mm (full frame) camera. + * + * Values for focal length and film gauge must have the same unit. + */ + setFocalLength(e) { + const t = 0.5 * this.getFilmHeight() / e; + this.fov = ns * 2 * Math.atan(t), this.updateProjectionMatrix(); + } + /** + * Calculates the focal length from the current .fov and .filmGauge. + */ + getFocalLength() { + const e = Math.tan(Ki * 0.5 * this.fov); + return 0.5 * this.getFilmHeight() / e; + } + getEffectiveFOV() { + return ns * 2 * Math.atan( + Math.tan(Ki * 0.5 * this.fov) / this.zoom + ); + } + getFilmWidth() { + return this.filmGauge * Math.min(this.aspect, 1); + } + getFilmHeight() { + return this.filmGauge / Math.max(this.aspect, 1); + } + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and + * the monitors are in grid like this + * + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + * + * then for each monitor you would call it like this + * + * const w = 1920; + * const h = 1080; + * const fullWidth = w * 3; + * const fullHeight = h * 2; + * + * --A-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * --B-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * --C-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * --D-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * --E-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * --F-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); + * + * Note there is no reason monitors have to be the same size or in a grid. + */ + setViewOffset(e, t, n, r, s, o) { + this.aspect = e / t, this.view === null && (this.view = { + enabled: !0, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }), this.view.enabled = !0, this.view.fullWidth = e, this.view.fullHeight = t, this.view.offsetX = n, this.view.offsetY = r, this.view.width = s, this.view.height = o, this.updateProjectionMatrix(); + } + clearViewOffset() { + this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix(); + } + updateProjectionMatrix() { + const e = this.near; + let t = e * Math.tan(Ki * 0.5 * this.fov) / this.zoom, n = 2 * t, r = this.aspect * n, s = -0.5 * r; + const o = this.view; + if (this.view !== null && this.view.enabled) { + const l = o.fullWidth, c = o.fullHeight; + s += o.offsetX * r / l, t -= o.offsetY * n / c, r *= o.width / l, n *= o.height / c; + } + const a = this.filmOffset; + a !== 0 && (s += e * a / this.getFilmWidth()), this.projectionMatrix.makePerspective(s, s + r, t, t - n, e, this.far, this.coordinateSystem), this.projectionMatrixInverse.copy(this.projectionMatrix).invert(); + } + toJSON(e) { + const t = super.toJSON(e); + return t.object.fov = this.fov, t.object.zoom = this.zoom, t.object.near = this.near, t.object.far = this.far, t.object.focus = this.focus, t.object.aspect = this.aspect, this.view !== null && (t.object.view = Object.assign({}, this.view)), t.object.filmGauge = this.filmGauge, t.object.filmOffset = this.filmOffset, t; + } +} +const Xn = -90, qn = 1; +class pc extends dt { + constructor(e, t, n) { + super(), this.type = "CubeCamera", this.renderTarget = n, this.coordinateSystem = null, this.activeMipmapLevel = 0; + const r = new Tt(Xn, qn, e, t); + r.layers = this.layers, this.add(r); + const s = new Tt(Xn, qn, e, t); + s.layers = this.layers, this.add(s); + const o = new Tt(Xn, qn, e, t); + o.layers = this.layers, this.add(o); + const a = new Tt(Xn, qn, e, t); + a.layers = this.layers, this.add(a); + const l = new Tt(Xn, qn, e, t); + l.layers = this.layers, this.add(l); + const c = new Tt(Xn, qn, e, t); + c.layers = this.layers, this.add(c); + } + updateCoordinateSystem() { + const e = this.coordinateSystem, t = this.children.concat(), [n, r, s, o, a, l] = t; + for (const c of t) this.remove(c); + if (e === Zt) + n.up.set(0, 1, 0), n.lookAt(1, 0, 0), r.up.set(0, 1, 0), r.lookAt(-1, 0, 0), s.up.set(0, 0, -1), s.lookAt(0, 1, 0), o.up.set(0, 0, 1), o.lookAt(0, -1, 0), a.up.set(0, 1, 0), a.lookAt(0, 0, 1), l.up.set(0, 1, 0), l.lookAt(0, 0, -1); + else if (e === tr) + n.up.set(0, -1, 0), n.lookAt(-1, 0, 0), r.up.set(0, -1, 0), r.lookAt(1, 0, 0), s.up.set(0, 0, 1), s.lookAt(0, 1, 0), o.up.set(0, 0, -1), o.lookAt(0, -1, 0), a.up.set(0, -1, 0), a.lookAt(0, 0, 1), l.up.set(0, -1, 0), l.lookAt(0, 0, -1); + else + throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: " + e); + for (const c of t) + this.add(c), c.updateMatrixWorld(); + } + update(e, t) { + this.parent === null && this.updateMatrixWorld(); + const { renderTarget: n, activeMipmapLevel: r } = this; + this.coordinateSystem !== e.coordinateSystem && (this.coordinateSystem = e.coordinateSystem, this.updateCoordinateSystem()); + const [s, o, a, l, c, h] = this.children, d = e.getRenderTarget(), p = e.getActiveCubeFace(), m = e.getActiveMipmapLevel(), g = e.xr.enabled; + e.xr.enabled = !1; + const v = n.texture.generateMipmaps; + n.texture.generateMipmaps = !1, e.setRenderTarget(n, 0, r), e.render(t, s), e.setRenderTarget(n, 1, r), e.render(t, o), e.setRenderTarget(n, 2, r), e.render(t, a), e.setRenderTarget(n, 3, r), e.render(t, l), e.setRenderTarget(n, 4, r), e.render(t, c), n.texture.generateMipmaps = v, e.setRenderTarget(n, 5, r), e.render(t, h), e.setRenderTarget(d, p, m), e.xr.enabled = g, n.texture.needsPMREMUpdate = !0; + } +} +class Po extends bt { + constructor(e, t, n, r, s, o, a, l, c, h) { + e = e !== void 0 ? e : [], t = t !== void 0 ? t : Qn, super(e, t, n, r, s, o, a, l, c, h), this.isCubeTexture = !0, this.flipY = !1; + } + get images() { + return this.image; + } + set images(e) { + this.image = e; + } +} +class mc extends bn { + constructor(e = 1, t = {}) { + super(e, e, t), this.isWebGLCubeRenderTarget = !0; + const n = { width: e, height: e, depth: 1 }, r = [n, n, n, n, n, n]; + t.encoding !== void 0 && (mi("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."), t.colorSpace = t.encoding === Tn ? ht : Ct), this.texture = new Po(r, t.mapping, t.wrapS, t.wrapT, t.magFilter, t.minFilter, t.format, t.type, t.anisotropy, t.colorSpace), this.texture.isRenderTargetTexture = !0, this.texture.generateMipmaps = t.generateMipmaps !== void 0 ? t.generateMipmaps : !1, this.texture.minFilter = t.minFilter !== void 0 ? t.minFilter : Rt; + } + fromEquirectangularTexture(e, t) { + this.texture.type = t.type, this.texture.colorSpace = t.colorSpace, this.texture.generateMipmaps = t.generateMipmaps, this.texture.minFilter = t.minFilter, this.texture.magFilter = t.magFilter; + const n = { + uniforms: { + tEquirect: { value: null } + }, + vertexShader: ( + /* glsl */ + ` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + ` + ), + fragmentShader: ( + /* glsl */ + ` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + ` + ) + }, r = new ii(5, 5, 5), s = new wn({ + name: "CubemapFromEquirect", + uniforms: ni(n.uniforms), + vertexShader: n.vertexShader, + fragmentShader: n.fragmentShader, + side: Mt, + blending: on + }); + s.uniforms.tEquirect.value = t; + const o = new Ot(r, s), a = t.minFilter; + return t.minFilter === _i && (t.minFilter = Rt), new pc(1, 10, this).update(e, o), t.minFilter = a, o.geometry.dispose(), o.material.dispose(), this; + } + clear(e, t, n, r) { + const s = e.getRenderTarget(); + for (let o = 0; o < 6; o++) + e.setRenderTarget(this, o), e.clear(t, n, r); + e.setRenderTarget(s); + } +} +const Or = /* @__PURE__ */ new P(), _c = /* @__PURE__ */ new P(), gc = /* @__PURE__ */ new Ve(); +class rn { + constructor(e = new P(1, 0, 0), t = 0) { + this.isPlane = !0, this.normal = e, this.constant = t; + } + set(e, t) { + return this.normal.copy(e), this.constant = t, this; + } + setComponents(e, t, n, r) { + return this.normal.set(e, t, n), this.constant = r, this; + } + setFromNormalAndCoplanarPoint(e, t) { + return this.normal.copy(e), this.constant = -t.dot(this.normal), this; + } + setFromCoplanarPoints(e, t, n) { + const r = Or.subVectors(n, t).cross(_c.subVectors(e, t)).normalize(); + return this.setFromNormalAndCoplanarPoint(r, e), this; + } + copy(e) { + return this.normal.copy(e.normal), this.constant = e.constant, this; + } + normalize() { + const e = 1 / this.normal.length(); + return this.normal.multiplyScalar(e), this.constant *= e, this; + } + negate() { + return this.constant *= -1, this.normal.negate(), this; + } + distanceToPoint(e) { + return this.normal.dot(e) + this.constant; + } + distanceToSphere(e) { + return this.distanceToPoint(e.center) - e.radius; + } + projectPoint(e, t) { + return t.copy(e).addScaledVector(this.normal, -this.distanceToPoint(e)); + } + intersectLine(e, t) { + const n = e.delta(Or), r = this.normal.dot(n); + if (r === 0) + return this.distanceToPoint(e.start) === 0 ? t.copy(e.start) : null; + const s = -(e.start.dot(this.normal) + this.constant) / r; + return s < 0 || s > 1 ? null : t.copy(e.start).addScaledVector(n, s); + } + intersectsLine(e) { + const t = this.distanceToPoint(e.start), n = this.distanceToPoint(e.end); + return t < 0 && n > 0 || n < 0 && t > 0; + } + intersectsBox(e) { + return e.intersectsPlane(this); + } + intersectsSphere(e) { + return e.intersectsPlane(this); + } + coplanarPoint(e) { + return e.copy(this.normal).multiplyScalar(-this.constant); + } + applyMatrix4(e, t) { + const n = t || gc.getNormalMatrix(e), r = this.coplanarPoint(Or).applyMatrix4(e), s = this.normal.applyMatrix3(n).normalize(); + return this.constant = -r.dot(s), this; + } + translate(e) { + return this.constant -= e.dot(this.normal), this; + } + equals(e) { + return e.normal.equals(this.normal) && e.constant === this.constant; + } + clone() { + return new this.constructor().copy(this); + } +} +const vn = /* @__PURE__ */ new xi(), ki = /* @__PURE__ */ new P(); +class cs { + constructor(e = new rn(), t = new rn(), n = new rn(), r = new rn(), s = new rn(), o = new rn()) { + this.planes = [e, t, n, r, s, o]; + } + set(e, t, n, r, s, o) { + const a = this.planes; + return a[0].copy(e), a[1].copy(t), a[2].copy(n), a[3].copy(r), a[4].copy(s), a[5].copy(o), this; + } + copy(e) { + const t = this.planes; + for (let n = 0; n < 6; n++) + t[n].copy(e.planes[n]); + return this; + } + setFromProjectionMatrix(e, t = Zt) { + const n = this.planes, r = e.elements, s = r[0], o = r[1], a = r[2], l = r[3], c = r[4], h = r[5], d = r[6], p = r[7], m = r[8], g = r[9], v = r[10], f = r[11], u = r[12], b = r[13], S = r[14], R = r[15]; + if (n[0].setComponents(l - s, p - c, f - m, R - u).normalize(), n[1].setComponents(l + s, p + c, f + m, R + u).normalize(), n[2].setComponents(l + o, p + h, f + g, R + b).normalize(), n[3].setComponents(l - o, p - h, f - g, R - b).normalize(), n[4].setComponents(l - a, p - d, f - v, R - S).normalize(), t === Zt) + n[5].setComponents(l + a, p + d, f + v, R + S).normalize(); + else if (t === tr) + n[5].setComponents(a, d, v, S).normalize(); + else + throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: " + t); + return this; + } + intersectsObject(e) { + if (e.boundingSphere !== void 0) + e.boundingSphere === null && e.computeBoundingSphere(), vn.copy(e.boundingSphere).applyMatrix4(e.matrixWorld); + else { + const t = e.geometry; + t.boundingSphere === null && t.computeBoundingSphere(), vn.copy(t.boundingSphere).applyMatrix4(e.matrixWorld); + } + return this.intersectsSphere(vn); + } + intersectsSprite(e) { + return vn.center.set(0, 0, 0), vn.radius = 0.7071067811865476, vn.applyMatrix4(e.matrixWorld), this.intersectsSphere(vn); + } + intersectsSphere(e) { + const t = this.planes, n = e.center, r = -e.radius; + for (let s = 0; s < 6; s++) + if (t[s].distanceToPoint(n) < r) + return !1; + return !0; + } + intersectsBox(e) { + const t = this.planes; + for (let n = 0; n < 6; n++) { + const r = t[n]; + if (ki.x = r.normal.x > 0 ? e.max.x : e.min.x, ki.y = r.normal.y > 0 ? e.max.y : e.min.y, ki.z = r.normal.z > 0 ? e.max.z : e.min.z, r.distanceToPoint(ki) < 0) + return !1; + } + return !0; + } + containsPoint(e) { + const t = this.planes; + for (let n = 0; n < 6; n++) + if (t[n].distanceToPoint(e) < 0) + return !1; + return !0; + } + clone() { + return new this.constructor().copy(this); + } +} +function Do() { + let i = null, e = !1, t = null, n = null; + function r(s, o) { + t(s, o), n = i.requestAnimationFrame(r); + } + return { + start: function() { + e !== !0 && t !== null && (n = i.requestAnimationFrame(r), e = !0); + }, + stop: function() { + i.cancelAnimationFrame(n), e = !1; + }, + setAnimationLoop: function(s) { + t = s; + }, + setContext: function(s) { + i = s; + } + }; +} +function vc(i, e) { + const t = e.isWebGL2, n = /* @__PURE__ */ new WeakMap(); + function r(c, h) { + const d = c.array, p = c.usage, m = d.byteLength, g = i.createBuffer(); + i.bindBuffer(h, g), i.bufferData(h, d, p), c.onUploadCallback(); + let v; + if (d instanceof Float32Array) + v = i.FLOAT; + else if (d instanceof Uint16Array) + if (c.isFloat16BufferAttribute) + if (t) + v = i.HALF_FLOAT; + else + throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2."); + else + v = i.UNSIGNED_SHORT; + else if (d instanceof Int16Array) + v = i.SHORT; + else if (d instanceof Uint32Array) + v = i.UNSIGNED_INT; + else if (d instanceof Int32Array) + v = i.INT; + else if (d instanceof Int8Array) + v = i.BYTE; + else if (d instanceof Uint8Array) + v = i.UNSIGNED_BYTE; + else if (d instanceof Uint8ClampedArray) + v = i.UNSIGNED_BYTE; + else + throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: " + d); + return { + buffer: g, + type: v, + bytesPerElement: d.BYTES_PER_ELEMENT, + version: c.version, + size: m + }; + } + function s(c, h, d) { + const p = h.array, m = h._updateRange, g = h.updateRanges; + if (i.bindBuffer(d, c), m.count === -1 && g.length === 0 && i.bufferSubData(d, 0, p), g.length !== 0) { + for (let v = 0, f = g.length; v < f; v++) { + const u = g[v]; + t ? i.bufferSubData( + d, + u.start * p.BYTES_PER_ELEMENT, + p, + u.start, + u.count + ) : i.bufferSubData( + d, + u.start * p.BYTES_PER_ELEMENT, + p.subarray(u.start, u.start + u.count) + ); + } + h.clearUpdateRanges(); + } + m.count !== -1 && (t ? i.bufferSubData( + d, + m.offset * p.BYTES_PER_ELEMENT, + p, + m.offset, + m.count + ) : i.bufferSubData( + d, + m.offset * p.BYTES_PER_ELEMENT, + p.subarray(m.offset, m.offset + m.count) + ), m.count = -1), h.onUploadCallback(); + } + function o(c) { + return c.isInterleavedBufferAttribute && (c = c.data), n.get(c); + } + function a(c) { + c.isInterleavedBufferAttribute && (c = c.data); + const h = n.get(c); + h && (i.deleteBuffer(h.buffer), n.delete(c)); + } + function l(c, h) { + if (c.isGLBufferAttribute) { + const p = n.get(c); + (!p || p.version < c.version) && n.set(c, { + buffer: c.buffer, + type: c.type, + bytesPerElement: c.elementSize, + version: c.version + }); + return; + } + c.isInterleavedBufferAttribute && (c = c.data); + const d = n.get(c); + if (d === void 0) + n.set(c, r(c, h)); + else if (d.version < c.version) { + if (d.size !== c.array.byteLength) + throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported."); + s(d.buffer, c, h), d.version = c.version; + } + } + return { + get: o, + remove: a, + update: l + }; +} +class us extends hn { + constructor(e = 1, t = 1, n = 1, r = 1) { + super(), this.type = "PlaneGeometry", this.parameters = { + width: e, + height: t, + widthSegments: n, + heightSegments: r + }; + const s = e / 2, o = t / 2, a = Math.floor(n), l = Math.floor(r), c = a + 1, h = l + 1, d = e / a, p = t / l, m = [], g = [], v = [], f = []; + for (let u = 0; u < h; u++) { + const b = u * p - o; + for (let S = 0; S < c; S++) { + const R = S * d - s; + g.push(R, -b, 0), v.push(0, 0, 1), f.push(S / a), f.push(1 - u / l); + } + } + for (let u = 0; u < l; u++) + for (let b = 0; b < a; b++) { + const S = b + c * u, R = b + c * (u + 1), D = b + 1 + c * (u + 1), C = b + 1 + c * u; + m.push(S, R, C), m.push(R, D, C); + } + this.setIndex(m), this.setAttribute("position", new Ht(g, 3)), this.setAttribute("normal", new Ht(v, 3)), this.setAttribute("uv", new Ht(f, 2)); + } + copy(e) { + return super.copy(e), this.parameters = Object.assign({}, e.parameters), this; + } + static fromJSON(e) { + return new us(e.width, e.height, e.widthSegments, e.heightSegments); + } +} +var xc = `#ifdef USE_ALPHAHASH + if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; +#endif`, Mc = `#ifdef USE_ALPHAHASH + const float ALPHA_HASH_SCALE = 0.05; + float hash2D( vec2 value ) { + return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) ); + } + float hash3D( vec3 value ) { + return hash2D( vec2( hash2D( value.xy ), value.z ) ); + } + float getAlphaHashThreshold( vec3 position ) { + float maxDeriv = max( + length( dFdx( position.xyz ) ), + length( dFdy( position.xyz ) ) + ); + float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv ); + vec2 pixScales = vec2( + exp2( floor( log2( pixScale ) ) ), + exp2( ceil( log2( pixScale ) ) ) + ); + vec2 alpha = vec2( + hash3D( floor( pixScales.x * position.xyz ) ), + hash3D( floor( pixScales.y * position.xyz ) ) + ); + float lerpFactor = fract( log2( pixScale ) ); + float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y; + float a = min( lerpFactor, 1.0 - lerpFactor ); + vec3 cases = vec3( + x * x / ( 2.0 * a * ( 1.0 - a ) ), + ( x - 0.5 * a ) / ( 1.0 - a ), + 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) ) + ); + float threshold = ( x < ( 1.0 - a ) ) + ? ( ( x < a ) ? cases.x : cases.y ) + : cases.z; + return clamp( threshold , 1.0e-6, 1.0 ); + } +#endif`, Sc = `#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; +#endif`, Ec = `#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`, yc = `#ifdef USE_ALPHATEST + if ( diffuseColor.a < alphaTest ) discard; +#endif`, Tc = `#ifdef USE_ALPHATEST + uniform float alphaTest; +#endif`, bc = `#ifdef USE_AOMAP + float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; + reflectedLight.indirectDiffuse *= ambientOcclusion; + #if defined( USE_CLEARCOAT ) + clearcoatSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_SHEEN ) + sheenSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) + float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); + reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); + #endif +#endif`, Ac = `#ifdef USE_AOMAP + uniform sampler2D aoMap; + uniform float aoMapIntensity; +#endif`, wc = `#ifdef USE_BATCHING + attribute float batchId; + uniform highp sampler2D batchingTexture; + mat4 getBatchingMatrix( const in float i ) { + int size = textureSize( batchingTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`, Rc = `#ifdef USE_BATCHING + mat4 batchingMatrix = getBatchingMatrix( batchId ); +#endif`, Cc = `vec3 transformed = vec3( position ); +#ifdef USE_ALPHAHASH + vPosition = vec3( position ); +#endif`, Lc = `vec3 objectNormal = vec3( normal ); +#ifdef USE_TANGENT + vec3 objectTangent = vec3( tangent.xyz ); +#endif`, Pc = `float G_BlinnPhong_Implicit( ) { + return 0.25; +} +float D_BlinnPhong( const in float shininess, const in float dotNH ) { + return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); +} +vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( specularColor, 1.0, dotVH ); + float G = G_BlinnPhong_Implicit( ); + float D = D_BlinnPhong( shininess, dotNH ); + return F * ( G * D ); +} // validated`, Dc = `#ifdef USE_IRIDESCENCE + const mat3 XYZ_TO_REC709 = mat3( + 3.2404542, -0.9692660, 0.0556434, + -1.5371385, 1.8760108, -0.2040259, + -0.4985314, 0.0415560, 1.0572252 + ); + vec3 Fresnel0ToIor( vec3 fresnel0 ) { + vec3 sqrtF0 = sqrt( fresnel0 ); + return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 ); + } + vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) ); + } + float IorToFresnel0( float transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor )); + } + vec3 evalSensitivity( float OPD, vec3 shift ) { + float phase = 2.0 * PI * OPD * 1.0e-9; + vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 ); + vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 ); + vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 ); + vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var ); + xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) ); + xyz /= 1.0685e-7; + vec3 rgb = XYZ_TO_REC709 * xyz; + return rgb; + } + vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) { + vec3 I; + float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) ); + float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) ); + float cosTheta2Sq = 1.0 - sinTheta2Sq; + if ( cosTheta2Sq < 0.0 ) { + return vec3( 1.0 ); + } + float cosTheta2 = sqrt( cosTheta2Sq ); + float R0 = IorToFresnel0( iridescenceIOR, outsideIOR ); + float R12 = F_Schlick( R0, 1.0, cosTheta1 ); + float T121 = 1.0 - R12; + float phi12 = 0.0; + if ( iridescenceIOR < outsideIOR ) phi12 = PI; + float phi21 = PI - phi12; + vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR ); + vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 ); + vec3 phi23 = vec3( 0.0 ); + if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI; + if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI; + if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI; + float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2; + vec3 phi = vec3( phi21 ) + phi23; + vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 ); + vec3 r123 = sqrt( R123 ); + vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 ); + vec3 C0 = R12 + Rs; + I = C0; + vec3 Cm = Rs - T121; + for ( int m = 1; m <= 2; ++ m ) { + Cm *= r123; + vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi ); + I += Cm * Sm; + } + return max( I, vec3( 0.0 ) ); + } +#endif`, Uc = `#ifdef USE_BUMPMAP + uniform sampler2D bumpMap; + uniform float bumpScale; + vec2 dHdxy_fwd() { + vec2 dSTdx = dFdx( vBumpMapUv ); + vec2 dSTdy = dFdy( vBumpMapUv ); + float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x; + float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll; + float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll; + return vec2( dBx, dBy ); + } + vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { + vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) ); + vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) ); + vec3 vN = surf_norm; + vec3 R1 = cross( vSigmaY, vN ); + vec3 R2 = cross( vN, vSigmaX ); + float fDet = dot( vSigmaX, R1 ) * faceDirection; + vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); + return normalize( abs( fDet ) * surf_norm - vGrad ); + } +#endif`, Ic = `#if NUM_CLIPPING_PLANES > 0 + vec4 plane; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif +#endif`, Nc = `#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`, Fc = `#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`, Oc = `#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`, Bc = `#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`, zc = `#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`, Gc = `#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + varying vec3 vColor; +#endif`, Hc = `#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif`, Vc = `#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +float luminance( const in vec3 rgb ) { + const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 ); + return dot( weights, rgb ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`, kc = `#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`, Wc = `vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`, Xc = `#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`, qc = `#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`, Yc = `#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`, jc = `#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`, Kc = "gl_FragColor = linearToOutputTexel( gl_FragColor );", Zc = ` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +} +vec4 LinearToLinear( in vec4 value ) { + return value; +} +vec4 LinearTosRGB( in vec4 value ) { + return sRGBTransferOETF( value ); +}`, $c = `#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`, Jc = `#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`, Qc = `#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`, eu = `#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`, tu = `#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`, nu = `#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`, iu = `#ifdef USE_FOG + varying float vFogDepth; +#endif`, ru = `#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`, su = `#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`, au = `#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`, ou = `#ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + reflectedLight.indirectDiffuse += lightMapIrradiance; +#endif`, lu = `#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`, cu = `LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`, uu = `varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`, hu = `uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + #if defined ( LEGACY_LIGHTS ) + if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) { + return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent ); + } + return 1.0; + #else + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; + #endif +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`, du = `#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`, fu = `ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`, pu = `varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`, mu = `BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`, _u = `varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`, gu = `PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`, vu = `struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`, xu = ` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`, Mu = `#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`, Su = `#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`, Eu = `#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`, yu = `#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`, Tu = `#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + varying float vFragDepth; + varying float vIsPerspective; + #else + uniform float logDepthBufFC; + #endif +#endif`, bu = `#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); + #else + if ( isPerspectiveMatrix( projectionMatrix ) ) { + gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0; + gl_Position.z *= gl_Position.w; + } + #endif +#endif`, Au = `#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`, wu = `#ifdef USE_MAP + uniform sampler2D map; +#endif`, Ru = `#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`, Cu = `#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`, Lu = `float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`, Pu = `#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`, Du = `#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`, Uu = `#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } + #else + objectNormal += morphNormal0 * morphTargetInfluences[ 0 ]; + objectNormal += morphNormal1 * morphTargetInfluences[ 1 ]; + objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; + objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; + #endif +#endif`, Iu = `#ifdef USE_MORPHTARGETS + uniform float morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } + #else + #ifndef USE_MORPHNORMALS + uniform float morphTargetInfluences[ 8 ]; + #else + uniform float morphTargetInfluences[ 4 ]; + #endif + #endif +#endif`, Nu = `#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } + #else + transformed += morphTarget0 * morphTargetInfluences[ 0 ]; + transformed += morphTarget1 * morphTargetInfluences[ 1 ]; + transformed += morphTarget2 * morphTargetInfluences[ 2 ]; + transformed += morphTarget3 * morphTargetInfluences[ 3 ]; + #ifndef USE_MORPHNORMALS + transformed += morphTarget4 * morphTargetInfluences[ 4 ]; + transformed += morphTarget5 * morphTargetInfluences[ 5 ]; + transformed += morphTarget6 * morphTargetInfluences[ 6 ]; + transformed += morphTarget7 * morphTargetInfluences[ 7 ]; + #endif + #endif +#endif`, Fu = `float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`, Ou = `#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`, Bu = `#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`, zu = `#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`, Gu = `#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`, Hu = `#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`, Vu = `#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`, ku = `#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`, Wu = `#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`, Xu = `#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`, qu = `#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`, Yu = `vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; +const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); +const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); +const float ShiftRight8 = 1. / 256.; +vec4 packDepthToRGBA( const in float v ) { + vec4 r = vec4( fract( v * PackFactors ), v ); + r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors ); +} +vec2 packDepthToRG( in highp float v ) { + return packDepthToRGBA( v ).yx; +} +float unpackRGToDepth( const in highp vec2 v ) { + return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) ); +} +vec4 pack2HalfToRGBA( vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`, ju = `#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`, Ku = `vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`, Zu = `#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`, $u = `#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`, Ju = `float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`, Qu = `#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`, eh = `#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return shadow; + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + vec3 lightToPosition = shadowCoord.xyz; + float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + return ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } +#endif`, th = `#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`, nh = `#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`, ih = `float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`, rh = `#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`, sh = `#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`, ah = `#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`, oh = `#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`, lh = `float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`, ch = `#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`, uh = `#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`, hh = `#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 OptimizedCineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color *= toneMappingExposure; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + return color; +} +vec3 CustomToneMapping( vec3 color ) { return color; }`, dh = `#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`, fh = `#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + vec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`, ph = `#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`, mh = `#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`, _h = `#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`, gh = `#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`; +const vh = `varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`, xh = `uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`, Mh = `varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`, Sh = `#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`, Eh = `varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`, yh = `uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`, Th = `#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`, bh = `#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + vec4 diffuseColor = vec4( 1.0 ); + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #endif +}`, Ah = `#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`, wh = `#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + #include + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`, Rh = `varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`, Ch = `uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`, Lh = `uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`, Ph = `uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`, Dh = `#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`, Uh = `uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`, Ih = `#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`, Nh = `#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`, Fh = `#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`, Oh = `#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`, Bh = `#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`, zh = `#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), opacity ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`, Gh = `#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`, Hh = `#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`, Vh = `#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`, kh = `#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`, Wh = `#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`, Xh = `#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`, qh = `uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`, Yh = `uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`, jh = `#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`, Kh = `uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`, Zh = `uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`, $h = `uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`, Be = { + alphahash_fragment: xc, + alphahash_pars_fragment: Mc, + alphamap_fragment: Sc, + alphamap_pars_fragment: Ec, + alphatest_fragment: yc, + alphatest_pars_fragment: Tc, + aomap_fragment: bc, + aomap_pars_fragment: Ac, + batching_pars_vertex: wc, + batching_vertex: Rc, + begin_vertex: Cc, + beginnormal_vertex: Lc, + bsdfs: Pc, + iridescence_fragment: Dc, + bumpmap_pars_fragment: Uc, + clipping_planes_fragment: Ic, + clipping_planes_pars_fragment: Nc, + clipping_planes_pars_vertex: Fc, + clipping_planes_vertex: Oc, + color_fragment: Bc, + color_pars_fragment: zc, + color_pars_vertex: Gc, + color_vertex: Hc, + common: Vc, + cube_uv_reflection_fragment: kc, + defaultnormal_vertex: Wc, + displacementmap_pars_vertex: Xc, + displacementmap_vertex: qc, + emissivemap_fragment: Yc, + emissivemap_pars_fragment: jc, + colorspace_fragment: Kc, + colorspace_pars_fragment: Zc, + envmap_fragment: $c, + envmap_common_pars_fragment: Jc, + envmap_pars_fragment: Qc, + envmap_pars_vertex: eu, + envmap_physical_pars_fragment: du, + envmap_vertex: tu, + fog_vertex: nu, + fog_pars_vertex: iu, + fog_fragment: ru, + fog_pars_fragment: su, + gradientmap_pars_fragment: au, + lightmap_fragment: ou, + lightmap_pars_fragment: lu, + lights_lambert_fragment: cu, + lights_lambert_pars_fragment: uu, + lights_pars_begin: hu, + lights_toon_fragment: fu, + lights_toon_pars_fragment: pu, + lights_phong_fragment: mu, + lights_phong_pars_fragment: _u, + lights_physical_fragment: gu, + lights_physical_pars_fragment: vu, + lights_fragment_begin: xu, + lights_fragment_maps: Mu, + lights_fragment_end: Su, + logdepthbuf_fragment: Eu, + logdepthbuf_pars_fragment: yu, + logdepthbuf_pars_vertex: Tu, + logdepthbuf_vertex: bu, + map_fragment: Au, + map_pars_fragment: wu, + map_particle_fragment: Ru, + map_particle_pars_fragment: Cu, + metalnessmap_fragment: Lu, + metalnessmap_pars_fragment: Pu, + morphcolor_vertex: Du, + morphnormal_vertex: Uu, + morphtarget_pars_vertex: Iu, + morphtarget_vertex: Nu, + normal_fragment_begin: Fu, + normal_fragment_maps: Ou, + normal_pars_fragment: Bu, + normal_pars_vertex: zu, + normal_vertex: Gu, + normalmap_pars_fragment: Hu, + clearcoat_normal_fragment_begin: Vu, + clearcoat_normal_fragment_maps: ku, + clearcoat_pars_fragment: Wu, + iridescence_pars_fragment: Xu, + opaque_fragment: qu, + packing: Yu, + premultiplied_alpha_fragment: ju, + project_vertex: Ku, + dithering_fragment: Zu, + dithering_pars_fragment: $u, + roughnessmap_fragment: Ju, + roughnessmap_pars_fragment: Qu, + shadowmap_pars_fragment: eh, + shadowmap_pars_vertex: th, + shadowmap_vertex: nh, + shadowmask_pars_fragment: ih, + skinbase_vertex: rh, + skinning_pars_vertex: sh, + skinning_vertex: ah, + skinnormal_vertex: oh, + specularmap_fragment: lh, + specularmap_pars_fragment: ch, + tonemapping_fragment: uh, + tonemapping_pars_fragment: hh, + transmission_fragment: dh, + transmission_pars_fragment: fh, + uv_pars_fragment: ph, + uv_pars_vertex: mh, + uv_vertex: _h, + worldpos_vertex: gh, + background_vert: vh, + background_frag: xh, + backgroundCube_vert: Mh, + backgroundCube_frag: Sh, + cube_vert: Eh, + cube_frag: yh, + depth_vert: Th, + depth_frag: bh, + distanceRGBA_vert: Ah, + distanceRGBA_frag: wh, + equirect_vert: Rh, + equirect_frag: Ch, + linedashed_vert: Lh, + linedashed_frag: Ph, + meshbasic_vert: Dh, + meshbasic_frag: Uh, + meshlambert_vert: Ih, + meshlambert_frag: Nh, + meshmatcap_vert: Fh, + meshmatcap_frag: Oh, + meshnormal_vert: Bh, + meshnormal_frag: zh, + meshphong_vert: Gh, + meshphong_frag: Hh, + meshphysical_vert: Vh, + meshphysical_frag: kh, + meshtoon_vert: Wh, + meshtoon_frag: Xh, + points_vert: qh, + points_frag: Yh, + shadow_vert: jh, + shadow_frag: Kh, + sprite_vert: Zh, + sprite_frag: $h +}, se = { + common: { + diffuse: { value: /* @__PURE__ */ new Xe(16777215) }, + opacity: { value: 1 }, + map: { value: null }, + mapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaTest: { value: 0 } + }, + specularmap: { + specularMap: { value: null }, + specularMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + envmap: { + envMap: { value: null }, + flipEnvMap: { value: -1 }, + reflectivity: { value: 1 }, + // basic, lambert, phong + ior: { value: 1.5 }, + // physical + refractionRatio: { value: 0.98 } + // basic, lambert, phong + }, + aomap: { + aoMap: { value: null }, + aoMapIntensity: { value: 1 }, + aoMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + lightmap: { + lightMap: { value: null }, + lightMapIntensity: { value: 1 }, + lightMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + bumpmap: { + bumpMap: { value: null }, + bumpMapTransform: { value: /* @__PURE__ */ new Ve() }, + bumpScale: { value: 1 } + }, + normalmap: { + normalMap: { value: null }, + normalMapTransform: { value: /* @__PURE__ */ new Ve() }, + normalScale: { value: /* @__PURE__ */ new Ie(1, 1) } + }, + displacementmap: { + displacementMap: { value: null }, + displacementMapTransform: { value: /* @__PURE__ */ new Ve() }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 } + }, + emissivemap: { + emissiveMap: { value: null }, + emissiveMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + metalnessmap: { + metalnessMap: { value: null }, + metalnessMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + roughnessmap: { + roughnessMap: { value: null }, + roughnessMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + gradientmap: { + gradientMap: { value: null } + }, + fog: { + fogDensity: { value: 25e-5 }, + fogNear: { value: 1 }, + fogFar: { value: 2e3 }, + fogColor: { value: /* @__PURE__ */ new Xe(16777215) } + }, + lights: { + ambientLightColor: { value: [] }, + lightProbe: { value: [] }, + directionalLights: { value: [], properties: { + direction: {}, + color: {} + } }, + directionalLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + directionalShadowMap: { value: [] }, + directionalShadowMatrix: { value: [] }, + spotLights: { value: [], properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {} + } }, + spotLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + spotLightMap: { value: [] }, + spotShadowMap: { value: [] }, + spotLightMatrix: { value: [] }, + pointLights: { value: [], properties: { + color: {}, + position: {}, + decay: {}, + distance: {} + } }, + pointLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {} + } }, + pointShadowMap: { value: [] }, + pointShadowMatrix: { value: [] }, + hemisphereLights: { value: [], properties: { + direction: {}, + skyColor: {}, + groundColor: {} + } }, + // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src + rectAreaLights: { value: [], properties: { + color: {}, + position: {}, + width: {}, + height: {} + } }, + ltc_1: { value: null }, + ltc_2: { value: null } + }, + points: { + diffuse: { value: /* @__PURE__ */ new Xe(16777215) }, + opacity: { value: 1 }, + size: { value: 1 }, + scale: { value: 1 }, + map: { value: null }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaTest: { value: 0 }, + uvTransform: { value: /* @__PURE__ */ new Ve() } + }, + sprite: { + diffuse: { value: /* @__PURE__ */ new Xe(16777215) }, + opacity: { value: 1 }, + center: { value: /* @__PURE__ */ new Ie(0.5, 0.5) }, + rotation: { value: 0 }, + map: { value: null }, + mapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaTest: { value: 0 } + } +}, Gt = { + basic: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.specularmap, + se.envmap, + se.aomap, + se.lightmap, + se.fog + ]), + vertexShader: Be.meshbasic_vert, + fragmentShader: Be.meshbasic_frag + }, + lambert: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.specularmap, + se.envmap, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) } + } + ]), + vertexShader: Be.meshlambert_vert, + fragmentShader: Be.meshlambert_frag + }, + phong: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.specularmap, + se.envmap, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) }, + specular: { value: /* @__PURE__ */ new Xe(1118481) }, + shininess: { value: 30 } + } + ]), + vertexShader: Be.meshphong_vert, + fragmentShader: Be.meshphong_frag + }, + standard: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.envmap, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.roughnessmap, + se.metalnessmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) }, + roughness: { value: 1 }, + metalness: { value: 0 }, + envMapIntensity: { value: 1 } + // temporary + } + ]), + vertexShader: Be.meshphysical_vert, + fragmentShader: Be.meshphysical_frag + }, + toon: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.gradientmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) } + } + ]), + vertexShader: Be.meshtoon_vert, + fragmentShader: Be.meshtoon_frag + }, + matcap: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.fog, + { + matcap: { value: null } + } + ]), + vertexShader: Be.meshmatcap_vert, + fragmentShader: Be.meshmatcap_frag + }, + points: { + uniforms: /* @__PURE__ */ _t([ + se.points, + se.fog + ]), + vertexShader: Be.points_vert, + fragmentShader: Be.points_frag + }, + dashed: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.fog, + { + scale: { value: 1 }, + dashSize: { value: 1 }, + totalSize: { value: 2 } + } + ]), + vertexShader: Be.linedashed_vert, + fragmentShader: Be.linedashed_frag + }, + depth: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.displacementmap + ]), + vertexShader: Be.depth_vert, + fragmentShader: Be.depth_frag + }, + normal: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.bumpmap, + se.normalmap, + se.displacementmap, + { + opacity: { value: 1 } + } + ]), + vertexShader: Be.meshnormal_vert, + fragmentShader: Be.meshnormal_frag + }, + sprite: { + uniforms: /* @__PURE__ */ _t([ + se.sprite, + se.fog + ]), + vertexShader: Be.sprite_vert, + fragmentShader: Be.sprite_frag + }, + background: { + uniforms: { + uvTransform: { value: /* @__PURE__ */ new Ve() }, + t2D: { value: null }, + backgroundIntensity: { value: 1 } + }, + vertexShader: Be.background_vert, + fragmentShader: Be.background_frag + }, + backgroundCube: { + uniforms: { + envMap: { value: null }, + flipEnvMap: { value: -1 }, + backgroundBlurriness: { value: 0 }, + backgroundIntensity: { value: 1 } + }, + vertexShader: Be.backgroundCube_vert, + fragmentShader: Be.backgroundCube_frag + }, + cube: { + uniforms: { + tCube: { value: null }, + tFlip: { value: -1 }, + opacity: { value: 1 } + }, + vertexShader: Be.cube_vert, + fragmentShader: Be.cube_frag + }, + equirect: { + uniforms: { + tEquirect: { value: null } + }, + vertexShader: Be.equirect_vert, + fragmentShader: Be.equirect_frag + }, + distanceRGBA: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.displacementmap, + { + referencePosition: { value: /* @__PURE__ */ new P() }, + nearDistance: { value: 1 }, + farDistance: { value: 1e3 } + } + ]), + vertexShader: Be.distanceRGBA_vert, + fragmentShader: Be.distanceRGBA_frag + }, + shadow: { + uniforms: /* @__PURE__ */ _t([ + se.lights, + se.fog, + { + color: { value: /* @__PURE__ */ new Xe(0) }, + opacity: { value: 1 } + } + ]), + vertexShader: Be.shadow_vert, + fragmentShader: Be.shadow_frag + } +}; +Gt.physical = { + uniforms: /* @__PURE__ */ _t([ + Gt.standard.uniforms, + { + clearcoat: { value: 0 }, + clearcoatMap: { value: null }, + clearcoatMapTransform: { value: /* @__PURE__ */ new Ve() }, + clearcoatNormalMap: { value: null }, + clearcoatNormalMapTransform: { value: /* @__PURE__ */ new Ve() }, + clearcoatNormalScale: { value: /* @__PURE__ */ new Ie(1, 1) }, + clearcoatRoughness: { value: 0 }, + clearcoatRoughnessMap: { value: null }, + clearcoatRoughnessMapTransform: { value: /* @__PURE__ */ new Ve() }, + iridescence: { value: 0 }, + iridescenceMap: { value: null }, + iridescenceMapTransform: { value: /* @__PURE__ */ new Ve() }, + iridescenceIOR: { value: 1.3 }, + iridescenceThicknessMinimum: { value: 100 }, + iridescenceThicknessMaximum: { value: 400 }, + iridescenceThicknessMap: { value: null }, + iridescenceThicknessMapTransform: { value: /* @__PURE__ */ new Ve() }, + sheen: { value: 0 }, + sheenColor: { value: /* @__PURE__ */ new Xe(0) }, + sheenColorMap: { value: null }, + sheenColorMapTransform: { value: /* @__PURE__ */ new Ve() }, + sheenRoughness: { value: 1 }, + sheenRoughnessMap: { value: null }, + sheenRoughnessMapTransform: { value: /* @__PURE__ */ new Ve() }, + transmission: { value: 0 }, + transmissionMap: { value: null }, + transmissionMapTransform: { value: /* @__PURE__ */ new Ve() }, + transmissionSamplerSize: { value: /* @__PURE__ */ new Ie() }, + transmissionSamplerMap: { value: null }, + thickness: { value: 0 }, + thicknessMap: { value: null }, + thicknessMapTransform: { value: /* @__PURE__ */ new Ve() }, + attenuationDistance: { value: 0 }, + attenuationColor: { value: /* @__PURE__ */ new Xe(0) }, + specularColor: { value: /* @__PURE__ */ new Xe(1, 1, 1) }, + specularColorMap: { value: null }, + specularColorMapTransform: { value: /* @__PURE__ */ new Ve() }, + specularIntensity: { value: 1 }, + specularIntensityMap: { value: null }, + specularIntensityMapTransform: { value: /* @__PURE__ */ new Ve() }, + anisotropyVector: { value: /* @__PURE__ */ new Ie() }, + anisotropyMap: { value: null }, + anisotropyMapTransform: { value: /* @__PURE__ */ new Ve() } + } + ]), + vertexShader: Be.meshphysical_vert, + fragmentShader: Be.meshphysical_frag +}; +const Wi = { r: 0, b: 0, g: 0 }; +function Jh(i, e, t, n, r, s, o) { + const a = new Xe(0); + let l = s === !0 ? 0 : 1, c, h, d = null, p = 0, m = null; + function g(f, u) { + let b = !1, S = u.isScene === !0 ? u.background : null; + S && S.isTexture && (S = (u.backgroundBlurriness > 0 ? t : e).get(S)), S === null ? v(a, l) : S && S.isColor && (v(S, 1), b = !0); + const R = i.xr.getEnvironmentBlendMode(); + R === "additive" ? n.buffers.color.setClear(0, 0, 0, 1, o) : R === "alpha-blend" && n.buffers.color.setClear(0, 0, 0, 0, o), (i.autoClear || b) && i.clear(i.autoClearColor, i.autoClearDepth, i.autoClearStencil), S && (S.isCubeTexture || S.mapping === rr) ? (h === void 0 && (h = new Ot( + new ii(1, 1, 1), + new wn({ + name: "BackgroundCubeMaterial", + uniforms: ni(Gt.backgroundCube.uniforms), + vertexShader: Gt.backgroundCube.vertexShader, + fragmentShader: Gt.backgroundCube.fragmentShader, + side: Mt, + depthTest: !1, + depthWrite: !1, + fog: !1 + }) + ), h.geometry.deleteAttribute("normal"), h.geometry.deleteAttribute("uv"), h.onBeforeRender = function(D, C, A) { + this.matrixWorld.copyPosition(A.matrixWorld); + }, Object.defineProperty(h.material, "envMap", { + get: function() { + return this.uniforms.envMap.value; + } + }), r.update(h)), h.material.uniforms.envMap.value = S, h.material.uniforms.flipEnvMap.value = S.isCubeTexture && S.isRenderTargetTexture === !1 ? -1 : 1, h.material.uniforms.backgroundBlurriness.value = u.backgroundBlurriness, h.material.uniforms.backgroundIntensity.value = u.backgroundIntensity, h.material.toneMapped = Ke.getTransfer(S.colorSpace) !== Ze, (d !== S || p !== S.version || m !== i.toneMapping) && (h.material.needsUpdate = !0, d = S, p = S.version, m = i.toneMapping), h.layers.enableAll(), f.unshift(h, h.geometry, h.material, 0, 0, null)) : S && S.isTexture && (c === void 0 && (c = new Ot( + new us(2, 2), + new wn({ + name: "BackgroundMaterial", + uniforms: ni(Gt.background.uniforms), + vertexShader: Gt.background.vertexShader, + fragmentShader: Gt.background.fragmentShader, + side: un, + depthTest: !1, + depthWrite: !1, + fog: !1 + }) + ), c.geometry.deleteAttribute("normal"), Object.defineProperty(c.material, "map", { + get: function() { + return this.uniforms.t2D.value; + } + }), r.update(c)), c.material.uniforms.t2D.value = S, c.material.uniforms.backgroundIntensity.value = u.backgroundIntensity, c.material.toneMapped = Ke.getTransfer(S.colorSpace) !== Ze, S.matrixAutoUpdate === !0 && S.updateMatrix(), c.material.uniforms.uvTransform.value.copy(S.matrix), (d !== S || p !== S.version || m !== i.toneMapping) && (c.material.needsUpdate = !0, d = S, p = S.version, m = i.toneMapping), c.layers.enableAll(), f.unshift(c, c.geometry, c.material, 0, 0, null)); + } + function v(f, u) { + f.getRGB(Wi, Co(i)), n.buffers.color.setClear(Wi.r, Wi.g, Wi.b, u, o); + } + return { + getClearColor: function() { + return a; + }, + setClearColor: function(f, u = 1) { + a.set(f), l = u, v(a, l); + }, + getClearAlpha: function() { + return l; + }, + setClearAlpha: function(f) { + l = f, v(a, l); + }, + render: g + }; +} +function Qh(i, e, t, n) { + const r = i.getParameter(i.MAX_VERTEX_ATTRIBS), s = n.isWebGL2 ? null : e.get("OES_vertex_array_object"), o = n.isWebGL2 || s !== null, a = {}, l = f(null); + let c = l, h = !1; + function d(L, F, V, Y, X) { + let k = !1; + if (o) { + const q = v(Y, V, F); + c !== q && (c = q, m(c.object)), k = u(L, Y, V, X), k && b(L, Y, V, X); + } else { + const q = F.wireframe === !0; + (c.geometry !== Y.id || c.program !== V.id || c.wireframe !== q) && (c.geometry = Y.id, c.program = V.id, c.wireframe = q, k = !0); + } + X !== null && t.update(X, i.ELEMENT_ARRAY_BUFFER), (k || h) && (h = !1, W(L, F, V, Y), X !== null && i.bindBuffer(i.ELEMENT_ARRAY_BUFFER, t.get(X).buffer)); + } + function p() { + return n.isWebGL2 ? i.createVertexArray() : s.createVertexArrayOES(); + } + function m(L) { + return n.isWebGL2 ? i.bindVertexArray(L) : s.bindVertexArrayOES(L); + } + function g(L) { + return n.isWebGL2 ? i.deleteVertexArray(L) : s.deleteVertexArrayOES(L); + } + function v(L, F, V) { + const Y = V.wireframe === !0; + let X = a[L.id]; + X === void 0 && (X = {}, a[L.id] = X); + let k = X[F.id]; + k === void 0 && (k = {}, X[F.id] = k); + let q = k[Y]; + return q === void 0 && (q = f(p()), k[Y] = q), q; + } + function f(L) { + const F = [], V = [], Y = []; + for (let X = 0; X < r; X++) + F[X] = 0, V[X] = 0, Y[X] = 0; + return { + // for backward compatibility on non-VAO support browser + geometry: null, + program: null, + wireframe: !1, + newAttributes: F, + enabledAttributes: V, + attributeDivisors: Y, + object: L, + attributes: {}, + index: null + }; + } + function u(L, F, V, Y) { + const X = c.attributes, k = F.attributes; + let q = 0; + const Q = V.getAttributes(); + for (const ce in Q) + if (Q[ce].location >= 0) { + const j = X[ce]; + let oe = k[ce]; + if (oe === void 0 && (ce === "instanceMatrix" && L.instanceMatrix && (oe = L.instanceMatrix), ce === "instanceColor" && L.instanceColor && (oe = L.instanceColor)), j === void 0 || j.attribute !== oe || oe && j.data !== oe.data) return !0; + q++; + } + return c.attributesNum !== q || c.index !== Y; + } + function b(L, F, V, Y) { + const X = {}, k = F.attributes; + let q = 0; + const Q = V.getAttributes(); + for (const ce in Q) + if (Q[ce].location >= 0) { + let j = k[ce]; + j === void 0 && (ce === "instanceMatrix" && L.instanceMatrix && (j = L.instanceMatrix), ce === "instanceColor" && L.instanceColor && (j = L.instanceColor)); + const oe = {}; + oe.attribute = j, j && j.data && (oe.data = j.data), X[ce] = oe, q++; + } + c.attributes = X, c.attributesNum = q, c.index = Y; + } + function S() { + const L = c.newAttributes; + for (let F = 0, V = L.length; F < V; F++) + L[F] = 0; + } + function R(L) { + D(L, 0); + } + function D(L, F) { + const V = c.newAttributes, Y = c.enabledAttributes, X = c.attributeDivisors; + V[L] = 1, Y[L] === 0 && (i.enableVertexAttribArray(L), Y[L] = 1), X[L] !== F && ((n.isWebGL2 ? i : e.get("ANGLE_instanced_arrays"))[n.isWebGL2 ? "vertexAttribDivisor" : "vertexAttribDivisorANGLE"](L, F), X[L] = F); + } + function C() { + const L = c.newAttributes, F = c.enabledAttributes; + for (let V = 0, Y = F.length; V < Y; V++) + F[V] !== L[V] && (i.disableVertexAttribArray(V), F[V] = 0); + } + function A(L, F, V, Y, X, k, q) { + q === !0 ? i.vertexAttribIPointer(L, F, V, X, k) : i.vertexAttribPointer(L, F, V, Y, X, k); + } + function W(L, F, V, Y) { + if (n.isWebGL2 === !1 && (L.isInstancedMesh || Y.isInstancedBufferGeometry) && e.get("ANGLE_instanced_arrays") === null) + return; + S(); + const X = Y.attributes, k = V.getAttributes(), q = F.defaultAttributeValues; + for (const Q in k) { + const ce = k[Q]; + if (ce.location >= 0) { + let H = X[Q]; + if (H === void 0 && (Q === "instanceMatrix" && L.instanceMatrix && (H = L.instanceMatrix), Q === "instanceColor" && L.instanceColor && (H = L.instanceColor)), H !== void 0) { + const j = H.normalized, oe = H.itemSize, ve = t.get(H); + if (ve === void 0) continue; + const _e = ve.buffer, we = ve.type, Ae = ve.bytesPerElement, ge = n.isWebGL2 === !0 && (we === i.INT || we === i.UNSIGNED_INT || H.gpuType === co); + if (H.isInterleavedBufferAttribute) { + const Pe = H.data, N = Pe.stride, rt = H.offset; + if (Pe.isInstancedInterleavedBuffer) { + for (let Me = 0; Me < ce.locationSize; Me++) + D(ce.location + Me, Pe.meshPerAttribute); + L.isInstancedMesh !== !0 && Y._maxInstanceCount === void 0 && (Y._maxInstanceCount = Pe.meshPerAttribute * Pe.count); + } else + for (let Me = 0; Me < ce.locationSize; Me++) + R(ce.location + Me); + i.bindBuffer(i.ARRAY_BUFFER, _e); + for (let Me = 0; Me < ce.locationSize; Me++) + A( + ce.location + Me, + oe / ce.locationSize, + we, + j, + N * Ae, + (rt + oe / ce.locationSize * Me) * Ae, + ge + ); + } else { + if (H.isInstancedBufferAttribute) { + for (let Pe = 0; Pe < ce.locationSize; Pe++) + D(ce.location + Pe, H.meshPerAttribute); + L.isInstancedMesh !== !0 && Y._maxInstanceCount === void 0 && (Y._maxInstanceCount = H.meshPerAttribute * H.count); + } else + for (let Pe = 0; Pe < ce.locationSize; Pe++) + R(ce.location + Pe); + i.bindBuffer(i.ARRAY_BUFFER, _e); + for (let Pe = 0; Pe < ce.locationSize; Pe++) + A( + ce.location + Pe, + oe / ce.locationSize, + we, + j, + oe * Ae, + oe / ce.locationSize * Pe * Ae, + ge + ); + } + } else if (q !== void 0) { + const j = q[Q]; + if (j !== void 0) + switch (j.length) { + case 2: + i.vertexAttrib2fv(ce.location, j); + break; + case 3: + i.vertexAttrib3fv(ce.location, j); + break; + case 4: + i.vertexAttrib4fv(ce.location, j); + break; + default: + i.vertexAttrib1fv(ce.location, j); + } + } + } + } + C(); + } + function x() { + Z(); + for (const L in a) { + const F = a[L]; + for (const V in F) { + const Y = F[V]; + for (const X in Y) + g(Y[X].object), delete Y[X]; + delete F[V]; + } + delete a[L]; + } + } + function y(L) { + if (a[L.id] === void 0) return; + const F = a[L.id]; + for (const V in F) { + const Y = F[V]; + for (const X in Y) + g(Y[X].object), delete Y[X]; + delete F[V]; + } + delete a[L.id]; + } + function z(L) { + for (const F in a) { + const V = a[F]; + if (V[L.id] === void 0) continue; + const Y = V[L.id]; + for (const X in Y) + g(Y[X].object), delete Y[X]; + delete V[L.id]; + } + } + function Z() { + re(), h = !0, c !== l && (c = l, m(c.object)); + } + function re() { + l.geometry = null, l.program = null, l.wireframe = !1; + } + return { + setup: d, + reset: Z, + resetDefaultState: re, + dispose: x, + releaseStatesOfGeometry: y, + releaseStatesOfProgram: z, + initAttributes: S, + enableAttribute: R, + disableUnusedAttributes: C + }; +} +function ed(i, e, t, n) { + const r = n.isWebGL2; + let s; + function o(h) { + s = h; + } + function a(h, d) { + i.drawArrays(s, h, d), t.update(d, s, 1); + } + function l(h, d, p) { + if (p === 0) return; + let m, g; + if (r) + m = i, g = "drawArraysInstanced"; + else if (m = e.get("ANGLE_instanced_arrays"), g = "drawArraysInstancedANGLE", m === null) { + console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."); + return; + } + m[g](s, h, d, p), t.update(d, s, p); + } + function c(h, d, p) { + if (p === 0) return; + const m = e.get("WEBGL_multi_draw"); + if (m === null) + for (let g = 0; g < p; g++) + this.render(h[g], d[g]); + else { + m.multiDrawArraysWEBGL(s, h, 0, d, 0, p); + let g = 0; + for (let v = 0; v < p; v++) + g += d[v]; + t.update(g, s, 1); + } + } + this.setMode = o, this.render = a, this.renderInstances = l, this.renderMultiDraw = c; +} +function td(i, e, t) { + let n; + function r() { + if (n !== void 0) return n; + if (e.has("EXT_texture_filter_anisotropic") === !0) { + const A = e.get("EXT_texture_filter_anisotropic"); + n = i.getParameter(A.MAX_TEXTURE_MAX_ANISOTROPY_EXT); + } else + n = 0; + return n; + } + function s(A) { + if (A === "highp") { + if (i.getShaderPrecisionFormat(i.VERTEX_SHADER, i.HIGH_FLOAT).precision > 0 && i.getShaderPrecisionFormat(i.FRAGMENT_SHADER, i.HIGH_FLOAT).precision > 0) + return "highp"; + A = "mediump"; + } + return A === "mediump" && i.getShaderPrecisionFormat(i.VERTEX_SHADER, i.MEDIUM_FLOAT).precision > 0 && i.getShaderPrecisionFormat(i.FRAGMENT_SHADER, i.MEDIUM_FLOAT).precision > 0 ? "mediump" : "lowp"; + } + const o = typeof WebGL2RenderingContext < "u" && i.constructor.name === "WebGL2RenderingContext"; + let a = t.precision !== void 0 ? t.precision : "highp"; + const l = s(a); + l !== a && (console.warn("THREE.WebGLRenderer:", a, "not supported, using", l, "instead."), a = l); + const c = o || e.has("WEBGL_draw_buffers"), h = t.logarithmicDepthBuffer === !0, d = i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS), p = i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS), m = i.getParameter(i.MAX_TEXTURE_SIZE), g = i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE), v = i.getParameter(i.MAX_VERTEX_ATTRIBS), f = i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS), u = i.getParameter(i.MAX_VARYING_VECTORS), b = i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS), S = p > 0, R = o || e.has("OES_texture_float"), D = S && R, C = o ? i.getParameter(i.MAX_SAMPLES) : 0; + return { + isWebGL2: o, + drawBuffers: c, + getMaxAnisotropy: r, + getMaxPrecision: s, + precision: a, + logarithmicDepthBuffer: h, + maxTextures: d, + maxVertexTextures: p, + maxTextureSize: m, + maxCubemapSize: g, + maxAttributes: v, + maxVertexUniforms: f, + maxVaryings: u, + maxFragmentUniforms: b, + vertexTextures: S, + floatFragmentTextures: R, + floatVertexTextures: D, + maxSamples: C + }; +} +function nd(i) { + const e = this; + let t = null, n = 0, r = !1, s = !1; + const o = new rn(), a = new Ve(), l = { value: null, needsUpdate: !1 }; + this.uniform = l, this.numPlanes = 0, this.numIntersection = 0, this.init = function(d, p) { + const m = d.length !== 0 || p || // enable state of previous frame - the clipping code has to + // run another frame in order to reset the state: + n !== 0 || r; + return r = p, n = d.length, m; + }, this.beginShadows = function() { + s = !0, h(null); + }, this.endShadows = function() { + s = !1; + }, this.setGlobalState = function(d, p) { + t = h(d, p, 0); + }, this.setState = function(d, p, m) { + const g = d.clippingPlanes, v = d.clipIntersection, f = d.clipShadows, u = i.get(d); + if (!r || g === null || g.length === 0 || s && !f) + s ? h(null) : c(); + else { + const b = s ? 0 : n, S = b * 4; + let R = u.clippingState || null; + l.value = R, R = h(g, p, S, m); + for (let D = 0; D !== S; ++D) + R[D] = t[D]; + u.clippingState = R, this.numIntersection = v ? this.numPlanes : 0, this.numPlanes += b; + } + }; + function c() { + l.value !== t && (l.value = t, l.needsUpdate = n > 0), e.numPlanes = n, e.numIntersection = 0; + } + function h(d, p, m, g) { + const v = d !== null ? d.length : 0; + let f = null; + if (v !== 0) { + if (f = l.value, g !== !0 || f === null) { + const u = m + v * 4, b = p.matrixWorldInverse; + a.getNormalMatrix(b), (f === null || f.length < u) && (f = new Float32Array(u)); + for (let S = 0, R = m; S !== v; ++S, R += 4) + o.copy(d[S]).applyMatrix4(b, a), o.normal.toArray(f, R), f[R + 3] = o.constant; + } + l.value = f, l.needsUpdate = !0; + } + return e.numPlanes = v, e.numIntersection = 0, f; + } +} +function id(i) { + let e = /* @__PURE__ */ new WeakMap(); + function t(o, a) { + return a === $r ? o.mapping = Qn : a === Jr && (o.mapping = ei), o; + } + function n(o) { + if (o && o.isTexture) { + const a = o.mapping; + if (a === $r || a === Jr) + if (e.has(o)) { + const l = e.get(o).texture; + return t(l, o.mapping); + } else { + const l = o.image; + if (l && l.height > 0) { + const c = new mc(l.height / 2); + return c.fromEquirectangularTexture(i, o), e.set(o, c), o.addEventListener("dispose", r), t(c.texture, o.mapping); + } else + return null; + } + } + return o; + } + function r(o) { + const a = o.target; + a.removeEventListener("dispose", r); + const l = e.get(a); + l !== void 0 && (e.delete(a), l.dispose()); + } + function s() { + e = /* @__PURE__ */ new WeakMap(); + } + return { + get: n, + dispose: s + }; +} +class Uo extends Lo { + constructor(e = -1, t = 1, n = 1, r = -1, s = 0.1, o = 2e3) { + super(), this.isOrthographicCamera = !0, this.type = "OrthographicCamera", this.zoom = 1, this.view = null, this.left = e, this.right = t, this.top = n, this.bottom = r, this.near = s, this.far = o, this.updateProjectionMatrix(); + } + copy(e, t) { + return super.copy(e, t), this.left = e.left, this.right = e.right, this.top = e.top, this.bottom = e.bottom, this.near = e.near, this.far = e.far, this.zoom = e.zoom, this.view = e.view === null ? null : Object.assign({}, e.view), this; + } + setViewOffset(e, t, n, r, s, o) { + this.view === null && (this.view = { + enabled: !0, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }), this.view.enabled = !0, this.view.fullWidth = e, this.view.fullHeight = t, this.view.offsetX = n, this.view.offsetY = r, this.view.width = s, this.view.height = o, this.updateProjectionMatrix(); + } + clearViewOffset() { + this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix(); + } + updateProjectionMatrix() { + const e = (this.right - this.left) / (2 * this.zoom), t = (this.top - this.bottom) / (2 * this.zoom), n = (this.right + this.left) / 2, r = (this.top + this.bottom) / 2; + let s = n - e, o = n + e, a = r + t, l = r - t; + if (this.view !== null && this.view.enabled) { + const c = (this.right - this.left) / this.view.fullWidth / this.zoom, h = (this.top - this.bottom) / this.view.fullHeight / this.zoom; + s += c * this.view.offsetX, o = s + c * this.view.width, a -= h * this.view.offsetY, l = a - h * this.view.height; + } + this.projectionMatrix.makeOrthographic(s, o, a, l, this.near, this.far, this.coordinateSystem), this.projectionMatrixInverse.copy(this.projectionMatrix).invert(); + } + toJSON(e) { + const t = super.toJSON(e); + return t.object.zoom = this.zoom, t.object.left = this.left, t.object.right = this.right, t.object.top = this.top, t.object.bottom = this.bottom, t.object.near = this.near, t.object.far = this.far, this.view !== null && (t.object.view = Object.assign({}, this.view)), t; + } +} +const Kn = 4, xa = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582], Sn = 20, Br = /* @__PURE__ */ new Uo(), Ma = /* @__PURE__ */ new Xe(); +let zr = null, Gr = 0, Hr = 0; +const xn = (1 + Math.sqrt(5)) / 2, Yn = 1 / xn, Sa = [ + /* @__PURE__ */ new P(1, 1, 1), + /* @__PURE__ */ new P(-1, 1, 1), + /* @__PURE__ */ new P(1, 1, -1), + /* @__PURE__ */ new P(-1, 1, -1), + /* @__PURE__ */ new P(0, xn, Yn), + /* @__PURE__ */ new P(0, xn, -Yn), + /* @__PURE__ */ new P(Yn, 0, xn), + /* @__PURE__ */ new P(-Yn, 0, xn), + /* @__PURE__ */ new P(xn, Yn, 0), + /* @__PURE__ */ new P(-xn, Yn, 0) +]; +class Ea { + constructor(e) { + this._renderer = e, this._pingPongRenderTarget = null, this._lodMax = 0, this._cubeSize = 0, this._lodPlanes = [], this._sizeLods = [], this._sigmas = [], this._blurMaterial = null, this._cubemapMaterial = null, this._equirectMaterial = null, this._compileMaterial(this._blurMaterial); + } + /** + * Generates a PMREM from a supplied Scene, which can be faster than using an + * image if networking bandwidth is low. Optional sigma specifies a blur radius + * in radians to be applied to the scene before PMREM generation. Optional near + * and far planes ensure the scene is rendered in its entirety (the cubeCamera + * is placed at the origin). + */ + fromScene(e, t = 0, n = 0.1, r = 100) { + zr = this._renderer.getRenderTarget(), Gr = this._renderer.getActiveCubeFace(), Hr = this._renderer.getActiveMipmapLevel(), this._setSize(256); + const s = this._allocateTargets(); + return s.depthBuffer = !0, this._sceneToCubeUV(e, n, r, s), t > 0 && this._blur(s, 0, 0, t), this._applyPMREM(s), this._cleanup(s), s; + } + /** + * Generates a PMREM from an equirectangular texture, which can be either LDR + * or HDR. The ideal input image size is 1k (1024 x 512), + * as this matches best with the 256 x 256 cubemap output. + */ + fromEquirectangular(e, t = null) { + return this._fromTexture(e, t); + } + /** + * Generates a PMREM from an cubemap texture, which can be either LDR + * or HDR. The ideal input cube size is 256 x 256, + * as this matches best with the 256 x 256 cubemap output. + */ + fromCubemap(e, t = null) { + return this._fromTexture(e, t); + } + /** + * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + compileCubemapShader() { + this._cubemapMaterial === null && (this._cubemapMaterial = ba(), this._compileMaterial(this._cubemapMaterial)); + } + /** + * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + compileEquirectangularShader() { + this._equirectMaterial === null && (this._equirectMaterial = Ta(), this._compileMaterial(this._equirectMaterial)); + } + /** + * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class, + * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on + * one of them will cause any others to also become unusable. + */ + dispose() { + this._dispose(), this._cubemapMaterial !== null && this._cubemapMaterial.dispose(), this._equirectMaterial !== null && this._equirectMaterial.dispose(); + } + // private interface + _setSize(e) { + this._lodMax = Math.floor(Math.log2(e)), this._cubeSize = Math.pow(2, this._lodMax); + } + _dispose() { + this._blurMaterial !== null && this._blurMaterial.dispose(), this._pingPongRenderTarget !== null && this._pingPongRenderTarget.dispose(); + for (let e = 0; e < this._lodPlanes.length; e++) + this._lodPlanes[e].dispose(); + } + _cleanup(e) { + this._renderer.setRenderTarget(zr, Gr, Hr), e.scissorTest = !1, Xi(e, 0, 0, e.width, e.height); + } + _fromTexture(e, t) { + e.mapping === Qn || e.mapping === ei ? this._setSize(e.image.length === 0 ? 16 : e.image[0].width || e.image[0].image.width) : this._setSize(e.image.width / 4), zr = this._renderer.getRenderTarget(), Gr = this._renderer.getActiveCubeFace(), Hr = this._renderer.getActiveMipmapLevel(); + const n = t || this._allocateTargets(); + return this._textureToCubeUV(e, n), this._applyPMREM(n), this._cleanup(n), n; + } + _allocateTargets() { + const e = 3 * Math.max(this._cubeSize, 112), t = 4 * this._cubeSize, n = { + magFilter: Rt, + minFilter: Rt, + generateMipmaps: !1, + type: gi, + format: Ft, + colorSpace: $t, + depthBuffer: !1 + }, r = ya(e, t, n); + if (this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== e || this._pingPongRenderTarget.height !== t) { + this._pingPongRenderTarget !== null && this._dispose(), this._pingPongRenderTarget = ya(e, t, n); + const { _lodMax: s } = this; + ({ sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = rd(s)), this._blurMaterial = sd(s, e, t); + } + return r; + } + _compileMaterial(e) { + const t = new Ot(this._lodPlanes[0], e); + this._renderer.compile(t, Br); + } + _sceneToCubeUV(e, t, n, r) { + const a = new Tt(90, 1, t, n), l = [1, -1, 1, 1, 1, 1], c = [1, 1, 1, -1, -1, -1], h = this._renderer, d = h.autoClear, p = h.toneMapping; + h.getClearColor(Ma), h.toneMapping = ln, h.autoClear = !1; + const m = new ls({ + name: "PMREM.Background", + side: Mt, + depthWrite: !1, + depthTest: !1 + }), g = new Ot(new ii(), m); + let v = !1; + const f = e.background; + f ? f.isColor && (m.color.copy(f), e.background = null, v = !0) : (m.color.copy(Ma), v = !0); + for (let u = 0; u < 6; u++) { + const b = u % 3; + b === 0 ? (a.up.set(0, l[u], 0), a.lookAt(c[u], 0, 0)) : b === 1 ? (a.up.set(0, 0, l[u]), a.lookAt(0, c[u], 0)) : (a.up.set(0, l[u], 0), a.lookAt(0, 0, c[u])); + const S = this._cubeSize; + Xi(r, b * S, u > 2 ? S : 0, S, S), h.setRenderTarget(r), v && h.render(g, a), h.render(e, a); + } + g.geometry.dispose(), g.material.dispose(), h.toneMapping = p, h.autoClear = d, e.background = f; + } + _textureToCubeUV(e, t) { + const n = this._renderer, r = e.mapping === Qn || e.mapping === ei; + r ? (this._cubemapMaterial === null && (this._cubemapMaterial = ba()), this._cubemapMaterial.uniforms.flipEnvMap.value = e.isRenderTargetTexture === !1 ? -1 : 1) : this._equirectMaterial === null && (this._equirectMaterial = Ta()); + const s = r ? this._cubemapMaterial : this._equirectMaterial, o = new Ot(this._lodPlanes[0], s), a = s.uniforms; + a.envMap.value = e; + const l = this._cubeSize; + Xi(t, 0, 0, 3 * l, 2 * l), n.setRenderTarget(t), n.render(o, Br); + } + _applyPMREM(e) { + const t = this._renderer, n = t.autoClear; + t.autoClear = !1; + for (let r = 1; r < this._lodPlanes.length; r++) { + const s = Math.sqrt(this._sigmas[r] * this._sigmas[r] - this._sigmas[r - 1] * this._sigmas[r - 1]), o = Sa[(r - 1) % Sa.length]; + this._blur(e, r - 1, r, s, o); + } + t.autoClear = n; + } + /** + * This is a two-pass Gaussian blur for a cubemap. Normally this is done + * vertically and horizontally, but this breaks down on a cube. Here we apply + * the blur latitudinally (around the poles), and then longitudinally (towards + * the poles) to approximate the orthogonally-separable blur. It is least + * accurate at the poles, but still does a decent job. + */ + _blur(e, t, n, r, s) { + const o = this._pingPongRenderTarget; + this._halfBlur( + e, + o, + t, + n, + r, + "latitudinal", + s + ), this._halfBlur( + o, + e, + n, + n, + r, + "longitudinal", + s + ); + } + _halfBlur(e, t, n, r, s, o, a) { + const l = this._renderer, c = this._blurMaterial; + o !== "latitudinal" && o !== "longitudinal" && console.error( + "blur direction must be either latitudinal or longitudinal!" + ); + const h = 3, d = new Ot(this._lodPlanes[r], c), p = c.uniforms, m = this._sizeLods[n] - 1, g = isFinite(s) ? Math.PI / (2 * m) : 2 * Math.PI / (2 * Sn - 1), v = s / g, f = isFinite(s) ? 1 + Math.floor(h * v) : Sn; + f > Sn && console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${f} samples when the maximum is set to ${Sn}`); + const u = []; + let b = 0; + for (let A = 0; A < Sn; ++A) { + const W = A / v, x = Math.exp(-W * W / 2); + u.push(x), A === 0 ? b += x : A < f && (b += 2 * x); + } + for (let A = 0; A < u.length; A++) + u[A] = u[A] / b; + p.envMap.value = e.texture, p.samples.value = f, p.weights.value = u, p.latitudinal.value = o === "latitudinal", a && (p.poleAxis.value = a); + const { _lodMax: S } = this; + p.dTheta.value = g, p.mipInt.value = S - n; + const R = this._sizeLods[r], D = 3 * R * (r > S - Kn ? r - S + Kn : 0), C = 4 * (this._cubeSize - R); + Xi(t, D, C, 3 * R, 2 * R), l.setRenderTarget(t), l.render(d, Br); + } +} +function rd(i) { + const e = [], t = [], n = []; + let r = i; + const s = i - Kn + 1 + xa.length; + for (let o = 0; o < s; o++) { + const a = Math.pow(2, r); + t.push(a); + let l = 1 / a; + o > i - Kn ? l = xa[o - i + Kn - 1] : o === 0 && (l = 0), n.push(l); + const c = 1 / (a - 2), h = -c, d = 1 + c, p = [h, h, d, h, d, d, h, h, d, d, h, d], m = 6, g = 6, v = 3, f = 2, u = 1, b = new Float32Array(v * g * m), S = new Float32Array(f * g * m), R = new Float32Array(u * g * m); + for (let C = 0; C < m; C++) { + const A = C % 3 * 2 / 3 - 1, W = C > 2 ? 0 : -1, x = [ + A, + W, + 0, + A + 2 / 3, + W, + 0, + A + 2 / 3, + W + 1, + 0, + A, + W, + 0, + A + 2 / 3, + W + 1, + 0, + A, + W + 1, + 0 + ]; + b.set(x, v * g * C), S.set(p, f * g * C); + const y = [C, C, C, C, C, C]; + R.set(y, u * g * C); + } + const D = new hn(); + D.setAttribute("position", new Bt(b, v)), D.setAttribute("uv", new Bt(S, f)), D.setAttribute("faceIndex", new Bt(R, u)), e.push(D), r > Kn && r--; + } + return { lodPlanes: e, sizeLods: t, sigmas: n }; +} +function ya(i, e, t) { + const n = new bn(i, e, t); + return n.texture.mapping = rr, n.texture.name = "PMREM.cubeUv", n.scissorTest = !0, n; +} +function Xi(i, e, t, n, r) { + i.viewport.set(e, t, n, r), i.scissor.set(e, t, n, r); +} +function sd(i, e, t) { + const n = new Float32Array(Sn), r = new P(0, 1, 0); + return new wn({ + name: "SphericalGaussianBlur", + defines: { + n: Sn, + CUBEUV_TEXEL_WIDTH: 1 / e, + CUBEUV_TEXEL_HEIGHT: 1 / t, + CUBEUV_MAX_MIP: `${i}.0` + }, + uniforms: { + envMap: { value: null }, + samples: { value: 1 }, + weights: { value: n }, + latitudinal: { value: !1 }, + dTheta: { value: 0 }, + mipInt: { value: 0 }, + poleAxis: { value: r } + }, + vertexShader: hs(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + ` + ), + blending: on, + depthTest: !1, + depthWrite: !1 + }); +} +function Ta() { + return new wn({ + name: "EquirectangularToCubeUV", + uniforms: { + envMap: { value: null } + }, + vertexShader: hs(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + ` + ), + blending: on, + depthTest: !1, + depthWrite: !1 + }); +} +function ba() { + return new wn({ + name: "CubemapToCubeUV", + uniforms: { + envMap: { value: null }, + flipEnvMap: { value: -1 } + }, + vertexShader: hs(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + ` + ), + blending: on, + depthTest: !1, + depthWrite: !1 + }); +} +function hs() { + return ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + ` + ); +} +function ad(i) { + let e = /* @__PURE__ */ new WeakMap(), t = null; + function n(a) { + if (a && a.isTexture) { + const l = a.mapping, c = l === $r || l === Jr, h = l === Qn || l === ei; + if (c || h) + if (a.isRenderTargetTexture && a.needsPMREMUpdate === !0) { + a.needsPMREMUpdate = !1; + let d = e.get(a); + return t === null && (t = new Ea(i)), d = c ? t.fromEquirectangular(a, d) : t.fromCubemap(a, d), e.set(a, d), d.texture; + } else { + if (e.has(a)) + return e.get(a).texture; + { + const d = a.image; + if (c && d && d.height > 0 || h && d && r(d)) { + t === null && (t = new Ea(i)); + const p = c ? t.fromEquirectangular(a) : t.fromCubemap(a); + return e.set(a, p), a.addEventListener("dispose", s), p.texture; + } else + return null; + } + } + } + return a; + } + function r(a) { + let l = 0; + const c = 6; + for (let h = 0; h < c; h++) + a[h] !== void 0 && l++; + return l === c; + } + function s(a) { + const l = a.target; + l.removeEventListener("dispose", s); + const c = e.get(l); + c !== void 0 && (e.delete(l), c.dispose()); + } + function o() { + e = /* @__PURE__ */ new WeakMap(), t !== null && (t.dispose(), t = null); + } + return { + get: n, + dispose: o + }; +} +function od(i) { + const e = {}; + function t(n) { + if (e[n] !== void 0) + return e[n]; + let r; + switch (n) { + case "WEBGL_depth_texture": + r = i.getExtension("WEBGL_depth_texture") || i.getExtension("MOZ_WEBGL_depth_texture") || i.getExtension("WEBKIT_WEBGL_depth_texture"); + break; + case "EXT_texture_filter_anisotropic": + r = i.getExtension("EXT_texture_filter_anisotropic") || i.getExtension("MOZ_EXT_texture_filter_anisotropic") || i.getExtension("WEBKIT_EXT_texture_filter_anisotropic"); + break; + case "WEBGL_compressed_texture_s3tc": + r = i.getExtension("WEBGL_compressed_texture_s3tc") || i.getExtension("MOZ_WEBGL_compressed_texture_s3tc") || i.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"); + break; + case "WEBGL_compressed_texture_pvrtc": + r = i.getExtension("WEBGL_compressed_texture_pvrtc") || i.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"); + break; + default: + r = i.getExtension(n); + } + return e[n] = r, r; + } + return { + has: function(n) { + return t(n) !== null; + }, + init: function(n) { + n.isWebGL2 ? (t("EXT_color_buffer_float"), t("WEBGL_clip_cull_distance")) : (t("WEBGL_depth_texture"), t("OES_texture_float"), t("OES_texture_half_float"), t("OES_texture_half_float_linear"), t("OES_standard_derivatives"), t("OES_element_index_uint"), t("OES_vertex_array_object"), t("ANGLE_instanced_arrays")), t("OES_texture_float_linear"), t("EXT_color_buffer_half_float"), t("WEBGL_multisampled_render_to_texture"); + }, + get: function(n) { + const r = t(n); + return r === null && console.warn("THREE.WebGLRenderer: " + n + " extension not supported."), r; + } + }; +} +function ld(i, e, t, n) { + const r = {}, s = /* @__PURE__ */ new WeakMap(); + function o(d) { + const p = d.target; + p.index !== null && e.remove(p.index); + for (const g in p.attributes) + e.remove(p.attributes[g]); + for (const g in p.morphAttributes) { + const v = p.morphAttributes[g]; + for (let f = 0, u = v.length; f < u; f++) + e.remove(v[f]); + } + p.removeEventListener("dispose", o), delete r[p.id]; + const m = s.get(p); + m && (e.remove(m), s.delete(p)), n.releaseStatesOfGeometry(p), p.isInstancedBufferGeometry === !0 && delete p._maxInstanceCount, t.memory.geometries--; + } + function a(d, p) { + return r[p.id] === !0 || (p.addEventListener("dispose", o), r[p.id] = !0, t.memory.geometries++), p; + } + function l(d) { + const p = d.attributes; + for (const g in p) + e.update(p[g], i.ARRAY_BUFFER); + const m = d.morphAttributes; + for (const g in m) { + const v = m[g]; + for (let f = 0, u = v.length; f < u; f++) + e.update(v[f], i.ARRAY_BUFFER); + } + } + function c(d) { + const p = [], m = d.index, g = d.attributes.position; + let v = 0; + if (m !== null) { + const b = m.array; + v = m.version; + for (let S = 0, R = b.length; S < R; S += 3) { + const D = b[S + 0], C = b[S + 1], A = b[S + 2]; + p.push(D, C, C, A, A, D); + } + } else if (g !== void 0) { + const b = g.array; + v = g.version; + for (let S = 0, R = b.length / 3 - 1; S < R; S += 3) { + const D = S + 0, C = S + 1, A = S + 2; + p.push(D, C, C, A, A, D); + } + } else + return; + const f = new (Mo(p) ? Ro : wo)(p, 1); + f.version = v; + const u = s.get(d); + u && e.remove(u), s.set(d, f); + } + function h(d) { + const p = s.get(d); + if (p) { + const m = d.index; + m !== null && p.version < m.version && c(d); + } else + c(d); + return s.get(d); + } + return { + get: a, + update: l, + getWireframeAttribute: h + }; +} +function cd(i, e, t, n) { + const r = n.isWebGL2; + let s; + function o(m) { + s = m; + } + let a, l; + function c(m) { + a = m.type, l = m.bytesPerElement; + } + function h(m, g) { + i.drawElements(s, g, a, m * l), t.update(g, s, 1); + } + function d(m, g, v) { + if (v === 0) return; + let f, u; + if (r) + f = i, u = "drawElementsInstanced"; + else if (f = e.get("ANGLE_instanced_arrays"), u = "drawElementsInstancedANGLE", f === null) { + console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."); + return; + } + f[u](s, g, a, m * l, v), t.update(g, s, v); + } + function p(m, g, v) { + if (v === 0) return; + const f = e.get("WEBGL_multi_draw"); + if (f === null) + for (let u = 0; u < v; u++) + this.render(m[u] / l, g[u]); + else { + f.multiDrawElementsWEBGL(s, g, 0, a, m, 0, v); + let u = 0; + for (let b = 0; b < v; b++) + u += g[b]; + t.update(u, s, 1); + } + } + this.setMode = o, this.setIndex = c, this.render = h, this.renderInstances = d, this.renderMultiDraw = p; +} +function ud(i) { + const e = { + geometries: 0, + textures: 0 + }, t = { + frame: 0, + calls: 0, + triangles: 0, + points: 0, + lines: 0 + }; + function n(s, o, a) { + switch (t.calls++, o) { + case i.TRIANGLES: + t.triangles += a * (s / 3); + break; + case i.LINES: + t.lines += a * (s / 2); + break; + case i.LINE_STRIP: + t.lines += a * (s - 1); + break; + case i.LINE_LOOP: + t.lines += a * s; + break; + case i.POINTS: + t.points += a * s; + break; + default: + console.error("THREE.WebGLInfo: Unknown draw mode:", o); + break; + } + } + function r() { + t.calls = 0, t.triangles = 0, t.points = 0, t.lines = 0; + } + return { + memory: e, + render: t, + programs: null, + autoReset: !0, + reset: r, + update: n + }; +} +function hd(i, e) { + return i[0] - e[0]; +} +function dd(i, e) { + return Math.abs(e[1]) - Math.abs(i[1]); +} +function fd(i, e, t) { + const n = {}, r = new Float32Array(8), s = /* @__PURE__ */ new WeakMap(), o = new $e(), a = []; + for (let c = 0; c < 8; c++) + a[c] = [c, 0]; + function l(c, h, d) { + const p = c.morphTargetInfluences; + if (e.isWebGL2 === !0) { + const m = h.morphAttributes.position || h.morphAttributes.normal || h.morphAttributes.color, g = m !== void 0 ? m.length : 0; + let v = s.get(h); + if (v === void 0 || v.count !== g) { + let L = function() { + Z.dispose(), s.delete(h), h.removeEventListener("dispose", L); + }; + v !== void 0 && v.texture.dispose(); + const b = h.morphAttributes.position !== void 0, S = h.morphAttributes.normal !== void 0, R = h.morphAttributes.color !== void 0, D = h.morphAttributes.position || [], C = h.morphAttributes.normal || [], A = h.morphAttributes.color || []; + let W = 0; + b === !0 && (W = 1), S === !0 && (W = 2), R === !0 && (W = 3); + let x = h.attributes.position.count * W, y = 1; + x > e.maxTextureSize && (y = Math.ceil(x / e.maxTextureSize), x = e.maxTextureSize); + const z = new Float32Array(x * y * 4 * g), Z = new yo(z, x, y, g); + Z.type = an, Z.needsUpdate = !0; + const re = W * 4; + for (let F = 0; F < g; F++) { + const V = D[F], Y = C[F], X = A[F], k = x * y * 4 * F; + for (let q = 0; q < V.count; q++) { + const Q = q * re; + b === !0 && (o.fromBufferAttribute(V, q), z[k + Q + 0] = o.x, z[k + Q + 1] = o.y, z[k + Q + 2] = o.z, z[k + Q + 3] = 0), S === !0 && (o.fromBufferAttribute(Y, q), z[k + Q + 4] = o.x, z[k + Q + 5] = o.y, z[k + Q + 6] = o.z, z[k + Q + 7] = 0), R === !0 && (o.fromBufferAttribute(X, q), z[k + Q + 8] = o.x, z[k + Q + 9] = o.y, z[k + Q + 10] = o.z, z[k + Q + 11] = X.itemSize === 4 ? o.w : 1); + } + } + v = { + count: g, + texture: Z, + size: new Ie(x, y) + }, s.set(h, v), h.addEventListener("dispose", L); + } + let f = 0; + for (let b = 0; b < p.length; b++) + f += p[b]; + const u = h.morphTargetsRelative ? 1 : 1 - f; + d.getUniforms().setValue(i, "morphTargetBaseInfluence", u), d.getUniforms().setValue(i, "morphTargetInfluences", p), d.getUniforms().setValue(i, "morphTargetsTexture", v.texture, t), d.getUniforms().setValue(i, "morphTargetsTextureSize", v.size); + } else { + const m = p === void 0 ? 0 : p.length; + let g = n[h.id]; + if (g === void 0 || g.length !== m) { + g = []; + for (let S = 0; S < m; S++) + g[S] = [S, 0]; + n[h.id] = g; + } + for (let S = 0; S < m; S++) { + const R = g[S]; + R[0] = S, R[1] = p[S]; + } + g.sort(dd); + for (let S = 0; S < 8; S++) + S < m && g[S][1] ? (a[S][0] = g[S][0], a[S][1] = g[S][1]) : (a[S][0] = Number.MAX_SAFE_INTEGER, a[S][1] = 0); + a.sort(hd); + const v = h.morphAttributes.position, f = h.morphAttributes.normal; + let u = 0; + for (let S = 0; S < 8; S++) { + const R = a[S], D = R[0], C = R[1]; + D !== Number.MAX_SAFE_INTEGER && C ? (v && h.getAttribute("morphTarget" + S) !== v[D] && h.setAttribute("morphTarget" + S, v[D]), f && h.getAttribute("morphNormal" + S) !== f[D] && h.setAttribute("morphNormal" + S, f[D]), r[S] = C, u += C) : (v && h.hasAttribute("morphTarget" + S) === !0 && h.deleteAttribute("morphTarget" + S), f && h.hasAttribute("morphNormal" + S) === !0 && h.deleteAttribute("morphNormal" + S), r[S] = 0); + } + const b = h.morphTargetsRelative ? 1 : 1 - u; + d.getUniforms().setValue(i, "morphTargetBaseInfluence", b), d.getUniforms().setValue(i, "morphTargetInfluences", r); + } + } + return { + update: l + }; +} +function pd(i, e, t, n) { + let r = /* @__PURE__ */ new WeakMap(); + function s(l) { + const c = n.render.frame, h = l.geometry, d = e.get(l, h); + if (r.get(d) !== c && (e.update(d), r.set(d, c)), l.isInstancedMesh && (l.hasEventListener("dispose", a) === !1 && l.addEventListener("dispose", a), r.get(l) !== c && (t.update(l.instanceMatrix, i.ARRAY_BUFFER), l.instanceColor !== null && t.update(l.instanceColor, i.ARRAY_BUFFER), r.set(l, c))), l.isSkinnedMesh) { + const p = l.skeleton; + r.get(p) !== c && (p.update(), r.set(p, c)); + } + return d; + } + function o() { + r = /* @__PURE__ */ new WeakMap(); + } + function a(l) { + const c = l.target; + c.removeEventListener("dispose", a), t.remove(c.instanceMatrix), c.instanceColor !== null && t.remove(c.instanceColor); + } + return { + update: s, + dispose: o + }; +} +class Io extends bt { + constructor(e, t, n, r, s, o, a, l, c, h) { + if (h = h !== void 0 ? h : yn, h !== yn && h !== ti) + throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat"); + n === void 0 && h === yn && (n = sn), n === void 0 && h === ti && (n = En), super(null, r, s, o, a, l, h, n, c), this.isDepthTexture = !0, this.image = { width: e, height: t }, this.magFilter = a !== void 0 ? a : gt, this.minFilter = l !== void 0 ? l : gt, this.flipY = !1, this.generateMipmaps = !1, this.compareFunction = null; + } + copy(e) { + return super.copy(e), this.compareFunction = e.compareFunction, this; + } + toJSON(e) { + const t = super.toJSON(e); + return this.compareFunction !== null && (t.compareFunction = this.compareFunction), t; + } +} +const No = /* @__PURE__ */ new bt(), Fo = /* @__PURE__ */ new Io(1, 1); +Fo.compareFunction = xo; +const Oo = /* @__PURE__ */ new yo(), Bo = /* @__PURE__ */ new Jl(), zo = /* @__PURE__ */ new Po(), Aa = [], wa = [], Ra = new Float32Array(16), Ca = new Float32Array(9), La = new Float32Array(4); +function ri(i, e, t) { + const n = i[0]; + if (n <= 0 || n > 0) return i; + const r = e * t; + let s = Aa[r]; + if (s === void 0 && (s = new Float32Array(r), Aa[r] = s), e !== 0) { + n.toArray(s, 0); + for (let o = 1, a = 0; o !== e; ++o) + a += t, i[o].toArray(s, a); + } + return s; +} +function ot(i, e) { + if (i.length !== e.length) return !1; + for (let t = 0, n = i.length; t < n; t++) + if (i[t] !== e[t]) return !1; + return !0; +} +function lt(i, e) { + for (let t = 0, n = e.length; t < n; t++) + i[t] = e[t]; +} +function or(i, e) { + let t = wa[e]; + t === void 0 && (t = new Int32Array(e), wa[e] = t); + for (let n = 0; n !== e; ++n) + t[n] = i.allocateTextureUnit(); + return t; +} +function md(i, e) { + const t = this.cache; + t[0] !== e && (i.uniform1f(this.addr, e), t[0] = e); +} +function _d(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y) && (i.uniform2f(this.addr, e.x, e.y), t[0] = e.x, t[1] = e.y); + else { + if (ot(t, e)) return; + i.uniform2fv(this.addr, e), lt(t, e); + } +} +function gd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z) && (i.uniform3f(this.addr, e.x, e.y, e.z), t[0] = e.x, t[1] = e.y, t[2] = e.z); + else if (e.r !== void 0) + (t[0] !== e.r || t[1] !== e.g || t[2] !== e.b) && (i.uniform3f(this.addr, e.r, e.g, e.b), t[0] = e.r, t[1] = e.g, t[2] = e.b); + else { + if (ot(t, e)) return; + i.uniform3fv(this.addr, e), lt(t, e); + } +} +function vd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z || t[3] !== e.w) && (i.uniform4f(this.addr, e.x, e.y, e.z, e.w), t[0] = e.x, t[1] = e.y, t[2] = e.z, t[3] = e.w); + else { + if (ot(t, e)) return; + i.uniform4fv(this.addr, e), lt(t, e); + } +} +function xd(i, e) { + const t = this.cache, n = e.elements; + if (n === void 0) { + if (ot(t, e)) return; + i.uniformMatrix2fv(this.addr, !1, e), lt(t, e); + } else { + if (ot(t, n)) return; + La.set(n), i.uniformMatrix2fv(this.addr, !1, La), lt(t, n); + } +} +function Md(i, e) { + const t = this.cache, n = e.elements; + if (n === void 0) { + if (ot(t, e)) return; + i.uniformMatrix3fv(this.addr, !1, e), lt(t, e); + } else { + if (ot(t, n)) return; + Ca.set(n), i.uniformMatrix3fv(this.addr, !1, Ca), lt(t, n); + } +} +function Sd(i, e) { + const t = this.cache, n = e.elements; + if (n === void 0) { + if (ot(t, e)) return; + i.uniformMatrix4fv(this.addr, !1, e), lt(t, e); + } else { + if (ot(t, n)) return; + Ra.set(n), i.uniformMatrix4fv(this.addr, !1, Ra), lt(t, n); + } +} +function Ed(i, e) { + const t = this.cache; + t[0] !== e && (i.uniform1i(this.addr, e), t[0] = e); +} +function yd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y) && (i.uniform2i(this.addr, e.x, e.y), t[0] = e.x, t[1] = e.y); + else { + if (ot(t, e)) return; + i.uniform2iv(this.addr, e), lt(t, e); + } +} +function Td(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z) && (i.uniform3i(this.addr, e.x, e.y, e.z), t[0] = e.x, t[1] = e.y, t[2] = e.z); + else { + if (ot(t, e)) return; + i.uniform3iv(this.addr, e), lt(t, e); + } +} +function bd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z || t[3] !== e.w) && (i.uniform4i(this.addr, e.x, e.y, e.z, e.w), t[0] = e.x, t[1] = e.y, t[2] = e.z, t[3] = e.w); + else { + if (ot(t, e)) return; + i.uniform4iv(this.addr, e), lt(t, e); + } +} +function Ad(i, e) { + const t = this.cache; + t[0] !== e && (i.uniform1ui(this.addr, e), t[0] = e); +} +function wd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y) && (i.uniform2ui(this.addr, e.x, e.y), t[0] = e.x, t[1] = e.y); + else { + if (ot(t, e)) return; + i.uniform2uiv(this.addr, e), lt(t, e); + } +} +function Rd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z) && (i.uniform3ui(this.addr, e.x, e.y, e.z), t[0] = e.x, t[1] = e.y, t[2] = e.z); + else { + if (ot(t, e)) return; + i.uniform3uiv(this.addr, e), lt(t, e); + } +} +function Cd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z || t[3] !== e.w) && (i.uniform4ui(this.addr, e.x, e.y, e.z, e.w), t[0] = e.x, t[1] = e.y, t[2] = e.z, t[3] = e.w); + else { + if (ot(t, e)) return; + i.uniform4uiv(this.addr, e), lt(t, e); + } +} +function Ld(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r); + const s = this.type === i.SAMPLER_2D_SHADOW ? Fo : No; + t.setTexture2D(e || s, r); +} +function Pd(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r), t.setTexture3D(e || Bo, r); +} +function Dd(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r), t.setTextureCube(e || zo, r); +} +function Ud(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r), t.setTexture2DArray(e || Oo, r); +} +function Id(i) { + switch (i) { + case 5126: + return md; + case 35664: + return _d; + case 35665: + return gd; + case 35666: + return vd; + case 35674: + return xd; + case 35675: + return Md; + case 35676: + return Sd; + case 5124: + case 35670: + return Ed; + case 35667: + case 35671: + return yd; + case 35668: + case 35672: + return Td; + case 35669: + case 35673: + return bd; + case 5125: + return Ad; + case 36294: + return wd; + case 36295: + return Rd; + case 36296: + return Cd; + case 35678: + case 36198: + case 36298: + case 36306: + case 35682: + return Ld; + case 35679: + case 36299: + case 36307: + return Pd; + case 35680: + case 36300: + case 36308: + case 36293: + return Dd; + case 36289: + case 36303: + case 36311: + case 36292: + return Ud; + } +} +function Nd(i, e) { + i.uniform1fv(this.addr, e); +} +function Fd(i, e) { + const t = ri(e, this.size, 2); + i.uniform2fv(this.addr, t); +} +function Od(i, e) { + const t = ri(e, this.size, 3); + i.uniform3fv(this.addr, t); +} +function Bd(i, e) { + const t = ri(e, this.size, 4); + i.uniform4fv(this.addr, t); +} +function zd(i, e) { + const t = ri(e, this.size, 4); + i.uniformMatrix2fv(this.addr, !1, t); +} +function Gd(i, e) { + const t = ri(e, this.size, 9); + i.uniformMatrix3fv(this.addr, !1, t); +} +function Hd(i, e) { + const t = ri(e, this.size, 16); + i.uniformMatrix4fv(this.addr, !1, t); +} +function Vd(i, e) { + i.uniform1iv(this.addr, e); +} +function kd(i, e) { + i.uniform2iv(this.addr, e); +} +function Wd(i, e) { + i.uniform3iv(this.addr, e); +} +function Xd(i, e) { + i.uniform4iv(this.addr, e); +} +function qd(i, e) { + i.uniform1uiv(this.addr, e); +} +function Yd(i, e) { + i.uniform2uiv(this.addr, e); +} +function jd(i, e) { + i.uniform3uiv(this.addr, e); +} +function Kd(i, e) { + i.uniform4uiv(this.addr, e); +} +function Zd(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTexture2D(e[o] || No, s[o]); +} +function $d(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTexture3D(e[o] || Bo, s[o]); +} +function Jd(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTextureCube(e[o] || zo, s[o]); +} +function Qd(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTexture2DArray(e[o] || Oo, s[o]); +} +function ef(i) { + switch (i) { + case 5126: + return Nd; + case 35664: + return Fd; + case 35665: + return Od; + case 35666: + return Bd; + case 35674: + return zd; + case 35675: + return Gd; + case 35676: + return Hd; + case 5124: + case 35670: + return Vd; + case 35667: + case 35671: + return kd; + case 35668: + case 35672: + return Wd; + case 35669: + case 35673: + return Xd; + case 5125: + return qd; + case 36294: + return Yd; + case 36295: + return jd; + case 36296: + return Kd; + case 35678: + case 36198: + case 36298: + case 36306: + case 35682: + return Zd; + case 35679: + case 36299: + case 36307: + return $d; + case 35680: + case 36300: + case 36308: + case 36293: + return Jd; + case 36289: + case 36303: + case 36311: + case 36292: + return Qd; + } +} +class tf { + constructor(e, t, n) { + this.id = e, this.addr = n, this.cache = [], this.type = t.type, this.setValue = Id(t.type); + } +} +class nf { + constructor(e, t, n) { + this.id = e, this.addr = n, this.cache = [], this.type = t.type, this.size = t.size, this.setValue = ef(t.type); + } +} +class rf { + constructor(e) { + this.id = e, this.seq = [], this.map = {}; + } + setValue(e, t, n) { + const r = this.seq; + for (let s = 0, o = r.length; s !== o; ++s) { + const a = r[s]; + a.setValue(e, t[a.id], n); + } + } +} +const Vr = /(\w+)(\])?(\[|\.)?/g; +function Pa(i, e) { + i.seq.push(e), i.map[e.id] = e; +} +function sf(i, e, t) { + const n = i.name, r = n.length; + for (Vr.lastIndex = 0; ; ) { + const s = Vr.exec(n), o = Vr.lastIndex; + let a = s[1]; + const l = s[2] === "]", c = s[3]; + if (l && (a = a | 0), c === void 0 || c === "[" && o + 2 === r) { + Pa(t, c === void 0 ? new tf(a, i, e) : new nf(a, i, e)); + break; + } else { + let d = t.map[a]; + d === void 0 && (d = new rf(a), Pa(t, d)), t = d; + } + } +} +class Zi { + constructor(e, t) { + this.seq = [], this.map = {}; + const n = e.getProgramParameter(t, e.ACTIVE_UNIFORMS); + for (let r = 0; r < n; ++r) { + const s = e.getActiveUniform(t, r), o = e.getUniformLocation(t, s.name); + sf(s, o, this); + } + } + setValue(e, t, n, r) { + const s = this.map[t]; + s !== void 0 && s.setValue(e, n, r); + } + setOptional(e, t, n) { + const r = t[n]; + r !== void 0 && this.setValue(e, n, r); + } + static upload(e, t, n, r) { + for (let s = 0, o = t.length; s !== o; ++s) { + const a = t[s], l = n[a.id]; + l.needsUpdate !== !1 && a.setValue(e, l.value, r); + } + } + static seqWithValue(e, t) { + const n = []; + for (let r = 0, s = e.length; r !== s; ++r) { + const o = e[r]; + o.id in t && n.push(o); + } + return n; + } +} +function Da(i, e, t) { + const n = i.createShader(e); + return i.shaderSource(n, t), i.compileShader(n), n; +} +const af = 37297; +let of = 0; +function lf(i, e) { + const t = i.split(` +`), n = [], r = Math.max(e - 6, 0), s = Math.min(e + 6, t.length); + for (let o = r; o < s; o++) { + const a = o + 1; + n.push(`${a === e ? ">" : " "} ${a}: ${t[o]}`); + } + return n.join(` +`); +} +function cf(i) { + const e = Ke.getPrimaries(Ke.workingColorSpace), t = Ke.getPrimaries(i); + let n; + switch (e === t ? n = "" : e === er && t === Qi ? n = "LinearDisplayP3ToLinearSRGB" : e === Qi && t === er && (n = "LinearSRGBToLinearDisplayP3"), i) { + case $t: + case sr: + return [n, "LinearTransferOETF"]; + case ht: + case os: + return [n, "sRGBTransferOETF"]; + default: + return console.warn("THREE.WebGLProgram: Unsupported color space:", i), [n, "LinearTransferOETF"]; + } +} +function Ua(i, e, t) { + const n = i.getShaderParameter(e, i.COMPILE_STATUS), r = i.getShaderInfoLog(e).trim(); + if (n && r === "") return ""; + const s = /ERROR: 0:(\d+)/.exec(r); + if (s) { + const o = parseInt(s[1]); + return t.toUpperCase() + ` + +` + r + ` + +` + lf(i.getShaderSource(e), o); + } else + return r; +} +function uf(i, e) { + const t = cf(e); + return `vec4 ${i}( vec4 value ) { return ${t[0]}( ${t[1]}( value ) ); }`; +} +function hf(i, e) { + let t; + switch (e) { + case Ml: + t = "Linear"; + break; + case Sl: + t = "Reinhard"; + break; + case El: + t = "OptimizedCineon"; + break; + case yl: + t = "ACESFilmic"; + break; + case bl: + t = "AgX"; + break; + case Tl: + t = "Custom"; + break; + default: + console.warn("THREE.WebGLProgram: Unsupported toneMapping:", e), t = "Linear"; + } + return "vec3 " + i + "( vec3 color ) { return " + t + "ToneMapping( color ); }"; +} +function df(i) { + return [ + i.extensionDerivatives || i.envMapCubeUVHeight || i.bumpMap || i.normalMapTangentSpace || i.clearcoatNormalMap || i.flatShading || i.shaderID === "physical" ? "#extension GL_OES_standard_derivatives : enable" : "", + (i.extensionFragDepth || i.logarithmicDepthBuffer) && i.rendererExtensionFragDepth ? "#extension GL_EXT_frag_depth : enable" : "", + i.extensionDrawBuffers && i.rendererExtensionDrawBuffers ? "#extension GL_EXT_draw_buffers : require" : "", + (i.extensionShaderTextureLOD || i.envMap || i.transmission) && i.rendererExtensionShaderTextureLod ? "#extension GL_EXT_shader_texture_lod : enable" : "" + ].filter(Zn).join(` +`); +} +function ff(i) { + return [ + i.extensionClipCullDistance ? "#extension GL_ANGLE_clip_cull_distance : require" : "" + ].filter(Zn).join(` +`); +} +function pf(i) { + const e = []; + for (const t in i) { + const n = i[t]; + n !== !1 && e.push("#define " + t + " " + n); + } + return e.join(` +`); +} +function mf(i, e) { + const t = {}, n = i.getProgramParameter(e, i.ACTIVE_ATTRIBUTES); + for (let r = 0; r < n; r++) { + const s = i.getActiveAttrib(e, r), o = s.name; + let a = 1; + s.type === i.FLOAT_MAT2 && (a = 2), s.type === i.FLOAT_MAT3 && (a = 3), s.type === i.FLOAT_MAT4 && (a = 4), t[o] = { + type: s.type, + location: i.getAttribLocation(e, o), + locationSize: a + }; + } + return t; +} +function Zn(i) { + return i !== ""; +} +function Ia(i, e) { + const t = e.numSpotLightShadows + e.numSpotLightMaps - e.numSpotLightShadowsWithMaps; + return i.replace(/NUM_DIR_LIGHTS/g, e.numDirLights).replace(/NUM_SPOT_LIGHTS/g, e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g, e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g, t).replace(/NUM_RECT_AREA_LIGHTS/g, e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, e.numPointLights).replace(/NUM_HEMI_LIGHTS/g, e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g, e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, e.numPointLightShadows); +} +function Na(i, e) { + return i.replace(/NUM_CLIPPING_PLANES/g, e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, e.numClippingPlanes - e.numClipIntersection); +} +const _f = /^[ \t]*#include +<([\w\d./]+)>/gm; +function rs(i) { + return i.replace(_f, vf); +} +const gf = /* @__PURE__ */ new Map([ + ["encodings_fragment", "colorspace_fragment"], + // @deprecated, r154 + ["encodings_pars_fragment", "colorspace_pars_fragment"], + // @deprecated, r154 + ["output_fragment", "opaque_fragment"] + // @deprecated, r154 +]); +function vf(i, e) { + let t = Be[e]; + if (t === void 0) { + const n = gf.get(e); + if (n !== void 0) + t = Be[n], console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', e, n); + else + throw new Error("Can not resolve #include <" + e + ">"); + } + return rs(t); +} +const xf = /#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g; +function Fa(i) { + return i.replace(xf, Mf); +} +function Mf(i, e, t, n) { + let r = ""; + for (let s = parseInt(e); s < parseInt(t); s++) + r += n.replace(/\[\s*i\s*\]/g, "[ " + s + " ]").replace(/UNROLLED_LOOP_INDEX/g, s); + return r; +} +function Oa(i) { + let e = "precision " + i.precision + ` float; +precision ` + i.precision + " int;"; + return i.precision === "highp" ? e += ` +#define HIGH_PRECISION` : i.precision === "mediump" ? e += ` +#define MEDIUM_PRECISION` : i.precision === "lowp" && (e += ` +#define LOW_PRECISION`), e; +} +function Sf(i) { + let e = "SHADOWMAP_TYPE_BASIC"; + return i.shadowMapType === so ? e = "SHADOWMAP_TYPE_PCF" : i.shadowMapType === ao ? e = "SHADOWMAP_TYPE_PCF_SOFT" : i.shadowMapType === jt && (e = "SHADOWMAP_TYPE_VSM"), e; +} +function Ef(i) { + let e = "ENVMAP_TYPE_CUBE"; + if (i.envMap) + switch (i.envMapMode) { + case Qn: + case ei: + e = "ENVMAP_TYPE_CUBE"; + break; + case rr: + e = "ENVMAP_TYPE_CUBE_UV"; + break; + } + return e; +} +function yf(i) { + let e = "ENVMAP_MODE_REFLECTION"; + if (i.envMap) + switch (i.envMapMode) { + case ei: + e = "ENVMAP_MODE_REFRACTION"; + break; + } + return e; +} +function Tf(i) { + let e = "ENVMAP_BLENDING_NONE"; + if (i.envMap) + switch (i.combine) { + case oo: + e = "ENVMAP_BLENDING_MULTIPLY"; + break; + case vl: + e = "ENVMAP_BLENDING_MIX"; + break; + case xl: + e = "ENVMAP_BLENDING_ADD"; + break; + } + return e; +} +function bf(i) { + const e = i.envMapCubeUVHeight; + if (e === null) return null; + const t = Math.log2(e) - 2, n = 1 / e; + return { texelWidth: 1 / (3 * Math.max(Math.pow(2, t), 7 * 16)), texelHeight: n, maxMip: t }; +} +function Af(i, e, t, n) { + const r = i.getContext(), s = t.defines; + let o = t.vertexShader, a = t.fragmentShader; + const l = Sf(t), c = Ef(t), h = yf(t), d = Tf(t), p = bf(t), m = t.isWebGL2 ? "" : df(t), g = ff(t), v = pf(s), f = r.createProgram(); + let u, b, S = t.glslVersion ? "#version " + t.glslVersion + ` +` : ""; + t.isRawShaderMaterial ? (u = [ + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v + ].filter(Zn).join(` +`), u.length > 0 && (u += ` +`), b = [ + m, + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v + ].filter(Zn).join(` +`), b.length > 0 && (b += ` +`)) : (u = [ + Oa(t), + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v, + t.extensionClipCullDistance ? "#define USE_CLIP_DISTANCE" : "", + t.batching ? "#define USE_BATCHING" : "", + t.instancing ? "#define USE_INSTANCING" : "", + t.instancingColor ? "#define USE_INSTANCING_COLOR" : "", + t.useFog && t.fog ? "#define USE_FOG" : "", + t.useFog && t.fogExp2 ? "#define FOG_EXP2" : "", + t.map ? "#define USE_MAP" : "", + t.envMap ? "#define USE_ENVMAP" : "", + t.envMap ? "#define " + h : "", + t.lightMap ? "#define USE_LIGHTMAP" : "", + t.aoMap ? "#define USE_AOMAP" : "", + t.bumpMap ? "#define USE_BUMPMAP" : "", + t.normalMap ? "#define USE_NORMALMAP" : "", + t.normalMapObjectSpace ? "#define USE_NORMALMAP_OBJECTSPACE" : "", + t.normalMapTangentSpace ? "#define USE_NORMALMAP_TANGENTSPACE" : "", + t.displacementMap ? "#define USE_DISPLACEMENTMAP" : "", + t.emissiveMap ? "#define USE_EMISSIVEMAP" : "", + t.anisotropy ? "#define USE_ANISOTROPY" : "", + t.anisotropyMap ? "#define USE_ANISOTROPYMAP" : "", + t.clearcoatMap ? "#define USE_CLEARCOATMAP" : "", + t.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "", + t.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", + t.iridescenceMap ? "#define USE_IRIDESCENCEMAP" : "", + t.iridescenceThicknessMap ? "#define USE_IRIDESCENCE_THICKNESSMAP" : "", + t.specularMap ? "#define USE_SPECULARMAP" : "", + t.specularColorMap ? "#define USE_SPECULAR_COLORMAP" : "", + t.specularIntensityMap ? "#define USE_SPECULAR_INTENSITYMAP" : "", + t.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", + t.metalnessMap ? "#define USE_METALNESSMAP" : "", + t.alphaMap ? "#define USE_ALPHAMAP" : "", + t.alphaHash ? "#define USE_ALPHAHASH" : "", + t.transmission ? "#define USE_TRANSMISSION" : "", + t.transmissionMap ? "#define USE_TRANSMISSIONMAP" : "", + t.thicknessMap ? "#define USE_THICKNESSMAP" : "", + t.sheenColorMap ? "#define USE_SHEEN_COLORMAP" : "", + t.sheenRoughnessMap ? "#define USE_SHEEN_ROUGHNESSMAP" : "", + // + t.mapUv ? "#define MAP_UV " + t.mapUv : "", + t.alphaMapUv ? "#define ALPHAMAP_UV " + t.alphaMapUv : "", + t.lightMapUv ? "#define LIGHTMAP_UV " + t.lightMapUv : "", + t.aoMapUv ? "#define AOMAP_UV " + t.aoMapUv : "", + t.emissiveMapUv ? "#define EMISSIVEMAP_UV " + t.emissiveMapUv : "", + t.bumpMapUv ? "#define BUMPMAP_UV " + t.bumpMapUv : "", + t.normalMapUv ? "#define NORMALMAP_UV " + t.normalMapUv : "", + t.displacementMapUv ? "#define DISPLACEMENTMAP_UV " + t.displacementMapUv : "", + t.metalnessMapUv ? "#define METALNESSMAP_UV " + t.metalnessMapUv : "", + t.roughnessMapUv ? "#define ROUGHNESSMAP_UV " + t.roughnessMapUv : "", + t.anisotropyMapUv ? "#define ANISOTROPYMAP_UV " + t.anisotropyMapUv : "", + t.clearcoatMapUv ? "#define CLEARCOATMAP_UV " + t.clearcoatMapUv : "", + t.clearcoatNormalMapUv ? "#define CLEARCOAT_NORMALMAP_UV " + t.clearcoatNormalMapUv : "", + t.clearcoatRoughnessMapUv ? "#define CLEARCOAT_ROUGHNESSMAP_UV " + t.clearcoatRoughnessMapUv : "", + t.iridescenceMapUv ? "#define IRIDESCENCEMAP_UV " + t.iridescenceMapUv : "", + t.iridescenceThicknessMapUv ? "#define IRIDESCENCE_THICKNESSMAP_UV " + t.iridescenceThicknessMapUv : "", + t.sheenColorMapUv ? "#define SHEEN_COLORMAP_UV " + t.sheenColorMapUv : "", + t.sheenRoughnessMapUv ? "#define SHEEN_ROUGHNESSMAP_UV " + t.sheenRoughnessMapUv : "", + t.specularMapUv ? "#define SPECULARMAP_UV " + t.specularMapUv : "", + t.specularColorMapUv ? "#define SPECULAR_COLORMAP_UV " + t.specularColorMapUv : "", + t.specularIntensityMapUv ? "#define SPECULAR_INTENSITYMAP_UV " + t.specularIntensityMapUv : "", + t.transmissionMapUv ? "#define TRANSMISSIONMAP_UV " + t.transmissionMapUv : "", + t.thicknessMapUv ? "#define THICKNESSMAP_UV " + t.thicknessMapUv : "", + // + t.vertexTangents && t.flatShading === !1 ? "#define USE_TANGENT" : "", + t.vertexColors ? "#define USE_COLOR" : "", + t.vertexAlphas ? "#define USE_COLOR_ALPHA" : "", + t.vertexUv1s ? "#define USE_UV1" : "", + t.vertexUv2s ? "#define USE_UV2" : "", + t.vertexUv3s ? "#define USE_UV3" : "", + t.pointsUvs ? "#define USE_POINTS_UV" : "", + t.flatShading ? "#define FLAT_SHADED" : "", + t.skinning ? "#define USE_SKINNING" : "", + t.morphTargets ? "#define USE_MORPHTARGETS" : "", + t.morphNormals && t.flatShading === !1 ? "#define USE_MORPHNORMALS" : "", + t.morphColors && t.isWebGL2 ? "#define USE_MORPHCOLORS" : "", + t.morphTargetsCount > 0 && t.isWebGL2 ? "#define MORPHTARGETS_TEXTURE" : "", + t.morphTargetsCount > 0 && t.isWebGL2 ? "#define MORPHTARGETS_TEXTURE_STRIDE " + t.morphTextureStride : "", + t.morphTargetsCount > 0 && t.isWebGL2 ? "#define MORPHTARGETS_COUNT " + t.morphTargetsCount : "", + t.doubleSided ? "#define DOUBLE_SIDED" : "", + t.flipSided ? "#define FLIP_SIDED" : "", + t.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", + t.shadowMapEnabled ? "#define " + l : "", + t.sizeAttenuation ? "#define USE_SIZEATTENUATION" : "", + t.numLightProbes > 0 ? "#define USE_LIGHT_PROBES" : "", + t.useLegacyLights ? "#define LEGACY_LIGHTS" : "", + t.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", + t.logarithmicDepthBuffer && t.rendererExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "", + "uniform mat4 modelMatrix;", + "uniform mat4 modelViewMatrix;", + "uniform mat4 projectionMatrix;", + "uniform mat4 viewMatrix;", + "uniform mat3 normalMatrix;", + "uniform vec3 cameraPosition;", + "uniform bool isOrthographic;", + "#ifdef USE_INSTANCING", + " attribute mat4 instanceMatrix;", + "#endif", + "#ifdef USE_INSTANCING_COLOR", + " attribute vec3 instanceColor;", + "#endif", + "attribute vec3 position;", + "attribute vec3 normal;", + "attribute vec2 uv;", + "#ifdef USE_UV1", + " attribute vec2 uv1;", + "#endif", + "#ifdef USE_UV2", + " attribute vec2 uv2;", + "#endif", + "#ifdef USE_UV3", + " attribute vec2 uv3;", + "#endif", + "#ifdef USE_TANGENT", + " attribute vec4 tangent;", + "#endif", + "#if defined( USE_COLOR_ALPHA )", + " attribute vec4 color;", + "#elif defined( USE_COLOR )", + " attribute vec3 color;", + "#endif", + "#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )", + " attribute vec3 morphTarget0;", + " attribute vec3 morphTarget1;", + " attribute vec3 morphTarget2;", + " attribute vec3 morphTarget3;", + " #ifdef USE_MORPHNORMALS", + " attribute vec3 morphNormal0;", + " attribute vec3 morphNormal1;", + " attribute vec3 morphNormal2;", + " attribute vec3 morphNormal3;", + " #else", + " attribute vec3 morphTarget4;", + " attribute vec3 morphTarget5;", + " attribute vec3 morphTarget6;", + " attribute vec3 morphTarget7;", + " #endif", + "#endif", + "#ifdef USE_SKINNING", + " attribute vec4 skinIndex;", + " attribute vec4 skinWeight;", + "#endif", + ` +` + ].filter(Zn).join(` +`), b = [ + m, + Oa(t), + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v, + t.useFog && t.fog ? "#define USE_FOG" : "", + t.useFog && t.fogExp2 ? "#define FOG_EXP2" : "", + t.map ? "#define USE_MAP" : "", + t.matcap ? "#define USE_MATCAP" : "", + t.envMap ? "#define USE_ENVMAP" : "", + t.envMap ? "#define " + c : "", + t.envMap ? "#define " + h : "", + t.envMap ? "#define " + d : "", + p ? "#define CUBEUV_TEXEL_WIDTH " + p.texelWidth : "", + p ? "#define CUBEUV_TEXEL_HEIGHT " + p.texelHeight : "", + p ? "#define CUBEUV_MAX_MIP " + p.maxMip + ".0" : "", + t.lightMap ? "#define USE_LIGHTMAP" : "", + t.aoMap ? "#define USE_AOMAP" : "", + t.bumpMap ? "#define USE_BUMPMAP" : "", + t.normalMap ? "#define USE_NORMALMAP" : "", + t.normalMapObjectSpace ? "#define USE_NORMALMAP_OBJECTSPACE" : "", + t.normalMapTangentSpace ? "#define USE_NORMALMAP_TANGENTSPACE" : "", + t.emissiveMap ? "#define USE_EMISSIVEMAP" : "", + t.anisotropy ? "#define USE_ANISOTROPY" : "", + t.anisotropyMap ? "#define USE_ANISOTROPYMAP" : "", + t.clearcoat ? "#define USE_CLEARCOAT" : "", + t.clearcoatMap ? "#define USE_CLEARCOATMAP" : "", + t.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "", + t.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", + t.iridescence ? "#define USE_IRIDESCENCE" : "", + t.iridescenceMap ? "#define USE_IRIDESCENCEMAP" : "", + t.iridescenceThicknessMap ? "#define USE_IRIDESCENCE_THICKNESSMAP" : "", + t.specularMap ? "#define USE_SPECULARMAP" : "", + t.specularColorMap ? "#define USE_SPECULAR_COLORMAP" : "", + t.specularIntensityMap ? "#define USE_SPECULAR_INTENSITYMAP" : "", + t.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", + t.metalnessMap ? "#define USE_METALNESSMAP" : "", + t.alphaMap ? "#define USE_ALPHAMAP" : "", + t.alphaTest ? "#define USE_ALPHATEST" : "", + t.alphaHash ? "#define USE_ALPHAHASH" : "", + t.sheen ? "#define USE_SHEEN" : "", + t.sheenColorMap ? "#define USE_SHEEN_COLORMAP" : "", + t.sheenRoughnessMap ? "#define USE_SHEEN_ROUGHNESSMAP" : "", + t.transmission ? "#define USE_TRANSMISSION" : "", + t.transmissionMap ? "#define USE_TRANSMISSIONMAP" : "", + t.thicknessMap ? "#define USE_THICKNESSMAP" : "", + t.vertexTangents && t.flatShading === !1 ? "#define USE_TANGENT" : "", + t.vertexColors || t.instancingColor ? "#define USE_COLOR" : "", + t.vertexAlphas ? "#define USE_COLOR_ALPHA" : "", + t.vertexUv1s ? "#define USE_UV1" : "", + t.vertexUv2s ? "#define USE_UV2" : "", + t.vertexUv3s ? "#define USE_UV3" : "", + t.pointsUvs ? "#define USE_POINTS_UV" : "", + t.gradientMap ? "#define USE_GRADIENTMAP" : "", + t.flatShading ? "#define FLAT_SHADED" : "", + t.doubleSided ? "#define DOUBLE_SIDED" : "", + t.flipSided ? "#define FLIP_SIDED" : "", + t.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", + t.shadowMapEnabled ? "#define " + l : "", + t.premultipliedAlpha ? "#define PREMULTIPLIED_ALPHA" : "", + t.numLightProbes > 0 ? "#define USE_LIGHT_PROBES" : "", + t.useLegacyLights ? "#define LEGACY_LIGHTS" : "", + t.decodeVideoTexture ? "#define DECODE_VIDEO_TEXTURE" : "", + t.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", + t.logarithmicDepthBuffer && t.rendererExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "", + "uniform mat4 viewMatrix;", + "uniform vec3 cameraPosition;", + "uniform bool isOrthographic;", + t.toneMapping !== ln ? "#define TONE_MAPPING" : "", + t.toneMapping !== ln ? Be.tonemapping_pars_fragment : "", + // this code is required here because it is used by the toneMapping() function defined below + t.toneMapping !== ln ? hf("toneMapping", t.toneMapping) : "", + t.dithering ? "#define DITHERING" : "", + t.opaque ? "#define OPAQUE" : "", + Be.colorspace_pars_fragment, + // this code is required here because it is used by the various encoding/decoding function defined below + uf("linearToOutputTexel", t.outputColorSpace), + t.useDepthPacking ? "#define DEPTH_PACKING " + t.depthPacking : "", + ` +` + ].filter(Zn).join(` +`)), o = rs(o), o = Ia(o, t), o = Na(o, t), a = rs(a), a = Ia(a, t), a = Na(a, t), o = Fa(o), a = Fa(a), t.isWebGL2 && t.isRawShaderMaterial !== !0 && (S = `#version 300 es +`, u = [ + g, + "precision mediump sampler2DArray;", + "#define attribute in", + "#define varying out", + "#define texture2D texture" + ].join(` +`) + ` +` + u, b = [ + "precision mediump sampler2DArray;", + "#define varying in", + t.glslVersion === ta ? "" : "layout(location = 0) out highp vec4 pc_fragColor;", + t.glslVersion === ta ? "" : "#define gl_FragColor pc_fragColor", + "#define gl_FragDepthEXT gl_FragDepth", + "#define texture2D texture", + "#define textureCube texture", + "#define texture2DProj textureProj", + "#define texture2DLodEXT textureLod", + "#define texture2DProjLodEXT textureProjLod", + "#define textureCubeLodEXT textureLod", + "#define texture2DGradEXT textureGrad", + "#define texture2DProjGradEXT textureProjGrad", + "#define textureCubeGradEXT textureGrad" + ].join(` +`) + ` +` + b); + const R = S + u + o, D = S + b + a, C = Da(r, r.VERTEX_SHADER, R), A = Da(r, r.FRAGMENT_SHADER, D); + r.attachShader(f, C), r.attachShader(f, A), t.index0AttributeName !== void 0 ? r.bindAttribLocation(f, 0, t.index0AttributeName) : t.morphTargets === !0 && r.bindAttribLocation(f, 0, "position"), r.linkProgram(f); + function W(Z) { + if (i.debug.checkShaderErrors) { + const re = r.getProgramInfoLog(f).trim(), L = r.getShaderInfoLog(C).trim(), F = r.getShaderInfoLog(A).trim(); + let V = !0, Y = !0; + if (r.getProgramParameter(f, r.LINK_STATUS) === !1) + if (V = !1, typeof i.debug.onShaderError == "function") + i.debug.onShaderError(r, f, C, A); + else { + const X = Ua(r, C, "vertex"), k = Ua(r, A, "fragment"); + console.error( + "THREE.WebGLProgram: Shader Error " + r.getError() + " - VALIDATE_STATUS " + r.getProgramParameter(f, r.VALIDATE_STATUS) + ` + +Program Info Log: ` + re + ` +` + X + ` +` + k + ); + } + else re !== "" ? console.warn("THREE.WebGLProgram: Program Info Log:", re) : (L === "" || F === "") && (Y = !1); + Y && (Z.diagnostics = { + runnable: V, + programLog: re, + vertexShader: { + log: L, + prefix: u + }, + fragmentShader: { + log: F, + prefix: b + } + }); + } + r.deleteShader(C), r.deleteShader(A), x = new Zi(r, f), y = mf(r, f); + } + let x; + this.getUniforms = function() { + return x === void 0 && W(this), x; + }; + let y; + this.getAttributes = function() { + return y === void 0 && W(this), y; + }; + let z = t.rendererExtensionParallelShaderCompile === !1; + return this.isReady = function() { + return z === !1 && (z = r.getProgramParameter(f, af)), z; + }, this.destroy = function() { + n.releaseStatesOfProgram(this), r.deleteProgram(f), this.program = void 0; + }, this.type = t.shaderType, this.name = t.shaderName, this.id = of++, this.cacheKey = e, this.usedTimes = 1, this.program = f, this.vertexShader = C, this.fragmentShader = A, this; +} +let wf = 0; +class Rf { + constructor() { + this.shaderCache = /* @__PURE__ */ new Map(), this.materialCache = /* @__PURE__ */ new Map(); + } + update(e) { + const t = e.vertexShader, n = e.fragmentShader, r = this._getShaderStage(t), s = this._getShaderStage(n), o = this._getShaderCacheForMaterial(e); + return o.has(r) === !1 && (o.add(r), r.usedTimes++), o.has(s) === !1 && (o.add(s), s.usedTimes++), this; + } + remove(e) { + const t = this.materialCache.get(e); + for (const n of t) + n.usedTimes--, n.usedTimes === 0 && this.shaderCache.delete(n.code); + return this.materialCache.delete(e), this; + } + getVertexShaderID(e) { + return this._getShaderStage(e.vertexShader).id; + } + getFragmentShaderID(e) { + return this._getShaderStage(e.fragmentShader).id; + } + dispose() { + this.shaderCache.clear(), this.materialCache.clear(); + } + _getShaderCacheForMaterial(e) { + const t = this.materialCache; + let n = t.get(e); + return n === void 0 && (n = /* @__PURE__ */ new Set(), t.set(e, n)), n; + } + _getShaderStage(e) { + const t = this.shaderCache; + let n = t.get(e); + return n === void 0 && (n = new Cf(e), t.set(e, n)), n; + } +} +class Cf { + constructor(e) { + this.id = wf++, this.code = e, this.usedTimes = 0; + } +} +function Lf(i, e, t, n, r, s, o) { + const a = new bo(), l = new Rf(), c = [], h = r.isWebGL2, d = r.logarithmicDepthBuffer, p = r.vertexTextures; + let m = r.precision; + const g = { + MeshDepthMaterial: "depth", + MeshDistanceMaterial: "distanceRGBA", + MeshNormalMaterial: "normal", + MeshBasicMaterial: "basic", + MeshLambertMaterial: "lambert", + MeshPhongMaterial: "phong", + MeshToonMaterial: "toon", + MeshStandardMaterial: "physical", + MeshPhysicalMaterial: "physical", + MeshMatcapMaterial: "matcap", + LineBasicMaterial: "basic", + LineDashedMaterial: "dashed", + PointsMaterial: "points", + ShadowMaterial: "shadow", + SpriteMaterial: "sprite" + }; + function v(x) { + return x === 0 ? "uv" : `uv${x}`; + } + function f(x, y, z, Z, re) { + const L = Z.fog, F = re.geometry, V = x.isMeshStandardMaterial ? Z.environment : null, Y = (x.isMeshStandardMaterial ? t : e).get(x.envMap || V), X = Y && Y.mapping === rr ? Y.image.height : null, k = g[x.type]; + x.precision !== null && (m = r.getMaxPrecision(x.precision), m !== x.precision && console.warn("THREE.WebGLProgram.getParameters:", x.precision, "not supported, using", m, "instead.")); + const q = F.morphAttributes.position || F.morphAttributes.normal || F.morphAttributes.color, Q = q !== void 0 ? q.length : 0; + let ce = 0; + F.morphAttributes.position !== void 0 && (ce = 1), F.morphAttributes.normal !== void 0 && (ce = 2), F.morphAttributes.color !== void 0 && (ce = 3); + let H, j, oe, ve; + if (k) { + const nt = Gt[k]; + H = nt.vertexShader, j = nt.fragmentShader; + } else + H = x.vertexShader, j = x.fragmentShader, l.update(x), oe = l.getVertexShaderID(x), ve = l.getFragmentShaderID(x); + const _e = i.getRenderTarget(), we = re.isInstancedMesh === !0, Ae = re.isBatchedMesh === !0, ge = !!x.map, Pe = !!x.matcap, N = !!Y, rt = !!x.aoMap, Me = !!x.lightMap, Re = !!x.bumpMap, pe = !!x.normalMap, je = !!x.displacementMap, be = !!x.emissiveMap, M = !!x.metalnessMap, _ = !!x.roughnessMap, I = x.anisotropy > 0, $ = x.clearcoat > 0, K = x.iridescence > 0, J = x.sheen > 0, me = x.transmission > 0, ae = I && !!x.anisotropyMap, he = $ && !!x.clearcoatMap, ye = $ && !!x.clearcoatNormalMap, Fe = $ && !!x.clearcoatRoughnessMap, ee = K && !!x.iridescenceMap, Ye = K && !!x.iridescenceThicknessMap, ze = J && !!x.sheenColorMap, De = J && !!x.sheenRoughnessMap, Ee = !!x.specularMap, ue = !!x.specularColorMap, T = !!x.specularIntensityMap, ne = me && !!x.transmissionMap, xe = me && !!x.thicknessMap, fe = !!x.gradientMap, te = !!x.alphaMap, w = x.alphaTest > 0, ie = !!x.alphaHash, le = !!x.extensions, Ce = !!F.attributes.uv1, Te = !!F.attributes.uv2, ke = !!F.attributes.uv3; + let We = ln; + return x.toneMapped && (_e === null || _e.isXRRenderTarget === !0) && (We = i.toneMapping), { + isWebGL2: h, + shaderID: k, + shaderType: x.type, + shaderName: x.name, + vertexShader: H, + fragmentShader: j, + defines: x.defines, + customVertexShaderID: oe, + customFragmentShaderID: ve, + isRawShaderMaterial: x.isRawShaderMaterial === !0, + glslVersion: x.glslVersion, + precision: m, + batching: Ae, + instancing: we, + instancingColor: we && re.instanceColor !== null, + supportsVertexTextures: p, + outputColorSpace: _e === null ? i.outputColorSpace : _e.isXRRenderTarget === !0 ? _e.texture.colorSpace : $t, + map: ge, + matcap: Pe, + envMap: N, + envMapMode: N && Y.mapping, + envMapCubeUVHeight: X, + aoMap: rt, + lightMap: Me, + bumpMap: Re, + normalMap: pe, + displacementMap: p && je, + emissiveMap: be, + normalMapObjectSpace: pe && x.normalMapType === Ol, + normalMapTangentSpace: pe && x.normalMapType === vo, + metalnessMap: M, + roughnessMap: _, + anisotropy: I, + anisotropyMap: ae, + clearcoat: $, + clearcoatMap: he, + clearcoatNormalMap: ye, + clearcoatRoughnessMap: Fe, + iridescence: K, + iridescenceMap: ee, + iridescenceThicknessMap: Ye, + sheen: J, + sheenColorMap: ze, + sheenRoughnessMap: De, + specularMap: Ee, + specularColorMap: ue, + specularIntensityMap: T, + transmission: me, + transmissionMap: ne, + thicknessMap: xe, + gradientMap: fe, + opaque: x.transparent === !1 && x.blending === $n, + alphaMap: te, + alphaTest: w, + alphaHash: ie, + combine: x.combine, + // + mapUv: ge && v(x.map.channel), + aoMapUv: rt && v(x.aoMap.channel), + lightMapUv: Me && v(x.lightMap.channel), + bumpMapUv: Re && v(x.bumpMap.channel), + normalMapUv: pe && v(x.normalMap.channel), + displacementMapUv: je && v(x.displacementMap.channel), + emissiveMapUv: be && v(x.emissiveMap.channel), + metalnessMapUv: M && v(x.metalnessMap.channel), + roughnessMapUv: _ && v(x.roughnessMap.channel), + anisotropyMapUv: ae && v(x.anisotropyMap.channel), + clearcoatMapUv: he && v(x.clearcoatMap.channel), + clearcoatNormalMapUv: ye && v(x.clearcoatNormalMap.channel), + clearcoatRoughnessMapUv: Fe && v(x.clearcoatRoughnessMap.channel), + iridescenceMapUv: ee && v(x.iridescenceMap.channel), + iridescenceThicknessMapUv: Ye && v(x.iridescenceThicknessMap.channel), + sheenColorMapUv: ze && v(x.sheenColorMap.channel), + sheenRoughnessMapUv: De && v(x.sheenRoughnessMap.channel), + specularMapUv: Ee && v(x.specularMap.channel), + specularColorMapUv: ue && v(x.specularColorMap.channel), + specularIntensityMapUv: T && v(x.specularIntensityMap.channel), + transmissionMapUv: ne && v(x.transmissionMap.channel), + thicknessMapUv: xe && v(x.thicknessMap.channel), + alphaMapUv: te && v(x.alphaMap.channel), + // + vertexTangents: !!F.attributes.tangent && (pe || I), + vertexColors: x.vertexColors, + vertexAlphas: x.vertexColors === !0 && !!F.attributes.color && F.attributes.color.itemSize === 4, + vertexUv1s: Ce, + vertexUv2s: Te, + vertexUv3s: ke, + pointsUvs: re.isPoints === !0 && !!F.attributes.uv && (ge || te), + fog: !!L, + useFog: x.fog === !0, + fogExp2: L && L.isFogExp2, + flatShading: x.flatShading === !0, + sizeAttenuation: x.sizeAttenuation === !0, + logarithmicDepthBuffer: d, + skinning: re.isSkinnedMesh === !0, + morphTargets: F.morphAttributes.position !== void 0, + morphNormals: F.morphAttributes.normal !== void 0, + morphColors: F.morphAttributes.color !== void 0, + morphTargetsCount: Q, + morphTextureStride: ce, + numDirLights: y.directional.length, + numPointLights: y.point.length, + numSpotLights: y.spot.length, + numSpotLightMaps: y.spotLightMap.length, + numRectAreaLights: y.rectArea.length, + numHemiLights: y.hemi.length, + numDirLightShadows: y.directionalShadowMap.length, + numPointLightShadows: y.pointShadowMap.length, + numSpotLightShadows: y.spotShadowMap.length, + numSpotLightShadowsWithMaps: y.numSpotLightShadowsWithMaps, + numLightProbes: y.numLightProbes, + numClippingPlanes: o.numPlanes, + numClipIntersection: o.numIntersection, + dithering: x.dithering, + shadowMapEnabled: i.shadowMap.enabled && z.length > 0, + shadowMapType: i.shadowMap.type, + toneMapping: We, + useLegacyLights: i._useLegacyLights, + decodeVideoTexture: ge && x.map.isVideoTexture === !0 && Ke.getTransfer(x.map.colorSpace) === Ze, + premultipliedAlpha: x.premultipliedAlpha, + doubleSided: x.side === Kt, + flipSided: x.side === Mt, + useDepthPacking: x.depthPacking >= 0, + depthPacking: x.depthPacking || 0, + index0AttributeName: x.index0AttributeName, + extensionDerivatives: le && x.extensions.derivatives === !0, + extensionFragDepth: le && x.extensions.fragDepth === !0, + extensionDrawBuffers: le && x.extensions.drawBuffers === !0, + extensionShaderTextureLOD: le && x.extensions.shaderTextureLOD === !0, + extensionClipCullDistance: le && x.extensions.clipCullDistance && n.has("WEBGL_clip_cull_distance"), + rendererExtensionFragDepth: h || n.has("EXT_frag_depth"), + rendererExtensionDrawBuffers: h || n.has("WEBGL_draw_buffers"), + rendererExtensionShaderTextureLod: h || n.has("EXT_shader_texture_lod"), + rendererExtensionParallelShaderCompile: n.has("KHR_parallel_shader_compile"), + customProgramCacheKey: x.customProgramCacheKey() + }; + } + function u(x) { + const y = []; + if (x.shaderID ? y.push(x.shaderID) : (y.push(x.customVertexShaderID), y.push(x.customFragmentShaderID)), x.defines !== void 0) + for (const z in x.defines) + y.push(z), y.push(x.defines[z]); + return x.isRawShaderMaterial === !1 && (b(y, x), S(y, x), y.push(i.outputColorSpace)), y.push(x.customProgramCacheKey), y.join(); + } + function b(x, y) { + x.push(y.precision), x.push(y.outputColorSpace), x.push(y.envMapMode), x.push(y.envMapCubeUVHeight), x.push(y.mapUv), x.push(y.alphaMapUv), x.push(y.lightMapUv), x.push(y.aoMapUv), x.push(y.bumpMapUv), x.push(y.normalMapUv), x.push(y.displacementMapUv), x.push(y.emissiveMapUv), x.push(y.metalnessMapUv), x.push(y.roughnessMapUv), x.push(y.anisotropyMapUv), x.push(y.clearcoatMapUv), x.push(y.clearcoatNormalMapUv), x.push(y.clearcoatRoughnessMapUv), x.push(y.iridescenceMapUv), x.push(y.iridescenceThicknessMapUv), x.push(y.sheenColorMapUv), x.push(y.sheenRoughnessMapUv), x.push(y.specularMapUv), x.push(y.specularColorMapUv), x.push(y.specularIntensityMapUv), x.push(y.transmissionMapUv), x.push(y.thicknessMapUv), x.push(y.combine), x.push(y.fogExp2), x.push(y.sizeAttenuation), x.push(y.morphTargetsCount), x.push(y.morphAttributeCount), x.push(y.numDirLights), x.push(y.numPointLights), x.push(y.numSpotLights), x.push(y.numSpotLightMaps), x.push(y.numHemiLights), x.push(y.numRectAreaLights), x.push(y.numDirLightShadows), x.push(y.numPointLightShadows), x.push(y.numSpotLightShadows), x.push(y.numSpotLightShadowsWithMaps), x.push(y.numLightProbes), x.push(y.shadowMapType), x.push(y.toneMapping), x.push(y.numClippingPlanes), x.push(y.numClipIntersection), x.push(y.depthPacking); + } + function S(x, y) { + a.disableAll(), y.isWebGL2 && a.enable(0), y.supportsVertexTextures && a.enable(1), y.instancing && a.enable(2), y.instancingColor && a.enable(3), y.matcap && a.enable(4), y.envMap && a.enable(5), y.normalMapObjectSpace && a.enable(6), y.normalMapTangentSpace && a.enable(7), y.clearcoat && a.enable(8), y.iridescence && a.enable(9), y.alphaTest && a.enable(10), y.vertexColors && a.enable(11), y.vertexAlphas && a.enable(12), y.vertexUv1s && a.enable(13), y.vertexUv2s && a.enable(14), y.vertexUv3s && a.enable(15), y.vertexTangents && a.enable(16), y.anisotropy && a.enable(17), y.alphaHash && a.enable(18), y.batching && a.enable(19), x.push(a.mask), a.disableAll(), y.fog && a.enable(0), y.useFog && a.enable(1), y.flatShading && a.enable(2), y.logarithmicDepthBuffer && a.enable(3), y.skinning && a.enable(4), y.morphTargets && a.enable(5), y.morphNormals && a.enable(6), y.morphColors && a.enable(7), y.premultipliedAlpha && a.enable(8), y.shadowMapEnabled && a.enable(9), y.useLegacyLights && a.enable(10), y.doubleSided && a.enable(11), y.flipSided && a.enable(12), y.useDepthPacking && a.enable(13), y.dithering && a.enable(14), y.transmission && a.enable(15), y.sheen && a.enable(16), y.opaque && a.enable(17), y.pointsUvs && a.enable(18), y.decodeVideoTexture && a.enable(19), x.push(a.mask); + } + function R(x) { + const y = g[x.type]; + let z; + if (y) { + const Z = Gt[y]; + z = hc.clone(Z.uniforms); + } else + z = x.uniforms; + return z; + } + function D(x, y) { + let z; + for (let Z = 0, re = c.length; Z < re; Z++) { + const L = c[Z]; + if (L.cacheKey === y) { + z = L, ++z.usedTimes; + break; + } + } + return z === void 0 && (z = new Af(i, y, x, s), c.push(z)), z; + } + function C(x) { + if (--x.usedTimes === 0) { + const y = c.indexOf(x); + c[y] = c[c.length - 1], c.pop(), x.destroy(); + } + } + function A(x) { + l.remove(x); + } + function W() { + l.dispose(); + } + return { + getParameters: f, + getProgramCacheKey: u, + getUniforms: R, + acquireProgram: D, + releaseProgram: C, + releaseShaderCache: A, + // Exposed for resource monitoring & error feedback via renderer.info: + programs: c, + dispose: W + }; +} +function Pf() { + let i = /* @__PURE__ */ new WeakMap(); + function e(s) { + let o = i.get(s); + return o === void 0 && (o = {}, i.set(s, o)), o; + } + function t(s) { + i.delete(s); + } + function n(s, o, a) { + i.get(s)[o] = a; + } + function r() { + i = /* @__PURE__ */ new WeakMap(); + } + return { + get: e, + remove: t, + update: n, + dispose: r + }; +} +function Df(i, e) { + return i.groupOrder !== e.groupOrder ? i.groupOrder - e.groupOrder : i.renderOrder !== e.renderOrder ? i.renderOrder - e.renderOrder : i.material.id !== e.material.id ? i.material.id - e.material.id : i.z !== e.z ? i.z - e.z : i.id - e.id; +} +function Ba(i, e) { + return i.groupOrder !== e.groupOrder ? i.groupOrder - e.groupOrder : i.renderOrder !== e.renderOrder ? i.renderOrder - e.renderOrder : i.z !== e.z ? e.z - i.z : i.id - e.id; +} +function za() { + const i = []; + let e = 0; + const t = [], n = [], r = []; + function s() { + e = 0, t.length = 0, n.length = 0, r.length = 0; + } + function o(d, p, m, g, v, f) { + let u = i[e]; + return u === void 0 ? (u = { + id: d.id, + object: d, + geometry: p, + material: m, + groupOrder: g, + renderOrder: d.renderOrder, + z: v, + group: f + }, i[e] = u) : (u.id = d.id, u.object = d, u.geometry = p, u.material = m, u.groupOrder = g, u.renderOrder = d.renderOrder, u.z = v, u.group = f), e++, u; + } + function a(d, p, m, g, v, f) { + const u = o(d, p, m, g, v, f); + m.transmission > 0 ? n.push(u) : m.transparent === !0 ? r.push(u) : t.push(u); + } + function l(d, p, m, g, v, f) { + const u = o(d, p, m, g, v, f); + m.transmission > 0 ? n.unshift(u) : m.transparent === !0 ? r.unshift(u) : t.unshift(u); + } + function c(d, p) { + t.length > 1 && t.sort(d || Df), n.length > 1 && n.sort(p || Ba), r.length > 1 && r.sort(p || Ba); + } + function h() { + for (let d = e, p = i.length; d < p; d++) { + const m = i[d]; + if (m.id === null) break; + m.id = null, m.object = null, m.geometry = null, m.material = null, m.group = null; + } + } + return { + opaque: t, + transmissive: n, + transparent: r, + init: s, + push: a, + unshift: l, + finish: h, + sort: c + }; +} +function Uf() { + let i = /* @__PURE__ */ new WeakMap(); + function e(n, r) { + const s = i.get(n); + let o; + return s === void 0 ? (o = new za(), i.set(n, [o])) : r >= s.length ? (o = new za(), s.push(o)) : o = s[r], o; + } + function t() { + i = /* @__PURE__ */ new WeakMap(); + } + return { + get: e, + dispose: t + }; +} +function If() { + const i = {}; + return { + get: function(e) { + if (i[e.id] !== void 0) + return i[e.id]; + let t; + switch (e.type) { + case "DirectionalLight": + t = { + direction: new P(), + color: new Xe() + }; + break; + case "SpotLight": + t = { + position: new P(), + direction: new P(), + color: new Xe(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0 + }; + break; + case "PointLight": + t = { + position: new P(), + color: new Xe(), + distance: 0, + decay: 0 + }; + break; + case "HemisphereLight": + t = { + direction: new P(), + skyColor: new Xe(), + groundColor: new Xe() + }; + break; + case "RectAreaLight": + t = { + color: new Xe(), + position: new P(), + halfWidth: new P(), + halfHeight: new P() + }; + break; + } + return i[e.id] = t, t; + } + }; +} +function Nf() { + const i = {}; + return { + get: function(e) { + if (i[e.id] !== void 0) + return i[e.id]; + let t; + switch (e.type) { + case "DirectionalLight": + t = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Ie() + }; + break; + case "SpotLight": + t = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Ie() + }; + break; + case "PointLight": + t = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Ie(), + shadowCameraNear: 1, + shadowCameraFar: 1e3 + }; + break; + } + return i[e.id] = t, t; + } + }; +} +let Ff = 0; +function Of(i, e) { + return (e.castShadow ? 2 : 0) - (i.castShadow ? 2 : 0) + (e.map ? 1 : 0) - (i.map ? 1 : 0); +} +function Bf(i, e) { + const t = new If(), n = Nf(), r = { + version: 0, + hash: { + directionalLength: -1, + pointLength: -1, + spotLength: -1, + rectAreaLength: -1, + hemiLength: -1, + numDirectionalShadows: -1, + numPointShadows: -1, + numSpotShadows: -1, + numSpotMaps: -1, + numLightProbes: -1 + }, + ambient: [0, 0, 0], + probe: [], + directional: [], + directionalShadow: [], + directionalShadowMap: [], + directionalShadowMatrix: [], + spot: [], + spotLightMap: [], + spotShadow: [], + spotShadowMap: [], + spotLightMatrix: [], + rectArea: [], + rectAreaLTC1: null, + rectAreaLTC2: null, + point: [], + pointShadow: [], + pointShadowMap: [], + pointShadowMatrix: [], + hemi: [], + numSpotLightShadowsWithMaps: 0, + numLightProbes: 0 + }; + for (let h = 0; h < 9; h++) r.probe.push(new P()); + const s = new P(), o = new Qe(), a = new Qe(); + function l(h, d) { + let p = 0, m = 0, g = 0; + for (let Z = 0; Z < 9; Z++) r.probe[Z].set(0, 0, 0); + let v = 0, f = 0, u = 0, b = 0, S = 0, R = 0, D = 0, C = 0, A = 0, W = 0, x = 0; + h.sort(Of); + const y = d === !0 ? Math.PI : 1; + for (let Z = 0, re = h.length; Z < re; Z++) { + const L = h[Z], F = L.color, V = L.intensity, Y = L.distance, X = L.shadow && L.shadow.map ? L.shadow.map.texture : null; + if (L.isAmbientLight) + p += F.r * V * y, m += F.g * V * y, g += F.b * V * y; + else if (L.isLightProbe) { + for (let k = 0; k < 9; k++) + r.probe[k].addScaledVector(L.sh.coefficients[k], V); + x++; + } else if (L.isDirectionalLight) { + const k = t.get(L); + if (k.color.copy(L.color).multiplyScalar(L.intensity * y), L.castShadow) { + const q = L.shadow, Q = n.get(L); + Q.shadowBias = q.bias, Q.shadowNormalBias = q.normalBias, Q.shadowRadius = q.radius, Q.shadowMapSize = q.mapSize, r.directionalShadow[v] = Q, r.directionalShadowMap[v] = X, r.directionalShadowMatrix[v] = L.shadow.matrix, R++; + } + r.directional[v] = k, v++; + } else if (L.isSpotLight) { + const k = t.get(L); + k.position.setFromMatrixPosition(L.matrixWorld), k.color.copy(F).multiplyScalar(V * y), k.distance = Y, k.coneCos = Math.cos(L.angle), k.penumbraCos = Math.cos(L.angle * (1 - L.penumbra)), k.decay = L.decay, r.spot[u] = k; + const q = L.shadow; + if (L.map && (r.spotLightMap[A] = L.map, A++, q.updateMatrices(L), L.castShadow && W++), r.spotLightMatrix[u] = q.matrix, L.castShadow) { + const Q = n.get(L); + Q.shadowBias = q.bias, Q.shadowNormalBias = q.normalBias, Q.shadowRadius = q.radius, Q.shadowMapSize = q.mapSize, r.spotShadow[u] = Q, r.spotShadowMap[u] = X, C++; + } + u++; + } else if (L.isRectAreaLight) { + const k = t.get(L); + k.color.copy(F).multiplyScalar(V), k.halfWidth.set(L.width * 0.5, 0, 0), k.halfHeight.set(0, L.height * 0.5, 0), r.rectArea[b] = k, b++; + } else if (L.isPointLight) { + const k = t.get(L); + if (k.color.copy(L.color).multiplyScalar(L.intensity * y), k.distance = L.distance, k.decay = L.decay, L.castShadow) { + const q = L.shadow, Q = n.get(L); + Q.shadowBias = q.bias, Q.shadowNormalBias = q.normalBias, Q.shadowRadius = q.radius, Q.shadowMapSize = q.mapSize, Q.shadowCameraNear = q.camera.near, Q.shadowCameraFar = q.camera.far, r.pointShadow[f] = Q, r.pointShadowMap[f] = X, r.pointShadowMatrix[f] = L.shadow.matrix, D++; + } + r.point[f] = k, f++; + } else if (L.isHemisphereLight) { + const k = t.get(L); + k.skyColor.copy(L.color).multiplyScalar(V * y), k.groundColor.copy(L.groundColor).multiplyScalar(V * y), r.hemi[S] = k, S++; + } + } + b > 0 && (e.isWebGL2 ? i.has("OES_texture_float_linear") === !0 ? (r.rectAreaLTC1 = se.LTC_FLOAT_1, r.rectAreaLTC2 = se.LTC_FLOAT_2) : (r.rectAreaLTC1 = se.LTC_HALF_1, r.rectAreaLTC2 = se.LTC_HALF_2) : i.has("OES_texture_float_linear") === !0 ? (r.rectAreaLTC1 = se.LTC_FLOAT_1, r.rectAreaLTC2 = se.LTC_FLOAT_2) : i.has("OES_texture_half_float_linear") === !0 ? (r.rectAreaLTC1 = se.LTC_HALF_1, r.rectAreaLTC2 = se.LTC_HALF_2) : console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")), r.ambient[0] = p, r.ambient[1] = m, r.ambient[2] = g; + const z = r.hash; + (z.directionalLength !== v || z.pointLength !== f || z.spotLength !== u || z.rectAreaLength !== b || z.hemiLength !== S || z.numDirectionalShadows !== R || z.numPointShadows !== D || z.numSpotShadows !== C || z.numSpotMaps !== A || z.numLightProbes !== x) && (r.directional.length = v, r.spot.length = u, r.rectArea.length = b, r.point.length = f, r.hemi.length = S, r.directionalShadow.length = R, r.directionalShadowMap.length = R, r.pointShadow.length = D, r.pointShadowMap.length = D, r.spotShadow.length = C, r.spotShadowMap.length = C, r.directionalShadowMatrix.length = R, r.pointShadowMatrix.length = D, r.spotLightMatrix.length = C + A - W, r.spotLightMap.length = A, r.numSpotLightShadowsWithMaps = W, r.numLightProbes = x, z.directionalLength = v, z.pointLength = f, z.spotLength = u, z.rectAreaLength = b, z.hemiLength = S, z.numDirectionalShadows = R, z.numPointShadows = D, z.numSpotShadows = C, z.numSpotMaps = A, z.numLightProbes = x, r.version = Ff++); + } + function c(h, d) { + let p = 0, m = 0, g = 0, v = 0, f = 0; + const u = d.matrixWorldInverse; + for (let b = 0, S = h.length; b < S; b++) { + const R = h[b]; + if (R.isDirectionalLight) { + const D = r.directional[p]; + D.direction.setFromMatrixPosition(R.matrixWorld), s.setFromMatrixPosition(R.target.matrixWorld), D.direction.sub(s), D.direction.transformDirection(u), p++; + } else if (R.isSpotLight) { + const D = r.spot[g]; + D.position.setFromMatrixPosition(R.matrixWorld), D.position.applyMatrix4(u), D.direction.setFromMatrixPosition(R.matrixWorld), s.setFromMatrixPosition(R.target.matrixWorld), D.direction.sub(s), D.direction.transformDirection(u), g++; + } else if (R.isRectAreaLight) { + const D = r.rectArea[v]; + D.position.setFromMatrixPosition(R.matrixWorld), D.position.applyMatrix4(u), a.identity(), o.copy(R.matrixWorld), o.premultiply(u), a.extractRotation(o), D.halfWidth.set(R.width * 0.5, 0, 0), D.halfHeight.set(0, R.height * 0.5, 0), D.halfWidth.applyMatrix4(a), D.halfHeight.applyMatrix4(a), v++; + } else if (R.isPointLight) { + const D = r.point[m]; + D.position.setFromMatrixPosition(R.matrixWorld), D.position.applyMatrix4(u), m++; + } else if (R.isHemisphereLight) { + const D = r.hemi[f]; + D.direction.setFromMatrixPosition(R.matrixWorld), D.direction.transformDirection(u), f++; + } + } + } + return { + setup: l, + setupView: c, + state: r + }; +} +function Ga(i, e) { + const t = new Bf(i, e), n = [], r = []; + function s() { + n.length = 0, r.length = 0; + } + function o(d) { + n.push(d); + } + function a(d) { + r.push(d); + } + function l(d) { + t.setup(n, d); + } + function c(d) { + t.setupView(n, d); + } + return { + init: s, + state: { + lightsArray: n, + shadowsArray: r, + lights: t + }, + setupLights: l, + setupLightsView: c, + pushLight: o, + pushShadow: a + }; +} +function zf(i, e) { + let t = /* @__PURE__ */ new WeakMap(); + function n(s, o = 0) { + const a = t.get(s); + let l; + return a === void 0 ? (l = new Ga(i, e), t.set(s, [l])) : o >= a.length ? (l = new Ga(i, e), a.push(l)) : l = a[o], l; + } + function r() { + t = /* @__PURE__ */ new WeakMap(); + } + return { + get: n, + dispose: r + }; +} +class Gf extends Mi { + constructor(e) { + super(), this.isMeshDepthMaterial = !0, this.type = "MeshDepthMaterial", this.depthPacking = Nl, this.map = null, this.alphaMap = null, this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.wireframe = !1, this.wireframeLinewidth = 1, this.setValues(e); + } + copy(e) { + return super.copy(e), this.depthPacking = e.depthPacking, this.map = e.map, this.alphaMap = e.alphaMap, this.displacementMap = e.displacementMap, this.displacementScale = e.displacementScale, this.displacementBias = e.displacementBias, this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this; + } +} +class Hf extends Mi { + constructor(e) { + super(), this.isMeshDistanceMaterial = !0, this.type = "MeshDistanceMaterial", this.map = null, this.alphaMap = null, this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.setValues(e); + } + copy(e) { + return super.copy(e), this.map = e.map, this.alphaMap = e.alphaMap, this.displacementMap = e.displacementMap, this.displacementScale = e.displacementScale, this.displacementBias = e.displacementBias, this; + } +} +const Vf = `void main() { + gl_Position = vec4( position, 1.0 ); +}`, kf = `uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`; +function Wf(i, e, t) { + let n = new cs(); + const r = new Ie(), s = new Ie(), o = new $e(), a = new Gf({ depthPacking: Fl }), l = new Hf(), c = {}, h = t.maxTextureSize, d = { [un]: Mt, [Mt]: un, [Kt]: Kt }, p = new wn({ + defines: { + VSM_SAMPLES: 8 + }, + uniforms: { + shadow_pass: { value: null }, + resolution: { value: new Ie() }, + radius: { value: 4 } + }, + vertexShader: Vf, + fragmentShader: kf + }), m = p.clone(); + m.defines.HORIZONTAL_PASS = 1; + const g = new hn(); + g.setAttribute( + "position", + new Bt( + new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]), + 3 + ) + ); + const v = new Ot(g, p), f = this; + this.enabled = !1, this.autoUpdate = !0, this.needsUpdate = !1, this.type = so; + let u = this.type; + this.render = function(C, A, W) { + if (f.enabled === !1 || f.autoUpdate === !1 && f.needsUpdate === !1 || C.length === 0) return; + const x = i.getRenderTarget(), y = i.getActiveCubeFace(), z = i.getActiveMipmapLevel(), Z = i.state; + Z.setBlending(on), Z.buffers.color.setClear(1, 1, 1, 1), Z.buffers.depth.setTest(!0), Z.setScissorTest(!1); + const re = u !== jt && this.type === jt, L = u === jt && this.type !== jt; + for (let F = 0, V = C.length; F < V; F++) { + const Y = C[F], X = Y.shadow; + if (X === void 0) { + console.warn("THREE.WebGLShadowMap:", Y, "has no shadow."); + continue; + } + if (X.autoUpdate === !1 && X.needsUpdate === !1) continue; + r.copy(X.mapSize); + const k = X.getFrameExtents(); + if (r.multiply(k), s.copy(X.mapSize), (r.x > h || r.y > h) && (r.x > h && (s.x = Math.floor(h / k.x), r.x = s.x * k.x, X.mapSize.x = s.x), r.y > h && (s.y = Math.floor(h / k.y), r.y = s.y * k.y, X.mapSize.y = s.y)), X.map === null || re === !0 || L === !0) { + const Q = this.type !== jt ? { minFilter: gt, magFilter: gt } : {}; + X.map !== null && X.map.dispose(), X.map = new bn(r.x, r.y, Q), X.map.texture.name = Y.name + ".shadowMap", X.camera.updateProjectionMatrix(); + } + i.setRenderTarget(X.map), i.clear(); + const q = X.getViewportCount(); + for (let Q = 0; Q < q; Q++) { + const ce = X.getViewport(Q); + o.set( + s.x * ce.x, + s.y * ce.y, + s.x * ce.z, + s.y * ce.w + ), Z.viewport(o), X.updateMatrices(Y, Q), n = X.getFrustum(), R(A, W, X.camera, Y, this.type); + } + X.isPointLightShadow !== !0 && this.type === jt && b(X, W), X.needsUpdate = !1; + } + u = this.type, f.needsUpdate = !1, i.setRenderTarget(x, y, z); + }; + function b(C, A) { + const W = e.update(v); + p.defines.VSM_SAMPLES !== C.blurSamples && (p.defines.VSM_SAMPLES = C.blurSamples, m.defines.VSM_SAMPLES = C.blurSamples, p.needsUpdate = !0, m.needsUpdate = !0), C.mapPass === null && (C.mapPass = new bn(r.x, r.y)), p.uniforms.shadow_pass.value = C.map.texture, p.uniforms.resolution.value = C.mapSize, p.uniforms.radius.value = C.radius, i.setRenderTarget(C.mapPass), i.clear(), i.renderBufferDirect(A, null, W, p, v, null), m.uniforms.shadow_pass.value = C.mapPass.texture, m.uniforms.resolution.value = C.mapSize, m.uniforms.radius.value = C.radius, i.setRenderTarget(C.map), i.clear(), i.renderBufferDirect(A, null, W, m, v, null); + } + function S(C, A, W, x) { + let y = null; + const z = W.isPointLight === !0 ? C.customDistanceMaterial : C.customDepthMaterial; + if (z !== void 0) + y = z; + else if (y = W.isPointLight === !0 ? l : a, i.localClippingEnabled && A.clipShadows === !0 && Array.isArray(A.clippingPlanes) && A.clippingPlanes.length !== 0 || A.displacementMap && A.displacementScale !== 0 || A.alphaMap && A.alphaTest > 0 || A.map && A.alphaTest > 0) { + const Z = y.uuid, re = A.uuid; + let L = c[Z]; + L === void 0 && (L = {}, c[Z] = L); + let F = L[re]; + F === void 0 && (F = y.clone(), L[re] = F, A.addEventListener("dispose", D)), y = F; + } + if (y.visible = A.visible, y.wireframe = A.wireframe, x === jt ? y.side = A.shadowSide !== null ? A.shadowSide : A.side : y.side = A.shadowSide !== null ? A.shadowSide : d[A.side], y.alphaMap = A.alphaMap, y.alphaTest = A.alphaTest, y.map = A.map, y.clipShadows = A.clipShadows, y.clippingPlanes = A.clippingPlanes, y.clipIntersection = A.clipIntersection, y.displacementMap = A.displacementMap, y.displacementScale = A.displacementScale, y.displacementBias = A.displacementBias, y.wireframeLinewidth = A.wireframeLinewidth, y.linewidth = A.linewidth, W.isPointLight === !0 && y.isMeshDistanceMaterial === !0) { + const Z = i.properties.get(y); + Z.light = W; + } + return y; + } + function R(C, A, W, x, y) { + if (C.visible === !1) return; + if (C.layers.test(A.layers) && (C.isMesh || C.isLine || C.isPoints) && (C.castShadow || C.receiveShadow && y === jt) && (!C.frustumCulled || n.intersectsObject(C))) { + C.modelViewMatrix.multiplyMatrices(W.matrixWorldInverse, C.matrixWorld); + const re = e.update(C), L = C.material; + if (Array.isArray(L)) { + const F = re.groups; + for (let V = 0, Y = F.length; V < Y; V++) { + const X = F[V], k = L[X.materialIndex]; + if (k && k.visible) { + const q = S(C, k, x, y); + C.onBeforeShadow(i, C, A, W, re, q, X), i.renderBufferDirect(W, null, re, q, C, X), C.onAfterShadow(i, C, A, W, re, q, X); + } + } + } else if (L.visible) { + const F = S(C, L, x, y); + C.onBeforeShadow(i, C, A, W, re, F, null), i.renderBufferDirect(W, null, re, F, C, null), C.onAfterShadow(i, C, A, W, re, F, null); + } + } + const Z = C.children; + for (let re = 0, L = Z.length; re < L; re++) + R(Z[re], A, W, x, y); + } + function D(C) { + C.target.removeEventListener("dispose", D); + for (const W in c) { + const x = c[W], y = C.target.uuid; + y in x && (x[y].dispose(), delete x[y]); + } + } +} +function Xf(i, e, t) { + const n = t.isWebGL2; + function r() { + let w = !1; + const ie = new $e(); + let le = null; + const Ce = new $e(0, 0, 0, 0); + return { + setMask: function(Te) { + le !== Te && !w && (i.colorMask(Te, Te, Te, Te), le = Te); + }, + setLocked: function(Te) { + w = Te; + }, + setClear: function(Te, ke, We, et, nt) { + nt === !0 && (Te *= et, ke *= et, We *= et), ie.set(Te, ke, We, et), Ce.equals(ie) === !1 && (i.clearColor(Te, ke, We, et), Ce.copy(ie)); + }, + reset: function() { + w = !1, le = null, Ce.set(-1, 0, 0, 0); + } + }; + } + function s() { + let w = !1, ie = null, le = null, Ce = null; + return { + setTest: function(Te) { + Te ? Ae(i.DEPTH_TEST) : ge(i.DEPTH_TEST); + }, + setMask: function(Te) { + ie !== Te && !w && (i.depthMask(Te), ie = Te); + }, + setFunc: function(Te) { + if (le !== Te) { + switch (Te) { + case hl: + i.depthFunc(i.NEVER); + break; + case dl: + i.depthFunc(i.ALWAYS); + break; + case fl: + i.depthFunc(i.LESS); + break; + case $i: + i.depthFunc(i.LEQUAL); + break; + case pl: + i.depthFunc(i.EQUAL); + break; + case ml: + i.depthFunc(i.GEQUAL); + break; + case _l: + i.depthFunc(i.GREATER); + break; + case gl: + i.depthFunc(i.NOTEQUAL); + break; + default: + i.depthFunc(i.LEQUAL); + } + le = Te; + } + }, + setLocked: function(Te) { + w = Te; + }, + setClear: function(Te) { + Ce !== Te && (i.clearDepth(Te), Ce = Te); + }, + reset: function() { + w = !1, ie = null, le = null, Ce = null; + } + }; + } + function o() { + let w = !1, ie = null, le = null, Ce = null, Te = null, ke = null, We = null, et = null, nt = null; + return { + setTest: function(qe) { + w || (qe ? Ae(i.STENCIL_TEST) : ge(i.STENCIL_TEST)); + }, + setMask: function(qe) { + ie !== qe && !w && (i.stencilMask(qe), ie = qe); + }, + setFunc: function(qe, st, zt) { + (le !== qe || Ce !== st || Te !== zt) && (i.stencilFunc(qe, st, zt), le = qe, Ce = st, Te = zt); + }, + setOp: function(qe, st, zt) { + (ke !== qe || We !== st || et !== zt) && (i.stencilOp(qe, st, zt), ke = qe, We = st, et = zt); + }, + setLocked: function(qe) { + w = qe; + }, + setClear: function(qe) { + nt !== qe && (i.clearStencil(qe), nt = qe); + }, + reset: function() { + w = !1, ie = null, le = null, Ce = null, Te = null, ke = null, We = null, et = null, nt = null; + } + }; + } + const a = new r(), l = new s(), c = new o(), h = /* @__PURE__ */ new WeakMap(), d = /* @__PURE__ */ new WeakMap(); + let p = {}, m = {}, g = /* @__PURE__ */ new WeakMap(), v = [], f = null, u = !1, b = null, S = null, R = null, D = null, C = null, A = null, W = null, x = new Xe(0, 0, 0), y = 0, z = !1, Z = null, re = null, L = null, F = null, V = null; + const Y = i.getParameter(i.MAX_COMBINED_TEXTURE_IMAGE_UNITS); + let X = !1, k = 0; + const q = i.getParameter(i.VERSION); + q.indexOf("WebGL") !== -1 ? (k = parseFloat(/^WebGL (\d)/.exec(q)[1]), X = k >= 1) : q.indexOf("OpenGL ES") !== -1 && (k = parseFloat(/^OpenGL ES (\d)/.exec(q)[1]), X = k >= 2); + let Q = null, ce = {}; + const H = i.getParameter(i.SCISSOR_BOX), j = i.getParameter(i.VIEWPORT), oe = new $e().fromArray(H), ve = new $e().fromArray(j); + function _e(w, ie, le, Ce) { + const Te = new Uint8Array(4), ke = i.createTexture(); + i.bindTexture(w, ke), i.texParameteri(w, i.TEXTURE_MIN_FILTER, i.NEAREST), i.texParameteri(w, i.TEXTURE_MAG_FILTER, i.NEAREST); + for (let We = 0; We < le; We++) + n && (w === i.TEXTURE_3D || w === i.TEXTURE_2D_ARRAY) ? i.texImage3D(ie, 0, i.RGBA, 1, 1, Ce, 0, i.RGBA, i.UNSIGNED_BYTE, Te) : i.texImage2D(ie + We, 0, i.RGBA, 1, 1, 0, i.RGBA, i.UNSIGNED_BYTE, Te); + return ke; + } + const we = {}; + we[i.TEXTURE_2D] = _e(i.TEXTURE_2D, i.TEXTURE_2D, 1), we[i.TEXTURE_CUBE_MAP] = _e(i.TEXTURE_CUBE_MAP, i.TEXTURE_CUBE_MAP_POSITIVE_X, 6), n && (we[i.TEXTURE_2D_ARRAY] = _e(i.TEXTURE_2D_ARRAY, i.TEXTURE_2D_ARRAY, 1, 1), we[i.TEXTURE_3D] = _e(i.TEXTURE_3D, i.TEXTURE_3D, 1, 1)), a.setClear(0, 0, 0, 1), l.setClear(1), c.setClear(0), Ae(i.DEPTH_TEST), l.setFunc($i), be(!1), M(Ss), Ae(i.CULL_FACE), pe(on); + function Ae(w) { + p[w] !== !0 && (i.enable(w), p[w] = !0); + } + function ge(w) { + p[w] !== !1 && (i.disable(w), p[w] = !1); + } + function Pe(w, ie) { + return m[w] !== ie ? (i.bindFramebuffer(w, ie), m[w] = ie, n && (w === i.DRAW_FRAMEBUFFER && (m[i.FRAMEBUFFER] = ie), w === i.FRAMEBUFFER && (m[i.DRAW_FRAMEBUFFER] = ie)), !0) : !1; + } + function N(w, ie) { + let le = v, Ce = !1; + if (w) + if (le = g.get(ie), le === void 0 && (le = [], g.set(ie, le)), w.isWebGLMultipleRenderTargets) { + const Te = w.texture; + if (le.length !== Te.length || le[0] !== i.COLOR_ATTACHMENT0) { + for (let ke = 0, We = Te.length; ke < We; ke++) + le[ke] = i.COLOR_ATTACHMENT0 + ke; + le.length = Te.length, Ce = !0; + } + } else + le[0] !== i.COLOR_ATTACHMENT0 && (le[0] = i.COLOR_ATTACHMENT0, Ce = !0); + else + le[0] !== i.BACK && (le[0] = i.BACK, Ce = !0); + Ce && (t.isWebGL2 ? i.drawBuffers(le) : e.get("WEBGL_draw_buffers").drawBuffersWEBGL(le)); + } + function rt(w) { + return f !== w ? (i.useProgram(w), f = w, !0) : !1; + } + const Me = { + [Mn]: i.FUNC_ADD, + [Zo]: i.FUNC_SUBTRACT, + [$o]: i.FUNC_REVERSE_SUBTRACT + }; + if (n) + Me[bs] = i.MIN, Me[As] = i.MAX; + else { + const w = e.get("EXT_blend_minmax"); + w !== null && (Me[bs] = w.MIN_EXT, Me[As] = w.MAX_EXT); + } + const Re = { + [Jo]: i.ZERO, + [Qo]: i.ONE, + [el]: i.SRC_COLOR, + [Kr]: i.SRC_ALPHA, + [al]: i.SRC_ALPHA_SATURATE, + [rl]: i.DST_COLOR, + [nl]: i.DST_ALPHA, + [tl]: i.ONE_MINUS_SRC_COLOR, + [Zr]: i.ONE_MINUS_SRC_ALPHA, + [sl]: i.ONE_MINUS_DST_COLOR, + [il]: i.ONE_MINUS_DST_ALPHA, + [ol]: i.CONSTANT_COLOR, + [ll]: i.ONE_MINUS_CONSTANT_COLOR, + [cl]: i.CONSTANT_ALPHA, + [ul]: i.ONE_MINUS_CONSTANT_ALPHA + }; + function pe(w, ie, le, Ce, Te, ke, We, et, nt, qe) { + if (w === on) { + u === !0 && (ge(i.BLEND), u = !1); + return; + } + if (u === !1 && (Ae(i.BLEND), u = !0), w !== Ko) { + if (w !== b || qe !== z) { + if ((S !== Mn || C !== Mn) && (i.blendEquation(i.FUNC_ADD), S = Mn, C = Mn), qe) + switch (w) { + case $n: + i.blendFuncSeparate(i.ONE, i.ONE_MINUS_SRC_ALPHA, i.ONE, i.ONE_MINUS_SRC_ALPHA); + break; + case Es: + i.blendFunc(i.ONE, i.ONE); + break; + case ys: + i.blendFuncSeparate(i.ZERO, i.ONE_MINUS_SRC_COLOR, i.ZERO, i.ONE); + break; + case Ts: + i.blendFuncSeparate(i.ZERO, i.SRC_COLOR, i.ZERO, i.SRC_ALPHA); + break; + default: + console.error("THREE.WebGLState: Invalid blending: ", w); + break; + } + else + switch (w) { + case $n: + i.blendFuncSeparate(i.SRC_ALPHA, i.ONE_MINUS_SRC_ALPHA, i.ONE, i.ONE_MINUS_SRC_ALPHA); + break; + case Es: + i.blendFunc(i.SRC_ALPHA, i.ONE); + break; + case ys: + i.blendFuncSeparate(i.ZERO, i.ONE_MINUS_SRC_COLOR, i.ZERO, i.ONE); + break; + case Ts: + i.blendFunc(i.ZERO, i.SRC_COLOR); + break; + default: + console.error("THREE.WebGLState: Invalid blending: ", w); + break; + } + R = null, D = null, A = null, W = null, x.set(0, 0, 0), y = 0, b = w, z = qe; + } + return; + } + Te = Te || ie, ke = ke || le, We = We || Ce, (ie !== S || Te !== C) && (i.blendEquationSeparate(Me[ie], Me[Te]), S = ie, C = Te), (le !== R || Ce !== D || ke !== A || We !== W) && (i.blendFuncSeparate(Re[le], Re[Ce], Re[ke], Re[We]), R = le, D = Ce, A = ke, W = We), (et.equals(x) === !1 || nt !== y) && (i.blendColor(et.r, et.g, et.b, nt), x.copy(et), y = nt), b = w, z = !1; + } + function je(w, ie) { + w.side === Kt ? ge(i.CULL_FACE) : Ae(i.CULL_FACE); + let le = w.side === Mt; + ie && (le = !le), be(le), w.blending === $n && w.transparent === !1 ? pe(on) : pe(w.blending, w.blendEquation, w.blendSrc, w.blendDst, w.blendEquationAlpha, w.blendSrcAlpha, w.blendDstAlpha, w.blendColor, w.blendAlpha, w.premultipliedAlpha), l.setFunc(w.depthFunc), l.setTest(w.depthTest), l.setMask(w.depthWrite), a.setMask(w.colorWrite); + const Ce = w.stencilWrite; + c.setTest(Ce), Ce && (c.setMask(w.stencilWriteMask), c.setFunc(w.stencilFunc, w.stencilRef, w.stencilFuncMask), c.setOp(w.stencilFail, w.stencilZFail, w.stencilZPass)), I(w.polygonOffset, w.polygonOffsetFactor, w.polygonOffsetUnits), w.alphaToCoverage === !0 ? Ae(i.SAMPLE_ALPHA_TO_COVERAGE) : ge(i.SAMPLE_ALPHA_TO_COVERAGE); + } + function be(w) { + Z !== w && (w ? i.frontFace(i.CW) : i.frontFace(i.CCW), Z = w); + } + function M(w) { + w !== Yo ? (Ae(i.CULL_FACE), w !== re && (w === Ss ? i.cullFace(i.BACK) : w === jo ? i.cullFace(i.FRONT) : i.cullFace(i.FRONT_AND_BACK))) : ge(i.CULL_FACE), re = w; + } + function _(w) { + w !== L && (X && i.lineWidth(w), L = w); + } + function I(w, ie, le) { + w ? (Ae(i.POLYGON_OFFSET_FILL), (F !== ie || V !== le) && (i.polygonOffset(ie, le), F = ie, V = le)) : ge(i.POLYGON_OFFSET_FILL); + } + function $(w) { + w ? Ae(i.SCISSOR_TEST) : ge(i.SCISSOR_TEST); + } + function K(w) { + w === void 0 && (w = i.TEXTURE0 + Y - 1), Q !== w && (i.activeTexture(w), Q = w); + } + function J(w, ie, le) { + le === void 0 && (Q === null ? le = i.TEXTURE0 + Y - 1 : le = Q); + let Ce = ce[le]; + Ce === void 0 && (Ce = { type: void 0, texture: void 0 }, ce[le] = Ce), (Ce.type !== w || Ce.texture !== ie) && (Q !== le && (i.activeTexture(le), Q = le), i.bindTexture(w, ie || we[w]), Ce.type = w, Ce.texture = ie); + } + function me() { + const w = ce[Q]; + w !== void 0 && w.type !== void 0 && (i.bindTexture(w.type, null), w.type = void 0, w.texture = void 0); + } + function ae() { + try { + i.compressedTexImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function he() { + try { + i.compressedTexImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ye() { + try { + i.texSubImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function Fe() { + try { + i.texSubImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ee() { + try { + i.compressedTexSubImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function Ye() { + try { + i.compressedTexSubImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ze() { + try { + i.texStorage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function De() { + try { + i.texStorage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function Ee() { + try { + i.texImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ue() { + try { + i.texImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function T(w) { + oe.equals(w) === !1 && (i.scissor(w.x, w.y, w.z, w.w), oe.copy(w)); + } + function ne(w) { + ve.equals(w) === !1 && (i.viewport(w.x, w.y, w.z, w.w), ve.copy(w)); + } + function xe(w, ie) { + let le = d.get(ie); + le === void 0 && (le = /* @__PURE__ */ new WeakMap(), d.set(ie, le)); + let Ce = le.get(w); + Ce === void 0 && (Ce = i.getUniformBlockIndex(ie, w.name), le.set(w, Ce)); + } + function fe(w, ie) { + const Ce = d.get(ie).get(w); + h.get(ie) !== Ce && (i.uniformBlockBinding(ie, Ce, w.__bindingPointIndex), h.set(ie, Ce)); + } + function te() { + i.disable(i.BLEND), i.disable(i.CULL_FACE), i.disable(i.DEPTH_TEST), i.disable(i.POLYGON_OFFSET_FILL), i.disable(i.SCISSOR_TEST), i.disable(i.STENCIL_TEST), i.disable(i.SAMPLE_ALPHA_TO_COVERAGE), i.blendEquation(i.FUNC_ADD), i.blendFunc(i.ONE, i.ZERO), i.blendFuncSeparate(i.ONE, i.ZERO, i.ONE, i.ZERO), i.blendColor(0, 0, 0, 0), i.colorMask(!0, !0, !0, !0), i.clearColor(0, 0, 0, 0), i.depthMask(!0), i.depthFunc(i.LESS), i.clearDepth(1), i.stencilMask(4294967295), i.stencilFunc(i.ALWAYS, 0, 4294967295), i.stencilOp(i.KEEP, i.KEEP, i.KEEP), i.clearStencil(0), i.cullFace(i.BACK), i.frontFace(i.CCW), i.polygonOffset(0, 0), i.activeTexture(i.TEXTURE0), i.bindFramebuffer(i.FRAMEBUFFER, null), n === !0 && (i.bindFramebuffer(i.DRAW_FRAMEBUFFER, null), i.bindFramebuffer(i.READ_FRAMEBUFFER, null)), i.useProgram(null), i.lineWidth(1), i.scissor(0, 0, i.canvas.width, i.canvas.height), i.viewport(0, 0, i.canvas.width, i.canvas.height), p = {}, Q = null, ce = {}, m = {}, g = /* @__PURE__ */ new WeakMap(), v = [], f = null, u = !1, b = null, S = null, R = null, D = null, C = null, A = null, W = null, x = new Xe(0, 0, 0), y = 0, z = !1, Z = null, re = null, L = null, F = null, V = null, oe.set(0, 0, i.canvas.width, i.canvas.height), ve.set(0, 0, i.canvas.width, i.canvas.height), a.reset(), l.reset(), c.reset(); + } + return { + buffers: { + color: a, + depth: l, + stencil: c + }, + enable: Ae, + disable: ge, + bindFramebuffer: Pe, + drawBuffers: N, + useProgram: rt, + setBlending: pe, + setMaterial: je, + setFlipSided: be, + setCullFace: M, + setLineWidth: _, + setPolygonOffset: I, + setScissorTest: $, + activeTexture: K, + bindTexture: J, + unbindTexture: me, + compressedTexImage2D: ae, + compressedTexImage3D: he, + texImage2D: Ee, + texImage3D: ue, + updateUBOMapping: xe, + uniformBlockBinding: fe, + texStorage2D: ze, + texStorage3D: De, + texSubImage2D: ye, + texSubImage3D: Fe, + compressedTexSubImage2D: ee, + compressedTexSubImage3D: Ye, + scissor: T, + viewport: ne, + reset: te + }; +} +function qf(i, e, t, n, r, s, o) { + const a = r.isWebGL2, l = e.has("WEBGL_multisampled_render_to_texture") ? e.get("WEBGL_multisampled_render_to_texture") : null, c = typeof navigator > "u" ? !1 : /OculusBrowser/g.test(navigator.userAgent), h = /* @__PURE__ */ new WeakMap(); + let d; + const p = /* @__PURE__ */ new WeakMap(); + let m = !1; + try { + m = typeof OffscreenCanvas < "u" && new OffscreenCanvas(1, 1).getContext("2d") !== null; + } catch { + } + function g(M, _) { + return m ? ( + // eslint-disable-next-line compat/compat + new OffscreenCanvas(M, _) + ) : nr("canvas"); + } + function v(M, _, I, $) { + let K = 1; + if ((M.width > $ || M.height > $) && (K = $ / Math.max(M.width, M.height)), K < 1 || _ === !0) + if (typeof HTMLImageElement < "u" && M instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && M instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && M instanceof ImageBitmap) { + const J = _ ? is : Math.floor, me = J(K * M.width), ae = J(K * M.height); + d === void 0 && (d = g(me, ae)); + const he = I ? g(me, ae) : d; + return he.width = me, he.height = ae, he.getContext("2d").drawImage(M, 0, 0, me, ae), console.warn("THREE.WebGLRenderer: Texture has been resized from (" + M.width + "x" + M.height + ") to (" + me + "x" + ae + ")."), he; + } else + return "data" in M && console.warn("THREE.WebGLRenderer: Image in DataTexture is too big (" + M.width + "x" + M.height + ")."), M; + return M; + } + function f(M) { + return na(M.width) && na(M.height); + } + function u(M) { + return a ? !1 : M.wrapS !== Nt || M.wrapT !== Nt || M.minFilter !== gt && M.minFilter !== Rt; + } + function b(M, _) { + return M.generateMipmaps && _ && M.minFilter !== gt && M.minFilter !== Rt; + } + function S(M) { + i.generateMipmap(M); + } + function R(M, _, I, $, K = !1) { + if (a === !1) return _; + if (M !== null) { + if (i[M] !== void 0) return i[M]; + console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '" + M + "'"); + } + let J = _; + if (_ === i.RED && (I === i.FLOAT && (J = i.R32F), I === i.HALF_FLOAT && (J = i.R16F), I === i.UNSIGNED_BYTE && (J = i.R8)), _ === i.RED_INTEGER && (I === i.UNSIGNED_BYTE && (J = i.R8UI), I === i.UNSIGNED_SHORT && (J = i.R16UI), I === i.UNSIGNED_INT && (J = i.R32UI), I === i.BYTE && (J = i.R8I), I === i.SHORT && (J = i.R16I), I === i.INT && (J = i.R32I)), _ === i.RG && (I === i.FLOAT && (J = i.RG32F), I === i.HALF_FLOAT && (J = i.RG16F), I === i.UNSIGNED_BYTE && (J = i.RG8)), _ === i.RGBA) { + const me = K ? Ji : Ke.getTransfer($); + I === i.FLOAT && (J = i.RGBA32F), I === i.HALF_FLOAT && (J = i.RGBA16F), I === i.UNSIGNED_BYTE && (J = me === Ze ? i.SRGB8_ALPHA8 : i.RGBA8), I === i.UNSIGNED_SHORT_4_4_4_4 && (J = i.RGBA4), I === i.UNSIGNED_SHORT_5_5_5_1 && (J = i.RGB5_A1); + } + return (J === i.R16F || J === i.R32F || J === i.RG16F || J === i.RG32F || J === i.RGBA16F || J === i.RGBA32F) && e.get("EXT_color_buffer_float"), J; + } + function D(M, _, I) { + return b(M, I) === !0 || M.isFramebufferTexture && M.minFilter !== gt && M.minFilter !== Rt ? Math.log2(Math.max(_.width, _.height)) + 1 : M.mipmaps !== void 0 && M.mipmaps.length > 0 ? M.mipmaps.length : M.isCompressedTexture && Array.isArray(M.image) ? _.mipmaps.length : 1; + } + function C(M) { + return M === gt || M === ws || M === pr ? i.NEAREST : i.LINEAR; + } + function A(M) { + const _ = M.target; + _.removeEventListener("dispose", A), x(_), _.isVideoTexture && h.delete(_); + } + function W(M) { + const _ = M.target; + _.removeEventListener("dispose", W), z(_); + } + function x(M) { + const _ = n.get(M); + if (_.__webglInit === void 0) return; + const I = M.source, $ = p.get(I); + if ($) { + const K = $[_.__cacheKey]; + K.usedTimes--, K.usedTimes === 0 && y(M), Object.keys($).length === 0 && p.delete(I); + } + n.remove(M); + } + function y(M) { + const _ = n.get(M); + i.deleteTexture(_.__webglTexture); + const I = M.source, $ = p.get(I); + delete $[_.__cacheKey], o.memory.textures--; + } + function z(M) { + const _ = M.texture, I = n.get(M), $ = n.get(_); + if ($.__webglTexture !== void 0 && (i.deleteTexture($.__webglTexture), o.memory.textures--), M.depthTexture && M.depthTexture.dispose(), M.isWebGLCubeRenderTarget) + for (let K = 0; K < 6; K++) { + if (Array.isArray(I.__webglFramebuffer[K])) + for (let J = 0; J < I.__webglFramebuffer[K].length; J++) i.deleteFramebuffer(I.__webglFramebuffer[K][J]); + else + i.deleteFramebuffer(I.__webglFramebuffer[K]); + I.__webglDepthbuffer && i.deleteRenderbuffer(I.__webglDepthbuffer[K]); + } + else { + if (Array.isArray(I.__webglFramebuffer)) + for (let K = 0; K < I.__webglFramebuffer.length; K++) i.deleteFramebuffer(I.__webglFramebuffer[K]); + else + i.deleteFramebuffer(I.__webglFramebuffer); + if (I.__webglDepthbuffer && i.deleteRenderbuffer(I.__webglDepthbuffer), I.__webglMultisampledFramebuffer && i.deleteFramebuffer(I.__webglMultisampledFramebuffer), I.__webglColorRenderbuffer) + for (let K = 0; K < I.__webglColorRenderbuffer.length; K++) + I.__webglColorRenderbuffer[K] && i.deleteRenderbuffer(I.__webglColorRenderbuffer[K]); + I.__webglDepthRenderbuffer && i.deleteRenderbuffer(I.__webglDepthRenderbuffer); + } + if (M.isWebGLMultipleRenderTargets) + for (let K = 0, J = _.length; K < J; K++) { + const me = n.get(_[K]); + me.__webglTexture && (i.deleteTexture(me.__webglTexture), o.memory.textures--), n.remove(_[K]); + } + n.remove(_), n.remove(M); + } + let Z = 0; + function re() { + Z = 0; + } + function L() { + const M = Z; + return M >= r.maxTextures && console.warn("THREE.WebGLTextures: Trying to use " + M + " texture units while this GPU supports only " + r.maxTextures), Z += 1, M; + } + function F(M) { + const _ = []; + return _.push(M.wrapS), _.push(M.wrapT), _.push(M.wrapR || 0), _.push(M.magFilter), _.push(M.minFilter), _.push(M.anisotropy), _.push(M.internalFormat), _.push(M.format), _.push(M.type), _.push(M.generateMipmaps), _.push(M.premultiplyAlpha), _.push(M.flipY), _.push(M.unpackAlignment), _.push(M.colorSpace), _.join(); + } + function V(M, _) { + const I = n.get(M); + if (M.isVideoTexture && je(M), M.isRenderTargetTexture === !1 && M.version > 0 && I.__version !== M.version) { + const $ = M.image; + if ($ === null) + console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found."); + else if ($.complete === !1) + console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete"); + else { + oe(I, M, _); + return; + } + } + t.bindTexture(i.TEXTURE_2D, I.__webglTexture, i.TEXTURE0 + _); + } + function Y(M, _) { + const I = n.get(M); + if (M.version > 0 && I.__version !== M.version) { + oe(I, M, _); + return; + } + t.bindTexture(i.TEXTURE_2D_ARRAY, I.__webglTexture, i.TEXTURE0 + _); + } + function X(M, _) { + const I = n.get(M); + if (M.version > 0 && I.__version !== M.version) { + oe(I, M, _); + return; + } + t.bindTexture(i.TEXTURE_3D, I.__webglTexture, i.TEXTURE0 + _); + } + function k(M, _) { + const I = n.get(M); + if (M.version > 0 && I.__version !== M.version) { + ve(I, M, _); + return; + } + t.bindTexture(i.TEXTURE_CUBE_MAP, I.__webglTexture, i.TEXTURE0 + _); + } + const q = { + [Qr]: i.REPEAT, + [Nt]: i.CLAMP_TO_EDGE, + [es]: i.MIRRORED_REPEAT + }, Q = { + [gt]: i.NEAREST, + [ws]: i.NEAREST_MIPMAP_NEAREST, + [pr]: i.NEAREST_MIPMAP_LINEAR, + [Rt]: i.LINEAR, + [Al]: i.LINEAR_MIPMAP_NEAREST, + [_i]: i.LINEAR_MIPMAP_LINEAR + }, ce = { + [Bl]: i.NEVER, + [Wl]: i.ALWAYS, + [zl]: i.LESS, + [xo]: i.LEQUAL, + [Gl]: i.EQUAL, + [kl]: i.GEQUAL, + [Hl]: i.GREATER, + [Vl]: i.NOTEQUAL + }; + function H(M, _, I) { + if (I ? (i.texParameteri(M, i.TEXTURE_WRAP_S, q[_.wrapS]), i.texParameteri(M, i.TEXTURE_WRAP_T, q[_.wrapT]), (M === i.TEXTURE_3D || M === i.TEXTURE_2D_ARRAY) && i.texParameteri(M, i.TEXTURE_WRAP_R, q[_.wrapR]), i.texParameteri(M, i.TEXTURE_MAG_FILTER, Q[_.magFilter]), i.texParameteri(M, i.TEXTURE_MIN_FILTER, Q[_.minFilter])) : (i.texParameteri(M, i.TEXTURE_WRAP_S, i.CLAMP_TO_EDGE), i.texParameteri(M, i.TEXTURE_WRAP_T, i.CLAMP_TO_EDGE), (M === i.TEXTURE_3D || M === i.TEXTURE_2D_ARRAY) && i.texParameteri(M, i.TEXTURE_WRAP_R, i.CLAMP_TO_EDGE), (_.wrapS !== Nt || _.wrapT !== Nt) && console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."), i.texParameteri(M, i.TEXTURE_MAG_FILTER, C(_.magFilter)), i.texParameteri(M, i.TEXTURE_MIN_FILTER, C(_.minFilter)), _.minFilter !== gt && _.minFilter !== Rt && console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")), _.compareFunction && (i.texParameteri(M, i.TEXTURE_COMPARE_MODE, i.COMPARE_REF_TO_TEXTURE), i.texParameteri(M, i.TEXTURE_COMPARE_FUNC, ce[_.compareFunction])), e.has("EXT_texture_filter_anisotropic") === !0) { + const $ = e.get("EXT_texture_filter_anisotropic"); + if (_.magFilter === gt || _.minFilter !== pr && _.minFilter !== _i || _.type === an && e.has("OES_texture_float_linear") === !1 || a === !1 && _.type === gi && e.has("OES_texture_half_float_linear") === !1) return; + (_.anisotropy > 1 || n.get(_).__currentAnisotropy) && (i.texParameterf(M, $.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(_.anisotropy, r.getMaxAnisotropy())), n.get(_).__currentAnisotropy = _.anisotropy); + } + } + function j(M, _) { + let I = !1; + M.__webglInit === void 0 && (M.__webglInit = !0, _.addEventListener("dispose", A)); + const $ = _.source; + let K = p.get($); + K === void 0 && (K = {}, p.set($, K)); + const J = F(_); + if (J !== M.__cacheKey) { + K[J] === void 0 && (K[J] = { + texture: i.createTexture(), + usedTimes: 0 + }, o.memory.textures++, I = !0), K[J].usedTimes++; + const me = K[M.__cacheKey]; + me !== void 0 && (K[M.__cacheKey].usedTimes--, me.usedTimes === 0 && y(_)), M.__cacheKey = J, M.__webglTexture = K[J].texture; + } + return I; + } + function oe(M, _, I) { + let $ = i.TEXTURE_2D; + (_.isDataArrayTexture || _.isCompressedArrayTexture) && ($ = i.TEXTURE_2D_ARRAY), _.isData3DTexture && ($ = i.TEXTURE_3D); + const K = j(M, _), J = _.source; + t.bindTexture($, M.__webglTexture, i.TEXTURE0 + I); + const me = n.get(J); + if (J.version !== me.__version || K === !0) { + t.activeTexture(i.TEXTURE0 + I); + const ae = Ke.getPrimaries(Ke.workingColorSpace), he = _.colorSpace === Ct ? null : Ke.getPrimaries(_.colorSpace), ye = _.colorSpace === Ct || ae === he ? i.NONE : i.BROWSER_DEFAULT_WEBGL; + i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, _.flipY), i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, _.premultiplyAlpha), i.pixelStorei(i.UNPACK_ALIGNMENT, _.unpackAlignment), i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL, ye); + const Fe = u(_) && f(_.image) === !1; + let ee = v(_.image, Fe, !1, r.maxTextureSize); + ee = be(_, ee); + const Ye = f(ee) || a, ze = s.convert(_.format, _.colorSpace); + let De = s.convert(_.type), Ee = R(_.internalFormat, ze, De, _.colorSpace, _.isVideoTexture); + H($, _, Ye); + let ue; + const T = _.mipmaps, ne = a && _.isVideoTexture !== !0 && Ee !== _o, xe = me.__version === void 0 || K === !0, fe = D(_, ee, Ye); + if (_.isDepthTexture) + Ee = i.DEPTH_COMPONENT, a ? _.type === an ? Ee = i.DEPTH_COMPONENT32F : _.type === sn ? Ee = i.DEPTH_COMPONENT24 : _.type === En ? Ee = i.DEPTH24_STENCIL8 : Ee = i.DEPTH_COMPONENT16 : _.type === an && console.error("WebGLRenderer: Floating point depth texture requires WebGL2."), _.format === yn && Ee === i.DEPTH_COMPONENT && _.type !== as && _.type !== sn && (console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."), _.type = sn, De = s.convert(_.type)), _.format === ti && Ee === i.DEPTH_COMPONENT && (Ee = i.DEPTH_STENCIL, _.type !== En && (console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."), _.type = En, De = s.convert(_.type))), xe && (ne ? t.texStorage2D(i.TEXTURE_2D, 1, Ee, ee.width, ee.height) : t.texImage2D(i.TEXTURE_2D, 0, Ee, ee.width, ee.height, 0, ze, De, null)); + else if (_.isDataTexture) + if (T.length > 0 && Ye) { + ne && xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, T[0].width, T[0].height); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], ne ? t.texSubImage2D(i.TEXTURE_2D, te, 0, 0, ue.width, ue.height, ze, De, ue.data) : t.texImage2D(i.TEXTURE_2D, te, Ee, ue.width, ue.height, 0, ze, De, ue.data); + _.generateMipmaps = !1; + } else + ne ? (xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, ee.width, ee.height), t.texSubImage2D(i.TEXTURE_2D, 0, 0, 0, ee.width, ee.height, ze, De, ee.data)) : t.texImage2D(i.TEXTURE_2D, 0, Ee, ee.width, ee.height, 0, ze, De, ee.data); + else if (_.isCompressedTexture) + if (_.isCompressedArrayTexture) { + ne && xe && t.texStorage3D(i.TEXTURE_2D_ARRAY, fe, Ee, T[0].width, T[0].height, ee.depth); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], _.format !== Ft ? ze !== null ? ne ? t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY, te, 0, 0, 0, ue.width, ue.height, ee.depth, ze, ue.data, 0, 0) : t.compressedTexImage3D(i.TEXTURE_2D_ARRAY, te, Ee, ue.width, ue.height, ee.depth, 0, ue.data, 0, 0) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()") : ne ? t.texSubImage3D(i.TEXTURE_2D_ARRAY, te, 0, 0, 0, ue.width, ue.height, ee.depth, ze, De, ue.data) : t.texImage3D(i.TEXTURE_2D_ARRAY, te, Ee, ue.width, ue.height, ee.depth, 0, ze, De, ue.data); + } else { + ne && xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, T[0].width, T[0].height); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], _.format !== Ft ? ze !== null ? ne ? t.compressedTexSubImage2D(i.TEXTURE_2D, te, 0, 0, ue.width, ue.height, ze, ue.data) : t.compressedTexImage2D(i.TEXTURE_2D, te, Ee, ue.width, ue.height, 0, ue.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()") : ne ? t.texSubImage2D(i.TEXTURE_2D, te, 0, 0, ue.width, ue.height, ze, De, ue.data) : t.texImage2D(i.TEXTURE_2D, te, Ee, ue.width, ue.height, 0, ze, De, ue.data); + } + else if (_.isDataArrayTexture) + ne ? (xe && t.texStorage3D(i.TEXTURE_2D_ARRAY, fe, Ee, ee.width, ee.height, ee.depth), t.texSubImage3D(i.TEXTURE_2D_ARRAY, 0, 0, 0, 0, ee.width, ee.height, ee.depth, ze, De, ee.data)) : t.texImage3D(i.TEXTURE_2D_ARRAY, 0, Ee, ee.width, ee.height, ee.depth, 0, ze, De, ee.data); + else if (_.isData3DTexture) + ne ? (xe && t.texStorage3D(i.TEXTURE_3D, fe, Ee, ee.width, ee.height, ee.depth), t.texSubImage3D(i.TEXTURE_3D, 0, 0, 0, 0, ee.width, ee.height, ee.depth, ze, De, ee.data)) : t.texImage3D(i.TEXTURE_3D, 0, Ee, ee.width, ee.height, ee.depth, 0, ze, De, ee.data); + else if (_.isFramebufferTexture) { + if (xe) + if (ne) + t.texStorage2D(i.TEXTURE_2D, fe, Ee, ee.width, ee.height); + else { + let te = ee.width, w = ee.height; + for (let ie = 0; ie < fe; ie++) + t.texImage2D(i.TEXTURE_2D, ie, Ee, te, w, 0, ze, De, null), te >>= 1, w >>= 1; + } + } else if (T.length > 0 && Ye) { + ne && xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, T[0].width, T[0].height); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], ne ? t.texSubImage2D(i.TEXTURE_2D, te, 0, 0, ze, De, ue) : t.texImage2D(i.TEXTURE_2D, te, Ee, ze, De, ue); + _.generateMipmaps = !1; + } else + ne ? (xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, ee.width, ee.height), t.texSubImage2D(i.TEXTURE_2D, 0, 0, 0, ze, De, ee)) : t.texImage2D(i.TEXTURE_2D, 0, Ee, ze, De, ee); + b(_, Ye) && S($), me.__version = J.version, _.onUpdate && _.onUpdate(_); + } + M.__version = _.version; + } + function ve(M, _, I) { + if (_.image.length !== 6) return; + const $ = j(M, _), K = _.source; + t.bindTexture(i.TEXTURE_CUBE_MAP, M.__webglTexture, i.TEXTURE0 + I); + const J = n.get(K); + if (K.version !== J.__version || $ === !0) { + t.activeTexture(i.TEXTURE0 + I); + const me = Ke.getPrimaries(Ke.workingColorSpace), ae = _.colorSpace === Ct ? null : Ke.getPrimaries(_.colorSpace), he = _.colorSpace === Ct || me === ae ? i.NONE : i.BROWSER_DEFAULT_WEBGL; + i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, _.flipY), i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, _.premultiplyAlpha), i.pixelStorei(i.UNPACK_ALIGNMENT, _.unpackAlignment), i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL, he); + const ye = _.isCompressedTexture || _.image[0].isCompressedTexture, Fe = _.image[0] && _.image[0].isDataTexture, ee = []; + for (let te = 0; te < 6; te++) + !ye && !Fe ? ee[te] = v(_.image[te], !1, !0, r.maxCubemapSize) : ee[te] = Fe ? _.image[te].image : _.image[te], ee[te] = be(_, ee[te]); + const Ye = ee[0], ze = f(Ye) || a, De = s.convert(_.format, _.colorSpace), Ee = s.convert(_.type), ue = R(_.internalFormat, De, Ee, _.colorSpace), T = a && _.isVideoTexture !== !0, ne = J.__version === void 0 || $ === !0; + let xe = D(_, Ye, ze); + H(i.TEXTURE_CUBE_MAP, _, ze); + let fe; + if (ye) { + T && ne && t.texStorage2D(i.TEXTURE_CUBE_MAP, xe, ue, Ye.width, Ye.height); + for (let te = 0; te < 6; te++) { + fe = ee[te].mipmaps; + for (let w = 0; w < fe.length; w++) { + const ie = fe[w]; + _.format !== Ft ? De !== null ? T ? t.compressedTexSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, 0, 0, ie.width, ie.height, De, ie.data) : t.compressedTexImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, ue, ie.width, ie.height, 0, ie.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()") : T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, 0, 0, ie.width, ie.height, De, Ee, ie.data) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, ue, ie.width, ie.height, 0, De, Ee, ie.data); + } + } + } else { + fe = _.mipmaps, T && ne && (fe.length > 0 && xe++, t.texStorage2D(i.TEXTURE_CUBE_MAP, xe, ue, ee[0].width, ee[0].height)); + for (let te = 0; te < 6; te++) + if (Fe) { + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, 0, 0, ee[te].width, ee[te].height, De, Ee, ee[te].data) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, ue, ee[te].width, ee[te].height, 0, De, Ee, ee[te].data); + for (let w = 0; w < fe.length; w++) { + const le = fe[w].image[te].image; + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, 0, 0, le.width, le.height, De, Ee, le.data) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, ue, le.width, le.height, 0, De, Ee, le.data); + } + } else { + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, 0, 0, De, Ee, ee[te]) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, ue, De, Ee, ee[te]); + for (let w = 0; w < fe.length; w++) { + const ie = fe[w]; + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, 0, 0, De, Ee, ie.image[te]) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, ue, De, Ee, ie.image[te]); + } + } + } + b(_, ze) && S(i.TEXTURE_CUBE_MAP), J.__version = K.version, _.onUpdate && _.onUpdate(_); + } + M.__version = _.version; + } + function _e(M, _, I, $, K, J) { + const me = s.convert(I.format, I.colorSpace), ae = s.convert(I.type), he = R(I.internalFormat, me, ae, I.colorSpace); + if (!n.get(_).__hasExternalTextures) { + const Fe = Math.max(1, _.width >> J), ee = Math.max(1, _.height >> J); + K === i.TEXTURE_3D || K === i.TEXTURE_2D_ARRAY ? t.texImage3D(K, J, he, Fe, ee, _.depth, 0, me, ae, null) : t.texImage2D(K, J, he, Fe, ee, 0, me, ae, null); + } + t.bindFramebuffer(i.FRAMEBUFFER, M), pe(_) ? l.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER, $, K, n.get(I).__webglTexture, 0, Re(_)) : (K === i.TEXTURE_2D || K >= i.TEXTURE_CUBE_MAP_POSITIVE_X && K <= i.TEXTURE_CUBE_MAP_NEGATIVE_Z) && i.framebufferTexture2D(i.FRAMEBUFFER, $, K, n.get(I).__webglTexture, J), t.bindFramebuffer(i.FRAMEBUFFER, null); + } + function we(M, _, I) { + if (i.bindRenderbuffer(i.RENDERBUFFER, M), _.depthBuffer && !_.stencilBuffer) { + let $ = a === !0 ? i.DEPTH_COMPONENT24 : i.DEPTH_COMPONENT16; + if (I || pe(_)) { + const K = _.depthTexture; + K && K.isDepthTexture && (K.type === an ? $ = i.DEPTH_COMPONENT32F : K.type === sn && ($ = i.DEPTH_COMPONENT24)); + const J = Re(_); + pe(_) ? l.renderbufferStorageMultisampleEXT(i.RENDERBUFFER, J, $, _.width, _.height) : i.renderbufferStorageMultisample(i.RENDERBUFFER, J, $, _.width, _.height); + } else + i.renderbufferStorage(i.RENDERBUFFER, $, _.width, _.height); + i.framebufferRenderbuffer(i.FRAMEBUFFER, i.DEPTH_ATTACHMENT, i.RENDERBUFFER, M); + } else if (_.depthBuffer && _.stencilBuffer) { + const $ = Re(_); + I && pe(_) === !1 ? i.renderbufferStorageMultisample(i.RENDERBUFFER, $, i.DEPTH24_STENCIL8, _.width, _.height) : pe(_) ? l.renderbufferStorageMultisampleEXT(i.RENDERBUFFER, $, i.DEPTH24_STENCIL8, _.width, _.height) : i.renderbufferStorage(i.RENDERBUFFER, i.DEPTH_STENCIL, _.width, _.height), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.DEPTH_STENCIL_ATTACHMENT, i.RENDERBUFFER, M); + } else { + const $ = _.isWebGLMultipleRenderTargets === !0 ? _.texture : [_.texture]; + for (let K = 0; K < $.length; K++) { + const J = $[K], me = s.convert(J.format, J.colorSpace), ae = s.convert(J.type), he = R(J.internalFormat, me, ae, J.colorSpace), ye = Re(_); + I && pe(_) === !1 ? i.renderbufferStorageMultisample(i.RENDERBUFFER, ye, he, _.width, _.height) : pe(_) ? l.renderbufferStorageMultisampleEXT(i.RENDERBUFFER, ye, he, _.width, _.height) : i.renderbufferStorage(i.RENDERBUFFER, he, _.width, _.height); + } + } + i.bindRenderbuffer(i.RENDERBUFFER, null); + } + function Ae(M, _) { + if (_ && _.isWebGLCubeRenderTarget) throw new Error("Depth Texture with cube render targets is not supported"); + if (t.bindFramebuffer(i.FRAMEBUFFER, M), !(_.depthTexture && _.depthTexture.isDepthTexture)) + throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture"); + (!n.get(_.depthTexture).__webglTexture || _.depthTexture.image.width !== _.width || _.depthTexture.image.height !== _.height) && (_.depthTexture.image.width = _.width, _.depthTexture.image.height = _.height, _.depthTexture.needsUpdate = !0), V(_.depthTexture, 0); + const $ = n.get(_.depthTexture).__webglTexture, K = Re(_); + if (_.depthTexture.format === yn) + pe(_) ? l.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER, i.DEPTH_ATTACHMENT, i.TEXTURE_2D, $, 0, K) : i.framebufferTexture2D(i.FRAMEBUFFER, i.DEPTH_ATTACHMENT, i.TEXTURE_2D, $, 0); + else if (_.depthTexture.format === ti) + pe(_) ? l.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER, i.DEPTH_STENCIL_ATTACHMENT, i.TEXTURE_2D, $, 0, K) : i.framebufferTexture2D(i.FRAMEBUFFER, i.DEPTH_STENCIL_ATTACHMENT, i.TEXTURE_2D, $, 0); + else + throw new Error("Unknown depthTexture format"); + } + function ge(M) { + const _ = n.get(M), I = M.isWebGLCubeRenderTarget === !0; + if (M.depthTexture && !_.__autoAllocateDepthBuffer) { + if (I) throw new Error("target.depthTexture not supported in Cube render targets"); + Ae(_.__webglFramebuffer, M); + } else if (I) { + _.__webglDepthbuffer = []; + for (let $ = 0; $ < 6; $++) + t.bindFramebuffer(i.FRAMEBUFFER, _.__webglFramebuffer[$]), _.__webglDepthbuffer[$] = i.createRenderbuffer(), we(_.__webglDepthbuffer[$], M, !1); + } else + t.bindFramebuffer(i.FRAMEBUFFER, _.__webglFramebuffer), _.__webglDepthbuffer = i.createRenderbuffer(), we(_.__webglDepthbuffer, M, !1); + t.bindFramebuffer(i.FRAMEBUFFER, null); + } + function Pe(M, _, I) { + const $ = n.get(M); + _ !== void 0 && _e($.__webglFramebuffer, M, M.texture, i.COLOR_ATTACHMENT0, i.TEXTURE_2D, 0), I !== void 0 && ge(M); + } + function N(M) { + const _ = M.texture, I = n.get(M), $ = n.get(_); + M.addEventListener("dispose", W), M.isWebGLMultipleRenderTargets !== !0 && ($.__webglTexture === void 0 && ($.__webglTexture = i.createTexture()), $.__version = _.version, o.memory.textures++); + const K = M.isWebGLCubeRenderTarget === !0, J = M.isWebGLMultipleRenderTargets === !0, me = f(M) || a; + if (K) { + I.__webglFramebuffer = []; + for (let ae = 0; ae < 6; ae++) + if (a && _.mipmaps && _.mipmaps.length > 0) { + I.__webglFramebuffer[ae] = []; + for (let he = 0; he < _.mipmaps.length; he++) + I.__webglFramebuffer[ae][he] = i.createFramebuffer(); + } else + I.__webglFramebuffer[ae] = i.createFramebuffer(); + } else { + if (a && _.mipmaps && _.mipmaps.length > 0) { + I.__webglFramebuffer = []; + for (let ae = 0; ae < _.mipmaps.length; ae++) + I.__webglFramebuffer[ae] = i.createFramebuffer(); + } else + I.__webglFramebuffer = i.createFramebuffer(); + if (J) + if (r.drawBuffers) { + const ae = M.texture; + for (let he = 0, ye = ae.length; he < ye; he++) { + const Fe = n.get(ae[he]); + Fe.__webglTexture === void 0 && (Fe.__webglTexture = i.createTexture(), o.memory.textures++); + } + } else + console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension."); + if (a && M.samples > 0 && pe(M) === !1) { + const ae = J ? _ : [_]; + I.__webglMultisampledFramebuffer = i.createFramebuffer(), I.__webglColorRenderbuffer = [], t.bindFramebuffer(i.FRAMEBUFFER, I.__webglMultisampledFramebuffer); + for (let he = 0; he < ae.length; he++) { + const ye = ae[he]; + I.__webglColorRenderbuffer[he] = i.createRenderbuffer(), i.bindRenderbuffer(i.RENDERBUFFER, I.__webglColorRenderbuffer[he]); + const Fe = s.convert(ye.format, ye.colorSpace), ee = s.convert(ye.type), Ye = R(ye.internalFormat, Fe, ee, ye.colorSpace, M.isXRRenderTarget === !0), ze = Re(M); + i.renderbufferStorageMultisample(i.RENDERBUFFER, ze, Ye, M.width, M.height), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.COLOR_ATTACHMENT0 + he, i.RENDERBUFFER, I.__webglColorRenderbuffer[he]); + } + i.bindRenderbuffer(i.RENDERBUFFER, null), M.depthBuffer && (I.__webglDepthRenderbuffer = i.createRenderbuffer(), we(I.__webglDepthRenderbuffer, M, !0)), t.bindFramebuffer(i.FRAMEBUFFER, null); + } + } + if (K) { + t.bindTexture(i.TEXTURE_CUBE_MAP, $.__webglTexture), H(i.TEXTURE_CUBE_MAP, _, me); + for (let ae = 0; ae < 6; ae++) + if (a && _.mipmaps && _.mipmaps.length > 0) + for (let he = 0; he < _.mipmaps.length; he++) + _e(I.__webglFramebuffer[ae][he], M, _, i.COLOR_ATTACHMENT0, i.TEXTURE_CUBE_MAP_POSITIVE_X + ae, he); + else + _e(I.__webglFramebuffer[ae], M, _, i.COLOR_ATTACHMENT0, i.TEXTURE_CUBE_MAP_POSITIVE_X + ae, 0); + b(_, me) && S(i.TEXTURE_CUBE_MAP), t.unbindTexture(); + } else if (J) { + const ae = M.texture; + for (let he = 0, ye = ae.length; he < ye; he++) { + const Fe = ae[he], ee = n.get(Fe); + t.bindTexture(i.TEXTURE_2D, ee.__webglTexture), H(i.TEXTURE_2D, Fe, me), _e(I.__webglFramebuffer, M, Fe, i.COLOR_ATTACHMENT0 + he, i.TEXTURE_2D, 0), b(Fe, me) && S(i.TEXTURE_2D); + } + t.unbindTexture(); + } else { + let ae = i.TEXTURE_2D; + if ((M.isWebGL3DRenderTarget || M.isWebGLArrayRenderTarget) && (a ? ae = M.isWebGL3DRenderTarget ? i.TEXTURE_3D : i.TEXTURE_2D_ARRAY : console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")), t.bindTexture(ae, $.__webglTexture), H(ae, _, me), a && _.mipmaps && _.mipmaps.length > 0) + for (let he = 0; he < _.mipmaps.length; he++) + _e(I.__webglFramebuffer[he], M, _, i.COLOR_ATTACHMENT0, ae, he); + else + _e(I.__webglFramebuffer, M, _, i.COLOR_ATTACHMENT0, ae, 0); + b(_, me) && S(ae), t.unbindTexture(); + } + M.depthBuffer && ge(M); + } + function rt(M) { + const _ = f(M) || a, I = M.isWebGLMultipleRenderTargets === !0 ? M.texture : [M.texture]; + for (let $ = 0, K = I.length; $ < K; $++) { + const J = I[$]; + if (b(J, _)) { + const me = M.isWebGLCubeRenderTarget ? i.TEXTURE_CUBE_MAP : i.TEXTURE_2D, ae = n.get(J).__webglTexture; + t.bindTexture(me, ae), S(me), t.unbindTexture(); + } + } + } + function Me(M) { + if (a && M.samples > 0 && pe(M) === !1) { + const _ = M.isWebGLMultipleRenderTargets ? M.texture : [M.texture], I = M.width, $ = M.height; + let K = i.COLOR_BUFFER_BIT; + const J = [], me = M.stencilBuffer ? i.DEPTH_STENCIL_ATTACHMENT : i.DEPTH_ATTACHMENT, ae = n.get(M), he = M.isWebGLMultipleRenderTargets === !0; + if (he) + for (let ye = 0; ye < _.length; ye++) + t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglMultisampledFramebuffer), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.RENDERBUFFER, null), t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglFramebuffer), i.framebufferTexture2D(i.DRAW_FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.TEXTURE_2D, null, 0); + t.bindFramebuffer(i.READ_FRAMEBUFFER, ae.__webglMultisampledFramebuffer), t.bindFramebuffer(i.DRAW_FRAMEBUFFER, ae.__webglFramebuffer); + for (let ye = 0; ye < _.length; ye++) { + J.push(i.COLOR_ATTACHMENT0 + ye), M.depthBuffer && J.push(me); + const Fe = ae.__ignoreDepthValues !== void 0 ? ae.__ignoreDepthValues : !1; + if (Fe === !1 && (M.depthBuffer && (K |= i.DEPTH_BUFFER_BIT), M.stencilBuffer && (K |= i.STENCIL_BUFFER_BIT)), he && i.framebufferRenderbuffer(i.READ_FRAMEBUFFER, i.COLOR_ATTACHMENT0, i.RENDERBUFFER, ae.__webglColorRenderbuffer[ye]), Fe === !0 && (i.invalidateFramebuffer(i.READ_FRAMEBUFFER, [me]), i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER, [me])), he) { + const ee = n.get(_[ye]).__webglTexture; + i.framebufferTexture2D(i.DRAW_FRAMEBUFFER, i.COLOR_ATTACHMENT0, i.TEXTURE_2D, ee, 0); + } + i.blitFramebuffer(0, 0, I, $, 0, 0, I, $, K, i.NEAREST), c && i.invalidateFramebuffer(i.READ_FRAMEBUFFER, J); + } + if (t.bindFramebuffer(i.READ_FRAMEBUFFER, null), t.bindFramebuffer(i.DRAW_FRAMEBUFFER, null), he) + for (let ye = 0; ye < _.length; ye++) { + t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglMultisampledFramebuffer), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.RENDERBUFFER, ae.__webglColorRenderbuffer[ye]); + const Fe = n.get(_[ye]).__webglTexture; + t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglFramebuffer), i.framebufferTexture2D(i.DRAW_FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.TEXTURE_2D, Fe, 0); + } + t.bindFramebuffer(i.DRAW_FRAMEBUFFER, ae.__webglMultisampledFramebuffer); + } + } + function Re(M) { + return Math.min(r.maxSamples, M.samples); + } + function pe(M) { + const _ = n.get(M); + return a && M.samples > 0 && e.has("WEBGL_multisampled_render_to_texture") === !0 && _.__useRenderToTexture !== !1; + } + function je(M) { + const _ = o.render.frame; + h.get(M) !== _ && (h.set(M, _), M.update()); + } + function be(M, _) { + const I = M.colorSpace, $ = M.format, K = M.type; + return M.isCompressedTexture === !0 || M.isVideoTexture === !0 || M.format === ts || I !== $t && I !== Ct && (Ke.getTransfer(I) === Ze ? a === !1 ? e.has("EXT_sRGB") === !0 && $ === Ft ? (M.format = ts, M.minFilter = Rt, M.generateMipmaps = !1) : _ = So.sRGBToLinear(_) : ($ !== Ft || K !== cn) && console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.") : console.error("THREE.WebGLTextures: Unsupported texture color space:", I)), _; + } + this.allocateTextureUnit = L, this.resetTextureUnits = re, this.setTexture2D = V, this.setTexture2DArray = Y, this.setTexture3D = X, this.setTextureCube = k, this.rebindTextures = Pe, this.setupRenderTarget = N, this.updateRenderTargetMipmap = rt, this.updateMultisampleRenderTarget = Me, this.setupDepthRenderbuffer = ge, this.setupFrameBufferTexture = _e, this.useMultisampledRTT = pe; +} +function Yf(i, e, t) { + const n = t.isWebGL2; + function r(s, o = Ct) { + let a; + const l = Ke.getTransfer(o); + if (s === cn) return i.UNSIGNED_BYTE; + if (s === uo) return i.UNSIGNED_SHORT_4_4_4_4; + if (s === ho) return i.UNSIGNED_SHORT_5_5_5_1; + if (s === wl) return i.BYTE; + if (s === Rl) return i.SHORT; + if (s === as) return i.UNSIGNED_SHORT; + if (s === co) return i.INT; + if (s === sn) return i.UNSIGNED_INT; + if (s === an) return i.FLOAT; + if (s === gi) + return n ? i.HALF_FLOAT : (a = e.get("OES_texture_half_float"), a !== null ? a.HALF_FLOAT_OES : null); + if (s === Cl) return i.ALPHA; + if (s === Ft) return i.RGBA; + if (s === Ll) return i.LUMINANCE; + if (s === Pl) return i.LUMINANCE_ALPHA; + if (s === yn) return i.DEPTH_COMPONENT; + if (s === ti) return i.DEPTH_STENCIL; + if (s === ts) + return a = e.get("EXT_sRGB"), a !== null ? a.SRGB_ALPHA_EXT : null; + if (s === Dl) return i.RED; + if (s === fo) return i.RED_INTEGER; + if (s === Ul) return i.RG; + if (s === po) return i.RG_INTEGER; + if (s === mo) return i.RGBA_INTEGER; + if (s === mr || s === _r || s === gr || s === vr) + if (l === Ze) + if (a = e.get("WEBGL_compressed_texture_s3tc_srgb"), a !== null) { + if (s === mr) return a.COMPRESSED_SRGB_S3TC_DXT1_EXT; + if (s === _r) return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; + if (s === gr) return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; + if (s === vr) return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; + } else + return null; + else if (a = e.get("WEBGL_compressed_texture_s3tc"), a !== null) { + if (s === mr) return a.COMPRESSED_RGB_S3TC_DXT1_EXT; + if (s === _r) return a.COMPRESSED_RGBA_S3TC_DXT1_EXT; + if (s === gr) return a.COMPRESSED_RGBA_S3TC_DXT3_EXT; + if (s === vr) return a.COMPRESSED_RGBA_S3TC_DXT5_EXT; + } else + return null; + if (s === Rs || s === Cs || s === Ls || s === Ps) + if (a = e.get("WEBGL_compressed_texture_pvrtc"), a !== null) { + if (s === Rs) return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + if (s === Cs) return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + if (s === Ls) return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + if (s === Ps) return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + } else + return null; + if (s === _o) + return a = e.get("WEBGL_compressed_texture_etc1"), a !== null ? a.COMPRESSED_RGB_ETC1_WEBGL : null; + if (s === Ds || s === Us) + if (a = e.get("WEBGL_compressed_texture_etc"), a !== null) { + if (s === Ds) return l === Ze ? a.COMPRESSED_SRGB8_ETC2 : a.COMPRESSED_RGB8_ETC2; + if (s === Us) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : a.COMPRESSED_RGBA8_ETC2_EAC; + } else + return null; + if (s === Is || s === Ns || s === Fs || s === Os || s === Bs || s === zs || s === Gs || s === Hs || s === Vs || s === ks || s === Ws || s === Xs || s === qs || s === Ys) + if (a = e.get("WEBGL_compressed_texture_astc"), a !== null) { + if (s === Is) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : a.COMPRESSED_RGBA_ASTC_4x4_KHR; + if (s === Ns) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : a.COMPRESSED_RGBA_ASTC_5x4_KHR; + if (s === Fs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : a.COMPRESSED_RGBA_ASTC_5x5_KHR; + if (s === Os) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : a.COMPRESSED_RGBA_ASTC_6x5_KHR; + if (s === Bs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : a.COMPRESSED_RGBA_ASTC_6x6_KHR; + if (s === zs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : a.COMPRESSED_RGBA_ASTC_8x5_KHR; + if (s === Gs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : a.COMPRESSED_RGBA_ASTC_8x6_KHR; + if (s === Hs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : a.COMPRESSED_RGBA_ASTC_8x8_KHR; + if (s === Vs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : a.COMPRESSED_RGBA_ASTC_10x5_KHR; + if (s === ks) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : a.COMPRESSED_RGBA_ASTC_10x6_KHR; + if (s === Ws) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : a.COMPRESSED_RGBA_ASTC_10x8_KHR; + if (s === Xs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : a.COMPRESSED_RGBA_ASTC_10x10_KHR; + if (s === qs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : a.COMPRESSED_RGBA_ASTC_12x10_KHR; + if (s === Ys) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : a.COMPRESSED_RGBA_ASTC_12x12_KHR; + } else + return null; + if (s === xr || s === js || s === Ks) + if (a = e.get("EXT_texture_compression_bptc"), a !== null) { + if (s === xr) return l === Ze ? a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : a.COMPRESSED_RGBA_BPTC_UNORM_EXT; + if (s === js) return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT; + if (s === Ks) return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT; + } else + return null; + if (s === Il || s === Zs || s === $s || s === Js) + if (a = e.get("EXT_texture_compression_rgtc"), a !== null) { + if (s === xr) return a.COMPRESSED_RED_RGTC1_EXT; + if (s === Zs) return a.COMPRESSED_SIGNED_RED_RGTC1_EXT; + if (s === $s) return a.COMPRESSED_RED_GREEN_RGTC2_EXT; + if (s === Js) return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT; + } else + return null; + return s === En ? n ? i.UNSIGNED_INT_24_8 : (a = e.get("WEBGL_depth_texture"), a !== null ? a.UNSIGNED_INT_24_8_WEBGL : null) : i[s] !== void 0 ? i[s] : null; + } + return { convert: r }; +} +class jf extends Tt { + constructor(e = []) { + super(), this.isArrayCamera = !0, this.cameras = e; + } +} +class qi extends dt { + constructor() { + super(), this.isGroup = !0, this.type = "Group"; + } +} +const Kf = { type: "move" }; +class kr { + constructor() { + this._targetRay = null, this._grip = null, this._hand = null; + } + getHandSpace() { + return this._hand === null && (this._hand = new qi(), this._hand.matrixAutoUpdate = !1, this._hand.visible = !1, this._hand.joints = {}, this._hand.inputState = { pinching: !1 }), this._hand; + } + getTargetRaySpace() { + return this._targetRay === null && (this._targetRay = new qi(), this._targetRay.matrixAutoUpdate = !1, this._targetRay.visible = !1, this._targetRay.hasLinearVelocity = !1, this._targetRay.linearVelocity = new P(), this._targetRay.hasAngularVelocity = !1, this._targetRay.angularVelocity = new P()), this._targetRay; + } + getGripSpace() { + return this._grip === null && (this._grip = new qi(), this._grip.matrixAutoUpdate = !1, this._grip.visible = !1, this._grip.hasLinearVelocity = !1, this._grip.linearVelocity = new P(), this._grip.hasAngularVelocity = !1, this._grip.angularVelocity = new P()), this._grip; + } + dispatchEvent(e) { + return this._targetRay !== null && this._targetRay.dispatchEvent(e), this._grip !== null && this._grip.dispatchEvent(e), this._hand !== null && this._hand.dispatchEvent(e), this; + } + connect(e) { + if (e && e.hand) { + const t = this._hand; + if (t) + for (const n of e.hand.values()) + this._getHandJoint(t, n); + } + return this.dispatchEvent({ type: "connected", data: e }), this; + } + disconnect(e) { + return this.dispatchEvent({ type: "disconnected", data: e }), this._targetRay !== null && (this._targetRay.visible = !1), this._grip !== null && (this._grip.visible = !1), this._hand !== null && (this._hand.visible = !1), this; + } + update(e, t, n) { + let r = null, s = null, o = null; + const a = this._targetRay, l = this._grip, c = this._hand; + if (e && t.session.visibilityState !== "visible-blurred") { + if (c && e.hand) { + o = !0; + for (const v of e.hand.values()) { + const f = t.getJointPose(v, n), u = this._getHandJoint(c, v); + f !== null && (u.matrix.fromArray(f.transform.matrix), u.matrix.decompose(u.position, u.rotation, u.scale), u.matrixWorldNeedsUpdate = !0, u.jointRadius = f.radius), u.visible = f !== null; + } + const h = c.joints["index-finger-tip"], d = c.joints["thumb-tip"], p = h.position.distanceTo(d.position), m = 0.02, g = 5e-3; + c.inputState.pinching && p > m + g ? (c.inputState.pinching = !1, this.dispatchEvent({ + type: "pinchend", + handedness: e.handedness, + target: this + })) : !c.inputState.pinching && p <= m - g && (c.inputState.pinching = !0, this.dispatchEvent({ + type: "pinchstart", + handedness: e.handedness, + target: this + })); + } else + l !== null && e.gripSpace && (s = t.getPose(e.gripSpace, n), s !== null && (l.matrix.fromArray(s.transform.matrix), l.matrix.decompose(l.position, l.rotation, l.scale), l.matrixWorldNeedsUpdate = !0, s.linearVelocity ? (l.hasLinearVelocity = !0, l.linearVelocity.copy(s.linearVelocity)) : l.hasLinearVelocity = !1, s.angularVelocity ? (l.hasAngularVelocity = !0, l.angularVelocity.copy(s.angularVelocity)) : l.hasAngularVelocity = !1)); + a !== null && (r = t.getPose(e.targetRaySpace, n), r === null && s !== null && (r = s), r !== null && (a.matrix.fromArray(r.transform.matrix), a.matrix.decompose(a.position, a.rotation, a.scale), a.matrixWorldNeedsUpdate = !0, r.linearVelocity ? (a.hasLinearVelocity = !0, a.linearVelocity.copy(r.linearVelocity)) : a.hasLinearVelocity = !1, r.angularVelocity ? (a.hasAngularVelocity = !0, a.angularVelocity.copy(r.angularVelocity)) : a.hasAngularVelocity = !1, this.dispatchEvent(Kf))); + } + return a !== null && (a.visible = r !== null), l !== null && (l.visible = s !== null), c !== null && (c.visible = o !== null), this; + } + // private method + _getHandJoint(e, t) { + if (e.joints[t.jointName] === void 0) { + const n = new qi(); + n.matrixAutoUpdate = !1, n.visible = !1, e.joints[t.jointName] = n, e.add(n); + } + return e.joints[t.jointName]; + } +} +class Zf extends Rn { + constructor(e, t) { + super(); + const n = this; + let r = null, s = 1, o = null, a = "local-floor", l = 1, c = null, h = null, d = null, p = null, m = null, g = null; + const v = t.getContextAttributes(); + let f = null, u = null; + const b = [], S = [], R = new Ie(); + let D = null; + const C = new Tt(); + C.layers.enable(1), C.viewport = new $e(); + const A = new Tt(); + A.layers.enable(2), A.viewport = new $e(); + const W = [C, A], x = new jf(); + x.layers.enable(1), x.layers.enable(2); + let y = null, z = null; + this.cameraAutoUpdate = !0, this.enabled = !1, this.isPresenting = !1, this.getController = function(H) { + let j = b[H]; + return j === void 0 && (j = new kr(), b[H] = j), j.getTargetRaySpace(); + }, this.getControllerGrip = function(H) { + let j = b[H]; + return j === void 0 && (j = new kr(), b[H] = j), j.getGripSpace(); + }, this.getHand = function(H) { + let j = b[H]; + return j === void 0 && (j = new kr(), b[H] = j), j.getHandSpace(); + }; + function Z(H) { + const j = S.indexOf(H.inputSource); + if (j === -1) + return; + const oe = b[j]; + oe !== void 0 && (oe.update(H.inputSource, H.frame, c || o), oe.dispatchEvent({ type: H.type, data: H.inputSource })); + } + function re() { + r.removeEventListener("select", Z), r.removeEventListener("selectstart", Z), r.removeEventListener("selectend", Z), r.removeEventListener("squeeze", Z), r.removeEventListener("squeezestart", Z), r.removeEventListener("squeezeend", Z), r.removeEventListener("end", re), r.removeEventListener("inputsourceschange", L); + for (let H = 0; H < b.length; H++) { + const j = S[H]; + j !== null && (S[H] = null, b[H].disconnect(j)); + } + y = null, z = null, e.setRenderTarget(f), m = null, p = null, d = null, r = null, u = null, ce.stop(), n.isPresenting = !1, e.setPixelRatio(D), e.setSize(R.width, R.height, !1), n.dispatchEvent({ type: "sessionend" }); + } + this.setFramebufferScaleFactor = function(H) { + s = H, n.isPresenting === !0 && console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting."); + }, this.setReferenceSpaceType = function(H) { + a = H, n.isPresenting === !0 && console.warn("THREE.WebXRManager: Cannot change reference space type while presenting."); + }, this.getReferenceSpace = function() { + return c || o; + }, this.setReferenceSpace = function(H) { + c = H; + }, this.getBaseLayer = function() { + return p !== null ? p : m; + }, this.getBinding = function() { + return d; + }, this.getFrame = function() { + return g; + }, this.getSession = function() { + return r; + }, this.setSession = async function(H) { + if (r = H, r !== null) { + if (f = e.getRenderTarget(), r.addEventListener("select", Z), r.addEventListener("selectstart", Z), r.addEventListener("selectend", Z), r.addEventListener("squeeze", Z), r.addEventListener("squeezestart", Z), r.addEventListener("squeezeend", Z), r.addEventListener("end", re), r.addEventListener("inputsourceschange", L), v.xrCompatible !== !0 && await t.makeXRCompatible(), D = e.getPixelRatio(), e.getSize(R), r.renderState.layers === void 0 || e.capabilities.isWebGL2 === !1) { + const j = { + antialias: r.renderState.layers === void 0 ? v.antialias : !0, + alpha: !0, + depth: v.depth, + stencil: v.stencil, + framebufferScaleFactor: s + }; + m = new XRWebGLLayer(r, t, j), r.updateRenderState({ baseLayer: m }), e.setPixelRatio(1), e.setSize(m.framebufferWidth, m.framebufferHeight, !1), u = new bn( + m.framebufferWidth, + m.framebufferHeight, + { + format: Ft, + type: cn, + colorSpace: e.outputColorSpace, + stencilBuffer: v.stencil + } + ); + } else { + let j = null, oe = null, ve = null; + v.depth && (ve = v.stencil ? t.DEPTH24_STENCIL8 : t.DEPTH_COMPONENT24, j = v.stencil ? ti : yn, oe = v.stencil ? En : sn); + const _e = { + colorFormat: t.RGBA8, + depthFormat: ve, + scaleFactor: s + }; + d = new XRWebGLBinding(r, t), p = d.createProjectionLayer(_e), r.updateRenderState({ layers: [p] }), e.setPixelRatio(1), e.setSize(p.textureWidth, p.textureHeight, !1), u = new bn( + p.textureWidth, + p.textureHeight, + { + format: Ft, + type: cn, + depthTexture: new Io(p.textureWidth, p.textureHeight, oe, void 0, void 0, void 0, void 0, void 0, void 0, j), + stencilBuffer: v.stencil, + colorSpace: e.outputColorSpace, + samples: v.antialias ? 4 : 0 + } + ); + const we = e.properties.get(u); + we.__ignoreDepthValues = p.ignoreDepthValues; + } + u.isXRRenderTarget = !0, this.setFoveation(l), c = null, o = await r.requestReferenceSpace(a), ce.setContext(r), ce.start(), n.isPresenting = !0, n.dispatchEvent({ type: "sessionstart" }); + } + }, this.getEnvironmentBlendMode = function() { + if (r !== null) + return r.environmentBlendMode; + }; + function L(H) { + for (let j = 0; j < H.removed.length; j++) { + const oe = H.removed[j], ve = S.indexOf(oe); + ve >= 0 && (S[ve] = null, b[ve].disconnect(oe)); + } + for (let j = 0; j < H.added.length; j++) { + const oe = H.added[j]; + let ve = S.indexOf(oe); + if (ve === -1) { + for (let we = 0; we < b.length; we++) + if (we >= S.length) { + S.push(oe), ve = we; + break; + } else if (S[we] === null) { + S[we] = oe, ve = we; + break; + } + if (ve === -1) break; + } + const _e = b[ve]; + _e && _e.connect(oe); + } + } + const F = new P(), V = new P(); + function Y(H, j, oe) { + F.setFromMatrixPosition(j.matrixWorld), V.setFromMatrixPosition(oe.matrixWorld); + const ve = F.distanceTo(V), _e = j.projectionMatrix.elements, we = oe.projectionMatrix.elements, Ae = _e[14] / (_e[10] - 1), ge = _e[14] / (_e[10] + 1), Pe = (_e[9] + 1) / _e[5], N = (_e[9] - 1) / _e[5], rt = (_e[8] - 1) / _e[0], Me = (we[8] + 1) / we[0], Re = Ae * rt, pe = Ae * Me, je = ve / (-rt + Me), be = je * -rt; + j.matrixWorld.decompose(H.position, H.quaternion, H.scale), H.translateX(be), H.translateZ(je), H.matrixWorld.compose(H.position, H.quaternion, H.scale), H.matrixWorldInverse.copy(H.matrixWorld).invert(); + const M = Ae + je, _ = ge + je, I = Re - be, $ = pe + (ve - be), K = Pe * ge / _ * M, J = N * ge / _ * M; + H.projectionMatrix.makePerspective(I, $, K, J, M, _), H.projectionMatrixInverse.copy(H.projectionMatrix).invert(); + } + function X(H, j) { + j === null ? H.matrixWorld.copy(H.matrix) : H.matrixWorld.multiplyMatrices(j.matrixWorld, H.matrix), H.matrixWorldInverse.copy(H.matrixWorld).invert(); + } + this.updateCamera = function(H) { + if (r === null) return; + x.near = A.near = C.near = H.near, x.far = A.far = C.far = H.far, (y !== x.near || z !== x.far) && (r.updateRenderState({ + depthNear: x.near, + depthFar: x.far + }), y = x.near, z = x.far); + const j = H.parent, oe = x.cameras; + X(x, j); + for (let ve = 0; ve < oe.length; ve++) + X(oe[ve], j); + oe.length === 2 ? Y(x, C, A) : x.projectionMatrix.copy(C.projectionMatrix), k(H, x, j); + }; + function k(H, j, oe) { + oe === null ? H.matrix.copy(j.matrixWorld) : (H.matrix.copy(oe.matrixWorld), H.matrix.invert(), H.matrix.multiply(j.matrixWorld)), H.matrix.decompose(H.position, H.quaternion, H.scale), H.updateMatrixWorld(!0), H.projectionMatrix.copy(j.projectionMatrix), H.projectionMatrixInverse.copy(j.projectionMatrixInverse), H.isPerspectiveCamera && (H.fov = ns * 2 * Math.atan(1 / H.projectionMatrix.elements[5]), H.zoom = 1); + } + this.getCamera = function() { + return x; + }, this.getFoveation = function() { + if (!(p === null && m === null)) + return l; + }, this.setFoveation = function(H) { + l = H, p !== null && (p.fixedFoveation = H), m !== null && m.fixedFoveation !== void 0 && (m.fixedFoveation = H); + }; + let q = null; + function Q(H, j) { + if (h = j.getViewerPose(c || o), g = j, h !== null) { + const oe = h.views; + m !== null && (e.setRenderTargetFramebuffer(u, m.framebuffer), e.setRenderTarget(u)); + let ve = !1; + oe.length !== x.cameras.length && (x.cameras.length = 0, ve = !0); + for (let _e = 0; _e < oe.length; _e++) { + const we = oe[_e]; + let Ae = null; + if (m !== null) + Ae = m.getViewport(we); + else { + const Pe = d.getViewSubImage(p, we); + Ae = Pe.viewport, _e === 0 && (e.setRenderTargetTextures( + u, + Pe.colorTexture, + p.ignoreDepthValues ? void 0 : Pe.depthStencilTexture + ), e.setRenderTarget(u)); + } + let ge = W[_e]; + ge === void 0 && (ge = new Tt(), ge.layers.enable(_e), ge.viewport = new $e(), W[_e] = ge), ge.matrix.fromArray(we.transform.matrix), ge.matrix.decompose(ge.position, ge.quaternion, ge.scale), ge.projectionMatrix.fromArray(we.projectionMatrix), ge.projectionMatrixInverse.copy(ge.projectionMatrix).invert(), ge.viewport.set(Ae.x, Ae.y, Ae.width, Ae.height), _e === 0 && (x.matrix.copy(ge.matrix), x.matrix.decompose(x.position, x.quaternion, x.scale)), ve === !0 && x.cameras.push(ge); + } + } + for (let oe = 0; oe < b.length; oe++) { + const ve = S[oe], _e = b[oe]; + ve !== null && _e !== void 0 && _e.update(ve, j, c || o); + } + q && q(H, j), j.detectedPlanes && n.dispatchEvent({ type: "planesdetected", data: j }), g = null; + } + const ce = new Do(); + ce.setAnimationLoop(Q), this.setAnimationLoop = function(H) { + q = H; + }, this.dispose = function() { + }; + } +} +function $f(i, e) { + function t(f, u) { + f.matrixAutoUpdate === !0 && f.updateMatrix(), u.value.copy(f.matrix); + } + function n(f, u) { + u.color.getRGB(f.fogColor.value, Co(i)), u.isFog ? (f.fogNear.value = u.near, f.fogFar.value = u.far) : u.isFogExp2 && (f.fogDensity.value = u.density); + } + function r(f, u, b, S, R) { + u.isMeshBasicMaterial || u.isMeshLambertMaterial ? s(f, u) : u.isMeshToonMaterial ? (s(f, u), d(f, u)) : u.isMeshPhongMaterial ? (s(f, u), h(f, u)) : u.isMeshStandardMaterial ? (s(f, u), p(f, u), u.isMeshPhysicalMaterial && m(f, u, R)) : u.isMeshMatcapMaterial ? (s(f, u), g(f, u)) : u.isMeshDepthMaterial ? s(f, u) : u.isMeshDistanceMaterial ? (s(f, u), v(f, u)) : u.isMeshNormalMaterial ? s(f, u) : u.isLineBasicMaterial ? (o(f, u), u.isLineDashedMaterial && a(f, u)) : u.isPointsMaterial ? l(f, u, b, S) : u.isSpriteMaterial ? c(f, u) : u.isShadowMaterial ? (f.color.value.copy(u.color), f.opacity.value = u.opacity) : u.isShaderMaterial && (u.uniformsNeedUpdate = !1); + } + function s(f, u) { + f.opacity.value = u.opacity, u.color && f.diffuse.value.copy(u.color), u.emissive && f.emissive.value.copy(u.emissive).multiplyScalar(u.emissiveIntensity), u.map && (f.map.value = u.map, t(u.map, f.mapTransform)), u.alphaMap && (f.alphaMap.value = u.alphaMap, t(u.alphaMap, f.alphaMapTransform)), u.bumpMap && (f.bumpMap.value = u.bumpMap, t(u.bumpMap, f.bumpMapTransform), f.bumpScale.value = u.bumpScale, u.side === Mt && (f.bumpScale.value *= -1)), u.normalMap && (f.normalMap.value = u.normalMap, t(u.normalMap, f.normalMapTransform), f.normalScale.value.copy(u.normalScale), u.side === Mt && f.normalScale.value.negate()), u.displacementMap && (f.displacementMap.value = u.displacementMap, t(u.displacementMap, f.displacementMapTransform), f.displacementScale.value = u.displacementScale, f.displacementBias.value = u.displacementBias), u.emissiveMap && (f.emissiveMap.value = u.emissiveMap, t(u.emissiveMap, f.emissiveMapTransform)), u.specularMap && (f.specularMap.value = u.specularMap, t(u.specularMap, f.specularMapTransform)), u.alphaTest > 0 && (f.alphaTest.value = u.alphaTest); + const b = e.get(u).envMap; + if (b && (f.envMap.value = b, f.flipEnvMap.value = b.isCubeTexture && b.isRenderTargetTexture === !1 ? -1 : 1, f.reflectivity.value = u.reflectivity, f.ior.value = u.ior, f.refractionRatio.value = u.refractionRatio), u.lightMap) { + f.lightMap.value = u.lightMap; + const S = i._useLegacyLights === !0 ? Math.PI : 1; + f.lightMapIntensity.value = u.lightMapIntensity * S, t(u.lightMap, f.lightMapTransform); + } + u.aoMap && (f.aoMap.value = u.aoMap, f.aoMapIntensity.value = u.aoMapIntensity, t(u.aoMap, f.aoMapTransform)); + } + function o(f, u) { + f.diffuse.value.copy(u.color), f.opacity.value = u.opacity, u.map && (f.map.value = u.map, t(u.map, f.mapTransform)); + } + function a(f, u) { + f.dashSize.value = u.dashSize, f.totalSize.value = u.dashSize + u.gapSize, f.scale.value = u.scale; + } + function l(f, u, b, S) { + f.diffuse.value.copy(u.color), f.opacity.value = u.opacity, f.size.value = u.size * b, f.scale.value = S * 0.5, u.map && (f.map.value = u.map, t(u.map, f.uvTransform)), u.alphaMap && (f.alphaMap.value = u.alphaMap, t(u.alphaMap, f.alphaMapTransform)), u.alphaTest > 0 && (f.alphaTest.value = u.alphaTest); + } + function c(f, u) { + f.diffuse.value.copy(u.color), f.opacity.value = u.opacity, f.rotation.value = u.rotation, u.map && (f.map.value = u.map, t(u.map, f.mapTransform)), u.alphaMap && (f.alphaMap.value = u.alphaMap, t(u.alphaMap, f.alphaMapTransform)), u.alphaTest > 0 && (f.alphaTest.value = u.alphaTest); + } + function h(f, u) { + f.specular.value.copy(u.specular), f.shininess.value = Math.max(u.shininess, 1e-4); + } + function d(f, u) { + u.gradientMap && (f.gradientMap.value = u.gradientMap); + } + function p(f, u) { + f.metalness.value = u.metalness, u.metalnessMap && (f.metalnessMap.value = u.metalnessMap, t(u.metalnessMap, f.metalnessMapTransform)), f.roughness.value = u.roughness, u.roughnessMap && (f.roughnessMap.value = u.roughnessMap, t(u.roughnessMap, f.roughnessMapTransform)), e.get(u).envMap && (f.envMapIntensity.value = u.envMapIntensity); + } + function m(f, u, b) { + f.ior.value = u.ior, u.sheen > 0 && (f.sheenColor.value.copy(u.sheenColor).multiplyScalar(u.sheen), f.sheenRoughness.value = u.sheenRoughness, u.sheenColorMap && (f.sheenColorMap.value = u.sheenColorMap, t(u.sheenColorMap, f.sheenColorMapTransform)), u.sheenRoughnessMap && (f.sheenRoughnessMap.value = u.sheenRoughnessMap, t(u.sheenRoughnessMap, f.sheenRoughnessMapTransform))), u.clearcoat > 0 && (f.clearcoat.value = u.clearcoat, f.clearcoatRoughness.value = u.clearcoatRoughness, u.clearcoatMap && (f.clearcoatMap.value = u.clearcoatMap, t(u.clearcoatMap, f.clearcoatMapTransform)), u.clearcoatRoughnessMap && (f.clearcoatRoughnessMap.value = u.clearcoatRoughnessMap, t(u.clearcoatRoughnessMap, f.clearcoatRoughnessMapTransform)), u.clearcoatNormalMap && (f.clearcoatNormalMap.value = u.clearcoatNormalMap, t(u.clearcoatNormalMap, f.clearcoatNormalMapTransform), f.clearcoatNormalScale.value.copy(u.clearcoatNormalScale), u.side === Mt && f.clearcoatNormalScale.value.negate())), u.iridescence > 0 && (f.iridescence.value = u.iridescence, f.iridescenceIOR.value = u.iridescenceIOR, f.iridescenceThicknessMinimum.value = u.iridescenceThicknessRange[0], f.iridescenceThicknessMaximum.value = u.iridescenceThicknessRange[1], u.iridescenceMap && (f.iridescenceMap.value = u.iridescenceMap, t(u.iridescenceMap, f.iridescenceMapTransform)), u.iridescenceThicknessMap && (f.iridescenceThicknessMap.value = u.iridescenceThicknessMap, t(u.iridescenceThicknessMap, f.iridescenceThicknessMapTransform))), u.transmission > 0 && (f.transmission.value = u.transmission, f.transmissionSamplerMap.value = b.texture, f.transmissionSamplerSize.value.set(b.width, b.height), u.transmissionMap && (f.transmissionMap.value = u.transmissionMap, t(u.transmissionMap, f.transmissionMapTransform)), f.thickness.value = u.thickness, u.thicknessMap && (f.thicknessMap.value = u.thicknessMap, t(u.thicknessMap, f.thicknessMapTransform)), f.attenuationDistance.value = u.attenuationDistance, f.attenuationColor.value.copy(u.attenuationColor)), u.anisotropy > 0 && (f.anisotropyVector.value.set(u.anisotropy * Math.cos(u.anisotropyRotation), u.anisotropy * Math.sin(u.anisotropyRotation)), u.anisotropyMap && (f.anisotropyMap.value = u.anisotropyMap, t(u.anisotropyMap, f.anisotropyMapTransform))), f.specularIntensity.value = u.specularIntensity, f.specularColor.value.copy(u.specularColor), u.specularColorMap && (f.specularColorMap.value = u.specularColorMap, t(u.specularColorMap, f.specularColorMapTransform)), u.specularIntensityMap && (f.specularIntensityMap.value = u.specularIntensityMap, t(u.specularIntensityMap, f.specularIntensityMapTransform)); + } + function g(f, u) { + u.matcap && (f.matcap.value = u.matcap); + } + function v(f, u) { + const b = e.get(u).light; + f.referencePosition.value.setFromMatrixPosition(b.matrixWorld), f.nearDistance.value = b.shadow.camera.near, f.farDistance.value = b.shadow.camera.far; + } + return { + refreshFogUniforms: n, + refreshMaterialUniforms: r + }; +} +function Jf(i, e, t, n) { + let r = {}, s = {}, o = []; + const a = t.isWebGL2 ? i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS) : 0; + function l(b, S) { + const R = S.program; + n.uniformBlockBinding(b, R); + } + function c(b, S) { + let R = r[b.id]; + R === void 0 && (g(b), R = h(b), r[b.id] = R, b.addEventListener("dispose", f)); + const D = S.program; + n.updateUBOMapping(b, D); + const C = e.render.frame; + s[b.id] !== C && (p(b), s[b.id] = C); + } + function h(b) { + const S = d(); + b.__bindingPointIndex = S; + const R = i.createBuffer(), D = b.__size, C = b.usage; + return i.bindBuffer(i.UNIFORM_BUFFER, R), i.bufferData(i.UNIFORM_BUFFER, D, C), i.bindBuffer(i.UNIFORM_BUFFER, null), i.bindBufferBase(i.UNIFORM_BUFFER, S, R), R; + } + function d() { + for (let b = 0; b < a; b++) + if (o.indexOf(b) === -1) + return o.push(b), b; + return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."), 0; + } + function p(b) { + const S = r[b.id], R = b.uniforms, D = b.__cache; + i.bindBuffer(i.UNIFORM_BUFFER, S); + for (let C = 0, A = R.length; C < A; C++) { + const W = Array.isArray(R[C]) ? R[C] : [R[C]]; + for (let x = 0, y = W.length; x < y; x++) { + const z = W[x]; + if (m(z, C, x, D) === !0) { + const Z = z.__offset, re = Array.isArray(z.value) ? z.value : [z.value]; + let L = 0; + for (let F = 0; F < re.length; F++) { + const V = re[F], Y = v(V); + typeof V == "number" || typeof V == "boolean" ? (z.__data[0] = V, i.bufferSubData(i.UNIFORM_BUFFER, Z + L, z.__data)) : V.isMatrix3 ? (z.__data[0] = V.elements[0], z.__data[1] = V.elements[1], z.__data[2] = V.elements[2], z.__data[3] = 0, z.__data[4] = V.elements[3], z.__data[5] = V.elements[4], z.__data[6] = V.elements[5], z.__data[7] = 0, z.__data[8] = V.elements[6], z.__data[9] = V.elements[7], z.__data[10] = V.elements[8], z.__data[11] = 0) : (V.toArray(z.__data, L), L += Y.storage / Float32Array.BYTES_PER_ELEMENT); + } + i.bufferSubData(i.UNIFORM_BUFFER, Z, z.__data); + } + } + } + i.bindBuffer(i.UNIFORM_BUFFER, null); + } + function m(b, S, R, D) { + const C = b.value, A = S + "_" + R; + if (D[A] === void 0) + return typeof C == "number" || typeof C == "boolean" ? D[A] = C : D[A] = C.clone(), !0; + { + const W = D[A]; + if (typeof C == "number" || typeof C == "boolean") { + if (W !== C) + return D[A] = C, !0; + } else if (W.equals(C) === !1) + return W.copy(C), !0; + } + return !1; + } + function g(b) { + const S = b.uniforms; + let R = 0; + const D = 16; + for (let A = 0, W = S.length; A < W; A++) { + const x = Array.isArray(S[A]) ? S[A] : [S[A]]; + for (let y = 0, z = x.length; y < z; y++) { + const Z = x[y], re = Array.isArray(Z.value) ? Z.value : [Z.value]; + for (let L = 0, F = re.length; L < F; L++) { + const V = re[L], Y = v(V), X = R % D; + X !== 0 && D - X < Y.boundary && (R += D - X), Z.__data = new Float32Array(Y.storage / Float32Array.BYTES_PER_ELEMENT), Z.__offset = R, R += Y.storage; + } + } + } + const C = R % D; + return C > 0 && (R += D - C), b.__size = R, b.__cache = {}, this; + } + function v(b) { + const S = { + boundary: 0, + // bytes + storage: 0 + // bytes + }; + return typeof b == "number" || typeof b == "boolean" ? (S.boundary = 4, S.storage = 4) : b.isVector2 ? (S.boundary = 8, S.storage = 8) : b.isVector3 || b.isColor ? (S.boundary = 16, S.storage = 12) : b.isVector4 ? (S.boundary = 16, S.storage = 16) : b.isMatrix3 ? (S.boundary = 48, S.storage = 48) : b.isMatrix4 ? (S.boundary = 64, S.storage = 64) : b.isTexture ? console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.") : console.warn("THREE.WebGLRenderer: Unsupported uniform value type.", b), S; + } + function f(b) { + const S = b.target; + S.removeEventListener("dispose", f); + const R = o.indexOf(S.__bindingPointIndex); + o.splice(R, 1), i.deleteBuffer(r[S.id]), delete r[S.id], delete s[S.id]; + } + function u() { + for (const b in r) + i.deleteBuffer(r[b]); + o = [], r = {}, s = {}; + } + return { + bind: l, + update: c, + dispose: u + }; +} +class Go { + constructor(e = {}) { + const { + canvas: t = Yl(), + context: n = null, + depth: r = !0, + stencil: s = !0, + alpha: o = !1, + antialias: a = !1, + premultipliedAlpha: l = !0, + preserveDrawingBuffer: c = !1, + powerPreference: h = "default", + failIfMajorPerformanceCaveat: d = !1 + } = e; + this.isWebGLRenderer = !0; + let p; + n !== null ? p = n.getContextAttributes().alpha : p = o; + const m = new Uint32Array(4), g = new Int32Array(4); + let v = null, f = null; + const u = [], b = []; + this.domElement = t, this.debug = { + /** + * Enables error checking and reporting when shader programs are being compiled + * @type {boolean} + */ + checkShaderErrors: !0, + /** + * Callback for custom error reporting. + * @type {?Function} + */ + onShaderError: null + }, this.autoClear = !0, this.autoClearColor = !0, this.autoClearDepth = !0, this.autoClearStencil = !0, this.sortObjects = !0, this.clippingPlanes = [], this.localClippingEnabled = !1, this._outputColorSpace = ht, this._useLegacyLights = !1, this.toneMapping = ln, this.toneMappingExposure = 1; + const S = this; + let R = !1, D = 0, C = 0, A = null, W = -1, x = null; + const y = new $e(), z = new $e(); + let Z = null; + const re = new Xe(0); + let L = 0, F = t.width, V = t.height, Y = 1, X = null, k = null; + const q = new $e(0, 0, F, V), Q = new $e(0, 0, F, V); + let ce = !1; + const H = new cs(); + let j = !1, oe = !1, ve = null; + const _e = new Qe(), we = new Ie(), Ae = new P(), ge = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: !0 }; + function Pe() { + return A === null ? Y : 1; + } + let N = n; + function rt(E, U) { + for (let B = 0; B < E.length; B++) { + const G = E[B], O = t.getContext(G, U); + if (O !== null) return O; + } + return null; + } + try { + const E = { + alpha: !0, + depth: r, + stencil: s, + antialias: a, + premultipliedAlpha: l, + preserveDrawingBuffer: c, + powerPreference: h, + failIfMajorPerformanceCaveat: d + }; + if ("setAttribute" in t && t.setAttribute("data-engine", `three.js r${ss}`), t.addEventListener("webglcontextlost", te, !1), t.addEventListener("webglcontextrestored", w, !1), t.addEventListener("webglcontextcreationerror", ie, !1), N === null) { + const U = ["webgl2", "webgl", "experimental-webgl"]; + if (S.isWebGL1Renderer === !0 && U.shift(), N = rt(U, E), N === null) + throw rt(U) ? new Error("Error creating WebGL context with your selected attributes.") : new Error("Error creating WebGL context."); + } + typeof WebGLRenderingContext < "u" && N instanceof WebGLRenderingContext && console.warn("THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163."), N.getShaderPrecisionFormat === void 0 && (N.getShaderPrecisionFormat = function() { + return { rangeMin: 1, rangeMax: 1, precision: 1 }; + }); + } catch (E) { + throw console.error("THREE.WebGLRenderer: " + E.message), E; + } + let Me, Re, pe, je, be, M, _, I, $, K, J, me, ae, he, ye, Fe, ee, Ye, ze, De, Ee, ue, T, ne; + function xe() { + Me = new od(N), Re = new td(N, Me, e), Me.init(Re), ue = new Yf(N, Me, Re), pe = new Xf(N, Me, Re), je = new ud(N), be = new Pf(), M = new qf(N, Me, pe, be, Re, ue, je), _ = new id(S), I = new ad(S), $ = new vc(N, Re), T = new Qh(N, Me, $, Re), K = new ld(N, $, je, T), J = new pd(N, K, $, je), ze = new fd(N, Re, M), Fe = new nd(be), me = new Lf(S, _, I, Me, Re, T, Fe), ae = new $f(S, be), he = new Uf(), ye = new zf(Me, Re), Ye = new Jh(S, _, I, pe, J, p, l), ee = new Wf(S, J, Re), ne = new Jf(N, je, Re, pe), De = new ed(N, Me, je, Re), Ee = new cd(N, Me, je, Re), je.programs = me.programs, S.capabilities = Re, S.extensions = Me, S.properties = be, S.renderLists = he, S.shadowMap = ee, S.state = pe, S.info = je; + } + xe(); + const fe = new Zf(S, N); + this.xr = fe, this.getContext = function() { + return N; + }, this.getContextAttributes = function() { + return N.getContextAttributes(); + }, this.forceContextLoss = function() { + const E = Me.get("WEBGL_lose_context"); + E && E.loseContext(); + }, this.forceContextRestore = function() { + const E = Me.get("WEBGL_lose_context"); + E && E.restoreContext(); + }, this.getPixelRatio = function() { + return Y; + }, this.setPixelRatio = function(E) { + E !== void 0 && (Y = E, this.setSize(F, V, !1)); + }, this.getSize = function(E) { + return E.set(F, V); + }, this.setSize = function(E, U, B = !0) { + if (fe.isPresenting) { + console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."); + return; + } + F = E, V = U, t.width = Math.floor(E * Y), t.height = Math.floor(U * Y), B === !0 && (t.style.width = E + "px", t.style.height = U + "px"), this.setViewport(0, 0, E, U); + }, this.getDrawingBufferSize = function(E) { + return E.set(F * Y, V * Y).floor(); + }, this.setDrawingBufferSize = function(E, U, B) { + F = E, V = U, Y = B, t.width = Math.floor(E * B), t.height = Math.floor(U * B), this.setViewport(0, 0, E, U); + }, this.getCurrentViewport = function(E) { + return E.copy(y); + }, this.getViewport = function(E) { + return E.copy(q); + }, this.setViewport = function(E, U, B, G) { + E.isVector4 ? q.set(E.x, E.y, E.z, E.w) : q.set(E, U, B, G), pe.viewport(y.copy(q).multiplyScalar(Y).floor()); + }, this.getScissor = function(E) { + return E.copy(Q); + }, this.setScissor = function(E, U, B, G) { + E.isVector4 ? Q.set(E.x, E.y, E.z, E.w) : Q.set(E, U, B, G), pe.scissor(z.copy(Q).multiplyScalar(Y).floor()); + }, this.getScissorTest = function() { + return ce; + }, this.setScissorTest = function(E) { + pe.setScissorTest(ce = E); + }, this.setOpaqueSort = function(E) { + X = E; + }, this.setTransparentSort = function(E) { + k = E; + }, this.getClearColor = function(E) { + return E.copy(Ye.getClearColor()); + }, this.setClearColor = function() { + Ye.setClearColor.apply(Ye, arguments); + }, this.getClearAlpha = function() { + return Ye.getClearAlpha(); + }, this.setClearAlpha = function() { + Ye.setClearAlpha.apply(Ye, arguments); + }, this.clear = function(E = !0, U = !0, B = !0) { + let G = 0; + if (E) { + let O = !1; + if (A !== null) { + const de = A.texture.format; + O = de === mo || de === po || de === fo; + } + if (O) { + const de = A.texture.type, Se = de === cn || de === sn || de === as || de === En || de === uo || de === ho, Le = Ye.getClearColor(), Ue = Ye.getClearAlpha(), Ge = Le.r, Ne = Le.g, Oe = Le.b; + Se ? (m[0] = Ge, m[1] = Ne, m[2] = Oe, m[3] = Ue, N.clearBufferuiv(N.COLOR, 0, m)) : (g[0] = Ge, g[1] = Ne, g[2] = Oe, g[3] = Ue, N.clearBufferiv(N.COLOR, 0, g)); + } else + G |= N.COLOR_BUFFER_BIT; + } + U && (G |= N.DEPTH_BUFFER_BIT), B && (G |= N.STENCIL_BUFFER_BIT, this.state.buffers.stencil.setMask(4294967295)), N.clear(G); + }, this.clearColor = function() { + this.clear(!0, !1, !1); + }, this.clearDepth = function() { + this.clear(!1, !0, !1); + }, this.clearStencil = function() { + this.clear(!1, !1, !0); + }, this.dispose = function() { + t.removeEventListener("webglcontextlost", te, !1), t.removeEventListener("webglcontextrestored", w, !1), t.removeEventListener("webglcontextcreationerror", ie, !1), he.dispose(), ye.dispose(), be.dispose(), _.dispose(), I.dispose(), J.dispose(), T.dispose(), ne.dispose(), me.dispose(), fe.dispose(), fe.removeEventListener("sessionstart", nt), fe.removeEventListener("sessionend", qe), ve && (ve.dispose(), ve = null), st.stop(); + }; + function te(E) { + E.preventDefault(), console.log("THREE.WebGLRenderer: Context Lost."), R = !0; + } + function w() { + console.log("THREE.WebGLRenderer: Context Restored."), R = !1; + const E = je.autoReset, U = ee.enabled, B = ee.autoUpdate, G = ee.needsUpdate, O = ee.type; + xe(), je.autoReset = E, ee.enabled = U, ee.autoUpdate = B, ee.needsUpdate = G, ee.type = O; + } + function ie(E) { + console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ", E.statusMessage); + } + function le(E) { + const U = E.target; + U.removeEventListener("dispose", le), Ce(U); + } + function Ce(E) { + Te(E), be.remove(E); + } + function Te(E) { + const U = be.get(E).programs; + U !== void 0 && (U.forEach(function(B) { + me.releaseProgram(B); + }), E.isShaderMaterial && me.releaseShaderCache(E)); + } + this.renderBufferDirect = function(E, U, B, G, O, de) { + U === null && (U = ge); + const Se = O.isMesh && O.matrixWorld.determinant() < 0, Le = ko(E, U, B, G, O); + pe.setMaterial(G, Se); + let Ue = B.index, Ge = 1; + if (G.wireframe === !0) { + if (Ue = K.getWireframeAttribute(B), Ue === void 0) return; + Ge = 2; + } + const Ne = B.drawRange, Oe = B.attributes.position; + let it = Ne.start * Ge, St = (Ne.start + Ne.count) * Ge; + de !== null && (it = Math.max(it, de.start * Ge), St = Math.min(St, (de.start + de.count) * Ge)), Ue !== null ? (it = Math.max(it, 0), St = Math.min(St, Ue.count)) : Oe != null && (it = Math.max(it, 0), St = Math.min(St, Oe.count)); + const ct = St - it; + if (ct < 0 || ct === 1 / 0) return; + T.setup(O, G, Le, B, Ue); + let Vt, Je = De; + if (Ue !== null && (Vt = $.get(Ue), Je = Ee, Je.setIndex(Vt)), O.isMesh) + G.wireframe === !0 ? (pe.setLineWidth(G.wireframeLinewidth * Pe()), Je.setMode(N.LINES)) : Je.setMode(N.TRIANGLES); + else if (O.isLine) { + let He = G.linewidth; + He === void 0 && (He = 1), pe.setLineWidth(He * Pe()), O.isLineSegments ? Je.setMode(N.LINES) : O.isLineLoop ? Je.setMode(N.LINE_LOOP) : Je.setMode(N.LINE_STRIP); + } else O.isPoints ? Je.setMode(N.POINTS) : O.isSprite && Je.setMode(N.TRIANGLES); + if (O.isBatchedMesh) + Je.renderMultiDraw(O._multiDrawStarts, O._multiDrawCounts, O._multiDrawCount); + else if (O.isInstancedMesh) + Je.renderInstances(it, ct, O.count); + else if (B.isInstancedBufferGeometry) { + const He = B._maxInstanceCount !== void 0 ? B._maxInstanceCount : 1 / 0, lr = Math.min(B.instanceCount, He); + Je.renderInstances(it, ct, lr); + } else + Je.render(it, ct); + }; + function ke(E, U, B) { + E.transparent === !0 && E.side === Kt && E.forceSinglePass === !1 ? (E.side = Mt, E.needsUpdate = !0, Ei(E, U, B), E.side = un, E.needsUpdate = !0, Ei(E, U, B), E.side = Kt) : Ei(E, U, B); + } + this.compile = function(E, U, B = null) { + B === null && (B = E), f = ye.get(B), f.init(), b.push(f), B.traverseVisible(function(O) { + O.isLight && O.layers.test(U.layers) && (f.pushLight(O), O.castShadow && f.pushShadow(O)); + }), E !== B && E.traverseVisible(function(O) { + O.isLight && O.layers.test(U.layers) && (f.pushLight(O), O.castShadow && f.pushShadow(O)); + }), f.setupLights(S._useLegacyLights); + const G = /* @__PURE__ */ new Set(); + return E.traverse(function(O) { + const de = O.material; + if (de) + if (Array.isArray(de)) + for (let Se = 0; Se < de.length; Se++) { + const Le = de[Se]; + ke(Le, B, O), G.add(Le); + } + else + ke(de, B, O), G.add(de); + }), b.pop(), f = null, G; + }, this.compileAsync = function(E, U, B = null) { + const G = this.compile(E, U, B); + return new Promise((O) => { + function de() { + if (G.forEach(function(Se) { + be.get(Se).currentProgram.isReady() && G.delete(Se); + }), G.size === 0) { + O(E); + return; + } + setTimeout(de, 10); + } + Me.get("KHR_parallel_shader_compile") !== null ? de() : setTimeout(de, 10); + }); + }; + let We = null; + function et(E) { + We && We(E); + } + function nt() { + st.stop(); + } + function qe() { + st.start(); + } + const st = new Do(); + st.setAnimationLoop(et), typeof self < "u" && st.setContext(self), this.setAnimationLoop = function(E) { + We = E, fe.setAnimationLoop(E), E === null ? st.stop() : st.start(); + }, fe.addEventListener("sessionstart", nt), fe.addEventListener("sessionend", qe), this.render = function(E, U) { + if (U !== void 0 && U.isCamera !== !0) { + console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera."); + return; + } + if (R === !0) return; + E.matrixWorldAutoUpdate === !0 && E.updateMatrixWorld(), U.parent === null && U.matrixWorldAutoUpdate === !0 && U.updateMatrixWorld(), fe.enabled === !0 && fe.isPresenting === !0 && (fe.cameraAutoUpdate === !0 && fe.updateCamera(U), U = fe.getCamera()), E.isScene === !0 && E.onBeforeRender(S, E, U, A), f = ye.get(E, b.length), f.init(), b.push(f), _e.multiplyMatrices(U.projectionMatrix, U.matrixWorldInverse), H.setFromProjectionMatrix(_e), oe = this.localClippingEnabled, j = Fe.init(this.clippingPlanes, oe), v = he.get(E, u.length), v.init(), u.push(v), zt(E, U, 0, S.sortObjects), v.finish(), S.sortObjects === !0 && v.sort(X, k), this.info.render.frame++, j === !0 && Fe.beginShadows(); + const B = f.state.shadowsArray; + if (ee.render(B, E, U), j === !0 && Fe.endShadows(), this.info.autoReset === !0 && this.info.reset(), Ye.render(v, E), f.setupLights(S._useLegacyLights), U.isArrayCamera) { + const G = U.cameras; + for (let O = 0, de = G.length; O < de; O++) { + const Se = G[O]; + ps(v, E, Se, Se.viewport); + } + } else + ps(v, E, U); + A !== null && (M.updateMultisampleRenderTarget(A), M.updateRenderTargetMipmap(A)), E.isScene === !0 && E.onAfterRender(S, E, U), T.resetDefaultState(), W = -1, x = null, b.pop(), b.length > 0 ? f = b[b.length - 1] : f = null, u.pop(), u.length > 0 ? v = u[u.length - 1] : v = null; + }; + function zt(E, U, B, G) { + if (E.visible === !1) return; + if (E.layers.test(U.layers)) { + if (E.isGroup) + B = E.renderOrder; + else if (E.isLOD) + E.autoUpdate === !0 && E.update(U); + else if (E.isLight) + f.pushLight(E), E.castShadow && f.pushShadow(E); + else if (E.isSprite) { + if (!E.frustumCulled || H.intersectsSprite(E)) { + G && Ae.setFromMatrixPosition(E.matrixWorld).applyMatrix4(_e); + const Se = J.update(E), Le = E.material; + Le.visible && v.push(E, Se, Le, B, Ae.z, null); + } + } else if ((E.isMesh || E.isLine || E.isPoints) && (!E.frustumCulled || H.intersectsObject(E))) { + const Se = J.update(E), Le = E.material; + if (G && (E.boundingSphere !== void 0 ? (E.boundingSphere === null && E.computeBoundingSphere(), Ae.copy(E.boundingSphere.center)) : (Se.boundingSphere === null && Se.computeBoundingSphere(), Ae.copy(Se.boundingSphere.center)), Ae.applyMatrix4(E.matrixWorld).applyMatrix4(_e)), Array.isArray(Le)) { + const Ue = Se.groups; + for (let Ge = 0, Ne = Ue.length; Ge < Ne; Ge++) { + const Oe = Ue[Ge], it = Le[Oe.materialIndex]; + it && it.visible && v.push(E, Se, it, B, Ae.z, Oe); + } + } else Le.visible && v.push(E, Se, Le, B, Ae.z, null); + } + } + const de = E.children; + for (let Se = 0, Le = de.length; Se < Le; Se++) + zt(de[Se], U, B, G); + } + function ps(E, U, B, G) { + const O = E.opaque, de = E.transmissive, Se = E.transparent; + f.setupLightsView(B), j === !0 && Fe.setGlobalState(S.clippingPlanes, B), de.length > 0 && Vo(O, de, U, B), G && pe.viewport(y.copy(G)), O.length > 0 && Si(O, U, B), de.length > 0 && Si(de, U, B), Se.length > 0 && Si(Se, U, B), pe.buffers.depth.setTest(!0), pe.buffers.depth.setMask(!0), pe.buffers.color.setMask(!0), pe.setPolygonOffset(!1); + } + function Vo(E, U, B, G) { + if ((B.isScene === !0 ? B.overrideMaterial : null) !== null) + return; + const de = Re.isWebGL2; + ve === null && (ve = new bn(1, 1, { + generateMipmaps: !0, + type: Me.has("EXT_color_buffer_half_float") ? gi : cn, + minFilter: _i, + samples: de ? 4 : 0 + })), S.getDrawingBufferSize(we), de ? ve.setSize(we.x, we.y) : ve.setSize(is(we.x), is(we.y)); + const Se = S.getRenderTarget(); + S.setRenderTarget(ve), S.getClearColor(re), L = S.getClearAlpha(), L < 1 && S.setClearColor(16777215, 0.5), S.clear(); + const Le = S.toneMapping; + S.toneMapping = ln, Si(E, B, G), M.updateMultisampleRenderTarget(ve), M.updateRenderTargetMipmap(ve); + let Ue = !1; + for (let Ge = 0, Ne = U.length; Ge < Ne; Ge++) { + const Oe = U[Ge], it = Oe.object, St = Oe.geometry, ct = Oe.material, Vt = Oe.group; + if (ct.side === Kt && it.layers.test(G.layers)) { + const Je = ct.side; + ct.side = Mt, ct.needsUpdate = !0, ms(it, B, G, St, ct, Vt), ct.side = Je, ct.needsUpdate = !0, Ue = !0; + } + } + Ue === !0 && (M.updateMultisampleRenderTarget(ve), M.updateRenderTargetMipmap(ve)), S.setRenderTarget(Se), S.setClearColor(re, L), S.toneMapping = Le; + } + function Si(E, U, B) { + const G = U.isScene === !0 ? U.overrideMaterial : null; + for (let O = 0, de = E.length; O < de; O++) { + const Se = E[O], Le = Se.object, Ue = Se.geometry, Ge = G === null ? Se.material : G, Ne = Se.group; + Le.layers.test(B.layers) && ms(Le, U, B, Ue, Ge, Ne); + } + } + function ms(E, U, B, G, O, de) { + E.onBeforeRender(S, U, B, G, O, de), E.modelViewMatrix.multiplyMatrices(B.matrixWorldInverse, E.matrixWorld), E.normalMatrix.getNormalMatrix(E.modelViewMatrix), O.onBeforeRender(S, U, B, G, E, de), O.transparent === !0 && O.side === Kt && O.forceSinglePass === !1 ? (O.side = Mt, O.needsUpdate = !0, S.renderBufferDirect(B, U, G, O, E, de), O.side = un, O.needsUpdate = !0, S.renderBufferDirect(B, U, G, O, E, de), O.side = Kt) : S.renderBufferDirect(B, U, G, O, E, de), E.onAfterRender(S, U, B, G, O, de); + } + function Ei(E, U, B) { + U.isScene !== !0 && (U = ge); + const G = be.get(E), O = f.state.lights, de = f.state.shadowsArray, Se = O.state.version, Le = me.getParameters(E, O.state, de, U, B), Ue = me.getProgramCacheKey(Le); + let Ge = G.programs; + G.environment = E.isMeshStandardMaterial ? U.environment : null, G.fog = U.fog, G.envMap = (E.isMeshStandardMaterial ? I : _).get(E.envMap || G.environment), Ge === void 0 && (E.addEventListener("dispose", le), Ge = /* @__PURE__ */ new Map(), G.programs = Ge); + let Ne = Ge.get(Ue); + if (Ne !== void 0) { + if (G.currentProgram === Ne && G.lightsStateVersion === Se) + return gs(E, Le), Ne; + } else + Le.uniforms = me.getUniforms(E), E.onBuild(B, Le, S), E.onBeforeCompile(Le, S), Ne = me.acquireProgram(Le, Ue), Ge.set(Ue, Ne), G.uniforms = Le.uniforms; + const Oe = G.uniforms; + return (!E.isShaderMaterial && !E.isRawShaderMaterial || E.clipping === !0) && (Oe.clippingPlanes = Fe.uniform), gs(E, Le), G.needsLights = Xo(E), G.lightsStateVersion = Se, G.needsLights && (Oe.ambientLightColor.value = O.state.ambient, Oe.lightProbe.value = O.state.probe, Oe.directionalLights.value = O.state.directional, Oe.directionalLightShadows.value = O.state.directionalShadow, Oe.spotLights.value = O.state.spot, Oe.spotLightShadows.value = O.state.spotShadow, Oe.rectAreaLights.value = O.state.rectArea, Oe.ltc_1.value = O.state.rectAreaLTC1, Oe.ltc_2.value = O.state.rectAreaLTC2, Oe.pointLights.value = O.state.point, Oe.pointLightShadows.value = O.state.pointShadow, Oe.hemisphereLights.value = O.state.hemi, Oe.directionalShadowMap.value = O.state.directionalShadowMap, Oe.directionalShadowMatrix.value = O.state.directionalShadowMatrix, Oe.spotShadowMap.value = O.state.spotShadowMap, Oe.spotLightMatrix.value = O.state.spotLightMatrix, Oe.spotLightMap.value = O.state.spotLightMap, Oe.pointShadowMap.value = O.state.pointShadowMap, Oe.pointShadowMatrix.value = O.state.pointShadowMatrix), G.currentProgram = Ne, G.uniformsList = null, Ne; + } + function _s(E) { + if (E.uniformsList === null) { + const U = E.currentProgram.getUniforms(); + E.uniformsList = Zi.seqWithValue(U.seq, E.uniforms); + } + return E.uniformsList; + } + function gs(E, U) { + const B = be.get(E); + B.outputColorSpace = U.outputColorSpace, B.batching = U.batching, B.instancing = U.instancing, B.instancingColor = U.instancingColor, B.skinning = U.skinning, B.morphTargets = U.morphTargets, B.morphNormals = U.morphNormals, B.morphColors = U.morphColors, B.morphTargetsCount = U.morphTargetsCount, B.numClippingPlanes = U.numClippingPlanes, B.numIntersection = U.numClipIntersection, B.vertexAlphas = U.vertexAlphas, B.vertexTangents = U.vertexTangents, B.toneMapping = U.toneMapping; + } + function ko(E, U, B, G, O) { + U.isScene !== !0 && (U = ge), M.resetTextureUnits(); + const de = U.fog, Se = G.isMeshStandardMaterial ? U.environment : null, Le = A === null ? S.outputColorSpace : A.isXRRenderTarget === !0 ? A.texture.colorSpace : $t, Ue = (G.isMeshStandardMaterial ? I : _).get(G.envMap || Se), Ge = G.vertexColors === !0 && !!B.attributes.color && B.attributes.color.itemSize === 4, Ne = !!B.attributes.tangent && (!!G.normalMap || G.anisotropy > 0), Oe = !!B.morphAttributes.position, it = !!B.morphAttributes.normal, St = !!B.morphAttributes.color; + let ct = ln; + G.toneMapped && (A === null || A.isXRRenderTarget === !0) && (ct = S.toneMapping); + const Vt = B.morphAttributes.position || B.morphAttributes.normal || B.morphAttributes.color, Je = Vt !== void 0 ? Vt.length : 0, He = be.get(G), lr = f.state.lights; + if (j === !0 && (oe === !0 || E !== x)) { + const At = E === x && G.id === W; + Fe.setState(G, E, At); + } + let tt = !1; + G.version === He.__version ? (He.needsLights && He.lightsStateVersion !== lr.state.version || He.outputColorSpace !== Le || O.isBatchedMesh && He.batching === !1 || !O.isBatchedMesh && He.batching === !0 || O.isInstancedMesh && He.instancing === !1 || !O.isInstancedMesh && He.instancing === !0 || O.isSkinnedMesh && He.skinning === !1 || !O.isSkinnedMesh && He.skinning === !0 || O.isInstancedMesh && He.instancingColor === !0 && O.instanceColor === null || O.isInstancedMesh && He.instancingColor === !1 && O.instanceColor !== null || He.envMap !== Ue || G.fog === !0 && He.fog !== de || He.numClippingPlanes !== void 0 && (He.numClippingPlanes !== Fe.numPlanes || He.numIntersection !== Fe.numIntersection) || He.vertexAlphas !== Ge || He.vertexTangents !== Ne || He.morphTargets !== Oe || He.morphNormals !== it || He.morphColors !== St || He.toneMapping !== ct || Re.isWebGL2 === !0 && He.morphTargetsCount !== Je) && (tt = !0) : (tt = !0, He.__version = G.version); + let dn = He.currentProgram; + tt === !0 && (dn = Ei(G, U, O)); + let vs = !1, si = !1, cr = !1; + const ft = dn.getUniforms(), fn = He.uniforms; + if (pe.useProgram(dn.program) && (vs = !0, si = !0, cr = !0), G.id !== W && (W = G.id, si = !0), vs || x !== E) { + ft.setValue(N, "projectionMatrix", E.projectionMatrix), ft.setValue(N, "viewMatrix", E.matrixWorldInverse); + const At = ft.map.cameraPosition; + At !== void 0 && At.setValue(N, Ae.setFromMatrixPosition(E.matrixWorld)), Re.logarithmicDepthBuffer && ft.setValue( + N, + "logDepthBufFC", + 2 / (Math.log(E.far + 1) / Math.LN2) + ), (G.isMeshPhongMaterial || G.isMeshToonMaterial || G.isMeshLambertMaterial || G.isMeshBasicMaterial || G.isMeshStandardMaterial || G.isShaderMaterial) && ft.setValue(N, "isOrthographic", E.isOrthographicCamera === !0), x !== E && (x = E, si = !0, cr = !0); + } + if (O.isSkinnedMesh) { + ft.setOptional(N, O, "bindMatrix"), ft.setOptional(N, O, "bindMatrixInverse"); + const At = O.skeleton; + At && (Re.floatVertexTextures ? (At.boneTexture === null && At.computeBoneTexture(), ft.setValue(N, "boneTexture", At.boneTexture, M)) : console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.")); + } + O.isBatchedMesh && (ft.setOptional(N, O, "batchingTexture"), ft.setValue(N, "batchingTexture", O._matricesTexture, M)); + const ur = B.morphAttributes; + if ((ur.position !== void 0 || ur.normal !== void 0 || ur.color !== void 0 && Re.isWebGL2 === !0) && ze.update(O, B, dn), (si || He.receiveShadow !== O.receiveShadow) && (He.receiveShadow = O.receiveShadow, ft.setValue(N, "receiveShadow", O.receiveShadow)), G.isMeshGouraudMaterial && G.envMap !== null && (fn.envMap.value = Ue, fn.flipEnvMap.value = Ue.isCubeTexture && Ue.isRenderTargetTexture === !1 ? -1 : 1), si && (ft.setValue(N, "toneMappingExposure", S.toneMappingExposure), He.needsLights && Wo(fn, cr), de && G.fog === !0 && ae.refreshFogUniforms(fn, de), ae.refreshMaterialUniforms(fn, G, Y, V, ve), Zi.upload(N, _s(He), fn, M)), G.isShaderMaterial && G.uniformsNeedUpdate === !0 && (Zi.upload(N, _s(He), fn, M), G.uniformsNeedUpdate = !1), G.isSpriteMaterial && ft.setValue(N, "center", O.center), ft.setValue(N, "modelViewMatrix", O.modelViewMatrix), ft.setValue(N, "normalMatrix", O.normalMatrix), ft.setValue(N, "modelMatrix", O.matrixWorld), G.isShaderMaterial || G.isRawShaderMaterial) { + const At = G.uniformsGroups; + for (let hr = 0, qo = At.length; hr < qo; hr++) + if (Re.isWebGL2) { + const xs = At[hr]; + ne.update(xs, dn), ne.bind(xs, dn); + } else + console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2."); + } + return dn; + } + function Wo(E, U) { + E.ambientLightColor.needsUpdate = U, E.lightProbe.needsUpdate = U, E.directionalLights.needsUpdate = U, E.directionalLightShadows.needsUpdate = U, E.pointLights.needsUpdate = U, E.pointLightShadows.needsUpdate = U, E.spotLights.needsUpdate = U, E.spotLightShadows.needsUpdate = U, E.rectAreaLights.needsUpdate = U, E.hemisphereLights.needsUpdate = U; + } + function Xo(E) { + return E.isMeshLambertMaterial || E.isMeshToonMaterial || E.isMeshPhongMaterial || E.isMeshStandardMaterial || E.isShadowMaterial || E.isShaderMaterial && E.lights === !0; + } + this.getActiveCubeFace = function() { + return D; + }, this.getActiveMipmapLevel = function() { + return C; + }, this.getRenderTarget = function() { + return A; + }, this.setRenderTargetTextures = function(E, U, B) { + be.get(E.texture).__webglTexture = U, be.get(E.depthTexture).__webglTexture = B; + const G = be.get(E); + G.__hasExternalTextures = !0, G.__hasExternalTextures && (G.__autoAllocateDepthBuffer = B === void 0, G.__autoAllocateDepthBuffer || Me.has("WEBGL_multisampled_render_to_texture") === !0 && (console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"), G.__useRenderToTexture = !1)); + }, this.setRenderTargetFramebuffer = function(E, U) { + const B = be.get(E); + B.__webglFramebuffer = U, B.__useDefaultFramebuffer = U === void 0; + }, this.setRenderTarget = function(E, U = 0, B = 0) { + A = E, D = U, C = B; + let G = !0, O = null, de = !1, Se = !1; + if (E) { + const Ue = be.get(E); + Ue.__useDefaultFramebuffer !== void 0 ? (pe.bindFramebuffer(N.FRAMEBUFFER, null), G = !1) : Ue.__webglFramebuffer === void 0 ? M.setupRenderTarget(E) : Ue.__hasExternalTextures && M.rebindTextures(E, be.get(E.texture).__webglTexture, be.get(E.depthTexture).__webglTexture); + const Ge = E.texture; + (Ge.isData3DTexture || Ge.isDataArrayTexture || Ge.isCompressedArrayTexture) && (Se = !0); + const Ne = be.get(E).__webglFramebuffer; + E.isWebGLCubeRenderTarget ? (Array.isArray(Ne[U]) ? O = Ne[U][B] : O = Ne[U], de = !0) : Re.isWebGL2 && E.samples > 0 && M.useMultisampledRTT(E) === !1 ? O = be.get(E).__webglMultisampledFramebuffer : Array.isArray(Ne) ? O = Ne[B] : O = Ne, y.copy(E.viewport), z.copy(E.scissor), Z = E.scissorTest; + } else + y.copy(q).multiplyScalar(Y).floor(), z.copy(Q).multiplyScalar(Y).floor(), Z = ce; + if (pe.bindFramebuffer(N.FRAMEBUFFER, O) && Re.drawBuffers && G && pe.drawBuffers(E, O), pe.viewport(y), pe.scissor(z), pe.setScissorTest(Z), de) { + const Ue = be.get(E.texture); + N.framebufferTexture2D(N.FRAMEBUFFER, N.COLOR_ATTACHMENT0, N.TEXTURE_CUBE_MAP_POSITIVE_X + U, Ue.__webglTexture, B); + } else if (Se) { + const Ue = be.get(E.texture), Ge = U || 0; + N.framebufferTextureLayer(N.FRAMEBUFFER, N.COLOR_ATTACHMENT0, Ue.__webglTexture, B || 0, Ge); + } + W = -1; + }, this.readRenderTargetPixels = function(E, U, B, G, O, de, Se) { + if (!(E && E.isWebGLRenderTarget)) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget."); + return; + } + let Le = be.get(E).__webglFramebuffer; + if (E.isWebGLCubeRenderTarget && Se !== void 0 && (Le = Le[Se]), Le) { + pe.bindFramebuffer(N.FRAMEBUFFER, Le); + try { + const Ue = E.texture, Ge = Ue.format, Ne = Ue.type; + if (Ge !== Ft && ue.convert(Ge) !== N.getParameter(N.IMPLEMENTATION_COLOR_READ_FORMAT)) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."); + return; + } + const Oe = Ne === gi && (Me.has("EXT_color_buffer_half_float") || Re.isWebGL2 && Me.has("EXT_color_buffer_float")); + if (Ne !== cn && ue.convert(Ne) !== N.getParameter(N.IMPLEMENTATION_COLOR_READ_TYPE) && // Edge and Chrome Mac < 52 (#9513) + !(Ne === an && (Re.isWebGL2 || Me.has("OES_texture_float") || Me.has("WEBGL_color_buffer_float"))) && // Chrome Mac >= 52 and Firefox + !Oe) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type."); + return; + } + U >= 0 && U <= E.width - G && B >= 0 && B <= E.height - O && N.readPixels(U, B, G, O, ue.convert(Ge), ue.convert(Ne), de); + } finally { + const Ue = A !== null ? be.get(A).__webglFramebuffer : null; + pe.bindFramebuffer(N.FRAMEBUFFER, Ue); + } + } + }, this.copyFramebufferToTexture = function(E, U, B = 0) { + const G = Math.pow(2, -B), O = Math.floor(U.image.width * G), de = Math.floor(U.image.height * G); + M.setTexture2D(U, 0), N.copyTexSubImage2D(N.TEXTURE_2D, B, 0, 0, E.x, E.y, O, de), pe.unbindTexture(); + }, this.copyTextureToTexture = function(E, U, B, G = 0) { + const O = U.image.width, de = U.image.height, Se = ue.convert(B.format), Le = ue.convert(B.type); + M.setTexture2D(B, 0), N.pixelStorei(N.UNPACK_FLIP_Y_WEBGL, B.flipY), N.pixelStorei(N.UNPACK_PREMULTIPLY_ALPHA_WEBGL, B.premultiplyAlpha), N.pixelStorei(N.UNPACK_ALIGNMENT, B.unpackAlignment), U.isDataTexture ? N.texSubImage2D(N.TEXTURE_2D, G, E.x, E.y, O, de, Se, Le, U.image.data) : U.isCompressedTexture ? N.compressedTexSubImage2D(N.TEXTURE_2D, G, E.x, E.y, U.mipmaps[0].width, U.mipmaps[0].height, Se, U.mipmaps[0].data) : N.texSubImage2D(N.TEXTURE_2D, G, E.x, E.y, Se, Le, U.image), G === 0 && B.generateMipmaps && N.generateMipmap(N.TEXTURE_2D), pe.unbindTexture(); + }, this.copyTextureToTexture3D = function(E, U, B, G, O = 0) { + if (S.isWebGL1Renderer) { + console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2."); + return; + } + const de = E.max.x - E.min.x + 1, Se = E.max.y - E.min.y + 1, Le = E.max.z - E.min.z + 1, Ue = ue.convert(G.format), Ge = ue.convert(G.type); + let Ne; + if (G.isData3DTexture) + M.setTexture3D(G, 0), Ne = N.TEXTURE_3D; + else if (G.isDataArrayTexture || G.isCompressedArrayTexture) + M.setTexture2DArray(G, 0), Ne = N.TEXTURE_2D_ARRAY; + else { + console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray."); + return; + } + N.pixelStorei(N.UNPACK_FLIP_Y_WEBGL, G.flipY), N.pixelStorei(N.UNPACK_PREMULTIPLY_ALPHA_WEBGL, G.premultiplyAlpha), N.pixelStorei(N.UNPACK_ALIGNMENT, G.unpackAlignment); + const Oe = N.getParameter(N.UNPACK_ROW_LENGTH), it = N.getParameter(N.UNPACK_IMAGE_HEIGHT), St = N.getParameter(N.UNPACK_SKIP_PIXELS), ct = N.getParameter(N.UNPACK_SKIP_ROWS), Vt = N.getParameter(N.UNPACK_SKIP_IMAGES), Je = B.isCompressedTexture ? B.mipmaps[O] : B.image; + N.pixelStorei(N.UNPACK_ROW_LENGTH, Je.width), N.pixelStorei(N.UNPACK_IMAGE_HEIGHT, Je.height), N.pixelStorei(N.UNPACK_SKIP_PIXELS, E.min.x), N.pixelStorei(N.UNPACK_SKIP_ROWS, E.min.y), N.pixelStorei(N.UNPACK_SKIP_IMAGES, E.min.z), B.isDataTexture || B.isData3DTexture ? N.texSubImage3D(Ne, O, U.x, U.y, U.z, de, Se, Le, Ue, Ge, Je.data) : B.isCompressedArrayTexture ? (console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."), N.compressedTexSubImage3D(Ne, O, U.x, U.y, U.z, de, Se, Le, Ue, Je.data)) : N.texSubImage3D(Ne, O, U.x, U.y, U.z, de, Se, Le, Ue, Ge, Je), N.pixelStorei(N.UNPACK_ROW_LENGTH, Oe), N.pixelStorei(N.UNPACK_IMAGE_HEIGHT, it), N.pixelStorei(N.UNPACK_SKIP_PIXELS, St), N.pixelStorei(N.UNPACK_SKIP_ROWS, ct), N.pixelStorei(N.UNPACK_SKIP_IMAGES, Vt), O === 0 && G.generateMipmaps && N.generateMipmap(Ne), pe.unbindTexture(); + }, this.initTexture = function(E) { + E.isCubeTexture ? M.setTextureCube(E, 0) : E.isData3DTexture ? M.setTexture3D(E, 0) : E.isDataArrayTexture || E.isCompressedArrayTexture ? M.setTexture2DArray(E, 0) : M.setTexture2D(E, 0), pe.unbindTexture(); + }, this.resetState = function() { + D = 0, C = 0, A = null, pe.reset(), T.reset(); + }, typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", { detail: this })); + } + get coordinateSystem() { + return Zt; + } + get outputColorSpace() { + return this._outputColorSpace; + } + set outputColorSpace(e) { + this._outputColorSpace = e; + const t = this.getContext(); + t.drawingBufferColorSpace = e === os ? "display-p3" : "srgb", t.unpackColorSpace = Ke.workingColorSpace === sr ? "display-p3" : "srgb"; + } + get outputEncoding() { + return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."), this.outputColorSpace === ht ? Tn : go; + } + set outputEncoding(e) { + console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."), this.outputColorSpace = e === Tn ? ht : $t; + } + get useLegacyLights() { + return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."), this._useLegacyLights; + } + set useLegacyLights(e) { + console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."), this._useLegacyLights = e; + } +} +class Qf extends Go { +} +Qf.prototype.isWebGL1Renderer = !0; +class ir { + constructor(e, t = 25e-5) { + this.isFogExp2 = !0, this.name = "", this.color = new Xe(e), this.density = t; + } + clone() { + return new ir(this.color, this.density); + } + toJSON() { + return { + type: "FogExp2", + name: this.name, + color: this.color.getHex(), + density: this.density + }; + } +} +class Ha extends dt { + constructor() { + super(), this.isScene = !0, this.type = "Scene", this.background = null, this.environment = null, this.fog = null, this.backgroundBlurriness = 0, this.backgroundIntensity = 1, this.overrideMaterial = null, typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", { detail: this })); + } + copy(e, t) { + return super.copy(e, t), e.background !== null && (this.background = e.background.clone()), e.environment !== null && (this.environment = e.environment.clone()), e.fog !== null && (this.fog = e.fog.clone()), this.backgroundBlurriness = e.backgroundBlurriness, this.backgroundIntensity = e.backgroundIntensity, e.overrideMaterial !== null && (this.overrideMaterial = e.overrideMaterial.clone()), this.matrixAutoUpdate = e.matrixAutoUpdate, this; + } + toJSON(e) { + const t = super.toJSON(e); + return this.fog !== null && (t.object.fog = this.fog.toJSON()), this.backgroundBlurriness > 0 && (t.object.backgroundBlurriness = this.backgroundBlurriness), this.backgroundIntensity !== 1 && (t.object.backgroundIntensity = this.backgroundIntensity), t; + } +} +class Va extends Bt { + constructor(e, t, n, r = 1) { + super(e, t, n), this.isInstancedBufferAttribute = !0, this.meshPerAttribute = r; + } + copy(e) { + return super.copy(e), this.meshPerAttribute = e.meshPerAttribute, this; + } + toJSON() { + const e = super.toJSON(); + return e.meshPerAttribute = this.meshPerAttribute, e.isInstancedBufferAttribute = !0, e; + } +} +const jn = /* @__PURE__ */ new Qe(), ka = /* @__PURE__ */ new Qe(), Yi = [], Wa = /* @__PURE__ */ new Cn(), ep = /* @__PURE__ */ new Qe(), di = /* @__PURE__ */ new Ot(), fi = /* @__PURE__ */ new xi(); +class Xa extends Ot { + constructor(e, t, n) { + super(e, t), this.isInstancedMesh = !0, this.instanceMatrix = new Va(new Float32Array(n * 16), 16), this.instanceColor = null, this.count = n, this.boundingBox = null, this.boundingSphere = null; + for (let r = 0; r < n; r++) + this.setMatrixAt(r, ep); + } + computeBoundingBox() { + const e = this.geometry, t = this.count; + this.boundingBox === null && (this.boundingBox = new Cn()), e.boundingBox === null && e.computeBoundingBox(), this.boundingBox.makeEmpty(); + for (let n = 0; n < t; n++) + this.getMatrixAt(n, jn), Wa.copy(e.boundingBox).applyMatrix4(jn), this.boundingBox.union(Wa); + } + computeBoundingSphere() { + const e = this.geometry, t = this.count; + this.boundingSphere === null && (this.boundingSphere = new xi()), e.boundingSphere === null && e.computeBoundingSphere(), this.boundingSphere.makeEmpty(); + for (let n = 0; n < t; n++) + this.getMatrixAt(n, jn), fi.copy(e.boundingSphere).applyMatrix4(jn), this.boundingSphere.union(fi); + } + copy(e, t) { + return super.copy(e, t), this.instanceMatrix.copy(e.instanceMatrix), e.instanceColor !== null && (this.instanceColor = e.instanceColor.clone()), this.count = e.count, e.boundingBox !== null && (this.boundingBox = e.boundingBox.clone()), e.boundingSphere !== null && (this.boundingSphere = e.boundingSphere.clone()), this; + } + getColorAt(e, t) { + t.fromArray(this.instanceColor.array, e * 3); + } + getMatrixAt(e, t) { + t.fromArray(this.instanceMatrix.array, e * 16); + } + raycast(e, t) { + const n = this.matrixWorld, r = this.count; + if (di.geometry = this.geometry, di.material = this.material, di.material !== void 0 && (this.boundingSphere === null && this.computeBoundingSphere(), fi.copy(this.boundingSphere), fi.applyMatrix4(n), e.ray.intersectsSphere(fi) !== !1)) + for (let s = 0; s < r; s++) { + this.getMatrixAt(s, jn), ka.multiplyMatrices(n, jn), di.matrixWorld = ka, di.raycast(e, Yi); + for (let o = 0, a = Yi.length; o < a; o++) { + const l = Yi[o]; + l.instanceId = s, l.object = this, t.push(l); + } + Yi.length = 0; + } + } + setColorAt(e, t) { + this.instanceColor === null && (this.instanceColor = new Va(new Float32Array(this.instanceMatrix.count * 3), 3)), t.toArray(this.instanceColor.array, e * 3); + } + setMatrixAt(e, t) { + t.toArray(this.instanceMatrix.array, e * 16); + } + updateMorphTargets() { + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +} +class ds extends hn { + constructor(e = 1, t = 0.4, n = 12, r = 48, s = Math.PI * 2) { + super(), this.type = "TorusGeometry", this.parameters = { + radius: e, + tube: t, + radialSegments: n, + tubularSegments: r, + arc: s + }, n = Math.floor(n), r = Math.floor(r); + const o = [], a = [], l = [], c = [], h = new P(), d = new P(), p = new P(); + for (let m = 0; m <= n; m++) + for (let g = 0; g <= r; g++) { + const v = g / r * s, f = m / n * Math.PI * 2; + d.x = (e + t * Math.cos(f)) * Math.cos(v), d.y = (e + t * Math.cos(f)) * Math.sin(v), d.z = t * Math.sin(f), a.push(d.x, d.y, d.z), h.x = e * Math.cos(v), h.y = e * Math.sin(v), p.subVectors(d, h).normalize(), l.push(p.x, p.y, p.z), c.push(g / r), c.push(m / n); + } + for (let m = 1; m <= n; m++) + for (let g = 1; g <= r; g++) { + const v = (r + 1) * m + g - 1, f = (r + 1) * (m - 1) + g - 1, u = (r + 1) * (m - 1) + g, b = (r + 1) * m + g; + o.push(v, f, b), o.push(f, u, b); + } + this.setIndex(o), this.setAttribute("position", new Ht(a, 3)), this.setAttribute("normal", new Ht(l, 3)), this.setAttribute("uv", new Ht(c, 2)); + } + copy(e) { + return super.copy(e), this.parameters = Object.assign({}, e.parameters), this; + } + static fromJSON(e) { + return new ds(e.radius, e.tube, e.radialSegments, e.tubularSegments, e.arc); + } +} +class qa extends Mi { + constructor(e) { + super(), this.isMeshStandardMaterial = !0, this.defines = { STANDARD: "" }, this.type = "MeshStandardMaterial", this.color = new Xe(16777215), this.roughness = 1, this.metalness = 0, this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new Xe(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = vo, this.normalScale = new Ie(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.roughnessMap = null, this.metalnessMap = null, this.alphaMap = null, this.envMap = null, this.envMapIntensity = 1, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.flatShading = !1, this.fog = !0, this.setValues(e); + } + copy(e) { + return super.copy(e), this.defines = { STANDARD: "" }, this.color.copy(e.color), this.roughness = e.roughness, this.metalness = e.metalness, this.map = e.map, this.lightMap = e.lightMap, this.lightMapIntensity = e.lightMapIntensity, this.aoMap = e.aoMap, this.aoMapIntensity = e.aoMapIntensity, this.emissive.copy(e.emissive), this.emissiveMap = e.emissiveMap, this.emissiveIntensity = e.emissiveIntensity, this.bumpMap = e.bumpMap, this.bumpScale = e.bumpScale, this.normalMap = e.normalMap, this.normalMapType = e.normalMapType, this.normalScale.copy(e.normalScale), this.displacementMap = e.displacementMap, this.displacementScale = e.displacementScale, this.displacementBias = e.displacementBias, this.roughnessMap = e.roughnessMap, this.metalnessMap = e.metalnessMap, this.alphaMap = e.alphaMap, this.envMap = e.envMap, this.envMapIntensity = e.envMapIntensity, this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.wireframeLinecap = e.wireframeLinecap, this.wireframeLinejoin = e.wireframeLinejoin, this.flatShading = e.flatShading, this.fog = e.fog, this; + } +} +class fs extends dt { + constructor(e, t = 1) { + super(), this.isLight = !0, this.type = "Light", this.color = new Xe(e), this.intensity = t; + } + dispose() { + } + copy(e, t) { + return super.copy(e, t), this.color.copy(e.color), this.intensity = e.intensity, this; + } + toJSON(e) { + const t = super.toJSON(e); + return t.object.color = this.color.getHex(), t.object.intensity = this.intensity, this.groundColor !== void 0 && (t.object.groundColor = this.groundColor.getHex()), this.distance !== void 0 && (t.object.distance = this.distance), this.angle !== void 0 && (t.object.angle = this.angle), this.decay !== void 0 && (t.object.decay = this.decay), this.penumbra !== void 0 && (t.object.penumbra = this.penumbra), this.shadow !== void 0 && (t.object.shadow = this.shadow.toJSON()), t; + } +} +const Wr = /* @__PURE__ */ new Qe(), Ya = /* @__PURE__ */ new P(), ja = /* @__PURE__ */ new P(); +class Ho { + constructor(e) { + this.camera = e, this.bias = 0, this.normalBias = 0, this.radius = 1, this.blurSamples = 8, this.mapSize = new Ie(512, 512), this.map = null, this.mapPass = null, this.matrix = new Qe(), this.autoUpdate = !0, this.needsUpdate = !1, this._frustum = new cs(), this._frameExtents = new Ie(1, 1), this._viewportCount = 1, this._viewports = [ + new $e(0, 0, 1, 1) + ]; + } + getViewportCount() { + return this._viewportCount; + } + getFrustum() { + return this._frustum; + } + updateMatrices(e) { + const t = this.camera, n = this.matrix; + Ya.setFromMatrixPosition(e.matrixWorld), t.position.copy(Ya), ja.setFromMatrixPosition(e.target.matrixWorld), t.lookAt(ja), t.updateMatrixWorld(), Wr.multiplyMatrices(t.projectionMatrix, t.matrixWorldInverse), this._frustum.setFromProjectionMatrix(Wr), n.set( + 0.5, + 0, + 0, + 0.5, + 0, + 0.5, + 0, + 0.5, + 0, + 0, + 0.5, + 0.5, + 0, + 0, + 0, + 1 + ), n.multiply(Wr); + } + getViewport(e) { + return this._viewports[e]; + } + getFrameExtents() { + return this._frameExtents; + } + dispose() { + this.map && this.map.dispose(), this.mapPass && this.mapPass.dispose(); + } + copy(e) { + return this.camera = e.camera.clone(), this.bias = e.bias, this.radius = e.radius, this.mapSize.copy(e.mapSize), this; + } + clone() { + return new this.constructor().copy(this); + } + toJSON() { + const e = {}; + return this.bias !== 0 && (e.bias = this.bias), this.normalBias !== 0 && (e.normalBias = this.normalBias), this.radius !== 1 && (e.radius = this.radius), (this.mapSize.x !== 512 || this.mapSize.y !== 512) && (e.mapSize = this.mapSize.toArray()), e.camera = this.camera.toJSON(!1).object, delete e.camera.matrix, e; + } +} +const Ka = /* @__PURE__ */ new Qe(), pi = /* @__PURE__ */ new P(), Xr = /* @__PURE__ */ new P(); +class tp extends Ho { + constructor() { + super(new Tt(90, 1, 0.5, 500)), this.isPointLightShadow = !0, this._frameExtents = new Ie(4, 2), this._viewportCount = 6, this._viewports = [ + // These viewports map a cube-map onto a 2D texture with the + // following orientation: + // + // xzXZ + // y Y + // + // X - Positive x direction + // x - Negative x direction + // Y - Positive y direction + // y - Negative y direction + // Z - Positive z direction + // z - Negative z direction + // positive X + new $e(2, 1, 1, 1), + // negative X + new $e(0, 1, 1, 1), + // positive Z + new $e(3, 1, 1, 1), + // negative Z + new $e(1, 1, 1, 1), + // positive Y + new $e(3, 0, 1, 1), + // negative Y + new $e(1, 0, 1, 1) + ], this._cubeDirections = [ + new P(1, 0, 0), + new P(-1, 0, 0), + new P(0, 0, 1), + new P(0, 0, -1), + new P(0, 1, 0), + new P(0, -1, 0) + ], this._cubeUps = [ + new P(0, 1, 0), + new P(0, 1, 0), + new P(0, 1, 0), + new P(0, 1, 0), + new P(0, 0, 1), + new P(0, 0, -1) + ]; + } + updateMatrices(e, t = 0) { + const n = this.camera, r = this.matrix, s = e.distance || n.far; + s !== n.far && (n.far = s, n.updateProjectionMatrix()), pi.setFromMatrixPosition(e.matrixWorld), n.position.copy(pi), Xr.copy(n.position), Xr.add(this._cubeDirections[t]), n.up.copy(this._cubeUps[t]), n.lookAt(Xr), n.updateMatrixWorld(), r.makeTranslation(-pi.x, -pi.y, -pi.z), Ka.multiplyMatrices(n.projectionMatrix, n.matrixWorldInverse), this._frustum.setFromProjectionMatrix(Ka); + } +} +class Za extends fs { + constructor(e, t, n = 0, r = 2) { + super(e, t), this.isPointLight = !0, this.type = "PointLight", this.distance = n, this.decay = r, this.shadow = new tp(); + } + get power() { + return this.intensity * 4 * Math.PI; + } + set power(e) { + this.intensity = e / (4 * Math.PI); + } + dispose() { + this.shadow.dispose(); + } + copy(e, t) { + return super.copy(e, t), this.distance = e.distance, this.decay = e.decay, this.shadow = e.shadow.clone(), this; + } +} +class np extends Ho { + constructor() { + super(new Uo(-5, 5, 5, -5, 0.5, 500)), this.isDirectionalLightShadow = !0; + } +} +class ip extends fs { + constructor(e, t) { + super(e, t), this.isDirectionalLight = !0, this.type = "DirectionalLight", this.position.copy(dt.DEFAULT_UP), this.updateMatrix(), this.target = new dt(), this.shadow = new np(); + } + dispose() { + this.shadow.dispose(); + } + copy(e) { + return super.copy(e), this.target = e.target.clone(), this.shadow = e.shadow.clone(), this; + } +} +class rp extends fs { + constructor(e, t) { + super(e, t), this.isAmbientLight = !0, this.type = "AmbientLight"; + } +} +class $a { + constructor(e = 1, t = 0, n = 0) { + return this.radius = e, this.phi = t, this.theta = n, this; + } + set(e, t, n) { + return this.radius = e, this.phi = t, this.theta = n, this; + } + copy(e) { + return this.radius = e.radius, this.phi = e.phi, this.theta = e.theta, this; + } + // restrict phi to be between EPS and PI-EPS + makeSafe() { + return this.phi = Math.max(1e-6, Math.min(Math.PI - 1e-6, this.phi)), this; + } + setFromVector3(e) { + return this.setFromCartesianCoords(e.x, e.y, e.z); + } + setFromCartesianCoords(e, t, n) { + return this.radius = Math.sqrt(e * e + t * t + n * n), this.radius === 0 ? (this.theta = 0, this.phi = 0) : (this.theta = Math.atan2(e, n), this.phi = Math.acos(vt(t / this.radius, -1, 1))), this; + } + clone() { + return new this.constructor().copy(this); + } +} +typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register", { detail: { + revision: ss +} })); +typeof window < "u" && (window.__THREE__ ? console.warn("WARNING: Multiple instances of Three.js being imported.") : window.__THREE__ = ss); +const Ja = { type: "change" }, qr = { type: "start" }, Qa = { type: "end" }, ji = new To(), eo = new rn(), sp = Math.cos(70 * ql.DEG2RAD); +class ap extends Rn { + constructor(e, t) { + super(), this.object = e, this.domElement = t, this.domElement.style.touchAction = "none", this.enabled = !0, this.target = new P(), this.cursor = new P(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: Ln.ROTATE, MIDDLE: Ln.DOLLY, RIGHT: Ln.PAN }, this.touches = { ONE: Pn.ROTATE, TWO: Pn.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this.getPolarAngle = function() { + return a.phi; + }, this.getAzimuthalAngle = function() { + return a.theta; + }, this.getDistance = function() { + return this.object.position.distanceTo(this.target); + }, this.listenToKeyEvents = function(T) { + T.addEventListener("keydown", ye), this._domElementKeyEvents = T; + }, this.stopListenToKeyEvents = function() { + this._domElementKeyEvents.removeEventListener("keydown", ye), this._domElementKeyEvents = null; + }, this.saveState = function() { + n.target0.copy(n.target), n.position0.copy(n.object.position), n.zoom0 = n.object.zoom; + }, this.reset = function() { + n.target.copy(n.target0), n.object.position.copy(n.position0), n.object.zoom = n.zoom0, n.object.updateProjectionMatrix(), n.dispatchEvent(Ja), n.update(), s = r.NONE; + }, this.update = function() { + const T = new P(), ne = new An().setFromUnitVectors(e.up, new P(0, 1, 0)), xe = ne.clone().invert(), fe = new P(), te = new An(), w = new P(), ie = 2 * Math.PI; + return function(Ce = null) { + const Te = n.object.position; + T.copy(Te).sub(n.target), T.applyQuaternion(ne), a.setFromVector3(T), n.autoRotate && s === r.NONE && Z(y(Ce)), n.enableDamping ? (a.theta += l.theta * n.dampingFactor, a.phi += l.phi * n.dampingFactor) : (a.theta += l.theta, a.phi += l.phi); + let ke = n.minAzimuthAngle, We = n.maxAzimuthAngle; + isFinite(ke) && isFinite(We) && (ke < -Math.PI ? ke += ie : ke > Math.PI && (ke -= ie), We < -Math.PI ? We += ie : We > Math.PI && (We -= ie), ke <= We ? a.theta = Math.max(ke, Math.min(We, a.theta)) : a.theta = a.theta > (ke + We) / 2 ? Math.max(ke, a.theta) : Math.min(We, a.theta)), a.phi = Math.max(n.minPolarAngle, Math.min(n.maxPolarAngle, a.phi)), a.makeSafe(), n.enableDamping === !0 ? n.target.addScaledVector(h, n.dampingFactor) : n.target.add(h), n.target.sub(n.cursor), n.target.clampLength(n.minTargetRadius, n.maxTargetRadius), n.target.add(n.cursor), n.zoomToCursor && C || n.object.isOrthographicCamera ? a.radius = q(a.radius) : a.radius = q(a.radius * c), T.setFromSpherical(a), T.applyQuaternion(xe), Te.copy(n.target).add(T), n.object.lookAt(n.target), n.enableDamping === !0 ? (l.theta *= 1 - n.dampingFactor, l.phi *= 1 - n.dampingFactor, h.multiplyScalar(1 - n.dampingFactor)) : (l.set(0, 0, 0), h.set(0, 0, 0)); + let et = !1; + if (n.zoomToCursor && C) { + let nt = null; + if (n.object.isPerspectiveCamera) { + const qe = T.length(); + nt = q(qe * c); + const st = qe - nt; + n.object.position.addScaledVector(R, st), n.object.updateMatrixWorld(); + } else if (n.object.isOrthographicCamera) { + const qe = new P(D.x, D.y, 0); + qe.unproject(n.object), n.object.zoom = Math.max(n.minZoom, Math.min(n.maxZoom, n.object.zoom / c)), n.object.updateProjectionMatrix(), et = !0; + const st = new P(D.x, D.y, 0); + st.unproject(n.object), n.object.position.sub(st).add(qe), n.object.updateMatrixWorld(), nt = T.length(); + } else + console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), n.zoomToCursor = !1; + nt !== null && (this.screenSpacePanning ? n.target.set(0, 0, -1).transformDirection(n.object.matrix).multiplyScalar(nt).add(n.object.position) : (ji.origin.copy(n.object.position), ji.direction.set(0, 0, -1).transformDirection(n.object.matrix), Math.abs(n.object.up.dot(ji.direction)) < sp ? e.lookAt(n.target) : (eo.setFromNormalAndCoplanarPoint(n.object.up, n.target), ji.intersectPlane(eo, n.target)))); + } else n.object.isOrthographicCamera && (n.object.zoom = Math.max(n.minZoom, Math.min(n.maxZoom, n.object.zoom / c)), n.object.updateProjectionMatrix(), et = !0); + return c = 1, C = !1, et || fe.distanceToSquared(n.object.position) > o || 8 * (1 - te.dot(n.object.quaternion)) > o || w.distanceToSquared(n.target) > 0 ? (n.dispatchEvent(Ja), fe.copy(n.object.position), te.copy(n.object.quaternion), w.copy(n.target), !0) : !1; + }; + }(), this.dispose = function() { + n.domElement.removeEventListener("contextmenu", Ye), n.domElement.removeEventListener("pointerdown", M), n.domElement.removeEventListener("pointercancel", I), n.domElement.removeEventListener("wheel", J), n.domElement.removeEventListener("pointermove", _), n.domElement.removeEventListener("pointerup", I), n._domElementKeyEvents !== null && (n._domElementKeyEvents.removeEventListener("keydown", ye), n._domElementKeyEvents = null); + }; + const n = this, r = { + NONE: -1, + ROTATE: 0, + DOLLY: 1, + PAN: 2, + TOUCH_ROTATE: 3, + TOUCH_PAN: 4, + TOUCH_DOLLY_PAN: 5, + TOUCH_DOLLY_ROTATE: 6 + }; + let s = r.NONE; + const o = 1e-6, a = new $a(), l = new $a(); + let c = 1; + const h = new P(), d = new Ie(), p = new Ie(), m = new Ie(), g = new Ie(), v = new Ie(), f = new Ie(), u = new Ie(), b = new Ie(), S = new Ie(), R = new P(), D = new Ie(); + let C = !1; + const A = [], W = {}; + let x = !1; + function y(T) { + return T !== null ? 2 * Math.PI / 60 * n.autoRotateSpeed * T : 2 * Math.PI / 60 / 60 * n.autoRotateSpeed; + } + function z(T) { + const ne = Math.abs(T * 0.01); + return Math.pow(0.95, n.zoomSpeed * ne); + } + function Z(T) { + l.theta -= T; + } + function re(T) { + l.phi -= T; + } + const L = function() { + const T = new P(); + return function(xe, fe) { + T.setFromMatrixColumn(fe, 0), T.multiplyScalar(-xe), h.add(T); + }; + }(), F = function() { + const T = new P(); + return function(xe, fe) { + n.screenSpacePanning === !0 ? T.setFromMatrixColumn(fe, 1) : (T.setFromMatrixColumn(fe, 0), T.crossVectors(n.object.up, T)), T.multiplyScalar(xe), h.add(T); + }; + }(), V = function() { + const T = new P(); + return function(xe, fe) { + const te = n.domElement; + if (n.object.isPerspectiveCamera) { + const w = n.object.position; + T.copy(w).sub(n.target); + let ie = T.length(); + ie *= Math.tan(n.object.fov / 2 * Math.PI / 180), L(2 * xe * ie / te.clientHeight, n.object.matrix), F(2 * fe * ie / te.clientHeight, n.object.matrix); + } else n.object.isOrthographicCamera ? (L(xe * (n.object.right - n.object.left) / n.object.zoom / te.clientWidth, n.object.matrix), F(fe * (n.object.top - n.object.bottom) / n.object.zoom / te.clientHeight, n.object.matrix)) : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."), n.enablePan = !1); + }; + }(); + function Y(T) { + n.object.isPerspectiveCamera || n.object.isOrthographicCamera ? c /= T : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), n.enableZoom = !1); + } + function X(T) { + n.object.isPerspectiveCamera || n.object.isOrthographicCamera ? c *= T : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), n.enableZoom = !1); + } + function k(T, ne) { + if (!n.zoomToCursor) + return; + C = !0; + const xe = n.domElement.getBoundingClientRect(), fe = T - xe.left, te = ne - xe.top, w = xe.width, ie = xe.height; + D.x = fe / w * 2 - 1, D.y = -(te / ie) * 2 + 1, R.set(D.x, D.y, 1).unproject(n.object).sub(n.object.position).normalize(); + } + function q(T) { + return Math.max(n.minDistance, Math.min(n.maxDistance, T)); + } + function Q(T) { + d.set(T.clientX, T.clientY); + } + function ce(T) { + k(T.clientX, T.clientX), u.set(T.clientX, T.clientY); + } + function H(T) { + g.set(T.clientX, T.clientY); + } + function j(T) { + p.set(T.clientX, T.clientY), m.subVectors(p, d).multiplyScalar(n.rotateSpeed); + const ne = n.domElement; + Z(2 * Math.PI * m.x / ne.clientHeight), re(2 * Math.PI * m.y / ne.clientHeight), d.copy(p), n.update(); + } + function oe(T) { + b.set(T.clientX, T.clientY), S.subVectors(b, u), S.y > 0 ? Y(z(S.y)) : S.y < 0 && X(z(S.y)), u.copy(b), n.update(); + } + function ve(T) { + v.set(T.clientX, T.clientY), f.subVectors(v, g).multiplyScalar(n.panSpeed), V(f.x, f.y), g.copy(v), n.update(); + } + function _e(T) { + k(T.clientX, T.clientY), T.deltaY < 0 ? X(z(T.deltaY)) : T.deltaY > 0 && Y(z(T.deltaY)), n.update(); + } + function we(T) { + let ne = !1; + switch (T.code) { + case n.keys.UP: + T.ctrlKey || T.metaKey || T.shiftKey ? re(2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(0, n.keyPanSpeed), ne = !0; + break; + case n.keys.BOTTOM: + T.ctrlKey || T.metaKey || T.shiftKey ? re(-2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(0, -n.keyPanSpeed), ne = !0; + break; + case n.keys.LEFT: + T.ctrlKey || T.metaKey || T.shiftKey ? Z(2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(n.keyPanSpeed, 0), ne = !0; + break; + case n.keys.RIGHT: + T.ctrlKey || T.metaKey || T.shiftKey ? Z(-2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(-n.keyPanSpeed, 0), ne = !0; + break; + } + ne && (T.preventDefault(), n.update()); + } + function Ae(T) { + if (A.length === 1) + d.set(T.pageX, T.pageY); + else { + const ne = ue(T), xe = 0.5 * (T.pageX + ne.x), fe = 0.5 * (T.pageY + ne.y); + d.set(xe, fe); + } + } + function ge(T) { + if (A.length === 1) + g.set(T.pageX, T.pageY); + else { + const ne = ue(T), xe = 0.5 * (T.pageX + ne.x), fe = 0.5 * (T.pageY + ne.y); + g.set(xe, fe); + } + } + function Pe(T) { + const ne = ue(T), xe = T.pageX - ne.x, fe = T.pageY - ne.y, te = Math.sqrt(xe * xe + fe * fe); + u.set(0, te); + } + function N(T) { + n.enableZoom && Pe(T), n.enablePan && ge(T); + } + function rt(T) { + n.enableZoom && Pe(T), n.enableRotate && Ae(T); + } + function Me(T) { + if (A.length == 1) + p.set(T.pageX, T.pageY); + else { + const xe = ue(T), fe = 0.5 * (T.pageX + xe.x), te = 0.5 * (T.pageY + xe.y); + p.set(fe, te); + } + m.subVectors(p, d).multiplyScalar(n.rotateSpeed); + const ne = n.domElement; + Z(2 * Math.PI * m.x / ne.clientHeight), re(2 * Math.PI * m.y / ne.clientHeight), d.copy(p); + } + function Re(T) { + if (A.length === 1) + v.set(T.pageX, T.pageY); + else { + const ne = ue(T), xe = 0.5 * (T.pageX + ne.x), fe = 0.5 * (T.pageY + ne.y); + v.set(xe, fe); + } + f.subVectors(v, g).multiplyScalar(n.panSpeed), V(f.x, f.y), g.copy(v); + } + function pe(T) { + const ne = ue(T), xe = T.pageX - ne.x, fe = T.pageY - ne.y, te = Math.sqrt(xe * xe + fe * fe); + b.set(0, te), S.set(0, Math.pow(b.y / u.y, n.zoomSpeed)), Y(S.y), u.copy(b); + const w = (T.pageX + ne.x) * 0.5, ie = (T.pageY + ne.y) * 0.5; + k(w, ie); + } + function je(T) { + n.enableZoom && pe(T), n.enablePan && Re(T); + } + function be(T) { + n.enableZoom && pe(T), n.enableRotate && Me(T); + } + function M(T) { + n.enabled !== !1 && (A.length === 0 && (n.domElement.setPointerCapture(T.pointerId), n.domElement.addEventListener("pointermove", _), n.domElement.addEventListener("pointerup", I)), ze(T), T.pointerType === "touch" ? Fe(T) : $(T)); + } + function _(T) { + n.enabled !== !1 && (T.pointerType === "touch" ? ee(T) : K(T)); + } + function I(T) { + De(T), A.length === 0 && (n.domElement.releasePointerCapture(T.pointerId), n.domElement.removeEventListener("pointermove", _), n.domElement.removeEventListener("pointerup", I)), n.dispatchEvent(Qa), s = r.NONE; + } + function $(T) { + let ne; + switch (T.button) { + case 0: + ne = n.mouseButtons.LEFT; + break; + case 1: + ne = n.mouseButtons.MIDDLE; + break; + case 2: + ne = n.mouseButtons.RIGHT; + break; + default: + ne = -1; + } + switch (ne) { + case Ln.DOLLY: + if (n.enableZoom === !1) return; + ce(T), s = r.DOLLY; + break; + case Ln.ROTATE: + if (T.ctrlKey || T.metaKey || T.shiftKey) { + if (n.enablePan === !1) return; + H(T), s = r.PAN; + } else { + if (n.enableRotate === !1) return; + Q(T), s = r.ROTATE; + } + break; + case Ln.PAN: + if (T.ctrlKey || T.metaKey || T.shiftKey) { + if (n.enableRotate === !1) return; + Q(T), s = r.ROTATE; + } else { + if (n.enablePan === !1) return; + H(T), s = r.PAN; + } + break; + default: + s = r.NONE; + } + s !== r.NONE && n.dispatchEvent(qr); + } + function K(T) { + switch (s) { + case r.ROTATE: + if (n.enableRotate === !1) return; + j(T); + break; + case r.DOLLY: + if (n.enableZoom === !1) return; + oe(T); + break; + case r.PAN: + if (n.enablePan === !1) return; + ve(T); + break; + } + } + function J(T) { + n.enabled === !1 || n.enableZoom === !1 || s !== r.NONE || (T.preventDefault(), n.dispatchEvent(qr), _e(me(T)), n.dispatchEvent(Qa)); + } + function me(T) { + const ne = T.deltaMode, xe = { + clientX: T.clientX, + clientY: T.clientY, + deltaY: T.deltaY + }; + switch (ne) { + case 1: + xe.deltaY *= 16; + break; + case 2: + xe.deltaY *= 100; + break; + } + return T.ctrlKey && !x && (xe.deltaY *= 10), xe; + } + function ae(T) { + T.key === "Control" && (x = !0, document.addEventListener("keyup", he, { passive: !0, capture: !0 })); + } + function he(T) { + T.key === "Control" && (x = !1, document.removeEventListener("keyup", he, { passive: !0, capture: !0 })); + } + function ye(T) { + n.enabled === !1 || n.enablePan === !1 || we(T); + } + function Fe(T) { + switch (Ee(T), A.length) { + case 1: + switch (n.touches.ONE) { + case Pn.ROTATE: + if (n.enableRotate === !1) return; + Ae(T), s = r.TOUCH_ROTATE; + break; + case Pn.PAN: + if (n.enablePan === !1) return; + ge(T), s = r.TOUCH_PAN; + break; + default: + s = r.NONE; + } + break; + case 2: + switch (n.touches.TWO) { + case Pn.DOLLY_PAN: + if (n.enableZoom === !1 && n.enablePan === !1) return; + N(T), s = r.TOUCH_DOLLY_PAN; + break; + case Pn.DOLLY_ROTATE: + if (n.enableZoom === !1 && n.enableRotate === !1) return; + rt(T), s = r.TOUCH_DOLLY_ROTATE; + break; + default: + s = r.NONE; + } + break; + default: + s = r.NONE; + } + s !== r.NONE && n.dispatchEvent(qr); + } + function ee(T) { + switch (Ee(T), s) { + case r.TOUCH_ROTATE: + if (n.enableRotate === !1) return; + Me(T), n.update(); + break; + case r.TOUCH_PAN: + if (n.enablePan === !1) return; + Re(T), n.update(); + break; + case r.TOUCH_DOLLY_PAN: + if (n.enableZoom === !1 && n.enablePan === !1) return; + je(T), n.update(); + break; + case r.TOUCH_DOLLY_ROTATE: + if (n.enableZoom === !1 && n.enableRotate === !1) return; + be(T), n.update(); + break; + default: + s = r.NONE; + } + } + function Ye(T) { + n.enabled !== !1 && T.preventDefault(); + } + function ze(T) { + A.push(T.pointerId); + } + function De(T) { + delete W[T.pointerId]; + for (let ne = 0; ne < A.length; ne++) + if (A[ne] == T.pointerId) { + A.splice(ne, 1); + return; + } + } + function Ee(T) { + let ne = W[T.pointerId]; + ne === void 0 && (ne = new Ie(), W[T.pointerId] = ne), ne.set(T.pageX, T.pageY); + } + function ue(T) { + const ne = T.pointerId === A[0] ? A[1] : A[0]; + return W[ne]; + } + n.domElement.addEventListener("contextmenu", Ye), n.domElement.addEventListener("pointerdown", M), n.domElement.addEventListener("pointercancel", I), n.domElement.addEventListener("wheel", J, { passive: !1 }), document.addEventListener("keydown", ae, { passive: !0, capture: !0 }), this.update(); + } +} +const op = "_wrapper_1xs2z_1", lp = "_canvasShell_1xs2z_28", cp = "_canvas_1xs2z_28", up = "_viewportLabels_1xs2z_48", hp = "_splitLabel_1xs2z_61", dp = "_controlOverlay_1xs2z_73", fp = "_resolutionCard_1xs2z_83", pp = "_resolutionControl_1xs2z_97", mp = "_slider_1xs2z_105", _p = "_sliderValue_1xs2z_111", Ut = { + wrapper: op, + canvasShell: lp, + canvas: cp, + viewportLabels: up, + splitLabel: hp, + controlOverlay: dp, + resolutionCard: fp, + resolutionControl: pp, + slider: mp, + sliderValue: _p +}, gp = 24, to = new P(20, 20, 20), no = new P(0, 0, 0), vp = 5e3, Yr = "#f2f0ea", xp = (i, e, t) => Math.min(t, Math.max(e, i)), jr = (i, e, t, n, r = 1) => { + if (typeof i != "number" || Number.isNaN(i)) return e; + const s = Math.round(i / r) * r; + return xp(s, t, n); +}; +function io(i) { + const e = new rp(16777215, 0.65); + i.add(e); + const t = new ip(16777215, 1.1); + t.position.set(20, 50, 20), t.castShadow = !0, t.shadow.mapSize.width = 2048, t.shadow.mapSize.height = 2048, i.add(t); + const n = new Za(3900150, 1.1, 50); + n.position.set(-10, 10, -10), i.add(n); + const r = new Za(16743001, 0.9, 50); + r.position.set(10, -10, 10), i.add(r); +} +function Mp(i) { + if (Array.isArray(i)) { + i.forEach((e) => e.dispose()); + return; + } + i.dispose(); +} +function ro(i) { + i.traverse((e) => { + const t = e; + t.geometry && t.geometry.dispose(), t.material && Mp(t.material); + }); +} +function yp({ + config: i, + onComplete: e, + onProgress: t, + theme: n, + className: r +}) { + const s = i.params ?? {}, o = jr(s.gridSize, 24, 12, 80, 1), a = jr(s.majorRadius, 8, 4, 10, 0.5), l = jr(s.minorRadius, 3, 1, 5, 0.25), [c, h] = Ms(o), [d, p] = Ms({ + layout: "landscape", + width: 0, + height: 0 + }), m = dr(null), g = dr(null), v = dr(!1); + ai(() => { + const R = m.current; + if (!R) return; + const D = () => { + const A = R.clientWidth, W = R.clientHeight; + if (!A || !W) return; + const x = A >= W ? "landscape" : "portrait"; + let y = A, z = W; + x === "landscape" ? (z = Math.min(W, A * (9 / 16)), y = z * (16 / 9)) : (y = Math.min(A, W / 2), z = y * 2), p({ + layout: x, + width: y, + height: z + }); + }, C = new ResizeObserver(D); + return C.observe(R), D(), () => { + C.disconnect(); + }; + }, []), ai(() => { + h(o), v.current = !1; + }, [i.id, o, a, l]); + const f = fr( + () => Math.max(gp, (a + l + 1.5) * 2), + [a, l] + ), u = fr(() => f / c, [f, c]); + ai(() => { + t == null || t(c === o ? 0 : 100); + }, [o, t, c]), ai(() => { + c === o || v.current || (v.current = !0, e({ + success: !0, + score: 100, + data: { + configId: i.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString(), + params: { + gridSize: c, + majorRadius: a, + minorRadius: l + } + } + })); + }, [i.id, o, a, l, e, c]), ai(() => { + const R = g.current; + if (!R) return; + const D = new Ha(), C = new Ha(), A = new Xe(Yr); + D.background = A, D.fog = new ir(Yr, 0.02), C.background = A, C.fog = new ir(Yr, 0.02), io(D), io(C); + const W = new Tt(45, 1, 0.1, 1e3); + W.position.copy(to); + const x = new Go({ antialias: !0, alpha: !0 }); + x.shadowMap.enabled = !0, x.shadowMap.type = ao, x.setPixelRatio(Math.min(window.devicePixelRatio, 2)), x.setScissorTest(!0), R.appendChild(x.domElement); + const y = new ap(W, x.domElement); + y.enableDamping = !0, y.dampingFactor = 0.05, y.minDistance = 5, y.maxDistance = 100, y.target.copy(no); + const z = new ds(a, l, 64, 128), Z = new qa({ + color: 3900150, + roughness: 0.22, + metalness: 0.1 + }), re = new Ot(z, Z); + re.castShadow = !0, re.receiveShadow = !0, re.rotation.x = -Math.PI / 2, D.add(re); + const L = u * 0.12, F = Math.max(u - L, u * 0.2), V = new ii(F, F, F), Y = new qa({ + color: 3900150, + roughness: 0.22, + metalness: 0.1 + }), X = new ls({ + color: 0, + transparent: !0, + opacity: 0.08, + wireframe: !0 + }), k = Math.pow(c, 3), q = new Xa(V, Y, k), Q = new Xa(V, X, k), ce = (c - 1) * u / 2, H = new dt(); + q.castShadow = !0, q.receiveShadow = !0, C.add(q), C.add(Q); + let j = 0, oe = 0; + for (let be = 0; be < c; be += 1) + for (let M = 0; M < c; M += 1) + for (let _ = 0; _ < c; _ += 1) { + const I = be * u - ce, $ = M * u - ce, K = _ * u - ce, J = Math.sqrt(I * I + K * K) - a, ae = J * J + $ * $ < l * l; + if (H.position.set(I, $, K), H.updateMatrix(), ae) { + q.setMatrixAt(j, H.matrix); + const he = new Xe(), ye = 0.52 + $ / Math.max(c, 1) * 0.18; + he.setHSL(ye, 0.78, 0.52), q.setColorAt(j, he), j += 1; + continue; + } + Q.setMatrixAt(oe, H.matrix), oe += 1; + } + q.count = j, Q.count = oe, q.instanceMatrix.needsUpdate = !0, Q.instanceMatrix.needsUpdate = !0, q.instanceColor && (q.instanceColor.needsUpdate = !0); + const ve = to.clone(), _e = no.clone(); + let we = !1, Ae = null, ge = 0, Pe = 0; + const N = () => { + ge = R.clientWidth, Pe = R.clientHeight, !(!ge || !Pe) && (W.aspect = 1, W.updateProjectionMatrix(), x.setSize(ge, Pe, !1)); + }, rt = new ResizeObserver(N); + rt.observe(R), N(); + const Me = () => { + we = !1, Ae !== null && (window.clearTimeout(Ae), Ae = null); + }, Re = () => { + Ae = window.setTimeout(() => { + we = !0; + }, vp); + }; + y.addEventListener("start", Me), y.addEventListener("end", Re); + let pe = 0; + const je = () => { + if (pe = window.requestAnimationFrame(je), we && (W.position.lerp(ve, 0.05), y.target.lerp(_e, 0.05), W.position.distanceTo(ve) < 0.1 && y.target.distanceTo(_e) < 0.1 && (we = !1)), re.rotation.z += 2e-3, q.rotation.y += 2e-3, Q.rotation.y += 2e-3, Q.visible = !1, y.update(), !ge || !Pe) return; + const be = ge >= Pe, M = be ? Math.min(ge / 2, Pe) : Math.min(ge, Pe / 2), _ = be ? (ge - M * 2) / 2 : (ge - M) / 2, I = be ? (Pe - M) / 2 : (Pe - M * 2) / 2, $ = _, K = be ? I : I + M, J = be ? _ + M : _, me = I; + x.setScissor($, K, M, M), x.setViewport($, K, M, M), x.render(D, W), x.setScissor(J, me, M, M), x.setViewport(J, me, M, M), x.render(C, W); + }; + return je(), () => { + window.cancelAnimationFrame(pe), Ae !== null && window.clearTimeout(Ae), rt.disconnect(), y.removeEventListener("start", Me), y.removeEventListener("end", Re), y.dispose(), x.dispose(), ro(D), ro(C), R.removeChild(x.domElement); + }; + }, [a, l, c, u]); + const b = fr( + () => ({ + "--gc-primary": (n == null ? void 0 : n.primary) ?? "var(--color-primary, #45c4b0)", + "--gc-accent": (n == null ? void 0 : n.accent) ?? "var(--color-accent, #ff7a59)", + "--gc-bg": (n == null ? void 0 : n.bg) ?? "var(--color-bg, #0d1117)", + "--gc-bg-secondary": (n == null ? void 0 : n.bgSecondary) ?? "var(--color-bg-secondary, #182237)", + "--gc-text": (n == null ? void 0 : n.text) ?? "var(--color-text, #f1f4ef)", + "--gc-text-muted": (n == null ? void 0 : n.textMuted) ?? "var(--color-text-muted, #b6c0d4)", + "--gc-border": (n == null ? void 0 : n.border) ?? "var(--color-border, #34516f)" + }), + [n] + ), S = (R) => { + h(Number(R.target.value)); + }; + return /* @__PURE__ */ pn("div", { className: [Ut.wrapper, r].filter(Boolean).join(" "), style: b, ref: m, children: /* @__PURE__ */ yi( + "div", + { + className: Ut.canvasShell, + "data-layout": d.layout, + style: { + width: d.width ? `${d.width}px` : void 0, + height: d.height ? `${d.height}px` : void 0 + }, + children: [ + /* @__PURE__ */ pn("div", { className: Ut.canvas, ref: g }), + /* @__PURE__ */ yi("div", { className: Ut.viewportLabels, "data-layout": d.layout, children: [ + /* @__PURE__ */ pn("div", { className: Ut.splitLabel, children: "Continuous" }), + /* @__PURE__ */ pn("div", { className: Ut.splitLabel, children: "Discrete" }) + ] }), + /* @__PURE__ */ pn("div", { className: Ut.controlOverlay, children: /* @__PURE__ */ pn("label", { className: Ut.resolutionCard, children: /* @__PURE__ */ yi("span", { className: Ut.resolutionControl, children: [ + /* @__PURE__ */ pn( + "input", + { + className: Ut.slider, + type: "range", + min: "12", + max: "80", + step: "1", + value: c, + onChange: S + } + ), + /* @__PURE__ */ yi("span", { className: Ut.sliderValue, children: [ + u.toFixed(2), + "u" + ] }) + ] }) }) }) + ] + } + ) }); +} +const Tp = { + name: "voxel_universe", + displayName: "Voxel Universe", + version: "1.0.0", + paramSchema: { + gridSize: { + type: "range", + label: "Voxel Resolution", + description: "How many voxels are used per axis. Higher values make each voxel smaller.", + default: 24, + min: 12, + max: 80, + step: 1 + }, + majorRadius: { + type: "range", + label: "Major Radius", + description: "Overall radius of the torus shape.", + default: 8, + min: 4, + max: 10, + step: 0.5 + }, + minorRadius: { + type: "range", + label: "Minor Radius", + description: "Thickness of the torus ring.", + default: 3, + min: 1, + max: 5, + step: 0.25 + } + }, + defaultParams: { + gridSize: 24, + majorRadius: 8, + minorRadius: 3 + } +}; +export { + yp as default, + Tp as metadata +}; +//# sourceMappingURL=voxel_universe.js.map diff --git a/dist/glitch/glitch_voxel_universe/voxel_universe.js.map b/dist/glitch/glitch_voxel_universe/voxel_universe.js.map new file mode 100644 index 0000000..ad72beb --- /dev/null +++ b/dist/glitch/glitch_voxel_universe/voxel_universe.js.map @@ -0,0 +1 @@ +{"version":3,"file":"voxel_universe.js","sources":["../node_modules/three/build/three.module.js","../node_modules/three/examples/jsm/controls/OrbitControls.js","../src/Component.tsx","../src/index.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2010-2023 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '160';\n\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst TwoPassDoubleSide = 2; // r149\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst ConstantColorFactor = 211;\nconst OneMinusConstantColorFactor = 212;\nconst ConstantAlphaFactor = 213;\nconst OneMinusConstantAlphaFactor = 214;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst AgXToneMapping = 6;\nconst AttachedBindMode = 'attached';\nconst DetachedBindMode = 'detached';\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst RGB_BPTC_SIGNED_Format = 36494;\nconst RGB_BPTC_UNSIGNED_Format = 36495;\nconst RED_RGTC1_Format = 36283;\nconst SIGNED_RED_RGTC1_Format = 36284;\nconst RED_GREEN_RGTC2_Format = 36285;\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\n/** @deprecated Use LinearSRGBColorSpace or NoColorSpace in three.js r152+. */\nconst LinearEncoding = 3000;\n/** @deprecated Use SRGBColorSpace in three.js r152+. */\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\nconst DisplayP3ColorSpace = 'display-p3';\nconst LinearDisplayP3ColorSpace = 'display-p3-linear';\n\nconst LinearTransfer = 'linear';\nconst SRGBTransfer = 'srgb';\n\nconst Rec709Primaries = 'rec709';\nconst P3Primaries = 'p3';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst NeverCompare = 512;\nconst LessCompare = 513;\nconst EqualCompare = 514;\nconst LessEqualCompare = 515;\nconst GreaterCompare = 516;\nconst NotEqualCompare = 517;\nconst GreaterEqualCompare = 518;\nconst AlwaysCompare = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\nconst WebGLCoordinateSystem = 2000;\nconst WebGPUCoordinateSystem = 2001;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\n/**\n * Matrices converting P3 <-> Rec. 709 primaries, without gamut mapping\n * or clipping. Based on W3C specifications for sRGB and Display P3,\n * and ICC specifications for the D50 connection space. Values in/out\n * are _linear_ sRGB and _linear_ Display P3.\n *\n * Note that both sRGB and Display P3 use the sRGB transfer functions.\n *\n * Reference:\n * - http://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n\nconst LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().set(\n\t0.8224621, 0.177538, 0.0,\n\t0.0331941, 0.9668058, 0.0,\n\t0.0170827, 0.0723974, 0.9105199,\n);\n\nconst LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().set(\n\t1.2249401, - 0.2249404, 0.0,\n\t- 0.0420569, 1.0420571, 0.0,\n\t- 0.0196376, - 0.0786361, 1.0982735\n);\n\n/**\n * Defines supported color spaces by transfer function and primaries,\n * and provides conversions to/from the Linear-sRGB reference space.\n */\nconst COLOR_SPACES = {\n\t[ LinearSRGBColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color,\n\t\tfromReference: ( color ) => color,\n\t},\n\t[ SRGBColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear(),\n\t\tfromReference: ( color ) => color.convertLinearToSRGB(),\n\t},\n\t[ LinearDisplayP3ColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ),\n\t},\n\t[ DisplayP3ColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB(),\n\t},\n};\n\nconst SUPPORTED_WORKING_COLOR_SPACES = new Set( [ LinearSRGBColorSpace, LinearDisplayP3ColorSpace ] );\n\nconst ColorManagement = {\n\n\tenabled: true,\n\n\t_workingColorSpace: LinearSRGBColorSpace,\n\n\tget workingColorSpace() {\n\n\t\treturn this._workingColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tif ( ! SUPPORTED_WORKING_COLOR_SPACES.has( colorSpace ) ) {\n\n\t\t\tthrow new Error( `Unsupported working color space, \"${ colorSpace }\".` );\n\n\t\t}\n\n\t\tthis._workingColorSpace = colorSpace;\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tconst sourceToReference = COLOR_SPACES[ sourceColorSpace ].toReference;\n\t\tconst targetFromReference = COLOR_SPACES[ targetColorSpace ].fromReference;\n\n\t\treturn targetFromReference( sourceToReference( color ) );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this._workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this._workingColorSpace );\n\n\t},\n\n\tgetPrimaries: function ( colorSpace ) {\n\n\t\treturn COLOR_SPACES[ colorSpace ].primaries;\n\n\t},\n\n\tgetTransfer: function ( colorSpace ) {\n\n\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\treturn COLOR_SPACES[ colorSpace ].transfer;\n\n\t},\n\n};\n\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet _sourceId = 0;\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet _textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\t\tthis.channel = 0;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\tif ( typeof colorSpace === 'string' ) {\n\n\t\t\tthis.colorSpace = colorSpace;\n\n\t\t} else { // @deprecated, r152\n\n\t\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\t\tthis.colorSpace = colorSpace === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.colorSpace = source.colorSpace;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tget encoding() { // @deprecated, r152\n\n\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\treturn this.colorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;\n\n\t}\n\n\tset encoding( encoding ) { // @deprecated, r152\n\n\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\tthis.colorSpace = encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass RenderTarget extends EventDispatcher {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tif ( options.encoding !== undefined ) {\n\n\t\t\t// @deprecated, r152\n\t\t\twarnOnce( 'THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace.' );\n\t\t\toptions.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\t\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0\n\t\t}, options );\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps;\n\t\tthis.texture.internalFormat = options.internalFormat;\n\n\t\tthis.depthBuffer = options.depthBuffer;\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\tthis.samples = options.samples;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass WebGLRenderTarget extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, count = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$4 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.isSphere = true;\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$3.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.DEFAULT_ORDER = 'XYZ';\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tif ( child.matrixWorldAutoUpdate === true || force === true ) {\n\n\t\t\t\tchild.updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tif ( child.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.visibility = this._visibility;\n\t\t\tobject.active = this._active;\n\t\t\tobject.bounds = this._bounds.map( bound => ( {\n\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\tboxMin: bound.box.min.toArray(),\n\t\t\t\tboxMax: bound.box.max.toArray(),\n\n\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\tsphereRadius: bound.sphere.radius,\n\t\t\t\tsphereCenter: bound.sphere.center.toArray()\n\t\t\t} ) );\n\n\t\t\tobject.maxGeometryCount = this._maxGeometryCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = {\n\t\t\t\t\tcenter: object.boundingSphere.center.toArray(),\n\t\t\t\t\tradius: object.boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = {\n\t\t\t\t\tmin: object.boundingBox.min.toArray(),\n\t\t\t\t\tmax: object.boundingBox.max.toArray()\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nlet warnedGetUV = false;\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$1 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) { // @deprecated, r151\n\n\t\tif ( warnedGetUV === false ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation().' );\n\n\t\t\twarnedGetUV = true;\n\n\t\t}\n\n\t\treturn this.getInterpolation( point, p1, p2, p3, uv1, uv2, uv3, target );\n\n\t}\n\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$1 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$1.x );\n\t\ttarget.addScaledVector( v2, _v3$1.y );\n\t\ttarget.addScaledVector( v3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) { // @deprecated, r151\n\n\t\tif ( warnedGetUV === false ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation().' );\n\n\t\t\twarnedGetUV = true;\n\n\t\t}\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\t\tthis.alphaHash = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\t\tthis.blendAlpha = 0;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\t\tthis.forceSinglePass = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nconst DataUtils = {\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat,\n};\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\t\tthis.gpuType = FloatType;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$2 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _normalA = /*@__PURE__*/ new Vector3();\nconst _normalB = /*@__PURE__*/ new Vector3();\nconst _normalC = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv1, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv1, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv1, c );\n\n\t\t\tintersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\t\t\tintersection.uv2 = intersection.uv1; // @deprecated, r152\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\t_normalA.fromBufferAttribute( normal, a );\n\t\t\t_normalB.fromBufferAttribute( normal, b );\n\t\t\t_normalC.fromBufferAttribute( normal, c );\n\n\t\t\tintersection.normal = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _normalA, _normalB, _normalC, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( - 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tif ( renderer.getRenderTarget() === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.forceSinglePass = true;\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false, // set to use shader texture LOD\n\t\t\tclipCullDistance: false // set to use vertex shader clipping\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = - 90; // negative fov is not an error\nconst aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tthis.renderTarget = renderTarget;\n\t\tthis.coordinateSystem = null;\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, - 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\t\tcameraPX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tif ( options.encoding !== undefined ) {\n\n\t\t\t// @deprecated, r152\n\t\t\twarnOnce( 'THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace.' );\n\t\t\toptions.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$5.center.set( 0, 0, 0 );\n\t\t_sphere$5.radius = 0.7071067811865476;\n\t\t_sphere$5.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\t\tconst size = array.byteLength;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = gl.HALF_FLOAT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version,\n\t\t\tsize: size\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute._updateRange; // deprecated\n\t\tconst updateRanges = attribute.updateRanges;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 && updateRanges.length === 0 ) {\n\n\t\t\t// Not using update ranges\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t}\n\n\t\tif ( updateRanges.length !== 0 ) {\n\n\t\t\tfor ( let i = 0, l = updateRanges.length; i < l; i ++ ) {\n\n\t\t\t\tconst range = updateRanges[ i ];\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\tarray, range.start, range.count );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\tarray.subarray( range.start, range.start + range.count ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tattribute.clearUpdateRanges();\n\n\t\t}\n\n\t\t// deprecated\n\t\tif ( updateRange.count !== - 1 ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t\tattribute.onUploadCallback();\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tif ( data.size !== attribute.array.byteLength ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: The size of the buffer attribute\\'s array buffer does not match the original size. Resizing buffer attributes is not supported.' );\n\n\t\t\t}\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\n\nvar alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\\tconst float ALPHA_HASH_SCALE = 0.05;\\n\\tfloat hash2D( vec2 value ) {\\n\\t\\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\\t}\\n\\tfloat hash3D( vec3 value ) {\\n\\t\\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\\t}\\n\\tfloat getAlphaHashThreshold( vec3 position ) {\\n\\t\\tfloat maxDeriv = max(\\n\\t\\t\\tlength( dFdx( position.xyz ) ),\\n\\t\\t\\tlength( dFdy( position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\\t\\tvec2 pixScales = vec2(\\n\\t\\t\\texp2( floor( log2( pixScale ) ) ),\\n\\t\\t\\texp2( ceil( log2( pixScale ) ) )\\n\\t\\t);\\n\\t\\tvec2 alpha = vec2(\\n\\t\\t\\thash3D( floor( pixScales.x * position.xyz ) ),\\n\\t\\t\\thash3D( floor( pixScales.y * position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat lerpFactor = fract( log2( pixScale ) );\\n\\t\\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\\t\\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\\t\\tvec3 cases = vec3(\\n\\t\\t\\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\\t\\t\\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\\t\\t\\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\\t\\t);\\n\\t\\tfloat threshold = ( x < ( 1.0 - a ) )\\n\\t\\t\\t? ( ( x < a ) ? cases.x : cases.y )\\n\\t\\t\\t: cases.z;\\n\\t\\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\\t}\\n#endif\";\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_CLEARCOAT ) \\n\\t\\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_SHEEN ) \\n\\t\\tsheenSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar batching_pars_vertex = \"#ifdef USE_BATCHING\\n\\tattribute float batchId;\\n\\tuniform highp sampler2D batchingTexture;\\n\\tmat4 getBatchingMatrix( const in float i ) {\\n\\t\\tint size = textureSize( batchingTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\\tmat4 batchingMatrix = getBatchingMatrix( batchId );\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\\tvPosition = vec3( position );\\n#endif\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"float G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n} // validated\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vBumpMapUv );\\n\\t\\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\\n\\t\\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\n#ifdef USE_ALPHAHASH\\n\\tvarying vec3 vPosition;\\n#endif\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n} // validated\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\\tmat3 bm = mat3( batchingMatrix );\\n\\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\\ttransformedNormal = bm * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = bm * transformedTangent;\\n\\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmat3 im = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\\ttransformedNormal = im * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = im * transformedTangent;\\n\\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar colorspace_pars_fragment = \"\\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\\n\\tvec3( 0.8224621, 0.177538, 0.0 ),\\n\\tvec3( 0.0331941, 0.9668058, 0.0 ),\\n\\tvec3( 0.0170827, 0.0723974, 0.9105199 )\\n);\\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.2249401, - 0.2249404, 0.0 ),\\n\\tvec3( - 0.0420569, 1.0420571, 0.0 ),\\n\\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\\n);\\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\\n}\\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\\n}\\nvec4 LinearTransferOETF( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 sRGBTransferOETF( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn sRGBTransferOETF( value );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\\tuniform vec3 lightProbe[ 9 ];\\n#endif\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( LEGACY_LIGHTS )\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#else\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\\t\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t\\tvec3 bentNormal = cross( bitangent, viewDir );\\n\\t\\t\\t\\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\\t\\t\\t\\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\\t\\t\\t\\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef USE_SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\\t\\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\\t\\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\\t#else\\n\\t\\tvec2 anisotropyV = anisotropyVector;\\n\\t#endif\\n\\tmaterial.anisotropy = length( anisotropyV );\\n\\tif( material.anisotropy == 0.0 ) {\\n\\t\\tanisotropyV = vec2( 1.0, 0.0 );\\n\\t} else {\\n\\t\\tanisotropyV /= material.anisotropy;\\n\\t\\tmaterial.anisotropy = saturate( material.anisotropy );\\n\\t}\\n\\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat anisotropy;\\n\\t\\tfloat alphaT;\\n\\t\\tvec3 anisotropyT;\\n\\t\\tvec3 anisotropyB;\\n\\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\n#ifdef USE_ANISOTROPY\\n\\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\\t\\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\\t\\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\\t\\tfloat v = 0.5 / ( gv + gl );\\n\\t\\treturn saturate(v);\\n\\t}\\n\\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\\t\\tfloat a2 = alphaT * alphaB;\\n\\t\\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\\t\\thighp float v2 = dot( v, v );\\n\\t\\tfloat w2 = a2 / v2;\\n\\t\\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\\t\\tvec3 f0 = material.clearcoatF0;\\n\\t\\tfloat f90 = material.clearcoatF90;\\n\\t\\tfloat roughness = material.clearcoatRoughness;\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\\tvec3 f0 = material.specularColor;\\n\\tfloat f90 = material.specularF90;\\n\\tfloat roughness = material.roughness;\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\\t\\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\\t\\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\\t\\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\\t\\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\\t\\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\\t\\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\\t\\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\\t#else\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t#endif\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometryNormal;\\n\\t\\tvec3 viewDir = geometryViewDir;\\n\\t\\tvec3 position = geometryPosition;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometryPosition, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\t#if defined( USE_LIGHT_PROBES )\\n\\t\\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\\t#endif\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometryNormal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\\t#else\\n\\t\\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t#if defined( USE_POINTS_UV )\\n\\t\\tvec2 uv = vUv;\\n\\t#else\\n\\t\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\\tvarying vec2 vUv;\\n#else\\n\\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t\\tuniform mat3 uvTransform;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal *= faceDirection;\\n\\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\\t\\t#if defined( USE_NORMALMAP )\\n\\t\\t\\tvNormalMapUv\\n\\t\\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tvClearcoatNormalMapUv\\n\\t\\t#else\\n\\t\\t\\tvUv\\n\\t\\t#endif\\n\\t\\t);\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn[0] *= faceDirection;\\n\\t\\ttbn[1] *= faceDirection;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn2[0] *= faceDirection;\\n\\t\\ttbn2[1] *= faceDirection;\\n\\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( uv.st );\\n\\t\\tvec2 st1 = dFdy( uv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\\n\\t\\treturn mat3( T * scale, B * scale, N );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec2 packDepthToRG( in highp float v ) {\\n\\treturn packDepthToRGBA( v ).yx;\\n}\\nfloat unpackRGToDepth( const in highp vec2 v ) {\\n\\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn depth * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * depth - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_BATCHING\\n\\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\\n\\t\\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\tvec4 shadowWorldPosition;\\n#endif\\n#if defined( USE_SHADOWMAP )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tint size = textureSize( boneTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn saturate( toneMappingExposure * color );\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\\tvec3 x2 = x * x;\\n\\tvec3 x4 = x2 * x2;\\n\\treturn + 15.5 * x4 * x2\\n\\t\\t- 40.14 * x4 * x\\n\\t\\t+ 31.96 * x4\\n\\t\\t- 6.868 * x2 * x\\n\\t\\t+ 0.4298 * x2\\n\\t\\t+ 0.1191 * x\\n\\t\\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\\tconst mat3 AgXInsetMatrix = mat3(\\n\\t\\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\\t\\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\\t\\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\\t);\\n\\tconst mat3 AgXOutsetMatrix = mat3(\\n\\t\\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\\t\\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\\t\\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\\t);\\n\\tconst float AgxMinEv = - 12.47393;\\tconst float AgxMaxEv = 4.026069;\\n\\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = AgXInsetMatrix * color;\\n\\tcolor = max( color, 1e-10 );\\tcolor = log2( color );\\n\\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\tcolor = agxDefaultContrastApprox( color );\\n\\tcolor = AgXOutsetMatrix * color;\\n\\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\\treturn color;\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmitted = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tfloat w0( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w1( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\\t}\\n\\tfloat w2( float a ){\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w3( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\\t}\\n\\tfloat g0( float a ) {\\n\\t\\treturn w0( a ) + w1( a );\\n\\t}\\n\\tfloat g1( float a ) {\\n\\t\\treturn w2( a ) + w3( a );\\n\\t}\\n\\tfloat h0( float a ) {\\n\\t\\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\\t}\\n\\tfloat h1( float a ) {\\n\\t\\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\\t}\\n\\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\\t\\tuv = uv * texelSize.zw + 0.5;\\n\\t\\tvec2 iuv = floor( uv );\\n\\t\\tvec2 fuv = fract( uv );\\n\\t\\tfloat g0x = g0( fuv.x );\\n\\t\\tfloat g1x = g1( fuv.x );\\n\\t\\tfloat h0x = h0( fuv.x );\\n\\t\\tfloat h1x = h1( fuv.x );\\n\\t\\tfloat h0y = h0( fuv.y );\\n\\t\\tfloat h1y = h1( fuv.y );\\n\\t\\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\\t\\t\\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\\t}\\n\\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\\t\\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\\t\\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\\t\\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\\t\\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\\t\\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\\t\\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\\t\\treturn mix( fSample, cSample, fract( lod ) );\\n\\t}\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\\t}\\n\\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform mat3 mapTransform;\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform mat3 alphaMapTransform;\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tuniform mat3 lightMapTransform;\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tuniform mat3 aoMapTransform;\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tuniform mat3 bumpMapTransform;\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tuniform mat3 normalMapTransform;\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tuniform mat3 displacementMapTransform;\\n\\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tuniform mat3 emissiveMapTransform;\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tuniform mat3 metalnessMapTransform;\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tuniform mat3 roughnessMapTransform;\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tuniform mat3 anisotropyMapTransform;\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tuniform mat3 clearcoatMapTransform;\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform mat3 clearcoatNormalMapTransform;\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform mat3 clearcoatRoughnessMapTransform;\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tuniform mat3 sheenColorMapTransform;\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tuniform mat3 sheenRoughnessMapTransform;\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tuniform mat3 iridescenceMapTransform;\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform mat3 iridescenceThicknessMapTransform;\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tuniform mat3 specularMapTransform;\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tuniform mat3 specularColorMapTransform;\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tuniform mat3 specularIntensityMapTransform;\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_BATCHING\\n\\t\\tworldPosition = batchingMatrix * worldPosition;\\n\\t#endif\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$h = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$h = \"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$g = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\\n\\t#else\\n\\t\\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = texColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define USE_SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef USE_SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\tuniform vec2 anisotropyVector;\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tuniform sampler2D anisotropyMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#ifdef USE_POINTS_UV\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\\t#ifdef USE_POINTS_UV\\n\\t\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphahash_fragment: alphahash_fragment,\n\talphahash_pars_fragment: alphahash_pars_fragment,\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbatching_pars_vertex: batching_pars_vertex,\n\tbatching_vertex: batching_vertex,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tcolorspace_fragment: colorspace_fragment,\n\tcolorspace_pars_fragment: colorspace_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\topaque_fragment: opaque_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$h,\n\tbackground_frag: fragment$h,\n\tbackgroundCube_vert: vertex$g,\n\tbackgroundCube_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\t\tspecularMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 }, // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 },\n\t\taoMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 },\n\t\tlightMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null },\n\t\temissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null },\n\t\tmetalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null },\n\t\troughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tbackgroundCube: {\n\n\t\tuniforms: {\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: - 1 },\n\t\t\tbackgroundBlurriness: { value: 0 },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.backgroundCube_vert,\n\t\tfragmentShader: ShaderChunk.backgroundCube_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tclearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tiridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\tsheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tthicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t\tspecularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tanisotropyVector: { value: /*@__PURE__*/ new Vector2() },\n\t\t\tanisotropyMap: { value: null },\n\t\t\tanisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nconst _rgb = { r: 0, b: 0, g: 0 };\n\nfunction WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tconst usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background\n\t\t\tbackground = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tconst environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n\n\t\tif ( environmentBlendMode === 'additive' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );\n\n\t\t} else if ( environmentBlendMode === 'alpha-blend' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.backgroundCube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.backgroundCube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\t\t\tboxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n\t\t\tboxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tboxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// add \"map\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\t\t\tplaneMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tplaneMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tcolor.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );\n\n\t\tstate.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {\n\n\t\tif ( integer === true ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t// check for integer attributes (WebGL 2 only)\n\n\t\t\t\t\tconst integer = ( capabilities.isWebGL2 === true && ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType ) );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ], counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawArraysWEBGL( mode, starts, 0, counts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tconst isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tconst maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tconst maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tconst maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tconst maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tconst maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tconst maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tconst maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( gl.MAX_SAMPLES ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\n\t};\n\n\tthis.setGlobalState = function ( planes, camera ) {\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\nlet _oldActiveCubeFace = 0;\nlet _oldActiveMipmapLevel = 0;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tcolorSpace: LinearSRGBColorSpace,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\t\t\t\tgetExtension( 'WEBGL_clip_cull_distance' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tconst array = geometry.morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.remove( array[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else if ( geometryPosition !== undefined ) {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ] / bytesPerElement, counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawElementsWEBGL( mode, counts, 0, type, starts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tif ( updateMap.get( object ) !== frame ) {\n\n\t\t\t\tattributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );\n\n\t\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\t\tattributes.update( object.instanceColor, gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t\tupdateMap.set( object, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( updateMap.get( skeleton ) !== frame ) {\n\n\t\t\t\tskeleton.update();\n\n\t\t\t\tupdateMap.set( skeleton, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\n\nconst emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );\nemptyShadowTexture.compareFunction = LessEqualCompare;\n\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array or THREE.VectorN)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2i( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3i( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4i( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array or THREE.VectorN)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2ui( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3ui( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4ui( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\tconst emptyTexture2D = ( this.type === gl.SAMPLER_2D_SHADOW ) ? emptyShadowTexture : emptyTexture;\n\n\ttextures.setTexture2D( v || emptyTexture2D, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/\nconst COMPLETION_STATUS_KHR = 0x91B1;\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( colorSpace ) {\n\n\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\tconst encodingPrimaries = ColorManagement.getPrimaries( colorSpace );\n\n\tlet gamutMapping;\n\n\tif ( workingPrimaries === encodingPrimaries ) {\n\n\t\tgamutMapping = '';\n\n\t} else if ( workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries ) {\n\n\t\tgamutMapping = 'LinearDisplayP3ToLinearSRGB';\n\n\t} else if ( workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries ) {\n\n\t\tgamutMapping = 'LinearSRGBToLinearDisplayP3';\n\n\t}\n\n\tswitch ( colorSpace ) {\n\n\t\tcase LinearSRGBColorSpace:\n\t\tcase LinearDisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t\tcase SRGBColorSpace:\n\t\tcase DisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'sRGBTransferOETF' ];\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported color space:', colorSpace );\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, colorSpace ) {\n\n\tconst components = getEncodingComponents( colorSpace );\n\treturn `vec4 ${functionName}( vec4 value ) { return ${components[ 0 ]}( ${components[ 1 ]}( value ) ); }`;\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase AgXToneMapping:\n\t\t\ttoneMappingName = 'AgX';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.normalMapTangentSpace || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateVertexExtensions( parameters ) {\n\n\tconst chunks = [\n\t\tparameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === gl.FLOAT_MAT2 ) locationSize = 2;\n\t\tif ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;\n\t\tif ( info.type === gl.FLOAT_MAT4 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nconst shaderChunkMap = new Map( [\n\t[ 'encodings_fragment', 'colorspace_fragment' ], // @deprecated, r154\n\t[ 'encodings_pars_fragment', 'colorspace_pars_fragment' ], // @deprecated, r154\n\t[ 'output_fragment', 'opaque_fragment' ], // @deprecated, r154\n] );\n\nfunction includeReplacer( match, include ) {\n\n\tlet string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tconst newInclude = shaderChunkMap.get( include );\n\n\t\tif ( newInclude !== undefined ) {\n\n\t\t\tstring = ShaderChunk[ newInclude ];\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( unrollLoopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customVertexExtensions = generateVertexExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',\n\t\t\tparameters.batching ? '#define USE_BATCHING' : '',\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\t//\n\n\t\t\tparameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '',\n\t\t\tparameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '',\n\t\t\tparameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '',\n\t\t\tparameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '',\n\t\t\tparameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '',\n\t\t\tparameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '',\n\t\t\tparameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '',\n\t\t\tparameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '',\n\n\t\t\tparameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',\n\t\t\tparameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',\n\n\t\t\tparameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',\n\n\t\t\tparameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',\n\t\t\tparameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',\n\t\t\tparameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',\n\n\t\t\tparameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',\n\t\t\tparameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',\n\n\t\t\tparameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '',\n\t\t\tparameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '',\n\n\t\t\tparameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '',\n\t\t\tparameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '',\n\t\t\tparameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '',\n\n\t\t\tparameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '',\n\t\t\tparameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '',\n\n\t\t\t//\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_UV1',\n\n\t\t\t'\tattribute vec2 uv1;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV2',\n\n\t\t\t'\tattribute vec2 uv2;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV3',\n\n\t\t\t'\tattribute vec2 uv3;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\tcustomVertexExtensions,\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tfunction onFirstUse( self ) {\n\n\t\t// check for link errors\n\t\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\t\tlet runnable = true;\n\t\t\tlet haveDiagnostics = true;\n\n\t\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\t\trunnable = false;\n\n\t\t\t\tif ( typeof renderer.debug.onShaderError === 'function' ) {\n\n\t\t\t\t\trenderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// default error reporting\n\n\t\t\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\\n\\n' +\n\t\t\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\t\t\tfragmentErrors\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t} else if ( programLog !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\t\thaveDiagnostics = false;\n\n\t\t\t}\n\n\t\t\tif ( haveDiagnostics ) {\n\n\t\t\t\tself.diagnostics = {\n\n\t\t\t\t\trunnable: runnable,\n\n\t\t\t\t\tprogramLog: programLog,\n\n\t\t\t\t\tvertexShader: {\n\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t\t},\n\n\t\t\t\t\tfragmentShader: {\n\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Clean up\n\n\t\t// Crashes in iOS9 and iOS10. #18402\n\t\t// gl.detachShader( program, glVertexShader );\n\t\t// gl.detachShader( program, glFragmentShader );\n\n\t\tgl.deleteShader( glVertexShader );\n\t\tgl.deleteShader( glFragmentShader );\n\n\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t}\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\t// Populates cachedUniforms and cachedAttributes\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\t// Populates cachedAttributes and cachedUniforms\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// indicate when the program is ready to be used. if the KHR_parallel_shader_compile extension isn't supported,\n\t// flag the program as ready immediately. It may cause a stall when it's first used.\n\n\tlet programReady = ( parameters.rendererExtensionParallelShaderCompile === false );\n\n\tthis.isReady = function () {\n\n\t\tif ( programReady === false ) {\n\n\t\t\tprogramReady = gl.getProgramParameter( program, COMPLETION_STATUS_KHR );\n\n\t\t}\n\n\t\treturn programReady;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.type = parameters.shaderType;\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id$1 = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id$1 ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst programs = [];\n\n\tconst IS_WEBGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getChannel( value ) {\n\n\t\tif ( value === 0 ) return 'uv';\n\n\t\treturn `uv${ value }`;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst IS_INSTANCEDMESH = object.isInstancedMesh === true;\n\t\tconst IS_BATCHEDMESH = object.isBatchedMesh === true;\n\n\t\tconst HAS_MAP = !! material.map;\n\t\tconst HAS_MATCAP = !! material.matcap;\n\t\tconst HAS_ENVMAP = !! envMap;\n\t\tconst HAS_AOMAP = !! material.aoMap;\n\t\tconst HAS_LIGHTMAP = !! material.lightMap;\n\t\tconst HAS_BUMPMAP = !! material.bumpMap;\n\t\tconst HAS_NORMALMAP = !! material.normalMap;\n\t\tconst HAS_DISPLACEMENTMAP = !! material.displacementMap;\n\t\tconst HAS_EMISSIVEMAP = !! material.emissiveMap;\n\n\t\tconst HAS_METALNESSMAP = !! material.metalnessMap;\n\t\tconst HAS_ROUGHNESSMAP = !! material.roughnessMap;\n\n\t\tconst HAS_ANISOTROPY = material.anisotropy > 0;\n\t\tconst HAS_CLEARCOAT = material.clearcoat > 0;\n\t\tconst HAS_IRIDESCENCE = material.iridescence > 0;\n\t\tconst HAS_SHEEN = material.sheen > 0;\n\t\tconst HAS_TRANSMISSION = material.transmission > 0;\n\n\t\tconst HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;\n\n\t\tconst HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;\n\t\tconst HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;\n\t\tconst HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;\n\n\t\tconst HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;\n\t\tconst HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;\n\n\t\tconst HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap;\n\t\tconst HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap;\n\n\t\tconst HAS_SPECULARMAP = !! material.specularMap;\n\t\tconst HAS_SPECULAR_COLORMAP = !! material.specularColorMap;\n\t\tconst HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap;\n\n\t\tconst HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap;\n\t\tconst HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap;\n\n\t\tconst HAS_GRADIENTMAP = !! material.gradientMap;\n\n\t\tconst HAS_ALPHAMAP = !! material.alphaMap;\n\n\t\tconst HAS_ALPHATEST = material.alphaTest > 0;\n\n\t\tconst HAS_ALPHAHASH = !! material.alphaHash;\n\n\t\tconst HAS_EXTENSIONS = !! material.extensions;\n\n\t\tconst HAS_ATTRIBUTE_UV1 = !! geometry.attributes.uv1;\n\t\tconst HAS_ATTRIBUTE_UV2 = !! geometry.attributes.uv2;\n\t\tconst HAS_ATTRIBUTE_UV3 = !! geometry.attributes.uv3;\n\n\t\tlet toneMapping = NoToneMapping;\n\n\t\tif ( material.toneMapped ) {\n\n\t\t\tif ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\ttoneMapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: IS_WEBGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderType: material.type,\n\t\t\tshaderName: material.name,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tbatching: IS_BATCHEDMESH,\n\t\t\tinstancing: IS_INSTANCEDMESH,\n\t\t\tinstancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n\t\t\toutputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),\n\n\t\t\tmap: HAS_MAP,\n\t\t\tmatcap: HAS_MATCAP,\n\t\t\tenvMap: HAS_ENVMAP,\n\t\t\tenvMapMode: HAS_ENVMAP && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\taoMap: HAS_AOMAP,\n\t\t\tlightMap: HAS_LIGHTMAP,\n\t\t\tbumpMap: HAS_BUMPMAP,\n\t\t\tnormalMap: HAS_NORMALMAP,\n\t\t\tdisplacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n\t\t\temissiveMap: HAS_EMISSIVEMAP,\n\n\t\t\tnormalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tnormalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tmetalnessMap: HAS_METALNESSMAP,\n\t\t\troughnessMap: HAS_ROUGHNESSMAP,\n\n\t\t\tanisotropy: HAS_ANISOTROPY,\n\t\t\tanisotropyMap: HAS_ANISOTROPYMAP,\n\n\t\t\tclearcoat: HAS_CLEARCOAT,\n\t\t\tclearcoatMap: HAS_CLEARCOATMAP,\n\t\t\tclearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n\t\t\tclearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n\n\t\t\tiridescence: HAS_IRIDESCENCE,\n\t\t\tiridescenceMap: HAS_IRIDESCENCEMAP,\n\t\t\tiridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n\n\t\t\tsheen: HAS_SHEEN,\n\t\t\tsheenColorMap: HAS_SHEEN_COLORMAP,\n\t\t\tsheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n\n\t\t\tspecularMap: HAS_SPECULARMAP,\n\t\t\tspecularColorMap: HAS_SPECULAR_COLORMAP,\n\t\t\tspecularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n\n\t\t\ttransmission: HAS_TRANSMISSION,\n\t\t\ttransmissionMap: HAS_TRANSMISSIONMAP,\n\t\t\tthicknessMap: HAS_THICKNESSMAP,\n\n\t\t\tgradientMap: HAS_GRADIENTMAP,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending,\n\n\t\t\talphaMap: HAS_ALPHAMAP,\n\t\t\talphaTest: HAS_ALPHATEST,\n\t\t\talphaHash: HAS_ALPHAHASH,\n\n\t\t\tcombine: material.combine,\n\n\t\t\t//\n\n\t\t\tmapUv: HAS_MAP && getChannel( material.map.channel ),\n\t\t\taoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),\n\t\t\tlightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),\n\t\t\tbumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),\n\t\t\tnormalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),\n\t\t\tdisplacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),\n\t\t\temissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),\n\n\t\t\tmetalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),\n\t\t\troughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),\n\n\t\t\tanisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),\n\n\t\t\tclearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),\n\t\t\tclearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),\n\t\t\tclearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),\n\n\t\t\tiridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),\n\t\t\tiridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),\n\n\t\t\tsheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ),\n\t\t\tsheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ),\n\n\t\t\tspecularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ),\n\t\t\tspecularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ),\n\t\t\tspecularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ),\n\n\t\t\ttransmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),\n\t\t\tthicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),\n\n\t\t\talphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),\n\n\t\t\t//\n\n\t\t\tvertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUv1s: HAS_ATTRIBUTE_UV1,\n\t\t\tvertexUv2s: HAS_ATTRIBUTE_UV2,\n\t\t\tvertexUv3s: HAS_ATTRIBUTE_UV3,\n\n\t\t\tpointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading === true,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation === true,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumSpotLightMaps: lights.spotLightMap.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumLightProbes: lights.numLightProbes,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: toneMapping,\n\t\t\tuseLegacyLights: renderer._useLegacyLights,\n\n\t\t\tdecodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: material.depthPacking >= 0,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: HAS_EXTENSIONS && material.extensions.derivatives === true,\n\t\t\textensionFragDepth: HAS_EXTENSIONS && material.extensions.fragDepth === true,\n\t\t\textensionDrawBuffers: HAS_EXTENSIONS && material.extensions.drawBuffers === true,\n\t\t\textensionShaderTextureLOD: HAS_EXTENSIONS && material.extensions.shaderTextureLOD === true,\n\t\t\textensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance && extensions.has( 'WEBGL_clip_cull_distance' ),\n\n\t\t\trendererExtensionFragDepth: IS_WEBGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: IS_WEBGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: IS_WEBGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\t\t\trendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputColorSpace );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputColorSpace );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.mapUv );\n\t\tarray.push( parameters.alphaMapUv );\n\t\tarray.push( parameters.lightMapUv );\n\t\tarray.push( parameters.aoMapUv );\n\t\tarray.push( parameters.bumpMapUv );\n\t\tarray.push( parameters.normalMapUv );\n\t\tarray.push( parameters.displacementMapUv );\n\t\tarray.push( parameters.emissiveMapUv );\n\t\tarray.push( parameters.metalnessMapUv );\n\t\tarray.push( parameters.roughnessMapUv );\n\t\tarray.push( parameters.anisotropyMapUv );\n\t\tarray.push( parameters.clearcoatMapUv );\n\t\tarray.push( parameters.clearcoatNormalMapUv );\n\t\tarray.push( parameters.clearcoatRoughnessMapUv );\n\t\tarray.push( parameters.iridescenceMapUv );\n\t\tarray.push( parameters.iridescenceThicknessMapUv );\n\t\tarray.push( parameters.sheenColorMapUv );\n\t\tarray.push( parameters.sheenRoughnessMapUv );\n\t\tarray.push( parameters.specularMapUv );\n\t\tarray.push( parameters.specularColorMapUv );\n\t\tarray.push( parameters.specularIntensityMapUv );\n\t\tarray.push( parameters.transmissionMapUv );\n\t\tarray.push( parameters.thicknessMapUv );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numSpotLightMaps );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.numLightProbes );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.normalMapObjectSpace )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.normalMapTangentSpace )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.vertexUv1s )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.vertexUv2s )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.vertexUv3s )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.anisotropy )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.alphaHash )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.batching )\n\t\t\t_programLayers.enable( 19 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.useLegacyLights )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.pointsUvs )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 19 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1,\n\t\t\tnumSpotMaps: - 1,\n\n\t\t\tnumLightProbes: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\t\tnumSpotLightShadowsWithMaps: 0,\n\t\tnumLightProbes: 0\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, useLegacyLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\tlet numLightProbes = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( useLegacyLights === true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t\tnumLightProbes ++;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ||\n\t\t\thash.numSpotMaps !== numSpotMaps ||\n\t\t\thash.numLightProbes !== numLightProbes ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n\t\t\tstate.numLightProbes = numLightProbes;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\thash.numLightProbes = numLightProbes;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( useLegacyLights ) {\n\n\t\tlights.setup( lightsArray, useLegacyLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\tlet _previousType = this.type;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// check for shadow map type changes\n\n\t\tconst toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap );\n\t\tconst fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null || toVSM === true || fromVSM === true ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tif ( shadow.map !== null ) {\n\n\t\t\t\t\tshadow.map.dispose();\n\n\t\t\t\t}\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\t_previousType = this.type;\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t\t( material.alphaMap && material.alphaTest > 0 ) ||\n\t\t\t\t( material.map && material.alphaTest > 0 ) ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\t\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\t\tresult.map = material.map;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tconst materialProperties = _renderer.properties.get( result );\n\t\t\tmaterialProperties.light = light;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, type );\n\n\t\t\t\t\t\t\tobject.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\tobject.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, type );\n\n\t\t\t\t\tobject.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\tobject.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t// make sure to remove the unique distance/depth materials used for shadow map rendering\n\n\t\tfor ( const id in _materialCache ) {\n\n\t\t\tconst cache = _materialCache[ id ];\n\n\t\t\tconst uuid = event.target.uuid;\n\n\t\t\tif ( uuid in cache ) {\n\n\t\t\t\tconst shadowMaterial = cache[ uuid ];\n\t\t\t\tshadowMaterial.dispose();\n\t\t\t\tdelete cache[ uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgramMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentBlendColor = new Color( 0, 0, 0 );\n\tlet currentBlendAlpha = 0;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( gl.SCISSOR_BOX );\n\tconst viewportParam = gl.getParameter( gl.VIEWPORT );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count, dimensions ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tif ( isWebGL2 && ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) ) {\n\n\t\t\t\tgl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t} else {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\tif ( isWebGL2 ) {\n\n\t\temptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );\n\t\temptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );\n\n\t}\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\n\t\t\t\tif ( target === gl.DRAW_FRAMEBUFFER ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === gl.FRAMEBUFFER ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = gl.COLOR_ATTACHMENT0;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== gl.BACK ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = gl.BACK;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: gl.FUNC_ADD,\n\t\t[ SubtractEquation ]: gl.FUNC_SUBTRACT,\n\t\t[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = gl.MIN;\n\t\tequationToGL[ MaxEquation ] = gl.MAX;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: gl.ZERO,\n\t\t[ OneFactor ]: gl.ONE,\n\t\t[ SrcColorFactor ]: gl.SRC_COLOR,\n\t\t[ SrcAlphaFactor ]: gl.SRC_ALPHA,\n\t\t[ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE,\n\t\t[ DstColorFactor ]: gl.DST_COLOR,\n\t\t[ DstAlphaFactor ]: gl.DST_ALPHA,\n\t\t[ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR,\n\t\t[ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t[ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR,\n\t\t[ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA,\n\t\t[ ConstantColorFactor ]: gl.CONSTANT_COLOR,\n\t\t[ OneMinusConstantColorFactor ]: gl.ONE_MINUS_CONSTANT_COLOR,\n\t\t[ ConstantAlphaFactor ]: gl.CONSTANT_ALPHA,\n\t\t[ OneMinusConstantAlphaFactor ]: gl.ONE_MINUS_CONSTANT_ALPHA\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( gl.BLEND );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( gl.BLEND );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ONE, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\t\t\t\tcurrentBlendColor.set( 0, 0, 0 );\n\t\t\t\tcurrentBlendAlpha = 0;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tif ( blendColor.equals( currentBlendColor ) === false || blendAlpha !== currentBlendAlpha ) {\n\n\t\t\tgl.blendColor( blendColor.r, blendColor.g, blendColor.b, blendAlpha );\n\n\t\t\tcurrentBlendColor.copy( blendColor );\n\t\t\tcurrentBlendAlpha = blendAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = false;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( gl.SAMPLE_ALPHA_TO_COVERAGE )\n\t\t\t: disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgramMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgramMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgramMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( program ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( program, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( gl.BLEND );\n\t\tgl.disable( gl.CULL_FACE );\n\t\tgl.disable( gl.DEPTH_TEST );\n\t\tgl.disable( gl.POLYGON_OFFSET_FILL );\n\t\tgl.disable( gl.SCISSOR_TEST );\n\t\tgl.disable( gl.STENCIL_TEST );\n\t\tgl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\tgl.blendFunc( gl.ONE, gl.ZERO );\n\t\tgl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO );\n\t\tgl.blendColor( 0, 0, 0, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( gl.LESS );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( gl.ALWAYS, 0, 0xffffffff );\n\t\tgl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( gl.BACK );\n\t\tgl.frontFace( gl.CCW );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( gl.TEXTURE0 );\n\n\t\tgl.bindFramebuffer( gl.FRAMEBUFFER, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );\n\t\t\tgl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentBlendColor = new Color( 0, 0, 0 );\n\t\tcurrentBlendAlpha = 0;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\tcompressedTexImage3D: compressedTexImage3D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\t\tcompressedTexSubImage3D: compressedTexSubImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === _gl.RED ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RED_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.R8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.R16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.R32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tconst transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace );\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( transfer === SRGBTransfer ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;\n\n\t\t}\n\n\t\tif ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||\n\t\t\tinternalFormat === _gl.RG16F || internalFormat === _gl.RG32F ||\n\t\t\tinternalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) {\n\n\t\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) {\n\n\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.wrapR || 0 );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.colorSpace );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: _gl.REPEAT,\n\t\t[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,\n\t\t[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: _gl.NEAREST,\n\t\t[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,\n\n\t\t[ LinearFilter ]: _gl.LINEAR,\n\t\t[ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR\n\t};\n\n\tconst compareToGL = {\n\t\t[ NeverCompare ]: _gl.NEVER,\n\t\t[ AlwaysCompare ]: _gl.ALWAYS,\n\t\t[ LessCompare ]: _gl.LESS,\n\t\t[ LessEqualCompare ]: _gl.LEQUAL,\n\t\t[ EqualCompare ]: _gl.EQUAL,\n\t\t[ GreaterEqualCompare ]: _gl.GEQUAL,\n\t\t[ GreaterCompare ]: _gl.GREATER,\n\t\t[ NotEqualCompare ]: _gl.NOTEQUAL\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, _gl.CLAMP_TO_EDGE );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( texture.compareFunction ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.magFilter === NearestFilter ) return;\n\t\t\tif ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = _gl.TEXTURE_2D;\n\n\t\tif ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\tif ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true && glInternalFormat !== RGB_ETC1_Format );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedIntType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tconst width = Math.max( 1, renderTarget.width >> level );\n\t\t\tconst height = Math.max( 1, renderTarget.height >> level );\n\n\t\t\tif ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, level );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = ( isWebGL2 === true ) ? _gl.DEPTH_COMPONENT24 : _gl.DEPTH_COMPONENT16;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = [];\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = isMultipleRenderTargets ? texture : [ texture ];\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = _gl.TEXTURE_2D;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\n\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [ renderTarget.texture ];\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\tconst invalidationArray = [];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\n\t\t\t// If MRT we need to remove FBO attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tinvalidationArray.push( _gl.COLOR_ATTACHMENT0 + i );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;\n\t\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );\n\n\t\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArray );\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( capabilities.maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst colorSpace = texture.colorSpace;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, colorSpace = NoColorSpace ) {\n\n\t\tlet extension;\n\n\t\tconst transfer = ColorManagement.getTransfer( colorSpace );\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return gl.HALF_FLOAT;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedFormat ) return gl.RED;\n\t\tif ( p === RedIntegerFormat ) return gl.RED_INTEGER;\n\t\tif ( p === RGFormat ) return gl.RG;\n\t\tif ( p === RGIntegerFormat ) return gl.RG_INTEGER;\n\t\tif ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( transfer === SRGBTransfer ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\tif ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\tif ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// RGTC\n\n\t\tif ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_rgtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n\t\t\t\tif ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return gl.UNSIGNED_INT_24_8;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// private method\n\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\t// Set default foveation to maximum.\n\t\tlet foveation = 1.0;\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\tconst currentSize = new Vector2();\n\t\tlet currentPixelRatio = null;\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraXR = new ArrayCamera();\n\t\tcameraXR.layers.enable( 1 );\n\t\tcameraXR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace );\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\trenderer.setPixelRatio( currentPixelRatio );\n\t\t\trenderer.setSize( currentSize.width, currentSize.height, false );\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\t\trenderer.getSize( currentSize );\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: gl.RGBA8,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\tthis.setFoveation( foveation );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getEnvironmentBlendMode = function () {\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\treturn session.environmentBlendMode;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].disconnect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.connect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraXR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraXR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraXR.near,\n\t\t\t\t\tdepthFar: cameraXR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraXR.near;\n\t\t\t\t_currentDepthFar = cameraXR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraXR.cameras;\n\n\t\t\tupdateCamera( cameraXR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraXR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraXR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t\t// update user camera and its children\n\n\t\t\tupdateUserCamera( camera, cameraXR, parent );\n\n\t\t};\n\n\t\tfunction updateUserCamera( camera, cameraXR, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrix.copy( cameraXR.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrix.copy( parent.matrixWorld );\n\t\t\t\tcamera.matrix.invert();\n\t\t\t\tcamera.matrix.multiply( cameraXR.matrixWorld );\n\n\t\t\t}\n\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.updateMatrixWorld( true );\n\n\t\t\tcamera.projectionMatrix.copy( cameraXR.projectionMatrix );\n\t\t\tcamera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );\n\n\t\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\t\tcamera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] );\n\t\t\t\tcamera.zoom = 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraXR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer === null && glBaseLayer === null ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn foveation;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( value ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tfoveation = value;\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraXRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraXR's camera list\n\n\t\t\t\tif ( views.length !== cameraXR.cameras.length ) {\n\n\t\t\t\t\tcameraXR.cameras.length = 0;\n\t\t\t\t\tcameraXRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraXR.matrix.copy( camera.matrix );\n\t\t\t\t\t\tcameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraXRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraXR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\tif ( frame.detectedPlanes ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'planesdetected', data: frame } );\n\n\t\t\t}\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshTransformUniform( map, uniform ) {\n\n\t\tif ( map.matrixAutoUpdate === true ) {\n\n\t\t\tmap.updateMatrix();\n\n\t\t}\n\n\t\tuniform.value.copy( map.matrix );\n\n\t}\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tfog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\n\t\t\trefreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform );\n\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.bumpScale.value *= - 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\trefreshTransformUniform( material.normalMap, uniforms.normalMapTransform );\n\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.normalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\n\t\t\trefreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform );\n\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\trefreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\trefreshTransformUniform( material.specularMap, uniforms.specularMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer._useLegacyLights === true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t\trefreshTransformUniform( material.lightMap, uniforms.lightMapTransform );\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\trefreshTransformUniform( material.aoMap, uniforms.aoMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.uvTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\trefreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform );\n\n\t\t}\n\n\t\tuniforms.roughness.value = material.roughness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\trefreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform );\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform );\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t\trefreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tif ( material.anisotropy > 0 ) {\n\n\t\t\tuniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );\n\n\t\t\tif ( material.anisotropyMap ) {\n\n\t\t\t\tuniforms.anisotropyMap.value = material.anisotropyMap;\n\n\t\t\t\trefreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t\trefreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t\trefreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tconst light = properties.get( material ).light;\n\n\t\tuniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld );\n\t\tuniforms.nearDistance.value = light.shadow.camera.near;\n\t\tuniforms.farDistance.value = light.shadow.camera.far;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = ( capabilities.isWebGL2 ) ? gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ) : 0; // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\t\tgl.bufferData( gl.UNIFORM_BUFFER, size, usage );\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\t\tgl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tif ( hasUniformChanged( uniform, i, j, cache ) === true ) {\n\n\t\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\t\tlet arrayOffset = 0;\n\n\t\t\t\t\tfor ( let k = 0; k < values.length; k ++ ) {\n\n\t\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t\t// TODO add integer and struct support\n\t\t\t\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );\n\n\t\t\t\t\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value.elements[ 0 ];\n\t\t\t\t\t\t\tuniform.__data[ 1 ] = value.elements[ 1 ];\n\t\t\t\t\t\t\tuniform.__data[ 2 ] = value.elements[ 2 ];\n\t\t\t\t\t\t\tuniform.__data[ 3 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 4 ] = value.elements[ 3 ];\n\t\t\t\t\t\t\tuniform.__data[ 5 ] = value.elements[ 4 ];\n\t\t\t\t\t\t\tuniform.__data[ 6 ] = value.elements[ 5 ];\n\t\t\t\t\t\t\tuniform.__data[ 7 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 8 ] = value.elements[ 6 ];\n\t\t\t\t\t\t\tuniform.__data[ 9 ] = value.elements[ 7 ];\n\t\t\t\t\t\t\tuniform.__data[ 10 ] = value.elements[ 8 ];\n\t\t\t\t\t\t\tuniform.__data[ 11 ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvalue.toArray( uniform.__data, arrayOffset );\n\n\t\t\t\t\t\t\tarrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, indexArray, cache ) {\n\n\t\tconst value = uniform.value;\n\t\tconst indexString = index + '_' + indexArray;\n\n\t\tif ( cache[ indexString ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tcache[ indexString ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ indexString ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\tconst cachedObject = cache[ indexString ];\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tif ( cachedObject !== value ) {\n\n\t\t\t\t\tcache[ indexString ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\tfor ( let k = 0, kl = values.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t// Calculate the chunk offset\n\t\t\t\t\tconst chunkOffsetUniform = offset % chunkSize;\n\n\t\t\t\t\t// Check for chunk overflow\n\t\t\t\t\tif ( chunkOffsetUniform !== 0 && ( chunkSize - chunkOffsetUniform ) < info.boundary ) {\n\n\t\t\t\t\t\t// Add padding and adjust offset\n\t\t\t\t\t\toffset += ( chunkSize - chunkOffsetUniform );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following two properties will be used for partial buffer updates\n\n\t\t\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\t\t\tuniform.__offset = offset;\n\n\n\t\t\t\t\t// Update the global offset\n\t\t\t\t\toffset += info.storage;\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tconst chunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( value ) {\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t// float/int/bool\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass WebGLRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst {\n\t\t\tcanvas = createCanvasElement(),\n\t\t\tcontext = null,\n\t\t\tdepth = true,\n\t\t\tstencil = true,\n\t\t\talpha = false,\n\t\t\tantialias = false,\n\t\t\tpremultipliedAlpha = true,\n\t\t\tpreserveDrawingBuffer = false,\n\t\t\tpowerPreference = 'default',\n\t\t\tfailIfMajorPerformanceCaveat = false,\n\t\t} = parameters;\n\n\t\tthis.isWebGLRenderer = true;\n\n\t\tlet _alpha;\n\n\t\tif ( context !== null ) {\n\n\t\t\t_alpha = context.getContextAttributes().alpha;\n\n\t\t} else {\n\n\t\t\t_alpha = alpha;\n\n\t\t}\n\n\t\tconst uintClearColor = new Uint32Array( 4 );\n\t\tconst intClearColor = new Int32Array( 4 );\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null;\n\n\t\t// render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = canvas;\n\n\t\t// Debug configuration container\n\t\tthis.debug = {\n\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true,\n\t\t\t/**\n\t\t\t * Callback for custom error reporting.\n\t\t\t * @type {?Function}\n\t\t\t */\n\t\t\tonShaderError: null\n\t\t};\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis._outputColorSpace = SRGBColorSpace;\n\n\t\t// physical lights\n\n\t\tthis._useLegacyLights = false;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\n\t\t// internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false;\n\n\t\t// internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\t\tlet _currentMaterialId = - 1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\t\tconst _currentScissor = new Vector4();\n\t\tlet _currentScissorTest = null;\n\n\t\tconst _currentClearColor = new Color( 0x000000 );\n\t\tlet _currentClearAlpha = 0;\n\n\t\t//\n\n\t\tlet _width = canvas.width;\n\t\tlet _height = canvas.height;\n\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\t\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\t\tlet _scissorTest = false;\n\n\t\t// frustum\n\n\t\tconst _frustum = new Frustum();\n\n\t\t// clipping\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false;\n\n\t\t// transmission\n\n\t\tlet _transmissionRenderTarget = null;\n\n\t\t// camera matrices cache\n\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector2 = new Vector2();\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tlet _gl = context;\n\n\t\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\t\tconst contextName = contextNames[ i ];\n\t\t\t\tconst context = canvas.getContext( contextName, contextAttributes );\n\t\t\t\tif ( context !== null ) return context;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tdepth,\n\t\t\t\tstencil,\n\t\t\t\tantialias,\n\t\t\t\tpremultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer,\n\t\t\t\tpowerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat,\n\t\t\t};\n\n\t\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\t\tif ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t\tcanvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\t\tcontextNames.shift();\n\n\t\t\t\t}\n\n\t\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\t\tif ( _gl === null ) {\n\n\t\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( typeof WebGLRenderingContext !== 'undefined' && _gl instanceof WebGLRenderingContext ) { // @deprecated, r153\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163.' );\n\n\t\t\t}\n\n\t\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\t\tthrow error;\n\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\t\tlet utils, bindingStates, uniformsGroups;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\t\textensions.init( capabilities );\n\n\t\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\t\tinfo = new WebGLInfo( _gl );\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\t\tclipping = new WebGLClipping( properties );\n\t\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\t\trenderLists = new WebGLRenderLists();\n\t\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\t\tbackground = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );\n\t\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\t\tinfo.programs = programCache.programs;\n\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// xr\n\n\t\tconst xr = new WebXRManager( _this, _gl );\n\n\t\tthis.xr = xr;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function ( target ) {\n\n\t\t\treturn target.set( _width, _height );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle = true ) {\n\n\t\t\tif ( xr.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\tcanvas.width = Math.floor( width * _pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * _pixelRatio );\n\n\t\t\tif ( updateStyle === true ) {\n\n\t\t\t\tcanvas.style.width = width + 'px';\n\t\t\t\tcanvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\tcanvas.width = Math.floor( width * pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * pixelRatio );\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getCurrentViewport = function ( target ) {\n\n\t\t\treturn target.copy( _currentViewport );\n\n\t\t};\n\n\t\tthis.getViewport = function ( target ) {\n\n\t\t\treturn target.copy( _viewport );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_viewport.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\t};\n\n\t\tthis.getScissor = function ( target ) {\n\n\t\t\treturn target.copy( _scissor );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_scissor.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn _scissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\tthis.setOpaqueSort = function ( method ) {\n\n\t\t\t_opaqueSort = method;\n\n\t\t};\n\n\t\tthis.setTransparentSort = function ( method ) {\n\n\t\t\t_transparentSort = method;\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function ( target ) {\n\n\t\t\treturn target.copy( background.getClearColor() );\n\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\n\t\t\tbackground.setClearColor.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn background.getClearAlpha();\n\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\n\t\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\t\tlet bits = 0;\n\n\t\t\tif ( color ) {\n\n\t\t\t\t// check if we're trying to clear an integer target\n\t\t\t\tlet isIntegerFormat = false;\n\t\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t\tconst targetFormat = _currentRenderTarget.texture.format;\n\t\t\t\t\tisIntegerFormat = targetFormat === RGBAIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RGIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RedIntegerFormat;\n\n\t\t\t\t}\n\n\t\t\t\t// use the appropriate clear functions to clear the target if it's a signed\n\t\t\t\t// or unsigned integer target\n\t\t\t\tif ( isIntegerFormat ) {\n\n\t\t\t\t\tconst targetType = _currentRenderTarget.texture.type;\n\t\t\t\t\tconst isUnsignedType = targetType === UnsignedByteType ||\n\t\t\t\t\t\ttargetType === UnsignedIntType ||\n\t\t\t\t\t\ttargetType === UnsignedShortType ||\n\t\t\t\t\t\ttargetType === UnsignedInt248Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort4444Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort5551Type;\n\n\t\t\t\t\tconst clearColor = background.getClearColor();\n\t\t\t\t\tconst a = background.getClearAlpha();\n\t\t\t\t\tconst r = clearColor.r;\n\t\t\t\t\tconst g = clearColor.g;\n\t\t\t\t\tconst b = clearColor.b;\n\n\t\t\t\t\tif ( isUnsignedType ) {\n\n\t\t\t\t\t\tuintClearColor[ 0 ] = r;\n\t\t\t\t\t\tuintClearColor[ 1 ] = g;\n\t\t\t\t\t\tuintClearColor[ 2 ] = b;\n\t\t\t\t\t\tuintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tintClearColor[ 0 ] = r;\n\t\t\t\t\t\tintClearColor[ 1 ] = g;\n\t\t\t\t\t\tintClearColor[ 2 ] = b;\n\t\t\t\t\t\tintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferiv( _gl.COLOR, 0, intClearColor );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbits |= _gl.COLOR_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif ( stencil ) {\n\n\t\t\t\tbits |= _gl.STENCIL_BUFFER_BIT;\n\t\t\t\tthis.state.buffers.stencil.setMask( 0xffffffff );\n\n\t\t\t}\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\tcanvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\tuniformsGroups.dispose();\n\t\t\tprogramCache.dispose();\n\n\t\t\txr.dispose();\n\n\t\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t\t_transmissionRenderTarget = null;\n\n\t\t\t}\n\n\t\t\tanimation.stop();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( /* event */ ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\n\t\t\tinitGLContext();\n\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\n\t\t}\n\n\t\tfunction onContextCreationError( event ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tconst material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReferences( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\t\tconst programs = properties.get( material ).programs;\n\n\t\t\tif ( programs !== undefined ) {\n\n\t\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t\t} );\n\n\t\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\t//\n\n\t\t\tlet index = geometry.index;\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\n\t\t\t\tif ( index === undefined ) return;\n\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst drawRange = geometry.drawRange;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet drawStart = drawRange.start * rangeFactor;\n\t\t\tlet drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;\n\n\t\t\tif ( group !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, group.start * rangeFactor );\n\t\t\t\tdrawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );\n\n\t\t\t}\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, index.count );\n\n\t\t\t} else if ( position !== undefined && position !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, position.count );\n\n\t\t\t}\n\n\t\t\tconst drawCount = drawEnd - drawStart;\n\n\t\t\tif ( drawCount < 0 || drawCount === Infinity ) return;\n\n\t\t\t//\n\n\t\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\trenderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );\n\n\t\t\t} else if ( object.isInstancedMesh ) {\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tconst maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;\n\t\t\t\tconst instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Compile\n\n\t\tfunction prepareMaterial( material, scene, object ) {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.compile = function ( scene, camera, targetScene = null ) {\n\n\t\t\tif ( targetScene === null ) targetScene = scene;\n\n\t\t\tcurrentRenderState = renderStates.get( targetScene );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t// gather lights from both the target scene and the new object that will be added to the scene.\n\n\t\t\ttargetScene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tif ( scene !== targetScene ) {\n\n\t\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\t// Only initialize materials in the new scene, not the targetScene.\n\n\t\t\tconst materials = new Set();\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material ) {\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\t\tprepareMaterial( material2, targetScene, object );\n\t\t\t\t\t\t\tmaterials.add( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tprepareMaterial( material, targetScene, object );\n\t\t\t\t\t\tmaterials.add( material );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\trenderStateStack.pop();\n\t\t\tcurrentRenderState = null;\n\n\t\t\treturn materials;\n\n\t\t};\n\n\t\t// compileAsync\n\n\t\tthis.compileAsync = function ( scene, camera, targetScene = null ) {\n\n\t\t\tconst materials = this.compile( scene, camera, targetScene );\n\n\t\t\t// Wait for all the materials in the new object to indicate that they're\n\t\t\t// ready to be used before resolving the promise.\n\n\t\t\treturn new Promise( ( resolve ) => {\n\n\t\t\t\tfunction checkMaterialsReady() {\n\n\t\t\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\t\t\tconst materialProperties = properties.get( material );\n\t\t\t\t\t\tconst program = materialProperties.currentProgram;\n\n\t\t\t\t\t\tif ( program.isReady() ) {\n\n\t\t\t\t\t\t\t// remove any programs that report they're ready to use from the list\n\t\t\t\t\t\t\tmaterials.delete( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\t// once the list of compiling materials is empty, call the callback\n\n\t\t\t\t\tif ( materials.size === 0 ) {\n\n\t\t\t\t\t\tresolve( scene );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if some materials are still not ready, wait a bit and check again\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) {\n\n\t\t\t\t\t// If we can check the compilation status of the materials without\n\t\t\t\t\t// blocking then do so right away.\n\n\t\t\t\t\tcheckMaterialsReady();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise start by waiting a bit to give the materials we just\n\t\t\t\t\t// initialized a chance to finish.\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time ) {\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\n\t\t\tanimation.start();\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop( callback );\n\n\t\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t\t};\n\n\t\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost === true ) return;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t\t}\n\n\t\t\t//\n\t\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\t\tcurrentRenderList.init();\n\n\t\t\trenderListStack.push( currentRenderList );\n\n\t\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tthis.info.render.frame ++;\n\n\t\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t\t//\n\n\t\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\n\t\t\t//\n\n\t\t\tbackground.render( currentRenderList, scene );\n\n\t\t\t// render scene\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t\t// _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\trenderStateStack.pop();\n\n\t\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderState = null;\n\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderList = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tconst visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isGroup ) {\n\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( object.boundingSphere.center );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( geometry.boundingSphere.center );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_vector3\n\t\t\t\t\t\t\t\t.applyMatrix4( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );\n\n\t\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t}\n\n\t\tfunction renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tif ( overrideMaterial !== null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tsamples: ( isWebGL2 ) ? 4 : 0\n\t\t\t\t} );\n\n\t\t\t\t// debug\n\n\t\t\t\t/*\n\t\t\t\tconst geometry = new PlaneGeometry();\n\t\t\t\tconst material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );\n\n\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\tscene.add( mesh );\n\t\t\t\t*/\n\n\t\t\t}\n\n\t\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t\t} else {\n\n\t\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\n\t\t\t_this.getClearColor( _currentClearColor );\n\t\t\t_currentClearAlpha = _this.getClearAlpha();\n\t\t\tif ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );\n\n\t\t\t_this.clear();\n\n\t\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t\tlet renderTargetNeedsUpdate = false;\n\n\t\t\tfor ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = transmissiveObjects[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = renderItem.material;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tconst currentSide = material.side;\n\n\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t\tmaterial.side = currentSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderTargetNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetNeedsUpdate === true ) {\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\t\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t\t\t_this.setClearColor( _currentClearColor, _currentClearAlpha );\n\n\t\t\t_this.toneMapping = currentToneMapping;\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction getProgram( material, scene, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tconst lightsStateVersion = lights.state.version;\n\n\t\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\t\tlet programs = materialProperties.programs;\n\n\t\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\t\tif ( programs === undefined ) {\n\n\t\t\t\t// new material\n\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\n\t\t\t}\n\n\t\t\tlet program = programs.get( programCacheKey );\n\n\t\t\tif ( program !== undefined ) {\n\n\t\t\t\t// early out if program and light state is identical\n\n\t\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\t\treturn program;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = null;\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction getUniformList( materialProperties ) {\n\n\t\t\tif ( materialProperties.uniformsList === null ) {\n\n\t\t\t\tconst progUniforms = materialProperties.currentProgram.getUniforms();\n\t\t\t\tmaterialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms );\n\n\t\t\t}\n\n\t\t\treturn materialProperties.uniformsList;\n\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tmaterialProperties.outputColorSpace = parameters.outputColorSpace;\n\t\t\tmaterialProperties.batching = parameters.batching;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.instancingColor = parameters.instancingColor;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t\t}\n\n\t\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );\n\t\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );\n\t\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\t\tconst morphColors = !! geometry.morphAttributes.color;\n\n\t\t\tlet toneMapping = NoToneMapping;\n\n\t\t\tif ( material.toneMapped ) {\n\n\t\t\t\tif ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\t\ttoneMapping = _this.toneMapping;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tconst materialProperties = properties.get( material );\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif ( _clippingEnabled === true ) {\n\n\t\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\t\tconst useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.outputColorSpace !== colorSpace ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batching === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isBatchedMesh && materialProperties.batching === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif ( needsProgramChange === true ) {\n\n\t\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\t\t// common camera uniforms\n\n\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t\t}\n\n\t\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );\n\n\t\t\t}\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, program );\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t\t}\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\n\t\t\t}\n\n\t\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t\t}\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\t// UBOs\n\n\t\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\tfunction materialNeedsLights( material ) {\n\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\n\t\t\treturn _currentActiveCubeFace;\n\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\n\t\t\treturn _currentActiveMipmapLevel;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tlet useDefaultFramebuffer = true;\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\t\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t\t}\n\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t\t_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t\t}\n\n\t\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\t\tconst levelScale = Math.pow( 2, - level );\n\t\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tconst width = srcTexture.image.width;\n\t\t\tconst height = srcTexture.image.height;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t\t// As another texture upload may have changed pixelStorei\n\t\t\t// parameters, make sure they are correct for the dstTexture\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\t\t\tlet glTarget;\n\n\t\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\n\t\t\t} else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tconst unpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst unpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst unpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst unpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst unpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, sourceBox.min.x );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );\n\n\t\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, unpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, unpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, unpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, unpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.initTexture = function ( texture ) {\n\n\t\t\tif ( texture.isCubeTexture ) {\n\n\t\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t\t} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.resetState = function () {\n\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\n\t\t};\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tget coordinateSystem() {\n\n\t\treturn WebGLCoordinateSystem;\n\n\t}\n\n\tget outputColorSpace() {\n\n\t\treturn this._outputColorSpace;\n\n\t}\n\n\tset outputColorSpace( colorSpace ) {\n\n\t\tthis._outputColorSpace = colorSpace;\n\n\t\tconst gl = this.getContext();\n\t\tgl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\t\tgl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\n\t}\n\n\tget outputEncoding() { // @deprecated, r152\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );\n\t\treturn this.outputColorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;\n\n\t}\n\n\tset outputEncoding( encoding ) { // @deprecated, r152\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );\n\t\tthis.outputColorSpace = encoding === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n\n\t}\n\n\tget useLegacyLights() { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\treturn this._useLegacyLights;\n\n\t}\n\n\tset useLegacyLights( value ) { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\tthis._useLegacyLights = value;\n\n\t}\n\n}\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.backgroundBlurriness = 0;\n\t\tthis.backgroundIntensity = 1;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = material;\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance,\n\t\t\t\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = AttachedBindMode;\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tapplyBoneTransform( index, vector ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( vector ).applyMatrix4( this.bindMatrix );\n\n\t\tvector.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\tvector.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn vector.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n\tboneTransform( index, vector ) { // @deprecated, r151\n\n\t\tconsole.warn( 'THREE.SkinnedMesh: .boneTransform() was renamed to .applyBoneTransform() in r151.' );\n\t\treturn this.applyBoneTransform( index, vector );\n\n\t}\n\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix$1 = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix$1;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$3 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$3.copy( this.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( drawRange, z ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: - 1,\n\t\t\t\tcount: - 1,\n\t\t\t\tz: - 1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = drawRange.start;\n\t\titem.count = drawRange.count;\n\t\titem.z = z;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst ID_ATTR_NAME = 'batchId';\nconst _matrix = /*@__PURE__*/ new Matrix4();\nconst _invMatrixWorld = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\nconst _projScreenMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// @TODO: SkinnedMesh support?\n// @TODO: geometry.groups support?\n// @TODO: geometry.drawRange support?\n// @TODO: geometry.morphAttributes support?\n// @TODO: Support uniform parameter per geometry\n// @TODO: Add an \"optimize\" function to pack geometry and remove data gaps\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\nclass BatchedMesh extends Mesh {\n\n\tget maxGeometryCount() {\n\n\t\treturn this._maxGeometryCount;\n\n\t}\n\n\tconstructor( maxGeometryCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\tthis.isBatchedMesh = true;\n\t\tthis.perObjectFrustumCulled = true;\n\t\tthis.sortObjects = true;\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\t\tthis.customSort = null;\n\n\t\tthis._drawRanges = [];\n\t\tthis._reservedRanges = [];\n\n\t\tthis._visibility = [];\n\t\tthis._active = [];\n\t\tthis._bounds = [];\n\n\t\tthis._maxGeometryCount = maxGeometryCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tthis._geometryInitialized = false;\n\t\tthis._geometryCount = 0;\n\t\tthis._multiDrawCounts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._visibilityChanged = true;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\n\t\tthis._initMatricesTexture();\n\n\t}\n\n\t_initMatricesTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 matrices * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxGeometryCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxGeometryCount = this._maxGeometryCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new srcAttribute.constructor( dstArray, itemSize, normalized );\n\t\t\t\tdstAttribute.setUsage( srcAttribute.usage );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\tconst indexArray = maxVertexCount > 65536\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tconst idArray = maxGeometryCount > 65536\n\t\t\t\t? new Uint32Array( maxVertexCount )\n\t\t\t\t: new Uint16Array( maxVertexCount );\n\t\t\tgeometry.setAttribute( ID_ATTR_NAME, new BufferAttribute( idArray, 1 ) );\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry atributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check that the geometry doesn't have a version of our reserved id attribute\n\t\tif ( geometry.getAttribute( ID_ATTR_NAME ) ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Geometry cannot use attribute \"${ ID_ATTR_NAME }\"` );\n\n\t\t}\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst active = this._active;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\tthis.getBoundingBoxAt( i, _box$1 ).applyMatrix4( _matrix );\n\t\t\tboundingBox.union( _box$1 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingSphere = this.boundingSphere;\n\t\tconst active = this._active;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\taddGeometry( geometry, vertexCount = - 1, indexCount = - 1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\t// ensure we're not over geometry\n\t\tif ( this._geometryCount >= this._maxGeometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\t// get the necessary range fo the geometry\n\t\tconst reservedRange = {\n\t\t\tvertexStart: - 1,\n\t\t\tvertexCount: - 1,\n\t\t\tindexStart: - 1,\n\t\t\tindexCount: - 1,\n\t\t};\n\n\t\tlet lastRange = null;\n\t\tconst reservedRanges = this._reservedRanges;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst bounds = this._bounds;\n\t\tif ( this._geometryCount !== 0 ) {\n\n\t\t\tlastRange = reservedRanges[ reservedRanges.length - 1 ];\n\n\t\t}\n\n\t\tif ( vertexCount === - 1 ) {\n\n\t\t\treservedRange.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexCount = vertexCount;\n\n\t\t}\n\n\t\tif ( lastRange === null ) {\n\n\t\t\treservedRange.vertexStart = 0;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexStart = lastRange.vertexStart + lastRange.vertexCount;\n\n\t\t}\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tif ( indexCount\t=== - 1 ) {\n\n\t\t\t\treservedRange.indexCount = index.count;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexCount = indexCount;\n\n\t\t\t}\n\n\t\t\tif ( lastRange === null ) {\n\n\t\t\t\treservedRange.indexStart = 0;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexStart = lastRange.indexStart + lastRange.indexCount;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (\n\t\t\treservedRange.indexStart !== - 1 &&\n\t\t\treservedRange.indexStart + reservedRange.indexCount > this._maxIndexCount ||\n\t\t\treservedRange.vertexStart + reservedRange.vertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\n\t\t// push new visibility states\n\t\tvisibility.push( true );\n\t\tactive.push( true );\n\n\t\t// update id\n\t\tconst geometryId = this._geometryCount;\n\t\tthis._geometryCount ++;\n\n\t\t// initialize matrix information\n\t\t_identityMatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\t// add the reserved range and draw range objects\n\t\treservedRanges.push( reservedRange );\n\t\tdrawRanges.push( {\n\t\t\tstart: hasIndex ? reservedRange.indexStart : reservedRange.vertexStart,\n\t\t\tcount: - 1\n\t\t} );\n\t\tbounds.push( {\n\t\t\tboxInitialized: false,\n\t\t\tbox: new Box3(),\n\n\t\t\tsphereInitialized: false,\n\t\t\tsphere: new Sphere()\n\t\t} );\n\n\t\t// set the id for the geometry\n\t\tconst idAttribute = this.geometry.getAttribute( ID_ATTR_NAME );\n\t\tfor ( let i = 0; i < reservedRange.vertexCount; i ++ ) {\n\n\t\t\tidAttribute.setX( reservedRange.vertexStart + i, geometryId );\n\n\t\t}\n\n\t\tidAttribute.needsUpdate = true;\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\treturn geometryId;\n\n\t}\n\n\tsetGeometryAt( id, geometry ) {\n\n\t\tif ( id >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst reservedRange = this._reservedRanges[ id ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > reservedRange.indexCount ||\n\t\t\tgeometry.attributes.position.count > reservedRange.vertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry over\n\t\tconst vertexStart = reservedRange.vertexStart;\n\t\tconst vertexCount = reservedRange.vertexCount;\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = vertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = reservedRange.indexStart;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedRange.indexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\n\t\t}\n\n\t\t// store the bounding boxes\n\t\tconst bound = this._bounds[ id ];\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tbound.box.copy( geometry.boundingBox );\n\t\t\tbound.boxInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.boxInitialized = false;\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tbound.sphere.copy( geometry.boundingSphere );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.sphereInitialized = false;\n\n\t\t}\n\n\t\t// set drawRange count\n\t\tconst drawRange = this._drawRanges[ id ];\n\t\tconst posAttr = geometry.getAttribute( 'position' );\n\t\tdrawRange.count = hasIndex ? srcIndex.count : posAttr.count;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn id;\n\n\t}\n\n\tdeleteGeometry( geometryId ) {\n\n\t\t// Note: User needs to call optimize() afterward to pack the data.\n\n\t\tconst active = this._active;\n\t\tif ( geometryId >= active.length || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tactive[ geometryId ] = false;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t// get bounding box and compute it if it doesn't exist\n\tgetBoundingBoxAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst bound = this._bounds[ id ];\n\t\tconst box = bound.box;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.boxInitialized === false ) {\n\n\t\t\tbox.makeEmpty();\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tbound.boxInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( box );\n\t\treturn target;\n\n\t}\n\n\t// get bounding sphere and compute it if it doesn't exist\n\tgetBoundingSphereAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst bound = this._bounds[ id ];\n\t\tconst sphere = bound.sphere;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.sphereInitialized === false ) {\n\n\t\t\tsphere.makeEmpty();\n\n\t\t\tthis.getBoundingBoxAt( id, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( sphere );\n\t\treturn target;\n\n\t}\n\n\tsetMatrixAt( geometryId, matrix ) {\n\n\t\t// @TODO: Map geometryId to index of the arrays because\n\t\t// optimize() can make geometryId mismatch the index\n\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tmatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetMatrixAt( geometryId, matrix ) {\n\n\t\tconst active = this._active;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn matrix.fromArray( matricesArray, geometryId * 16 );\n\n\t}\n\n\tsetVisibleAt( geometryId, value ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// if the geometry is out of range, not active, or visibility state\n\t\t// does not change then return early\n\t\tif (\n\t\t\tgeometryId >= geometryCount ||\n\t\t\tactive[ geometryId ] === false ||\n\t\t\tvisibility[ geometryId ] === value\n\t\t) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvisibility[ geometryId ] = value;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetVisibleAt( geometryId ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// return early if the geometry is out of range or not active\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn visibility[ geometryId ];\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( ! visibility[ i ] || ! active[ i ] ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst drawRange = drawRanges[ i ];\n\t\t\t_mesh.geometry.setDrawRange( drawRange.start, drawRange.count );\n\n\t\t\t// ge the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( i, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( i, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._drawRanges = source._drawRanges.map( range => ( { ...range } ) );\n\t\tthis._reservedRanges = source._reservedRanges.map( range => ( { ...range } ) );\n\n\t\tthis._visibility = source._visibility.slice();\n\t\tthis._active = source._active.slice();\n\t\tthis._bounds = source._bounds.map( bound => ( {\n\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\tbox: bound.box.clone(),\n\n\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\tsphere: bound.sphere.clone()\n\t\t} ) );\n\n\t\tthis._maxGeometryCount = source._maxGeometryCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._geometryCount = source._geometryCount;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.slice();\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\t\treturn this;\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst visibility = this._visibility;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t_projScreenMatrix$2\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\trenderer.isWebGPURenderer ? WebGPUCoordinateSystem : WebGLCoordinateSystem\n\t\t\t);\n\n\t\t}\n\n\t\tlet count = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_invMatrixWorld.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _invMatrixWorld );\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] ) {\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst z = _vector$5.distanceTo( _sphere$2.center );\n\t\t\t\t\t\t_renderList.push( drawRanges[ i ], z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ count ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ count ] = item.count;\n\t\t\t\tcount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] ) {\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst range = drawRanges[ i ];\n\t\t\t\t\t\tmultiDrawStarts[ count ] = range.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ count ] = range.count;\n\t\t\t\t\t\tcount ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._multiDrawCount = count;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CompressedArrayTexture extends CompressedTexture {\n\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\tthis.isCompressedArrayTexture = true;\n\t\tthis.image.depth = depth;\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t}\n\n}\n\nclass CompressedCubeTexture extends CompressedTexture {\n\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\tthis.isCompressedCubeTexture = true;\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tlength: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.4)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\touterNode = eliminateHole( queue[ i ], outerNode );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === 0 ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) >= ( ax - px ) * ( cy - py ) &&\n ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = 0;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.anisotropyRotation = 0;\n\t\tthis.anisotropyMap = null;\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = Infinity;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nconst AnimationUtils = {\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = this.times.slice();\n\t\tconst values = this.values.slice();\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' ) || response.headers.get( 'X-File-Size' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t} else if ( texData.encoding !== undefined ) { // @deprecated, r152\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay;\n\n\t\tthis.map = null;\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay;\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = MaterialLoader.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== undefined ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding; // @deprecated, r152\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxGeometryCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._visibility = data.visibility;\n\t\t\t\tobject._active = data.active;\n\t\t\t\tobject._bounds = data.bounds.map( bound => {\n\n\t\t\t\t\tconst box = new Box3();\n\t\t\t\t\tbox.min.fromArray( bound.boxMin );\n\t\t\t\t\tbox.max.fromArray( bound.boxMax );\n\n\t\t\t\t\tconst sphere = new Sphere();\n\t\t\t\t\tsphere.radius = bound.sphereRadius;\n\t\t\t\t\tsphere.center.fromArray( bound.sphereCenter );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\t\t\tbox: box,\n\n\t\t\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\t\t\tsphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\n\t\t\t\tobject._maxGeometryCount = data.maxGeometryCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.up !== undefined ) object.up.fromArray( data.up );\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance, level.hysteresis );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} ).catch( e => {\n\n\t\t\t\t\tif ( onError ) onError( e );\n\n\t\t\t\t} );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tconst promise = fetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tCache.remove( url );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( url, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nclass AudioContext {\n\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet _id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DisplayP3ColorSpace, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, Float64BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearDisplayP3ColorSpace, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, P3Primaries, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, Rec709Primaries, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, TwoPassDoubleSide, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, createCanvasElement, sRGBEncoding };\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3,\n\tPlane,\n\tRay,\n\tMathUtils\n} from 'three';\n\n// OrbitControls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nconst _changeEvent = { type: 'change' };\nconst _startEvent = { type: 'start' };\nconst _endEvent = { type: 'end' };\nconst _ray = new Ray();\nconst _plane = new Plane();\nconst TILT_LIMIT = Math.cos( 70 * MathUtils.DEG2RAD );\n\nclass OrbitControls extends EventDispatcher {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper();\n\n\t\tthis.object = object;\n\t\tthis.domElement = domElement;\n\t\tthis.domElement.style.touchAction = 'none'; // disable touch scroll\n\n\t\t// Set to false to disable this control\n\t\tthis.enabled = true;\n\n\t\t// \"target\" sets the location of focus, where the object orbits around\n\t\tthis.target = new Vector3();\n\n\t\t// Sets the 3D cursor (similar to Blender), from which the maxTargetRadius takes effect\n\t\tthis.cursor = new Vector3();\n\n\t\t// How far you can dolly in and out ( PerspectiveCamera only )\n\t\tthis.minDistance = 0;\n\t\tthis.maxDistance = Infinity;\n\n\t\t// How far you can zoom in and out ( OrthographicCamera only )\n\t\tthis.minZoom = 0;\n\t\tthis.maxZoom = Infinity;\n\n\t\t// Limit camera target within a spherical area around the cursor\n\t\tthis.minTargetRadius = 0;\n\t\tthis.maxTargetRadius = Infinity;\n\n\t\t// How far you can orbit vertically, upper and lower limits.\n\t\t// Range is 0 to Math.PI radians.\n\t\tthis.minPolarAngle = 0; // radians\n\t\tthis.maxPolarAngle = Math.PI; // radians\n\n\t\t// How far you can orbit horizontally, upper and lower limits.\n\t\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\t\tthis.minAzimuthAngle = - Infinity; // radians\n\t\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t\t// Set to true to enable damping (inertia)\n\t\t// If damping is enabled, you must call controls.update() in your animation loop\n\t\tthis.enableDamping = false;\n\t\tthis.dampingFactor = 0.05;\n\n\t\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t\t// Set to false to disable zooming\n\t\tthis.enableZoom = true;\n\t\tthis.zoomSpeed = 1.0;\n\n\t\t// Set to false to disable rotating\n\t\tthis.enableRotate = true;\n\t\tthis.rotateSpeed = 1.0;\n\n\t\t// Set to false to disable panning\n\t\tthis.enablePan = true;\n\t\tthis.panSpeed = 1.0;\n\t\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\t\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\t\tthis.zoomToCursor = false;\n\n\t\t// Set to true to automatically rotate around the target\n\t\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\t\tthis.autoRotate = false;\n\t\tthis.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60\n\n\t\t// The four arrow keys\n\t\tthis.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };\n\n\t\t// Mouse buttons\n\t\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t\t// Touch fingers\n\t\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t\t// for reset\n\t\tthis.target0 = this.target.clone();\n\t\tthis.position0 = this.object.position.clone();\n\t\tthis.zoom0 = this.object.zoom;\n\n\t\t// the target DOM element for key events\n\t\tthis._domElementKeyEvents = null;\n\n\t\t//\n\t\t// public methods\n\t\t//\n\n\t\tthis.getPolarAngle = function () {\n\n\t\t\treturn spherical.phi;\n\n\t\t};\n\n\t\tthis.getAzimuthalAngle = function () {\n\n\t\t\treturn spherical.theta;\n\n\t\t};\n\n\t\tthis.getDistance = function () {\n\n\t\t\treturn this.object.position.distanceTo( this.target );\n\n\t\t};\n\n\t\tthis.listenToKeyEvents = function ( domElement ) {\n\n\t\t\tdomElement.addEventListener( 'keydown', onKeyDown );\n\t\t\tthis._domElementKeyEvents = domElement;\n\n\t\t};\n\n\t\tthis.stopListenToKeyEvents = function () {\n\n\t\t\tthis._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\t\t\tthis._domElementKeyEvents = null;\n\n\t\t};\n\n\t\tthis.saveState = function () {\n\n\t\t\tscope.target0.copy( scope.target );\n\t\t\tscope.position0.copy( scope.object.position );\n\t\t\tscope.zoom0 = scope.object.zoom;\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tscope.target.copy( scope.target0 );\n\t\t\tscope.object.position.copy( scope.position0 );\n\t\t\tscope.object.zoom = scope.zoom0;\n\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\tscope.update();\n\n\t\t\tstate = STATE.NONE;\n\n\t\t};\n\n\t\t// this method is exposed, but perhaps it would be better if we can make it private...\n\t\tthis.update = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\t// so camera.up is the orbit axis\n\t\t\tconst quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\t\tconst quatInverse = quat.clone().invert();\n\n\t\t\tconst lastPosition = new Vector3();\n\t\t\tconst lastQuaternion = new Quaternion();\n\t\t\tconst lastTargetPosition = new Vector3();\n\n\t\t\tconst twoPI = 2 * Math.PI;\n\n\t\t\treturn function update( deltaTime = null ) {\n\n\t\t\t\tconst position = scope.object.position;\n\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t\t// angle from z-axis around y-axis\n\t\t\t\tspherical.setFromVector3( offset );\n\n\t\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\t\trotateLeft( getAutoRotationAngle( deltaTime ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t\t}\n\n\t\t\t\t// restrict theta to be between desired limits\n\n\t\t\t\tlet min = scope.minAzimuthAngle;\n\t\t\t\tlet max = scope.maxAzimuthAngle;\n\n\t\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\t\tif ( min <= max ) {\n\n\t\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// restrict phi to be between desired limits\n\t\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\t\tspherical.makeSafe();\n\n\n\t\t\t\t// move target to panned location\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t\t}\n\n\t\t\t\t// Limit the target distance from the cursor to create a sphere around the center of interest\n\t\t\t\tscope.target.sub( scope.cursor );\n\t\t\t\tscope.target.clampLength( scope.minTargetRadius, scope.maxTargetRadius );\n\t\t\t\tscope.target.add( scope.cursor );\n\n\t\t\t\t// adjust the camera position based on zoom only if we're not zooming to the cursor or if it's an ortho camera\n\t\t\t\t// we adjust zoom later in these cases\n\t\t\t\tif ( scope.zoomToCursor && performCursorZoom || scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\tspherical.radius = clampDistance( spherical.radius );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.radius = clampDistance( spherical.radius * scale );\n\n\t\t\t\t}\n\n\t\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t// adjust camera position\n\t\t\t\tlet zoomChanged = false;\n\t\t\t\tif ( scope.zoomToCursor && performCursorZoom ) {\n\n\t\t\t\t\tlet newRadius = null;\n\t\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t\t// move the camera down the pointer ray\n\t\t\t\t\t\t// this method avoids floating point error\n\t\t\t\t\t\tconst prevRadius = offset.length();\n\t\t\t\t\t\tnewRadius = clampDistance( prevRadius * scale );\n\n\t\t\t\t\t\tconst radiusDelta = prevRadius - newRadius;\n\t\t\t\t\t\tscope.object.position.addScaledVector( dollyDirection, radiusDelta );\n\t\t\t\t\t\tscope.object.updateMatrixWorld();\n\n\t\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\t\t// adjust the ortho camera position based on zoom changes\n\t\t\t\t\t\tconst mouseBefore = new Vector3( mouse.x, mouse.y, 0 );\n\t\t\t\t\t\tmouseBefore.unproject( scope.object );\n\n\t\t\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) );\n\t\t\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\t\t\tzoomChanged = true;\n\n\t\t\t\t\t\tconst mouseAfter = new Vector3( mouse.x, mouse.y, 0 );\n\t\t\t\t\t\tmouseAfter.unproject( scope.object );\n\n\t\t\t\t\t\tscope.object.position.sub( mouseAfter ).add( mouseBefore );\n\t\t\t\t\t\tscope.object.updateMatrixWorld();\n\n\t\t\t\t\t\tnewRadius = offset.length();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.' );\n\t\t\t\t\t\tscope.zoomToCursor = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// handle the placement of the target\n\t\t\t\t\tif ( newRadius !== null ) {\n\n\t\t\t\t\t\tif ( this.screenSpacePanning ) {\n\n\t\t\t\t\t\t\t// position the orbit target in front of the new camera position\n\t\t\t\t\t\t\tscope.target.set( 0, 0, - 1 )\n\t\t\t\t\t\t\t\t.transformDirection( scope.object.matrix )\n\t\t\t\t\t\t\t\t.multiplyScalar( newRadius )\n\t\t\t\t\t\t\t\t.add( scope.object.position );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// get the ray and translation plane to compute target\n\t\t\t\t\t\t\t_ray.origin.copy( scope.object.position );\n\t\t\t\t\t\t\t_ray.direction.set( 0, 0, - 1 ).transformDirection( scope.object.matrix );\n\n\t\t\t\t\t\t\t// if the camera is 20 degrees above the horizon then don't adjust the focus target to avoid\n\t\t\t\t\t\t\t// extremely large values\n\t\t\t\t\t\t\tif ( Math.abs( scope.object.up.dot( _ray.direction ) ) < TILT_LIMIT ) {\n\n\t\t\t\t\t\t\t\tobject.lookAt( scope.target );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t_plane.setFromNormalAndCoplanarPoint( scope.object.up, scope.target );\n\t\t\t\t\t\t\t\t_ray.intersectPlane( _plane, scope.target );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) );\n\t\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\t\tzoomChanged = true;\n\n\t\t\t\t}\n\n\t\t\t\tscale = 1;\n\t\t\t\tperformCursorZoom = false;\n\n\t\t\t\t// update condition is:\n\t\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\t\tif ( zoomChanged ||\n\t\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ||\n\t\t\t\t\tlastTargetPosition.distanceToSquared( scope.target ) > 0 ) {\n\n\t\t\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\t\tlastTargetPosition.copy( scope.target );\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t};\n\n\t\t}();\n\n\t\tthis.dispose = function () {\n\n\t\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu );\n\n\t\t\tscope.domElement.removeEventListener( 'pointerdown', onPointerDown );\n\t\t\tscope.domElement.removeEventListener( 'pointercancel', onPointerUp );\n\t\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel );\n\n\t\t\tscope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t\tscope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\n\t\t\tif ( scope._domElementKeyEvents !== null ) {\n\n\t\t\t\tscope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\t\t\t\tscope._domElementKeyEvents = null;\n\n\t\t\t}\n\n\t\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t\t};\n\n\t\t//\n\t\t// internals\n\t\t//\n\n\t\tconst scope = this;\n\n\t\tconst STATE = {\n\t\t\tNONE: - 1,\n\t\t\tROTATE: 0,\n\t\t\tDOLLY: 1,\n\t\t\tPAN: 2,\n\t\t\tTOUCH_ROTATE: 3,\n\t\t\tTOUCH_PAN: 4,\n\t\t\tTOUCH_DOLLY_PAN: 5,\n\t\t\tTOUCH_DOLLY_ROTATE: 6\n\t\t};\n\n\t\tlet state = STATE.NONE;\n\n\t\tconst EPS = 0.000001;\n\n\t\t// current position in spherical coordinates\n\t\tconst spherical = new Spherical();\n\t\tconst sphericalDelta = new Spherical();\n\n\t\tlet scale = 1;\n\t\tconst panOffset = new Vector3();\n\n\t\tconst rotateStart = new Vector2();\n\t\tconst rotateEnd = new Vector2();\n\t\tconst rotateDelta = new Vector2();\n\n\t\tconst panStart = new Vector2();\n\t\tconst panEnd = new Vector2();\n\t\tconst panDelta = new Vector2();\n\n\t\tconst dollyStart = new Vector2();\n\t\tconst dollyEnd = new Vector2();\n\t\tconst dollyDelta = new Vector2();\n\n\t\tconst dollyDirection = new Vector3();\n\t\tconst mouse = new Vector2();\n\t\tlet performCursorZoom = false;\n\n\t\tconst pointers = [];\n\t\tconst pointerPositions = {};\n\n\t\tlet controlActive = false;\n\n\t\tfunction getAutoRotationAngle( deltaTime ) {\n\n\t\t\tif ( deltaTime !== null ) {\n\n\t\t\t\treturn ( 2 * Math.PI / 60 * scope.autoRotateSpeed ) * deltaTime;\n\n\t\t\t} else {\n\n\t\t\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getZoomScale( delta ) {\n\n\t\t\tconst normalizedDelta = Math.abs( delta * 0.01 );\n\t\t\treturn Math.pow( 0.95, scope.zoomSpeed * normalizedDelta );\n\n\t\t}\n\n\t\tfunction rotateLeft( angle ) {\n\n\t\t\tsphericalDelta.theta -= angle;\n\n\t\t}\n\n\t\tfunction rotateUp( angle ) {\n\n\t\t\tsphericalDelta.phi -= angle;\n\n\t\t}\n\n\t\tconst panLeft = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\t\tv.multiplyScalar( - distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\tconst panUp = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t\t}\n\n\t\t\t\tv.multiplyScalar( distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\t// deltaX and deltaY are in pixels; right and down are positive\n\t\tconst pan = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\t\tconst element = scope.domElement;\n\n\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t// perspective\n\t\t\t\t\tconst position = scope.object.position;\n\t\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\t\tlet targetDistance = offset.length();\n\n\t\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\t// orthographic\n\t\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\t\tscope.enablePan = false;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}();\n\n\t\tfunction dollyOut( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscale /= dollyScale;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction dollyIn( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscale *= dollyScale;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction updateZoomParameters( x, y ) {\n\n\t\t\tif ( ! scope.zoomToCursor ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tperformCursorZoom = true;\n\n\t\t\tconst rect = scope.domElement.getBoundingClientRect();\n\t\t\tconst dx = x - rect.left;\n\t\t\tconst dy = y - rect.top;\n\t\t\tconst w = rect.width;\n\t\t\tconst h = rect.height;\n\n\t\t\tmouse.x = ( dx / w ) * 2 - 1;\n\t\t\tmouse.y = - ( dy / h ) * 2 + 1;\n\n\t\t\tdollyDirection.set( mouse.x, mouse.y, 1 ).unproject( scope.object ).sub( scope.object.position ).normalize();\n\n\t\t}\n\n\t\tfunction clampDistance( dist ) {\n\n\t\t\treturn Math.max( scope.minDistance, Math.min( scope.maxDistance, dist ) );\n\n\t\t}\n\n\t\t//\n\t\t// event callbacks - update the object state\n\t\t//\n\n\t\tfunction handleMouseDownRotate( event ) {\n\n\t\t\trotateStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownDolly( event ) {\n\n\t\t\tupdateZoomParameters( event.clientX, event.clientX );\n\t\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownPan( event ) {\n\n\t\t\tpanStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseMoveRotate( event ) {\n\n\t\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMoveDolly( event ) {\n\n\t\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale( dollyDelta.y ) );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale( dollyDelta.y ) );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMovePan( event ) {\n\n\t\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseWheel( event ) {\n\n\t\t\tupdateZoomParameters( event.clientX, event.clientY );\n\n\t\t\tif ( event.deltaY < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale( event.deltaY ) );\n\n\t\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale( event.deltaY ) );\n\n\t\t\t}\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleKeyDown( event ) {\n\n\t\t\tlet needsUpdate = false;\n\n\t\t\tswitch ( event.code ) {\n\n\t\t\t\tcase scope.keys.UP:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateUp( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( 0, scope.keyPanSpeed );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.BOTTOM:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateUp( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.LEFT:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateLeft( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.RIGHT:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateLeft( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tscope.update();\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tfunction handleTouchStartRotate( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\trotateStart.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\trotateStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartPan( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanStart.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\tpanStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartDolly( event ) {\n\n\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\tconst dx = event.pageX - position.x;\n\t\t\tconst dy = event.pageY - position.y;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyStart.set( 0, distance );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveRotate( event ) {\n\n\t\t\tif ( pointers.length == 1 ) {\n\n\t\t\t\trotateEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\trotateEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMovePan( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\tpanEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDolly( event ) {\n\n\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\tconst dx = event.pageX - position.x;\n\t\t\tconst dy = event.pageY - position.y;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyEnd.set( 0, distance );\n\n\t\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\t\tdollyOut( dollyDelta.y );\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tconst centerX = ( event.pageX + position.x ) * 0.5;\n\t\t\tconst centerY = ( event.pageY + position.y ) * 0.5;\n\n\t\t\tupdateZoomParameters( centerX, centerY );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t\t}\n\n\t\t//\n\t\t// event handlers - FSM: listen for events and reset state\n\t\t//\n\n\t\tfunction onPointerDown( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( pointers.length === 0 ) {\n\n\t\t\t\tscope.domElement.setPointerCapture( event.pointerId );\n\n\t\t\t\tscope.domElement.addEventListener( 'pointermove', onPointerMove );\n\t\t\t\tscope.domElement.addEventListener( 'pointerup', onPointerUp );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\taddPointer( event );\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchStart( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseDown( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchMove( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseMove( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerUp( event ) {\n\n\t\t\tremovePointer( event );\n\n\t\t\tif ( pointers.length === 0 ) {\n\n\t\t\t\tscope.domElement.releasePointerCapture( event.pointerId );\n\n\t\t\t\tscope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t\t\tscope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\t\t\t}\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onMouseDown( event ) {\n\n\t\t\tlet mouseAction;\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase 0:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tmouseAction = - 1;\n\n\t\t\t}\n\n\t\t\tswitch ( mouseAction ) {\n\n\t\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.PAN:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseMove( event ) {\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseWheel( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\thandleMouseWheel( customWheelEvent( event ) );\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t}\n\n\t\tfunction customWheelEvent( event ) {\n\n\t\t\tconst mode = event.deltaMode;\n\n\t\t\t// minimal wheel event altered to meet delta-zoom demand\n\t\t\tconst newEvent = {\n\t\t\t\tclientX: event.clientX,\n\t\t\t\tclientY: event.clientY,\n\t\t\t\tdeltaY: event.deltaY,\n\t\t\t}\n\n\t\t\tswitch ( mode ) {\n\n\t\t\t\tcase 1: // LINE_MODE\n\t\t\t\t\tnewEvent.deltaY *= 16;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2: // PAGE_MODE\n\t\t\t\t\tnewEvent.deltaY *= 100;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\t// detect if event was triggered by pinching\n\t\t\tif ( event.ctrlKey && !controlActive ) {\n\n\t\t\t\tnewEvent.deltaY *= 10;\n\n\t\t\t}\n\n\t\t\treturn newEvent;\n\n\t\t}\n\n\t\tfunction interceptControlDown( event ) {\n\n\t\t\tif ( event.key === \"Control\" ) {\n\n\t\t\t\tcontrolActive = true;\n\t\t\t\t\n\t\t\t\tdocument.addEventListener('keyup', interceptControlUp, { passive: true, capture: true });\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction interceptControlUp( event ) {\n\n\t\t\tif ( event.key === \"Control\" ) {\n\n\t\t\t\tcontrolActive = false;\n\t\t\t\t\n\t\t\t\tdocument.removeEventListener('keyup', interceptControlUp, { passive: true, capture: true });\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enablePan === false ) return;\n\n\t\t\thandleKeyDown( event );\n\n\t\t}\n\n\t\tfunction onTouchStart( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( pointers.length ) {\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchMove( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onContextMenu( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t}\n\n\t\tfunction addPointer( event ) {\n\n\t\t\tpointers.push( event.pointerId );\n\n\t\t}\n\n\t\tfunction removePointer( event ) {\n\n\t\t\tdelete pointerPositions[ event.pointerId ];\n\n\t\t\tfor ( let i = 0; i < pointers.length; i ++ ) {\n\n\t\t\t\tif ( pointers[ i ] == event.pointerId ) {\n\n\t\t\t\t\tpointers.splice( i, 1 );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction trackPointer( event ) {\n\n\t\t\tlet position = pointerPositions[ event.pointerId ];\n\n\t\t\tif ( position === undefined ) {\n\n\t\t\t\tposition = new Vector2();\n\t\t\t\tpointerPositions[ event.pointerId ] = position;\n\n\t\t\t}\n\n\t\t\tposition.set( event.pageX, event.pageY );\n\n\t\t}\n\n\t\tfunction getSecondPointerPosition( event ) {\n\n\t\t\tconst pointerId = ( event.pointerId === pointers[ 0 ] ) ? pointers[ 1 ] : pointers[ 0 ];\n\n\t\t\treturn pointerPositions[ pointerId ];\n\n\t\t}\n\n\t\t//\n\n\t\tscope.domElement.addEventListener( 'contextmenu', onContextMenu );\n\n\t\tscope.domElement.addEventListener( 'pointerdown', onPointerDown );\n\t\tscope.domElement.addEventListener( 'pointercancel', onPointerUp );\n\t\tscope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } );\n\n\t\tdocument.addEventListener( 'keydown', interceptControlDown, { passive: true, capture: true } );\n\n\t\t// force an update at start\n\n\t\tthis.update();\n\n\t}\n\n}\n\nexport { OrbitControls };","import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent, CSSProperties } from 'react';\nimport * as THREE from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\nimport styles from './styles.module.css';\nimport type { GlitchComponentProps } from './types';\n\nconst BASE_LATTICE_SPAN = 24;\nconst DEFAULT_CAMERA_POSITION = new THREE.Vector3(20, 20, 20);\nconst DEFAULT_CAMERA_TARGET = new THREE.Vector3(0, 0, 0);\nconst RESET_DELAY_MS = 5000;\nconst SCENE_BACKGROUND = '#f2f0ea';\n\ninterface ComponentParams {\n gridSize?: number;\n majorRadius?: number;\n minorRadius?: number;\n}\n\ninterface FrameMetrics {\n layout: 'landscape' | 'portrait';\n width: number;\n height: number;\n}\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\n\nconst getParamNumber = (value: unknown, fallback: number, min: number, max: number, step = 1) => {\n if (typeof value !== 'number' || Number.isNaN(value)) return fallback;\n const stepped = Math.round(value / step) * step;\n return clamp(stepped, min, max);\n};\n\nfunction setupLights(targetScene: THREE.Scene) {\n const ambientLight = new THREE.AmbientLight(0xffffff, 0.65);\n targetScene.add(ambientLight);\n\n const directionalLight = new THREE.DirectionalLight(0xffffff, 1.1);\n directionalLight.position.set(20, 50, 20);\n directionalLight.castShadow = true;\n directionalLight.shadow.mapSize.width = 2048;\n directionalLight.shadow.mapSize.height = 2048;\n targetScene.add(directionalLight);\n\n const coolLight = new THREE.PointLight(0x3b82f6, 1.1, 50);\n coolLight.position.set(-10, 10, -10);\n targetScene.add(coolLight);\n\n const warmLight = new THREE.PointLight(0xff7a59, 0.9, 50);\n warmLight.position.set(10, -10, 10);\n targetScene.add(warmLight);\n}\n\nfunction disposeMaterial(material: THREE.Material | THREE.Material[]) {\n if (Array.isArray(material)) {\n material.forEach((item) => item.dispose());\n return;\n }\n\n material.dispose();\n}\n\nfunction disposeScene(scene: THREE.Scene) {\n scene.traverse((object) => {\n const mesh = object as THREE.Object3D & {\n geometry?: THREE.BufferGeometry;\n material?: THREE.Material | THREE.Material[];\n };\n\n if (mesh.geometry) {\n mesh.geometry.dispose();\n }\n\n if (mesh.material) {\n disposeMaterial(mesh.material);\n }\n });\n}\n\nexport default function Component({\n config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const params = (config.params ?? {}) as ComponentParams;\n const gridSize = getParamNumber(params.gridSize, 24, 12, 80, 1);\n const majorRadius = getParamNumber(params.majorRadius, 8, 4, 10, 0.5);\n const minorRadius = getParamNumber(params.minorRadius, 3, 1, 5, 0.25);\n\n const [resolution, setResolution] = useState(gridSize);\n const [frame, setFrame] = useState({\n layout: 'landscape',\n width: 0,\n height: 0\n });\n\n const wrapperRef = useRef(null);\n const canvasContainerRef = useRef(null);\n const completedRef = useRef(false);\n\n useEffect(() => {\n const wrapperNode = wrapperRef.current;\n if (!wrapperNode) return;\n\n const updateFrame = () => {\n const availableWidth = wrapperNode.clientWidth;\n const availableHeight = wrapperNode.clientHeight;\n\n if (!availableWidth || !availableHeight) return;\n\n const layout = availableWidth >= availableHeight ? 'landscape' : 'portrait';\n let width = availableWidth;\n let height = availableHeight;\n\n if (layout === 'landscape') {\n height = Math.min(availableHeight, availableWidth * (9 / 16));\n width = height * (16 / 9);\n } else {\n width = Math.min(availableWidth, availableHeight / 2);\n height = width * 2;\n }\n\n setFrame({\n layout,\n width,\n height\n });\n };\n\n const resizeObserver = new ResizeObserver(updateFrame);\n resizeObserver.observe(wrapperNode);\n updateFrame();\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n setResolution(gridSize);\n completedRef.current = false;\n }, [config.id, gridSize, majorRadius, minorRadius]);\n\n const latticeSpan = useMemo(\n () => Math.max(BASE_LATTICE_SPAN, (majorRadius + minorRadius + 1.5) * 2),\n [majorRadius, minorRadius]\n );\n const voxelSize = useMemo(() => latticeSpan / resolution, [latticeSpan, resolution]);\n\n useEffect(() => {\n onProgress?.(resolution === gridSize ? 0 : 100);\n }, [gridSize, onProgress, resolution]);\n\n useEffect(() => {\n if (resolution === gridSize || completedRef.current) return;\n\n completedRef.current = true;\n onComplete({\n success: true,\n score: 100,\n data: {\n configId: config.id,\n completedAt: new Date().toISOString(),\n params: {\n gridSize: resolution,\n majorRadius,\n minorRadius\n }\n }\n });\n }, [config.id, gridSize, majorRadius, minorRadius, onComplete, resolution]);\n\n useEffect(() => {\n const mountNode = canvasContainerRef.current;\n if (!mountNode) return;\n\n const sceneContinuous = new THREE.Scene();\n const sceneDiscrete = new THREE.Scene();\n const backgroundColor = new THREE.Color(SCENE_BACKGROUND);\n\n sceneContinuous.background = backgroundColor;\n sceneContinuous.fog = new THREE.FogExp2(SCENE_BACKGROUND, 0.02);\n sceneDiscrete.background = backgroundColor;\n sceneDiscrete.fog = new THREE.FogExp2(SCENE_BACKGROUND, 0.02);\n\n setupLights(sceneContinuous);\n setupLights(sceneDiscrete);\n\n const camera = new THREE.PerspectiveCamera(45, 1, 0.1, 1000);\n camera.position.copy(DEFAULT_CAMERA_POSITION);\n\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = THREE.PCFSoftShadowMap;\n renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\n renderer.setScissorTest(true);\n mountNode.appendChild(renderer.domElement);\n\n const controls = new OrbitControls(camera, renderer.domElement);\n controls.enableDamping = true;\n controls.dampingFactor = 0.05;\n controls.minDistance = 5;\n controls.maxDistance = 100;\n controls.target.copy(DEFAULT_CAMERA_TARGET);\n\n const torusGeometry = new THREE.TorusGeometry(majorRadius, minorRadius, 64, 128);\n const torusMaterial = new THREE.MeshStandardMaterial({\n color: 0x3b82f6,\n roughness: 0.22,\n metalness: 0.1\n });\n const torusMesh = new THREE.Mesh(torusGeometry, torusMaterial);\n torusMesh.castShadow = true;\n torusMesh.receiveShadow = true;\n torusMesh.rotation.x = -Math.PI / 2;\n sceneContinuous.add(torusMesh);\n\n const voxelGap = voxelSize * 0.12;\n const voxelEdge = Math.max(voxelSize - voxelGap, voxelSize * 0.2);\n const voxelGeometry = new THREE.BoxGeometry(voxelEdge, voxelEdge, voxelEdge);\n const solidMaterial = new THREE.MeshStandardMaterial({\n color: 0x3b82f6,\n roughness: 0.22,\n metalness: 0.1\n });\n const emptyMaterial = new THREE.MeshBasicMaterial({\n color: 0x000000,\n transparent: true,\n opacity: 0.08,\n wireframe: true\n });\n\n const totalVoxels = Math.pow(resolution, 3);\n const solidMesh = new THREE.InstancedMesh(voxelGeometry, solidMaterial, totalVoxels);\n const emptyMesh = new THREE.InstancedMesh(voxelGeometry, emptyMaterial, totalVoxels);\n const voxelOffset = ((resolution - 1) * voxelSize) / 2;\n const dummy = new THREE.Object3D();\n\n solidMesh.castShadow = true;\n solidMesh.receiveShadow = true;\n sceneDiscrete.add(solidMesh);\n sceneDiscrete.add(emptyMesh);\n\n let solidCount = 0;\n let emptyCount = 0;\n\n for (let x = 0; x < resolution; x += 1) {\n for (let y = 0; y < resolution; y += 1) {\n for (let z = 0; z < resolution; z += 1) {\n const px = x * voxelSize - voxelOffset;\n const py = y * voxelSize - voxelOffset;\n const pz = z * voxelSize - voxelOffset;\n const distHorizontal = Math.sqrt(px * px + pz * pz) - majorRadius;\n const distSquared = distHorizontal * distHorizontal + py * py;\n const isSolid = distSquared < minorRadius * minorRadius;\n\n dummy.position.set(px, py, pz);\n dummy.updateMatrix();\n\n if (isSolid) {\n solidMesh.setMatrixAt(solidCount, dummy.matrix);\n const color = new THREE.Color();\n const hue = 0.52 + (py / Math.max(resolution, 1)) * 0.18;\n color.setHSL(hue, 0.78, 0.52);\n solidMesh.setColorAt(solidCount, color);\n solidCount += 1;\n continue;\n }\n\n emptyMesh.setMatrixAt(emptyCount, dummy.matrix);\n emptyCount += 1;\n }\n }\n }\n\n solidMesh.count = solidCount;\n emptyMesh.count = emptyCount;\n solidMesh.instanceMatrix.needsUpdate = true;\n emptyMesh.instanceMatrix.needsUpdate = true;\n if (solidMesh.instanceColor) {\n solidMesh.instanceColor.needsUpdate = true;\n }\n\n const targetCameraPosition = DEFAULT_CAMERA_POSITION.clone();\n const targetControlsPosition = DEFAULT_CAMERA_TARGET.clone();\n let animateCamera = false;\n let resetTimer: number | null = null;\n let width = 0;\n let height = 0;\n\n const resize = () => {\n width = mountNode.clientWidth;\n height = mountNode.clientHeight;\n\n if (!width || !height) return;\n\n camera.aspect = 1;\n camera.updateProjectionMatrix();\n renderer.setSize(width, height, false);\n };\n\n const resizeObserver = new ResizeObserver(resize);\n resizeObserver.observe(mountNode);\n resize();\n\n const handleControlsStart = () => {\n animateCamera = false;\n if (resetTimer !== null) {\n window.clearTimeout(resetTimer);\n resetTimer = null;\n }\n };\n\n const handleControlsEnd = () => {\n resetTimer = window.setTimeout(() => {\n animateCamera = true;\n }, RESET_DELAY_MS);\n };\n\n controls.addEventListener('start', handleControlsStart);\n controls.addEventListener('end', handleControlsEnd);\n\n let animationFrame = 0;\n\n const renderFrame = () => {\n animationFrame = window.requestAnimationFrame(renderFrame);\n\n if (animateCamera) {\n camera.position.lerp(targetCameraPosition, 0.05);\n controls.target.lerp(targetControlsPosition, 0.05);\n\n if (\n camera.position.distanceTo(targetCameraPosition) < 0.1 &&\n controls.target.distanceTo(targetControlsPosition) < 0.1\n ) {\n animateCamera = false;\n }\n }\n\n torusMesh.rotation.z += 0.002;\n solidMesh.rotation.y += 0.002;\n emptyMesh.rotation.y += 0.002;\n emptyMesh.visible = false;\n\n controls.update();\n\n if (!width || !height) return;\n\n const isLandscape = width >= height;\n const squareSize = isLandscape ? Math.min(width / 2, height) : Math.min(width, height / 2);\n const startX = isLandscape ? (width - squareSize * 2) / 2 : (width - squareSize) / 2;\n const startY = isLandscape ? (height - squareSize) / 2 : (height - squareSize * 2) / 2;\n\n const continuousX = startX;\n const continuousY = isLandscape ? startY : startY + squareSize;\n const discreteX = isLandscape ? startX + squareSize : startX;\n const discreteY = startY;\n\n renderer.setScissor(continuousX, continuousY, squareSize, squareSize);\n renderer.setViewport(continuousX, continuousY, squareSize, squareSize);\n renderer.render(sceneContinuous, camera);\n\n renderer.setScissor(discreteX, discreteY, squareSize, squareSize);\n renderer.setViewport(discreteX, discreteY, squareSize, squareSize);\n renderer.render(sceneDiscrete, camera);\n };\n\n renderFrame();\n\n return () => {\n window.cancelAnimationFrame(animationFrame);\n if (resetTimer !== null) {\n window.clearTimeout(resetTimer);\n }\n resizeObserver.disconnect();\n controls.removeEventListener('start', handleControlsStart);\n controls.removeEventListener('end', handleControlsEnd);\n controls.dispose();\n renderer.dispose();\n disposeScene(sceneContinuous);\n disposeScene(sceneDiscrete);\n mountNode.removeChild(renderer.domElement);\n };\n }, [majorRadius, minorRadius, resolution, voxelSize]);\n\n const cssVars = useMemo(\n () =>\n ({\n '--gc-primary': theme?.primary ?? 'var(--color-primary, #45c4b0)',\n '--gc-accent': theme?.accent ?? 'var(--color-accent, #ff7a59)',\n '--gc-bg': theme?.bg ?? 'var(--color-bg, #0d1117)',\n '--gc-bg-secondary': theme?.bgSecondary ?? 'var(--color-bg-secondary, #182237)',\n '--gc-text': theme?.text ?? 'var(--color-text, #f1f4ef)',\n '--gc-text-muted': theme?.textMuted ?? 'var(--color-text-muted, #b6c0d4)',\n '--gc-border': theme?.border ?? 'var(--color-border, #34516f)'\n }) as CSSProperties,\n [theme]\n );\n\n const handleResolutionChange = (event: ChangeEvent) => {\n setResolution(Number(event.target.value));\n };\n\n return (\n
\n \n
\n
\n
Continuous
\n
Discrete
\n
\n
\n \n
\n
\n
\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'voxel_universe',\n displayName: 'Voxel Universe',\n version: '1.0.0',\n paramSchema: {\n gridSize: {\n type: 'range',\n label: 'Voxel Resolution',\n description: 'How many voxels are used per axis. Higher values make each voxel smaller.',\n default: 24,\n min: 12,\n max: 80,\n step: 1\n },\n majorRadius: {\n type: 'range',\n label: 'Major Radius',\n description: 'Overall radius of the torus shape.',\n default: 8,\n min: 4,\n max: 10,\n step: 0.5\n },\n minorRadius: {\n type: 'range',\n label: 'Minor Radius',\n description: 'Thickness of the torus ring.',\n default: 3,\n min: 1,\n max: 5,\n step: 0.25\n }\n },\n defaultParams: {\n gridSize: 24,\n majorRadius: 8,\n minorRadius: 3\n }\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n GlitchTheme,\n GlitchComponentMetadata\n} from './types';\n"],"names":["REVISION","MOUSE","TOUCH","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","ConstantColorFactor","OneMinusConstantColorFactor","ConstantAlphaFactor","OneMinusConstantAlphaFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","AgXToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedInt248Type","AlphaFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","RGB_BPTC_SIGNED_Format","RGB_BPTC_UNSIGNED_Format","RED_RGTC1_Format","SIGNED_RED_RGTC1_Format","RED_GREEN_RGTC2_Format","SIGNED_RED_GREEN_RGTC2_Format","LinearEncoding","sRGBEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","NoColorSpace","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","LinearTransfer","SRGBTransfer","Rec709Primaries","P3Primaries","KeepStencilOp","AlwaysStencilFunc","NeverCompare","LessCompare","EqualCompare","LessEqualCompare","GreaterCompare","NotEqualCompare","GreaterEqualCompare","AlwaysCompare","StaticDrawUsage","GLSL3","_SRGBAFormat","WebGLCoordinateSystem","WebGPUCoordinateSystem","EventDispatcher","type","listener","listeners","listenerArray","index","event","array","i","l","_lut","DEG2RAD","RAD2DEG","generateUUID","d0","d1","d2","d3","clamp","value","min","max","euclideanModulo","n","m","lerp","x","y","isPowerOfTwo","floorPowerOfTwo","denormalize","normalize","MathUtils","Vector2","scalar","v","s","a","b","e","minVal","maxVal","length","denominator","theta","dx","dy","alpha","v1","v2","offset","attribute","center","angle","c","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","xAxis","yAxis","zAxis","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","d","f","g","h","t11","t12","t13","det","detInv","tmp","matrix4","r","tx","ty","sx","sy","rotation","cx","cy","_m3","matrix","arrayNeedsUint32","createElementNS","name","createCanvasElement","canvas","_cache","warnOnce","message","LINEAR_SRGB_TO_LINEAR_DISPLAY_P3","LINEAR_DISPLAY_P3_TO_LINEAR_SRGB","COLOR_SPACES","color","SUPPORTED_WORKING_COLOR_SPACES","ColorManagement","colorSpace","sourceColorSpace","targetColorSpace","sourceToReference","targetFromReference","SRGBToLinear","LinearToSRGB","_canvas","ImageUtils","image","context","imageData","data","_sourceId","Source","meta","isRootObject","output","url","serializeImage","_textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","source","uv","encoding","Vector4","z","w","q","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","RenderTarget","width","height","options","depth","WebGLRenderTarget","DataArrayTexture","Data3DTexture","Quaternion","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","t","x0","y0","z0","w0","x1","y1","z1","w1","cos","dir","sqrSin","sin","len","tDir","quaternion","euler","update","order","c1","c2","c3","s1","s2","s3","axis","halfAngle","trace","vFrom","vTo","step","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","qa","u1","sqrt1u1","sqrtu1","u2","u3","callback","Vector3","_quaternion$4","vx","vy","vz","qx","qy","qz","qw","tz","camera","ax","ay","az","bx","by","bz","planeNormal","_vector$c","normal","dz","radius","phi","sinPhiRadius","sz","u","Box3","il","_vector$b","points","size","halfSize","object","precise","box","target","point","vector","geometry","positionAttribute","_box$4","children","sphere","plane","triangle","_center","_extents","_v0$2","_v1$7","_v2$4","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","_points","_testAxis","v0","extents","j","p0","p1","p2","_box$3","_v1$6","_v2$3","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","lengthSq","delta","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","directionDistance","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","b1","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","backfaceCulling","DdN","sign","DdQxE2","DdE1xQ","QdN","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","_zero","_one","eye","up","_z","_x","_y","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","position","scale","x2","y2","z2","wx","wy","wz","_m1$2","invSX","invSY","invSZ","left","right","top","bottom","near","far","coordinateSystem","p","zInv","_matrix$1","_quaternion$3","Euler","newOrder","Layers","channel","layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","onRotationChange","onQuaternionChange","distance","parent","id","result","force","child","updateParents","updateChildren","bound","serialize","library","element","parameters","shapes","shape","uuids","animation","geometries","extractFromCache","materials","textures","images","skeletons","animations","nodes","cache","values","key","recursive","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","warnedGetUV","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","p3","uv1","uv2","uv3","v3","i0","i1","i2","d4","vc","d5","d6","vb","va","_colorKeywords","_hslA","_hslB","hue2rgb","Color","hex","style","handleAlpha","string","components","_color","hue","saturation","lightness","color1","color2","_materialId","Material","newValue","currentValue","srcPlanes","dstPlanes","MeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","normalized","start","count","index1","index2","component","Uint16BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","_id$2","_m1","_obj","_offset","_box$2","_boxMorphTargets","_vector$8","BufferGeometry","materialIndex","normalMatrix","tangent","morphAttributesPosition","morphAttribute","morphTargetsRelative","jl","attributes","indices","positions","normals","uvs","nVertices","tangents","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","groups","group","tmp2","n2","handleVertex","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","convertBufferAttribute","array2","geometry2","newAttribute","morphAttributes","morphArray","hasMorphAttributes","attributeArray","boundingSphere","boundingBox","_inverseMatrix$3","_ray$3","_sphere$6","_sphereHitAt","_vA$1","_vB$1","_vC$1","_tempA","_morphA","_uvA$1","_uvB$1","_uvC$1","_normalA","_normalB","_normalC","_intersectionPoint","_intersectionPointWorld","Mesh","material","keys","ml","morphPosition","morphInfluences","influence","raycaster","intersects","matrixWorld","rayLocalSpace","intersection","drawRange","groupMaterial","end","checkGeometryIntersection","checkIntersection","intersect","face","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","iy","ix","cloneUniforms","src","property","mergeUniforms","uniforms","merged","cloneUniformsGroups","getUnlitUniformColorSpace","renderer","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","extensions","Camera","PerspectiveCamera","fov","aspect","focalLength","vExtentSlope","fullWidth","fullHeight","view","skew","CubeCamera","renderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","cameras","scene","activeMipmapLevel","currentRenderTarget","currentActiveCubeFace","currentActiveMipmapLevel","currentXrEnabled","generateMipmaps","CubeTexture","WebGLCubeRenderTarget","texture","shader","mesh","currentMinFilter","stencil","_vector1","_vector2","_normalMatrix","Plane","constant","inverseNormalLength","line","startSign","endSign","optionalNormalMatrix","referencePoint","_sphere$5","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","WebGLAttributes","gl","capabilities","isWebGL2","buffers","createBuffer","bufferType","usage","buffer","updateBuffer","updateRange","updateRanges","range","get","remove","cached","PlaneGeometry","width_half","height_half","segment_width","segment_height","alphahash_fragment","alphahash_pars_fragment","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","batching_pars_vertex","batching_vertex","begin_vertex","beginnormal_vertex","bsdfs","iridescence_fragment","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","colorspace_fragment","colorspace_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_fragment","lights_lambert_pars_fragment","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","iridescence_pars_fragment","opaque_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","worldpos_vertex","vertex$h","fragment$h","vertex$g","fragment$g","vertex$f","fragment$f","vertex$e","fragment$e","vertex$d","fragment$d","vertex$c","fragment$c","vertex$b","fragment$b","vertex$a","fragment$a","vertex$9","fragment$9","vertex$8","fragment$8","vertex$7","fragment$7","vertex$6","fragment$6","vertex$5","fragment$5","vertex$4","fragment$4","vertex$3","fragment$3","vertex$2","fragment$2","vertex$1","fragment$1","ShaderChunk","UniformsLib","ShaderLib","_rgb","WebGLBackground","cubemaps","cubeuvmaps","state","objects","premultipliedAlpha","clearColor","clearAlpha","planeMesh","boxMesh","currentBackground","currentBackgroundVersion","currentTonemapping","render","renderList","forceClear","background","setClear","environmentBlendMode","WebGLBindingStates","maxVertexAttributes","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","forceUpdate","setup","program","updateBuffers","getBindingState","bindVertexArrayObject","needsUpdate","saveCache","wireframe","setupVertexAttributes","createVertexArrayObject","vao","deleteVertexArrayObject","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","attributesNum","programAttributes","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","disableUnusedAttributes","vertexAttribPointer","stride","integer","materialDefaultAttributeValues","programAttribute","bytesPerElement","dispose","reset","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","info","mode","setMode","renderInstances","primcount","methodName","renderMultiDraw","starts","counts","drawCount","elementCount","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","getMaxPrecision","precision","maxPrecision","drawBuffers","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","properties","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","enableLocalClipping","enabled","projectPlanes","useCache","clipIntersection","clipShadows","materialProperties","resetGlobalState","nGlobal","lGlobal","dstArray","skipTransform","nPlanes","flatSize","viewMatrix","i4","WebGLCubeMaps","mapTextureMapping","cubemap","onTextureDispose","OrthographicCamera","scaleW","scaleH","LOD_MIN","EXTRA_LOD_SIGMA","MAX_SAMPLES","_flatCamera","_clearColor","_oldTarget","_oldActiveCubeFace","_oldActiveMipmapLevel","PHI","INV_PHI","_axisDirections","PMREMGenerator","sigma","cubeUVRenderTarget","equirectangular","_getCubemapMaterial","_getEquirectMaterial","cubeSize","outputTarget","_setViewport","params","_createRenderTarget","_lodMax","_createPlanes","_getBlurShader","tmpMesh","cubeCamera","upSign","forwardSign","originalAutoClear","toneMapping","backgroundMaterial","backgroundBox","useSolidColor","col","isCubeTexture","autoClear","poleAxis","lodIn","lodOut","pingPongRenderTarget","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","samples","weights","sum","weight","outputSize","lodMax","lodPlanes","sizeLods","sigmas","lod","totalLods","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","faceIndex","coordinates","fill","_getCommonVertexShader","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","isEquirectMap","isCubeMap","isCubeTextureComplete","cubemapUV","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","updateWireframeAttribute","geometryIndex","geometryPosition","version","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","setIndex","WebGLInfo","memory","instanceCount","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","morphTextures","morph","workInfluences","objectInfluences","morphTargetsCount","entry","disposeTexture","hasMorphPosition","hasMorphNormals","hasMorphColors","morphTargets","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","morphInfluencesSum","morphBaseInfluence","influences","WebGLObjects","updateMap","buffergeometry","onInstancedMeshDispose","skeleton","instancedMesh","DepthTexture","emptyTexture","emptyShadowTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","setValueV1f","setValueV2f","setValueV3f","setValueV4f","setValueM2","elements","setValueM3","setValueM4","setValueV1i","setValueV2i","setValueV3i","setValueV4i","setValueV1ui","setValueV2ui","setValueV3ui","setValueV4ui","setValueT1","unit","emptyTexture2D","setValueT3D1","setValueT6","setValueT2DArray1","getSingularSetter","setValueV1fArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","getPureArraySetter","SingleUniform","activeInfo","addr","PureArrayUniform","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","match","matchEnd","idIsIndex","subscript","next","WebGLUniforms","WebGLShader","COMPLETION_STATUS_KHR","programIdCount","handleSource","errorLine","lines","lines2","from","to","getEncodingComponents","workingPrimaries","encodingPrimaries","gamutMapping","getShaderErrors","status","errors","errorMatches","getTexelEncodingFunction","functionName","getToneMappingFunction","toneMappingName","generateExtensions","filterEmptyLine","generateVertexExtensions","generateDefines","defines","chunks","fetchAttributeLocations","locationSize","replaceLightNums","numSpotLightCoords","replaceClippingPlaneNums","includePattern","resolveIncludes","includeReplacer","shaderChunkMap","include","newInclude","unrollLoopPattern","unrollLoops","loopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","generateEnvMapTypeDefine","envMapTypeDefine","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","generateCubeUVSize","imageHeight","maxMip","texelHeight","WebGLProgram","cacheKey","vertexShader","fragmentShader","envMapCubeUVSize","customExtensions","customVertexExtensions","customDefines","prefixVertex","prefixFragment","versionString","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","onFirstUse","self","programLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","cachedUniforms","programReady","_id$1","WebGLShaderCache","vertexShaderStage","fragmentShaderStage","materialShaders","shaderStage","set","code","stage","WebGLShaderStage","WebGLPrograms","clipping","_programLayers","_customShaders","programs","IS_WEBGL2","SUPPORTS_VERTEX_TEXTURES","shaderIDs","getChannel","getParameters","lights","shadows","fog","environment","envMap","envMapCubeUVHeight","shaderID","morphTextureStride","customVertexShaderID","customFragmentShaderID","IS_INSTANCEDMESH","IS_BATCHEDMESH","HAS_MAP","HAS_MATCAP","HAS_ENVMAP","HAS_AOMAP","HAS_LIGHTMAP","HAS_BUMPMAP","HAS_NORMALMAP","HAS_DISPLACEMENTMAP","HAS_EMISSIVEMAP","HAS_METALNESSMAP","HAS_ROUGHNESSMAP","HAS_ANISOTROPY","HAS_CLEARCOAT","HAS_IRIDESCENCE","HAS_SHEEN","HAS_TRANSMISSION","HAS_ANISOTROPYMAP","HAS_CLEARCOATMAP","HAS_CLEARCOAT_NORMALMAP","HAS_CLEARCOAT_ROUGHNESSMAP","HAS_IRIDESCENCEMAP","HAS_IRIDESCENCE_THICKNESSMAP","HAS_SHEEN_COLORMAP","HAS_SHEEN_ROUGHNESSMAP","HAS_SPECULARMAP","HAS_SPECULAR_COLORMAP","HAS_SPECULAR_INTENSITYMAP","HAS_TRANSMISSIONMAP","HAS_THICKNESSMAP","HAS_GRADIENTMAP","HAS_ALPHAMAP","HAS_ALPHATEST","HAS_ALPHAHASH","HAS_EXTENSIONS","HAS_ATTRIBUTE_UV1","HAS_ATTRIBUTE_UV2","HAS_ATTRIBUTE_UV3","getProgramCacheKey","getProgramCacheKeyParameters","getProgramCacheKeyBooleans","getUniforms","acquireProgram","pl","preexistingProgram","releaseProgram","releaseShaderCache","WebGLProperties","map","painterSortStable","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transmissive","transparent","init","getNextRenderItem","groupOrder","renderItem","push","unshift","sort","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","renderCallDepth","listArray","list","UniformsCache","light","ShadowUniformsCache","nextVersion","shadowCastingAndTexturingLightsFirst","lightA","lightB","WebGLLights","shadowCache","vector3","matrix42","useLegacyLights","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","numSpotMaps","numSpotShadowsWithMaps","numLightProbes","scaleFactor","intensity","shadowMap","shadow","shadowUniforms","hash","setupView","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","setupLightsView","WebGLRenderStates","renderStates","renderStateArray","renderState","MeshDepthMaterial","MeshDistanceMaterial","vertex","fragment","WebGLShadowMap","_renderer","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","shadowSide","shadowMaterialVertical","shadowMaterialHorizontal","fullScreenTri","fullScreenMesh","_previousType","activeCubeFace","_state","toVSM","fromVSM","shadowFrameExtents","pars","viewportCount","vp","viewport","renderObject","VSMPass","getDepthMaterial","customMaterial","keyA","keyB","materialsForVariant","cachedMaterial","onMaterialDispose","shadowCamera","k","kl","depthMaterial","uuid","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthTest","enable","disable","depthMask","depthFunc","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","stencilFail","stencilZFail","stencilZPass","colorBuffer","depthBuffer","stencilBuffer","uboBindings","uboProgramMap","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentBlendColor","currentBlendAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","dimensions","emptyTextures","setFlipSided","setCullFace","setBlending","bindFramebuffer","framebuffer","useProgram","equationToGL","factorToGL","blending","blendEquation","blendSrc","blendDst","blendEquationAlpha","blendSrcAlpha","blendDstAlpha","blendColor","blendAlpha","setMaterial","frontFaceCW","flipSided","stencilWrite","setPolygonOffset","cullFace","setLineWidth","polygonOffset","factor","setScissorTest","scissorTest","activeTexture","webglSlot","bindTexture","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","error","compressedTexImage3D","texSubImage2D","texSubImage3D","compressedTexSubImage2D","compressedTexSubImage3D","texStorage2D","texStorage3D","texImage2D","texImage3D","scissor","updateUBOMapping","uniformsGroup","blockIndex","uniformBlockBinding","WebGLTextures","_gl","utils","multisampledRTTExt","supportsInvalidateFramebuffer","_videoTextures","_sources","useOffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","floor","isPowerOfTwo$1","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","getInternalFormat","internalFormatName","glFormat","glType","forceLinearTransfer","internalFormat","transfer","getMipLevels","filterFallback","deallocateTexture","onRenderTargetDispose","deallocateRenderTarget","textureProperties","webglTextures","deleteTexture","renderTargetProperties","level","attachmentProperties","textureUnits","resetTextureUnits","allocateTextureUnit","textureUnit","getTextureCacheKey","setTexture2D","slot","updateVideoTexture","uploadTexture","setTexture2DArray","setTexture3D","setTextureCube","uploadCubeTexture","wrappingToGL","filterToGL","compareToGL","setTextureParameters","textureType","initTexture","forceUpload","textureCacheKey","sourceProperties","texturePrimaries","unpackConversion","verifyColorSpace","glInternalFormat","mipmap","mipmaps","useTexStorage","allocateMemory","levels","isCompressed","isDataTexture","cubeImage","mipmapImage","setupFrameBufferTexture","attachment","textureTarget","useMultisampledRTT","getRenderTargetSamples","setupRenderBufferStorage","renderbuffer","isMultisample","depthTexture","setupDepthTexture","webglDepthTexture","setupDepthRenderbuffer","isCube","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","glTextureType","updateRenderTargetMipmap","updateMultisampleRenderTarget","mask","invalidationArray","depthStyle","ignoreDepthValues","WebGLUtils","convert","ArrayCamera","Group","_moveEvent","WebXRController","inputSource","hand","inputjoint","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","jointPose","joint","indexTip","thumbTip","distanceToPinch","threshold","WebXRManager","session","framebufferScaleFactor","referenceSpaceType","foveation","customReferenceSpace","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","initialRenderTarget","newRenderTarget","controllers","controllerInputSources","currentSize","currentPixelRatio","cameraL","cameraR","cameraXR","_currentDepthNear","_currentDepthFar","controller","onSessionEvent","controllerIndex","onSessionEnd","onInputSourcesChange","space","layerInit","depthFormat","depthType","glDepthFormat","projectionlayerInit","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","updateUserCamera","onAnimationFrameCallback","views","cameraXRNeedsUpdate","glSubImage","WebGLMaterials","refreshTransformUniform","refreshFogUniforms","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","refreshUniformsCommon","refreshUniformsToon","refreshUniformsPhong","refreshUniformsStandard","refreshUniformsPhysical","refreshUniformsMatcap","refreshUniformsDistance","refreshUniformsLine","refreshUniformsDash","refreshUniformsPoints","refreshUniformsSprites","WebGLUniformsGroups","updateList","allocatedBindingPoints","maxBindingPoints","bind","webglProgram","prepareUniformsGroup","onUniformsGroupsDispose","updateBufferData","bindingPointIndex","allocateBindingPointIndex","uniformArray","hasUniformChanged","arrayOffset","getUniformSize","indexArray","indexString","cachedObject","chunkSize","chunkOffsetUniform","chunkOffset","WebGLRenderer","antialias","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","_alpha","uintClearColor","intClearColor","currentRenderList","currentRenderState","renderListStack","renderStateStack","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_currentClearColor","_currentClearAlpha","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","getTargetPixelRatio","getContext","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","onContextCreationError","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","uniformsGroups","initGLContext","xr","updateStyle","boolean","method","bits","isIntegerFormat","targetFormat","targetType","isUnsignedType","onXRSessionStart","onXRSessionEnd","infoAutoReset","shadowMapEnabled","shadowMapAutoUpdate","shadowMapNeedsUpdate","shadowMapType","deallocateMaterial","releaseMaterialProgramReferences","setProgram","rangeFactor","drawStart","drawEnd","lineWidth","maxInstanceCount","prepareMaterial","getProgram","targetScene","material2","resolve","checkMaterialsReady","projectObject","camera2","renderScene","sortObjects","opaqueObjects","transmissiveObjects","transparentObjects","renderTransmissionPass","renderObjects","currentToneMapping","renderTargetNeedsUpdate","currentSide","overrideMaterial","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","materialNeedsLights","getUniformList","progUniforms","vertexAlphas","vertexTangents","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","markUniformsLightsNeedsUpdate","defaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","__webglFramebuffer","layer","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","levelScale","srcTexture","dstTexture","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","WebGL1Renderer","FogExp2","density","Scene","InstancedBufferAttribute","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_box3","_identity","_mesh$1","_sphere$3","InstancedMesh","raycastTimes","instanceId","TorusGeometry","tube","radialSegments","tubularSegments","arc","MeshStandardMaterial","Light","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","shadowMatrix","viewportIndex","_lightPositionWorld","_lookTarget","PointLightShadow","PointLight","decay","power","DirectionalLightShadow","DirectionalLight","AmbientLight","Spherical","other","_changeEvent","_startEvent","_endEvent","_ray","_plane","TILT_LIMIT","OrbitControls","domElement","spherical","onKeyDown","STATE","quat","quatInverse","lastPosition","lastQuaternion","lastTargetPosition","twoPI","deltaTime","rotateLeft","getAutoRotationAngle","sphericalDelta","panOffset","performCursorZoom","clampDistance","zoomChanged","newRadius","prevRadius","radiusDelta","dollyDirection","mouseBefore","mouse","mouseAfter","EPS","onContextMenu","onPointerDown","onPointerUp","onMouseWheel","onPointerMove","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","pointers","pointerPositions","controlActive","getZoomScale","normalizedDelta","rotateUp","panLeft","objectMatrix","panUp","pan","deltaX","deltaY","targetDistance","dollyOut","dollyScale","dollyIn","updateZoomParameters","rect","dist","handleMouseDownRotate","handleMouseDownDolly","handleMouseDownPan","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","handleMouseWheel","handleKeyDown","handleTouchStartRotate","getSecondPointerPosition","handleTouchStartPan","handleTouchStartDolly","handleTouchStartDollyPan","handleTouchStartDollyRotate","handleTouchMoveRotate","handleTouchMovePan","handleTouchMoveDolly","centerX","centerY","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","addPointer","onTouchStart","onMouseDown","onTouchMove","onMouseMove","removePointer","mouseAction","customWheelEvent","newEvent","interceptControlDown","interceptControlUp","trackPointer","pointerId","BASE_LATTICE_SPAN","DEFAULT_CAMERA_POSITION","THREE.Vector3","DEFAULT_CAMERA_TARGET","RESET_DELAY_MS","SCENE_BACKGROUND","getParamNumber","fallback","stepped","ambientLight","THREE.AmbientLight","directionalLight","THREE.DirectionalLight","coolLight","THREE.PointLight","warmLight","disposeMaterial","item","disposeScene","Component","config","onComplete","onProgress","theme","className","gridSize","majorRadius","minorRadius","resolution","setResolution","useState","setFrame","wrapperRef","useRef","canvasContainerRef","completedRef","useEffect","wrapperNode","updateFrame","availableWidth","availableHeight","layout","resizeObserver","latticeSpan","useMemo","voxelSize","mountNode","sceneContinuous","THREE.Scene","sceneDiscrete","backgroundColor","THREE.Color","THREE.FogExp2","THREE.PerspectiveCamera","THREE.WebGLRenderer","THREE.PCFSoftShadowMap","controls","torusGeometry","THREE.TorusGeometry","torusMaterial","THREE.MeshStandardMaterial","torusMesh","THREE.Mesh","voxelGap","voxelEdge","voxelGeometry","THREE.BoxGeometry","solidMaterial","emptyMaterial","THREE.MeshBasicMaterial","totalVoxels","solidMesh","THREE.InstancedMesh","emptyMesh","voxelOffset","dummy","THREE.Object3D","solidCount","emptyCount","px","py","pz","distHorizontal","isSolid","targetCameraPosition","targetControlsPosition","animateCamera","resetTimer","resize","handleControlsStart","handleControlsEnd","animationFrame","renderFrame","isLandscape","squareSize","startX","startY","continuousX","continuousY","discreteX","discreteY","cssVars","handleResolutionChange","styles","jsxs","jsx","metadata"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE3BC,KAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEhCC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE1BC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAExBC,KAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEnBC,KAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAE3BC,KAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,SAElBC,KAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEvBC,KAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAElBC,KAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEpBC,KAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEvBC,KAA4B;AAAA;AAAA,SAE5BC,KAAuB;AAAA;AAAA,SAEvBC,KAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yDAE5BC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAExBC,KAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE7BC,KAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEnBC,KAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEjBC,KAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEZC,KAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEtB,MAAMC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..29d1399 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,16 @@ + + + + + + Glitch Presentation Layer POC + + + + +
+ + diff --git a/dist/lectures/rethinking-econ-ep1.json b/dist/lectures/rethinking-econ-ep1.json new file mode 100644 index 0000000..347646d --- /dev/null +++ b/dist/lectures/rethinking-econ-ep1.json @@ -0,0 +1,309 @@ +{ + "id": "rethinking-econ-ep1", + "title": "Why economics feels fake, even when it's working", + "version": "0.4.2", + "durationSec": 24, + "segments": [ + { + "id": "seg-1", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 0, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1501004318641-b39e6451bec6?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-2", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 4, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1465146344425-f00d5f5c8f07?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-3", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 8, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1490750967868-88aa4486c946?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-4", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 12, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1493246507139-91e8fad9978e?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-5", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 16, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1520607162513-77705c0f0d4a?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-6", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 20, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1529156069898-49953e39b3ac?auto=format&fit=crop&w=800&q=80" + } + ], + "slides": [ + { + "id": "slide-01-square-yellow", + "startTimeSec": 0, + "endTimeSec": 3.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-01-a", + "score": 0.86, + "componentKey": "SquareYellow", + "authorName": "Amina", + "orientation": "any", + "props": { + "header": "GROWTH LOOKS FINE", + "imageSrc": "https://images.unsplash.com/photo-1520607162513-77705c0f0d4a?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "Crowd moving through an urban square" + } + }, + { + "id": "slide-01-b", + "score": 0.62, + "componentKey": "SquareYellow", + "authorName": "Jonas", + "orientation": "any", + "props": { + "header": "LIFE FEELS TIGHT", + "imageSrc": "https://images.unsplash.com/photo-1529156069898-49953e39b3ac?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "Blurred commuters moving through a city crowd" + } + } + ] + }, + { + "id": "slide-02-fullscreen-split", + "startTimeSec": 3.2, + "endTimeSec": 4.8, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-02-a", + "score": 0.88, + "componentKey": "FullscreenSplit", + "authorName": "Editor Bot", + "orientation": "any", + "props": { + "eyebrow": "Seam mask", + "title": "Fullscreen hides the stitch.", + "body": "The talk keeps moving underneath.", + "imageSrc": "https://images.unsplash.com/photo-1552664730-d307ca884978?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "People collaborating around a table", + "imagePosition": "left" + } + } + ] + }, + { + "id": "slide-03-equation-focus", + "startTimeSec": 4.8, + "endTimeSec": 7.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-03-a", + "score": 0.82, + "componentKey": "EquationFocus", + "authorName": "Mira", + "latexString": "\\bar{x} = \\frac{1}{N}\\sum_{i=0}^{N} x_i", + "orientation": "any", + "props": { + "eyebrow": "Equation focus", + "title": "Definition of the mean", + "annotation": "Add values. Divide by count." + } + } + ] + }, + { + "id": "slide-04-quote-image", + "startTimeSec": 7.2, + "endTimeSec": 8.8, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-04-a", + "score": 0.8, + "componentKey": "QuoteImage", + "authorName": "Luca", + "orientation": "any", + "props": { + "eyebrow": "Narrative framing", + "quote": "People live inside stress, not averages.", + "attribution": "Draft note", + "imageSrc": "https://images.unsplash.com/photo-1516321497487-e288fb19713f?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "Hands gesturing over a tablet", + "imagePosition": "right" + } + } + ] + }, + { + "id": "slide-05-chart-single", + "startTimeSec": 8.8, + "endTimeSec": 11.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-05-a", + "score": 0.78, + "componentKey": "ChartSingle", + "authorName": "Nora", + "orientation": "any", + "props": { + "eyebrow": "Chart single", + "title": "Three signals diverge", + "body": "Growth up. Calm down.", + "points": [ + { "label": "GDP", "value": 76, "color": "#111111" }, + { "label": "Trust", "value": 49, "color": "rgba(17,17,17,0.72)" }, + { "label": "Calm", "value": 33, "color": "rgba(17,17,17,0.48)" } + ] + } + }, + { + "id": "slide-05-b", + "score": 0.61, + "componentKey": "ChartSingle", + "authorName": "Kai", + "orientation": "any", + "props": { + "eyebrow": "Alternate framing", + "title": "Growth hides fragility", + "body": "Same chart. Sharper framing.", + "points": [ + { "label": "Output", "value": 72, "color": "#111111" }, + { "label": "Security", "value": 41, "color": "rgba(17,17,17,0.72)" }, + { "label": "Optimism", "value": 28, "color": "rgba(17,17,17,0.48)" } + ] + } + } + ] + }, + { + "id": "slide-06-process-flow", + "startTimeSec": 11.2, + "endTimeSec": 12.8, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-06-b", + "score": 0.84, + "componentKey": "GlitchComponentFrame", + "authorName": "Voxel Lab", + "orientation": "any", + "interactionMode": "interactive-3d", + "props": { + "header": "Interactive component", + "componentId": "voxel-universe", + "caption": "Rotate the voxel torus and inspect the geometry." + } + }, + { + "id": "slide-06-a", + "score": 0.79, + "componentKey": "ProcessFlow", + "authorName": "Sofia", + "orientation": "any", + "props": { + "eyebrow": "Pipeline", + "title": "How it becomes a Glitch talk", + "steps": [ + "Write the script", + "Record the talk", + "Align slide cues", + "Compare variants" + ] + } + } + ] + }, + { + "id": "slide-07-definition-card", + "startTimeSec": 12.8, + "endTimeSec": 14.4, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-07-a", + "score": 0.83, + "componentKey": "DefinitionCard", + "authorName": "Theo", + "orientation": "any", + "props": { + "eyebrow": "Definition", + "term": "CRYSTALLIZATION", + "definition": "An interactive talk becomes a fixed video.", + "example": "Same source. Cleaner final cut." + } + } + ] + }, + { + "id": "slide-08-square-video", + "startTimeSec": 14.4, + "endTimeSec": 17.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-08-a", + "score": 0.88, + "componentKey": "SquareVideo", + "authorName": "Clip Forge", + "orientation": "any", + "props": { + "header": "SQUARE VIDEO TEST", + "videoSrc": "http://localhost:9000/glitch-university/assets/video/1774943368113-c61afb5d-17555904-hd_1080_1920_30fps.mp4" + } + } + ] + }, + { + "id": "slide-09-fullscreen-video", + "startTimeSec": 17.2, + "endTimeSec": 20, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-09-a", + "score": 0.9, + "componentKey": "FullscreenVideo", + "authorName": "Orbit Studio", + "orientation": "any", + "props": { + "header": "FULLSCREEN VIDEO TEST", + "videoSrc": "http://localhost:9000/glitch-university/assets/video/1774943368170-543f54fe-CGI_Animation_Of_Space.mp4", + "caption": "Fullscreen video test caption." + } + } + ] + }, + { + "id": "slide-10-fullscreen-video-center-caption", + "startTimeSec": 20, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-10-a", + "score": 0.92, + "componentKey": "FullscreenVideoCenterCaption", + "authorName": "Orbit Studio", + "orientation": "any", + "props": { + "caption": "NO NEED TO BE DISCRETE", + "videoSrc": "http://localhost:9000/glitch-university/assets/video/1774943368170-543f54fe-CGI_Animation_Of_Space.mp4" + } + } + ] + } + ] +} diff --git a/dist/vendor/glitch/glitch_assumption_toggle/.DS_Store b/dist/vendor/glitch/glitch_assumption_toggle/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e1383dedac9e61c80d39cb7dc3bbe2f39d97c2d8 GIT binary patch literal 8196 zcmeHMU2GIp6u#fIlo>kE0g9Bm6BZVNkOkUO((-4ve+mc`*p~iKSax?tIxss^c4oIg zX>3e>&N;YH&Qpf4thCK%%bQRB}8KKP>Y;F-Czgtk;)41qW|nS1WN z=bU@*Irlqr_slZJ&|1*y8LMH8iS&3>sif*Q#p8R=q#^_(5>b#oV;XZZ!_H8~v@?^W z!-3EPp$9?_gdPYz5PINl@BrP}UJ<9b_c=GLLl1-=_+NU!dp|_!@n|BTW1RZ04yybV zfM_`l`-R$+2lzVCfF=Su#;LDLbMou~fhvL&16-Z>QBRy`BA{cOa&-o-&Je7OAVYz_ zI_X7yafSq^VI6uP^uS~fc)5E8bC}Hv%$ktDU&suZhU3=NeGQ?kd|JhHQ4}l1eaS(4 zIO(R{g43GL@AZ0Jwryrg?Q~|3p%15&>NeYQ(}tzzeFa0)No1hMurzzP)h<|?Np1*&mjRnO z!LU;ktMf?3G>+>u zR^?>#wrTFP9mAWZuh-R&x*l&5tGC~=^KP3zSxQj~j=o!`xs0OTPBS{a1}*6+R^MWn z*MxL-*8GJ_9$4AXv@y}KW&5rxRm$u+bE{>!pAN!ujYkbV-#u(-?qFZq$?BG7SO=mR42W?=8D6?YNyoxF02$*2~9$?uwK|8 z><~JIULh?U5^Ny|E1?vp`${HrDjXv^G2DW$hr-$0hg;;~&0Dt0+wPfgyE=;p*u4AZ zN0+Wx-PpXTyu@5UpmL<&wt@Vjz-WQ{~2sFd+;JklhI3V3I|yiuZHRLXf* zl@pSrFuxONi*$$-P>T3pA^j@5#(rYIu^WW+S(u9&EJGdP`$25R4nnwx?{4fz3Tb4Z zAqNXXI6_!Ifl)k$F+7f^2ipjiX+SWmu zyR^6QTbsI9##uF9{@*e6_y4IU2sxn#LJ!>Y9zc0}vb~kenCb=M<=Rnt4$$KjPi~A; vUxg|^9VhCi<3w-%VMy&LiF!JTfR1rWBUJAAhk!f$b345M!~6eky#N0OC;`Vb literal 0 HcmV?d00001 diff --git a/dist/vendor/glitch/glitch_assumption_toggle/Component.d.ts b/dist/vendor/glitch/glitch_assumption_toggle/Component.d.ts new file mode 100644 index 0000000..8531372 --- /dev/null +++ b/dist/vendor/glitch/glitch_assumption_toggle/Component.d.ts @@ -0,0 +1,2 @@ +import type { GlitchComponentProps } from './types'; +export default function AssumptionToggle({ config, onComplete, onProgress, theme, className, host }: GlitchComponentProps): import("react/jsx-runtime").JSX.Element; diff --git a/dist/vendor/glitch/glitch_assumption_toggle/assumption-toggle.js b/dist/vendor/glitch/glitch_assumption_toggle/assumption-toggle.js new file mode 100644 index 0000000..61be7ec --- /dev/null +++ b/dist/vendor/glitch/glitch_assumption_toggle/assumption-toggle.js @@ -0,0 +1,560 @@ +(function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode('.gc-assumption-toggle{--shell-bg: radial-gradient(circle at top, rgba(40, 58, 34, .35), transparent 42%), linear-gradient(180deg, #070a08, #0f160f 58%, #090b09);--screen-bg: #616161;--screen-error: #7f1d1d;--screen-glow: rgba(0, 0, 0, .5);--text-primary: var(--gc-text, #0f172a);--text-secondary: var(--gc-text-muted, #6bff5b);--accent-color: var(--gc-accent, #1c6a00);--panel-green: var(--gc-primary, #248a00);--panel-white: rgba(255, 255, 255, .92);--font-display: "Russo One", sans-serif;--font-ui: "VT323", sans-serif;color:var(--text-primary);width:100%}.gc-assumption-toggle *,.gc-assumption-toggle *:before,.gc-assumption-toggle *:after{box-sizing:border-box}.gc-assumption-toggle .component-shell{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px 0;background:var(--shell-bg)}.gc-assumption-toggle .main-wrapper{width:min(100%,1000px);aspect-ratio:1000 / 678;background-image:var(--assumption-frame-image);background-position:center;background-repeat:no-repeat;background-size:100% 100%;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .crt-screen{position:relative;width:51.8%;height:66.3%;transform:translateY(.6%);background:var(--screen-bg);border-radius:7.5%;display:flex;justify-content:center;align-items:center;overflow:hidden;box-shadow:inset 0 0 40px var(--screen-glow);transition:background-color .4s ease}.gc-assumption-toggle .crt-screen.paradox-errors{background:var(--screen-error)}.gc-assumption-toggle .crt-screen:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(rgba(18,16,16,0) 50%,rgba(0,0,0,.24) 50%),linear-gradient(90deg,rgba(255,0,0,.05),rgba(0,255,0,.02),rgba(0,0,255,.05));background-size:100% 2px,3px 100%;pointer-events:none;z-index:20}.gc-assumption-toggle .slides-wrapper{width:100%;height:100%;display:flex;justify-content:center;align-items:center;transform-origin:center}.gc-assumption-toggle .slide{width:100%;height:100%;padding:20px;display:flex;flex-direction:column;justify-content:center;align-items:center}.gc-assumption-toggle .slide-splash{text-align:center}.gc-assumption-toggle .splash-content h1{margin:0 0 18px;font-size:clamp(1.4rem,2.7vw,2.2rem);line-height:1.3;color:var(--text-primary);font-family:var(--font-display);font-weight:400;text-transform:uppercase;text-shadow:0 0 4px rgba(0,0,0,.35)}.gc-assumption-toggle .splash-content h2{margin:0 0 42px;color:var(--text-secondary);font-size:clamp(1rem,1.5vw,1.2rem);font-weight:400;letter-spacing:.08em;font-family:var(--font-ui)}.gc-assumption-toggle .widget-header h1{margin:0 0 18px;color:var(--text-secondary);font-size:clamp(1.4rem,2.5vw,1.8rem);font-weight:400;letter-spacing:.05em;text-transform:uppercase;font-family:var(--font-display);text-shadow:0 0 5px rgba(255,255,255,.35)}.gc-assumption-toggle .switch-group{width:100%;display:flex;flex-direction:column;gap:18px;padding:0 24px}.gc-assumption-toggle .switch-item{width:100%}.gc-assumption-toggle .switch-input{position:absolute;opacity:0;pointer-events:none}.gc-assumption-toggle .toggle-track{position:relative;width:100%;min-height:58px;padding:4px;display:flex;align-items:stretch;justify-content:space-between;gap:8px;border-radius:28px;cursor:pointer;overflow:hidden;border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.4)}.gc-assumption-toggle .toggle-track:before{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:calc(50% - 4px);border-radius:24px;background:var(--panel-green);transition:transform .35s cubic-bezier(.16,1,.3,1)}.gc-assumption-toggle .switch-input:checked+.toggle-track:before{transform:translate(100%)}.gc-assumption-toggle .option-left,.gc-assumption-toggle .option-right{position:relative;z-index:1;flex:1;display:flex;align-items:center;justify-content:center;text-align:center;padding:10px 8px;color:#ffffff9e;font-size:clamp(.78rem,2vw,1.4rem);font-weight:500;letter-spacing:.04em;line-height:1.15;font-family:var(--font-ui);transition:color .25s ease,font-weight .25s ease}.gc-assumption-toggle .switch-input:not(:checked)+.toggle-track .option-left,.gc-assumption-toggle .switch-input:checked+.toggle-track .option-right{color:#fff;font-weight:700}.gc-assumption-toggle .action-button{margin-top:24px;border:none;border-radius:8px;padding:12px 32px;background:var(--accent-color);color:#fff;cursor:pointer;text-transform:uppercase;font-family:var(--font-display);font-size:clamp(1rem,2vw,1.35rem);font-weight:400;letter-spacing:.06em;box-shadow:0 4px #00000047;transition:transform .12s ease,box-shadow .12s ease,opacity .2s ease}.gc-assumption-toggle .action-button:hover{opacity:.92}.gc-assumption-toggle .action-button:active{transform:translateY(3px);box-shadow:none}.gc-assumption-toggle .action-button.secondary{font-size:1rem;padding:7px 88px;color:var(--text-secondary);background:transparent;border:2px solid var(--text-secondary);box-shadow:none}.gc-assumption-toggle .bottom-container{width:100%;height:100%;display:flex;flex-direction:column;gap:16px}.gc-assumption-toggle .slide-processing{justify-content:flex-start;padding:26px 20px 20px}.gc-assumption-toggle .processing-shell{width:100%;height:100%;display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:18px;background:linear-gradient(180deg,rgba(4,18,7,.96),rgba(7,24,12,.92)),radial-gradient(circle at top,rgba(87,255,143,.14),transparent 40%);border:1px solid rgba(120,255,154,.22);box-shadow:inset 0 0 28px #00000047}.gc-assumption-toggle .processing-header{display:flex;align-items:center;gap:10px}.gc-assumption-toggle .processing-led{width:10px;height:10px;border-radius:999px;background:#5cff8b;box-shadow:0 0 10px #5cff8be6;animation:assumption-led-pulse 1.2s ease-in-out infinite}.gc-assumption-toggle .processing-header h2{margin:0;color:#dfffe7;font-family:var(--font-display);font-size:clamp(1.05rem,2vw,1.3rem);font-weight:400;letter-spacing:.06em;text-transform:uppercase}.gc-assumption-toggle .processing-subtitle{color:#b6ffc6b8;font-family:var(--font-ui);font-size:clamp(.88rem,1.6vw,1rem);letter-spacing:.05em;text-transform:uppercase}.gc-assumption-toggle .processing-terminal{flex:1;min-height:0;padding:14px 16px;border-radius:14px;background:linear-gradient(180deg,rgba(3,9,4,.94),rgba(7,16,8,.96)),repeating-linear-gradient(180deg,rgba(255,255,255,.02) 0,rgba(255,255,255,.02) 1px,transparent 1px,transparent 18px);border:1px solid rgba(120,255,154,.12);overflow:hidden}.gc-assumption-toggle .processing-line{display:flex;align-items:baseline;gap:8px;min-height:1.45em;color:#b7ffca;font-family:var(--font-ui);font-size:clamp(1rem,1.8vw,1.18rem);letter-spacing:.04em;line-height:1.35;word-break:break-word}.gc-assumption-toggle .processing-line+.processing-line{margin-top:4px}.gc-assumption-toggle .processing-line-active{color:#edfff2}.gc-assumption-toggle .processing-prompt{flex:0 0 auto;color:#5cff8b;font-family:var(--font-display)}.gc-assumption-toggle .processing-cursor{display:inline-block;width:9px;height:1.05em;margin-left:2px;vertical-align:text-bottom;background:#74ff97;box-shadow:0 0 8px #74ff97a6;animation:assumption-cursor-blink .9s steps(1) infinite}.gc-assumption-toggle .visualization-container,.gc-assumption-toggle .result-container{width:100%;border-radius:16px}.gc-assumption-toggle .visualization-container{flex:1.5;min-height:0;display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(255,255,255,.05);background:rgba(0,0,0,.32)}.gc-assumption-toggle .result-container{position:relative;flex:1;min-height:0;padding:18px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:rgba(255,255,255,.32);border:1px solid rgba(0,0,0,.08);text-align:center}.gc-assumption-toggle .summary-box{width:100%}.gc-assumption-toggle .summary-label{display:block;margin-bottom:8px;color:var(--text-secondary);font-size:.84rem;letter-spacing:.08em;text-transform:uppercase;font-family:var(--font-display)}.gc-assumption-toggle .summary-value{display:block;color:var(--text-primary);font-size:clamp(.9rem,1.5vw,1rem);letter-spacing:.04em;line-height:1.4;font-family:var(--font-ui)}.gc-assumption-toggle .result-value{display:block;width:100%;margin-top:4px;font-size:clamp(1.7rem,3vw,2rem);font-weight:400;letter-spacing:.05em;background-clip:text;-webkit-background-clip:text;color:transparent;font-family:var(--font-display)}.gc-assumption-toggle .result-stable{background-image:linear-gradient(90deg,#064e3b,#16a34a)}.gc-assumption-toggle .result-warning{background-image:linear-gradient(90deg,#7c2d12,#d97706)}.gc-assumption-toggle .result-paradox{background-image:linear-gradient(90deg,#831843,#be185d)}.gc-assumption-toggle .result-uncertain{background-image:linear-gradient(90deg,#4338ca,#7c3aed)}.gc-assumption-toggle .result-description{display:block;width:100%;margin-top:4px;color:#000;font-size:clamp(.96rem,1.8vw,1.08rem);letter-spacing:.03em;line-height:1.35;font-family:var(--font-ui)}.gc-assumption-toggle .intermediate-result{margin-top:14px;color:var(--text-secondary);font-size:.76rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-family:var(--font-display)}.gc-assumption-toggle .art-canvas{position:relative;width:100%;height:100%;min-height:160px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .art-canvas:after{content:"";position:absolute;width:8px;height:8px;border-radius:999px;background:#ffffff;box-shadow:0 0 12px #ffffffe6}.gc-assumption-toggle .art-canvas.paradox-point:after,.gc-assumption-toggle .art-canvas.paradox-chunk:after{display:none}.gc-assumption-toggle .cube-wrapper{position:relative;width:64px;height:64px;perspective:400px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .cube{position:relative;width:64px;height:64px;transform-style:preserve-3d;animation:assumption-slow-spin 10s linear infinite}.gc-assumption-toggle .face{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.05)}.gc-assumption-toggle .cube .front{transform:translateZ(32px)}.gc-assumption-toggle .cube .back{transform:rotateY(180deg) translateZ(32px)}.gc-assumption-toggle .cube .right{transform:rotateY(90deg) translateZ(32px)}.gc-assumption-toggle .cube .left{transform:rotateY(-90deg) translateZ(32px)}.gc-assumption-toggle .cube .top{transform:rotateX(90deg) translateZ(32px)}.gc-assumption-toggle .cube .bottom{transform:rotateX(-90deg) translateZ(32px)}.gc-assumption-toggle .particle-point{position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:999px;transform:translate(-50%,-50%);background:#a10356;box-shadow:0 0 12px #a10356}.gc-assumption-toggle .info-arrow{position:absolute;left:-70px;top:50%;transform:translateY(-50%);display:flex;align-items:center;opacity:0;animation:assumption-arrow-enter .9s ease forwards .3s}.gc-assumption-toggle .arrow-line{width:34px;height:2px;background:#a10356;box-shadow:0 0 5px #a10356}.gc-assumption-toggle .arrow-head{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid #a10356}.gc-assumption-toggle .infinite-symbol{position:absolute;top:-25px;left:8px;color:#a10356;font-size:1.4rem;font-weight:700;text-shadow:0 0 10px rgba(161,3,86,.45)}.gc-assumption-toggle .chakana-wrapper{position:relative;width:90px;height:90px;transform-style:preserve-3d;transform:rotateX(-30deg) rotateY(45deg);animation:assumption-float 6s ease-in-out infinite}.gc-assumption-toggle .gold-cube{position:absolute;width:42px;height:42px;transform-style:preserve-3d}.gc-assumption-toggle .gold-cube.center{transform:translate(24px,24px)}.gc-assumption-toggle .gold-cube.top-arm{transform:translate(24px,-14px)}.gc-assumption-toggle .gold-cube.bottom-arm{transform:translate(24px,62px)}.gc-assumption-toggle .gold-cube.left-arm{transform:translate(-14px,24px)}.gc-assumption-toggle .gold-cube.right-arm{transform:translate(62px,24px)}.gc-assumption-toggle .gold-cube .face{background:linear-gradient(135deg,#fcd34d 0%,#fbbf24 50%,#d97706 100%);border-color:#0000002e}.gc-assumption-toggle .gold-cube .front{transform:translateZ(21px)}.gc-assumption-toggle .gold-cube .back{transform:rotateY(180deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .right{transform:rotateY(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .left{transform:rotateY(-90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .top{transform:rotateX(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .bottom{transform:rotateX(-90deg) translateZ(21px)}.gc-assumption-toggle .chaos-wrapper{position:relative;width:120px;height:120px;perspective:600px}.gc-assumption-toggle .central-source{position:absolute;left:50%;top:50%;width:22px;height:22px;transform-style:preserve-3d;transform:translate(-50%,-50%);animation:assumption-pulsar 2.1s ease-out infinite}.gc-assumption-toggle .central-source .face{background:#a10356;border:1px solid rgba(255,255,255,.78);box-shadow:0 0 15px #c084fc}.gc-assumption-toggle .central-source .front{transform:translateZ(11px)}.gc-assumption-toggle .central-source .back{transform:rotateY(180deg) translateZ(11px)}.gc-assumption-toggle .central-source .right{transform:rotateY(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .left{transform:rotateY(-90deg) translateZ(11px)}.gc-assumption-toggle .central-source .top{transform:rotateX(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .bottom{transform:rotateX(-90deg) translateZ(11px)}.gc-assumption-toggle .debris-cube{position:absolute;left:50%;top:50%;width:10px;height:10px;transform-style:preserve-3d}.gc-assumption-toggle .debris-cube .face{background:linear-gradient(45deg,#c084fc,#a10356);border:1px solid rgba(255,255,255,.4)}.gc-assumption-toggle .debris-cube .front{transform:translateZ(5px)}.gc-assumption-toggle .debris-cube .back{transform:rotateY(180deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .right{transform:rotateY(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .left{transform:rotateY(-90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .top{transform:rotateX(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .bottom{transform:rotateX(-90deg) translateZ(5px)}.gc-assumption-toggle .d-0{animation:assumption-explode-0 2.1s linear infinite}.gc-assumption-toggle .d-1{animation:assumption-explode-1 2.3s linear infinite .2s}.gc-assumption-toggle .d-2{animation:assumption-explode-2 1.9s linear infinite .4s}.gc-assumption-toggle .d-3{animation:assumption-explode-3 2.4s linear infinite .1s}.gc-assumption-toggle .d-4{animation:assumption-explode-4 2.1s linear infinite .5s}.gc-assumption-toggle .d-5{animation:assumption-explode-5 1.9s linear infinite .25s}.gc-assumption-toggle .d-6{animation:assumption-explode-6 2.25s linear infinite .45s}.gc-assumption-toggle .d-7{animation:assumption-explode-7 2.4s linear infinite .15s}.gc-assumption-toggle .d-8{animation:assumption-explode-8 1.75s linear infinite .65s}.gc-assumption-toggle .d-9{animation:assumption-explode-9 2.5s linear infinite .1s}.gc-assumption-toggle .signal-orbit,.gc-assumption-toggle .field-node{position:relative;width:112px;height:112px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .signal-ring,.gc-assumption-toggle .field-ring{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-ring{top:22px;right:22px;bottom:22px;left:22px;border:2px dashed rgba(255,255,255,.45);animation:assumption-rotate 7s linear infinite}.gc-assumption-toggle .signal-axis{position:absolute;width:100px;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent);transform:rotate(-25deg)}.gc-assumption-toggle .signal-dot,.gc-assumption-toggle .field-core{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-dot{width:14px;height:14px;background:#ffcc66;box-shadow:0 0 18px #ffcc66b3}.gc-assumption-toggle .signal-cube{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#f5d565,#e08e18);box-shadow:0 0 22px #e08e1899}.gc-assumption-toggle .signal-orbit-point .signal-dot{animation:assumption-jitter .22s infinite}.gc-assumption-toggle .signal-orbit-chunk .signal-cube{animation:assumption-tilt 2.8s ease-in-out infinite}.gc-assumption-toggle .field-ring-outer{top:10px;right:10px;bottom:10px;left:10px;border:1px solid rgba(123,245,186,.38)}.gc-assumption-toggle .field-ring-inner{top:28px;right:28px;bottom:28px;left:28px;border:1px dashed rgba(123,245,186,.55);animation:assumption-rotate 9s linear infinite reverse}.gc-assumption-toggle .field-core{width:16px;height:16px;background:#4ade80;box-shadow:0 0 18px #4ade80cc}.gc-assumption-toggle .field-core-chunk{width:30px;height:30px;border-radius:10px;background:linear-gradient(135deg,#4ade80,#16a34a)}.gc-assumption-toggle .field-question{position:absolute;top:12px;right:16px;color:#ffffffd9;font-size:1.4rem;font-weight:700}.gc-assumption-toggle .crt-collapse{animation:assumption-crt-collapse .1s cubic-bezier(.25,.46,.45,.94) forwards}.gc-assumption-toggle .crt-expand{animation:assumption-crt-expand .1s cubic-bezier(.25,.46,.45,.94) forwards}@keyframes assumption-crt-collapse{0%{transform:scaleY(1)}60%{transform:scaleY(.1)}to{transform:scaleY(.005)}}@keyframes assumption-crt-expand{0%{transform:scaleY(.005)}60%{transform:scaleY(.1)}to{transform:scaleY(1)}}@keyframes assumption-slow-spin{0%{transform:rotateX(-20deg) rotateY(0)}to{transform:rotateX(-20deg) rotateY(360deg)}}@keyframes assumption-arrow-enter{0%{opacity:0;transform:translate(-12px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes assumption-float{0%{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}50%{transform:rotateX(-30deg) rotateY(45deg) translateY(-10px)}to{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}}@keyframes assumption-pulsar{0%{transform:translate(-50%,-50%) scale3d(.15,.15,.15) rotate(0);opacity:0}50%{transform:translate(-50%,-50%) scale3d(1.45,1.45,1.45) rotate(180deg);opacity:1}to{transform:translate(-50%,-50%) scale3d(3,3,3) rotate(360deg);opacity:0}}@keyframes assumption-explode-0{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(56px,54px) rotate(360deg)}}@keyframes assumption-explode-1{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-72px,48px) rotate(-180deg)}}@keyframes assumption-explode-2{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(30px,-84px) rotate(90deg)}}@keyframes assumption-explode-3{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-58px,-44px) rotate(-270deg)}}@keyframes assumption-explode-4{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(12px,74px) rotate(45deg)}}@keyframes assumption-explode-5{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-92px,6px) rotate(-45deg)}}@keyframes assumption-explode-6{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(48px,-54px) rotate(120deg)}}@keyframes assumption-explode-7{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-64px,58px) rotate(200deg)}}@keyframes assumption-explode-8{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(74px,18px) rotate(-100deg)}}@keyframes assumption-explode-9{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-26px,-82px) rotate(60deg)}}@keyframes assumption-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes assumption-jitter{0%{transform:translate(0)}25%{transform:translate(1px,1px)}50%{transform:translate(-1px,-1px)}75%{transform:translate(-1px,1px)}to{transform:translate(1px,-1px)}}@keyframes assumption-tilt{0%{transform:rotate(0) scale(1)}50%{transform:rotate(18deg) scale(1.08)}to{transform:rotate(0) scale(1)}}@keyframes assumption-cursor-blink{0%,45%{opacity:1}46%,to{opacity:0}}@keyframes assumption-led-pulse{0%,to{opacity:.5;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}@media (max-width: 900px){.gc-assumption-toggle .component-shell{padding:12px 0}.gc-assumption-toggle .switch-group{gap:12px;padding:0 14px}.gc-assumption-toggle .toggle-track{min-height:50px}.gc-assumption-toggle .action-button{padding:10px 22px}.gc-assumption-toggle .action-button.secondary{padding:6px 36px}.gc-assumption-toggle .result-container{padding:14px}.gc-assumption-toggle .intermediate-result{margin-top:10px;font-size:.68rem}.gc-assumption-toggle .slide-processing{padding:18px 14px 14px}.gc-assumption-toggle .processing-shell,.gc-assumption-toggle .processing-terminal{padding:12px}}.gc-assumption-toggle .visualization-container{background:radial-gradient(circle at 50% 30%,rgba(156,255,197,.12),transparent 42%),linear-gradient(180deg,rgba(9,19,13,.9),rgba(6,12,8,.96))}.gc-assumption-toggle .result-container{background:linear-gradient(180deg,rgba(247,252,248,.92),rgba(220,237,226,.94));border:1px solid rgba(8,33,18,.12);box-shadow:inset 0 1px #ffffff59}.gc-assumption-toggle .summary-box{padding:4px 0}.gc-assumption-toggle .summary-value{color:#0f2d18}.gc-assumption-toggle .intermediate-result{padding:7px 12px;border-radius:999px;color:#d9ffe5;background:linear-gradient(180deg,rgba(7,27,14,.92),rgba(12,40,20,.94));border:1px solid rgba(120,255,154,.18);box-shadow:inset 0 1px #ffffff14,0 8px 20px #0000001f;opacity:1}.gc-assumption-toggle .digital-lattice{position:relative;width:150px;height:150px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .digital-grid{position:absolute;top:20px;right:20px;bottom:20px;left:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;transform:rotate(45deg)}.gc-assumption-toggle .digital-cell{border-radius:10px;background:linear-gradient(135deg,rgba(246,203,77,.25),rgba(201,128,16,.68)),linear-gradient(180deg,rgba(255,255,255,.14),rgba(0,0,0,.1));border:1px solid rgba(255,222,118,.35);box-shadow:inset 0 1px #ffffff1a,0 0 18px #f6b7311f;animation:assumption-digital-flicker 2.6s ease-in-out infinite}.gc-assumption-toggle .digital-cell-core{background:linear-gradient(135deg,rgba(255,235,142,.8),rgba(240,156,22,.92)),linear-gradient(180deg,rgba(255,255,255,.18),rgba(0,0,0,.06));box-shadow:0 0 26px #ffd86ba6,inset 0 0 12px #fff3}.gc-assumption-toggle .digital-cell-0{animation-delay:.05s}.gc-assumption-toggle .digital-cell-1{animation-delay:.25s}.gc-assumption-toggle .digital-cell-2{animation-delay:.55s}.gc-assumption-toggle .digital-cell-3{animation-delay:.35s}.gc-assumption-toggle .digital-cell-4{animation-delay:.12s}.gc-assumption-toggle .digital-cell-5{animation-delay:.68s}.gc-assumption-toggle .digital-cell-6{animation-delay:.44s}.gc-assumption-toggle .digital-cell-7{animation-delay:.2s}.gc-assumption-toggle .digital-cell-8{animation-delay:.78s}.gc-assumption-toggle .digital-core{position:relative;z-index:2;width:54px;height:54px;border-radius:16px;border:1px solid rgba(255,230,136,.45);background:radial-gradient(circle at 35% 35%,rgba(255,248,202,.45),transparent 55%),linear-gradient(145deg,rgba(98,64,8,.92),rgba(236,167,24,.92));box-shadow:0 0 34px #efb83c5c,inset 0 0 20px #fff6ae33;transform:rotate(45deg)}.gc-assumption-toggle .digital-core-dot{position:absolute;top:18px;right:18px;bottom:18px;left:18px;border-radius:12px;background:rgba(255,248,210,.94);box-shadow:0 0 18px #fff5be99}.gc-assumption-toggle .digital-scan{position:absolute;z-index:1;border-radius:999px;background:rgba(145,255,191,.18)}.gc-assumption-toggle .digital-scan-horizontal{width:132px;height:2px;animation:assumption-digital-scan-x 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-scan-vertical{width:2px;height:132px;animation:assumption-digital-scan-y 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-aura{position:absolute;top:6px;right:6px;bottom:6px;left:6px;border-radius:28px;border:1px solid rgba(255,226,118,.18);box-shadow:0 0 34px #f5bc3f26}.gc-assumption-toggle .physics-observatory{position:relative;width:158px;height:158px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .physics-grid{position:absolute;top:10px;right:10px;bottom:10px;left:10px;border-radius:999px;background:radial-gradient(circle,rgba(151,244,209,.09),transparent 58%),repeating-radial-gradient(circle,rgba(255,255,255,.09) 0 1px,transparent 1px 18px);-webkit-mask-image:radial-gradient(circle,black 58%,transparent 78%);mask-image:radial-gradient(circle,black 58%,transparent 78%);opacity:.75}.gc-assumption-toggle .physics-halo{position:absolute;border-radius:999px;border:1px solid rgba(157,253,224,.28)}.gc-assumption-toggle .physics-halo-outer{top:8px;right:8px;bottom:8px;left:8px;animation:assumption-rotate 18s linear infinite}.gc-assumption-toggle .physics-halo-inner{top:28px;right:28px;bottom:28px;left:28px;border-style:dashed;border-color:#76edc68a;animation:assumption-rotate 12s linear infinite reverse}.gc-assumption-toggle .physics-core-shell{position:absolute;width:54px;height:54px;border-radius:999px;background:radial-gradient(circle at 35% 35%,rgba(255,255,255,.4),transparent 52%),linear-gradient(180deg,rgba(27,92,69,.88),rgba(10,36,28,.95));box-shadow:inset 0 0 22px #b2ffe429,0 0 34px #54d9a452}.gc-assumption-toggle .physics-core-shell-chunk{border-radius:18px;transform:rotate(45deg)}.gc-assumption-toggle .physics-core-point{position:absolute;top:17px;right:17px;bottom:17px;left:17px;border-radius:999px;background:radial-gradient(circle,#baffe6 0%,#4ade80 48%,#16825b 100%);box-shadow:0 0 22px #85ffcca6,0 0 42px #5adca242}.gc-assumption-toggle .physics-core-chunk{border-radius:9px}.gc-assumption-toggle .physics-orbit{position:absolute;width:10px;height:10px;border-radius:999px;background:linear-gradient(180deg,#f2fff9,#89ffd0);box-shadow:0 0 16px #89ffd094}.gc-assumption-toggle .physics-orbit-1{animation:assumption-orbit-one 6.4s linear infinite}.gc-assumption-toggle .physics-orbit-2{width:8px;height:8px;background:linear-gradient(180deg,#fff6d7,#ffcf69);box-shadow:0 0 14px #ffcf698c;animation:assumption-orbit-two 8.2s linear infinite reverse}.gc-assumption-toggle .physics-orbit-3{width:6px;height:6px;background:linear-gradient(180deg,#dffcff,#73d4ff);box-shadow:0 0 12px #73d4ff80;animation:assumption-orbit-three 10s linear infinite}.gc-assumption-toggle .physics-question-ring{position:absolute;top:44px;right:44px;bottom:44px;left:44px;display:flex;justify-content:center;align-items:center;border-radius:999px;border:1px dashed rgba(255,241,171,.28)}.gc-assumption-toggle .physics-question{color:#fff8d2f0;font-size:1.2rem;font-weight:700;text-shadow:0 0 12px rgba(255,226,130,.35)}@keyframes assumption-digital-flicker{0%,to{opacity:.72;transform:scale(1)}35%{opacity:1;transform:scale(1.04)}60%{opacity:.84;transform:scale(.98)}}@keyframes assumption-digital-scan-x{0%,to{transform:translateY(-48px);opacity:.2}50%{transform:translateY(48px);opacity:.9}}@keyframes assumption-digital-scan-y{0%,to{transform:translate(-48px);opacity:.18}50%{transform:translate(48px);opacity:.88}}@keyframes assumption-orbit-one{0%{transform:rotate(0) translate(54px) rotate(0)}to{transform:rotate(360deg) translate(54px) rotate(-360deg)}}@keyframes assumption-orbit-two{0%{transform:rotate(40deg) translate(34px) translateY(-14px) rotate(0)}to{transform:rotate(400deg) translate(34px) translateY(-14px) rotate(-360deg)}}@keyframes assumption-orbit-three{0%{transform:rotate(-20deg) translate(64px) translateY(4px) rotate(0)}to{transform:rotate(340deg) translate(64px) translateY(4px) rotate(-360deg)}}')),document.head.appendChild(t)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})(); +import { jsx as A, jsxs as B } from "react/jsx-runtime"; +import { useState as h, useRef as O, useEffect as a } from "react"; +const HA = "data:image/png;base64,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", cA = "glitch:play-sound", QA = "glitch:stop-sound", FA = "glitch:host:", P = { + click: "ui.button_click", + hover: "ui.button_hover", + computeStart: "machine.compute_start", + computeStep: "machine.compute_step", + computeDone: "machine.compute_done", + verdictStable: "machine.verdict_stable", + verdictAlert: "machine.verdict_alert" +}; +function J(w, C) { + typeof window > "u" || window.dispatchEvent(new CustomEvent(w, { detail: C })); +} +function o(w, C, D) { + try { + if (w != null && w.playSound) { + w.playSound(C, D); + return; + } + } catch { + } + J(cA, { id: C, payload: D }); +} +function Z(w, C, D) { + try { + if (w != null && w.stopSound) { + w.stopSound(C, D); + return; + } + } catch { + } + J(QA, { id: C, payload: D }); +} +function z(w, C, D) { + try { + if (w != null && w.emit) { + w.emit(C, D); + return; + } + } catch { + } + J(`${FA}${C}`, D); +} +const v = { + continuousUniverse: !0, + infinitePrecision: !0, + chunkParticles: !1 +}, E = { + "000": { + outcome: "Paradoxical", + intermediate: "Very very much information.", + description: "Space is supposed to be discrete, but each cell must contain ar arbitrary amount of information.", + visualClass: "paradox-point", + tone: "paradox" + }, + "001": { + outcome: "Digital Physics", + intermediate: "Instruction programs remain finite.", + description: "Stable but requires continuous rotational symmetry to be emergent", + visualClass: "stable-chunk", + tone: "stable" + }, + "010": { + outcome: "#1 Memory Paradox", + intermediate: "Move sets can scale to infinite length", + description: "Infinte memory per cell", + visualClass: "paradox-point", + tone: "paradox" + }, + "011": { + outcome: "#2 Memory Paradox", + intermediate: "Move sets can scale to infinite length", + description: "Chunky particles must grow without bound to hold infinite move set", + visualClass: "paradox-chunk", + tone: "paradox" + }, + 100: { + outcome: "Paradoxical", + intermediate: "Chunky geometry implies discrete space", + description: "A continuous universe with chunky particles spanning fundamental cells is a constadiction.", + visualClass: "non-standard-particle-point", + tone: "warning" + }, + 101: { + outcome: "Paradoxical", + intermediate: "The geometry breaks isotropy.", + description: "Continuous universe plus chunk particles that imply discrete space is a constradiction.", + visualClass: "non-standard-particle-chunk", + tone: "warning" + }, + 110: { + outcome: "Standard Physics", + intermediate: "The model remains isotropic.", + description: "Continuous space with infinite precision preserves the canonical picture.", + visualClass: "standard-particle-point", + tone: "stable" + }, + 111: { + outcome: "Contradictory", + intermediate: "Continuous universe cannot be combined with chunk particles.", + description: "Chunky cannot be not chunky", + visualClass: "standard-particle-chunk", + tone: "uncertain" + } +}, p = { + "000": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Point state exceeds single-cell information budget" }, + { label: "Verdict trace", value: "Single cell must have arbitrary information capacity" } + ], + "001": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Chunk particle geometry engaged" }, + { label: "Consistency check", value: "State remains compressible under finite instruction length" }, + { label: "Verdict trace", value: "Digital physics interpretation remains internally stable" } + ], + "010": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Each lattice cell requires unbounded memory" }, + { label: "Verdict trace", value: "Inconsistent with isotropy" } + ], + "011": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Chunk particle" }, + { label: "Consistency check", value: "Particles grow to express information" }, + { label: "Verdict trace", value: "Chunk particles grow to infinite size" } + ], + 100: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Severely demotivated" }, + { label: "Verdict trace", value: "No explanation for rejecting CRS. Smell detected." } + ], + 101: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Chunk particle geometry engaged" }, + { label: "Consistency check", value: "Space is quantized but cells infinitely small" }, + { label: "Verdict trace", value: "Non-standard hybrid geometry. Smell detected" } + ], + 110: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Canonical isotropic field picture remains intact" }, + { label: "Verdict trace", value: "Standard physics baseline recovered successfully" } + ], + 111: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Chunk particle geometry engaged" }, + { label: "Consistency check", value: "Inconsistent." }, + { label: "Verdict trace", value: "Chunk particle cannot be not chunky" } + ] +}; +function r(w, C) { + return typeof w == "boolean" ? w : C; +} +function f(w) { + return { + continuousUniverse: r(w == null ? void 0 : w.continuousUniverse, v.continuousUniverse), + infinitePrecision: r(w == null ? void 0 : w.infinitePrecision, v.infinitePrecision), + chunkParticles: r(w == null ? void 0 : w.chunkParticles, v.chunkParticles) + }; +} +function t(w) { + return [ + w.continuousUniverse ? "1" : "0", + w.infinitePrecision ? "1" : "0", + w.chunkParticles ? "1" : "0" + ].join(""); +} +function R(w) { + const C = w.continuousUniverse ? "Continuous universe" : "Discrete universe", D = w.infinitePrecision ? "Infinite precision" : "Finite precision", s = w.chunkParticles ? "Chunk particles" : "Point particles"; + return `${C} + ${D} + ${s}`; +} +function PA(w) { + return w.tone === "stable" ? 100 : w.tone === "uncertain" ? 60 : w.tone === "warning" ? 40 : 20; +} +function MA({ visualClass: w }) { + return w === "paradox-point" ? /* @__PURE__ */ B("div", { className: "cube-wrapper", children: [ + /* @__PURE__ */ B("div", { className: "cube", children: [ + /* @__PURE__ */ A("div", { className: "face front" }), + /* @__PURE__ */ A("div", { className: "face back" }), + /* @__PURE__ */ A("div", { className: "face right" }), + /* @__PURE__ */ A("div", { className: "face left" }), + /* @__PURE__ */ A("div", { className: "face top" }), + /* @__PURE__ */ A("div", { className: "face bottom" }), + /* @__PURE__ */ A("div", { className: "particle-point" }) + ] }), + /* @__PURE__ */ B("div", { className: "info-arrow", children: [ + /* @__PURE__ */ A("div", { className: "arrow-line" }), + /* @__PURE__ */ A("div", { className: "arrow-head" }), + /* @__PURE__ */ A("span", { className: "infinite-symbol", children: "∞" }) + ] }) + ] }) : w === "stable-chunk" ? /* @__PURE__ */ B("div", { className: "digital-lattice", children: [ + /* @__PURE__ */ A("div", { className: "digital-grid", children: Array.from({ length: 9 }, (C, D) => /* @__PURE__ */ A( + "span", + { + className: `digital-cell digital-cell-${D}${D === 4 ? " digital-cell-core" : ""}` + }, + D + )) }), + /* @__PURE__ */ A("div", { className: "digital-core", children: /* @__PURE__ */ A("span", { className: "digital-core-dot" }) }), + /* @__PURE__ */ A("div", { className: "digital-scan digital-scan-horizontal" }), + /* @__PURE__ */ A("div", { className: "digital-scan digital-scan-vertical" }), + /* @__PURE__ */ A("div", { className: "digital-aura" }) + ] }) : w === "paradox-chunk" ? /* @__PURE__ */ B("div", { className: "chaos-wrapper", children: [ + /* @__PURE__ */ B("div", { className: "central-source", children: [ + /* @__PURE__ */ A("div", { className: "face front" }), + /* @__PURE__ */ A("div", { className: "face back" }), + /* @__PURE__ */ A("div", { className: "face right" }), + /* @__PURE__ */ A("div", { className: "face left" }), + /* @__PURE__ */ A("div", { className: "face top" }), + /* @__PURE__ */ A("div", { className: "face bottom" }) + ] }), + Array.from({ length: 10 }, (C, D) => /* @__PURE__ */ B("div", { className: `debris-cube d-${D}`, children: [ + /* @__PURE__ */ A("div", { className: "face front" }), + /* @__PURE__ */ A("div", { className: "face back" }), + /* @__PURE__ */ A("div", { className: "face right" }), + /* @__PURE__ */ A("div", { className: "face left" }), + /* @__PURE__ */ A("div", { className: "face top" }), + /* @__PURE__ */ A("div", { className: "face bottom" }) + ] }, D)) + ] }) : w === "non-standard-particle-point" ? /* @__PURE__ */ B("div", { className: "signal-orbit signal-orbit-point", children: [ + /* @__PURE__ */ A("div", { className: "signal-ring" }), + /* @__PURE__ */ A("div", { className: "signal-dot" }), + /* @__PURE__ */ A("div", { className: "signal-axis" }) + ] }) : w === "non-standard-particle-chunk" ? /* @__PURE__ */ B("div", { className: "signal-orbit signal-orbit-chunk", children: [ + /* @__PURE__ */ A("div", { className: "signal-ring" }), + /* @__PURE__ */ A("div", { className: "signal-cube" }), + /* @__PURE__ */ A("div", { className: "signal-axis" }) + ] }) : w === "standard-particle-point" ? /* @__PURE__ */ B("div", { className: "physics-observatory", children: [ + /* @__PURE__ */ A("div", { className: "physics-grid" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-outer" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-inner" }), + /* @__PURE__ */ A("div", { className: "physics-core-shell", children: /* @__PURE__ */ A("div", { className: "physics-core-point" }) }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-1" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-2" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-3" }) + ] }) : /* @__PURE__ */ B("div", { className: "physics-observatory physics-observatory-chunk", children: [ + /* @__PURE__ */ A("div", { className: "physics-grid" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-outer" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-inner" }), + /* @__PURE__ */ A("div", { className: "physics-core-shell physics-core-shell-chunk", children: /* @__PURE__ */ A("div", { className: "physics-core-point physics-core-chunk" }) }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-1" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-2" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-3" }), + /* @__PURE__ */ A("div", { className: "physics-question-ring", children: /* @__PURE__ */ A("span", { className: "physics-question", children: "?" }) }) + ] }); +} +function xA({ + config: w, + onComplete: C, + onProgress: D, + theme: s, + className: d, + host: c +}) { + const [G, S] = h(() => f(w.params)), [x, q] = h("splash"), [T, N] = h(""), [j, $] = h(() => E[t(f(w.params))]), [H, _] = h(() => t(f(w.params))), [X, AA] = h( + () => R(f(w.params)) + ), [wA, V] = h([]), [DA, K] = h(""), k = O([]), i = O(c), b = O(C), W = O(D); + a(() => { + S(f(w.params)); + }, [w.params]), a(() => { + i.current = c, b.current = C, W.current = D; + }, [c, C, D]), a(() => { + if (x !== "processing") + return; + const g = p[H] ?? []; + let Y = !1; + V([]), K(""); + const Q = (e, y) => { + if (Y) + return; + if (e >= g.length) { + L(() => { + if (Y) + return; + const F = E[H]; + o(i.current, P.computeDone, { state: H }), I("result", () => { + var m; + (m = W.current) == null || m.call(W, 100), o( + i.current, + F.tone === "stable" ? P.verdictStable : P.verdictAlert, + { state: H, outcome: F.outcome } + ), z(i.current, "verdict-ready", { + state: H, + outcome: F.outcome, + tone: F.tone + }), b.current({ + success: !0, + score: PA(F), + data: { + assumptions: X, + state: H, + outcome: F.outcome, + intermediate: F.intermediate, + description: F.description, + processingTrace: p[H].map((u) => `${u.label}: ${u.value}`) + } + }); + }); + }, 520); + return; + } + const U = `${g[e].label}: ${g[e].value}`; + if (y <= U.length) { + y === 0 && o(i.current, P.computeStep, { state: H, lineIndex: e }), K(U.slice(0, y)), L(() => Q(e, y + 1), 24); + return; + } + V((F) => [...F, U]), K(""), e === g.length - 1 && Z(i.current, P.computeStep, { state: H, lineIndex: e }), L(() => Q(e + 1, 0), 170); + }; + return L(() => Q(0, 0), 180), () => { + Y = !0, Z(i.current, P.computeStep, { state: H }); + }; + }, [X, H, x]), a(() => () => { + n(); + }, []); + function n() { + for (const g of k.current) + window.clearTimeout(g); + k.current = []; + } + function L(g, Y) { + const Q = window.setTimeout(g, Y); + k.current.push(Q); + } + function I(g, Y) { + n(), N("crt-collapse"), L(() => { + q(g), Y == null || Y(), N("crt-expand"), L(() => { + N(""); + }, 110); + }, 110); + } + function l(g, Y) { + S((Q) => ({ ...Q, [g]: Y })), o(c, P.click, { control: g, value: Y }); + } + function M(g) { + o(c, P.hover, { target: g }); + } + function gA() { + z(c, "session-started", { component: w.name, id: w.id }), D == null || D(10), I("controls"); + } + function BA() { + const g = t(G), Y = E[g], Q = R(G); + _(g), AA(Q), $(Y), o(c, P.computeStart, { state: g }), z(c, "processing-started", { + state: g, + assumptions: Q + }), D == null || D(45), I("processing", () => { + D == null || D(70); + }); + } + function sA() { + n(), Z(c, P.computeStep, { state: H }), z(c, "returned-to-controls", { state: H }), D == null || D(20), I("controls"); + } + R(G); + const CA = x === "result" && j.visualClass.includes("paradox"), YA = { + "--gc-primary": (s == null ? void 0 : s.primary) || "#248a00", + "--gc-accent": (s == null ? void 0 : s.accent) || "#1c6a00", + "--gc-bg": (s == null ? void 0 : s.bg) || "#ffffff", + "--gc-bg-secondary": (s == null ? void 0 : s.bgSecondary) || "#616161", + "--gc-text": (s == null ? void 0 : s.text) || "#0f172a", + "--gc-text-muted": (s == null ? void 0 : s.textMuted) || "#eaffd8", + "--gc-border": (s == null ? void 0 : s.border) || "rgba(255,255,255,0.12)", + "--assumption-frame-image": `url(${HA})` + }; + return /* @__PURE__ */ A("div", { className: `gc-assumption-toggle ${d || ""}`.trim(), style: YA, children: /* @__PURE__ */ A("div", { className: "component-shell", children: /* @__PURE__ */ A("div", { className: "main-wrapper", children: /* @__PURE__ */ A("div", { className: `crt-screen ${CA ? "paradox-errors" : ""}`, children: /* @__PURE__ */ B("div", { className: `slides-wrapper ${T}`, children: [ + x === "splash" && /* @__PURE__ */ A("div", { className: "slide slide-splash", children: /* @__PURE__ */ B("div", { className: "splash-content", children: [ + /* @__PURE__ */ A("h1", { children: "Foundational Assumption Recombinator Tool" }), + /* @__PURE__ */ A("h2", { children: "v1.0" }), + /* @__PURE__ */ A( + "button", + { + type: "button", + className: "action-button", + onClick: gA, + onMouseEnter: () => M("initialize"), + onFocus: () => M("initialize"), + children: "Initialize" + } + ) + ] }) }), + x === "controls" && /* @__PURE__ */ B("div", { className: "slide slide-controls", children: [ + /* @__PURE__ */ A("div", { className: "widget-header", children: /* @__PURE__ */ A("h1", { children: "Settings" }) }), + /* @__PURE__ */ B("div", { className: "switch-group", children: [ + /* @__PURE__ */ B("div", { className: "switch-item", children: [ + /* @__PURE__ */ A( + "input", + { + id: `${w.id}-toggle-universe`, + className: "switch-input", + type: "checkbox", + checked: G.continuousUniverse, + onChange: (g) => l("continuousUniverse", g.target.checked) + } + ), + /* @__PURE__ */ B( + "label", + { + className: "toggle-track", + htmlFor: `${w.id}-toggle-universe`, + onMouseEnter: () => M("toggle-universe"), + children: [ + /* @__PURE__ */ A("span", { className: "option-left", children: "Discrete Universe" }), + /* @__PURE__ */ A("span", { className: "option-right", children: "Continuous Universe" }) + ] + } + ) + ] }), + /* @__PURE__ */ B("div", { className: "switch-item", children: [ + /* @__PURE__ */ A( + "input", + { + id: `${w.id}-toggle-precision`, + className: "switch-input", + type: "checkbox", + checked: G.infinitePrecision, + onChange: (g) => l("infinitePrecision", g.target.checked) + } + ), + /* @__PURE__ */ B( + "label", + { + className: "toggle-track", + htmlFor: `${w.id}-toggle-precision`, + onMouseEnter: () => M("toggle-precision"), + children: [ + /* @__PURE__ */ A("span", { className: "option-left", children: "Finite Precision" }), + /* @__PURE__ */ A("span", { className: "option-right", children: "Infinite Precision" }) + ] + } + ) + ] }), + /* @__PURE__ */ B("div", { className: "switch-item", children: [ + /* @__PURE__ */ A( + "input", + { + id: `${w.id}-toggle-particles`, + className: "switch-input", + type: "checkbox", + checked: G.chunkParticles, + onChange: (g) => l("chunkParticles", g.target.checked) + } + ), + /* @__PURE__ */ B( + "label", + { + className: "toggle-track", + htmlFor: `${w.id}-toggle-particles`, + onMouseEnter: () => M("toggle-particles"), + children: [ + /* @__PURE__ */ A("span", { className: "option-left", children: "Point Particles" }), + /* @__PURE__ */ A("span", { className: "option-right", children: "Chunk Particles" }) + ] + } + ) + ] }) + ] }), + /* @__PURE__ */ A( + "button", + { + type: "button", + className: "action-button", + onClick: BA, + onMouseEnter: () => M("simulate"), + onFocus: () => M("simulate"), + children: "Simulate" + } + ) + ] }), + x === "result" && /* @__PURE__ */ B("div", { className: "slide slide-result", children: [ + /* @__PURE__ */ B("div", { className: "bottom-container", children: [ + /* @__PURE__ */ A("div", { className: "visualization-container", children: /* @__PURE__ */ A("div", { className: `art-canvas ${j.visualClass}`, children: /* @__PURE__ */ A(MA, { visualClass: j.visualClass }) }) }), + /* @__PURE__ */ B("div", { className: "result-container", children: [ + /* @__PURE__ */ A("div", { className: "summary-box", children: /* @__PURE__ */ A("span", { className: `result-value result-${j.tone}`, children: j.outcome }) }), + /* @__PURE__ */ A("div", { className: "summary-box", children: /* @__PURE__ */ A("div", { className: "intermediate-result", children: j.intermediate }) }), + /* @__PURE__ */ A("span", { className: "result-description", children: j.description }) + ] }) + ] }), + /* @__PURE__ */ A( + "button", + { + type: "button", + className: "action-button secondary", + onClick: sA, + onMouseEnter: () => M("back"), + onFocus: () => M("back"), + children: "Back" + } + ) + ] }), + x === "processing" && /* @__PURE__ */ A("div", { className: "slide slide-processing", children: /* @__PURE__ */ B("div", { className: "processing-shell", children: [ + /* @__PURE__ */ B("div", { className: "processing-header", children: [ + /* @__PURE__ */ A("span", { className: "processing-led" }), + /* @__PURE__ */ A("h2", { children: "Computing Assumption Matrix" }) + ] }), + /* @__PURE__ */ A("div", { className: "processing-subtitle", children: "Applying Constructor Theoretic Constraints" }), + /* @__PURE__ */ B("div", { className: "processing-terminal", children: [ + wA.map((g, Y) => /* @__PURE__ */ B("div", { className: "processing-line", children: [ + /* @__PURE__ */ A("span", { className: "processing-prompt", children: ">" }), + /* @__PURE__ */ A("span", { children: g }) + ] }, `${g}-${Y}`)), + /* @__PURE__ */ B("div", { className: "processing-line processing-line-active", children: [ + /* @__PURE__ */ A("span", { className: "processing-prompt", children: ">" }), + /* @__PURE__ */ A("span", { children: DA }), + /* @__PURE__ */ A("span", { className: "processing-cursor" }) + ] }) + ] }) + ] }) }) + ] }) }) }) }) }); +} +const jA = { + name: "assumption-toggle", + displayName: "Assumption Toggle", + version: "1.0.0", + paramSchema: { + continuousUniverse: { + type: "boolean", + label: "Continuous Universe", + description: "Toggle between a discrete and continuous universe model.", + default: !0 + }, + infinitePrecision: { + type: "boolean", + label: "Infinite Precision", + description: "Toggle between finite and infinite precision.", + default: !0 + }, + chunkParticles: { + type: "boolean", + label: "Chunk Particles", + description: "Toggle between point particles and chunk particles.", + default: !1 + } + }, + defaultParams: { + continuousUniverse: !0, + infinitePrecision: !0, + chunkParticles: !1 + } +}; +export { + xA as default, + jA as metadata +}; +//# sourceMappingURL=assumption-toggle.js.map diff --git a/dist/vendor/glitch/glitch_assumption_toggle/assumption-toggle.js.map b/dist/vendor/glitch/glitch_assumption_toggle/assumption-toggle.js.map new file mode 100644 index 0000000..d52bfd3 --- /dev/null +++ b/dist/vendor/glitch/glitch_assumption_toggle/assumption-toggle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assumption-toggle.js","sources":["../technoborder.png","../src/hostBridge.ts","../src/Component.tsx","../src/index.tsx"],"sourcesContent":["export default \"data:image/png;base64,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\"","import type { GlitchHostBridge } from './types';\n\nexport const HOST_SOUND_EVENT = 'glitch:play-sound';\nexport const HOST_STOP_SOUND_EVENT = 'glitch:stop-sound';\nexport const HOST_EMIT_PREFIX = 'glitch:host:';\n\nexport const SOUND_IDS = {\n click: 'ui.button_click',\n hover: 'ui.button_hover',\n computeStart: 'machine.compute_start',\n computeStep: 'machine.compute_step',\n computeDone: 'machine.compute_done',\n verdictStable: 'machine.verdict_stable',\n verdictAlert: 'machine.verdict_alert'\n} as const;\n\nexport type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS];\n\nfunction dispatchWindowEvent(type: string, detail: T) {\n if (typeof window === 'undefined') return;\n window.dispatchEvent(new CustomEvent(type, { detail }));\n}\n\nexport function safePlaySound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.playSound) {\n host.playSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_SOUND_EVENT, { id, payload });\n}\n\nexport function safeStopSound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.stopSound) {\n host.stopSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_STOP_SOUND_EVENT, { id, payload });\n}\n\nexport function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown) {\n try {\n if (host?.emit) {\n host.emit(type, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(`${HOST_EMIT_PREFIX}${type}`, payload);\n}\n","import { useEffect, useRef, useState, type CSSProperties } from 'react';\nimport frameImage from '../technoborder.png';\nimport { SOUND_IDS, safeEmit, safePlaySound, safeStopSound } from './hostBridge';\nimport type { GlitchComponentProps } from './types';\n\ntype Screen = 'splash' | 'controls' | 'processing' | 'result';\ntype ProcessingLine = {\n label: string;\n value: string;\n};\ntype TransitionState = '' | 'crt-collapse' | 'crt-expand';\ntype VisualClass =\n | 'paradox-point'\n | 'stable-chunk'\n | 'paradox-chunk'\n | 'non-standard-particle-point'\n | 'non-standard-particle-chunk'\n | 'standard-particle-point'\n | 'standard-particle-chunk';\ntype OutcomeTone = 'stable' | 'warning' | 'paradox' | 'uncertain';\n\ntype ToggleState = {\n continuousUniverse: boolean;\n infinitePrecision: boolean;\n chunkParticles: boolean;\n};\n\ntype OutcomeDefinition = {\n outcome: string;\n description: string;\n intermediate: string;\n visualClass: VisualClass;\n tone: OutcomeTone;\n};\n\nconst DEFAULT_STATE: ToggleState = {\n continuousUniverse: true,\n infinitePrecision: true,\n chunkParticles: false\n};\n\nconst OUTCOMES: Record = {\n '000': {\n outcome: 'Paradoxical',\n intermediate: 'Very very much information.',\n description: 'Space is supposed to be discrete, but each cell must contain ar arbitrary amount of information.',\n visualClass: 'paradox-point',\n tone: 'paradox'\n },\n '001': {\n outcome: 'Digital Physics',\n intermediate: 'Instruction programs remain finite.',\n description: 'Stable but requires continuous rotational symmetry to be emergent',\n visualClass: 'stable-chunk',\n tone: 'stable'\n },\n '010': {\n outcome: '#1 Memory Paradox',\n intermediate: 'Move sets can scale to infinite length',\n description: 'Infinte memory per cell',\n visualClass: 'paradox-point',\n tone: 'paradox'\n },\n '011': {\n outcome: '#2 Memory Paradox',\n intermediate: 'Move sets can scale to infinite length',\n description: 'Chunky particles must grow without bound to hold infinite move set',\n visualClass: 'paradox-chunk',\n tone: 'paradox'\n },\n '100': {\n outcome: 'Paradoxical',\n intermediate: 'Chunky geometry implies discrete space',\n description: 'A continuous universe with chunky particles spanning fundamental cells is a constadiction.',\n visualClass: 'non-standard-particle-point',\n tone: 'warning'\n },\n '101': {\n outcome: 'Paradoxical',\n intermediate: 'The geometry breaks isotropy.',\n description: 'Continuous universe plus chunk particles that imply discrete space is a constradiction.',\n visualClass: 'non-standard-particle-chunk',\n tone: 'warning'\n },\n '110': {\n outcome: 'Standard Physics',\n intermediate: 'The model remains isotropic.',\n description: 'Continuous space with infinite precision preserves the canonical picture.',\n visualClass: 'standard-particle-point',\n tone: 'stable'\n },\n '111': {\n outcome: 'Contradictory',\n intermediate: 'Continuous universe cannot be combined with chunk particles.',\n description: 'Chunky cannot be not chunky',\n visualClass: 'standard-particle-chunk',\n tone: 'uncertain'\n }\n};\n\nconst PROCESSING_LOGS: Record = {\n \"000\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Point state exceeds single-cell information budget\" },\n { label: \"Verdict trace\", value: \"Single cell must have arbitrary information capacity\" }\n ],\n \"001\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Chunk particle geometry engaged\" },\n { label: \"Consistency check\", value: \"State remains compressible under finite instruction length\" },\n { label: \"Verdict trace\", value: \"Digital physics interpretation remains internally stable\" }\n ],\n \"010\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Each lattice cell requires unbounded memory\" },\n { label: \"Verdict trace\", value: \"Inconsistent with isotropy\" }\n ],\n \"011\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Chunk particle\" },\n { label: \"Consistency check\", value: \"Particles grow to express information\" },\n { label: \"Verdict trace\", value: \"Chunk particles grow to infinite size\" }\n ],\n \"100\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Severely demotivated\" },\n { label: \"Verdict trace\", value: \"No explanation for rejecting CRS. Smell detected.\" }\n ],\n \"101\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Chunk particle geometry engaged\" },\n { label: \"Consistency check\", value: \"Space is quantized but cells infinitely small\" },\n { label: \"Verdict trace\", value: \"Non-standard hybrid geometry. Smell detected\" }\n ],\n \"110\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Canonical isotropic field picture remains intact\" },\n { label: \"Verdict trace\", value: \"Standard physics baseline recovered successfully\" }\n ],\n \"111\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Chunk particle geometry engaged\" },\n { label: \"Consistency check\", value: \"Inconsistent.\" },\n { label: \"Verdict trace\", value: \"Chunk particle cannot be not chunky\" }\n ]\n};\n\nfunction coerceBoolean(value: unknown, fallback: boolean) {\n if (typeof value === 'boolean') return value;\n return fallback;\n}\n\nfunction readToggleState(params: Record | undefined): ToggleState {\n return {\n continuousUniverse: coerceBoolean(params?.continuousUniverse, DEFAULT_STATE.continuousUniverse),\n infinitePrecision: coerceBoolean(params?.infinitePrecision, DEFAULT_STATE.infinitePrecision),\n chunkParticles: coerceBoolean(params?.chunkParticles, DEFAULT_STATE.chunkParticles)\n };\n}\n\nfunction buildStateKey(state: ToggleState) {\n return [\n state.continuousUniverse ? '1' : '0',\n state.infinitePrecision ? '1' : '0',\n state.chunkParticles ? '1' : '0'\n ].join('');\n}\n\nfunction buildAssumptionsText(state: ToggleState) {\n const universe = state.continuousUniverse ? 'Continuous universe' : 'Discrete universe';\n const precision = state.infinitePrecision ? 'Infinite precision' : 'Finite precision';\n const particles = state.chunkParticles ? 'Chunk particles' : 'Point particles';\n return `${universe} + ${precision} + ${particles}`;\n}\n\nfunction getScore(outcome: OutcomeDefinition) {\n if (outcome.tone === 'stable') return 100;\n if (outcome.tone === 'uncertain') return 60;\n if (outcome.tone === 'warning') return 40;\n return 20;\n}\n\nfunction Visualization({ visualClass }: { visualClass: VisualClass }) {\n if (visualClass === 'paradox-point') {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n );\n }\n\n if (visualClass === 'stable-chunk') {\n return (\n
\n
\n {Array.from({ length: 9 }, (_, index) => (\n \n ))}\n
\n
\n \n
\n
\n
\n
\n
\n );\n }\n\n if (visualClass === 'paradox-chunk') {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n {Array.from({ length: 10 }, (_, index) => (\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n );\n }\n\n if (visualClass === 'non-standard-particle-point') {\n return (\n
\n
\n
\n
\n
\n );\n }\n\n if (visualClass === 'non-standard-particle-chunk') {\n return (\n
\n
\n
\n
\n
\n );\n }\n\n if (visualClass === 'standard-particle-point') {\n return (\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n );\n }\n\n return (\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n ?\n
\n
\n );\n}\n\nexport default function AssumptionToggle({\n config,\n onComplete,\n onProgress,\n theme,\n className,\n host\n}: GlitchComponentProps) {\n const [toggleState, setToggleState] = useState(() => readToggleState(config.params));\n const [screen, setScreen] = useState('splash');\n const [transitionState, setTransitionState] = useState('');\n const [result, setResult] = useState(() => OUTCOMES[buildStateKey(readToggleState(config.params))]);\n const [processingKey, setProcessingKey] = useState(() => buildStateKey(readToggleState(config.params)));\n const [processingAssumptions, setProcessingAssumptions] = useState(() =>\n buildAssumptionsText(readToggleState(config.params))\n );\n const [completedLines, setCompletedLines] = useState([]);\n const [activeLine, setActiveLine] = useState('');\n const timeoutsRef = useRef([]);\n const hostRef = useRef(host);\n const onCompleteRef = useRef(onComplete);\n const onProgressRef = useRef(onProgress);\n\n useEffect(() => {\n setToggleState(readToggleState(config.params));\n }, [config.params]);\n\n useEffect(() => {\n hostRef.current = host;\n onCompleteRef.current = onComplete;\n onProgressRef.current = onProgress;\n }, [host, onComplete, onProgress]);\n\n useEffect(() => {\n if (screen !== 'processing') return;\n\n const lines = PROCESSING_LOGS[processingKey] ?? [];\n let cancelled = false;\n\n setCompletedLines([]);\n setActiveLine('');\n\n const typeLine = (lineIndex: number, charIndex: number) => {\n if (cancelled) return;\n\n if (lineIndex >= lines.length) {\n queueTimeout(() => {\n if (cancelled) return;\n const finalResult = OUTCOMES[processingKey];\n safePlaySound(hostRef.current, SOUND_IDS.computeDone, { state: processingKey });\n runTransition('result', () => {\n onProgressRef.current?.(100);\n safePlaySound(\n hostRef.current,\n finalResult.tone === 'stable' ? SOUND_IDS.verdictStable : SOUND_IDS.verdictAlert,\n { state: processingKey, outcome: finalResult.outcome }\n );\n safeEmit(hostRef.current, 'verdict-ready', {\n state: processingKey,\n outcome: finalResult.outcome,\n tone: finalResult.tone\n });\n onCompleteRef.current({\n success: true,\n score: getScore(finalResult),\n data: {\n assumptions: processingAssumptions,\n state: processingKey,\n outcome: finalResult.outcome,\n intermediate: finalResult.intermediate,\n description: finalResult.description,\n processingTrace: PROCESSING_LOGS[processingKey].map((entry) => `${entry.label}: ${entry.value}`)\n }\n });\n });\n }, 520);\n return;\n }\n\n const fullLine = `${lines[lineIndex].label}: ${lines[lineIndex].value}`;\n\n if (charIndex <= fullLine.length) {\n if (charIndex === 0) {\n safePlaySound(hostRef.current, SOUND_IDS.computeStep, { state: processingKey, lineIndex });\n }\n setActiveLine(fullLine.slice(0, charIndex));\n queueTimeout(() => typeLine(lineIndex, charIndex + 1), 24);\n return;\n }\n\n setCompletedLines((current) => [...current, fullLine]);\n setActiveLine('');\n if (lineIndex === lines.length - 1) {\n safeStopSound(hostRef.current, SOUND_IDS.computeStep, { state: processingKey, lineIndex });\n }\n queueTimeout(() => typeLine(lineIndex + 1, 0), 170);\n };\n\n queueTimeout(() => typeLine(0, 0), 180);\n\n return () => {\n cancelled = true;\n safeStopSound(hostRef.current, SOUND_IDS.computeStep, { state: processingKey });\n };\n }, [processingAssumptions, processingKey, screen]);\n\n useEffect(() => {\n return () => {\n clearQueuedTimeouts();\n };\n }, []);\n\n function clearQueuedTimeouts() {\n for (const timeout of timeoutsRef.current) {\n window.clearTimeout(timeout);\n }\n timeoutsRef.current = [];\n }\n\n function queueTimeout(callback: () => void, delay: number) {\n const timeout = window.setTimeout(callback, delay);\n timeoutsRef.current.push(timeout);\n }\n\n function runTransition(nextScreen: Screen, onSwapped?: () => void) {\n clearQueuedTimeouts();\n setTransitionState('crt-collapse');\n queueTimeout(() => {\n setScreen(nextScreen);\n onSwapped?.();\n setTransitionState('crt-expand');\n queueTimeout(() => {\n setTransitionState('');\n }, 110);\n }, 110);\n }\n\n function setToggle(key: K, value: ToggleState[K]) {\n setToggleState(current => ({ ...current, [key]: value }));\n safePlaySound(host, SOUND_IDS.click, { control: key, value });\n }\n\n function handleUiHover(target: string) {\n safePlaySound(host, SOUND_IDS.hover, { target });\n }\n\n function handleInitialize() {\n safeEmit(host, 'session-started', { component: config.name, id: config.id });\n onProgress?.(10);\n runTransition('controls');\n }\n\n function handleSimulate() {\n const nextKey = buildStateKey(toggleState);\n const nextResult = OUTCOMES[nextKey];\n const nextAssumptions = buildAssumptionsText(toggleState);\n setProcessingKey(nextKey);\n setProcessingAssumptions(nextAssumptions);\n setResult(nextResult);\n safePlaySound(host, SOUND_IDS.computeStart, { state: nextKey });\n safeEmit(host, 'processing-started', {\n state: nextKey,\n assumptions: nextAssumptions\n });\n onProgress?.(45);\n runTransition('processing', () => {\n onProgress?.(70);\n });\n }\n\n function handleBack() {\n clearQueuedTimeouts();\n safeStopSound(host, SOUND_IDS.computeStep, { state: processingKey });\n safeEmit(host, 'returned-to-controls', { state: processingKey });\n onProgress?.(20);\n runTransition('controls');\n }\n\n const assumptionsText = buildAssumptionsText(toggleState);\n const showParadoxScreen = screen === 'result' && result.visualClass.includes('paradox');\n const rootStyle = {\n '--gc-primary': theme?.primary || '#248a00',\n '--gc-accent': theme?.accent || '#1c6a00',\n '--gc-bg': theme?.bg || '#ffffff',\n '--gc-bg-secondary': theme?.bgSecondary || '#616161',\n '--gc-text': theme?.text || '#0f172a',\n '--gc-text-muted': theme?.textMuted || '#eaffd8',\n '--gc-border': theme?.border || 'rgba(255,255,255,0.12)',\n '--assumption-frame-image': `url(${frameImage})`\n } as CSSProperties;\n\n return (\n
\n
\n
\n
\n
\n {screen === 'splash' && (\n
\n
\n

Foundational Assumption Recombinator Tool

\n

v1.0

\n handleUiHover('initialize')}\n onFocus={() => handleUiHover('initialize')}\n >\n Initialize\n \n
\n
\n )}\n\n {screen === 'controls' && (\n
\n
\n

Settings

\n
\n\n
\n
\n setToggle('continuousUniverse', event.target.checked)}\n />\n handleUiHover('toggle-universe')}\n >\n Discrete Universe\n Continuous Universe\n \n
\n\n
\n setToggle('infinitePrecision', event.target.checked)}\n />\n handleUiHover('toggle-precision')}\n >\n Finite Precision\n Infinite Precision\n \n
\n\n
\n setToggle('chunkParticles', event.target.checked)}\n />\n handleUiHover('toggle-particles')}\n >\n Point Particles\n Chunk Particles\n \n
\n
\n\n handleUiHover('simulate')}\n onFocus={() => handleUiHover('simulate')}\n >\n Simulate\n \n
\n )}\n\n {screen === 'result' && (\n
\n
\n
\n
\n \n
\n
\n\n
\n \n
\n {result.outcome}\n
\n\n
\n \n
{result.intermediate}
\n
\n {result.description}\n
\n\n \n
\n\n handleUiHover('back')}\n onFocus={() => handleUiHover('back')}\n >\n Back\n \n
\n )}\n\n {screen === 'processing' && (\n
\n
\n
\n \n

Computing Assumption Matrix

\n
\n
Applying Constructor Theoretic Constraints
\n
\n {completedLines.map((line, index) => (\n
\n >\n {line}\n
\n ))}\n
\n >\n {activeLine}\n \n
\n
\n
\n
\n )}\n
\n
\n
\n
\n
\n );\n}\n","import './styles.css';\nimport Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'assumption-toggle',\n displayName: 'Assumption Toggle',\n version: '1.0.0',\n paramSchema: {\n continuousUniverse: {\n type: 'boolean',\n label: 'Continuous Universe',\n description: 'Toggle between a discrete and continuous universe model.',\n default: true\n },\n infinitePrecision: {\n type: 'boolean',\n label: 'Infinite Precision',\n description: 'Toggle between finite and infinite precision.',\n default: true\n },\n chunkParticles: {\n type: 'boolean',\n label: 'Chunk Particles',\n description: 'Toggle between point particles and chunk particles.',\n default: false\n }\n },\n defaultParams: {\n continuousUniverse: true,\n infinitePrecision: true,\n chunkParticles: false\n }\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult\n} from './types';\n"],"names":["frameImage","HOST_SOUND_EVENT","HOST_STOP_SOUND_EVENT","HOST_EMIT_PREFIX","SOUND_IDS","dispatchWindowEvent","type","detail","safePlaySound","host","id","payload","safeStopSound","safeEmit","DEFAULT_STATE","OUTCOMES","PROCESSING_LOGS","coerceBoolean","value","fallback","readToggleState","params","buildStateKey","state","buildAssumptionsText","universe","precision","particles","getScore","outcome","Visualization","visualClass","jsxs","jsx","_","index","AssumptionToggle","config","onComplete","onProgress","theme","className","toggleState","setToggleState","useState","screen","setScreen","transitionState","setTransitionState","result","setResult","processingKey","setProcessingKey","processingAssumptions","setProcessingAssumptions","completedLines","setCompletedLines","activeLine","setActiveLine","timeoutsRef","useRef","hostRef","onCompleteRef","onProgressRef","useEffect","lines","cancelled","typeLine","lineIndex","charIndex","queueTimeout","finalResult","runTransition","_a","entry","fullLine","current","clearQueuedTimeouts","timeout","callback","delay","nextScreen","onSwapped","setToggle","key","handleUiHover","target","handleInitialize","handleSimulate","nextKey","nextResult","nextAssumptions","handleBack","showParadoxScreen","rootStyle","event","line","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vendor/glitch/glitch_assumption_toggle/dev.d.ts b/dist/vendor/glitch/glitch_assumption_toggle/dev.d.ts new file mode 100644 index 0000000..2c068e0 --- /dev/null +++ b/dist/vendor/glitch/glitch_assumption_toggle/dev.d.ts @@ -0,0 +1 @@ +import './dev-theme.css'; diff --git a/dist/vendor/glitch/glitch_assumption_toggle/devHostBridge.d.ts b/dist/vendor/glitch/glitch_assumption_toggle/devHostBridge.d.ts new file mode 100644 index 0000000..3fba17e --- /dev/null +++ b/dist/vendor/glitch/glitch_assumption_toggle/devHostBridge.d.ts @@ -0,0 +1,8 @@ +import type { GlitchHostBridge } from './types'; +export type DevHostBridgeOptions = { + isMuted?: () => boolean; + onSound?: (id: string, payload?: Record) => void; + onEmit?: (type: string, payload?: unknown) => void; +}; +export declare function createDevHostBridge(options?: DevHostBridgeOptions): GlitchHostBridge; +export declare function attachWindowSoundBridge(host: GlitchHostBridge): () => void; diff --git a/dist/vendor/glitch/glitch_assumption_toggle/glitch.manifest.json b/dist/vendor/glitch/glitch_assumption_toggle/glitch.manifest.json new file mode 100644 index 0000000..15df320 --- /dev/null +++ b/dist/vendor/glitch/glitch_assumption_toggle/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "assumption-toggle", + "displayName": "Assumption Toggle", + "version": "1.0.0", + "folderName": "glitch_assumption_toggle", + "packageName": "@nommo/assumption-toggle", + "entry": "dist/assumption-toggle.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "crt", + "logic" + ] +} diff --git a/dist/vendor/glitch/glitch_assumption_toggle/hostBridge.d.ts b/dist/vendor/glitch/glitch_assumption_toggle/hostBridge.d.ts new file mode 100644 index 0000000..fa85f46 --- /dev/null +++ b/dist/vendor/glitch/glitch_assumption_toggle/hostBridge.d.ts @@ -0,0 +1,17 @@ +import type { GlitchHostBridge } from './types'; +export declare const HOST_SOUND_EVENT = "glitch:play-sound"; +export declare const HOST_STOP_SOUND_EVENT = "glitch:stop-sound"; +export declare const HOST_EMIT_PREFIX = "glitch:host:"; +export declare const SOUND_IDS: { + readonly click: "ui.button_click"; + readonly hover: "ui.button_hover"; + readonly computeStart: "machine.compute_start"; + readonly computeStep: "machine.compute_step"; + readonly computeDone: "machine.compute_done"; + readonly verdictStable: "machine.verdict_stable"; + readonly verdictAlert: "machine.verdict_alert"; +}; +export type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS]; +export declare function safePlaySound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeStopSound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown): void; diff --git a/dist/vendor/glitch/glitch_assumption_toggle/index.d.ts b/dist/vendor/glitch/glitch_assumption_toggle/index.d.ts new file mode 100644 index 0000000..40a25ac --- /dev/null +++ b/dist/vendor/glitch/glitch_assumption_toggle/index.d.ts @@ -0,0 +1,6 @@ +import './styles.css'; +import Component from './Component'; +import type { GlitchComponentMetadata } from './types'; +export default Component; +export declare const metadata: GlitchComponentMetadata; +export type { GlitchComponentProps, GlitchComponentConfig, GlitchComponentResult } from './types'; diff --git a/dist/vendor/glitch/glitch_assumption_toggle/sounds/.DS_Store b/dist/vendor/glitch/glitch_assumption_toggle/sounds/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0qxn%n!URkn6(-IdLXz?4p9YLOEGEzN0F2CFOz}@* z7fY^MAXdV-@MOS0o%BAr=o?cYgC-FmsfDb5b#q?epY*>$BQz;NDE9{ALYI%+m{mn0 z^w@}Gp!up@L?w+Z6MYGo9LggCblLo`F%VD~UHIpiXqFXJX!UQn04pCzr34YYByuy_ zxFq!zVfYwQs9#$D#}-ODL8c(zAbH5pMif~LAzu+Wk1E$!l3gtA42h&s6PCoPJ&h{h z|5*Q(LRc^}U!4m(s10bN^Vgi9=DM-kYu^8N+ai*+MTwt)w$lOdc7GRJRF(fD=_*8_T z^a+maBH12JjQ`i(|NRu8By&Mhmi!$80(xvh@$yjv8pVQ3g5`G z`sm=C>~r8+s2fKHyaKejkOHEFB!_%681Vo2LjsD7#ch`fBoIPDcFOmUAFL>`=iV!6 zvZ(9jzw=&I)bQCVV9IQR-?+%&IY0BiPlfn@9032EE`J{0_&X3#x`Ie^uK>n>|0h?6Wa#sr6v5tkJ2AR8R8J zN=+4#*Mx3`)*MaRv^4Ezq+GKkT3t&_%_fHM#PR}RZyIv;0^y3G#PYTZgXS@@??FnC zG^@`1{k_f;1-%w0#1aI{3Cb)wHSl-^&Gy$XXzQ0!p7X|$(lq43`*xot-4K(_>C
    tZiG$@j?7#tFVE`l$F&?9L4}Zqm^hiTbOaV2N}o{smC@g44Gpp6Bv5Zid(+xN1}V&X+u z-*L1vXC^(dQ#(4}XS4--3oBt>wr!+CQdi1@&Tmc?bGP|RUgBFkMh~{P#L(=y28@D* zk0#Im!6gDP5=PyAfrf<|7j9e#p?P0K*7((>j=J_LpFRA!lgUylK6VOcPqZH}WI8uN zZ`hagXnn1Zl7J2k+_mu`XCsR zX$Ve{(~!}%NNnYCcr`R5u&<9i)%$p~Z}&NatmiZ4bd!;&8B)8qbxqQB;uP|d?XfS~ zOg+i3$7E^W!}k^V%SvbY^2vaS+J|q#6y}i}hmTqAhqxYB*gledbuofr&y~B9_6fG| z$6el`mezrA?pD=mCK9})NZal|tDPq2CUW%KpW&R&A_Jqs!9FG`MEtJP-Zle<$h2@z z3!XeT2!jiB;iR0|DowPLYHLhz%w~(zoZ(unPP=%E$vZIc_pKs8_nWP7)wqWn%mh{n z+UMnme^bZ|6F3{onfPJ~gb%x5Sv^;JTSH39kPQ*aZM9tS$W&ALHB@eTmQP-9S?{}< ztwtWqV@IypgFg`qj~Qz-XhbVETJWFo=*N{HU7U{ZuG2}42}AE*=;{ou>kV=AG}kjP z`Jzuq)J@NSc)zGo(%{<7o^e}$offyW`ujr_jPo>T{QlWsJ)c6@#@ zx~s)sbeSFSQ&dOGty$Q0ePaS$J^0j5dTV7XVk5ajlPCNINJNKtT@#0%BEgI-o4^`Q zre<#PygWdMS{r>I*gXIO0u2Dh_y@iG^|Lez_)wvb&mURyocGJf<2xN$m7ei*qMC}A z%I#xaWv~A07D9e-E>NoI(<2a#j?IP{uCTr3l_MpbPUHNq`b*B>Uuo8i$%sWdqKv4{ zQ%7DQRrx51&`jV42t<*ReMH-i(0>9&nRX!RET`ex45>h5kNPiR+H-B|FGM|CrYYyEu{K?3oO zX7^9%8&yKT?=X`hYy7HCU8SIgA|##WfhX{nGh16`pzz3-9h0qNJgTUxfSJvF(In=Y zdp*u*S4obeFCR>F2}{c=tscirnv|1Ajm0a{@4nHT9X_s_L_myoe{OLepA%2ExCYGX zN^SVdpUJO@B3fH~ovRf3r6s-av^xGGad;-*=FDrsL_?Bq@*uy~ReuPJy~#XDh`Sj&gIX65>2X$r1-k;OP;39|USF~@`2FY7FZ)S-Y{>3@2!hPI%E@2*BF57o1 zZ9kC;!R+n8Crb<Wm!q$K`iCJ)vzvB@H@2^d z)C#)K==3;~m(1ye!)JMV`fY2m^WM>89um!kW<9FJVVxOAX)NM$g;d*BQllUQ3$(uF z!1t0W&J&$}rWPBX<=Ey~GCaiRK{l`!hVeMB{1ob%Mr>FmpZa$iq+u_hk9~^kS=0HV zMbCH9>jHPQ3VWw<=Dh%$$xv$?|8SX z8tgq}jppY!%dnj(&T>vNvyEM*pMbpUeqVJzpeQ7fx49iAxal~zzTc+3c`NZp9$I{8 zU3dFW=!Rc*$KGkumM!}GqKqi#9%8s<`Ta0Bv--~>+t^@Hyq5Bjslp!=WKqN-Vt>M2 zQsT}EKj|38Zl=0qp61tE{f>LCOLnZ>aiM${dN=2p{jjATE)?FN1$|8Sm@%Q-GPqub zFE3M7e8~S2(hz4;?kapf-VkR}TtK(TK2XM`y{Yb%mg;!!oV}^J=hgA^tnW5w`@}`# zgza=GL$&D%T8?AO$XKP3Rut#;G8#*88!0#@gS-j(Icc2MW?Eb7gGEloCQArJdF=Ga zNZ!Drh>jeD1_J9R?u)=!W^n4byMz+#AOi~nVd>7bZ_WvfYEfh+$PkfYv{`WyaglI`eaNM5PawLBfOr zYy8V|Qscy-^Dgtbyl$e3Eb-%ZeJxtL-I6mGw%jVZ?z5I#bCT2YXVgiLwsSsxsF9>i z-Ci=HNRE}av8EmjDQC#gzUZTdRj`&Em^E&O@Hi6v=2M#15w2hdccthHfn{;Cj{b|B ztVx#l%o0*f<&*Lvo=iY;?9BDUE6nA3%XTxzJW=HL1GG~;^^E&J*f{`0{ZFiAzA~Y zx0aY7a-B>OoRXc?;s#faRK?(mTtQEp)`mrqgbISzOqAVm7kUsCmI%X(Q6*@$oV`xWn-uzEMM zR5DpWBL8G9OnLOM0-j|{KX@*5IzEFqt?rEcC_TH^aE+e9h{jh^Z&O`^t0hXx+rHC0 zgN2JRkt%UvweI_Um0f_bW@7swYYS#MT$a4gTYfy6wawd_0n$iW@IM?Y%morjah+VzSV)-r0 zD1bTEo5ouxNGO;kpQo3{XEr3h%mWn!BUXvsUw6mc^3kwtGb7LCUD zv<8H^qz-o2grWdx5$=G?^{%qbSWwHO_i%CW8&=t;b8*r|v=ZeQ>J6YhZa{wF`o zUn^(Bf{%(cEGSoAo#nIkd$`T9-t@Y?l-|Wix&=_}N>xtVwFH9;vWgQiZ-_j{)WQWY zskXNmaK`^Cn)u9x#)v1_HAfkhZ%*eo9zUDipQ4FHvh^rTnV0Y4mdVL?I<+}s0wlt}G*rGdZ14VNRHJHudb?qs z|2hp$i3sH=EA9E90lms$l#+eyVQgsOj$boWm2Cq|Z$d^<6JBQ49T89~U`DHoUE7+g z8MDJi7K(UrvKm~JEnb$sVVBo`)#V5eb5vJ?PvR!7h$L~|EW!)m$!dRZP0>`+9OTfr zVskT3Yb+#=I&!3Jsw6dfYbDC+lTFO#c;)TP6Oe#>M^&es`UqkzA56%;A}ss3MVAai zxC#>M9*78~3asx7FZGc_$Uph`@-H;**;En;$*OF(74Bxb+Q6RuNUMxi%i&J#Rx$-k z7iKjooVIn&XN+y|jpT54n$B>I`beD(_>YhHu$Q=D|1?nQjvn~A+nmd$w{zW!%x8JS zSkI@S*C;Ou6n!_n%D-UDx`9)Y48Rk*pn2YeqQN36&?hpU7B}P2@AKN=S?BWz`uw!x z4R`7Xtu2r=CxHe5}LsaNSo`Yc6S>HNF;!nVpoK-Y^HL!yi7r4ad?k zIWWEpvTze-`gG#XrjsUBrlqQuPJ6hy#Yq{LxfnvuIpeIUq5m=!nnnVO1b;y`Dnun- zxF8cukd`f&I>y8rDo7yovucjij_nf$XBMg5cNMJf;liEUDBFD?ZeDYO>Bw4+&-L$&om7jfgz5lQxL7f?F6D&*N+rImw zzl9XbH}R2p)e2#Y_~G%L`<{87IvS^go^WOIl+B?BEf{pMLeMplh@^@76=u^{o zQj-9PY+UxlXAbir1+fnsFf&?yR}Ua(GKuwRGvh18cvfZn=u-_4fk{=J*Qn_1y!Nf_FTw$DAjfa`eSjDR1mMRk}XpDsgulFEivQQJ9jk!h*t2AUY zZgdK5>y}I`uxmKGC(0;m8RQ;wkWYF<@I2>X{gyfb%{@#=h)Fx*Vs*=&hY z76}!yMOWy@b#Velt2_y}U0%kj5+N{M4QhJX(JQWWrKXP({$5>*k8VW}sPDbrySvtg zH!&V^5>0Kblczh*t{GY5n}=0=JLQGVK?3Cjg@`rcav$#^T=ZUZkt2>XMa}PU`eu+Do{llHS(#d|b;fCk?e0%TVe(2obM1c|!WIv2NsF1oPcsOE1;W2WkLYa{4 zDq4@|pFPljMM8$cT(xGDM47lO+}tOFK#6cdIzS>_fF)Brh{V&Ogf<@&DcrtXuust-aHKT)&160qlmy}*}$pc&^i$E%-rz)^2(6zd)CSXKTk?YXS& z?E7i|i|dXtLPxeSDN_g+*r@vF$*udacwzpv1CGVWy(#}deaDb6U( z^$PSXvr_<@*^zA-AaRx?@e8~J1h-Up4%V<}7p2THw3nGKH9fQpoqPF;A9NBThUK@~cw)t($8S$iosok_m<72Kld(@J zpN_FSld)2sGKl$G#AGOvE3a%WdrC8($o+bx+(-;AhME&!e3_G@H)O|MJYKhRK4zV6 z?cIvXfi&VO1SG1AH`oM`f=rl73K5X78gV@U7*-08FRIcY`SXH<0m$hwq|lxamN?HG zNo9$ylA1%5G?8S9Qzw$^@h~pKsFihUi8(XoLOu_JbaRTt@BUC&Kv-JbKcy9A?o5N) zW=JXb#@$?R{<>!U`MQGN?#9}e2)Pa!2#*6tmcdFFY=a}LiVdiBMMr2$%Cy#a9Q=R& zR9M1D)f=l?h6Uj@-tMB5u~dxX_t)vDceqckf4JNg_~gWw%3rjIoBwzuNUgr*mpcEBY+5kHG;^hg1pnomwat_&spY>uBS7^ zVrcrx(7tPifd8spynm3( zUpr%?f)9%{3{()IkNIX+`p8o*(_XQT?4Y(}rG9F=tLvpq>PY^R<)?jn|K}cK3_$X2 z#Ke(y$BEre9u*^k-9ii+su_?t*YBs)g1AdMMORyDOoq0l6q$uEzbRK0PGq=)!CKgx_JEPme6YH>KvCH=_pH*%X9Ai<#0k8W)~4+?!CzunaSD5V2H`X^Hp!EXourN=>o`z>~|zA3fp1L z($3cFwIR|~J0F$!y4%QOAGC@3;c<%9PIrG?pUs_+q#;69kmy$u5a|LI4$kl=*v=nJ z4P5-q!CmQjW~(`#_8Y1gua9hukjST7A3gmDFoqD)!7oe>i6b_ZeeIA&iz!vYAb(q# zb(RJ!iJRw?ck?4AnE1dNzRGgV=KAT&T%qZxhL7%^BZSSu49RLtyi;@d{V=5_n#}&X z*!hh6iA>ngZ>|}9LY>^`@86r|ZE(ZYc$+E&Zx?>in?z13Oodt&vO3owH}& ze#&TOa}8+JIeg%QebiRAXEoO69-|BpC@h-CK@X+N%1bVaqa&7UjnvDnbFl7ZO|~e# z&xf>2(7F2}0|J5s{)JI@Uihy+jS3t4y}8o1?e})7V;`NKDYYd{ez?o8CMR9JXe9UR z1|XNL1(hHgH1vTC)17xpwmCt4u!|wF2z`Iy^u`eC7KP#3&!7!vn||#G(MH6>H5!;z z@mh46pjaHR;EtG`&bxTpi4%bsJUT#U<(hmU^$OpU$vS-Q!DWhhG}C8Ri0a`iTm*k; z9iRPF)rminmI*~bBE@OJyy+{3%ay!%-YK0$9A7SbM3AP54;Q#~4?)O}NG13TOH?&n z>Fn!QP$NM6_KYgQ>)T20fMju>?@^Suy*OgoUX_nb@dKGKkq1KvLDDB((2e$Ifoo^~ z@%HIUj;novaX$r#T0rOo6T-IGFFe|fUXFF_tu+K!48#DM4K#B3eO{TO1MNfh*m{^4 z(a~WI;d4o5aBF32Z0bWf*;jsyh(S%PU!N8uV3n@sr{(@Jtwna(8la}|c}n6r)Q{VF z$3t6v=!6Np`S{6qYAwG{5E2g*La<~@R-|b47v4P?G69kwq8Pl8kBi6zeg~2+V*&-i zz-9_~%W%xBl9Aao-sMsHxk}Oub1x;>_JT*d9{0n8}#B<>Q7X`7Hm&{^aL4 zmU(OdmLxvq=Wg()AOY4DuYp#Y-R73Qd>kLKxQ8Elq{VA$_ZN88tcsTzP?^X%O6dHW zoomH(^x($DQ?z3q$0~02TL^ld#XL~j_{1uT;i_e&fL`XisefQFa$+3BR+4tQ*>D>PYZP;j~& z*H8H`58i}dzXooHH*4Ra_3q2#p)$276 za??xkdQuGL!74wKV{b@9pjp_+(j*p+i(b-_-}PKEL&pnd6*bo>v-~MxGuV`gxUvjD ze*9o6Z!BZS`$8e&>sMnu{4Y|gnhN?qQ$yhMN}7-*Kg61fS%u2KK0t1&+)%Nz+%A4< zRRB<;2*QYbgb8c35PuUH;Zj1;@>n~?Pq8}fjEpOdJuVlHAPQ14&u*(Vi^}X}inN1F zSh~~)K35xdm#>wfK7bHtJtehC{=51d@6QzZpLK7W|u|^rY;4nEw9Lo6~jzi6dRTlh%x;F`bp-cFlXPILtpPOz_uJ zlH=2JxkHDKlnL;!vzj=EErx3+;MT$`D?X-MpFZsE%vC5gM{=7QCRd)~QUew99{t>{ z^wpZ&!GfAfv0`Ww#>~l;Rrh;ZTWpbN zlpNg>8QVi-HlW@v>2p=vdE|Svm?+8Da`5vqY6y%(SB`$`3Jd6|6=1TYERjb+DDOWZGH(*K=i^rMI};rk$$= z2U4P|2}8y#&ySu@X|TD*qn&S`F%{DCOEvA6IDsoD^n3<~tEnQya>De5)kO^agsGwq z&7dWCflABzZ3i{GVxz0=C{=|Q!jIM$s9Xolgm7&?2s3<~pLnn@rD5?)s>6%{y8Lpa z&zh~6jP`|s0G7L&k?o20?TFVu)&kD|7RtOZgJK4AGE}Gcxm&k=wXEiPT**A+Q>}IW z?Um!9QrlNNGyn;1YPwUS1e^h`D_Ud9?g4)ma}TF(BDRMVV4`Dm)QO{-Oc|IrQWTe5 zJQ=79$i+}G!Um3?$6eo35jYg%lZ{CdbLJ4`ns7Z;UUjxf(w9Y0p+E0!$3Es!&U#|c z@>&Fn$Trx`tlyk!vG@*iLPH~G&N6)L%drd|C>28&LuK6-do9sNNDtA6{ASrdj|=i) zk{~20^MX!>X?R;R16{$I;72b4>hI>(!b*lJS#5}CU%*!9U@1L%B8}JSCZup^xzS(b zuf34*x^|NdOkH^TQB?y~njf#b9MeY(^B2^`u;X?nT3iqCff5b#?KS;-Y-d)#v96Jk z*k5@fy*Is|G>%mf=g81xB`lYPqZa>OEtm>yj(^GfYv26P$w0=id_dCw$hDeZSFfQ3 z`jx)Ef3^2<5`dy0U81ZN-oc4S`kb_!$@D-@VzFn`>YT~mQq>0>BSSs3M?_%)`bHS3 zGIk@o`fFX;RPn?1ifhUg{?{wAYM~QVt2n zTeaFf=tYch2ng|RMDN*`5$^;9ke-s-dQ`PyO9r2|@MdW#H*d-p`emh*^BE;b%YwwL zRA{iO1(EC8ja`!V zeDCp#ZaYw8Xf9xf4fW<)=3V@|w}S)*!l*m>cOuWAy}g}$UgxfKWM=Da$vRp2Vg4FQ zN~vfFOlpnJ2@v~b1AxXF<6Ot z_DQ<^j--5LLMD8YQ)ZohGZMrtNBlK&aFkZ59eItj8mVTuz)O73B-%}nezr3{mD4pu zh@J=X^CwU-XIUFfM%S)RlMsF#&hPwlyQ7WIPP|!?3B<_AXWX%F!NsoBrg;#fy;EWo zpe|w9791~fl%uJ^E~{}=AwA-BFVW&6(8sB2xia7PCw*K4!Gz!1nG+>8t|B?|YgVAO z*w1W$)RDfj6;>HV)}J1>%QhaGC#Q-NfGEb=#a?Q@*rxU~N0a+CnKL-%!|kXbFk_K< z|Mm6uyYn&8;ailFP>h5GVA6?8vOt$i4j@yhNPst1Of>@FCMjJ30v%#07X~8?h>}y3 zK*BY0=WM!RdHSL|pt70PC7QD<8m!)}JNulaeez0Y3+_XENA7Iohh7^6&!c3b^q+TC zH@;?{<-XRz#IX1iydjs*l#bt*7+WB)4}wvP;h-=c{fH-iqQ<~#Lsl~@qgi-0zhp}u z*c}jz_w1@aE|nQf_C8lF6-}o2Y!%}@eB8?{zA4H)Z}~V~L-cXmT++lACu%ef2sBxm zZ8a#a%BI_YrEetswR1+X*M!fgiRO6tp?d4$43c%IOe$%H`r}?hCfr@;X(=lzCOs#C z;z}rG1)o_>zGMFP%8}H_L+txb69PBgDi6Hc4Z{l_a(3Sh$Y9@f2Ty?;uc>UK-V-4d zCzn$)9{jgJ#kx6VW47<@=_TIbkT)8nWxQzHZ}Hn~@YmS|#8>nR9(#_s0H_fno$EP5 zet|z7x&g5h{s-&)2M3)~5Me*o^`!mQpWv)bFP+u@(Z7Iz5P-fh>W&N7EYiqf`|w#w z?GM-8GiM0h$;fX~JE)2~Rm8x>jBtA05s1n99*}w7x4=4v&o$mcR=XgX0VA?`0gS6U zo2gsU(t)YVU0n0_I1}WgLg-5){gBwX#~FE?QUJ3?V>Mh_||m6qMx`A z`A}iz6bJWA#UU5_-X2`6foV248Xu~uZ_&W;__I|1V?!e?c}S6bY!|nENsLD<>I8Mm zjPJK^t0lf<(Zp1B9;g|S&WP`poSDCJo zCzMASaz3a!4)RTht0}vNP>0&XL19doTx!DGyMcG zU|CX&^)duR%SqZ$(p_%Tzv%%aOb(HvvP6=y zEV&4^E59{nzx%%{M`(K=J5#x*vX|%IlS%qD?(kMxuj0!u@fM*a9p2M3d5ci6P1_i= zz15SLbLz4e$`2h>$=a>?IaNOE`n1(8FFk@;hgLn~L(O-+gZTxM{f;@SZ2Gv^>In7b z7#wB}cQ@GzT^#$#{cMR{W%6A7S09N_Yt$oc@;IFq-)E!~Jy0wfYg#Ya;{yDteCQ4n zgL76Jy99*o*^Agw5IU=1ZjxmV=5aM(%RzBvnf>N7^6f%Zprf5eD# z3Vl32_to8{9336A=GH#_#is#Nna=hqqhIVNAaYm&DEHma(h&*s*VWf>q+<)in)PA! zp@0mU+VG=PLi+>sg1J>vh-bIvr8Gq}9TJZWQycnmcN5zgHOqoVI_z-22Wp8VNrsLI zj+sD$;qTof^(%1U0^Xu?pvrtPeLUs z&9goxUt>vDLx+qHPuCp9+xi)*{kIbpXv|Ae$s>ayQYaGrU~)D}&S^q<95Iypj!q+G zHW;g=2+pKvI)kUrb#0(bYpFUyv>Fg0M;K9yy%kQV%oeG84qIR-BNE|>!7nvo@OJqp zgW+1}XWT=J%4rCAyirj!Jl4>OqR=*eYfDND?=Lf(dj921kwJ zw!jCS_~NWM&dYaQ;->RRm&Pvts+qj@Z4$Ywb5Qbx6sYGGCF)>hpoGwu8-|I!-GBEV z==`=KKAaEo_3k(a^cT9?-Pb&6p}U^b;yed8@;jzx;wrvhGfh25nXmB;2d?(uA;so1 zUdHIr^y1r=4zKMnk7)GlR9lmepSWeyZj+ET1D>X@ulEnc% zjnMM*c^p5u1DltN^=whAqz;#;6c@7;7n$FSbX_AaIlL2nEhf)4dQL4b+Qp@sqce*S zeZ0@ZJS&S3$AnGriDbmtAk^=G;eJYW|kT`ueKvZ9SXTIHd50 z3H|dL)1||6l0o+7Ya%jMY*FB+fz^6w;&h=Fw|>e9nqgIqm!LC?4MWC;PM@6CH=fxj z8Om_xJ5_&pd7Z=uDGTds%I8)cS+7{5YUl=ITTGil{P`lc1O5Xj0x$wb-7+bR*IO@Z z&D~JfG+_08;l4alNti@UD@=`6;6~!|ac<*PI#UMptk_mICKX|UB zXw{RvWW}C=VT$sX{FQSL65mzH3EuZtE!-{9+U)PP^pbl8iY}!Fhw6HLKK zlvZxmWa$k^6^XxPTQ^S_9hyi<3ugT*xr=4=CpF^ZHCRK+uJ{vgwYUwFj zhX1UhWS95q%T`*^ej^(xF<;bntJ09|InQus^BdOK?1lh+V#AyG!{_1Tp?A34T!+2T zs<}xI8oTIZl|OLA4K-8c3O|^)wEl>B=66q%6M(q|#q_cT?;(19V2;bl@6roE7p}6S3KPejdGjUs}Dc&Vokb)iPTcDwc7i7JB!uVgeJ|r zS6QVZsd~6_?Dz}dmd-(#ru|1RVucEZ%UxykiNa?8I@C)vHcH-inMLO*+IOgFo^AE= zrjjRV5k3{tfdtc>$U{H`K6_XqX61XblEKu|zj?m&#F8MlvnD+$hPt{f>BhJv+z}+pjglH3iyyU!{iqitF)e@u1(yDS(!aC6f)s zIZ7qWQ%GxVNHt9jG1SM6){{QMui$4X8d20(dF%Kc}>ir zBI_&EC`qMsR;5Zbqzx+n!c9-5K;p+ZU^sq?%LTzb21JS_|HOBllPNNtX+{hE&RX3G zp^iNV)eyPO8sV||&Wrejm5rvRN;8E6wpoe0>W!WLly$kp&l}>Hoe3LOSJvvs6}RT? zMxEXk=W)o{HN5xx)NY=1W9Pc5X-gd(tdaMa__z{^O|5K3`@WSHp)#9CL!@{zZ}pER zSyBVOnxicUY<_&l>f^KQiTOk`tq0>5QqNbRu`{Ki)c(2#NYXj9eI&ijz@>*bIIHk#=lwu#7U zn1QC}&f0U_{kv|p-G1-PUM;XU9@p=(!7*C)$KUCG{UMw(=|^P7sI~aR{nI z26dRroz^n_hFFNw68k$ngC|GtLDwzF`#{9jZU$}e!!_3IiXb+RV?=sp@r-(j5&3xL zGD?;6o9m_Kv@EaaC8{8ESO$#hjc_%Y&pRd04Q*cbjIyLKbp`em^fSoHKgV-iUTJ0S zDypo*0zI_-{^$314ig2>O_7%6596bA}yWIh1d%5NJdO137rrE7d@G`wREGFksrk67*uN{V6d5Uea z9JJSLDLA)(aF`FZmZ@1?|KV;}bKjmU-+Cs=S*6|-E$JZRSgO6Y_{w5;K=SZ5ac%TPcncr6IDjg-eWp1|^8Htk)6T_IW<{wK!)49eOb{gvI zx02eP`M7{BZVUkx(fQ$Cr`xn9YR669!Fg)D^8_%j=2WHlqVp{#o1bT__+e9W|D}je zGps?DaP0Mp*7OS2uBG-1rywxhQ(m#l#0(}yfKWbBR-XS|t@E^os5~OOphu07{amx! zp!Rh(0>(K;>AADBaaX)g!!3bS3bRCeyA^rfbSc^LiA_vB6LB!lu=4FyfRG3F`q;-< z`^d*XoW*9IYOE&q)tT(Yo2q*_U;h?DbM5wORpseKAHUBM-n2fQlr}FLX-W!fwYb$m zjg$(XOC_V@HD3ix4lmi38I;r-hcMFQA26gv>k37E(W)ofnik0m%FMDA8=XvMC6Amsf45=OvnU!k4i8`$3Ap5g%XG| zu{ruMUZBiCovQq*Hc|*m3o=B%)UNdKC8lThA=;}Ww}@c0g3GG}l+geDZB_^ldzbrj zQU`zg^?kP4Rb{pAq>tgF+@FGQz~+TCLRl+SmpnwuV||{L1ZP=cstQu@hEK(<9CtE#kuS2V1J|Hl?$E zSohu&p4C+5%HGy>`YPTCr|8`j?MIsJ^s9(-S(is0AWsk?e8)DNo?P`3tgelj$#(s^4JYyS$F<;YsgZIXidKpQ~*|jx~N~gU?6*;P`tCUvav} zNPe1}zJ|NKOTJjMCbhe36(X~l!OU^$@YVXQ30vSm~xauGsg>`L>@E&JU(W}>6IC!S{7w!b2= zt+G3LPYInpltLU^;7>Du)lmj&eds8FeKmvODDLgLWXg<415``6Zj!BSE*cm-)Ze&F z<)KpnhLc=d9~uCf51+88Kc#)5>d-fAp{#N9MjF4EW5wF45B8D zlMf-aZ0QaUgK(2xsp$ilRv}v_5K5kA86PGH)u;i7GX+a>wlwz;vEtk2P{7`Ded;w@3m$J#uPsb5 zUqfA9&{yiX^lC5gmPP{;Ec2?7DcO%MxQUb@!G50G{_*PVdD{%?4Y$&?TWXzUjD8h6 z!n)nMEp2yu7G@R^^I-$Yr%Q%lDR0`{;S^yU#*z-G+c>pTC#%1}yRS|+-@X{`!k zeLr$9WrhrY42Ot#?!FTfG((l@6rOURvz^u&FxsfW7EA7vpggoZ@i?OlRCnR>unM-7 zR=q)ZJC_UiYgL*p zvE6X>esL3@^)t=lBJNM-H$RMx#090FB` zu}j9-vSZ~5d<^S5t)-n!R?OG6SgL-i%z0mahcRU1Pu?T$%JSREld%1u_C_Kf2n>+Q z-xpb0qa|ohlarH-l!~gC+t>~ggwRU(8eYSt$SI~VD5^Qt6qdEPJ$ss_<*K7~AL368 z!?&&HI;^IduoChttd()gC`fn}e;3OP6g>^FbrmF_L&k(y zq;*EfMca9VJlj^vNc%&i!0MKh%7qLlx#FIsHUy!9h-FOv{acq_85og?Ld`8sSkQ0c zaPGKM0^?*LD&dt&d&$Zy&UAL%rJ1dO96AZ2@k2sA)=lf;?;|m)h!TEvf&g8(8>+F) zQijT8LCK6}0s}uxYFHDQq3Is`)jr!JT+G5ZIUVv$m4L@M+nND^MyNlbIeWPiL;avk zcySYdX5vzibt5A8C(Or-k9-qt6^XVV?$}qOCxDMPoc^49LXsE|jwaC1Mlwa!6K6$x zZ2EqTA?5( zD}!9>%=5gh`tS1r2vs<-m~u6J4c|mEXNSM-ui8(86T$GLYho2Zn@$B}PTuh5dvF)( zN&bA)UjGr_;iqnL^#|*INDIEu1VXDPjGLyqF*-wwp{KpLLh6uTrQz4^s8)ToGkL34 zCW}(}CAwPdE!_O!mMP87a!=x72mhqB5raP(fU+%jt?#Vvz{FvXZ(6HShB%4 zi;zV%;T(43O=OOU%Eu71ipjunc-6IT|H7c2?51>ei{?+|;)-{&MITaop+$8XNZ7bv z|IE(yIV#OT9P{VX3-|jYF?wbC@h|rPYoeAB7nEfk1szX=B`z~oY$ zytmyT^gw}I_16P305Ty}>I8iIb&q|V!jwxl%P~z@OEDKG`)=Z|KlzEK2`k+>BUkqATVgkbg03iN5_e#%@)J{8E=n=noTsUCxT-Gz%LqBSh!o#MY~=9)Qk$$| zO(jO?dkF>C+RggKaw<|S%6`g(p#uqvza;0KA>t~@DNGDPaybX?)PORi7{IH`Q*d&+ zWPi3C4~T*^6}gN-|298#=X7OZNj>{Ty!`yrAxigN^%@E1DHtnZ-+2;Xl=Oc^$HK>~I51zlO!i>nFqU zdQhRNb6mg+t6WU9SD~%dpE!dY;fcRu#V~ETtWBHwx3wA>#sE}~nberpGIPuWFEjL!oFpWEpJXy0cS)2$_;SN&;iZr=(ey$1`FdEadCKTHg_vN{bI{i*{C*81W zT0K|jHCn!~jn#Z?U0pl20!}lI6w5K=pJskyexn>-B2GQM6-6*GwhI5o!QOLf!SR-~0r^#-kxPe<&{vCI=mgO)TQbuOZyqm|?M-T##9^eJM3Nt66ek zz1hwF3c>Ko;5GP(M|EY6^2mBzGPK=@?Huc1)3!G2;tR5t4(_24 zY+BOsbhvV47@Bb4r!RkX-E)N#)`vnS5LyGN{h9r|4C++J^K2AJp(HnPZaLyDAT`sL~Wg`%Q(~i%|A3tt-iE9{yF1|{l9tQ|GX#( z)Ht)jLQNf*@#lH+r+z>2e9+-@tu31Ovb)r3sJYWqsRPjhW)UtlyFsAH7k8Z|ZOF9KwSxj|cII%4u?wVjVoyPZ z@A8`d0I<;MF>fM#zGP}$N>f7{&Rr1IXNRYqSsx!+Ss5gr!>NwI?kiwQDY$L1G0XCe%>x{*HGkuol*NO)z1Z3aik z<=y&pmi37kOXnmzq|38+_v9Z#v>DEa)wr$&X(y?tD9ox2T z+qP}nw(aC(Kj;0he!;r#syS=a81sB7)bWo9yuXmsH!}xS^Cn<8oI4n+=}0@@uHQoQ z%*LCgmK;!x$>(8%B+`^l-{;lj_KT|hihmn*)i7PEc|)d5pDYucoqol(HWtUA>}YQ)lr1l!%=9O;gZRMvYPhLp;RB zqBMk9!2o8@P$eaFqTrCoVQ^=Bus>x6xYdJ4mb#Kq^~TD5rh$j@oVV-gnAiO|p3TfNcv_O~;i1d!!UM%1ggXiY zFyRaBKW9U%btkcJV=NU1-|(MC5y^nJ1;ZnqyY5`uY$oJ3#CFU=h4zJG#|P6m{xTh^ z`cVDnhAY3MRQY7Tr*xUraMj#?yX0{$9QRtrSZN5+$p&`r^F+{LXtl9&lqfc}bL08R zCH9yV33uQCt<3(9EEq3uE4<~~BuVm;H2^h2_g ziUlq{(%};M@?RJX)jwHvsz|$K@yI$Gkzm#78lfAKMj&oNNbL6)zDcRLzTP zZw@;t1IefV1NQ$L@bWasr%_#=m+mLt7sL1O#ocx=+}q=iWxMn!i=Z3_@j;z9h}oW- z6W>G_U;*5hNkaP}AP6vGIK_!7XIC7K=5YORXAk#wD=@^Z1l(5FTPU-yP$aOOzRdTT zuEvKv<*(LJb0*bX8kDVJkueuGeG(`)2uFp~>dC@l%aG8)6V-fX2Jzc*Z!b57DF_~6 z#NhTkjA^{?=`^HcyG^3Id0jtWx~%M*HQGeHpgk~6-epB^t$VFP}ywsDWj+aA+|Kh2;| zXEe`sxn4i>>hshs?(LiPhXppQreJ9i`tp^}>~=8g6yZM;S`FLiMhrV6@O84Nw26*N zr!EVJu*Cxt48B$jo~nshEhhsfu+?N9H`XRnj_3~-?7Deq>i&74{)=S6pDLx zc!GH`pRUg=A58D)%>A%C#_RIEFXf1x{Sa#XPKe8ho44d#sp7jC#yAbyV40JW{D>c!{%0PCF0Gju>CH|1ANnZN-WL0Pbu@!z?%JhX=IY&8etT<4!>@l zdz(qG79A+k`*&&o?`1*jDuiz~hyE4TAGECj!C}8%GMgb>)C$7|$&sz5?ja@sE=xt} zO!}eA>3C+UZQIT;@PZqbWXYmMFUA!E*KL^bA?0=>KdK<)#*2)w{LdtYEgRwJX5-rkfpit=D(QrphkF{O2fP;wM^^6#v50 zm)pN>RwsoIAduY%7CXD2AI+LA9#29+ zNBA~av|EbH9?EAoUdaRYw00OH9QH&(o+xZTS+873!p3*K1OyutKL17vzc{$ZN*Wtn z)8XEiN97lvAQy3;1X-HE$m>?kLc8EKPPRK`J~tToE2Q{O zz=gAm{Ga%$v*0|+dncziC#w|9Rs>4Qe>+(vGr9dz4Yi9(D#Rz$7g%L2;GirMaE4Ev zo>^-xaIWu~z}2#4r7YbcMCq*olC$D?UDX*Tcckwd@Nqgss`!UtcCsl+*H6C$1?`e z1Cebh@>a-qF#1W8vLAnnQY!nZuYd;X0si6ZRCu$IanP)v;B^|r z0R4N}8aL8_u(lel;E6+rk+*p^6ZU2FZ5%~FtlEm*rF2+2(b!FTz4^H-F+rx^?qbpB z86p*jS_K)fx|I${Kvcp^@3qa&or{JIMWU|hT3WIq-A+Ab82S<>iP4qC zq|eEWZq;bZr0>DMQ<|KwSjdt-iQbPo`~YDe)k#u88yT_P9t5+Pm*rchg&mH2P0_}# zQ(ftFXF8`%Pam&uV^mm?tUroi;XWZ}g~Qmch=6#8Te0oE8GimkpC|f`wECYA444hD z60_D?YeL^fl`bX%+vmMgj)#Iv#NqmnU%Qgkl<`)ELRe)RSZ~anjAH>{A`Wd zhD}GY-y!?NR#R3Ky%fgSOhxuEmQdhk)qF8noCkR?&zq-kIj12bwEFUqoMp0jB?XFU z2se$c1}HzFv}z+y^J z5$YneSvb41kAy>xcy~U%tNusg|Lx7>spqo(n&gA@<(hhKMlxUS?q;%c zP)^*dgddWs6llNSh_CON=nP~*tU=OOajAvC5`p;Rzsl|GhHc#5&v`(cF7>hDAWRR& zlPrO{k~M9#;t=!3i=%(1B#q*=jTSSC$%>6Y_P0W36JrkjqS8(BNCRf|F-B7E!*ghb z1MLqO2a~L#lIL|(s`E9T0ewWRUo379@(F`mp@}0ZeVC;;fq7$hr{~1+fW~&;g&BRi z-ejG27U)Rt_4=MIWXT1Q!k}exzdvZ{l3-IINrFCsbuKm@AKsa$x08oX#Z;7^Hlxm_ zva-(T#~{iGr)U`LdCB`rv%#ZBiWZBZ6>5`A#_!%Ud9U6=NQ0WhfP?nnimHAwe^U4j zUo!B+Y3McI5PT$Mhnqw%BH`tHLSSvE6RtYvvoLmMN=BKRukN+__uO~V{`UNd9D+tA z+QMFQ89+uTOY45^2rH=Y_9O>pB`R~GEYxBMGE@nSiK7M8J6WgI{1>k|L6K33=@HUi z+3Vvfs4chXeAG@-W_f_Kok1iBO6FJuh|K_Bj0WWQaj%GY6hnL^m{7o&(M#7(<;2Rtobt6PYd{)(&O#;Pm#flsv6z0{ONI zYUN3={BuVHUfu(3cd28d4+)IPWaP3yMwwQWW%u+e6w8ed14~IbDcri| zVZDISdll|f`NGhgBs9g>hWH;ISH-499GL4##`AgV~uQ6cg^jf5kY~vViF= zOkdZZzIoaI2&FN|=S%gBX1!J4zd3#s^fAyy;}Q19oxxa4+6S2vT5d+0rZTxx39YdM z%eNTN{DJjjRp#;;SRw4J1S8 zaCfu;k+^(QgJ=~)C5&f@qLeP@mSS6qGP|`IllW!*OK~977<&m=JTOtu>(HpWtgYu>5!p7 zS*6$n?H+S^=?LxC3hsdPtW^<^=pz#!Q;HDDxguj_Gl^wkGi)O}!Y6GWN*bG=fH*N? z%{sTK%dnQc7oLbrDHDF{oOOoMWkj@E&Yha}O<|e;UuzeJKL80Nle?$W;~P4TNo0XT zcx9RER7k$gS7aM}qK+9=UYov>hL|r4v~%!@iTmx&mBkI~Y&`RXq`;jz(k_l*`{jRT zMM?Gad~;_Ww;4ygv;OTbowSXYN)Dx^ zHE;SoOXf9pxy#YoURkfKFZzZNjORys@)}0+N^+cF@4#5pTt<2Mv7}hD1Od{sqCe%I z7){A?t0#_IDrqY;m@@k>jZuu0i#%i-?;!iIc-GgjA#yyFwkDGdda^uuo}cC~#GCUh zB#i${%)eA!jc`2T1w~0h5w@nXJvuOI2P<3fetGTbzL@)zE*?V1%Qp55*!gj>LjPX} zhXq9a&uWhhIwn|KtLG>RRg<%zE$d#>gLolv9yh$^UZ(gIJhi2*tPRV_k+~TwtOP0b4w1zT*WIab3X(4o9tW|C2#li8wli=4kMC_iaPh`7v&H z6^P;URIUKo#oTD6;cQ2@B6@W}>)~!PzBl3t;qO1YFqYMUMiMSm1J3?U%Oi7o{IQ@?jeXvIU8*Ooo> zhTA>ejsEqVsFSQoMS2P@_XjWoWu2y>wlMkW0+`w-n|s=O;SU)br8HJ4|JdUCG0}=JOx1C9nj?h5AIMz=aA;yuP!E$aiRnC4Q4|4@K9hgnQYza{U~uIAHWtnmB$BOCBD<9G za~{SjQb>xy$EwT*nj9|*rM6qtg|gWqK@C~mse6RjQMz@vFOR~GQV%wUKo_k~sAxnZ zG8zlCjJbUbC!P{rkgCq>f9(qytP1Qgx*Wrz`4+S;QfnHLz#jY@71>%G@qOH}v?Slb`xAT^Erf443(#{>Q|7rX0H?L}r!VZq zr%Z2m+Lu^=o&P30F&@=+x0R84|IR5t10L&He_my~$#10GIw>_FJSptH`lP7A)NV8N zBHio^P43b}8T`v8E3FN#Myv_GesNcBEr8>hXIX<7>CAEJpMfEt%2sdkpODjO#@ip` z_9R8pX|$6jyuyPll&U2K!tg?df9>^>$qEJK>hw7C*%y)#6B<@JLYp1!+bZBxhN(Bu zl(JYD4AdD=TRK(mx|K$rjshSfEdDH0+Y*=@%n}_138C39y)X+}WlwKzY zF_(M|S{Y1!J#Vl?>LWrd^(;> zQngUEd$Ev`SGeke-7N_3^;aTSiQ5zIb%G<85NJ}z30Xk`SIv~HR?6_4F67{ZG~a*F z{P6z+@3%MqUXXtU7kmp$D$ss?%bbPk9FD3PYo501rc4Es$Hg?h?05I}^kRw3XiiJ` zMe*w3XW4Jf+$=*qrn(jSW6R1^X7gupsFx=9z!#Y@OEzsvk|R1~vIwlC%G&>!ntHjQZn9)G(e5|w%0;Irl&!T$ z=7}7O5Adc$=iK`cAsLeW8?hq$sh>whjC-C zPgr^RH*K5~Mxm4Zt`3DHP=HN=(={Ik3-KcxUz?r7GyxL84EXa2B!N06G;;vVfx%A2 zfRh`-evPNe=YBT)({-UjJV<^I`M?-J*ntbqrg+bwk>e5!mKmrRQuvSLpz8JND{|c$ z=`zeu%Ib?=RVVY)9q!NVq0jAQDOif4N}i@if}30gy+m;py95pAE5+t29Vqcrb5qmQ z5?#AajfJonu|{r}j$tWGQhzVPT(29RrhIVMlp))4TD46BOURjmlQ|Po_XQgHWcQ}F zOPesTsY5S}dN#PuBko#gr3yr<$4%f6c;l3DNeWj9l6*;_$1>3Qz>5E~NBu7E+hSpZ zP5>8_>iF;tcQ+iDEWJ5tOrs7EFP5C^SgGch*ML~??b>B6(f+JK9;!mFK=~giuEVVR z#$Q8n$ILRFF0Y}ho`NIzH|S%@;EI{gUF1^UmfyR0I|lbZg>BHm#f-v-!1@!}4wJGc zF$|eMN?2pS{ZvVX0e+Xx9?vzJyoBP^n6Npkz)G=_7WNtf<9RFPHru>vDe#n&06Kz9 zDBbrc8n3Og%)kFlOY~_;3c6f)8xxlGxA1&(*lUlTixaM?_u!5Dq!rLdt&KD|%qipF zVw$P^6jgG78}FB~f#}zqn^Q`tu{xV(*y8jT*XZINj2I}$z6F+I@P>OrC)t+N;(muiWiAMh@7$>3l>^(w^=vJ z(E5p+d>aUx?AynSeV_z(=gMUNfvl9o-V&IDnbAH;du776@<pNs!qu>nw3ri zolE*w2N9AT`-H|)qQ8X3XaHc{h|s5{mAE6P7t>yP+eTbr`at)$K`Jn1R_>oK3+}!{ z5Ik8yqM=(kKqo7tJD~$S=iyKdqr-1&okFITJ@_b0vj#TGnHST|1s>XO4I!661O21F zz}3v~6zW#usQxp&#uqhRA7wOi|IwB4Uk&@+zW)U*k%|ZA&+m|L=6$ER+vvQz?N#Dj zT&a9%?Im+!NEI?8KJXPY*@PPd5!V~~d@_npp$%1W0hcF1ln)@2D!x{pg}l`#HTCkh z_7LOePqDipx$ptds}6gC)&gk(8`@n6k58E&QIOU74*tAEGnr$*H3|N1ilB5I3E zOV~YJO~e5wz|5oZ9XPzM7rZO}s(!mGf_*z6KfbO-tpjt`Zvs;hUM%1E$)0{mHH%eG ztz~^M`sWgWp($;0$Rd2gs(3kbFtd;=vv*JobQksfF3l5bY53_rbUdqKHZ{A={A>#)8T-hln1=W0oW78@*6Y96EKA zO}%V)V4r_CEad8!aG7zkuay4x-mgM9^Js%A&B_(|Y(Ak`lFoIqOQxvgpQ`l;Zu0j_ zWfr>{yMsRjKfI8Jffq{kSHSd1zQj?+Kf@eFrDBO$FZEa7Umy+#vZsx$c6&svI2;|c zM3XpDga^EIFuY9=t8P>p-QXPG;@xWm=MSAOdZP?R07^-9?GUwR?o9Mi+CNps=W;?a z%%F4=hY9t)YdD838=6_ZL$PIY+63A6UlH4IoP4!45x8*zva>DAv0f+hm?)G{{UkqA za+wqqXJsitqh}Bo9=JgrY2{MS!V+hoVRU5OjrA5ZqK(chx z{KMM6_joV_V9CIK8Mqs3+o5vLr#FCsXGp=9+N zek-Gn;iWS`DTf6SwBl3rmQz?0ws_&>rA48@xA35g zW^v3mn5OI*CZ;RZG9eE&ZEwesnB}@m{jq_N`p)eqZJrxt|=NC%L)`qB~8b3!f6{8Dq^-%MUk8aM|AERE;?g30D?=|brf_=c-72&ePlXSj#>9{&&sjbr%+oR8#(=hnvE#2Jy6oC+y$bt|gR-x-_ zp%D=-lu+L}fST{PAO0viykRCyV*kZ1p2MRWtyxd*&s8y0tB%nVuxe)C@^J`4J-kXO zDy3YsAjgHXj*&*fm8Dtw2JL7a;7QWohn5Pt(+vJL7*tE2HcNjw6zquQZprseWg6V% z_hg`R$=KH&wP%sDvuy1tRRkQ^U27f#f!OJQh7FtNWQisY=z$&r^~_CT_HT#rf)S)U zhaC31%vY(E1PCUiI3Ib#cp8KFAihs~^eP4G^2PX4F`UC+w@j!6CB#&y2uBeyqM5jw z_If@|u*d~dS3CiCw>$A+#SAeRyil7^qc#n!$SEay+G6V`G4MSyg$lx0wE)LeTdPqm zjCOtb*`P2~+IR^#^e466rD1|rV=-p;*6e)0S~J&>_`JjfFWMSC>dg3x`i*YYπA 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
    vP_xtjRC)WswnK?KpNVbL2B3LYa;e*g4 z1iisx0)Z_+A_u9R;E^26sHr^!-$<1#4c|{J&+j25vfMjxIo)^^5@QeGEg@Nq`elv+ zM371A%J8rlcB!%K8s(VvQt0)@uBjDRhqC{PES!vU2OtcH0S~havZg8V6~KDFf`7zRC!tVk3wY~$d{?Fm^@vog8m@M4&Zq*72`NG1I~ zy3o`3tzi%|T)&e0`4K?0;eN)Y`?ZI6ilZL<`<}$lc|01PdFjsL*q@0aMA0MKbKW0W zg99WmfJNgMoRG{N#Ar40NN z5PAxK3X@Vv-JDdo-aD{yVqRQr8)=~Qh`@P!0i%Pqawrq z`b2KnmSO8BMQBiZ?sXv(Hcd4r!zt$z7LV8@UMF-JsaF4&a1q$hsK!r+o9@vMoMO@T z#O!agl3Jjgjp_5Sd;foNc@qGe8MM0#=@kGi_%}c!xmcvr0^d0%w(33z>Gbui3WXBr zCs6A;_EtAO*x{BBS%Wf4?);5%A|rxGhnWG$@_=rT;6b+lOe5(EfOl|y%1Le_kapi= zWM1L7K}4sQXz!B!-a&6Qf0lqZju3dTAlks}?#7telL@LQ7rqm(P>TMq#>O9}nzih<#)2y!)x|R`gMRW8^ zHcdI|*|;H2ys=k%YFvqzahP7E&;O%T(z|uXg~9g+L3GpZ!r=Pym>*DyWxA@`Ycp@} z!_BbGS7q`IWzso{meiVOQ{uRLoBW+W8b;SGB666R_ln*sdUD8OO?svqEy1273l+cL zZdMzgN+vUOt@7Tr3mFfBmK=70q3NdKOmWj1(#*Wit!W%JP z+rB?i+xP}%U-2Am8@nRcZL*HH;&WZafB*mh05|~=RLfVlsc_jsq8Og|xP|7CwBoy)^eY~IHQaJWy)Y(9U zl0M+a!JV7p@`x*`e@)ikK_GYGGy~CzKnV~QfFB}Y;N;>aE)Ymii4c{u?X@6D!KB#muKY$j=S z_dzy!sl@AyEl_Hh!k+5yL(LSt0|pkwxGwN+P95Hv1vUhCE(0k2ajuo`WK(vcji!-R zS?gUm`rG1k$J@T!hI;oa*%q03gRoG`gwdanEf*Dl&KgBa=8^oF472SrwN^^zFed%bDl}g8N4gbX&rjUZq8|AX_`|g zDuMGD?pWX;Tt$@t>QcHbDx#%NR{SKMWnYCwWoCtODM1bvL{#EQsbcjy%B@z8jGilH zS|c87LA4xeNFvni*(FqD+Fuad0%E^stE?+Zq?25P0Um1*4Ush`rJjY3?IgOCV3^xy zKh448VL$)?000Ak0T!M9{DOo__4e~zQu4E&&^opMfP@*4C6{eMpSKl3K&dd~;_S%V z9RI<|wB%u5qVi-SXGvpGJ8-gC&=9Pz;aQ`)g+i`bK_ifgOIShjauZqF#54>bMiAtZ ziADs=7p}PJtE2tS?lC7Eh?PD+uBDY=V|fRrLFKw%_z-Q2 zdn8L8s3j^v3^or2UP2YmXBTpi5;)e9BsF&@yy_dYpZENG6f_fT(o+%X6cC63ScWno zf-ZJ7h*|Iic>WBHvQ`fw5bL{CJ)`wWveyjPvON!C{;A!{{I}ZJtBO0w`Maqvjdu9< z3|pHZJHn?9LV=Jf;DDGc!+X}}iDas;WaiDA?itG^W!Z)!mpv+()YmT?c#mUzSDa`R zstIs9>*_y%syN%Qe*)aQ31TAv5hrHJ8j&fq?xN4ZnB9E6oFHv86!l&x!kn*BmThB2 ze_M`WbDCNJvd5jl06%KX$*BzAJDsk?JrRIV}a#WiDhYYgreqC zM99PI+-Q#|tsO*k9@7-WQE#+wM^i~RlEV{{8EFf{zxFeuzf6+E7-0}jvzf;c)*~Hg z1m`$TXVx>hY6;$1XA&w&Uxe_%CaO@sjM>njRBGJsP*AH;9b4y;;fFepM&%Xai^l-m zz_+i!#3TR!ARs&gfB_iTujQfGU^FWf3c}%6f7f3fe;$3Wjc1=fZaz2V%Rb+)obAuv zuMw<>q=Uw*gOY;6MoA!?l9`Lvi6rxV_>>e-O3=iH$gwm70cRGGK{Z3fSLjGEb1V+g zka?EH9hzDoGV3o0D@-2s-d;du;$-(qDd};O>}&;EuEFl zOpnXn8=@-P4;=~5t*CApj`KekR*31`894=(aQ_q7{}cUwtkN|gWYf>Kk7|syt;R? z-pv(6zxlMYtnjTEC3TDkN2ASPJEZ-a?<$o5_}x)@qi>k1;?zKvX#;63iB`;iF)(Gg z+4~H`vu3}8ux!2YO33oq;aQNzunZ(DAqWLxoRv}Q>>R-%krk@0xHf!42G>{1q?j4V zX)v@)VrJp941b^A-3xDOF3oY5YP|j2kJ+j1ChX=6_l38s>PJj&J~ykR2s_td%mZ;u zvRMNq)a_H6W;!)wj(q)vUVUIK*rB1@Iu8YL!BFy@>0h?vcUeo+zJ`}+qrNNv00001 zzyTB(ui>FssE|7p3WA|;pXv4S->)<4R=ekqt@O+B@5kN07sRz%WK1sxShE4s-tXWT zJRD4ugK4XpNgXu&QQL2jj395=;ayW3j=1A4l+>ZpJ!7hT*YR~U5C3`Rs~rriaCtRC zi5BL{Rt>+5REUOlr-fJBJgKE#Pnig4t6B2 zTc8sAy>iW7(#p^+@sTlXQ0*^t`*{))rU?+hpu_ka1U|)eCb4vyaxeuyfQnBtCslFf zzB&N}f^W4>;OdGLlRC&P#FGZ66YDK^2YKaS5i{kH<{_72_s6RAr}nfL8*<5`Yz*Ck z!ux*aXxeokm*64Jpv)13WZjelf|Q93)|@CvfLb@*|5QbVmqtYntx3dvALXo3catsU zqrV<7t;O7glAUBoV$Q}SvDxSALT4csLbFG&Zjofs?hbG7LPQ5^N8HO;j=Kfe@=Qk0 zA^_wNb4M#+!Q+0dR}e2W`>>1lBL z1x1+CZxBJ8w>U*2%U7oGcAFAxGbb}Q7HFyRGzo0~B&#qH-_cg&w2ej?tFx@(kVxw< zrGaE!`33urlKwK}jZtiM9q3nOH@Y{9=_@6o6>FS~H6@7{?oAL$s77E}1PsW&h1BgU zk#JQI@tX90D`wdK#Uu`{43bBA^!hqtKmY&$01g2V7_Z@=*yxNH9R>y=PJj6ReBX|q z(^EKCwso4D_xQ6VYEW+GUhZP$XF&WC04jlm7)ubOj|+|D=4eU`q^5#S2jB8u&L=Wi zFu=*rAVp`s#F$CPmQET79b|}mxlzyM?BL1-&Vl^T`5g3`Dh-@ZiOS)t{J*KXXY_3p zNrL)eC_~DwqQP{oUKMD`rzg*%yz%=jHWQ!figFQ`-grF12|+Z)$FQ!E;8Dp9^Z?1KB$*!o z26j;g8g-8*GKGRpYA*3sX#dA4U;rg3q(X}{KJ8nU>kf8N5GU^Z{R6L_@7N)KEGwONzTt@6-m{E0F&oG|7496sgt`8YCQNR&44{(6c}n_yzlmQbGE#fWan<1W^{6&5}(_luJSbuXq2Nej>p6gVH8t^fq{SIqag@Rm8aGdwO1t zYMr|KhRC_HT(Ay+@m{0Z{k!pw$2NpeI~eJQHm&LZTaj;1)_1mH?4RECA5IbhJ%1_N zRKvf}O2L8SJsBBu61OGB5zDM;zP84@S=lU-5)wKEw*8&ApN);HWAlo<5bB%Uo!sWP zCq=+($)K*xWo@3T$mqYIQ~SFjLk^NC-ee zlv;xM#9S@YMZ0xH!+KzACQu=^@M!C&{l2}vj_%)AHtrc6HUIztzyS;xujZk#C@?h& z`Tx_;>(}-ASJt(YTh2cm>mA>dmZL7|kylj$qIL-4FhepECc6ZermIB~L3Z@4cXn1G z7R>Pia*aUC*scY?P})S^440{0FSxCKL@KUFpEmuGkW@xmNRb32g0T{|)%x#Xy-kE- zh>WQADHt-(D3HMPmKs zVGjV6>lK0QaLn-~L&<|ACrgmC6wGo=mHPK~yq1BTPiUBnB;6~t7b(Q83`u5}q5bEaDU=NsFu9GSTmCmH62&6VByKs=hS0$a0NW&r$5;*O^&_tC1K@)?LK(5Js z7eorgg<=;-_VE;pz-%g*WQYj@-C+_F9z?Mkvy`*3^06a{SRDo0-j|Oo5VsX?Xx^>R2 z!9}SjQ2SrQWaM~sd700BvP}jPs&UtKWFULqF1)!~{o<%T zt2)=<7TNyZ@@4tqw(VNkA(I=PV(C;(AEoWq;+wJ2a5kPhVW=#B<<52RGC%_mrg;~4 z|I@4Av%;Ng?)c64^m#D+eg7VZyHB z+SX(=z8j|;sMN6(8_<+^i3tfwu{D=~0kr&Pqj06w2zgTCGF1v@p>_A~m;e9(001}v z3K*~EfiR$UDiDQz|Htc|-^aF|b*$GviSzo=bt<(=(wNJIvQW6UE2!ZHM%08sS*EAd!YAxqhde!A4pIz#k#l zFUg8|%;e1%P27Z*8DMoY_=Y98$gq<*ZFodsI(Cjl=AC9#CNZk->1{0SBy0 z$@_IJM{|07Hq9T!c)tR$X;ldy6`4Uw!oBuuBn1+Z>X4NvXYg}onaYZlODB@2m(|si z_&oT$4b>3|!G#B&Z4*!+A|a6gNR}Zt6Pq-5*|^F^fs+8w_wTAxcp<*!XoosW(O1Y(r(al$?CV8WS4Gyh0fx0Tv;Kh9eo>jUf0&@$6)81W3vtVjo}bS zHxGUjLJOa*=<9VU4Od&>a``@p> z6?W^I>)RD%sS_@+%~XuA!D$eMfg?icFgl}%NY_1b)SymVyGtvoxFHb3CZgc==mC*9 zdkfp3_DwM;OtYhLybAWiKO^=+I2Cfw!@6fvA|?Ri=$H&AMlaCB20VZ{PH6>1C4w&- zU_hb8Z`UUx*#cVQ&Pl0(J0tfNA|%=531)(kk-q)WAD*#DNNFWZdwy6ukV=HRC_ z8c5%Ulm~>PoSKT1O>3C9Im;*2#>%0zt`ymZ?SxevonUW@m|t2}sRf+Y%>GnN^cjwF_)y5vdPl~4C!~2MX~S;^1QwrsqgQ%&z`g4bQbMLJ z`-LWP|BnB2RV>CD%L!S$e~sbHS2R_nL8YU!@A*Ig00000Z~+b&ui>Jw%rJEeU#GwN zak|!*HumFvUyd%2h{}~Jm8^&do{^t-9z@72 znJ^@aYSSILK#U>yuK*(&ff}_)wuZ$dbla}LDoOFk9oi(5DiDA&R;l1)AsT@Q?fB_J z5i0}W1j3%>nT0O8>s~^aEvN7`6e-a72rV*6_i!bA_74I~DKm_k!I!9*BK3wrWMSRZ zKsIM#eVR48h1e8tJJTM!|579!&_Yt1Yp%5$u!{*<2lKuU&>szQckTo$xbv{;+7y%V zt=4nBIojSEokPc-wts@qz?D&bHqZc%3Mp%4A9*eGWjD4p)AQMv@F6%Yu=oJv}I+>p^`AdW^IsC~aj<;{jh<|@RW zE#q(u4685wWMZg;BoWDFNYybs)-Z`4PcRyn0z#f-mIFChSpR_{oQ@IIrSfiG1rUZ} zF*`8`3RyW7Wo4Zt2H9k^H;Grr5)HdGJ)e-1E3lI>#O_lgVu=(7ZxV+fg7Cz#QVBW% z9EAchE|J4bCkP}X&?hRfIEAc~Ni?k#5Miz9L`GVKeIckY5Nde79ePj+B(c<_$Va+I zkVVlnQ2>b`OwuqB;K#^L=^1Dl*rbCB-xf~=iwEnZ03t{{zK+cxGZH*MTAwJ;P>8r> z5`N_UK@vr?SV2P6I{&=oBoZMA3Jn&@7_`f-uX1L z>TnU-@2OqSTHETM9nI@Keq!C3YpV9nN$j6e;>z)r*YOKNetsROk>X5 z)eE&&0n@#aPDCzBN_pF~eLuOf-&{zY|GghvJ1_ooFl?LA-G*;{&9D3}+OE>uYlz4) zJc!X6z#9ZhC-yVs<>_)wm_Hg) zyv7z12E9K9OXR^=5*k$Wux6`ojO;?LDfRg@6U8j33cGqX)$+Pq43t3YL~G!+%|n#E z+-{iu|68N*#{Sz;$JQ$+U=la!qyjSGJmDT-8W~klOHY`nX+)bMA#7veCv!S=7ovuC zNJLaIRLcxlep$HqkDGqgP!J@gh=>%uFtV(xu28uK938M0000002~1X7_Zbj z4H*K*aI4?@|Lv~6XZmlg*0Wbx4Q13!sTnBVs1`6o6Tei2Ys4Fj{~Ya%B!JR0yfQ;Y zL`=0&OC?2l-X+;TxO4F+7s%n{5}jP0QT2qv5kN#v!AW%xnqv|*LO?knx?9AMG(vTu z`(Zg^CzB-;dd&t5y=#+&D8eIJX&Dvpd!%B>nc{ruDVVZ%55Qk;y{ zSgN9-5TKG0k>x#Ek0BCaJLr=YpR%H=C(4SgU(2`%XoK*9$RnUj4%VN5lImmTSEz<5 z{eSvO%k@hc9P5+BK`WvIiqg|wIvh`HY;Kdwjttj92m0O}^ZwHo$VmGRPgAykArOPJ zII51+KC{p=4&&}u{mjFdd#izXj&X;7XY7x!p5^UD@4QnWMSaaC8OZ$`ppF&GF_r(7C_dFQ-4v z!&ou@KG2E_?py43KamB>%rt7OPpEY4DE&!ciYtXI^=8P}MwTMlAW z*^cDqrfy+WJ192qYE!<}?50$$B-_~q&XBn{W2#yk%!o^p0FyyyxgmU9GODcb`T18o>Wq0GW)aY z!G|q^eJ1u-BSVWzaz9_1S)|uonr43nC;$Ke000~S{1~s~qQV>}k6*o&`0v{{ttwMl zGU`eRTe_HviDK%^k-{*BrDX0bgk+Hh;EqQ{Vq-~ZZV`J)LB2>tCn^CZ5R7{lW&5b) z1fqEs5)Hx187PkCOaqE7>;Cxu=C1eO;@OIlJoG?934B9Xs5m1%_J z)|Lc7=_iS>PKn7@$dZYGC6mUG#NY@=!Q=_Henga)OxQATRpIri^P>os0V05dMKeGr z9=RM{GHMYhab;Q999yJB#_WXr2n5~^?-;D?__MDvHewOh5AMWB8_w*0G&X6lBg-eC zf<*(Re|wi>55a0~h1EQ(&58~E8yRG`*F82T;5PO;N^Z>6L9{I^KlZ zHa%>7hP<&VNeRe&R17aCqS))RBOWTmqtYw+ogLUzSDd>L(*02lDN1)eK()OPwY45I zdAK~3jK$FPWdP;qQzXce`<$SxOtEQEmf`4}JDXX-Mz9%La%Cjdq1*egdVrcrR@y?5s|5+0N}|`IjI1%^5n5=FEYd4=Gi6=X$H*-kqUTi= zw2X_Gy*^J`>yH<*t?ss8jr{z!KmY&$00V#l3|Ox;OEndPL4!D7U4Gwr-RItMDk|!l z%1Ve*D5|vt7%&NAfvBgvxuWWPgN|GqmsLUAuo7NK6k`>THHXB4;{7Q`yQdjmeYOjz~ zLK8>~QsO9t%kt$k)-k40&(JDz5ENd;Ckh0wgrMONMe;3!x`@SJ+^kS!Bv(*vbmVMw z@o{}|$)mGn1Pa_&51ntlU){PZ50SaV_x!0@dTQRg;L@1*m}d9G|PK;iCt9|`WT++O1Uxke@Ws$XF3Um*$5eLqY=+_m<4))8p~ zJpbF#cLiTpqQ`d*hw_I@$28=we(A0%p+2F%%GecyWFasPF~BW}{fGgGG7 z=Go!-J#tPRoMd|=4%IE!CfLol2zNwt2O6y_Y z^7L}ce=tC*&^LN1S2__YYZ<+iHmLJz*BbC)MxU^vHDYAraxlC8d%_Rk|b9 zGC1=hM?=Pl@m(Q59dUviC^g+;dhB^TH7h)Xw(yBkF)A3ca;Fi<#33emJp95}ump`q z_Gl`(*10iah)3|9u7buq91m|=9_evm5d^8C&c~+%r(+V zl$K;mbVOsIkkfZT_j<~dppG<((smtG?(ZJ5tc7gH+BU)DMyVrJ;+ZFnw*4_6YmW5g z8!O>x6MAkwMT`@!1yv>P+CA>sbF80p#Z}mwkbCY0VLq+CxZD~O&N||L2gS_i=J?6V z;+vq%mXz8jnE`DrKanZF(4(MRIZsKsZHa{wvlP*nv!CkDr;QOjc%0HmXzSFXtRF8N zk)|gO!fi&dw*e>Kt^^~RPAoD6X{`d`ZZpR4C`T>y^pPC;|E zmy1%8O&E4Fzw#U{t(=Xlb>wph*bw<9nYPwsC5Y3K>A4b?;*U%7D8G}_v7KO_tJ}b$ z2Xuo-Hc-8YQTL?<7|DS%;kwv)n!*zxd2N)~b;Dn`^9_&l<@sh0jFR%3+mkqPrg7mLP0ps(mm3aVCT|80%tje5}xOLIAwH*m#WTTu5jM zDE9g=1&sc}X+&{6BfN@);hp1*hZw_hlrhOI(g0*0l*zz?M>5P{JQAM;K_!+%-Ttr3 zbIIDu?8dxKz9yLKg~q`Dnt{Lp1fBl;qXkQjBTCYsNfwX2!A)2Mis@t+1jKwCgkr)Y0!b7^ClLhhGVYNtE?OOmvSA$-2h|rBCj^|6 zP+}umHM2}7#hVRc$l4`9d=lx6RWXc*H81$rC z8U&vM)l$fvB*ZCbR6sY4m)aW^`lowpHk#|KvaIOO96}X}a{dvTJA$NSJ;CTSAt6%uv}Ft)b^Onc=j_`Bwm6sIE>G#$4(HRHiQy0` zZ1-`~_7r#Gxb8l;3D|PDXV%o}v<+6}P{Fo7LpMHo=5OWcOdm}BYzss4&9^F*_018R zo98`|XOSCmK%Sz!EE~R1yIRh&|!BH788_x7Xj21g;6W^`H3V`j9UAhLh&vnk>M6`GA*TCXP#sNzzX3A`kV4M9xXPHXGq^ruR3 zRqcAmk?nRrijsYTS_fasdGwQ2C>#6#ll|ozG`$0RX5G@Zn{;e;?2c{QPRDlc*tTuk z>Daby+qUhUXT9J459d*H%&H4X8UB!Qi!Ob{LtRY0%pgs~w+a4Tx|L$T$4Yy^OuE11 zGn)(uZIX;07KD>09T8)Hzp;`(>gavnE6oz-A}NAhj-pv9fe;M83tO(KSM*5u=iu?r zkQzAQR$QlE_d&t=`J$9U0=dB^dvuO9Q?S*Sl%=r#&7J-%r^D>}cPq^M>KI%P zvBG1RS@OsJA|jf_ChSBP>46MnuraMJMMxd5bNi*6WQb?8jlJxIX19ZLn9JXUW{VE{ z>K8ynSRK6CSN5k}HhyKJD_B6f0xIN-SJP(&XSknEox1+RMje8yA`@lG|8DC09S5@{Sgy}rZy;OguwUm$y}LHfy)?qT5o8{;)#HLE^D_^N*Biy zWKOJpktKT<+ZiRD`H;hXf0sTfSF+xKvmPzk;E=UlHNq9nE_LLvF%)xjBFSz>&orl~ zC3m?&fxp*K7Y*uXiZ6B+gPsVbFvAj6;UF zN(-Q7A8`VQ%(oo%6j71_T-eowPg0PM{W zkg^-kgSVNxx+psM7Po1Ts$A58=yslu+Lu4o(@BtKVBeZ`4@4oWQ6VA5Y#kIM+pTTqVwo6j!QbS?~j)& z4+qxoC*M;Q&o-H<97-D=UZ!E<4?^(D){Ck*CcH7RSl8iYjpPeOrSnSm=ydc#q#eh( zyogv{)F{dZTld6(5~bZqlH4JRRd$nsO^|Q7es7^W^?q2790Yy{60V5I@|XPw^VNz7 zm`syy=}&Ll3)qd*k8SdM8?(Jq7(41A=v8!mK*sX2VUQaL!{PMdoX_8w#-*e#Tq@aQ z;wj>R=tid^mJZh5BqwMN%K}u;3XZi=J#`pOO3gnKTHH15fYDnGRCxQn;K>ZD0iz1# zG>jYiGI7xTOzmzNPx6r`21$@CQgd>*y@5Ffu{0n{G_~3*Hu|H{2=2%?uRlG-FF)c{r zougbl=|LDyX(Q@`(FdW?1kUUx!9aB&6Z#0YiaWRh691F{XqykrfL7C+9~db%W8|k4 z)~_U4GO|0bfq;`-!}h>UNMdw+$B;Cmu9RTjGD_u16!ErlN13zGITwI(Msfr{b22nLCl_pstP>+8DX_<*;%r0wmF`CBE##x?#Zs9or=d z+wo!6=Xi5y9IGj=_N&8I@}gpF?#BXA$9ht(M?wcJ?C2<7uK`qf@`bGfx{zmdu>OzS z13Awa4%`KzTyD5`{1h*Z5w8}Z%`U;_zB|0CH@PHmQ=oR|Fa5j3x+yJ;tX|$~%w@lw z9>LR=#E`f>6d9X$JTtP43$(1&RMgmBih9S#@se>gncJwE2|uj&7V&@-Y%j7>SlLUm zgViD%TGUA6if3Qy37)jPHD#ecb4DG6aFgSw_?!elVZSRCk%hoh1Yk7 z8Qv_$z0}*69=vLUnX`v^-1*H#MNts5}p_1TAW6(mB<+;|G_Ea4i`@G=&ez6N% zbsOa~*QhhJH&l)kwE&~ZQ86q#NTD<@()CWF6Z4$~V}ps|9*)sM%~zAjoqPpVYH;=m z#ZlRH7P<%v#JA^)oN% zfAR8Rr)0bSscJn_y5%?z-Y}#+V>3t)a{GHnYC9G=LPFYFXEYt$i(h8Bfa0F5okS5P z6%v#4z@1{_KY?Dl(wk8D*ZL!5da2;$on6so+SBNZx;SQ%F8l-&sQeecxFL_#a18K! zI5=Fif^C#K2&oVuxH=?x+kS$hzim?1XaX$%;Mp(xbQw@m66C=2S!Y9Ag@=tRf5x$m zJd}5P0D7}_>4?GSk9h4ZRXu$7l#|>D2GLjBnK$XhJ9Q5E1d>tPnyz(7V;t|77DB=W zoLeli0Nm3reK+PP4#9DRq?{SU3&Q5|F(-3RrTWdBf+KvA{V@*IiSNA?yn zW^d}uKMC~Bz~Ho@=r#v8dd5lPz7X_|pbauUo4Rg+oL_h*s4oy!T{h<^77a34zb@FO z|L(<;+R6iej3^z~@g9=GUxwVeM+e9$A_AFFUsZTfr!Cq*JSU0J*hHImvD z{o5I;Kon(%6!W7kDsZf_Xvk#T;5{AQCq)#v>^1CD=VP0EtsdevWFENgyndBCV}5?6 zhY&g}Ij6tsVw>REm2?|k_&#o4DxGd}u)4$sctyA91(yOt|q4#vSPShR?Ogct3UD+P92Tq5(W#CHW|2h6)SjAK>au zc2T@BWz;K;nb*UZYHWQ$H<(! zKG3+tCy->DqBY&jJQ{LEpkhxQQBfKSL6*hAYboWWovk+hRhk>CQ%1=}t8fj%B4IF? zAlA@>&vzApu2aWmOebNO5{Y=egs}kd2yf#fLWo?JUfb*ce}M$Se~kWwMXJJ-eGgw( z@o~FlsdIhVx3pcoUq7}L))AdDQmRpblgMfUeKVK?`zBix06$ty_Nlt$*4s!eN?nMHn;2Yn&=%ng} z0TA6AMKz37@c#6((x6e_j(mshQ%K{t_e7mE0+Z~BxQnT%1ttmz{MxU%rCn+OaYkV- zFpo*}u=R`T!M{-D=XB}}Q}S>23tPm-N-AV_Rva=0F)W|*foo2@HXb@T^r?DAFtViW zn`0Uxi5ka9LxhN6a$a5EHf)!xsO7T7~j19J)j0VQ2+m5IIq|ji48K%F^w!zwM*5*CG4o zVZ+2=_q~dXt>tFI((m=!-fhKQwfVA6i9H&_!#JgHIpa=A&C4b4*UhK?h|a>awF_)} z%~kAk=xH^3g>+!Hx(aS0%p%x+>kyYKh>V8xvX~-(!W{g@YfA)JNwnNECy0sRsL3v* zbYaGug*VCrq%QI|aRJO(dv#N{>i1)Ly?z0_bD54>;fwZLfA}#n!KjEc^_dgJZv@XR z*3;$K3*(%_QiO8F;UM4tM&M7P-p~8a|F51S8_f7O*30?Zr)ta-+w%JL$9-A(YnP9c zadSmvdwCg&fT;E!0eQ}=ydViiR6Ida<(gaP?b8(H_1KV6$)**-5ILb6yohYP5FhvM zNG8iFlr#*EOv}24O3tc4kYGu`T%%!XILq3klLrKL*3_aY z%tDU6@k=>p#XflR#5}uX!sxhe6y)kweUg{?Bvd^_B(Cu^iAc5UI_4&Fmba=gy{Z)hO0D zAb5}o=lF{p_Q3~uSUy?HKl&o`4PO>E*h<|*Oe~I49Iy3&>-6uqjqw@=ZPA z)sHh~+TeeGR)b-_%Jj!M^4|)@pFcdO!BC5iu4+{Z7CJz5CtUUY?#`u9rG|LO8?2g(;6@LbWDhwvXL( zP3i@z>Kd$#(n~q*kCbup;2XgQg1Qkh&58P?XZZx0UhE30`sII>2!OD=Wxhpd71g$8 zAuVUbG8Z-$ig|q55$8|xz3AocwT0dTlT4-&I$|Hb7BYRj0!2c)r4KU03&a@1NT}*# zBb-LucWhjd5D7I4eW~B53P{XZFkMxoLZ{NW7V%ObN^M2P=G!uEqDscHC}VHIkcCEu zbq9=R+tp;~IP7si$|m0TMumFICZ%sqYRP657p>7!m%>P#i#;U|QVGr=HXDT>&T@2Z z;u>%wqi-_vtyw94<(HjsFeXZP#I3p_UMe{ zu42KYQX<_-mk^QhG&*CX{wk1%43%i{5SsE>hnn3CT8qn0ig96M=6hMMOskwgMdUL- zHk+E zziTXx9B~mo&psuCL_gQzdd_gZnC9?>4U|mbqA4tj0kY3sP6+RfhsgKE`)wjY z%y%f7vdw}5=M#*ZX(*X@5RHsouXW9YE7BrWg^7-p*}tXBOWI7nc>qt1_NO*tM{T~< z?qbuRxJl=J{OW}j%1W35t{bIo^}0J=iS*y`MuO*b(3(~w_K0Y!X0u4Qq)#nyTWY_G zu1*%};u2>E_Fv1=v8wVpR}Xl86|rHXQNh0~!qQ@cTsmS!?Z}nHWvge>R zI}9jBbfH~KCSZ)2Tor*7 zz^qW@YMaHxKsq$>s=K7gO;f_HH1mxh*%UgDlGg%JbDH$&3pb)cWT~=z&5F8~ANMY3TE8++~=#*M9$-&XGejZS8$#NRmm9qj}$ z=ZK>M-8hEDRQQrNEO#R)B~L(}CMgT_hW}}&9V?0H^{#yQo%8Fu15eo+PH}$a0iU|C z))q+;Ft%G8@Xr&A%psP(h+pQVFRp0>MlX=iU#6w__ z{i~z^Yr=21DJ@wu%xgGU>Cp@jZ zuQn>QWIICC0L&i`>f8ozNz3_4Ti8YUUN|U?hpJ}6(RrIqi}ot}t-93}J^}H+p$Odb zzb|#bO74GCG3VXW)8^?V2iMyC{r>rQ>hXHJ(L)llqJ1R3%+k!}!xqv-fYQWub3hQs zCfs{EpcHA#2>eu7iMg67^^eo@=8A#BzqrHo2^2l1dbCG`yX?pb|!i89)Ju{B&i(_6 zhfoI^N$?lYuLph~BXCEjh$F_AzwaJj+07YWb@^8c?~VJog^&4wuJ`D@vx9o*Hkj2P z+xOPzc}Sx&<&oCWN0JG3yz8{>ZM{djC<7=gfgc zIFN0Z@$-Jg4Pm<2YGLi^wd|9}^sZZSYNirVY0cKN!W{k40QW?A;vEwPnX|TfdKW!W z*z9gx)_Ltk&1Mq|Kk>YWpYvwtCn15{(5(+GK|3+JT_FxYF)*AzoV*ON;cFc&AKts6 zW!^AnU#5#gmVC|vg`0lwY&FP;jyQ5mFu=I5L=XGhix&Eu9a+(+^?v-~c1TlzXctp= z-b}tBFKyuqGX)zSWFa-qje0`1fKjof@3zOG4H5R*m(J9fK9*Hkm`U&t1q-$P;ksyv z7m-o;$bLC_d|rm&E`G{|Eq6}m}4D37msIXn~Djk9~7h z2$T9AtG=>C3uiu29CeV`QQoVB55vdxV2?@dj; z5FCGJ$#%a36f1Z)Ctl?ha=p0J9#T+7C<&onH_*tdVqa{6K2QIEh6}}vt!KMij4wJW zn?j%@==a_t%*O&VwVxBk(LbV^C5g+J<-!@JoUzC#L!L!`X5VK`&nnDxplzVvt(q^ol5d$_{_ggcSu|DuvYFfXP6#X8jp*KIOwG03cRik9UtU(`Nx!6q>j`Oz`IXtD4k|7jYwj&HD=dSy$`PJwXZ zOfjvz=cWS|s&S(san|2@aYy?fi8#O*Km8y7R;1}-@E<;%s$bsry}hfCcR!|c!n>!} zqgfuAx+&BttAk)yeB<=Q>7RUSr~M;EdOp8wSu2Xm0biD59wf^o?PMf~{^jf=lBlCi zGnhzO^)P;dHMJf@;UED2#HiazYflfDltfbl6(RzV4Cj>K*+0$FF{FHW=t!iCQV@=c z)>i^8M!Qls-m8*bOQ`z+Fuo^ z>wz7GsQW<>dn1XOWOf_ojYmqpqClpxyjYlYV@848{%~ib%t#?*y~MkVh%_-Z+spiA ze~&5f*3SXKF zd?|3rgRf~bU;ESvXLMO^5Rpe%94auOCrJ_lx}BplVfi>WWnSS2J+-KE`w!epBDAC(ZYLHcU1cKQ=D1_S3Q%CWN`C-xN*O9i81A z^|MFZuLDkB8O5CIO)be_;O#Wo*e#5eOlnlLG`hE(3M&mkk#q*b7Pd?qnKN!x<6}#3h zA}j2dYH$58Z>!I+KKQvS6c(0shyv1dB8vK|63$)aKwNh&8)cZm2aa&YvyJYkO^qq^ zb_WdOly+^XN!eq}nv+b`NRl1WNB0I>)#;~d+$2_3`Ro>U-Hek#SCSgEi5|fdD$CD4 z=RZ*XbbtKsDQP+*0;BwW`Nd23=4p`=CBt&@ciz#=l3_H^IKe&C887jGwe$ID3 z@cmS_Vb6F4U8BW0)H;-}jA(hUOqLQotuA=3ApPl^*@N!Ey4j1OPYWi&?=CwhDS*z2 z761dn0;?E#I|ZLv@iil>M$y{?J_Av_DuvBL z?eCa6s7Q!PTFB7R#_I3NDmf>u@nG%G3~@ZK$8WgJoZoNmpqda|Ab<}9wU=cImuvse z2wYoTfv@Mh^}NDSAT-<3Ys7oGpQ`o0-(vFDZX11wN0-W0C$dl?jZ_;jrBO_-1X20?zRpqb^Jtpa~S63CcWE0X^=J}0CvTm_%p zQwpB{S#$m|;8_fkYaiF46(hG4hTDNJ>rq?x9n=p5Jnq5H02+!hdB*4*H4e%pA8z<< z{?tcp^o|PS+0Hre3}FogsSZ?-VRz{#NP%RX%6+9T4P?2F|4}&1Qv(Hxo);nSQwnfw zhN+|7VIUIl-h@+yL3&JDi)3Gz;wTfhsYV~#h`A;ID_#}7a5dyYyH$<9CqjTXWwMiD zaK856s+J;E&SiGUOyJN)DH&;O=qy$A1P3EtgN_R>f0$N7FB1ydURkV`tg@fM@Iyui zN7*$J1bygld!@Yh;Lg{hhufXkx`z-~*xMZQE{_+RA`7zsdrc}IkVFPZmin=d_Tppe zPil~XTWX>BKQUb#hIAlRF_Ud;35Rkbh1}q|)GzLn8DbqH=_DK2p3T#G@}?P&+&%mK zw_EW!P-~eMtKRI_rz>oir>7C^`mK8mYnwr?8*R&Saftz_sIR**#EzD&)qfb{-S%{0CO*-Jvm)wVd`XwrLO8S!jMMT^!91YeIiH)hpnU-#{)q{T>BSo-qNZl~prq zkB%9aRSm6|{|Eu`utnOU(DtUV#|YZ!NRZGaa<^*=scNTz znm5>k##(@lZErMgwUr z@#BhUO1LbV@&A4!{S?QL!OH=YiNuC+S_>qUmf7_ZFy1_ZrP4X&frx1n9JHDyyGgXE zBju>Qi{@U$o4OdIxPB9cdvHT7CbBdEeF8E*_KVl+!g%c?{-88&@&OyB`C#zcflBebK0M%2M=Q9nMmqawG=PyDqP zM4rq)n?a?x!f|>2rQk0uNes4nJXTgJF~cnIX}H!dmVR8Fwu%{zP8wXOGkLr1cO;ck z%wWu>Z7K@UxcLkBx%4!p|^= zplN9d(LkYpdJMrJpTA0~(k`x2<0H1nJmA+)l6vd%td-ebZHXlqtGUa?Wi+b+eqGFD zB=FoSoWw+zcTgd*+Mij+1k(MQl^_)d)xy-_o{+OT$&nx>ywh<;fb{4{Zu#(yJJ5#f zou&a1+AKf)P0hw}Krjyc;!X3I`T0nB!cxN7Dl6ze{P!FSD&8u>^;A4acR&9HBcq`@ z<4>HP`H%1ZdPy1vs`#m7IJEuVcw~F{I=T*|&xL(O0Ja4`PF5$Ic;pCBDkDzQ60BB6 zZ9{p`au{k0z0s24BH;mTGHvJrMbmZPV-fyfOCLqPzUEsdA$$MEIkt)#Y2;GThS#w& zHr6mW6-_|(2%{>M5Juh1_Jl*q9kX6#6&Kp$0w0q}vn+fDw<(wI``;w}xm5q>wE9{9 z*kiDO^~HR6dh%7{nk;MF_CI%PyFWd5$K({5U=|6FE0+}o1&hboPs)%%KoRjrN|eE& z;A(2UG}c$UV3Hr`yH4L6sEx9_I7(}Gvv>cxl z4lN9r{{9_1vj6b91keNHwWx&{CUhUlBcZNSh)lBkl2DR{Tm0tY&>-E!5@yUg6Pn9R z6b=}0i{1Ds@LTH6{e#Lgh~<130Fu?O^=A}A3o{v{KRdJx0KXkdfUPDv{~!W-f)_$GXEtNm=$J`EF0&??0@jLrxL03 zGik37CmqKF0|iehsHGFr>Pkd+g1S=)BCg%g$zz%|J|{jXLYSm|Dr z4=BpClU{&9`eI(GKCqSFO<6r8#j5OEo9X(gPjvNa`Jv{i?(%nnWH+U(3j(6%i(ykV zyb5Z&W>)CDcyNxexB>`!0BvHh)iHo|fD?*F`2w!p;y z2_#m@Eiq`I`o87xpYGp}FK>rcN$tp*KAWrD>=qe~OSF~e{!Id#D*Qz;&DAC*Fl^jk zUK@V#*NZw_Bt|xfFpc&17iA}}KNfU}jA^AUVP~>+Jfdqo=`(?c+@p>ma;|oAwFy{Z zbRb7<=zCD+#{&#N!VUZ?uh5jZ9o$mC@G_SbHUNqtAI~8{3eD&LU5sTC%kMR#4;>CI?MOEae9sz_TT7A%^-jYYfX($T;69Ku-kVU=N*`ITO-! zrLpIPCdusZ)JzbP+yDG%2@l;=pZqZ6i%73C7-571hF^r(x+8wmet@e&NMyJWjnD-((@^P@R)zeROugzvmx|x+vuIi*^F;Z-$00xt0W>w zQ17me4buFT%T{HoHjZ>MWqu%wJZgV6bd(Q-eQx1b6+8ioFXHu9ae>G3di>XBl2mB~zP# z5VtG66#t?BP<5+1)XiBNFomJCX?-++~ zfZ1e4Tr!Fu1%enUG&2Cvk34NmV3a8D$)&y!K{kJ69?@PF@t2mK^OU}Lv-3FE56BTcDUWJy_|>zR8TN`7<-lnOLrcv zw#|kTz(arwPbhaBaLB*g*ut6}&~RKy*m8x?BDHg+6-Zn8fw3LdrjP7P$y^(nwlI^ctjb0RPlwaAt5?ckN ztQeO7N3SsVONHh-fgWX3MrSr~lJFlhCOMF9Sy@@ixM~!QniGdx_wVu%(545 zTbP(q-rd&X-Y=OTlm8J2@!z;S^2@bkHiNnOo_|ew^P>9k!aln04-Z#eUY1v$I&RjN z{VO#P?+F$^>`Bw;I@5@jlgG@vCLba`8&7p3KWLl;i8)Sb$c3M5`zs6la}BaTKR3Rqa~Q=CKmDZ6 zQJv*~@pSMNzQCFgRb)>lpF)<2zXOHr46qzfqLL`*r|6}4O28!i)jev?;L(Lbhrkex9P=2MtJf- z{Blq;y(ILu&L~p3hfO@b@EP@H!N;?Z{2Y_8h=RoElvqKuWO_`_EeGN^s-9fn7&8bE z$-wQkeYoEkfwLKGUFf3AEPOzAfXWrl$Is>DO-2hlqWGbEiR(v)vMSby*=Q$2M zbv`V_=Bm<35r$~u)Zkt8ii;7LvOP>81}EG_|FKC!j{jC7L6NO0&`;KcEEb3_d7zmEz9DbG`roxl!*>-KNIoCW|op24jRs#8b#(T%zI)^jWlPl}kh+)TRD0j10KX(A@Zw#*~U(N}0Z@ z-n@je6)dT&UP%`O{~Wrkv$SOp=ELl_|-s3`(0IaX2%dtAwfe=)dm$i&* ztU2_W7C`dKl|#$Xwj|>eK0R`5mq1Swu8@%=>QC?aV@-Wc<%R~X@l1J|)(dt%3`hS} zIko-{R>a%XcZ)uO_xqmjzBGj|fHHy;L~U)L6qqwMZ8(z_ZzkkJS5Jk$l4x_FV5hBk z<;loj5Q?n*850d1UjPC{c3OQ%RjyK?izqL8w+8clGeUYbJSXgB7QV6|2k1TsB8N64Zp}k zc9-pt_to0$nDfEXd|fX$co^Dw9PZ$3pmfz*dpIfk{7L63<9Nshi;Hjd@~!xFwM43< z0py*qA6_IL9)Qp58f@_KdeIYV)?xJbUw)L%40*wRb7%ZzM!`*RW?Wu zl$g|Y*!g8B>a7`A`!toteXp!m{448^sn9Th!aB{0LkwBUOvIBS&JQhC8FAF2Eaue7 z5cz4V&)0QCIGm#Cfx)pf7F-LuWyLTSEK~~O6DY?oZmjF!7_)(6HF8dV8+~X z%qO>*`yYruXY2oT6nZnM%x*9hKkJ_;?=8URx#lvy>QuqfQT_Vx?|$N=M|lNGuoWZ; zX`}3NC6-q5KK_^(;AH2kUm@aHJJhVr9VZsN5!UXYN-3%w17C=ZWyoCXR8JEf&#?*Nfpn*+3(K=Hj zV+Doi%e7DFBCq6NT=V-?HIxE$qw zy3775Nq=tt9VCn9?4=9^mqP(B1mbiJ}m2wg|~sQu)(ZH_i$=++jzV ziriDbdEW0)d{fLMQU>RK9y9#4h1 zMg98bZWER?pI*VenLS!4+}?_bmNoxT`*Z025r+Rr(k__UU^0KO)%MYi=JkHtcV9m5 ze5A^D<$mLAWIWU+5k}jAjF$M5KslC@LJ21akzi2HLTScvKrc$YOS zj4~w5;WtzNXgnMMq_MvA)U$uroZj$$Egp(^d$G(oJzNoXigt7lOXj%9K1KS?spGrx z(6n=w355(R9IPWy*+@l5iRBTO-4YX{;}kSpOQKGKke$)o!12IYfJwZ^UwmlIG5AWa zupPwYA0UA_)smA=3uMnh)G}EWuxl0$}kr zh|!jc{aYJYKB;8#Zxn{aUu9m`fL7QgR)(O1SdFzYOk!Ivtbcg)&ve`}?38waOj|q2 zsLTd3>*q2D-kK(^5}DwRH1dh@qNs{cv*O9tG=H1>^zPht+u`G zCoGUi_XQ&f&=YKF5VwTE(ACG}_B25TzVdE3w;Ixd#BK{|#~@4tBS$j#A9REOgI&V$ z#4bMYgG5Z8;=V-*4qO;3!>;Pq`TR)icR#6Le0@@gVM9rVK)&03RAryoYcx4z#1hDk z8f+Bnz9S!4*I?OMIHJH*^q;b_e{c%HizU$G3w1YlH0H%NcV1VfSrybhMnltDn~EUF z9)tHAe1+{fgT0JZfqy|v_*5%~M(VFtCymF%6|I1ArXbk zNeUX;NU87{e}rnnY%c-2GHqtiUzB50cevrf?yak#5<(7PoO0@zBcju@`!xDR4G%(! zU76LnocF3)rwi}R*vBbYkSNM+z_87jBDTH4*h->&EmyQr7Um4V%jZHM3~nJ%t6(L6 zD{!;{UV2r+uN-0EN%;pb_;k7M5OVPrE8AYf-gPX$#+dagsddaDYhk)-IMVdO;P|?n z=VMZu-c1v7ig1$1TYCJ^v|c8DOT2|^0c2lHVs7@&y^$Xx; zMo)7m85xpZcq6fi9;oZv^l%Krt~7^qL_kkC)~*}DBv5NyqzQ#L1yyBPPyoYe?ghg< z$WJikjYp!r%P~-Sf6x)ATj@{_?oGxJ;<-}SAfg>Qy)VbBe-!@Pyzx;qDqrV36{MLo zRrgd2{zalv(-Z4U&pFbgIIM&|50uqH141&-1m~A6U1Y7u#UZ55F!cBM<@?k2g`?*` zCVyro-v6yA%`rHGE_I*IAFKDLx(bWF?hdP$tD`=Y_o|dOw;n*TG)~dLOZC|iC88Qi zf2T}rptRhfSRo@B-Vz}qux2b{PE`>9+SwbCUiP#YVEQe}NH1iVYz!8Vp_gM#{OkQU zlMK%QL1npVAQ}?;!QkrNCk?Xn#k5?5pg<3C()u3Jo>8A>PcNc~U_pzrq<^}Sesjk2 zSdfkcA6h#p6%P;g;P>1dWL59{IxvNW}gt`wtziPO@9G*O3_8InBNB!%iPhlc(&Pa@(jC?=O)n>0q+Wq{^J5;?uhuINCbmE+QB4ZC>EP+1tCB z#g#hl#S|>C{aHrVf|KmLCi{;t7jO>^_|-#NUuhhgE1#I!Ji^#qo~9>t*Cuewso1{h zY60>}Ql%2pukz^Ju{SPZJsRf86GFMn;~1ma1B)kffM19GPL^2*(X5iRfpT0SBk|?z z$)gfxMGn`8iz*;2VRT8|@`M+D1fG7D;;XW&Cm?|v(oo%~ZU987eMIv^h0*XlQ&ttL z$xpb_3x>yTE{?~DRVSCYfeC0;J0r_^bMK~WEL}T+a9Ytar*kUz@k-VdV4K1HmD;{M zxTeoU>5>HJ#O`ixLxTSh{MnNKTyy^0k|$#PMizYXxqa^9t8Ui*st@dLA5O3G-m+LP zt2~37Vm!gZGZnY&*;|cj2wAxC7t8R4sQD=$BZEy9*#p&)fr44x^a3bs#r%6ufjdts zY0ir`DEbh}B)y_IxhTcE4xih(uyMRCPoGK<6fUdXvw9(p<{X0FY-8k?Zicweyc3V5 z$Kc=z4bOV-!e=Zf&1R=l^hyWQFsQ zG@mIV@S$6^&e}rlZCTnzrCtiOkU{Bp>J=Pb`hiL23x^4xf~P2u@!oV z?8p3{DAZOBwlL{^L&a~|LE!;GF(E9b-T2kI**omg9dvA=`dJILf#fCvBzomsno*`(RsMWxl<5Qh@bi_SeBQ3crS=(;X(XaSX7Iks%ha)%GKalHH+_r*v&i?jx0!A$k<0*N z?GazXn%cf$b|g!mI`vuOzulV|Wv3|yqm5AWZ(EG_TrEouqoQ&LWel+lj7I*pGv7pJ zfqEcn4^AuTVkf$+v5X}iA!U$=nB2%E7td0VMDr>}^+<13<`->&+{@a*1F$v^<-+l& zgz3jNZjnBZc>hWxWOP!4)MjJlO?$Q~WOM2z@?JOm@!k|TEHjU&D}G6k@+NFLA@Ny@ z7k!((BG=rNKJfkZL?BudOX*ig#w^%Fgx#!g_%~`Tef!a2I}nUeu~bm6=S0I;BP@GM z<%t$n(W~A&a&xk*yEi$tvGTICEM%d;cqnx|V}yxMerBnwuCC@5y`igjI36&(n_9^+ z`IW;m@-WPD=2s^+>dM9yr-A*t;2d_xwi^nhPPN$F&AdxDnb2(+q?U-8Pliind9p+! zYD`@l_pb!*F+Ma(iNN*!fVx%9vsDuXd1u*{hF%KfPftTNBgb zz<_?@ZohDgt=OO}Nfu;pNiTnYf&m#B2hp{vBqpPR0f4;J)Z%YSnD$x~!tqD8>3{J3 z(DxG}`rjNh#X$Mpx8!sCmF2YQX>#9wEbpc=&Q#H)H9BFGM5+3#t#vhUuP=ql`y(BW zZ!oT#Dd)u)pA$A6L?AT6WE_@q5MD9`EGdCXjdT~O0$Ivm_F|6V63K968W;yw@D~I7 zL#UVlXDp52`0S`!yx^~^gB9O*2E@8Sup9%Yc9)e>fzMG1;z)aFT_^c8deD_HD^Q|| z6d1bg+{JziWyC*W1h_JE(X%uqW00V*v||Jcv%vKcE%v2WcPa)oU5orNc%fmv@-eOs zVqdPKpNTZS0_(JGwxVVY$rS(il4A4^7O)z3n zw{L=A00R<;>6gi?Yun>gNS0oF7Z)mi=d2>Um%q2z4l?9BztbI31+)%5Jxf1j5Pwr}Ghl|N ze0Soip?`#fC!9sI0)_$SdrO7+EI$`DUgHsVh%;uAwTQ@DD8cTOTXZezMf|SGMw5i_ z{6Lj<9~2Bgs|uj3v?A#_avah0X)d)x(|rQ9#89bok{++84t<&yWA>ZL6d8Brsii;Z zm7-i1VtoA^1v>)Q^GfPeD<7?pc56H`k1s85I=o`QQn+4xw2({SpOY8GrmIJn-cy3n zXOp~jjjs_mG*XOH*cDZ9l)Kk{cyM_3_SZVKvq^Jg)$W&IuNJPgHY5en$S7dYhLx>V z4>DOc&r8UgkZ;l*Ns%J(VJ33snqR!{ zdL`%cMBb9B^Tw}HPs0-Jbtx87@50{R9*xz$U1Np8!Qaabvr??9VjiP@_OmaS;zKxCSo;drU3tS3X_(F) z#Lz-cg=iylM^b1L-K^!gN}}b5E9dFn;5UnkecyPjRU;6*LPT+cmpocqRlZMIp+l6V z=ku31RS64<5@AA*KB7~bYoZLYxU(W{^JGH&buppcx^Ui643g*qmN9>_s+swM__)y8 z&$>*-m#t$Sci7nu=a!opY0CACX8GRDkq)IQ58Ztp2~qyNf5A%xU#3S8mB&DN6k2?EzDaKZ?D z&hs_5jfjtx87BAoGCNMvcZwc4$XK&(REW?uG43X&Uki6d~QRdA?Xyv4-@k*u&uiPf@ zT|p$IQ>7Oq_Gu$@VOC$?^>`_enBWTY$Ps8x*T_bx7NzcoElP$%wS{G4IGIDK1yJ)+ z84Q?bMK6CAWNQcEr^n0iaVyRYAczcut8~?sHW}~4u*&6`I>!dV-p8Tj1!-QLq8}b7 z=itzvIlSF3=B-XdNe~}r@6>va-<~#WN8LiZ<*UWE6v^7@KK!7v=0XB@e|W(~xb*2` zLY*Cx9r81|snOKHkbiiE(?cWqZ;dj~W8FTcZ7lfH%mixR3$^}rM?FEbP)=FrWNYDf zYq%V*8?6lHFm?9PT!&CVWK>!3gcPMvNAXs4i3q)V%&`bM_W)TKMH*4yBD~-vuJ;dI<_eJXiYUwnUC25(hmIA>w|C46OfFl0=(q79ofz*%79 zdDq-iZZF<133#M3-Z&`(Wlqyr(nk7%6Q{$x{(7D&8^! zH$x28PZU5Fy;Di*C@qcivMy|Ks%14IazPu)lD*Z8#>Jhe+SV!UZ}1Xn;F%Mm4{yHX=WNM=YT_fZ@RwioK z{G#sXgv+m$c-Ibmx0i>O71k}67XB1F-xeDue$pzaM@f2FUa*3n)&N&QZsfETt5Gg2 zoEfQZYmu`j32`RoDwLSlDU^|9L>h-E6JWpgSFoZ=dA7oxWi6U}tijH#pzb|8+y?S3iufKwX>TMTMqwzjGZSEHiFxl!O6D)AC!@kFE7M3fZA z9vweI_L|lM_t&~9#lzCOy6(NILCVkpTwVeiyu4SBI8kMx(uh%b%48WE%%>QqBTtr* znR&XW39&aGkF;y^-I2WcAa9xIZdCFcZM~jcbU);C^ej4Oj}RHwPnaWS41G@E3!= zE;zj3>Z(0o3So_DIux{g>E8}T@91%24F!J5{!T0M^jJAzaaPGcN^vbKJz!ty^Y%Pb z*_DIJ%DyMYjYsT0lVx64OP)8kNKe^vWZ&>@VYwEfg-NE|>AI%HXv}WCxyO_kc&n&F z*&lsKam#A!^KPoK^=ww=;Z^V6t39F1FCQIwrk0l;4mT~GXH$JTb~w(A(_HUol$qSg z@;t_=%I6h~vcrYZFEuY_2tL{g3CcG@jgs4!Mird-BLx6Z6dHI~Di05BtpIpC16%65nkJKO$6J4~+NRJi|Si zyOoyiJz|#v`o4U9k=tEc9QxeW%YAMZ zZ2EQ1FA6yT``ovE0VlGEo4#x@B=B=>wss&D!T(_<+<|h6e zz`?V}_cV$(J5;J_rM2B?^$oi#wgSlA>kP+ls-esp?w59aj>RH|-BL!to}E0oovVD% zXnghkKtCUNs&E#8qYbK5k3J)aT4blNDs-L7qaPnjWMP8KLpH{fOFZSKs=z9(-~w%`nyea#>C+iMIuhddpSf z6tB9)(lNU3b2OBN8dBdSpBdO;kk;EM4{~>D`o4m6SFd zgn}=U+eJ%b!g;HzzY{KhYQ-{7XnWhrqky8b?LME0epF$jijP7r9oCTys!6BKj=uTS ztDk$XUUYnnj)x)<{(7mvxTRv;W^21VUyPL!H80*cjauyVo@@;o94`|-0CPqU647C%#G89 zvKTnu+Oco2p0iG{>B_q6#5PXS9?a?-hZ3{#XhU=%Qm8F&S60t$l73_wkSGvgZ4dpC zQzmK>s76s=nHyQ{tujZ~>a!t5+kY}=7MA9^8`=w?cgDX~Hxf#RHN|fpQE%r3YL&~>U}kIj z9^6y;_ziX2O7Z#-e!XJ<@qz_@@x7kkX29Ec8P|2i&`RK8c2tIr_15#-tbD20$GMr8 z$`v%%`3s+T%GXEgduT)E4JMyml-D*E7L0tFkx4m82b!fMgO{YC1>=nHQmMmY(VWKR zvjU#{Y9MhMx%A_%kymxKS zJYpzrQMKFN%O2U{Oxc1xArD7SY3_Q?e;GUzqitOIolNlMO*S*{h$6u*XB4y(S+Ht+5(-NWQUlC&=Kru@Ic$6i0KKEo_~H#nIY8XpGfnklTZo zE^A6dPl_&vj$%wMQsfa@2B8%!g5g9*KLVn98vPVTX|TLL9dyUZHVJG^ynlilsmIPR zLdnDBXQ(I9O4F+1(v{hTz(D@OI!+?8JD*1fhjHMKN|KM50h__|4 zNsC?c$A?Z6I`Vh&#Ziq!JG5Pc3q=;D3&B4D_ z=@Z3xe@PU1(&VVH&HSboQg`l?a?x0w0Bc%l*q? zfD*V4=<`=;Y5n1hsn@>*kR5C>-o^tH+?KA4#=3&vpywQ93`s}Qp@oFjqNpd++a5qUu zsC=!N7T-qg0za$V6#Vy7QK6nkR`E`%Y7*zKZxAs%O{^(HO_j>dx6ZaR4(l?kkB6Ax z<`FYT4S_cay5gOZpPtOMATE^C&O*2A>nYV&_Hf??Q%ZL<$e&klJT2dFf%G7Oof{q-Z`&tY4CjYFt z#Vw6gk_h))^RH@U;=&{@%%*mm>HM}~(bq4UnBKpLQcCHq8THtrQJd@>BE38G;vGxp zq{(E?Ftwx55Ncb!gL{gmRX$AMrm_X0(k6+eVDj8lz9&nYO3KXoI=u_ z7_oJ2TA9Mqk zXMnfX18=<|hNpii^|9<=Yc(*SF!0`zVJVXB`~VkDP7(y;(!(k<7c8bNT6=+tuvPO>kMKrA&n6otvPErWw?=fNc$@C&`ovS-}62) z*=GgO#)@qVA4I@mw*$+*JU=eSXg%5!masSaett)EGlQjb37*VH;(%1l<{V~$5r$oS z(4wQT+}*tuG)w90&z32L{x+Sr8pv(RyP8pgF7rf?y}A?{X%Ps54LpO0i5_ydX1%yb zT!9yu@fU1l#cHm1V6$_VTbr!!%-yx1sdao=0mbnUtLzJfcj_}JkCH{=@L#dXLnDM5 z)ODotv|w6CCQk0$v@ZrU2vw|5voHjPX+9CE{iG5}#OVxqf?D4FE+d4^)-@8<*h8k@ zZOq`~$$_O>0@08^+ui1)+?8;uXK3%obU309c&{m_Sg-#*5Qhgl1jm85EBsDRTlhI6 z0fr#g12yat$~JF?v3q-AADVXk4=tbG$IcofB=zVh5*K!pPyAps)Z6*Fdr8bkmrc-p zGrq3T&%X2ZsM{B2zL6YO_*YLJws(FNYbIr0D9?Gp&DtsC|7S5^RUl8*2jo@>3H%Hl5*0Jx{e; zX2PPtEG(0!kZDU{*Q?AMB6rXY3MP4=rRB&K$0Ejy^DFX#@Yiyckj_r2&m&ZYIyy%d zKGKuAaoCgL&6w^_WtX1ixMyh+c}ZV=)7a+pYPdPIg8MJd1@JwBSe zdK}BOWtL4Z&G5L?ul^}|7Fn8DB!bWb7G^ioU5hgT$q*_frnr&Lzal3aVN!B4ZL1IW zHX~OSI&(fsNhoLLo^nj#XWF~>yB)dIcJvL&=1k(CsJkhwPkucj@92D zS#1LC%~GJHo11cWqPD5SrfcNt{={m6B~Oa6>y!=)xh0ewj3#E&By;uXKB}5KybArQ z!wy?fCff~xBz(=*I$KM*ZSZiFQ6Ntpqo{O2C<%id9=SrCtRDI*fIWmnMh9CnRFGG? zh$gUM`t(H$z5KJUU#33wDafuYe}R!7LFS>JD|*{m$5`QabBmjvEC&%;6twL;iK2909c2+bZ*FF5JQ@&k zUrUaI5tG}&JZS=_{8MQ8YBpqbtBSl|RVGo5qgP$i7Eg{i z?qE)8f6Q&{$zc}b2&>s9@z@t0V{nkJE zG4hf+D3`;PF<--;6rGqzoT?pJeViq==ZgL{H8*en{wtRN5}NF1=&{0hAmRUzcbG9J z>J2|tC#-ZYiVJgKr5#_>=w`H|{9x^rYdq5O_RPpMi-PCxXvQkvEhSg_-#j$Tc5^1( z=}X&*E>eCQ!pB9U@8&AYXLYbm$gU6U|NesU7X)%+%=PhOA3*Nn>f>Mwwy!TiPCy`# zcM1?_1n|Z9^&i;uCjs?;OaD=q`M1XZsz4zSn5~zml{3(C-^=;hCdNN)g4Tcp+WnVw zE&LBVfA{=HFPVRozyb{7YU^kP6yUD5|M$EMJFf@uJJ`DX`LQQZMLza+yO#d_BLCRa z4z6hjXoAan+d4i5#F#~{j&9&-5)sn%kK(`kGTZ)<)7pC4{W*>L6E}QsPZv1Q2XG(L z8R=#10+j8MUdZcU|B*wCUES}3&VuQm(}Y5<4|2d}0F$5{(iRC8FoS}E7=auHRoFP<5FR$w%Kp9k<2gU_R?0|V2umB{mAK1qAcMf(y{3%0U z1O5Df^8Y4aJg5Mg58w#k5AXp1SU=FG08ap(1Ec}~cA>!l?*V`*LxC7Wfs22jl>j*a z;CR3XD6kHoK)9d*02Kh>m}dZi0M!760A2vm04M<9`nGG`pgnNB6##JY`n6qeAP4(| z1H=FT{zB{juDkwSjstSgAJA4hKnVb-`!xVKmpTAjfD{1GCtrXB0MLI>7dQr-V;BIa z3$zK&F%}>S0F;4kU`)V%pda8IK>hCkvH%JIKp7Y(P#>rtt0sDaE zasbd?F#zZTXy+wB5CG^KST_RzZGrQ!1ORP={=WbK;|azg3BU;e^bOPn`UC0?0RVRH z>poySvjMjn4^*>|x6zn61^dH4IP==leVTDTvw|S;QXrq literal 0 HcmV?d00001 diff --git a/dist/vendor/glitch/glitch_assumption_toggle/sounds/blblblbl.mp3 b/dist/vendor/glitch/glitch_assumption_toggle/sounds/blblblbl.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..45ff06c45e5ab66ad2ed18b27ea5fabbbb5aadd0 GIT binary patch literal 44488 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 b0S6b+dI2cKGynjy94G(-0MP#z{`S8BI~dqH literal 0 HcmV?d00001 diff --git a/dist/vendor/glitch/glitch_assumption_toggle/sounds/blblblbl2.m4a b/dist/vendor/glitch/glitch_assumption_toggle/sounds/blblblbl2.m4a new file mode 100644 index 0000000000000000000000000000000000000000..3eaf5959ecab0ec7a7dcd987e27d171bd65b1ccf GIT binary patch literal 97799 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 H|49Bn1164{ literal 0 HcmV?d00001 diff --git a/dist/vendor/glitch/glitch_assumption_toggle/sounds/blblblbl2.mp3 b/dist/vendor/glitch/glitch_assumption_toggle/sounds/blblblbl2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a76bce9a49c2f4c5c87202afc7c64a01be702feb GIT binary patch literal 40994 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 Sz{^eq0Q>*yV*kId>wf@O?e#_g literal 0 HcmV?d00001 diff --git a/dist/vendor/glitch/glitch_assumption_toggle/types.d.ts b/dist/vendor/glitch/glitch_assumption_toggle/types.d.ts new file mode 100644 index 0000000..04d5f39 --- /dev/null +++ b/dist/vendor/glitch/glitch_assumption_toggle/types.d.ts @@ -0,0 +1,56 @@ +export interface GlitchComponentConfig { + id: string; + name: string; + version: string; + params: Record; +} +export interface GlitchHostBridge { + playSound?: (id: string, payload?: Record) => void; + stopSound?: (id: string, payload?: Record) => void; + emit?: (type: string, payload?: unknown) => void; +} +export interface GlitchComponentProps { + config: GlitchComponentConfig; + onComplete: (result: GlitchComponentResult) => void; + onProgress?: (percent: number) => void; + theme?: GlitchTheme; + className?: string; + host?: GlitchHostBridge; +} +export interface GlitchComponentResult { + success: boolean; + score?: number; + data?: unknown; + error?: string; +} +export interface GlitchTheme { + primary: string; + accent: string; + bg: string; + bgSecondary: string; + text: string; + textMuted: string; + border: string; +} +export interface GlitchComponentMetadata { + name: string; + displayName: string; + version: string; + paramSchema: ParamSchema; + defaultParams: Record; +} +export interface ParamSchema { + [key: string]: { + type: 'number' | 'string' | 'boolean' | 'color' | 'select' | 'range'; + label?: string; + description?: string; + default: unknown; + options?: { + value: string | number; + label: string; + }[]; + min?: number; + max?: number; + step?: number; + }; +} diff --git a/dist/vendor/glitch/glitch_ccd/assets/index-D02Mu-Ij.js b/dist/vendor/glitch/glitch_ccd/assets/index-D02Mu-Ij.js new file mode 100644 index 0000000..63f0e54 --- /dev/null +++ b/dist/vendor/glitch/glitch_ccd/assets/index-D02Mu-Ij.js @@ -0,0 +1,9 @@ +(function(){const z=document.createElement("link").relList;if(z&&z.supports&&z.supports("modulepreload"))return;for(const A of document.querySelectorAll('link[rel="modulepreload"]'))o(A);new MutationObserver(A=>{for(const _ of A)if(_.type==="childList")for(const C of _.addedNodes)C.tagName==="LINK"&&C.rel==="modulepreload"&&o(C)}).observe(document,{childList:!0,subtree:!0});function b(A){const _={};return A.integrity&&(_.integrity=A.integrity),A.referrerPolicy&&(_.referrerPolicy=A.referrerPolicy),A.crossOrigin==="use-credentials"?_.credentials="include":A.crossOrigin==="anonymous"?_.credentials="omit":_.credentials="same-origin",_}function o(A){if(A.ep)return;A.ep=!0;const _=b(A);fetch(A.href,_)}})();function f0(v){return v&&v.__esModule&&Object.prototype.hasOwnProperty.call(v,"default")?v.default:v}var df={exports:{}},An={};var zd;function s0(){if(zd)return An;zd=1;var v=Symbol.for("react.transitional.element"),z=Symbol.for("react.fragment");function b(o,A,_){var C=null;if(_!==void 0&&(C=""+_),A.key!==void 0&&(C=""+A.key),"key"in A){_={};for(var L in A)L!=="key"&&(_[L]=A[L])}else _=A;return A=_.ref,{$$typeof:v,type:o,key:C,ref:A!==void 0?A:null,props:_}}return An.Fragment=z,An.jsx=b,An.jsxs=b,An}var Ad;function o0(){return Ad||(Ad=1,df.exports=s0()),df.exports}var f=o0(),hf={exports:{}},Nn={},mf={exports:{}},vf={};var Nd;function r0(){return Nd||(Nd=1,(function(v){function z(x,M){var X=x.length;x.push(M);l:for(;0>>1,pl=x[ml];if(0>>1;mlA(D,X))RA(w,D)?(x[ml]=w,x[R]=X,ml=R):(x[ml]=D,x[N]=X,ml=N);else if(RA(w,X))x[ml]=w,x[R]=X,ml=R;else break l}}return M}function A(x,M){var X=x.sortIndex-M.sortIndex;return X!==0?X:x.id-M.id}if(v.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var _=performance;v.unstable_now=function(){return _.now()}}else{var C=Date,L=C.now();v.unstable_now=function(){return C.now()-L}}var O=[],E=[],G=1,H=null,J=3,_l=!1,xl=!1,il=!1,El=!1,V=typeof setTimeout=="function"?setTimeout:null,Rl=typeof clearTimeout=="function"?clearTimeout:null,Tl=typeof setImmediate<"u"?setImmediate:null;function jl(x){for(var M=b(E);M!==null;){if(M.callback===null)o(E);else if(M.startTime<=x)o(E),M.sortIndex=M.expirationTime,z(O,M);else break;M=b(E)}}function el(x){if(il=!1,jl(x),!xl)if(b(O)!==null)xl=!0,fl||(fl=!0,bl());else{var M=b(E);M!==null&&Fl(el,M.startTime-x)}}var fl=!1,Q=-1,hl=5,Zl=-1;function $(){return El?!0:!(v.unstable_now()-Zlx&&$());){var ml=H.callback;if(typeof ml=="function"){H.callback=null,J=H.priorityLevel;var pl=ml(H.expirationTime<=x);if(x=v.unstable_now(),typeof pl=="function"){H.callback=pl,jl(x),M=!0;break t}H===b(O)&&o(O),jl(x)}else o(O);H=b(O)}if(H!==null)M=!0;else{var d=b(E);d!==null&&Fl(el,d.startTime-x),M=!1}}break l}finally{H=null,J=X,_l=!1}M=void 0}}finally{M?bl():fl=!1}}}var bl;if(typeof Tl=="function")bl=function(){Tl(al)};else if(typeof MessageChannel<"u"){var it=new MessageChannel,Ml=it.port2;it.port1.onmessage=al,bl=function(){Ml.postMessage(null)}}else bl=function(){V(al,0)};function Fl(x,M){Q=V(function(){x(v.unstable_now())},M)}v.unstable_IdlePriority=5,v.unstable_ImmediatePriority=1,v.unstable_LowPriority=4,v.unstable_NormalPriority=3,v.unstable_Profiling=null,v.unstable_UserBlockingPriority=2,v.unstable_cancelCallback=function(x){x.callback=null},v.unstable_forceFrameRate=function(x){0>x||125ml?(x.sortIndex=X,z(E,x),b(O)===null&&x===b(E)&&(il?(Rl(Q),Q=-1):il=!0,Fl(el,X-ml))):(x.sortIndex=pl,z(O,x),xl||_l||(xl=!0,fl||(fl=!0,bl()))),x},v.unstable_shouldYield=$,v.unstable_wrapCallback=function(x){var M=J;return function(){var X=J;J=M;try{return x.apply(this,arguments)}finally{J=X}}}})(vf)),vf}var _d;function d0(){return _d||(_d=1,mf.exports=r0()),mf.exports}var yf={exports:{}},Z={};var Md;function h0(){if(Md)return Z;Md=1;var v=Symbol.for("react.transitional.element"),z=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),A=Symbol.for("react.profiler"),_=Symbol.for("react.consumer"),C=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),O=Symbol.for("react.suspense"),E=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),H=Symbol.for("react.activity"),J=Symbol.iterator;function _l(d){return d===null||typeof d!="object"?null:(d=J&&d[J]||d["@@iterator"],typeof d=="function"?d:null)}var xl={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},il=Object.assign,El={};function V(d,N,D){this.props=d,this.context=N,this.refs=El,this.updater=D||xl}V.prototype.isReactComponent={},V.prototype.setState=function(d,N){if(typeof d!="object"&&typeof d!="function"&&d!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,d,N,"setState")},V.prototype.forceUpdate=function(d){this.updater.enqueueForceUpdate(this,d,"forceUpdate")};function Rl(){}Rl.prototype=V.prototype;function Tl(d,N,D){this.props=d,this.context=N,this.refs=El,this.updater=D||xl}var jl=Tl.prototype=new Rl;jl.constructor=Tl,il(jl,V.prototype),jl.isPureReactComponent=!0;var el=Array.isArray;function fl(){}var Q={H:null,A:null,T:null,S:null},hl=Object.prototype.hasOwnProperty;function Zl(d,N,D){var R=D.ref;return{$$typeof:v,type:d,key:N,ref:R!==void 0?R:null,props:D}}function $(d,N){return Zl(d.type,N,d.props)}function al(d){return typeof d=="object"&&d!==null&&d.$$typeof===v}function bl(d){var N={"=":"=0",":":"=2"};return"$"+d.replace(/[=:]/g,function(D){return N[D]})}var it=/\/+/g;function Ml(d,N){return typeof d=="object"&&d!==null&&d.key!=null?bl(""+d.key):N.toString(36)}function Fl(d){switch(d.status){case"fulfilled":return d.value;case"rejected":throw d.reason;default:switch(typeof d.status=="string"?d.then(fl,fl):(d.status="pending",d.then(function(N){d.status==="pending"&&(d.status="fulfilled",d.value=N)},function(N){d.status==="pending"&&(d.status="rejected",d.reason=N)})),d.status){case"fulfilled":return d.value;case"rejected":throw d.reason}}throw d}function x(d,N,D,R,w){var F=typeof d;(F==="undefined"||F==="boolean")&&(d=null);var sl=!1;if(d===null)sl=!0;else switch(F){case"bigint":case"string":case"number":sl=!0;break;case"object":switch(d.$$typeof){case v:case z:sl=!0;break;case G:return sl=d._init,x(sl(d._payload),N,D,R,w)}}if(sl)return w=w(d),sl=R===""?"."+Ml(d,0):R,el(w)?(D="",sl!=null&&(D=sl.replace(it,"$&/")+"/"),x(w,N,D,"",function(Ua){return Ua})):w!=null&&(al(w)&&(w=$(w,D+(w.key==null||d&&d.key===w.key?"":(""+w.key).replace(it,"$&/")+"/")+sl)),N.push(w)),1;sl=0;var Il=R===""?".":R+":";if(el(d))for(var Ul=0;Ul"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(v)}catch(z){console.error(z)}}return v(),gf.exports=m0(),gf.exports}var Cd;function y0(){if(Cd)return Nn;Cd=1;var v=d0(),z=xf(),b=v0();function o(l){var t="https://react.dev/errors/"+l;if(1pl||(l.current=ml[pl],ml[pl]=null,pl--)}function D(l,t){pl++,ml[pl]=l.current,l.current=t}var R=d(null),w=d(null),F=d(null),sl=d(null);function Il(l,t){switch(D(F,t),D(w,l),D(R,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?Wr(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=Wr(t),l=$r(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}N(R),D(R,l)}function Ul(){N(R),N(w),N(F)}function Ua(l){l.memoizedState!==null&&D(sl,l);var t=R.current,e=$r(t,l.type);t!==e&&(D(w,l),D(R,e))}function _n(l){w.current===l&&(N(R),N(w)),sl.current===l&&(N(sl),En._currentValue=X)}var Ju,Tf;function Ae(l){if(Ju===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ju=t&&t[1]||"",Tf=-1)":-1n||s[a]!==y[n]){var S=` +`+s[a].replace(" at new "," at ");return l.displayName&&S.includes("")&&(S=S.replace("",l.displayName)),S}while(1<=a&&0<=n);break}}}finally{Wu=!1,Error.prepareStackTrace=e}return(e=l?l.displayName||l.name:"")?Ae(e):""}function Yd(l,t){switch(l.tag){case 26:case 27:case 5:return Ae(l.type);case 16:return Ae("Lazy");case 13:return l.child!==t&&t!==null?Ae("Suspense Fallback"):Ae("Suspense");case 19:return Ae("SuspenseList");case 0:case 15:return $u(l.type,!1);case 11:return $u(l.type.render,!1);case 1:return $u(l.type,!0);case 31:return Ae("Activity");default:return""}}function jf(l){try{var t="",e=null;do t+=Yd(l,e),e=l,l=l.return;while(l);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var Fu=Object.prototype.hasOwnProperty,ku=v.unstable_scheduleCallback,Iu=v.unstable_cancelCallback,Xd=v.unstable_shouldYield,Qd=v.unstable_requestPaint,ft=v.unstable_now,Ld=v.unstable_getCurrentPriorityLevel,zf=v.unstable_ImmediatePriority,Af=v.unstable_UserBlockingPriority,Mn=v.unstable_NormalPriority,Zd=v.unstable_LowPriority,Nf=v.unstable_IdlePriority,Vd=v.log,wd=v.unstable_setDisableYieldValue,Ca=null,st=null;function Pt(l){if(typeof Vd=="function"&&wd(l),st&&typeof st.setStrictMode=="function")try{st.setStrictMode(Ca,l)}catch{}}var ot=Math.clz32?Math.clz32:Wd,Kd=Math.log,Jd=Math.LN2;function Wd(l){return l>>>=0,l===0?32:31-(Kd(l)/Jd|0)|0}var On=256,Dn=262144,Un=4194304;function Ne(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return l&261888;case 262144:case 524288:case 1048576:case 2097152:return l&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Cn(l,t,e){var a=l.pendingLanes;if(a===0)return 0;var n=0,u=l.suspendedLanes,c=l.pingedLanes;l=l.warmLanes;var i=a&134217727;return i!==0?(a=i&~u,a!==0?n=Ne(a):(c&=i,c!==0?n=Ne(c):e||(e=i&~l,e!==0&&(n=Ne(e))))):(i=a&~u,i!==0?n=Ne(i):c!==0?n=Ne(c):e||(e=a&~l,e!==0&&(n=Ne(e)))),n===0?0:t!==0&&t!==n&&(t&u)===0&&(u=n&-n,e=t&-t,u>=e||u===32&&(e&4194048)!==0)?t:n}function Ha(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function $d(l,t){switch(l){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function _f(){var l=Un;return Un<<=1,(Un&62914560)===0&&(Un=4194304),l}function Pu(l){for(var t=[],e=0;31>e;e++)t.push(l);return t}function Ra(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Fd(l,t,e,a,n,u){var c=l.pendingLanes;l.pendingLanes=e,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=e,l.entangledLanes&=e,l.errorRecoveryDisabledLanes&=e,l.shellSuspendCounter=0;var i=l.entanglements,s=l.expirationTimes,y=l.hiddenUpdates;for(e=c&~e;0"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var eh=/[\n"\\]/g;function pt(l){return l.replace(eh,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function uc(l,t,e,a,n,u,c,i){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+bt(t)):l.value!==""+bt(t)&&(l.value=""+bt(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?cc(l,c,bt(t)):e!=null?cc(l,c,bt(e)):a!=null&&l.removeAttribute("value"),n==null&&u!=null&&(l.defaultChecked=!!u),n!=null&&(l.checked=n&&typeof n!="function"&&typeof n!="symbol"),i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.name=""+bt(i):l.removeAttribute("name")}function Qf(l,t,e,a,n,u,c,i){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(l.type=u),t!=null||e!=null){if(!(u!=="submit"&&u!=="reset"||t!=null)){nc(l);return}e=e!=null?""+bt(e):"",t=t!=null?""+bt(t):e,i||t===l.value||(l.value=t),l.defaultValue=t}a=a??n,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=i?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c),nc(l)}function cc(l,t,e){t==="number"&&Bn(l.ownerDocument)===l||l.defaultValue===""+e||(l.defaultValue=""+e)}function Ie(l,t,e,a){if(l=l.options,t){t={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),rc=!1;if(qt)try{var Ya={};Object.defineProperty(Ya,"passive",{get:function(){rc=!0}}),window.addEventListener("test",Ya,Ya),window.removeEventListener("test",Ya,Ya)}catch{rc=!1}var te=null,dc=null,Gn=null;function Wf(){if(Gn)return Gn;var l,t=dc,e=t.length,a,n="value"in te?te.value:te.textContent,u=n.length;for(l=0;l=La),ls=" ",ts=!1;function es(l,t){switch(l){case"keyup":return Oh.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function as(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var ea=!1;function Uh(l,t){switch(l){case"compositionend":return as(t);case"keypress":return t.which!==32?null:(ts=!0,ls);case"textInput":return l=t.data,l===ls&&ts?null:l;default:return null}}function Ch(l,t){if(ea)return l==="compositionend"||!gc&&es(l,t)?(l=Wf(),Gn=dc=te=null,ea=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:e,offset:t-l};l=a}l:{for(;e;){if(e.nextSibling){e=e.nextSibling;break l}e=e.parentNode}e=void 0}e=rs(e)}}function hs(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?hs(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function ms(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Bn(l.document);t instanceof l.HTMLIFrameElement;){try{var e=typeof t.contentWindow.location.href=="string"}catch{e=!1}if(e)l=t.contentWindow;else break;t=Bn(l.document)}return t}function Sc(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var Qh=qt&&"documentMode"in document&&11>=document.documentMode,aa=null,xc=null,Ka=null,Ec=!1;function vs(l,t,e){var a=e.window===e?e.document:e.nodeType===9?e:e.ownerDocument;Ec||aa==null||aa!==Bn(a)||(a=aa,"selectionStart"in a&&Sc(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ka&&wa(Ka,a)||(Ka=a,a=Du(xc,"onSelect"),0>=c,n-=c,Dt=1<<32-ot(t)+n|e<W?(ll=B,B=null):ll=B.sibling;var ul=g(h,B,m[W],T);if(ul===null){B===null&&(B=ll);break}l&&B&&ul.alternate===null&&t(h,B),r=u(ul,r,W),nl===null?q=ul:nl.sibling=ul,nl=ul,B=ll}if(W===m.length)return e(h,B),tl&&Yt(h,W),q;if(B===null){for(;WW?(ll=B,B=null):ll=B.sibling;var Te=g(h,B,ul.value,T);if(Te===null){B===null&&(B=ll);break}l&&B&&Te.alternate===null&&t(h,B),r=u(Te,r,W),nl===null?q=Te:nl.sibling=Te,nl=Te,B=ll}if(ul.done)return e(h,B),tl&&Yt(h,W),q;if(B===null){for(;!ul.done;W++,ul=m.next())ul=j(h,ul.value,T),ul!==null&&(r=u(ul,r,W),nl===null?q=ul:nl.sibling=ul,nl=ul);return tl&&Yt(h,W),q}for(B=a(B);!ul.done;W++,ul=m.next())ul=p(B,h,W,ul.value,T),ul!==null&&(l&&ul.alternate!==null&&B.delete(ul.key===null?W:ul.key),r=u(ul,r,W),nl===null?q=ul:nl.sibling=ul,nl=ul);return l&&B.forEach(function(i0){return t(h,i0)}),tl&&Yt(h,W),q}function gl(h,r,m,T){if(typeof m=="object"&&m!==null&&m.type===il&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case _l:l:{for(var q=m.key;r!==null;){if(r.key===q){if(q=m.type,q===il){if(r.tag===7){e(h,r.sibling),T=n(r,m.props.children),T.return=h,h=T;break l}}else if(r.elementType===q||typeof q=="object"&&q!==null&&q.$$typeof===hl&&Ge(q)===r.type){e(h,r.sibling),T=n(r,m.props),Ia(T,m),T.return=h,h=T;break l}e(h,r);break}else t(h,r);r=r.sibling}m.type===il?(T=Ce(m.props.children,h.mode,T,m.key),T.return=h,h=T):(T=Wn(m.type,m.key,m.props,null,h.mode,T),Ia(T,m),T.return=h,h=T)}return c(h);case xl:l:{for(q=m.key;r!==null;){if(r.key===q)if(r.tag===4&&r.stateNode.containerInfo===m.containerInfo&&r.stateNode.implementation===m.implementation){e(h,r.sibling),T=n(r,m.children||[]),T.return=h,h=T;break l}else{e(h,r);break}else t(h,r);r=r.sibling}T=Mc(m,h.mode,T),T.return=h,h=T}return c(h);case hl:return m=Ge(m),gl(h,r,m,T)}if(Fl(m))return U(h,r,m,T);if(bl(m)){if(q=bl(m),typeof q!="function")throw Error(o(150));return m=q.call(m),Y(h,r,m,T)}if(typeof m.then=="function")return gl(h,r,tu(m),T);if(m.$$typeof===Tl)return gl(h,r,kn(h,m),T);eu(h,m)}return typeof m=="string"&&m!==""||typeof m=="number"||typeof m=="bigint"?(m=""+m,r!==null&&r.tag===6?(e(h,r.sibling),T=n(r,m),T.return=h,h=T):(e(h,r),T=_c(m,h.mode,T),T.return=h,h=T),c(h)):e(h,r)}return function(h,r,m,T){try{ka=0;var q=gl(h,r,m,T);return ma=null,q}catch(B){if(B===ha||B===Pn)throw B;var nl=dt(29,B,null,h.mode);return nl.lanes=T,nl.return=h,nl}}}var Xe=Gs(!0),Ys=Gs(!1),ce=!1;function Qc(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Lc(l,t){l=l.updateQueue,t.updateQueue===l&&(t.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function ie(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function fe(l,t,e){var a=l.updateQueue;if(a===null)return null;if(a=a.shared,(cl&2)!==0){var n=a.pending;return n===null?t.next=t:(t.next=n.next,n.next=t),a.pending=t,t=Jn(l),Es(l,null,e),t}return Kn(l,a,t,e),Jn(l)}function Pa(l,t,e){if(t=t.updateQueue,t!==null&&(t=t.shared,(e&4194048)!==0)){var a=t.lanes;a&=l.pendingLanes,e|=a,t.lanes=e,Of(l,e)}}function Zc(l,t){var e=l.updateQueue,a=l.alternate;if(a!==null&&(a=a.updateQueue,e===a)){var n=null,u=null;if(e=e.firstBaseUpdate,e!==null){do{var c={lane:e.lane,tag:e.tag,payload:e.payload,callback:null,next:null};u===null?n=u=c:u=u.next=c,e=e.next}while(e!==null);u===null?n=u=t:u=u.next=t}else n=u=t;e={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:u,shared:a.shared,callbacks:a.callbacks},l.updateQueue=e;return}l=e.lastBaseUpdate,l===null?e.firstBaseUpdate=t:l.next=t,e.lastBaseUpdate=t}var Vc=!1;function ln(){if(Vc){var l=da;if(l!==null)throw l}}function tn(l,t,e,a){Vc=!1;var n=l.updateQueue;ce=!1;var u=n.firstBaseUpdate,c=n.lastBaseUpdate,i=n.shared.pending;if(i!==null){n.shared.pending=null;var s=i,y=s.next;s.next=null,c===null?u=y:c.next=y,c=s;var S=l.alternate;S!==null&&(S=S.updateQueue,i=S.lastBaseUpdate,i!==c&&(i===null?S.firstBaseUpdate=y:i.next=y,S.lastBaseUpdate=s))}if(u!==null){var j=n.baseState;c=0,S=y=s=null,i=u;do{var g=i.lane&-536870913,p=g!==i.lane;if(p?(P&g)===g:(a&g)===g){g!==0&&g===ra&&(Vc=!0),S!==null&&(S=S.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});l:{var U=l,Y=i;g=t;var gl=e;switch(Y.tag){case 1:if(U=Y.payload,typeof U=="function"){j=U.call(gl,j,g);break l}j=U;break l;case 3:U.flags=U.flags&-65537|128;case 0:if(U=Y.payload,g=typeof U=="function"?U.call(gl,j,g):U,g==null)break l;j=H({},j,g);break l;case 2:ce=!0}}g=i.callback,g!==null&&(l.flags|=64,p&&(l.flags|=8192),p=n.callbacks,p===null?n.callbacks=[g]:p.push(g))}else p={lane:g,tag:i.tag,payload:i.payload,callback:i.callback,next:null},S===null?(y=S=p,s=j):S=S.next=p,c|=g;if(i=i.next,i===null){if(i=n.shared.pending,i===null)break;p=i,i=p.next,p.next=null,n.lastBaseUpdate=p,n.shared.pending=null}}while(!0);S===null&&(s=j),n.baseState=s,n.firstBaseUpdate=y,n.lastBaseUpdate=S,u===null&&(n.shared.lanes=0),he|=c,l.lanes=c,l.memoizedState=j}}function Xs(l,t){if(typeof l!="function")throw Error(o(191,l));l.call(t)}function Qs(l,t){var e=l.callbacks;if(e!==null)for(l.callbacks=null,l=0;lu?u:8;var c=x.T,i={};x.T=i,si(l,!1,t,e);try{var s=n(),y=x.S;if(y!==null&&y(i,s),s!==null&&typeof s=="object"&&typeof s.then=="function"){var S=Fh(s,a);nn(l,t,S,gt(l))}else nn(l,t,a,gt(l))}catch(j){nn(l,t,{then:function(){},status:"rejected",reason:j},gt())}finally{M.p=u,c!==null&&i.types!==null&&(c.types=i.types),x.T=c}}function em(){}function ii(l,t,e,a){if(l.tag!==5)throw Error(o(476));var n=So(l).queue;po(l,n,t,X,e===null?em:function(){return xo(l),e(a)})}function So(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:X,baseState:X,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zt,lastRenderedState:X},next:null};var e={};return t.next={memoizedState:e,baseState:e,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zt,lastRenderedState:e},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function xo(l){var t=So(l);t.next===null&&(t=l.alternate.memoizedState),nn(l,t.next.queue,{},gt())}function fi(){return Kl(En)}function Eo(){return Hl().memoizedState}function To(){return Hl().memoizedState}function am(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var e=gt();l=ie(e);var a=fe(t,l,e);a!==null&&(ct(a,t,e),Pa(a,t,e)),t={cache:qc()},l.payload=t;return}t=t.return}}function nm(l,t,e){var a=gt();e={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null},du(l)?zo(t,e):(e=Ac(l,t,e,a),e!==null&&(ct(e,l,a),Ao(e,t,a)))}function jo(l,t,e){var a=gt();nn(l,t,e,a)}function nn(l,t,e,a){var n={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null};if(du(l))zo(t,n);else{var u=l.alternate;if(l.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var c=t.lastRenderedState,i=u(c,e);if(n.hasEagerState=!0,n.eagerState=i,rt(i,c))return Kn(l,t,n,0),Sl===null&&wn(),!1}catch{}if(e=Ac(l,t,n,a),e!==null)return ct(e,l,a),Ao(e,t,a),!0}return!1}function si(l,t,e,a){if(a={lane:2,revertLane:Qi(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},du(l)){if(t)throw Error(o(479))}else t=Ac(l,e,a,2),t!==null&&ct(t,l,2)}function du(l){var t=l.alternate;return l===K||t!==null&&t===K}function zo(l,t){ya=uu=!0;var e=l.pending;e===null?t.next=t:(t.next=e.next,e.next=t),l.pending=t}function Ao(l,t,e){if((e&4194048)!==0){var a=t.lanes;a&=l.pendingLanes,e|=a,t.lanes=e,Of(l,e)}}var un={readContext:Kl,use:fu,useCallback:Ol,useContext:Ol,useEffect:Ol,useImperativeHandle:Ol,useLayoutEffect:Ol,useInsertionEffect:Ol,useMemo:Ol,useReducer:Ol,useRef:Ol,useState:Ol,useDebugValue:Ol,useDeferredValue:Ol,useTransition:Ol,useSyncExternalStore:Ol,useId:Ol,useHostTransitionStatus:Ol,useFormState:Ol,useActionState:Ol,useOptimistic:Ol,useMemoCache:Ol,useCacheRefresh:Ol};un.useEffectEvent=Ol;var No={readContext:Kl,use:fu,useCallback:function(l,t){return Pl().memoizedState=[l,t===void 0?null:t],l},useContext:Kl,useEffect:so,useImperativeHandle:function(l,t,e){e=e!=null?e.concat([l]):null,ou(4194308,4,mo.bind(null,t,l),e)},useLayoutEffect:function(l,t){return ou(4194308,4,l,t)},useInsertionEffect:function(l,t){ou(4,2,l,t)},useMemo:function(l,t){var e=Pl();t=t===void 0?null:t;var a=l();if(Qe){Pt(!0);try{l()}finally{Pt(!1)}}return e.memoizedState=[a,t],a},useReducer:function(l,t,e){var a=Pl();if(e!==void 0){var n=e(t);if(Qe){Pt(!0);try{e(t)}finally{Pt(!1)}}}else n=t;return a.memoizedState=a.baseState=n,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:n},a.queue=l,l=l.dispatch=nm.bind(null,K,l),[a.memoizedState,l]},useRef:function(l){var t=Pl();return l={current:l},t.memoizedState=l},useState:function(l){l=ei(l);var t=l.queue,e=jo.bind(null,K,t);return t.dispatch=e,[l.memoizedState,e]},useDebugValue:ui,useDeferredValue:function(l,t){var e=Pl();return ci(e,l,t)},useTransition:function(){var l=ei(!1);return l=po.bind(null,K,l.queue,!0,!1),Pl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,e){var a=K,n=Pl();if(tl){if(e===void 0)throw Error(o(407));e=e()}else{if(e=t(),Sl===null)throw Error(o(349));(P&127)!==0||Js(a,t,e)}n.memoizedState=e;var u={value:e,getSnapshot:t};return n.queue=u,so($s.bind(null,a,u,l),[l]),a.flags|=2048,ba(9,{destroy:void 0},Ws.bind(null,a,u,e,t),null),e},useId:function(){var l=Pl(),t=Sl.identifierPrefix;if(tl){var e=Ut,a=Dt;e=(a&~(1<<32-ot(a)-1)).toString(32)+e,t="_"+t+"R_"+e,e=cu++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof a.is=="string"?c.createElement("select",{is:a.is}):c.createElement("select"),a.multiple?u.multiple=!0:a.size&&(u.size=a.size);break;default:u=typeof a.is=="string"?c.createElement(n,{is:a.is}):c.createElement(n)}}u[Vl]=t,u[lt]=a;l:for(c=t.child;c!==null;){if(c.tag===5||c.tag===6)u.appendChild(c.stateNode);else if(c.tag!==4&&c.tag!==27&&c.child!==null){c.child.return=c,c=c.child;continue}if(c===t)break l;for(;c.sibling===null;){if(c.return===null||c.return===t)break l;c=c.return}c.sibling.return=c.return,c=c.sibling}t.stateNode=u;l:switch(Wl(u,n,a),n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break l;case"img":a=!0;break l;default:a=!1}a&&wt(t)}}return Al(t),Ti(t,t.type,l===null?null:l.memoizedProps,t.pendingProps,e),null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&wt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(o(166));if(l=F.current,sa(t)){if(l=t.stateNode,e=t.memoizedProps,a=null,n=wl,n!==null)switch(n.tag){case 27:case 5:a=n.memoizedProps}l[Vl]=t,l=!!(l.nodeValue===e||a!==null&&a.suppressHydrationWarning===!0||Kr(l.nodeValue,e)),l||ne(t,!0)}else l=Uu(l).createTextNode(a),l[Vl]=t,t.stateNode=l}return Al(t),null;case 31:if(e=t.memoizedState,l===null||l.memoizedState!==null){if(a=sa(t),e!==null){if(l===null){if(!a)throw Error(o(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(o(557));l[Vl]=t}else He(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Al(t),l=!1}else e=Cc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=e),l=!0;if(!l)return t.flags&256?(mt(t),t):(mt(t),null);if((t.flags&128)!==0)throw Error(o(558))}return Al(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(n=sa(t),a!==null&&a.dehydrated!==null){if(l===null){if(!n)throw Error(o(318));if(n=t.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(o(317));n[Vl]=t}else He(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Al(t),n=!1}else n=Cc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=n),n=!0;if(!n)return t.flags&256?(mt(t),t):(mt(t),null)}return mt(t),(t.flags&128)!==0?(t.lanes=e,t):(e=a!==null,l=l!==null&&l.memoizedState!==null,e&&(a=t.child,n=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(n=a.alternate.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==n&&(a.flags|=2048)),e!==l&&e&&(t.child.flags|=8192),gu(t,t.updateQueue),Al(t),null);case 4:return Ul(),l===null&&wi(t.stateNode.containerInfo),Al(t),null;case 10:return Qt(t.type),Al(t),null;case 19:if(N(Cl),a=t.memoizedState,a===null)return Al(t),null;if(n=(t.flags&128)!==0,u=a.rendering,u===null)if(n)fn(a,!1);else{if(Dl!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(u=nu(l),u!==null){for(t.flags|=128,fn(a,!1),l=u.updateQueue,t.updateQueue=l,gu(t,l),t.subtreeFlags=0,l=e,e=t.child;e!==null;)Ts(e,l),e=e.sibling;return D(Cl,Cl.current&1|2),tl&&Yt(t,a.treeForkCount),t.child}l=l.sibling}a.tail!==null&&ft()>Eu&&(t.flags|=128,n=!0,fn(a,!1),t.lanes=4194304)}else{if(!n)if(l=nu(u),l!==null){if(t.flags|=128,n=!0,l=l.updateQueue,t.updateQueue=l,gu(t,l),fn(a,!0),a.tail===null&&a.tailMode==="hidden"&&!u.alternate&&!tl)return Al(t),null}else 2*ft()-a.renderingStartTime>Eu&&e!==536870912&&(t.flags|=128,n=!0,fn(a,!1),t.lanes=4194304);a.isBackwards?(u.sibling=t.child,t.child=u):(l=a.last,l!==null?l.sibling=u:t.child=u,a.last=u)}return a.tail!==null?(l=a.tail,a.rendering=l,a.tail=l.sibling,a.renderingStartTime=ft(),l.sibling=null,e=Cl.current,D(Cl,n?e&1|2:e&1),tl&&Yt(t,a.treeForkCount),l):(Al(t),null);case 22:case 23:return mt(t),Kc(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(e&536870912)!==0&&(t.flags&128)===0&&(Al(t),t.subtreeFlags&6&&(t.flags|=8192)):Al(t),e=t.updateQueue,e!==null&&gu(t,e.retryQueue),e=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(e=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==e&&(t.flags|=2048),l!==null&&N(qe),null;case 24:return e=null,l!==null&&(e=l.memoizedState.cache),t.memoizedState.cache!==e&&(t.flags|=2048),Qt(Bl),Al(t),null;case 25:return null;case 30:return null}throw Error(o(156,t.tag))}function sm(l,t){switch(Dc(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return Qt(Bl),Ul(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return _n(t),null;case 31:if(t.memoizedState!==null){if(mt(t),t.alternate===null)throw Error(o(340));He()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 13:if(mt(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(o(340));He()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return N(Cl),null;case 4:return Ul(),null;case 10:return Qt(t.type),null;case 22:case 23:return mt(t),Kc(),l!==null&&N(qe),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return Qt(Bl),null;case 25:return null;default:return null}}function ko(l,t){switch(Dc(t),t.tag){case 3:Qt(Bl),Ul();break;case 26:case 27:case 5:_n(t);break;case 4:Ul();break;case 31:t.memoizedState!==null&&mt(t);break;case 13:mt(t);break;case 19:N(Cl);break;case 10:Qt(t.type);break;case 22:case 23:mt(t),Kc(),l!==null&&N(qe);break;case 24:Qt(Bl)}}function sn(l,t){try{var e=t.updateQueue,a=e!==null?e.lastEffect:null;if(a!==null){var n=a.next;e=n;do{if((e.tag&l)===l){a=void 0;var u=e.create,c=e.inst;a=u(),c.destroy=a}e=e.next}while(e!==n)}}catch(i){rl(t,t.return,i)}}function re(l,t,e){try{var a=t.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var u=n.next;a=u;do{if((a.tag&l)===l){var c=a.inst,i=c.destroy;if(i!==void 0){c.destroy=void 0,n=t;var s=e,y=i;try{y()}catch(S){rl(n,s,S)}}}a=a.next}while(a!==u)}}catch(S){rl(t,t.return,S)}}function Io(l){var t=l.updateQueue;if(t!==null){var e=l.stateNode;try{Qs(t,e)}catch(a){rl(l,l.return,a)}}}function Po(l,t,e){e.props=Le(l.type,l.memoizedProps),e.state=l.memoizedState;try{e.componentWillUnmount()}catch(a){rl(l,t,a)}}function on(l,t){try{var e=l.ref;if(e!==null){switch(l.tag){case 26:case 27:case 5:var a=l.stateNode;break;case 30:a=l.stateNode;break;default:a=l.stateNode}typeof e=="function"?l.refCleanup=e(a):e.current=a}}catch(n){rl(l,t,n)}}function Ct(l,t){var e=l.ref,a=l.refCleanup;if(e!==null)if(typeof a=="function")try{a()}catch(n){rl(l,t,n)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof e=="function")try{e(null)}catch(n){rl(l,t,n)}else e.current=null}function lr(l){var t=l.type,e=l.memoizedProps,a=l.stateNode;try{l:switch(t){case"button":case"input":case"select":case"textarea":e.autoFocus&&a.focus();break l;case"img":e.src?a.src=e.src:e.srcSet&&(a.srcset=e.srcSet)}}catch(n){rl(l,l.return,n)}}function ji(l,t,e){try{var a=l.stateNode;Dm(a,l.type,e,t),a[lt]=t}catch(n){rl(l,l.return,n)}}function tr(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27&&be(l.type)||l.tag===4}function zi(l){l:for(;;){for(;l.sibling===null;){if(l.return===null||tr(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.tag===27&&be(l.type)||l.flags&2||l.child===null||l.tag===4)continue l;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function Ai(l,t,e){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e).insertBefore(l,t):(t=e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,t.appendChild(l),e=e._reactRootContainer,e!=null||t.onclick!==null||(t.onclick=Bt));else if(a!==4&&(a===27&&be(l.type)&&(e=l.stateNode,t=null),l=l.child,l!==null))for(Ai(l,t,e),l=l.sibling;l!==null;)Ai(l,t,e),l=l.sibling}function bu(l,t,e){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?e.insertBefore(l,t):e.appendChild(l);else if(a!==4&&(a===27&&be(l.type)&&(e=l.stateNode),l=l.child,l!==null))for(bu(l,t,e),l=l.sibling;l!==null;)bu(l,t,e),l=l.sibling}function er(l){var t=l.stateNode,e=l.memoizedProps;try{for(var a=l.type,n=t.attributes;n.length;)t.removeAttributeNode(n[0]);Wl(t,a,e),t[Vl]=l,t[lt]=e}catch(u){rl(l,l.return,u)}}var Kt=!1,Yl=!1,Ni=!1,ar=typeof WeakSet=="function"?WeakSet:Set,Ll=null;function om(l,t){if(l=l.containerInfo,Wi=Yu,l=ms(l),Sc(l)){if("selectionStart"in l)var e={start:l.selectionStart,end:l.selectionEnd};else l:{e=(e=l.ownerDocument)&&e.defaultView||window;var a=e.getSelection&&e.getSelection();if(a&&a.rangeCount!==0){e=a.anchorNode;var n=a.anchorOffset,u=a.focusNode;a=a.focusOffset;try{e.nodeType,u.nodeType}catch{e=null;break l}var c=0,i=-1,s=-1,y=0,S=0,j=l,g=null;t:for(;;){for(var p;j!==e||n!==0&&j.nodeType!==3||(i=c+n),j!==u||a!==0&&j.nodeType!==3||(s=c+a),j.nodeType===3&&(c+=j.nodeValue.length),(p=j.firstChild)!==null;)g=j,j=p;for(;;){if(j===l)break t;if(g===e&&++y===n&&(i=c),g===u&&++S===a&&(s=c),(p=j.nextSibling)!==null)break;j=g,g=j.parentNode}j=p}e=i===-1||s===-1?null:{start:i,end:s}}else e=null}e=e||{start:0,end:0}}else e=null;for($i={focusedElem:l,selectionRange:e},Yu=!1,Ll=t;Ll!==null;)if(t=Ll,l=t.child,(t.subtreeFlags&1028)!==0&&l!==null)l.return=t,Ll=l;else for(;Ll!==null;){switch(t=Ll,u=t.alternate,l=t.flags,t.tag){case 0:if((l&4)!==0&&(l=t.updateQueue,l=l!==null?l.events:null,l!==null))for(e=0;e title"))),Wl(u,a,e),u[Vl]=l,Ql(u),a=u;break l;case"link":var c=sd("link","href",n).get(a+(e.href||""));if(c){for(var i=0;igl&&(c=gl,gl=Y,Y=c);var h=ds(i,Y),r=ds(i,gl);if(h&&r&&(p.rangeCount!==1||p.anchorNode!==h.node||p.anchorOffset!==h.offset||p.focusNode!==r.node||p.focusOffset!==r.offset)){var m=j.createRange();m.setStart(h.node,h.offset),p.removeAllRanges(),Y>gl?(p.addRange(m),p.extend(r.node,r.offset)):(m.setEnd(r.node,r.offset),p.addRange(m))}}}}for(j=[],p=i;p=p.parentNode;)p.nodeType===1&&j.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof i.focus=="function"&&i.focus(),i=0;ie?32:e,x.T=null,e=Hi,Hi=null;var u=ve,c=kt;if(Xl=0,Ta=ve=null,kt=0,(cl&6)!==0)throw Error(o(331));var i=cl;if(cl|=4,mr(u.current),rr(u,u.current,c,e),cl=i,yn(0,!1),st&&typeof st.onPostCommitFiberRoot=="function")try{st.onPostCommitFiberRoot(Ca,u)}catch{}return!0}finally{M.p=n,x.T=a,Ur(l,t)}}function Hr(l,t,e){t=xt(e,t),t=hi(l.stateNode,t,2),l=fe(l,t,2),l!==null&&(Ra(l,2),Ht(l))}function rl(l,t,e){if(l.tag===3)Hr(l,l,e);else for(;t!==null;){if(t.tag===3){Hr(t,l,e);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(me===null||!me.has(a))){l=xt(e,l),e=Ro(2),a=fe(t,e,2),a!==null&&(Bo(e,a,t,l),Ra(a,2),Ht(a));break}}t=t.return}}function Gi(l,t,e){var a=l.pingCache;if(a===null){a=l.pingCache=new hm;var n=new Set;a.set(t,n)}else n=a.get(t),n===void 0&&(n=new Set,a.set(t,n));n.has(e)||(Oi=!0,n.add(e),l=bm.bind(null,l,t,e),t.then(l,l))}function bm(l,t,e){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&e,l.warmLanes&=~e,Sl===l&&(P&e)===e&&(Dl===4||Dl===3&&(P&62914560)===P&&300>ft()-xu?(cl&2)===0&&ja(l,0):Di|=e,Ea===P&&(Ea=0)),Ht(l)}function Rr(l,t){t===0&&(t=_f()),l=Ue(l,t),l!==null&&(Ra(l,t),Ht(l))}function pm(l){var t=l.memoizedState,e=0;t!==null&&(e=t.retryLane),Rr(l,e)}function Sm(l,t){var e=0;switch(l.tag){case 31:case 13:var a=l.stateNode,n=l.memoizedState;n!==null&&(e=n.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(o(314))}a!==null&&a.delete(t),Rr(l,e)}function xm(l,t){return ku(l,t)}var _u=null,Aa=null,Yi=!1,Mu=!1,Xi=!1,ge=0;function Ht(l){l!==Aa&&l.next===null&&(Aa===null?_u=Aa=l:Aa=Aa.next=l),Mu=!0,Yi||(Yi=!0,Tm())}function yn(l,t){if(!Xi&&Mu){Xi=!0;do for(var e=!1,a=_u;a!==null;){if(l!==0){var n=a.pendingLanes;if(n===0)var u=0;else{var c=a.suspendedLanes,i=a.pingedLanes;u=(1<<31-ot(42|l)+1)-1,u&=n&~(c&~i),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(e=!0,Yr(a,u))}else u=P,u=Cn(a,a===Sl?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(u&3)===0||Ha(a,u)||(e=!0,Yr(a,u));a=a.next}while(e);Xi=!1}}function Em(){Br()}function Br(){Mu=Yi=!1;var l=0;ge!==0&&Cm()&&(l=ge);for(var t=ft(),e=null,a=_u;a!==null;){var n=a.next,u=qr(a,t);u===0?(a.next=null,e===null?_u=n:e.next=n,n===null&&(Aa=e)):(e=a,(l!==0||(u&3)!==0)&&(Mu=!0)),a=n}Xl!==0&&Xl!==5||yn(l),ge!==0&&(ge=0)}function qr(l,t){for(var e=l.suspendedLanes,a=l.pingedLanes,n=l.expirationTimes,u=l.pendingLanes&-62914561;0i)break;var S=s.transferSize,j=s.initiatorType;S&&Jr(j)&&(s=s.responseEnd,c+=S*(s"u"?null:document;function ud(l,t,e){var a=Na;if(a&&typeof t=="string"&&t){var n=pt(t);n='link[rel="'+l+'"][href="'+n+'"]',typeof e=="string"&&(n+='[crossorigin="'+e+'"]'),nd.has(n)||(nd.add(n),l={rel:l,crossOrigin:e,href:t},a.querySelector(n)===null&&(t=a.createElement("link"),Wl(t,"link",l),Ql(t),a.head.appendChild(t)))}}function Lm(l){It.D(l),ud("dns-prefetch",l,null)}function Zm(l,t){It.C(l,t),ud("preconnect",l,t)}function Vm(l,t,e){It.L(l,t,e);var a=Na;if(a&&l&&t){var n='link[rel="preload"][as="'+pt(t)+'"]';t==="image"&&e&&e.imageSrcSet?(n+='[imagesrcset="'+pt(e.imageSrcSet)+'"]',typeof e.imageSizes=="string"&&(n+='[imagesizes="'+pt(e.imageSizes)+'"]')):n+='[href="'+pt(l)+'"]';var u=n;switch(t){case"style":u=_a(l);break;case"script":u=Ma(l)}Nt.has(u)||(l=H({rel:"preload",href:t==="image"&&e&&e.imageSrcSet?void 0:l,as:t},e),Nt.set(u,l),a.querySelector(n)!==null||t==="style"&&a.querySelector(Sn(u))||t==="script"&&a.querySelector(xn(u))||(t=a.createElement("link"),Wl(t,"link",l),Ql(t),a.head.appendChild(t)))}}function wm(l,t){It.m(l,t);var e=Na;if(e&&l){var a=t&&typeof t.as=="string"?t.as:"script",n='link[rel="modulepreload"][as="'+pt(a)+'"][href="'+pt(l)+'"]',u=n;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Ma(l)}if(!Nt.has(u)&&(l=H({rel:"modulepreload",href:l},t),Nt.set(u,l),e.querySelector(n)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(e.querySelector(xn(u)))return}a=e.createElement("link"),Wl(a,"link",l),Ql(a),e.head.appendChild(a)}}}function Km(l,t,e){It.S(l,t,e);var a=Na;if(a&&l){var n=Fe(a).hoistableStyles,u=_a(l);t=t||"default";var c=n.get(u);if(!c){var i={loading:0,preload:null};if(c=a.querySelector(Sn(u)))i.loading=5;else{l=H({rel:"stylesheet",href:l,"data-precedence":t},e),(e=Nt.get(u))&&ef(l,e);var s=c=a.createElement("link");Ql(s),Wl(s,"link",l),s._p=new Promise(function(y,S){s.onload=y,s.onerror=S}),s.addEventListener("load",function(){i.loading|=1}),s.addEventListener("error",function(){i.loading|=2}),i.loading|=4,Hu(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:i},n.set(u,c)}}}function Jm(l,t){It.X(l,t);var e=Na;if(e&&l){var a=Fe(e).hoistableScripts,n=Ma(l),u=a.get(n);u||(u=e.querySelector(xn(n)),u||(l=H({src:l,async:!0},t),(t=Nt.get(n))&&af(l,t),u=e.createElement("script"),Ql(u),Wl(u,"link",l),e.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function Wm(l,t){It.M(l,t);var e=Na;if(e&&l){var a=Fe(e).hoistableScripts,n=Ma(l),u=a.get(n);u||(u=e.querySelector(xn(n)),u||(l=H({src:l,async:!0,type:"module"},t),(t=Nt.get(n))&&af(l,t),u=e.createElement("script"),Ql(u),Wl(u,"link",l),e.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function cd(l,t,e,a){var n=(n=F.current)?Cu(n):null;if(!n)throw Error(o(446));switch(l){case"meta":case"title":return null;case"style":return typeof e.precedence=="string"&&typeof e.href=="string"?(t=_a(e.href),e=Fe(n).hoistableStyles,a=e.get(t),a||(a={type:"style",instance:null,count:0,state:null},e.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(e.rel==="stylesheet"&&typeof e.href=="string"&&typeof e.precedence=="string"){l=_a(e.href);var u=Fe(n).hoistableStyles,c=u.get(l);if(c||(n=n.ownerDocument||n,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(l,c),(u=n.querySelector(Sn(l)))&&!u._p&&(c.instance=u,c.state.loading=5),Nt.has(l)||(e={rel:"preload",as:"style",href:e.href,crossOrigin:e.crossOrigin,integrity:e.integrity,media:e.media,hrefLang:e.hrefLang,referrerPolicy:e.referrerPolicy},Nt.set(l,e),u||$m(n,l,e,c.state))),t&&a===null)throw Error(o(528,""));return c}if(t&&a!==null)throw Error(o(529,""));return null;case"script":return t=e.async,e=e.src,typeof e=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Ma(e),e=Fe(n).hoistableScripts,a=e.get(t),a||(a={type:"script",instance:null,count:0,state:null},e.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,l))}}function _a(l){return'href="'+pt(l)+'"'}function Sn(l){return'link[rel="stylesheet"]['+l+"]"}function id(l){return H({},l,{"data-precedence":l.precedence,precedence:null})}function $m(l,t,e,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),Wl(t,"link",e),Ql(t),l.head.appendChild(t))}function Ma(l){return'[src="'+pt(l)+'"]'}function xn(l){return"script[async]"+l}function fd(l,t,e){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+pt(e.href)+'"]');if(a)return t.instance=a,Ql(a),a;var n=H({},e,{"data-href":e.href,"data-precedence":e.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),Ql(a),Wl(a,"style",n),Hu(a,e.precedence,l),t.instance=a;case"stylesheet":n=_a(e.href);var u=l.querySelector(Sn(n));if(u)return t.state.loading|=4,t.instance=u,Ql(u),u;a=id(e),(n=Nt.get(n))&&ef(a,n),u=(l.ownerDocument||l).createElement("link"),Ql(u);var c=u;return c._p=new Promise(function(i,s){c.onload=i,c.onerror=s}),Wl(u,"link",a),t.state.loading|=4,Hu(u,e.precedence,l),t.instance=u;case"script":return u=Ma(e.src),(n=l.querySelector(xn(u)))?(t.instance=n,Ql(n),n):(a=e,(n=Nt.get(u))&&(a=H({},e),af(a,n)),l=l.ownerDocument||l,n=l.createElement("script"),Ql(n),Wl(n,"link",a),l.head.appendChild(n),t.instance=n);case"void":return null;default:throw Error(o(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Hu(a,e.precedence,l));return t.instance}function Hu(l,t,e){for(var a=e.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=a.length?a[a.length-1]:null,u=n,c=0;c title"):null)}function Fm(l,t,e){if(e===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;return t.rel==="stylesheet"?(l=t.disabled,typeof t.precedence=="string"&&l==null):!0;case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function rd(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}function km(l,t,e,a){if(e.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(e.state.loading&4)===0){if(e.instance===null){var n=_a(a.href),u=t.querySelector(Sn(n));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(l.count++,l=Bu.bind(l),t.then(l,l)),e.state.loading|=4,e.instance=u,Ql(u);return}u=t.ownerDocument||t,a=id(a),(n=Nt.get(n))&&ef(a,n),u=u.createElement("link"),Ql(u);var c=u;c._p=new Promise(function(i,s){c.onload=i,c.onerror=s}),Wl(u,"link",a),e.instance=u}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(e,t),(t=e.state.preload)&&(e.state.loading&3)===0&&(l.count++,e=Bu.bind(l),t.addEventListener("load",e),t.addEventListener("error",e))}}var nf=0;function Im(l,t){return l.stylesheets&&l.count===0&&Gu(l,l.stylesheets),0nf?50:800)+t);return l.unsuspend=e,function(){l.unsuspend=null,clearTimeout(a),clearTimeout(n)}}:null}function Bu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Gu(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var qu=null;function Gu(l,t){l.stylesheets=null,l.unsuspend!==null&&(l.count++,qu=new Map,t.forEach(Pm,l),qu=null,Bu.call(l))}function Pm(l,t){if(!(t.state.loading&4)){var e=qu.get(l);if(e)var a=e.get(null);else{e=new Map,qu.set(l,e);for(var n=l.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(v)}catch(z){console.error(z)}}return v(),hf.exports=y0(),hf.exports}var b0=g0();const p0=f0(b0);var dl=xf();const Ku=18,Ef=Ku*Ku,Da=1e3,Ke=12,S0=Da*Ke,x0=S0+Da,E0=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],we=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],$l=[{label:"Red",shortLabel:"R",wavelength:690,hue:2,saturation:100,lightness:66,energy:.44,decay:700,radius:.28},{label:"Orange",shortLabel:"O",wavelength:620,hue:18,saturation:100,lightness:64,energy:.5,decay:760,radius:.3},{label:"Amber",shortLabel:"A",wavelength:590,hue:36,saturation:100,lightness:66,energy:.56,decay:820,radius:.32},{label:"Yellow",shortLabel:"Y",wavelength:570,hue:56,saturation:100,lightness:69,energy:.62,decay:900,radius:.34},{label:"Green",shortLabel:"G",wavelength:530,hue:108,saturation:84,lightness:66,energy:.7,decay:980,radius:.36},{label:"Cyan",shortLabel:"C",wavelength:500,hue:188,saturation:94,lightness:68,energy:.8,decay:1120,radius:.4},{label:"Blue",shortLabel:"B",wavelength:450,hue:232,saturation:100,lightness:71,energy:.92,decay:1300,radius:.45},{label:"Violet",shortLabel:"V",wavelength:410,hue:274,saturation:100,lightness:74,energy:1.08,decay:1540,radius:.52}],T0=[{page:"binning",title:"Count events per second",diagram:"count-time",rule:"Group event rows into 1 second time bins and count how many clicks fall into each bin.",output:"Light curve / count periodogram"},{page:"flux",title:"Sum energy per second",diagram:"energy-time",rule:"Group event rows into 1 second time bins and sum the total photon energy inside each bin.",output:"Flux variability"},{page:"periodogram",title:"Sum energy by wavelength bin",diagram:"energy-wavelength",rule:"Group event rows by wavelength and sum the energy across the recent time window.",output:"Spectrum"},{page:"spectrogram",title:"Count events by wavelength over time",diagram:"count-wavelength-time",rule:"Group event rows into both time bins and wavelength bins, then count clicks in each cell.",output:"Spectrogram"}],Gd={"transition-photon":{title:"Every photon has energy",body:"Colour tells us something about wavelength and energy. Before we record the hits, it helps to see what that means.",nextPage:"photon",emoji:"😶‍🌫️"},"transition-eventlist":{title:"Now record the hits",body:"Each photon hit becomes one row with a time, an energy, and a CCD position.",nextPage:"eventlist",emoji:"📝"},"transition-binning":{title:"Chart #1 : Brightness over time",body:"We now use the data and make the first chart",nextPage:"binning",emoji:"🫰🏻⏰"},"transition-flux":{title:"Chart #2: Energy over time",body:"Instead of counting clicks equally, we sum up the energy of each phton inside each time bin.",nextPage:"flux",emoji:"🔥⏰"},"transition-periodogram":{title:"Chart #3: Build a spectrum",body:"The same event list can also be grouped by wavelength. Is it lots of low-energy red photons, or high-energy violet ones? Let`s find out.",nextPage:"periodogram",emoji:"🌈"},"transition-spectrogram":{title:"Chart #3 : Let´s mix things up",body:"Now try both time bins, and wavelength/energy bins at the same time!",nextPage:"spectrogram",emoji:"🤪"}},Rd=["receptor","photon","eventlist","binning","flux","periodogram","spectrogram"];function j0(){return Array.from({length:Ef},(v,z)=>({id:z,level:0,size:.22,decay:900,tint:"hsla(0 0% 100% / 0)",glow:"hsla(0 0% 100% / 0)"}))}function z0(){return Array.from({length:$l.length},()=>0)}function A0(){return{cells:j0(),eventHistory:[],totalPhotons:0}}function ze(v,z,b){return Math.min(b,Math.max(z,v))}function N0(v){const z=Math.floor(v/1e3),b=Math.floor(z/60),o=z%60,A=Math.floor(v%1e3/10);return[b,o].map(_=>String(_).padStart(2,"0")).join(":")+"."+String(A).padStart(2,"0")}function _0(v){const z=v.replace(/^#/,"");return E0.includes(z)?z:"orbit"}function Bd(){return typeof window>"u"?"orbit":_0(window.location.hash)}function pf(v,z,b,o){return`hsla(${v} ${z}% ${b}% / ${o})`}function je(v,z){const b=$l[v],o=ze(.08+z*.88,.08,.96),A=Math.min(84,b.lightness+z*10);return`hsla(${b.hue} ${b.saturation}% ${A}% / ${o})`}function Sf(v,z,b,o){if(v.length===0)return"";const A=o?.min??Math.min(...v),_=o?.max??Math.max(...v),C=Math.max(_-A,1e-4);return v.map((L,O)=>{const E=v.length===1?z/2:O/(v.length-1)*z,G=b-(L-A)/C*(b-8)-4;return`${O===0?"M":"L"} ${E.toFixed(2)} ${G.toFixed(2)}`}).join(" ")}function M0(v,z,b,o){return v.length===0?"":`${Sf(v,z,b,o)} L ${z} ${b} L 0 ${b} Z`}function O0(v){const b=ze(v,0,1)*($l.length-1),o=Math.floor(b),A=Math.min($l.length-1,Math.ceil(b)),_=b-o,C=$l[o],L=$l[A],O=(E,G)=>E+(G-E)*_;return{label:_<.5?C.label:L.label,wavelength:O(C.wavelength,L.wavelength),energy:O(C.energy,L.energy),hue:O(C.hue,L.hue),saturation:O(C.saturation,L.saturation),lightness:O(C.lightness,L.lightness)}}function D0(){return Array.from({length:42},(v,z)=>({x:z*73%100/100,y:(z*37+11)%100/100,size:.8+z*17%7*.22,opacity:.24+z*29%10*.05}))}function U0(v){const z=D0(),b=v*24e-5,A=Math.cos(b)*178,_=Math.sin(b*.72)*34,C=Math.sin(b)*132,O=A*.72,E=_*.45,G=Rl=>1+Rl/620,H=460+(0-O)*.72,J=264+(0-E)*.42+C*.08,_l=ze(G(-O*.05),.88,1.14),xl=460+(A-O)*.72,il=236+(_-E)*.5-C*.16,El=ze(G(C),.82,1.34),V=b*.9;return{earth:{x:H,y:J,scale:_l},telescope:{x:xl,y:il,scale:El,rotation:V},stars:z}}function C0(){const[v,z]=dl.useState(0);dl.useEffect(()=>{let o=0;const A=performance.now(),_=C=>{z(C-A),o=window.requestAnimationFrame(_)};return o=window.requestAnimationFrame(_),()=>window.cancelAnimationFrame(o)},[]);const b=U0(v);return f.jsxs("div",{className:"ccd-orbit-screen",children:[f.jsxs("div",{className:"ccd-orbit-copy",children:[f.jsx("span",{className:"ccd-stat-label",children:"Glitch Hunters's guide to telescopes"}),f.jsx("h2",{children:"Orbital telescopes"}),f.jsx("p",{children:"Humanity has launched multiple telescopes into orbit, each designed to observe the universe from different vantage points."})]}),f.jsx("div",{className:"ccd-orbit-stage",children:f.jsxs("svg",{className:"ccd-orbit-svg",viewBox:"0 0 920 520","aria-label":"Telescope orbiting Earth",children:[f.jsxs("defs",{children:[f.jsxs("radialGradient",{id:"orbitEarthGlow",cx:"42%",cy:"34%",r:"68%",children:[f.jsx("stop",{offset:"0%",stopColor:"#6bd3ff"}),f.jsx("stop",{offset:"36%",stopColor:"#2f88d8"}),f.jsx("stop",{offset:"72%",stopColor:"#124180"}),f.jsx("stop",{offset:"100%",stopColor:"#061327"})]}),f.jsxs("linearGradient",{id:"orbitCubeFront",x1:"0",x2:"1",y1:"0",y2:"1",children:[f.jsx("stop",{offset:"0%",stopColor:"#fff7e9"}),f.jsx("stop",{offset:"100%",stopColor:"#ff9d77"})]}),f.jsxs("linearGradient",{id:"orbitCubeSide",x1:"0",x2:"1",y1:"0",y2:"1",children:[f.jsx("stop",{offset:"0%",stopColor:"#d3caf7"}),f.jsx("stop",{offset:"100%",stopColor:"#7967db"})]})]}),b.stars.map((o,A)=>f.jsx("circle",{cx:o.x*920,cy:o.y*520,fill:"rgba(255,255,255,0.92)",opacity:o.opacity,r:o.size},A)),f.jsx("ellipse",{className:"ccd-orbit-track",cx:b.earth.x,cy:b.earth.y+8,rx:174*b.earth.scale,ry:62*b.earth.scale}),f.jsxs("g",{transform:`translate(${b.earth.x} ${b.earth.y}) scale(${b.earth.scale})`,children:[f.jsx("circle",{className:"ccd-orbit-earth-atmosphere",cx:"0",cy:"0",r:"112"}),f.jsx("circle",{cx:"0",cy:"0",fill:"url(#orbitEarthGlow)",r:"96"}),f.jsx("path",{className:"ccd-orbit-continent",d:"M -38 -20 C -18 -46 8 -44 22 -12 C 36 10 18 26 -4 32 C -20 38 -42 22 -48 0 Z"}),f.jsx("path",{className:"ccd-orbit-continent",d:"M 18 20 C 38 14 54 26 48 48 C 42 62 18 62 10 44 C 6 34 8 24 18 20 Z"}),f.jsx("circle",{className:"ccd-orbit-night-shadow",cx:"30",cy:"4",r:"92"})]}),f.jsx("g",{transform:`translate(${b.telescope.x} ${b.telescope.y}) rotate(${b.telescope.rotation*180/Math.PI}) scale(${b.telescope.scale})`,children:f.jsxs("g",{className:"ccd-orbit-telescope",children:[f.jsx("polygon",{points:"-18,-18 12,-28 12,4 -18,14",fill:"url(#orbitCubeFront)"}),f.jsx("polygon",{points:"12,-28 30,-14 30,18 12,4",fill:"url(#orbitCubeSide)"}),f.jsx("polygon",{points:"-18,-18 0,-4 30,-14 12,-28",fill:"rgba(255,255,255,0.82)"}),f.jsx("rect",{x:"-42",y:"-5",width:"18",height:"10",rx:"2.5",fill:"#d9d2f5"}),f.jsx("rect",{x:"30",y:"-4",width:"22",height:"8",rx:"3",fill:"#ffc66f"}),f.jsx("rect",{x:"-6",y:"18",width:"12",height:"34",rx:"5",fill:"#bdb4e8"}),f.jsx("rect",{x:"-34",y:"30",width:"68",height:"10",rx:"5",fill:"#8e78ff",opacity:"0.88"})]})})]})}),f.jsx("div",{className:"ccd-orbit-actions",children:f.jsx("a",{className:"ccd-experience-button",href:"#intro",children:"Next"})})]})}function qd(v,z,b,o){const A=Array.from({length:Ke},()=>0),_=Math.max(0,b-Ke);return v.forEach(C=>{const L=Math.floor((C.time-z)/Da);L<_||L>=b||(A[L-_]+=o(C))}),A}function H0(v,z,b){const o=Array.from({length:$l.length},()=>Array.from({length:Ke},()=>0)),A=Math.max(0,b-Ke);return v.forEach(_=>{const C=Math.floor((_.time-z)/Da);C=b||(o[_.photonIndex][C-A]+=1)}),o}function R0(v,z,b){const o=z0();if(b<=0)return o;const A=Math.max(0,b-Ke);return v.forEach(_=>{const C=Math.floor((_.time-z)/Da);C>=A&&C"u")return null;const v=window.AudioContext??window.webkitAudioContext;return v?new v:null}function G0(v){const[z,b]=dl.useState(()=>A0()),[o,A]=dl.useState(0),[_,C]=dl.useState(!1),[L,O]=dl.useState(!0),[E]=dl.useState(()=>Date.now()),G=dl.useRef(E),H=dl.useRef(null),J=dl.useRef(null),_l=dl.useRef(v),xl=dl.useRef(null);dl.useEffect(()=>{_l.current=v},[v]);const il=()=>{const V=xl.current??q0();if(!V){O(!1);return}xl.current=V,V.resume().then(()=>{O(!0),C(V.state==="running")}).catch(()=>{C(!1)})};dl.useEffect(()=>{const V=()=>{il()};return window.addEventListener("pointerdown",V,{passive:!0}),window.addEventListener("keydown",V),()=>{window.removeEventListener("pointerdown",V),window.removeEventListener("keydown",V)}},[]),dl.useEffect(()=>()=>{xl.current&&xl.current.close()},[]);const El=(V,Rl,Tl)=>{if(!_l.current)return;const jl=xl.current;if(!jl||jl.state!=="running")return;const el=jl.currentTime+Tl,fl=jl.createOscillator(),Q=jl.createGain(),hl=jl.createBiquadFilter(),Zl=$l[V],$=820+V*92,al=.006+Rl*.004,bl=.018+Rl*.02;fl.type="triangle",fl.frequency.setValueAtTime($,el),fl.frequency.exponentialRampToValueAtTime($*.74,el+bl),hl.type="bandpass",hl.frequency.setValueAtTime(1400+Zl.hue*2.4,el),hl.Q.setValueAtTime(1.4,el),Q.gain.setValueAtTime(1e-4,el),Q.gain.exponentialRampToValueAtTime(al,el+.003),Q.gain.exponentialRampToValueAtTime(1e-4,el+bl),fl.connect(hl),hl.connect(Q),Q.connect(jl.destination),fl.start(el),fl.stop(el+bl+.008)};return dl.useEffect(()=>{const V=()=>{A(Date.now()-G.current)};return V(),H.current=window.setInterval(V,90),()=>{H.current!==null&&window.clearInterval(H.current)}},[]),dl.useEffect(()=>{let V=!1;const Rl=()=>{if(V)return;const Tl=[],jl=[];b(el=>{const fl=Date.now(),Q=el.cells.map(al=>{if(al.level<=.001)return al.level===0?al:{...al,level:0};const bl=36/al.decay;return{...al,level:Math.max(0,al.level-bl),size:Math.max(.2,al.size-bl*.3)}});let hl=el.totalPhotons;const Zl=Math.random()<.28?2:1;for(let al=0;alfl-al.time{El(el.photonIndex,el.energy,fl*.012)}),J.current=window.setTimeout(Rl,36+Math.random()*70)};return Rl(),()=>{V=!0,J.current!==null&&window.clearTimeout(J.current)}},[]),{audioArmed:_,audioSupported:L,enableAudio:il,elapsedMilliseconds:o,exposureStartTime:E,simulation:z}}function Y0({cells:v,activeHits:z,averageEnergy:b,guide:o}){return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-stage",children:[f.jsx("div",{className:"ccd-grid-frame",children:f.jsxs("div",{className:"ccd-grid","aria-label":"Photon receptor grid",children:[v.map(A=>f.jsx("div",{className:"ccd-cell",children:f.jsx("span",{className:"ccd-hit",style:{opacity:A.opacity,transform:`translate(-50%, -50%) scale(${A.scale})`,width:`${A.size}rem`,height:`${A.size}rem`,background:A.tint,boxShadow:`0 0 ${.9+A.opacity*1.8}rem ${A.glow}`}})},A.id)),f.jsx("div",{className:"ccd-grid-glow"})]})}),o||null,f.jsxs("div",{className:"ccd-readout","aria-label":"Sensor readout",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Active pixels"}),f.jsx("strong",{children:String(z).padStart(3,"0")})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Mean charge"}),f.jsx("strong",{children:b.toFixed(3)})]})]})]})})}const X0={eyebrow:"Detector Plane",title:"Telescope detector view",description:"The core of the telescope is a camera, called a CCD array. Photons - light from distant galaxies - strike the CCD and light up specific pixels. This is the raw material for the everything a telescope does."},Q0={stepLabel:"Step 1",title:"Photons are hitting the detector",body:"Notice how some pixels are bigger than others? They have more energy."};function L0(){return f.jsx("div",{className:"ccd-intro-screen",children:f.jsxs("div",{className:"ccd-intro-panel",children:[f.jsx("div",{className:"ccd-intro-logo-frame","aria-hidden":"true",children:f.jsx("img",{alt:"",className:"ccd-intro-logo",src:"/glitchhunterlogo.png"})}),f.jsx("div",{className:"ccd-intro-brand",children:f.jsx("span",{className:"ccd-intro-brand-mark",children:"Glitch Hunter's"})}),f.jsxs("div",{className:"ccd-intro-copy",children:[f.jsx("h2",{children:"Guide to Telescopes"}),f.jsx("p",{children:"How do they work? What does the telescope actually do?"})]}),f.jsxs("div",{className:"ccd-intro-covers",children:[f.jsx("span",{className:"ccd-stat-label",children:"In this experience, you will see:"}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"01"}),f.jsx("strong",{children:"The CCD"}),f.jsx("p",{children:"The telescope's eye, where photons land."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"02"}),f.jsx("strong",{children:"Energy and wavelength"}),f.jsx("p",{children:"Colour tells us whether a photon is lower-energy red or higher-energy violet."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"03"}),f.jsx("strong",{children:"The event list"}),f.jsx("p",{children:"Each photon hit becomes a recorded row with time, energy, and detector position."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"04"}),f.jsx("strong",{children:"Periodograms"}),f.jsx("p",{children:"Group events by time or wavelength to see brightness and spectral power."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"05"}),f.jsx("strong",{children:"Spectrograms"}),f.jsx("p",{children:"Bin by both time and wavelength to see how the colours evolve."})]})]}),f.jsx("div",{className:"ccd-intro-actions",children:f.jsx("a",{className:"ccd-experience-button",href:"#receptor",children:"Next"})})]})})}function Z0(v){return v in Gd}function V0({onComplete:v}){return f.jsx("div",{className:"ccd-closing-screen",children:f.jsxs("div",{className:"ccd-closing-panel",children:[f.jsx("span",{className:"ccd-stat-label",children:"Key Concepts"}),f.jsx("h2",{children:"What to remember"}),f.jsxs("div",{className:"ccd-closing-grid",children:[f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Binning"}),f.jsx("p",{children:"Grouping events because they arrive at a similar time, or have a similar colour."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Energy / wavelength"}),f.jsx("p",{children:"Red means long wavelength and low energy. Violet means short wavelength and high energy."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Periodogram"}),f.jsx("p",{children:"How the brightness goes up and down over time."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Spectrogram"}),f.jsx("p",{children:"How much there is of each colour."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Periodo-spectrogram"}),f.jsx("p",{children:"Binning by both time and wavelength / frequency."})]})]}),f.jsx("p",{className:"ccd-closing-message",children:"You're on your way to becoming a Cosmotologist!"}),f.jsxs("div",{className:"ccd-closing-actions",children:[f.jsx("a",{className:"ccd-experience-button ccd-experience-button-secondary",href:"#orbit",children:"Start Over"}),f.jsx("button",{className:"ccd-experience-button",onClick:()=>{v?.({success:!0,score:100,data:{completedExperience:"ccd-photon-explorer",finalPage:"closing"}})},type:"button",children:"Take the Glitch Gate"})]})]})})}function w0({page:v}){const z=Gd[v];return f.jsx("div",{className:"ccd-transition-screen",children:f.jsxs("div",{className:"ccd-transition-card",children:[f.jsx("span",{className:"ccd-stat-label emojilarge",children:z.emoji}),f.jsx("h2",{children:z.title}),f.jsx("p",{children:z.body}),f.jsx("div",{className:"ccd-transition-actions",children:f.jsx("a",{className:"ccd-experience-button",href:`#${z.nextPage}`,children:"Next"})})]})})}const bf={eyebrow:"",title:"Space telescope 101",description:"In this interactive tutorial, you will see how photons hit eye of the telescope, and how that is turned into turned into different scientific charts. We`ll cover:"};function K0(){const[v,z]=dl.useState(.5),b=O0(v),o=pf(b.hue,b.saturation,b.lightness,.98);return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-energy-panel",children:[f.jsxs("div",{className:"ccd-energy-scale",children:[f.jsx("div",{className:"ccd-energy-spectrum","aria-hidden":"true",style:{"--ccd-spectrum-position":`${v*100}%`,"--ccd-spectrum-color":o}}),f.jsx("div",{className:"ccd-energy-slider-wrap",children:f.jsx("input",{"aria-label":"Photon wavelength and energy slider",className:"ccd-energy-slider",max:1,min:0,onChange:A=>z(Number(A.target.value)),step:.001,type:"range",value:v})}),f.jsxs("div",{className:"ccd-energy-scale-labels",children:[f.jsx("span",{children:"Longer wavelength"}),f.jsx("span",{children:"Shorter wavelength"})]}),f.jsxs("div",{className:"ccd-energy-scale-labels ccd-energy-scale-labels-strong",children:[f.jsx("span",{children:"Red, lower energy"}),f.jsx("span",{children:"Violet, higher energy"})]})]}),f.jsxs("div",{className:"ccd-energy-readout",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Selected colour"}),f.jsx("strong",{style:{color:o},children:b.label})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Wavelength"}),f.jsxs("strong",{children:[b.wavelength.toFixed(0)," nm"]})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Energy"}),f.jsxs("strong",{children:[b.energy.toFixed(2)," units"]})]})]})]})})}const J0={eyebrow:"Photon Energy And Wavelength",title:"Photon colour maps to wavelength",description:"Each hit has energy and wavelength. Red means longer wavelength and lower energy, while violet means shorter wavelength and higher energy. Wavelength is mesaured in nano-meters (nm). One nanometer is one billionth of a meter - about the size of a virus. The visible spectrum ranges from around 380 nm (violet) to 750 nm (red). But telescopes can see beyond that, into high-energy ultraviolet and infrared wavelengths that our eyes can´t detect."},W0={stepLabel:"Colour has meaning",title:"One photon, one observation",body:"In this demo, whenever you see the 🟣 colour, it indicates high energy - short wavelength. 🔴 is lower energy, but longer wavelength. "};function $0({type:v}){if(v==="count-wavelength-time")return f.jsx("div",{className:"ccd-mini-diagram ccd-mini-diagram-grid","aria-hidden":"true",children:Array.from({length:12},(b,o)=>f.jsx("span",{className:"ccd-mini-diagram-grid-cell",style:{opacity:.28+o%4*.14}},o))});const z=v==="count-time"?[.28,.58,.38,.76,.46,.66]:v==="energy-time"?[.22,.5,.42,.88,.56,.72]:[.2,.32,.48,.84,.6,.3];return f.jsx("div",{className:"ccd-mini-diagram","aria-hidden":"true",children:z.map((b,o)=>f.jsx("span",{className:`ccd-mini-diagram-bar${v!=="count-time"?" is-energy":""}`,style:{height:`${b*100}%`}},o))})}function F0({page:v,onSelect:z,showGuide:b,onToggleGuide:o}){const A=v==="receptor",_=v==="photon",C=v==="eventlist";return f.jsxs("section",{className:"ccd-selector","aria-label":"Visualization selector",children:[f.jsxs("div",{className:"ccd-selector-root",children:[f.jsx("span",{className:"ccd-stat-label",children:"These plots are different ways of binning the same event list."}),f.jsx("p",{children:"Everything begins with the CCD receiving photons. Those hits become rows in an event list. After that, different binning rules produce different plots."})]}),f.jsxs("div",{className:"ccd-selector-raw",children:[f.jsxs("a",{className:`ccd-selector-link${A?" is-active":""}`,href:"#receptor",onClick:z,children:[f.jsx("span",{className:"ccd-selector-link-label",children:"Raw data"}),f.jsx("strong",{children:"1. Photons hit CCD pixels"}),f.jsx("span",{children:"This is the detector plane: the spatial pattern of hits on the telescope CCD."})]}),f.jsxs("a",{className:`ccd-selector-link${_?" is-active":""}`,href:"#photon",onClick:z,children:[f.jsx("span",{className:"ccd-selector-link-label",children:"Photon properties"}),f.jsx("strong",{children:"2. Colour indicates wavelength and energy"}),f.jsx("span",{children:"Red means lower energy and violet means higher energy, which is why later plots can bin by wavelength."})]}),f.jsxs("a",{className:`ccd-selector-link${C?" is-active":""}`,href:"#eventlist",onClick:z,children:[f.jsx("span",{className:"ccd-selector-link-label",children:"Recorded data"}),f.jsx("strong",{children:"3. Each hit becomes a row: time, energy, x, y"}),f.jsx("span",{children:"This is the FITS-style event table. Every later diagram is derived from these same rows."})]})]}),f.jsx("div",{className:"ccd-selector-section",children:f.jsxs("div",{className:"ccd-selector-axis",children:[f.jsx("span",{className:"ccd-stat-label",children:"4. Choose a binning rule"}),f.jsx("strong",{children:"Derived view: binned visualization"}),f.jsx("p",{children:"These plots are different ways of grouping the same event rows."})]})}),f.jsx("div",{className:"ccd-selector-results",children:T0.map(L=>f.jsxs("a",{className:`ccd-selector-leaf${L.page===v?" is-active":""}`,href:`#${L.page}`,onClick:z,children:[f.jsx("span",{className:"ccd-selector-leaf-dim",children:"Input: same event list"}),f.jsx($0,{type:L.diagram}),f.jsx("strong",{children:L.title}),f.jsxs("span",{children:["Rule: ",L.rule]}),f.jsxs("span",{children:["Output: ",L.output]})]},L.page))}),f.jsxs("div",{className:"ccd-selector-current",children:[f.jsx("span",{className:"ccd-stat-label",children:"Recording"}),f.jsx("button",{className:`ccd-selector-option${b?" is-active":""}`,onClick:o,type:"button",children:b?"Guide overlay on":"Guide overlay off"})]})]})}function k0(v){switch(v){case"intro":return bf;case"receptor":return X0;case"photon":return J0;case"eventlist":return tv;case"binning":return hv;case"flux":return ov;case"periodogram":return nv;case"spectrogram":return iv;case"closing":return bf;default:return bf}}function I0(v){switch(v){case"intro":return null;case"receptor":return Q0;case"photon":return W0;case"eventlist":return ev;case"binning":return mv;case"flux":return rv;case"periodogram":return uv;case"spectrogram":return fv}}function P0({page:v}){const z=we.indexOf(v),b=z>0?we[z-1]:null,o=z>=0&&z{const _=B0(o.cellIndex),C=(o.time-z)/1e3;return $l[o.photonIndex],f.jsxs("div",{className:"ccd-event-table",children:[f.jsx("span",{children:C.toFixed(3)}),f.jsx("span",{style:{color:je(o.photonIndex,.92)},children:o.energy.toFixed(2)}),f.jsx("span",{children:String(_.x).padStart(2,"0")}),f.jsx("span",{children:String(_.y).padStart(2,"0")})]},`${o.time}-${o.cellIndex}-${A}`)}),b.length===0?f.jsxs("div",{className:"ccd-event-table ccd-event-table-empty",children:[f.jsx("span",{children:"No rows yet"}),f.jsx("span",{children:"Waiting"}),f.jsx("span",{children:"--"}),f.jsx("span",{children:"--"})]}):null]})]}),f.jsx("div",{className:"ccd-flux-legend",children:$l.map((o,A)=>f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-legend-dot",style:{background:je(A,.92),boxShadow:`0 0 0.8rem ${je(A,.56)}`}}),f.jsx("span",{children:o.label})]},o.label))})]})})}const tv={eyebrow:"FITS Event Table",title:"Photon event list view",description:"The clicks are recorded in a table, called the event list, with the time, energy, and CCD pixel position."},ev={stepLabel:"Step 3",title:"Each hit becomes a row in the event list",body:"Astronomy pipelines often save these events as FITS tables. This is the raw data you can download from Telescopes like Chandra!"};function av({spectralEnergy:v}){const z=Math.max(...v,.01),b=v.reduce((o,A)=>o+A,0)||1;return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Integrated over last 12 completed 1.0 s bins"}),f.jsxs("strong",{children:[b.toFixed(2)," total energy units"]})]}),f.jsx("div",{className:"ccd-periodogram","aria-label":"Periodogram chart",children:$l.map((o,A)=>{const _=ze(v[A]/z,0,1),C=v[A]/b;return f.jsxs("div",{className:"ccd-periodogram-band",children:[f.jsx("div",{className:"ccd-bar-shell",children:f.jsx("div",{className:"ccd-bar-fill",style:{height:`${18+_*82}%`,background:`linear-gradient(180deg, ${je(A,.55)}, ${je(A,1)})`,boxShadow:`0 0 1.4rem ${je(A,.72)}`}})}),f.jsxs("div",{className:"ccd-band-meta",children:[f.jsx("strong",{children:o.shortLabel}),f.jsxs("span",{children:[o.wavelength," nm"]}),f.jsxs("span",{children:[v[A].toFixed(2)," E"]}),f.jsxs("span",{children:[(C*100).toFixed(1),"%"]})]})]},o.label)})})]})})}const nv={eyebrow:"Spectral power",title:"Spectrogram of energy",description:"We put low-energy on the left, and high energy on the right. The energy of all the photons in each frequency bin integrated over some period (here last 12 secs) gives us the shape of the spectrum during that time."},uv={stepLabel:"Step 6",title:"Spectral power",body:"Spectral power reveals the energy distribution, and it´s very important for many applications. It can tell us a lot about how stars work"};function cv({spectrogramBins:v}){const z=Math.max(...v.flat(),1);return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Clicks per 1.0 s time bin"}),f.jsxs("strong",{children:[Ke," time bins x ",$l.length," frequency bins"]})]}),f.jsxs("div",{className:"ccd-spectrogram-shell",children:[f.jsx("div",{className:"ccd-spectrogram-axis",children:$l.map(b=>f.jsx("span",{children:b.label},b.label))}),f.jsx("div",{className:"ccd-spectrogram","aria-label":"Spectrogram heat map",children:$l.map((b,o)=>f.jsx("div",{className:"ccd-spectrogram-row",children:v[o].map((A,_)=>f.jsx("span",{className:"ccd-spectrogram-cell",style:{background:je(o,A/z),boxShadow:A>0?`0 0 0.8rem ${je(o,A/z)}`:"none"}},`${b.label}-${_}`))},b.label))})]}),f.jsxs("div",{className:"ccd-spectrogram-footer",children:[f.jsx("span",{children:"Earlier"}),f.jsx("span",{children:"Now"})]})]})})}const iv={eyebrow:"Frequency X Time",title:"Periodo-spectro-gram!",description:"You can play around with the same data and make many charts! This shows the energy arriving during each time bin for each frequency bin!"},fv={stepLabel:"Step 7",title:"Binned by time and frequency",body:"Is it useful? Maybe not for a lot of applications, but it looks pretty!"};function sv({fluxBins:v}){const z=v.some(il=>il>0)?v:[1.2,1.8,1.4,2.1,1.7,1.5,2.3,1.6,1.9,1.4,2,1.7],b=z.map((il,El)=>{const V=z.slice(0,El+1);return V.reduce((Rl,Tl)=>Rl+Tl,0)/V.length}),o=z[z.length-1]??0,A=z.reduce((il,El)=>il+El,0)/z.length,_=z.reduce((il,El)=>il+(El-A)**2,0)/z.length,C=Math.sqrt(_),L=Math.min(...z),O=Math.max(...z),E=Math.min(...b),G=Math.max(...b),H={min:Math.min(L,E),max:Math.max(O,G)},J=Sf(z,760,240,H),_l=M0(z,760,240,H),xl=Sf(b,760,240,H);return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Total energy per 1.0 s bin"}),f.jsxs("strong",{children:[o.toFixed(2)," energy units in latest bin"]})]}),f.jsxs("div",{className:"ccd-flux-chart-shell",children:[f.jsxs("svg",{className:"ccd-flux-chart",viewBox:"0 0 760 240","aria-label":"Total flux variability chart",preserveAspectRatio:"none",children:[f.jsxs("defs",{children:[f.jsxs("linearGradient",{id:"fluxArea",x1:"0",x2:"0",y1:"0",y2:"1",children:[f.jsx("stop",{offset:"0%",stopColor:"rgba(255, 113, 74, 0.40)"}),f.jsx("stop",{offset:"100%",stopColor:"rgba(125, 100, 255, 0.03)"})]}),f.jsxs("linearGradient",{id:"fluxLine",x1:"0",x2:"1",y1:"0",y2:"0",children:[f.jsx("stop",{offset:"0%",stopColor:"#ff8d66"}),f.jsx("stop",{offset:"55%",stopColor:"#ffd35d"}),f.jsx("stop",{offset:"100%",stopColor:"#8f7dff"})]})]}),z.map((il,El)=>{const V=760/z.length;return f.jsx("rect",{className:El%2===0?"ccd-flux-bin":"ccd-flux-bin ccd-flux-bin-alt",x:El*V,y:0,width:V,height:240},El)}),f.jsx("path",{className:"ccd-flux-area",d:_l,fill:"url(#fluxArea)"}),f.jsx("path",{className:"ccd-flux-line",d:J,stroke:"url(#fluxLine)"}),f.jsx("path",{className:"ccd-flux-mean-line",d:xl})]}),f.jsxs("div",{className:"ccd-flux-legend",children:[f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-raw"}),f.jsx("span",{children:"Raw flux"})]}),f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-mean"}),f.jsx("span",{children:"Running mean"})]})]}),f.jsxs("div",{className:"ccd-flux-axis",children:[f.jsx("span",{children:"Earlier"}),f.jsx("span",{children:"Now"})]})]}),f.jsxs("div",{className:"ccd-flux-metrics",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Mean flux"}),f.jsx("strong",{children:A.toFixed(4)})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Sigma"}),f.jsx("strong",{children:C.toFixed(4)})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Range"}),f.jsxs("strong",{children:[L.toFixed(4)," to ",O.toFixed(4)]})]})]})]})})}const ov={eyebrow:"Flux Variability",title:"Total flux periodogram",description:"If we focus on the energy instead of the count, we get the flux - energy per second. It tells us how the total energy varies over time (1 sec bins)."},rv={stepLabel:"Step 5",title:"Periodogram of flux",body:"This tells you how much the flux varies over time . The dotted line is the running mean, which helps show trends over time."};function dv({countBins:v}){const z=v.some(A=>A>0)?v:[3,5,4,7,6,5,8,4,6,5,7,4],b=Math.max(...z,1),o=z.reduce((A,_)=>A+_,0)/z.length;return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Photon clicks per 1.0 s bin"}),f.jsxs("strong",{children:[o.toFixed(1)," clicks / second bin"]})]}),f.jsxs("div",{className:"ccd-counts-shell",children:[f.jsx("div",{className:"ccd-counts-chart","aria-label":"Photon counts per bin chart",children:z.map((A,_)=>f.jsxs("div",{className:"ccd-count-bin",children:[f.jsx("div",{className:"ccd-count-bin-label",children:A}),f.jsx("div",{className:"ccd-count-bar-shell",children:f.jsx("div",{className:"ccd-count-bar",style:{height:`${12+A/b*88}%`}})})]},_))}),f.jsxs("div",{className:"ccd-flux-axis",children:[f.jsx("span",{children:"Earlier"}),f.jsx("span",{children:"Now!"})]})]}),f.jsx("div",{className:"ccd-flux-legend",children:f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-flux-legend-swatch ccd-counts-legend-swatch-bin"}),f.jsx("span",{children:"Photon count bins"})]})}),f.jsxs("div",{className:"ccd-flux-metrics",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Bin width"}),f.jsx("strong",{children:"1.0 s"})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Latest bin"}),f.jsxs("strong",{children:[z[z.length-1]??0," clicks"]})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Mean bin count"}),f.jsx("strong",{children:o.toFixed(2)})]})]})]})})}const hv={eyebrow:"Brightness",title:"Periodogram of counts",description:"The first chart is the periodogram. We put the clicks into groups. They arrive same second, same group! This is called time bining. (each bin 1 sec). This gives us the count per second - or the periodogram of photon counts."},mv={stepLabel:"Step 4",title:"Brightness is counting clicks!",body:"If we ignore photon energy and just count how many events arrive each second, we get a brightness-style light curve from the same event list."};function vv({onComplete:v,onProgress:z}={}){const[b,o]=dl.useState(()=>Bd()),[A,_]=dl.useState(!1),[C,L]=dl.useState(!0),{elapsedMilliseconds:O,exposureStartTime:E,simulation:G}=G0(b==="receptor");dl.useEffect(()=>{const $=()=>{o(Bd()),_(!1)};return window.addEventListener("hashchange",$),()=>window.removeEventListener("hashchange",$)},[]),dl.useEffect(()=>{const $=we.indexOf(b);$<0||z?.(Math.round($/(we.length-1)*100))},[z,b]),dl.useEffect(()=>{if(!A)return;const $=al=>{al.key==="Escape"&&_(!1)};return window.addEventListener("keydown",$),()=>window.removeEventListener("keydown",$)},[A]);const H=dl.useMemo(()=>G.cells.map($=>({id:$.id,opacity:ze($.level,0,1),scale:.72+ze($.level*.7,0,.86),size:$.size,tint:$.tint,glow:$.glow})),[G.cells]),J=Math.floor(O/Da),_l=dl.useMemo(()=>R0(G.eventHistory,E,J),[J,E,G.eventHistory]),xl=dl.useMemo(()=>qd(G.eventHistory,E,J,$=>$.energy),[J,E,G.eventHistory]),il=dl.useMemo(()=>qd(G.eventHistory,E,J,()=>1),[J,E,G.eventHistory]),El=dl.useMemo(()=>H0(G.eventHistory,E,J),[J,E,G.eventHistory]),V=H.filter($=>$.opacity>.08).length,Rl=H.reduce(($,al)=>$+al.opacity,0)/Ef,Tl=_l.reduce(($,al,bl,it)=>al>it[$]?bl:$,0),jl=$l[Tl],el=Z0(b)?b:null,fl=b==="orbit"||b==="intro"||b==="closing",Q=b==="orbit",hl=el||fl?null:k0(b),Zl=C&&!fl&&!el?f.jsx(P0,{page:b}):null;return f.jsx("main",{className:"ccd-shell",children:f.jsxs("section",{className:`ccd-panel${Q?" ccd-panel-wide-scene":""}`,children:[hl?f.jsx("header",{className:"ccd-topbar",children:f.jsxs("div",{className:"ccd-copy",children:[f.jsx("p",{className:"ccd-kicker",children:hl.eyebrow}),f.jsx("h1",{children:hl.title}),f.jsx("p",{className:"ccd-description",children:hl.description})]})}):null,A?f.jsx("div",{className:"ccd-modal-backdrop",onClick:()=>_(!1),role:"presentation",children:f.jsxs("div",{className:"ccd-modal",onClick:$=>$.stopPropagation(),role:"dialog","aria-modal":"true","aria-label":"Visualization chooser",children:[f.jsxs("div",{className:"ccd-modal-header",children:[f.jsxs("div",{className:"ccd-copy",children:[f.jsx("p",{className:"ccd-kicker",children:"Data Pipeline"}),f.jsx("h2",{children:"How do we transform the event list?"})]}),f.jsx("button",{className:"ccd-modal-close",onClick:()=>_(!1),type:"button","aria-label":"Close visualization chooser",children:"Close"})]}),f.jsx(F0,{page:b,onSelect:()=>_(!1),showGuide:C,onToggleGuide:()=>L($=>!$)})]})}):null,f.jsxs("div",{className:"ccd-experience-frame",children:[b==="orbit"?f.jsx(C0,{}):null,b==="intro"?f.jsx(L0,{}):null,b==="closing"?f.jsx(V0,{onComplete:v}):null,el?f.jsx(w0,{page:el}):null,b==="receptor"?f.jsx(Y0,{cells:H,activeHits:V,averageEnergy:Rl,guide:Zl}):null,b==="photon"?f.jsx(K0,{}):null,b==="eventlist"?f.jsx(lv,{events:G.eventHistory,exposureStartTime:E}):null,b==="periodogram"?f.jsx(av,{spectralEnergy:_l}):null,b==="spectrogram"?f.jsx(cv,{spectrogramBins:El}):null,b==="flux"?f.jsx(sv,{fluxBins:xl}):null,b==="binning"?f.jsx(dv,{countBins:il}):null,b!=="receptor"?Zl:null]}),!fl&&!el?f.jsxs("div",{className:"ccd-summary-row","aria-label":"Simulation summary",children:[f.jsxs("div",{className:"ccd-summary-card",children:[f.jsx("span",{className:"ccd-stat-label",children:"Exposure time"}),f.jsx("strong",{children:N0(O)})]}),f.jsxs("div",{className:"ccd-summary-card",children:[f.jsx("span",{className:"ccd-stat-label",children:"Photon count"}),f.jsx("strong",{children:G.totalPhotons})]}),f.jsxs("div",{className:"ccd-summary-card",children:[f.jsx("span",{className:"ccd-stat-label",children:"Dominant Band (Last 1 s)"}),f.jsx("strong",{children:jl.label})]})]}):null]})})}p0.createRoot(document.getElementById("root")).render(f.jsx(vv,{})); diff --git a/dist/vendor/glitch/glitch_ccd/assets/index-Da7gUXQx.css b/dist/vendor/glitch/glitch_ccd/assets/index-Da7gUXQx.css new file mode 100644 index 0000000..ab5747b --- /dev/null +++ b/dist/vendor/glitch/glitch_ccd/assets/index-Da7gUXQx.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Russo+One&family=Space+Grotesk:wght@400;500;700&display=swap";:root{--ccd-bg: #04010b;--ccd-panel: rgba(11, 10, 22, .86);--ccd-panel-edge: rgba(168, 160, 255, .22);--ccd-text: #f4efff;--ccd-muted: #aaa1c8;--ccd-grid-line: rgba(255, 255, 255, .08);--ccd-card-bg: rgba(10, 11, 20, .74);--ccd-card-edge: rgba(255, 255, 255, .08);--ccd-accent-soft: rgba(255, 113, 74, .12);--ccd-accent-cool: rgba(125, 100, 255, .14)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 18% 18%,rgba(255,100,72,.18),transparent 20rem),radial-gradient(circle at 82% 24%,rgba(111,90,255,.22),transparent 26rem),radial-gradient(circle at 50% 100%,rgba(54,20,92,.4),transparent 28rem),linear-gradient(180deg,#06020f,#030108 55%,#020106);color:var(--ccd-text);font-family:Space Grotesk,sans-serif}button,input,select,textarea{font:inherit}.ccd-shell{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.ccd-panel{width:min(94vw,64rem);display:grid;gap:1.4rem;padding:clamp(1.2rem,3vw,2rem);border-radius:1.8rem}.ccd-panel-wide-scene{width:min(97vw,84rem)}.ccd-topbar{padding:.8rem 1rem;display:grid;gap:1rem}.ccd-toolbar-row{display:flex;justify-content:flex-end}.ccd-pipeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.ccd-pipeline-step{display:flex;font-size:small;align-items:center;gap:.65rem;min-height:1.25rem;padding:.4rem;border:1px solid rgba(255,255,255,.08);border-radius:2rem;color:#cfc6ea;background:#ffffff08;transition:border-color .14s ease,background .14s ease,box-shadow .14s ease,transform .14s ease}.ccd-pipeline-step.is-active{border-color:#ff795652;color:#f3edff;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1a;transform:translateY(-1px)}.ccd-pipeline-index{display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;flex:0 0 auto;border-radius:999px;border:1px solid rgba(255,255,255,.12);color:var(--ccd-muted);background:#ffffff0a;font-family:Russo One,sans-serif;font-size:.78rem}.ccd-pipeline-step.is-active .ccd-pipeline-index{border-color:#ff795642;color:#fff4ef;background:#ff714a24}.ccd-copy{display:grid;gap:.65rem}.ccd-kicker,.ccd-stat-label{margin:0;color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.22em;text-transform:uppercase}.emojilarge{font-size:2.8rem;line-height:1}.ccd-copy h1,.ccd-summary-card strong,.ccd-stat strong,.ccd-chart-head strong,.ccd-band-meta strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-copy h1{margin:0;font-size:clamp(1.9rem,3vw,3rem);line-height:.96;letter-spacing:-.03em}.ccd-description{margin:0;max-width:48rem;color:#c8c0df;line-height:1.55}.ccd-chooser-button,.ccd-modal-close{padding:.8rem 1rem;border:1px solid rgba(255,121,86,.28);border-radius:.9rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.88rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-chooser-button:hover,.ccd-modal-close:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-modal-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-start;justify-content:center;padding:1.5rem 1rem 1rem;background:#03040abd;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow-y:auto}.ccd-modal{width:min(92vw,62rem);max-height:min(90vh,52rem);overflow:auto;display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.3rem;background:linear-gradient(180deg,#140e28eb,#0a0813f5),#0b0a16f5;box-shadow:0 1.4rem 3rem #0000006b}.ccd-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.ccd-modal-header h2{margin:0;font-family:Russo One,sans-serif;font-size:1.3rem;font-weight:400}.ccd-selector{display:grid;gap:.95rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:radial-gradient(circle at top center,rgba(255,113,74,.08),transparent 40%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#090a15e0}.ccd-selector-root{display:grid;justify-items:center;gap:.35rem;text-align:center}.ccd-selector-root strong,.ccd-selector-link strong,.ccd-selector-axis strong,.ccd-selector-leaf strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-selector-root strong{font-size:1.25rem}.ccd-selector-root p{margin:0;max-width:42rem;color:#d8d0f8;line-height:1.45}.ccd-selector-raw,.ccd-selector-results{display:grid;gap:.9rem}.ccd-selector-raw{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-selector-link,.ccd-selector-leaf{position:relative;display:grid;gap:.38rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;color:#e9e3ff;text-decoration:none;background:#ffffff08;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease,background .14s ease}.ccd-selector-link:hover,.ccd-selector-leaf:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-link.is-active,.ccd-selector-leaf.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1.2rem #8b6aff1f}.ccd-selector-link-label,.ccd-selector-leaf-dim{color:var(--ccd-muted);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.ccd-selector-link-label{margin-bottom:.15rem}.ccd-selector-section{display:grid;gap:.75rem}.ccd-selector-axis{position:relative;display:grid;justify-items:center;gap:.38rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08;text-align:center}.ccd-selector-axis p{margin:0;max-width:34rem;color:#d8d0f8;line-height:1.45}.ccd-selector-option{justify-self:start;padding:.82rem .7rem;border:1px solid rgba(255,255,255,.08);border-radius:.9rem;color:#e9e3ff;background:#ffffff08;cursor:pointer;transition:transform .14s ease,border-color .14s ease,background .14s ease,box-shadow .14s ease}.ccd-selector-option:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-option.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1f}.ccd-selector-results{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-current{display:grid;gap:.55rem;padding:.9rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-mini-diagram{display:flex;align-items:end;gap:.32rem;min-height:4rem;padding:.55rem;margin:.15rem 0 .25rem;border-radius:.85rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 24%),#04070feb}.ccd-mini-diagram-bar{flex:1 1 0;min-height:.5rem;border-radius:.45rem .45rem .18rem .18rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6);box-shadow:0 0 .65rem #ff9e6d29}.ccd-mini-diagram-bar.is-energy{background:linear-gradient(180deg,#78dfffeb,#8d7effe6);box-shadow:0 0 .8rem #8d7eff2e}.ccd-mini-diagram-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.28rem;align-items:stretch}.ccd-mini-diagram-grid-cell{display:block;min-height:.95rem;border-radius:.32rem;background:linear-gradient(180deg,#ffd35dbd,#8f7dffe0);box-shadow:0 0 .7rem #8d7eff24}.ccd-event-note{display:grid;gap:.45rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(90deg,#ff714a14,#7d64ff14),#ffffff08}.ccd-event-note p{margin:0;color:#d8d0f8;line-height:1.45}.ccd-page{display:grid;gap:1rem}.ccd-orbit-screen{display:grid;place-items:center;min-height:min(80vh,48rem);width:100%}.ccd-orbit-panel{width:min(100%,56rem);display:grid;gap:1rem;padding:clamp(1rem,2.8vw,1.8rem);border:1px solid rgba(255,255,255,.09);border-radius:1.6rem;background:radial-gradient(circle at 16% 18%,rgba(255,113,74,.08),transparent 18rem),radial-gradient(circle at 84% 20%,rgba(125,100,255,.14),transparent 22rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15eb}.ccd-orbit-copy{display:grid;gap:.4rem;justify-items:center;text-align:center}.ccd-orbit-copy h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(2rem,4vw,3.2rem);font-weight:400;line-height:.95;letter-spacing:-.03em}.ccd-orbit-copy p{margin:0;max-width:36rem;color:#d8d0f8;line-height:1.55}.ccd-orbit-stage{position:relative;width:100%;overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1.35rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.08),transparent 18rem),linear-gradient(180deg,#080a14f5,#02040bfa)}.ccd-orbit-svg{display:block;width:100%;height:auto;min-height:36rem}.ccd-orbit-track{fill:none;stroke:#ffffff24;stroke-width:2.5;stroke-dasharray:12 10}.ccd-orbit-earth-atmosphere{fill:#68cdff2e;filter:drop-shadow(0 0 1.6rem rgba(76,173,255,.18))}.ccd-orbit-continent{fill:#57e3968c}.ccd-orbit-night-shadow{fill:#050a1a7a}.ccd-orbit-telescope{filter:drop-shadow(0 0 1.2rem rgba(255,167,113,.24))}.ccd-orbit-actions{display:flex;justify-content:center}.ccd-intro-screen{display:grid;place-items:center;min-height:min(76vh,44rem)}.ccd-intro-panel{display:grid;gap:1.1rem;width:min(100%,48rem);padding:clamp(1rem,2.6vw,1.6rem);border:1px solid rgba(255,255,255,.09);border-radius:1.5rem;background:radial-gradient(circle at 18% 18%,rgba(255,113,74,.12),transparent 18rem),radial-gradient(circle at 82% 24%,rgba(125,100,255,.16),transparent 24rem),radial-gradient(circle at 50% 0%,rgba(255,255,255,.04),transparent 18rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15e6;justify-items:center}.ccd-intro-logo-frame{display:grid;place-items:center;width:clamp(6.5rem,16vw,8.75rem);aspect-ratio:1;padding:.45rem;border:1px solid rgba(255,255,255,.12);border-radius:50%;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.14),transparent 48%),linear-gradient(180deg,#ff714a1f,#7d64ff1a),#ffffff08;box-shadow:0 0 0 1px #ffffff08 inset,0 0 1.8rem #7d64ff29}.ccd-intro-logo{width:100%;height:100%;object-fit:cover;border-radius:50%;box-shadow:0 0 1.2rem #ff714a2e}.ccd-intro-brand{display:inline-grid;justify-items:center;gap:.18rem;text-align:center}.ccd-intro-brand-mark,.ccd-intro-brand-sub{font-family:Russo One,sans-serif;font-weight:400;line-height:1}.ccd-intro-brand-mark{color:#fff1e8;font-size:clamp(1.1rem,2.8vw,1.55rem);letter-spacing:.08em;text-transform:uppercase}.ccd-intro-brand-sub{color:#d7cff3;font-size:clamp(1.55rem,4.5vw,2.8rem);letter-spacing:-.04em}.ccd-intro-copy{display:grid;gap:.45rem;justify-items:center;text-align:center}.ccd-intro-copy h2,.ccd-intro-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-intro-copy h2{font-size:clamp(2rem,4vw,3.4rem);line-height:.95;letter-spacing:-.03em}.ccd-intro-copy p,.ccd-intro-card p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-intro-copy p{font-size:1rem;max-width:35rem}.ccd-intro-covers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;width:100%}.ccd-intro-card{display:grid;gap:.42rem;padding:.85rem;border:1px solid rgba(255,255,255,.08);border-radius:1.05rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 22%),#ffffff08;box-shadow:0 0 0 1px #ffffff05 inset}.ccd-intro-card-index{color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.72rem;letter-spacing:.18em}.ccd-intro-actions{display:flex;justify-content:flex-end}.ccd-energy-panel{display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#0a0c16e0}.ccd-energy-scale{display:grid;gap:.65rem}.ccd-energy-spectrum{position:relative;height:3.5rem;border-radius:999px;background:linear-gradient(90deg,#ff5752f2,#ff7e47f2 14%,#ffba52f2,#fff461f2,#7df15ff2,#61e6faf2,#6b7ffff2 84%,#c67afff2);box-shadow:inset 0 0 0 1px #ffffff14,0 0 1.8rem #7d64ff24}.ccd-energy-spectrum:after{content:"";position:absolute;top:50%;left:var(--ccd-spectrum-position, 50%);width:1.15rem;height:4.25rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:var(--ccd-spectrum-color, rgba(255, 255, 255, .9));box-shadow:0 0 1.1rem var(--ccd-spectrum-color, rgba(255, 255, 255, .44)),0 0 0 .2rem #05070de6;transform:translate(-50%,-50%)}.ccd-energy-slider-wrap{padding:0 .3rem}.ccd-energy-slider{width:100%;margin:0;appearance:none;background:transparent}.ccd-energy-slider::-webkit-slider-runnable-track{height:.4rem;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-webkit-slider-thumb{appearance:none;width:1rem;height:1rem;margin-top:-.3rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-slider::-moz-range-track{height:.4rem;border:0;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-moz-range-thumb{width:1rem;height:1rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-scale-labels{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#cfc6ea;font-size:.84rem}.ccd-energy-scale-labels-strong{font-family:Russo One,sans-serif;font-size:.78rem;letter-spacing:.04em}.ccd-energy-readout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.ccd-energy-notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-transition-screen{display:grid;place-items:center;min-height:min(68vh,34rem);padding:1rem 0;background:none}.ccd-transition-card{width:min(100%,30rem);display:grid;gap:.75rem;justify-items:center;padding:.4rem 0;text-align:center}.ccd-transition-card h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(1.7rem,4vw,2.35rem);font-weight:400;line-height:.98}.ccd-transition-card p{margin:0;max-width:24rem;color:#d8d0f8;line-height:1.5}.ccd-transition-actions{display:flex;justify-content:center;width:100%}.ccd-closing-screen{display:grid;place-items:center;min-height:min(72vh,40rem);padding:1rem 0}.ccd-closing-panel{width:min(100%,44rem);display:grid;gap:1rem;padding:.4rem 0}.ccd-closing-panel h2,.ccd-closing-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-closing-panel h2{font-size:clamp(1.8rem,4vw,2.5rem);line-height:.98}.ccd-closing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-closing-card{display:grid;gap:.38rem;padding:.9rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-closing-card p,.ccd-closing-message{margin:0;color:#d8d0f8;line-height:1.5}.ccd-closing-message{font-family:Russo One,sans-serif;font-size:1rem;text-align:center}.ccd-closing-actions{display:flex;justify-content:center}.ccd-experience-frame{display:grid;gap:1rem}.ccd-experience-overlay{display:grid;gap:.75rem;width:100%;max-width:36rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.1);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 22%,rgba(125,100,255,.06)),#0a0c16e0;box-shadow:0 0 0 1px #ffffff08 inset}.ccd-experience-step{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#d8d0f8;font-size:.84rem}.ccd-experience-overlay h2{margin:0;font-family:Russo One,sans-serif;font-size:1.1rem;font-weight:400;line-height:1.15}.ccd-experience-overlay p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-experience-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.ccd-experience-button{display:inline-flex;align-items:center;justify-content:center;min-width:7rem;padding:.72rem .95rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;text-decoration:none;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-experience-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-experience-button-secondary{border-color:#ffffff1f;background:#ffffff0a}.ccd-experience-spacer{width:7rem}.ccd-stage{display:grid;gap:1rem;justify-items:center}.ccd-grid-frame{position:relative;width:min(78vw,36rem);aspect-ratio:1;padding:1rem;border-radius:50%;background:linear-gradient(145deg,#ffffff0a,#ffffff03),#060812eb;box-shadow:inset 0 0 0 1px #ffffff0a,0 0 0 1px #9976ff14,0 1rem 3rem #00000057}.ccd-grid{position:relative;display:grid;grid-template-columns:repeat(18,minmax(0,1fr));width:100%;height:100%;overflow:hidden;border-radius:50%;background:linear-gradient(180deg,#080a14fa,#02040bfa),#05070d}.ccd-grid:before{content:"";position:absolute;inset:0;background:linear-gradient(var(--ccd-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--ccd-grid-line) 1px,transparent 1px);background-size:calc(100% / 18) calc(100% / 18);pointer-events:none}.ccd-grid:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,transparent 48%,rgba(0,0,0,.34) 100%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 12%,transparent 88%,rgba(255,255,255,.04));pointer-events:none}.ccd-cell{position:relative}.ccd-hit{position:absolute;left:50%;top:50%;border-radius:999px;pointer-events:none;will-change:transform,opacity;transition:opacity 60ms linear,transform 90ms ease-out,box-shadow .12s ease-out}.ccd-grid-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(151,100,255,.06),transparent 44%),radial-gradient(circle at 50% 50%,transparent 62%,rgba(255,110,74,.05) 100%);mix-blend-mode:screen;pointer-events:none}.ccd-readout,.ccd-summary-row{display:grid;gap:.9rem}.ccd-readout{width:min(78vw,36rem);grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-summary-row{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.ccd-stat,.ccd-summary-card,.ccd-chart-panel,.ccd-table-panel,.ccd-legend-chip{border:1px solid var(--ccd-card-edge);border-radius:1rem;background:var(--ccd-card-bg)}.ccd-stat,.ccd-summary-card{display:grid;gap:.35rem;padding:.95rem 1rem}.ccd-stat strong,.ccd-summary-card strong,.ccd-chart-head strong{font-size:1.28rem}.ccd-audio-button{padding:.72rem .9rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-audio-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1.1rem #8b6aff1f}.ccd-chart-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 18%,transparent 80%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-table-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 15%,transparent 85%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-chart-panel-wide{gap:1.15rem}.ccd-chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.ccd-periodogram{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:.8rem;min-height:20rem;align-items:end}.ccd-periodogram-band{display:grid;gap:.8rem}.ccd-bar-shell{display:flex;align-items:end;justify-content:center;min-height:18rem;padding:.8rem .4rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 26%),#04070feb}.ccd-bar-fill{width:100%;min-height:1.6rem;border-radius:.8rem .8rem .35rem .35rem}.ccd-band-meta{display:grid;gap:.15rem;justify-items:center;text-align:center;color:#cdc5e8;font-size:.84rem}.ccd-spectrum-legend{display:flex;flex-wrap:wrap;gap:.7rem}.ccd-event-table-shell{overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 14%),#04070ff5}.ccd-event-table,.ccd-event-table-head{display:grid;grid-template-columns:1.2fr 1fr .8fr .8fr;gap:.8rem;align-items:center}.ccd-event-table{padding:.72rem .95rem;border-bottom:1px solid rgba(255,255,255,.06);font-family:SFMono-Regular,Menlo,monospace;font-size:.86rem;letter-spacing:.02em}.ccd-event-table-head{padding:.85rem .95rem;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;color:#e9e3ff;font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.14em}.ccd-event-table-body{max-height:26rem;overflow:auto}.ccd-event-table-body .ccd-event-table:nth-child(2n){background:#ffffff05}.ccd-event-table-empty{color:#aaa1c8}.ccd-legend-chip{display:inline-flex;align-items:center;gap:.55rem;padding:.72rem .85rem}.ccd-legend-dot{width:.7rem;height:.7rem;border-radius:999px}.ccd-spectrogram-shell{display:grid;grid-template-columns:5rem minmax(0,1fr);gap:.9rem;align-items:stretch}.ccd-spectrogram-axis{display:grid;grid-template-rows:repeat(8,minmax(0,1fr));gap:.5rem;color:#b7afd6;font-size:.84rem}.ccd-spectrogram-axis span{display:flex;align-items:center}.ccd-spectrogram{display:grid;gap:.45rem;overflow-x:auto}.ccd-spectrogram-row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:.3rem;min-width:22rem}.ccd-spectrogram-cell{display:block;min-height:1.6rem;border-radius:.35rem;background:#ffffff0f}.ccd-spectrogram-footer{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-chart-shell{display:grid;gap:.65rem;padding:.9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-flux-chart{position:relative;width:100%;height:15rem;overflow:visible;border-radius:.8rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 20%),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),#060912f0;background-size:auto,12.5% 100%,100% 20%}.ccd-flux-bin{fill:#ffffff06}.ccd-flux-bin-alt{fill:#ffffff0e}.ccd-flux-area{opacity:.9}.ccd-flux-line{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 .8rem rgba(143,125,255,.28))}.ccd-flux-mean-line{fill:none;stroke:#eff5ffeb;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:10 8;filter:drop-shadow(0 0 .45rem rgba(255,255,255,.16))}.ccd-flux-legend{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;color:#cdc5e8;font-size:.84rem}.ccd-flux-legend-item{display:inline-flex;align-items:center;gap:.45rem}.ccd-flux-legend-swatch{display:inline-block;width:1.6rem;height:.45rem;border-radius:999px}.ccd-flux-legend-swatch-raw{background:linear-gradient(90deg,#ff8d66,#ffd35d,#8f7dff)}.ccd-flux-legend-swatch-mean{background:repeating-linear-gradient(90deg,rgba(239,245,255,.92) 0 .45rem,transparent .45rem .8rem)}.ccd-flux-axis{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}.ccd-counts-shell{position:relative;padding:1rem .7rem .9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-counts-chart{position:relative;z-index:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(1rem,1fr));gap:.3rem;align-items:end;min-height:14rem}.ccd-count-bin{display:grid;gap:.45rem;align-items:end}.ccd-count-bin-label{color:#d9d2f0;font-size:.7rem;text-align:center}.ccd-count-bar-shell{display:flex;align-items:end;height:12rem;min-height:12rem;padding:.2rem;border-radius:.6rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 30%),#ffffff05}.ccd-count-bar{width:100%;min-height:.8rem;border-radius:.5rem .5rem .2rem .2rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6 52%,#8d7effe6);box-shadow:0 0 1rem #8d7eff2e}.ccd-counts-legend-swatch-bin{background:linear-gradient(90deg,#ffd45df2,#ff8a65e6,#8d7effe6)}@media(max-width:860px){.ccd-panel{width:min(96vw,64rem)}.ccd-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(4,minmax(0,1fr))}.ccd-intro-covers{grid-template-columns:1fr}.ccd-energy-readout,.ccd-energy-notes{grid-template-columns:1fr 1fr}.ccd-closing-grid,.ccd-summary-row,.ccd-flux-metrics,.ccd-selector-results{grid-template-columns:1fr}.ccd-modal-header{display:grid}}@media(max-width:720px){.ccd-shell{padding:1rem}.ccd-intro-screen{min-height:auto}.ccd-grid-frame,.ccd-readout{width:100%}.ccd-pipeline,.ccd-readout{grid-template-columns:1fr}.ccd-intro-actions,.ccd-closing-actions{justify-content:stretch}.ccd-chart-head,.ccd-spectrogram-shell{grid-template-columns:1fr}.ccd-chart-head{display:grid}.ccd-spectrogram-axis{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-energy-readout{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-energy-readout .ccd-stat{padding:.7rem .65rem}.ccd-energy-readout .ccd-stat strong{font-size:1rem}.ccd-energy-notes{grid-template-columns:1fr}.ccd-event-table,.ccd-event-table-head{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-raw{grid-template-columns:1fr}.ccd-selector-link,.ccd-selector-leaf{padding:.95rem}.ccd-closing-actions .ccd-experience-button{width:100%}.ccd-experience-overlay{width:100%;max-width:none}.ccd-toolbar-row{justify-content:stretch}.ccd-chooser-button,.ccd-modal-close,.ccd-intro-actions .ccd-experience-button{width:100%}} diff --git a/dist/vendor/glitch/glitch_ccd/glitch.manifest.json b/dist/vendor/glitch/glitch_ccd/glitch.manifest.json new file mode 100644 index 0000000..657fac8 --- /dev/null +++ b/dist/vendor/glitch/glitch_ccd/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "ccd", + "displayName": "CCD Photon Explorer", + "version": "0.1.0", + "folderName": "glitch_ccd", + "packageName": "@glitch-components/ccd", + "entry": "dist/index.html", + "source": "src/index.tsx", + "tags": [ + "internal", + "visualization", + "tooling" + ] +} diff --git a/dist/vendor/glitch/glitch_ccd/glitchhunterlogo.png b/dist/vendor/glitch/glitch_ccd/glitchhunterlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0e8109c3e5f53774af656e8b0b88a22eecbfb7 GIT binary patch literal 127449 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 -dqm7`jAo)a+kMDFltaP_&d}cyuN&8 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

    tT9;i?$X2psNk&d};A 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:IE)t(STvamL| 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 Ef?lW%T>t<8 literal 0 HcmV?d00001 diff --git a/dist/vendor/glitch/glitch_ccd/index.html b/dist/vendor/glitch/glitch_ccd/index.html new file mode 100644 index 0000000..54d5bc3 --- /dev/null +++ b/dist/vendor/glitch/glitch_ccd/index.html @@ -0,0 +1,13 @@ + + + + + + Glitch CCD + + + + +

    + + diff --git a/dist/vendor/glitch/glitch_chess_analogy/chess_analogy.js b/dist/vendor/glitch/glitch_chess_analogy/chess_analogy.js new file mode 100644 index 0000000..fb26c44 --- /dev/null +++ b/dist/vendor/glitch/glitch_chess_analogy/chess_analogy.js @@ -0,0 +1,439 @@ +(function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode("._wrapper_h2w9g_1{--gc-bg: var(--color-bg, #0d1117);--gc-bg-secondary: var(--color-bg-secondary, #182237);--gc-text: var(--color-text, #f1f4ef);--gc-text-muted: var(--color-text-muted, #b6c0d4);--gc-primary: var(--color-primary, #45c4b0);--gc-accent: var(--color-accent, #ff6b6b);--gc-border: var(--color-border, #34516f);width:100%}._frame_h2w9g_12{position:relative;min-height:100dvh;padding:10px;color:var(--gc-text);font-family:Space Mono,IBM Plex Mono,Courier New,monospace;background:radial-gradient(circle at 12% 8%,rgb(69 196 176 / 24%),transparent 42%),radial-gradient(circle at 86% 14%,rgb(255 107 107 / 20%),transparent 38%),linear-gradient(156deg,var(--gc-bg),var(--gc-bg-secondary));border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent)}._frameSucceeded_h2w9g_25{background:radial-gradient(circle at 18% 12%,rgb(86 255 148 / 26%),transparent 42%),radial-gradient(circle at 82% 16%,rgb(42 210 104 / 22%),transparent 38%),linear-gradient(156deg,#0f2f1f,#1b5234);border-color:color-mix(in srgb,#4be38f 56%,var(--gc-border))}._header_h2w9g_33{margin-bottom:8px}._title_h2w9g_37{margin:0;font-size:clamp(20px,6.4vw,32px);letter-spacing:.05em;text-transform:uppercase}._subtitle_h2w9g_44{margin:4px 0 0;color:var(--gc-text-muted);font-size:clamp(11px,3.3vw,14px)}._statsLine_h2w9g_50{margin:5px 0 0;padding:5px 6px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#0913209e;font-size:clamp(11px,3.1vw,13px)}._boardPanel_h2w9g_58{margin-bottom:8px}._board_h2w9g_58{position:relative;overflow:hidden;width:min(88vw,340px);aspect-ratio:1 / 1;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border:2px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));box-shadow:0 0 0 1px #00000059,0 14px 26px #00000061}._trailOverlay_h2w9g_76{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}._trailPath_h2w9g_85{fill:none;stroke:#ff2828e5;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgb(255 30 30 / 65%))}._trailHead_h2w9g_94{fill:#ff3c3cf5;filter:drop-shadow(0 0 6px rgb(255 45 45 / 70%))}._cell_h2w9g_99{position:relative;display:grid;place-items:center}._lightCell_h2w9g_105{background:#f4ecd8}._darkCell_h2w9g_109{background:#c08c61}._knight_h2w9g_113{position:absolute;z-index:3;display:grid;place-items:center;width:100%;height:100%;font-family:Times New Roman,Georgia,serif;font-size:clamp(28px,15vw,56px);line-height:1;color:#111827;text-shadow:0 1px 0 rgb(255 255 255 / 55%),0 3px 8px rgb(0 0 0 / 25%);transform:translateY(-1px)}._target_h2w9g_130{position:absolute;z-index:2;font-size:clamp(12px,8.5vw,33px);color:#e21c29;text-shadow:0 0 8px rgb(236 37 58 / 60%)}._readout_h2w9g_138{margin-bottom:8px;padding:7px;border:1px solid color-mix(in srgb,var(--gc-border) 72%,transparent);background:#040a1173}._readoutLine_h2w9g_145{margin:0;font-size:clamp(11px,3.2vw,14px)}._readoutLine_h2w9g_145+._readoutLine_h2w9g_145{margin-top:3px}._programPanel_h2w9g_154{display:flex;flex-direction:column;gap:6px}._programTrack_h2w9g_160{min-height:42px;display:flex;flex-wrap:wrap;align-items:center;gap:5px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#07111d85;padding:7px}._placeholder_h2w9g_171{color:var(--gc-text-muted);font-size:12px}._step_h2w9g_176{width:24px;height:24px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));background:#45c4b024;font-weight:600;font-size:13px}._stepExecuted_h2w9g_187{background:#ff6b6b40;border-color:#ff6b6b99}._programButtons_h2w9g_192,._controlRow_h2w9g_193{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}._button_h2w9g_199,._buttonPrimary_h2w9g_200{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);padding:7px 6px;font:inherit;font-size:20px;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:transform .12s ease,background-color .12s ease}._button_h2w9g_199{background:#09132099;color:var(--gc-text)}._buttonPrimary_h2w9g_200{background:color-mix(in srgb,var(--gc-primary) 35%,#12252f);color:#f2fff8;border-color:color-mix(in srgb,var(--gc-primary) 65%,transparent)}._button_h2w9g_199:disabled,._buttonPrimary_h2w9g_200:disabled{opacity:.48;cursor:not-allowed}._button_h2w9g_199:active,._buttonPrimary_h2w9g_200:active{transform:scale(.98)}._legend_h2w9g_233{margin:0;color:var(--gc-text-muted);font-size:11px}._promptOverlay_h2w9g_239{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;gap:8px;padding:16px;background:#02080ddb;border:1px solid color-mix(in srgb,var(--gc-accent) 40%,var(--gc-border))}._promptTitle_h2w9g_250{margin:0;text-align:center;text-transform:uppercase;letter-spacing:.08em;font-size:clamp(20px,6vw,32px)}._promptText_h2w9g_258{margin:0;text-align:center;color:var(--gc-text-muted)}._promptOptions_h2w9g_264{display:flex;justify-content:center;gap:10px}._promptOption_h2w9g_264{min-width:110px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#09132099;color:var(--gc-text);padding:8px 10px;font:inherit;font-size:14px;text-align:left;cursor:pointer}._promptSelected_h2w9g_282{border-color:color-mix(in srgb,var(--gc-accent) 70%,transparent);background:#ff6b6b33}._promptHint_h2w9g_287{margin:0;text-align:center;color:var(--gc-text-muted);font-size:11px}@media (max-width: 560px){._programButtons_h2w9g_192,._controlRow_h2w9g_193{grid-template-columns:1fr 1fr 1fr 1fr}}@media (min-width: 780px){._frame_h2w9g_12{max-width:540px;margin:0 auto;border-radius:14px;min-height:auto}}")),document.head.appendChild(r)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})(); +import { jsx as a, jsxs as l } from "react/jsx-runtime"; +import { useMemo as ne, useState as g, useRef as me, useEffect as oe, useCallback as x } from "react"; +const Oe = "_wrapper_h2w9g_1", Ae = "_frame_h2w9g_12", Ee = "_frameSucceeded_h2w9g_25", Le = "_header_h2w9g_33", Re = "_title_h2w9g_37", Ie = "_statsLine_h2w9g_50", Me = "_boardPanel_h2w9g_58", De = "_board_h2w9g_58", He = "_trailOverlay_h2w9g_76", Ge = "_trailPath_h2w9g_85", Be = "_trailHead_h2w9g_94", Ue = "_cell_h2w9g_99", Fe = "_lightCell_h2w9g_105", Ye = "_darkCell_h2w9g_109", Ve = "_knight_h2w9g_113", je = "_target_h2w9g_130", Xe = "_readout_h2w9g_138", Ke = "_readoutLine_h2w9g_145", Ze = "_programPanel_h2w9g_154", ze = "_programTrack_h2w9g_160", We = "_placeholder_h2w9g_171", qe = "_step_h2w9g_176", Je = "_stepExecuted_h2w9g_187", Qe = "_programButtons_h2w9g_192", et = "_controlRow_h2w9g_193", tt = "_button_h2w9g_199", rt = "_buttonPrimary_h2w9g_200", nt = "_legend_h2w9g_233", ot = "_promptOverlay_h2w9g_239", at = "_promptTitle_h2w9g_250", st = "_promptText_h2w9g_258", ct = "_promptOptions_h2w9g_264", lt = "_promptOption_h2w9g_264", it = "_promptSelected_h2w9g_282", dt = "_promptHint_h2w9g_287", e = { + wrapper: Oe, + frame: Ae, + frameSucceeded: Ee, + header: Le, + title: Re, + statsLine: Ie, + boardPanel: Me, + board: De, + trailOverlay: He, + trailPath: Ge, + trailHead: Be, + cell: Ue, + lightCell: Fe, + darkCell: Ye, + knight: Ve, + target: je, + readout: Xe, + readoutLine: Ke, + programPanel: Ze, + programTrack: ze, + placeholder: We, + step: qe, + stepExecuted: Je, + programButtons: Qe, + controlRow: et, + button: tt, + buttonPrimary: rt, + legend: nt, + promptOverlay: ot, + promptTitle: at, + promptText: st, + promptOptions: ct, + promptOption: lt, + promptSelected: it, + promptHint: dt +}, C = 8, h = { x: 0, y: C - 1 }, pt = 220, ut = 64, mt = 3, G = 100, ht = 5, gt = { + up: { dx: 0, dy: -1 }, + down: { dx: 0, dy: 1 }, + left: { dx: -1, dy: 0 }, + right: { dx: 1, dy: 0 } +}, _t = { + up: "↑", + down: "↓", + left: "←", + right: "→" +}, ge = [ + { dx: 0, dy: 1 }, + { dx: 1, dy: 1 }, + { dx: 1, dy: 2 }, + { dx: 1, dy: 3 }, + { dx: 2, dy: 3 }, + { dx: 1, dy: 5 }, + { dx: 1, dy: 6 } +], Z = (r, o, d) => Math.min(d, Math.max(o, r)), _e = (r) => r.x >= 0 && r.x < C && r.y >= 0 && r.y < C, yt = (r, o) => r.x === o.x && r.y === o.y, ce = (r, o) => o === 0 ? r : ce(o, r % o), ft = (r, o) => { + const d = Math.abs(o.x - r.x), p = Math.abs(o.y - r.y); + if (d === 0 && p === 0) return 0; + if (d === 0 || p === 0) return d + p; + const _ = ce(d, p); + return d / _ + p / _; +}, wt = (r) => new Promise((o) => { + window.setTimeout(o, r); +}), he = (r) => r === "Enter" || r === "NumpadEnter" || r === " " || r === "Space" || r === "Spacebar", bt = (r) => `${(r.x + 0.5) * G},${(r.y + 0.5) * G}`, z = (r) => Z(r, 0, ge.length - 1), ye = (r) => ge[z(r)], ae = (r) => { + const o = ye(r); + return o.dx + o.dy; +}, se = (r) => { + const o = ye(r), d = []; + for (let _ = 1; _ < C; _ += 1) { + const u = { + x: h.x + o.dx * _, + y: h.y - o.dy * _ + }; + if (!_e(u)) break; + Math.abs(u.x - h.x) + Math.abs(u.y - h.y) > ht && d.push(u); + } + if (d.length === 0) + return { + x: h.x + o.dx, + y: h.y - o.dy + }; + const p = Math.floor(Math.random() * d.length); + return d[p]; +}; +function Nt({ + config: r, + onComplete: o, + onProgress: d, + theme: p, + className: _ +}) { + const u = ne(() => { + const n = r.params.goalCaptures; + return typeof n != "number" ? mt : Z(Math.round(n), 1, 10); + }, [r.params.goalCaptures]), [v, le] = g(0), [N, W] = g(h), [$, ie] = g(() => se(0)), [y, q] = g([]), [B, U] = g([h]), [f, k] = g("idle"), [fe, O] = g(-1), [w, de] = g(0), [pe, L] = g(""), [R, F] = g("yes"), [I, Y] = g("continue"), [b, we] = g(!1), S = me(0), V = me(!1), i = f === "running", m = f === "gameOverPrompt" || f === "successPrompt" || f === "finished", J = ae(v), be = ne(() => p ? { + "--gc-primary": p.primary, + "--gc-accent": p.accent, + "--gc-bg": p.bg, + "--gc-bg-secondary": p.bgSecondary, + "--gc-text": p.text, + "--gc-text-muted": p.textMuted, + "--gc-border": p.border + } : {}, [p]); + oe(() => { + const n = w / u; + d == null || d(Math.round(Z(n * 100, 0, 100))); + }, [w, u, d]); + const j = x((n, t, s = "") => { + S.current += 1, k("idle"), le(z(n)), W(h), ie(se(n)), U([h]), O(-1), de(t), F("yes"), Y("continue"), L(s); + }, []), Q = x(() => { + j(v, 0, `Looking for a ${J}-step move set.`); + }, [v, J, j]), X = x((n = 0) => { + const t = z(v + 1), s = ae(t); + j(t, n, `Looking for a ${s}-step move set.`); + }, [v, j]), ee = x(() => { + V.current || (V.current = !0, S.current += 1, k("finished"), o({ + success: !1, + error: "Player chose no after game over.", + data: { + captures: w, + goalCaptures: u, + configId: r.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString(), + hasEverSucceeded: b + } + })); + }, [w, r.id, u, b, o]), D = x(() => { + V.current || (V.current = !0, S.current += 1, k("finished"), o({ + success: !0, + score: 100, + data: { + captures: w, + goalCaptures: u, + configId: r.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString(), + hasEverSucceeded: b + } + })); + }, [w, r.id, u, b, o]), M = x((n) => { + q((t) => i || m || t.length >= ut ? t : [...t, n]); + }, [m, i]), xe = x(() => { + i || m || q((n) => n.slice(0, -1)); + }, [m, i]), Ce = x(() => { + i || m || q([]); + }, [m, i]), Ne = x(() => { + S.current += 1, k("idle"), O(-1), L("Program stopped."); + }, []), Se = x(async () => { + if (i || m || y.length === 0) return; + const n = S.current + 1; + S.current = n; + let t = N, s = $, c = w, T = 0; + for (k("running"), O(-1), U([N]), L(""); S.current === n; ) + for (let P = 0; P < y.length; P += 1) { + if (await wt(pt), S.current !== n) return; + const H = y[P], K = gt[H], A = { + x: t.x + K.dx, + y: t.y + K.dy + }; + if (!_e(A)) { + k("gameOverPrompt"), F("yes"), O(-1), L(`Game over after ${T} step(s). Try again?`); + return; + } + if (T += 1, t = A, W(A), U((E) => [...E, A]), O(P), yt(A, s)) { + if (c += 1, de(c), we(!0), c >= u) { + k("successPrompt"), Y("continue"), O(-1), L(`Success. ${c} challenge(s) complete.`); + return; + } + const E = z(v + 1), re = se(E), Te = ae(E); + t = h, s = re, k("idle"), le(E), W(h), ie(re), U([h]), O(-1), L( + `Challenge ${c}/${u} complete. Looking for a ${Te}-step move set.` + ); + return; + } + } + }, [w, v, u, m, N, y, i, $]); + oe(() => { + const n = (t) => { + const s = { + ArrowUp: "up", + ArrowDown: "down", + ArrowLeft: "left", + ArrowRight: "right" + }; + if (f === "gameOverPrompt") { + if (t.key === "ArrowLeft" || t.key === "ArrowUp") { + t.preventDefault(), F("yes"); + return; + } + if (t.key === "ArrowRight" || t.key === "ArrowDown") { + t.preventDefault(), F("no"); + return; + } + he(t.key) && (t.preventDefault(), R === "yes" ? Q() : b ? D() : ee()); + return; + } + if (f === "successPrompt") { + if (t.key === "ArrowLeft" || t.key === "ArrowUp") { + t.preventDefault(), Y("continue"); + return; + } + if (t.key === "ArrowRight" || t.key === "ArrowDown") { + t.preventDefault(), Y("done"); + return; + } + he(t.key) && (t.preventDefault(), I === "continue" ? X() : D()); + return; + } + if (f !== "idle") return; + const c = s[t.key]; + c && (t.preventDefault(), M(c)); + }; + return window.addEventListener("keydown", n), () => { + window.removeEventListener("keydown", n); + }; + }, [ + M, + ee, + D, + R, + b, + f, + Q, + X, + I + ]), oe( + () => () => { + S.current += 1; + }, + [] + ); + const Pe = ne(() => { + const n = $.x - N.x, t = N.y - $.y, s = Math.abs(n), c = Math.abs(t), T = ft(N, $); + if (s === 0 && c === 0) + return { + angle: 0, + motifLength: T, + motif: "On target" + }; + if (s === 0 || c === 0) + return { + angle: s === 0 ? 90 : 0, + motifLength: T, + motif: s === 0 ? `${t >= 0 ? "U" : "D"} x ${c}` : `${n >= 0 ? "R" : "L"} x ${s}` + }; + const P = ce(s, c), H = s / P, K = c / P, A = `${n >= 0 ? "R" : "L"} x ${H}`, E = `${t >= 0 ? "U" : "D"} x ${K}`; + return { + angle: Math.atan2(c, s) * (180 / Math.PI), + motifLength: T, + motif: `${A}, ${E}` + }; + }, [N, $]), ve = Math.round(Z(w / u * 100, 0, 100)), $e = _ ? `${e.wrapper} ${_}` : e.wrapper, ue = C * G, ke = B.map(bt).join(" "), te = B[B.length - 1]; + return /* @__PURE__ */ a("div", { className: $e, style: be, children: /* @__PURE__ */ l( + "section", + { + className: `${e.frame} ${b ? e.frameSucceeded : ""}`, + "aria-label": "Chess move set trainer", + children: [ + /* @__PURE__ */ l("header", { className: e.header, children: [ + /* @__PURE__ */ a("h2", { className: e.title, children: "The Chess Analogy" }), + /* @__PURE__ */ l("p", { className: e.statsLine, children: [ + "Captures ", + w, + "/", + u, + " • Progress ", + ve, + "% • Program ", + y.length, + " • Target ", + J + ] }) + ] }), + /* @__PURE__ */ a("div", { className: e.boardPanel, children: /* @__PURE__ */ l("div", { className: e.board, role: "grid", "aria-label": "8 by 8 checkerboard", children: [ + /* @__PURE__ */ l( + "svg", + { + className: e.trailOverlay, + viewBox: `0 0 ${ue} ${ue}`, + preserveAspectRatio: "none", + "aria-hidden": "true", + children: [ + B.length > 1 && /* @__PURE__ */ a("polyline", { className: e.trailPath, points: ke }), + te && /* @__PURE__ */ a( + "circle", + { + className: e.trailHead, + cx: (te.x + 0.5) * G, + cy: (te.y + 0.5) * G, + r: 6 + } + ) + ] + } + ), + Array.from({ length: C * C }).map((n, t) => { + const s = t % C, c = Math.floor(t / C), T = (s + c) % 2 === 1, P = N.x === s && N.y === c, H = $.x === s && $.y === c; + return /* @__PURE__ */ l( + "div", + { + className: `${e.cell} ${T ? e.darkCell : e.lightCell}`, + role: "gridcell", + "aria-label": `x ${s + 1}, y ${C - c}`, + children: [ + H && /* @__PURE__ */ a("span", { className: e.target, "aria-hidden": "true", children: "●" }), + P && /* @__PURE__ */ a("span", { className: e.knight, "aria-hidden": "true", children: "♞" }) + ] + }, + `${s}-${c}` + ); + }) + ] }) }), + /* @__PURE__ */ l("div", { className: e.readout, children: [ + /* @__PURE__ */ l("p", { className: e.readoutLine, children: [ + "Angle: ", + /* @__PURE__ */ l("strong", { children: [ + Pe.angle.toFixed(1), + "°" + ] }) + ] }), + !1 + ] }), + /* @__PURE__ */ l("div", { className: e.programPanel, children: [ + /* @__PURE__ */ l("div", { className: e.programTrack, "aria-live": "polite", children: [ + y.length === 0 && /* @__PURE__ */ a("span", { className: e.placeholder, children: "Empty move set" }), + y.map((n, t) => /* @__PURE__ */ a( + "span", + { + className: `${e.step} ${i && t === fe ? e.stepExecuted : ""}`, + children: _t[n] + }, + `${n}-${t}` + )) + ] }), + /* @__PURE__ */ l("div", { className: e.programButtons, children: [ + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("up"), disabled: i || m, children: "↑" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("left"), disabled: i || m, children: "←" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("down"), disabled: i || m, children: "↓" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("right"), disabled: i || m, children: "→" }) + ] }), + /* @__PURE__ */ l("div", { className: e.controlRow, children: [ + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: xe, disabled: i || m || y.length === 0, children: "Undo" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: Ce, disabled: i || m || y.length === 0, children: "Clear" }), + /* @__PURE__ */ a("button", { type: "button", className: e.buttonPrimary, onClick: i ? Ne : Se, disabled: m || y.length === 0, children: i ? "Stop" : "Run" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => X(), disabled: i, children: "Reset" }) + ] }), + pe && /* @__PURE__ */ a("p", { className: e.legend, children: pe }) + ] }), + f === "gameOverPrompt" && /* @__PURE__ */ l("div", { className: e.promptOverlay, role: "dialog", "aria-modal": "true", "aria-label": "Game over prompt", children: [ + /* @__PURE__ */ a("p", { className: e.promptTitle, children: "Game over" }), + /* @__PURE__ */ a("p", { className: e.promptText, children: b ? "Try again or stop?" : "Try again?" }), + /* @__PURE__ */ l("div", { className: e.promptOptions, children: [ + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${R === "yes" ? e.promptSelected : ""}`, + onClick: Q, + children: [ + R === "yes" ? "▶ " : "", + "Yes" + ] + } + ), + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${R === "no" ? e.promptSelected : ""}`, + onClick: b ? D : ee, + children: [ + R === "no" ? "▶ " : "", + b ? "I'm done" : "No" + ] + } + ) + ] }), + /* @__PURE__ */ a("p", { className: e.promptHint, children: "Use arrows + Enter." }) + ] }), + f === "successPrompt" && /* @__PURE__ */ l("div", { className: e.promptOverlay, role: "dialog", "aria-modal": "true", "aria-label": "Success prompt", children: [ + /* @__PURE__ */ a("p", { className: e.promptTitle, children: "Success" }), + /* @__PURE__ */ a("p", { className: e.promptText, children: "Continue?" }), + /* @__PURE__ */ l("div", { className: e.promptOptions, children: [ + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${I === "continue" ? e.promptSelected : ""}`, + onClick: () => X(), + children: [ + I === "continue" ? "▶ " : "", + "Yes" + ] + } + ), + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${I === "done" ? e.promptSelected : ""}`, + onClick: D, + children: [ + I === "done" ? "▶ " : "", + "I'm done" + ] + } + ) + ] }), + /* @__PURE__ */ a("p", { className: e.promptHint, children: "Use arrows + Enter." }) + ] }) + ] + } + ) }); +} +const St = { + name: "chess_analogy", + displayName: "Chess Move Set Lab", + version: "1.0.0", + paramSchema: { + goalCaptures: { + type: "range", + label: "Targets To Capture", + description: "How many red targets must be captured before completion.", + default: 3, + min: 1, + max: 10, + step: 1 + } + }, + defaultParams: { + goalCaptures: 3 + } +}; +export { + Nt as default, + St as metadata +}; +//# sourceMappingURL=chess_analogy.js.map diff --git a/dist/vendor/glitch/glitch_chess_analogy/chess_analogy.js.map b/dist/vendor/glitch/glitch_chess_analogy/chess_analogy.js.map new file mode 100644 index 0000000..b50a25d --- /dev/null +++ b/dist/vendor/glitch/glitch_chess_analogy/chess_analogy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chess_analogy.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { CSSProperties } from 'react'\nimport type { GlitchComponentProps } from './types'\nimport styles from './styles.module.css'\n\nconst BOARD_SIZE = 8\nconst START_POS = { x: 0, y: BOARD_SIZE - 1 }\nconst MOVE_DELAY_MS = 220\nconst MAX_PROGRAM_LENGTH = 64\nconst DEFAULT_GOAL_CAPTURES = 3\nconst SVG_CELL_SIZE = 100\nconst MIN_TARGET_DISTANCE = 5\n\ntype Direction = 'up' | 'down' | 'left' | 'right'\ntype GameMode = 'idle' | 'running' | 'gameOverPrompt' | 'successPrompt' | 'finished'\ntype GameOverChoice = 'yes' | 'no'\ntype SuccessChoice = 'continue' | 'done'\n\ninterface Position {\n x: number\n y: number\n}\n\ninterface StepVector {\n dx: number\n dy: number\n}\n\ninterface ChallengePattern {\n dx: number\n dy: number\n}\n\nconst VECTOR_BY_DIRECTION: Record = {\n up: { dx: 0, dy: -1 },\n down: { dx: 0, dy: 1 },\n left: { dx: -1, dy: 0 },\n right: { dx: 1, dy: 0 }\n}\n\nconst ARROW_BY_DIRECTION: Record = {\n up: '↑',\n down: '↓',\n left: '←',\n right: '→'\n}\n\nconst CHALLENGE_PATTERNS: ChallengePattern[] = [\n { dx: 0, dy: 1 },\n { dx: 1, dy: 1 },\n { dx: 1, dy: 2 },\n { dx: 1, dy: 3 },\n { dx: 2, dy: 3 },\n { dx: 1, dy: 5 },\n { dx: 1, dy: 6 }\n]\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value))\n\nconst isInsideBoard = (position: Position) =>\n position.x >= 0 && position.x < BOARD_SIZE && position.y >= 0 && position.y < BOARD_SIZE\n\nconst samePosition = (a: Position, b: Position) => a.x === b.x && a.y === b.y\n\nconst gcd = (a: number, b: number): number => {\n if (b === 0) return a\n return gcd(b, a % b)\n}\n\nconst getMoveSetLength = (from: Position, to: Position) => {\n const dx = Math.abs(to.x - from.x)\n const dy = Math.abs(to.y - from.y)\n\n if (dx === 0 && dy === 0) return 0\n if (dx === 0 || dy === 0) return dx + dy\n\n const divisor = gcd(dx, dy)\n return dx / divisor + dy / divisor\n}\n\nconst wait = (ms: number) =>\n new Promise((resolve) => {\n window.setTimeout(resolve, ms)\n })\n\nconst isConfirmKey = (key: string) =>\n key === 'Enter' || key === 'NumpadEnter' || key === ' ' || key === 'Space' || key === 'Spacebar'\n\nconst toSvgPoint = (position: Position) =>\n `${(position.x + 0.5) * SVG_CELL_SIZE},${(position.y + 0.5) * SVG_CELL_SIZE}`\n\nconst getChallengeIndex = (index: number) => clamp(index, 0, CHALLENGE_PATTERNS.length - 1)\n\nconst getPatternForChallenge = (challengeIndex: number) => CHALLENGE_PATTERNS[getChallengeIndex(challengeIndex)]\n\nconst getComplexityForChallenge = (challengeIndex: number) => {\n const pattern = getPatternForChallenge(challengeIndex)\n return pattern.dx + pattern.dy\n}\n\nconst getRandomTargetForChallenge = (challengeIndex: number): Position => {\n const pattern = getPatternForChallenge(challengeIndex)\n const candidates: Position[] = []\n\n for (let multiplier = 1; multiplier < BOARD_SIZE; multiplier += 1) {\n const candidate = {\n x: START_POS.x + pattern.dx * multiplier,\n y: START_POS.y - pattern.dy * multiplier\n }\n\n if (!isInsideBoard(candidate)) break\n\n const distance = Math.abs(candidate.x - START_POS.x) + Math.abs(candidate.y - START_POS.y)\n if (distance > MIN_TARGET_DISTANCE) {\n candidates.push(candidate)\n }\n }\n\n if (candidates.length === 0) {\n return {\n x: START_POS.x + pattern.dx,\n y: START_POS.y - pattern.dy\n }\n }\n\n const randomIndex = Math.floor(Math.random() * candidates.length)\n return candidates[randomIndex]\n}\n\nexport default function Component({\n config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const goalCaptures = useMemo(() => {\n const configured = config.params.goalCaptures\n if (typeof configured !== 'number') return DEFAULT_GOAL_CAPTURES\n return clamp(Math.round(configured), 1, 10)\n }, [config.params.goalCaptures])\n\n const [challengeIndex, setChallengeIndex] = useState(0)\n const [piece, setPiece] = useState(START_POS)\n const [target, setTarget] = useState(() => getRandomTargetForChallenge(0))\n const [program, setProgram] = useState([])\n const [trailPoints, setTrailPoints] = useState([START_POS])\n const [mode, setMode] = useState('idle')\n const [stepIndex, setStepIndex] = useState(-1)\n const [captures, setCaptures] = useState(0)\n const [lastRunSummary, setLastRunSummary] = useState('')\n const [gameOverChoice, setGameOverChoice] = useState('yes')\n const [successChoice, setSuccessChoice] = useState('continue')\n const [hasEverSucceeded, setHasEverSucceeded] = useState(false)\n\n const runIdRef = useRef(0)\n const completedRef = useRef(false)\n\n const running = mode === 'running'\n const lockedForPrompt = mode === 'gameOverPrompt' || mode === 'successPrompt' || mode === 'finished'\n const currentComplexityGoal = getComplexityForChallenge(challengeIndex)\n\n const themeStyle = useMemo(() => {\n if (!theme) return {}\n\n return {\n '--gc-primary': theme.primary,\n '--gc-accent': theme.accent,\n '--gc-bg': theme.bg,\n '--gc-bg-secondary': theme.bgSecondary,\n '--gc-text': theme.text,\n '--gc-text-muted': theme.textMuted,\n '--gc-border': theme.border\n } as CSSProperties\n }, [theme])\n\n useEffect(() => {\n const ratio = captures / goalCaptures\n onProgress?.(Math.round(clamp(ratio * 100, 0, 100)))\n }, [captures, goalCaptures, onProgress])\n\n const resetBoard = useCallback((nextChallengeIndex: number, nextCaptures: number, summary = '') => {\n runIdRef.current += 1\n setMode('idle')\n setChallengeIndex(getChallengeIndex(nextChallengeIndex))\n setPiece(START_POS)\n setTarget(getRandomTargetForChallenge(nextChallengeIndex))\n setTrailPoints([START_POS])\n setStepIndex(-1)\n setCaptures(nextCaptures)\n setGameOverChoice('yes')\n setSuccessChoice('continue')\n setLastRunSummary(summary)\n }, [])\n\n const retryChallenge = useCallback(() => {\n resetBoard(challengeIndex, 0, `Looking for a ${currentComplexityGoal}-step move set.`)\n }, [challengeIndex, currentComplexityGoal, resetBoard])\n\n const advanceChallenge = useCallback((nextCaptures = 0) => {\n const nextChallengeIndex = getChallengeIndex(challengeIndex + 1)\n const nextComplexityGoal = getComplexityForChallenge(nextChallengeIndex)\n\n resetBoard(nextChallengeIndex, nextCaptures, `Looking for a ${nextComplexityGoal}-step move set.`)\n }, [challengeIndex, resetBoard])\n\n const finishFailure = useCallback(() => {\n if (completedRef.current) return\n completedRef.current = true\n runIdRef.current += 1\n setMode('finished')\n onComplete({\n success: false,\n error: 'Player chose no after game over.',\n data: {\n captures,\n goalCaptures,\n configId: config.id,\n completedAt: new Date().toISOString(),\n hasEverSucceeded\n }\n })\n }, [captures, config.id, goalCaptures, hasEverSucceeded, onComplete])\n\n const finishSuccess = useCallback(() => {\n if (completedRef.current) return\n completedRef.current = true\n runIdRef.current += 1\n setMode('finished')\n onComplete({\n success: true,\n score: 100,\n data: {\n captures,\n goalCaptures,\n configId: config.id,\n completedAt: new Date().toISOString(),\n hasEverSucceeded\n }\n })\n }, [captures, config.id, goalCaptures, hasEverSucceeded, onComplete])\n\n const addInstruction = useCallback((direction: Direction) => {\n setProgram((previous) => {\n if (running || lockedForPrompt || previous.length >= MAX_PROGRAM_LENGTH) return previous\n return [...previous, direction]\n })\n }, [lockedForPrompt, running])\n\n const undoInstruction = useCallback(() => {\n if (running || lockedForPrompt) return\n setProgram((previous) => previous.slice(0, -1))\n }, [lockedForPrompt, running])\n\n const clearProgram = useCallback(() => {\n if (running || lockedForPrompt) return\n setProgram([])\n }, [lockedForPrompt, running])\n\n const stopProgram = useCallback(() => {\n runIdRef.current += 1\n setMode('idle')\n setStepIndex(-1)\n setLastRunSummary('Program stopped.')\n }, [])\n\n const runProgram = useCallback(async () => {\n if (running || lockedForPrompt || program.length === 0) return\n\n const runId = runIdRef.current + 1\n runIdRef.current = runId\n\n let currentPiece = piece\n let currentTarget = target\n let currentCaptures = captures\n let executedSteps = 0\n\n setMode('running')\n setStepIndex(-1)\n setTrailPoints([piece])\n setLastRunSummary('')\n\n while (runIdRef.current === runId) {\n for (let index = 0; index < program.length; index += 1) {\n await wait(MOVE_DELAY_MS)\n if (runIdRef.current !== runId) return\n\n const direction = program[index]\n const vector = VECTOR_BY_DIRECTION[direction]\n const candidate = {\n x: currentPiece.x + vector.dx,\n y: currentPiece.y + vector.dy\n }\n\n if (!isInsideBoard(candidate)) {\n setMode('gameOverPrompt')\n setGameOverChoice('yes')\n setStepIndex(-1)\n setLastRunSummary(`Game over after ${executedSteps} step(s). Try again?`)\n return\n }\n\n executedSteps += 1\n currentPiece = candidate\n setPiece(candidate)\n setTrailPoints((previous) => [...previous, candidate])\n setStepIndex(index)\n\n if (samePosition(candidate, currentTarget)) {\n currentCaptures += 1\n setCaptures(currentCaptures)\n setHasEverSucceeded(true)\n\n if (currentCaptures >= goalCaptures) {\n setMode('successPrompt')\n setSuccessChoice('continue')\n setStepIndex(-1)\n setLastRunSummary(`Success. ${currentCaptures} challenge(s) complete.`)\n return\n }\n\n const nextChallengeIndex = getChallengeIndex(challengeIndex + 1)\n const nextTarget = getRandomTargetForChallenge(nextChallengeIndex)\n const nextComplexityGoal = getComplexityForChallenge(nextChallengeIndex)\n\n currentPiece = START_POS\n currentTarget = nextTarget\n\n setMode('idle')\n setChallengeIndex(nextChallengeIndex)\n setPiece(START_POS)\n setTarget(nextTarget)\n setTrailPoints([START_POS])\n setStepIndex(-1)\n setLastRunSummary(\n `Challenge ${currentCaptures}/${goalCaptures} complete. Looking for a ${nextComplexityGoal}-step move set.`\n )\n return\n }\n }\n }\n }, [captures, challengeIndex, goalCaptures, lockedForPrompt, piece, program, running, target])\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const map: Record = {\n ArrowUp: 'up',\n ArrowDown: 'down',\n ArrowLeft: 'left',\n ArrowRight: 'right'\n }\n\n if (mode === 'gameOverPrompt') {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault()\n setGameOverChoice('yes')\n return\n }\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault()\n setGameOverChoice('no')\n return\n }\n if (isConfirmKey(event.key)) {\n event.preventDefault()\n if (gameOverChoice === 'yes') retryChallenge()\n else if (hasEverSucceeded) finishSuccess()\n else finishFailure()\n }\n return\n }\n\n if (mode === 'successPrompt') {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault()\n setSuccessChoice('continue')\n return\n }\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault()\n setSuccessChoice('done')\n return\n }\n if (isConfirmKey(event.key)) {\n event.preventDefault()\n if (successChoice === 'continue') advanceChallenge()\n else finishSuccess()\n }\n return\n }\n\n if (mode !== 'idle') return\n\n const direction = map[event.key]\n if (!direction) return\n\n event.preventDefault()\n addInstruction(direction)\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [\n addInstruction,\n finishFailure,\n finishSuccess,\n gameOverChoice,\n hasEverSucceeded,\n mode,\n retryChallenge,\n advanceChallenge,\n successChoice\n ])\n\n useEffect(\n () => () => {\n runIdRef.current += 1\n },\n []\n )\n\n const aimMath = useMemo(() => {\n const dx = target.x - piece.x\n const dy = piece.y - target.y\n const absX = Math.abs(dx)\n const absY = Math.abs(dy)\n const motifLength = getMoveSetLength(piece, target)\n\n if (absX === 0 && absY === 0) {\n return {\n angle: 0,\n motifLength,\n motif: 'On target'\n }\n }\n\n if (absX === 0 || absY === 0) {\n return {\n angle: absX === 0 ? 90 : 0,\n motifLength,\n motif:\n absX === 0\n ? `${dy >= 0 ? 'U' : 'D'} x ${absY}`\n : `${dx >= 0 ? 'R' : 'L'} x ${absX}`\n }\n }\n\n const divisor = gcd(absX, absY)\n const shortX = absX / divisor\n const shortY = absY / divisor\n const horizontal = `${dx >= 0 ? 'R' : 'L'} x ${shortX}`\n const vertical = `${dy >= 0 ? 'U' : 'D'} x ${shortY}`\n const angle = Math.atan2(absY, absX) * (180 / Math.PI)\n\n return {\n angle,\n motifLength,\n motif: `${horizontal}, ${vertical}`\n }\n }, [piece, target])\n\n const progressPercent = Math.round(clamp((captures / goalCaptures) * 100, 0, 100))\n const rootClassName = className ? `${styles.wrapper} ${className}` : styles.wrapper\n const boardView = BOARD_SIZE * SVG_CELL_SIZE\n const pathValue = trailPoints.map(toSvgPoint).join(' ')\n const trailHead = trailPoints[trailPoints.length - 1]\n\n return (\n
    \n \n
    \n

    The Chess Analogy

    \n

    \n Captures {captures}/{goalCaptures} • Progress {progressPercent}% • Program {program.length} • Target {currentComplexityGoal}\n

    \n
    \n\n
    \n
    \n
    \n )\n })}\n
    \n
    \n\n
    \n

    \n Angle: {aimMath.angle.toFixed(1)}°\n

    \n {false && (\n

    \n Primitive motif: {aimMath.motif} ({aimMath.motifLength})\n

    \n )}\n
    \n\n
    \n
    \n {program.length === 0 && Empty move set}\n {program.map((instruction, index) => (\n \n {ARROW_BY_DIRECTION[instruction]}\n \n ))}\n
    \n\n
    \n \n \n \n \n
    \n\n
    \n \n \n \n \n
    \n \n \n {lastRunSummary &&

    {lastRunSummary}

    }\n
    \n\n {mode === 'gameOverPrompt' && (\n
    \n

    Game over

    \n

    {hasEverSucceeded ? 'Try again or stop?' : 'Try again?'}

    \n
    \n \n {gameOverChoice === 'yes' ? '▶ ' : ''}Yes\n \n \n {gameOverChoice === 'no' ? '▶ ' : ''}{hasEverSucceeded ? \"I'm done\" : 'No'}\n \n
    \n

    Use arrows + Enter.

    \n
    \n )}\n\n {mode === 'successPrompt' && (\n
    \n

    Success

    \n

    Continue?

    \n
    \n advanceChallenge()}\n >\n {successChoice === 'continue' ? '▶ ' : ''}Yes\n \n \n {successChoice === 'done' ? '▶ ' : ''}I'm done\n \n
    \n

    Use arrows + Enter.

    \n
    \n )}\n \n
\n )\n}\n","import Component from './Component'\nimport type { GlitchComponentMetadata } from './types'\n\nexport default Component\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'chess_analogy',\n displayName: 'Chess Move Set Lab',\n version: '1.0.0',\n paramSchema: {\n goalCaptures: {\n type: 'range',\n label: 'Targets To Capture',\n description: 'How many red targets must be captured before completion.',\n default: 3,\n min: 1,\n max: 10,\n step: 1\n }\n },\n defaultParams: {\n goalCaptures: 3\n }\n}\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n GlitchTheme,\n GlitchHostBridge,\n GlitchComponentMetadata\n} from './types'\n"],"names":["BOARD_SIZE","START_POS","MOVE_DELAY_MS","MAX_PROGRAM_LENGTH","DEFAULT_GOAL_CAPTURES","SVG_CELL_SIZE","MIN_TARGET_DISTANCE","VECTOR_BY_DIRECTION","ARROW_BY_DIRECTION","CHALLENGE_PATTERNS","clamp","value","min","max","isInsideBoard","position","samePosition","a","b","gcd","getMoveSetLength","from","to","dx","dy","divisor","wait","ms","resolve","isConfirmKey","key","toSvgPoint","getChallengeIndex","index","getPatternForChallenge","challengeIndex","getComplexityForChallenge","pattern","getRandomTargetForChallenge","candidates","multiplier","candidate","randomIndex","Component","config","onComplete","onProgress","theme","className","goalCaptures","useMemo","configured","setChallengeIndex","useState","piece","setPiece","target","setTarget","program","setProgram","trailPoints","setTrailPoints","mode","setMode","stepIndex","setStepIndex","captures","setCaptures","lastRunSummary","setLastRunSummary","gameOverChoice","setGameOverChoice","successChoice","setSuccessChoice","hasEverSucceeded","setHasEverSucceeded","runIdRef","useRef","completedRef","running","lockedForPrompt","currentComplexityGoal","themeStyle","useEffect","ratio","resetBoard","useCallback","nextChallengeIndex","nextCaptures","summary","retryChallenge","advanceChallenge","nextComplexityGoal","finishFailure","finishSuccess","addInstruction","direction","previous","undoInstruction","clearProgram","stopProgram","runProgram","runId","currentPiece","currentTarget","currentCaptures","executedSteps","vector","nextTarget","handleKeyDown","event","map","aimMath","absX","absY","motifLength","shortX","shortY","horizontal","vertical","progressPercent","rootClassName","styles","boardView","pathValue","trailHead","jsx","jsxs","_","x","y","dark","hasPiece","hasTarget","instruction","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vendor/glitch/glitch_chess_analogy/glitch.manifest.json b/dist/vendor/glitch/glitch_chess_analogy/glitch.manifest.json new file mode 100644 index 0000000..6337d37 --- /dev/null +++ b/dist/vendor/glitch/glitch_chess_analogy/glitch.manifest.json @@ -0,0 +1,15 @@ +{ + "componentId": "chess_analogy", + "displayName": "Chess Move Set Lab", + "version": "1.0.0", + "folderName": "glitch_chess_analogy", + "packageName": "@glitch-components/chess-analogy", + "entry": "dist/chess_analogy.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "reference", + "2d", + "chess" + ] +} diff --git a/dist/vendor/glitch/glitch_gallery/assets/blblblbl-BrzQxThI.m4a b/dist/vendor/glitch/glitch_gallery/assets/blblblbl-BrzQxThI.m4a new file mode 100644 index 0000000000000000000000000000000000000000..58696a19398caa91b1436e9aae389eb8ca45f9d5 GIT binary patch literal 106893 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πA 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
    vP_xtjRC)WswnK?KpNVbL2B3LYa;e*g4 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 literal 0 HcmV?d00001 diff --git a/dist/vendor/glitch/glitch_gallery/assets/blblblbl-D60GLrQ8.mp3 b/dist/vendor/glitch/glitch_gallery/assets/blblblbl-D60GLrQ8.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..45ff06c45e5ab66ad2ed18b27ea5fabbbb5aadd0 GIT binary patch literal 44488 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 b0S6b+dI2cKGynjy94G(-0MP#z{`S8BI~dqH literal 0 HcmV?d00001 diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-B1PtMIUq.js b/dist/vendor/glitch/glitch_gallery/assets/index-B1PtMIUq.js new file mode 100644 index 0000000..600cc47 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-B1PtMIUq.js @@ -0,0 +1 @@ +import{r as n,j as e}from"./index-CEeZxcxj.js";const ae="/assets/technoborder-4brzcuN1.png",ne="glitch:play-sound",ce="glitch:stop-sound",le="glitch:host:",d={click:"ui.button_click",hover:"ui.button_hover",computeStart:"machine.compute_start",computeStep:"machine.compute_step",computeDone:"machine.compute_done",verdictStable:"machine.verdict_stable",verdictAlert:"machine.verdict_alert"};function M(s,a){typeof window>"u"||window.dispatchEvent(new CustomEvent(s,{detail:a}))}function j(s,a,t){try{if(s?.playSound){s.playSound(a,t);return}}catch{}M(ne,{id:a,payload:t})}function U(s,a,t){try{if(s?.stopSound){s.stopSound(a,t);return}}catch{}M(ce,{id:a,payload:t})}function S(s,a,t){try{if(s?.emit){s.emit(a,t);return}}catch{}M(`${le}${a}`,t)}const $={continuousUniverse:!0,infinitePrecision:!0,chunkParticles:!1},_={"000":{outcome:"Paradoxical",intermediate:"Very very much information.",description:"Space is supposed to be discrete, but each cell must contain ar arbitrary amount of information.",visualClass:"paradox-point",tone:"paradox"},"001":{outcome:"Digital Physics",intermediate:"Instruction programs remain finite.",description:"Stable but requires continuous rotational symmetry to be emergent",visualClass:"stable-chunk",tone:"stable"},"010":{outcome:"#1 Memory Paradox",intermediate:"Move sets can scale to infinite length",description:"Infinte memory per cell",visualClass:"paradox-point",tone:"paradox"},"011":{outcome:"#2 Memory Paradox",intermediate:"Move sets can scale to infinite length",description:"Chunky particles must grow without bound to hold infinite move set",visualClass:"paradox-chunk",tone:"paradox"},100:{outcome:"Paradoxical",intermediate:"Chunky geometry implies discrete space",description:"A continuous universe with chunky particles spanning fundamental cells is a constadiction.",visualClass:"non-standard-particle-point",tone:"warning"},101:{outcome:"Paradoxical",intermediate:"The geometry breaks isotropy.",description:"Continuous universe plus chunk particles that imply discrete space is a constradiction.",visualClass:"non-standard-particle-chunk",tone:"warning"},110:{outcome:"Standard Physics",intermediate:"The model remains isotropic.",description:"Continuous space with infinite precision preserves the canonical picture.",visualClass:"standard-particle-point",tone:"stable"},111:{outcome:"Contradictory",intermediate:"Continuous universe cannot be combined with chunk particles.",description:"Chunky cannot be not chunky",visualClass:"standard-particle-chunk",tone:"uncertain"}},H={"000":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Point state exceeds single-cell information budget"},{label:"Verdict trace",value:"Single cell must have arbitrary information capacity"}],"001":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Chunk particle geometry engaged"},{label:"Consistency check",value:"State remains compressible under finite instruction length"},{label:"Verdict trace",value:"Digital physics interpretation remains internally stable"}],"010":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Each lattice cell requires unbounded memory"},{label:"Verdict trace",value:"Inconsistent with isotropy"}],"011":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Chunk particle"},{label:"Consistency check",value:"Particles grow to express information"},{label:"Verdict trace",value:"Chunk particles grow to infinite size"}],100:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Severely demotivated"},{label:"Verdict trace",value:"No explanation for rejecting CRS. Smell detected."}],101:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Chunk particle geometry engaged"},{label:"Consistency check",value:"Space is quantized but cells infinitely small"},{label:"Verdict trace",value:"Non-standard hybrid geometry. Smell detected"}],110:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Canonical isotropic field picture remains intact"},{label:"Verdict trace",value:"Standard physics baseline recovered successfully"}],111:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Chunk particle geometry engaged"},{label:"Consistency check",value:"Inconsistent."},{label:"Verdict trace",value:"Chunk particle cannot be not chunky"}]};function A(s,a){return typeof s=="boolean"?s:a}function N(s){return{continuousUniverse:A(s?.continuousUniverse,$.continuousUniverse),infinitePrecision:A(s?.infinitePrecision,$.infinitePrecision),chunkParticles:A(s?.chunkParticles,$.chunkParticles)}}function D(s){return[s.continuousUniverse?"1":"0",s.infinitePrecision?"1":"0",s.chunkParticles?"1":"0"].join("")}function F(s){const a=s.continuousUniverse?"Continuous universe":"Discrete universe",t=s.infinitePrecision?"Infinite precision":"Finite precision",m=s.chunkParticles?"Chunk particles":"Point particles";return`${a} + ${t} + ${m}`}function re(s){return s.tone==="stable"?100:s.tone==="uncertain"?60:s.tone==="warning"?40:20}function oe({visualClass:s}){return s==="paradox-point"?e.jsxs("div",{className:"cube-wrapper",children:[e.jsxs("div",{className:"cube",children:[e.jsx("div",{className:"face front"}),e.jsx("div",{className:"face back"}),e.jsx("div",{className:"face right"}),e.jsx("div",{className:"face left"}),e.jsx("div",{className:"face top"}),e.jsx("div",{className:"face bottom"}),e.jsx("div",{className:"particle-point"})]}),e.jsxs("div",{className:"info-arrow",children:[e.jsx("div",{className:"arrow-line"}),e.jsx("div",{className:"arrow-head"}),e.jsx("span",{className:"infinite-symbol",children:"∞"})]})]}):s==="stable-chunk"?e.jsxs("div",{className:"digital-lattice",children:[e.jsx("div",{className:"digital-grid",children:Array.from({length:9},(a,t)=>e.jsx("span",{className:`digital-cell digital-cell-${t}${t===4?" digital-cell-core":""}`},t))}),e.jsx("div",{className:"digital-core",children:e.jsx("span",{className:"digital-core-dot"})}),e.jsx("div",{className:"digital-scan digital-scan-horizontal"}),e.jsx("div",{className:"digital-scan digital-scan-vertical"}),e.jsx("div",{className:"digital-aura"})]}):s==="paradox-chunk"?e.jsxs("div",{className:"chaos-wrapper",children:[e.jsxs("div",{className:"central-source",children:[e.jsx("div",{className:"face front"}),e.jsx("div",{className:"face back"}),e.jsx("div",{className:"face right"}),e.jsx("div",{className:"face left"}),e.jsx("div",{className:"face top"}),e.jsx("div",{className:"face bottom"})]}),Array.from({length:10},(a,t)=>e.jsxs("div",{className:`debris-cube d-${t}`,children:[e.jsx("div",{className:"face front"}),e.jsx("div",{className:"face back"}),e.jsx("div",{className:"face right"}),e.jsx("div",{className:"face left"}),e.jsx("div",{className:"face top"}),e.jsx("div",{className:"face bottom"})]},t))]}):s==="non-standard-particle-point"?e.jsxs("div",{className:"signal-orbit signal-orbit-point",children:[e.jsx("div",{className:"signal-ring"}),e.jsx("div",{className:"signal-dot"}),e.jsx("div",{className:"signal-axis"})]}):s==="non-standard-particle-chunk"?e.jsxs("div",{className:"signal-orbit signal-orbit-chunk",children:[e.jsx("div",{className:"signal-ring"}),e.jsx("div",{className:"signal-cube"}),e.jsx("div",{className:"signal-axis"})]}):s==="standard-particle-point"?e.jsxs("div",{className:"physics-observatory",children:[e.jsx("div",{className:"physics-grid"}),e.jsx("div",{className:"physics-halo physics-halo-outer"}),e.jsx("div",{className:"physics-halo physics-halo-inner"}),e.jsx("div",{className:"physics-core-shell",children:e.jsx("div",{className:"physics-core-point"})}),e.jsx("span",{className:"physics-orbit physics-orbit-1"}),e.jsx("span",{className:"physics-orbit physics-orbit-2"}),e.jsx("span",{className:"physics-orbit physics-orbit-3"})]}):e.jsxs("div",{className:"physics-observatory physics-observatory-chunk",children:[e.jsx("div",{className:"physics-grid"}),e.jsx("div",{className:"physics-halo physics-halo-outer"}),e.jsx("div",{className:"physics-halo physics-halo-inner"}),e.jsx("div",{className:"physics-core-shell physics-core-shell-chunk",children:e.jsx("div",{className:"physics-core-point physics-core-chunk"})}),e.jsx("span",{className:"physics-orbit physics-orbit-1"}),e.jsx("span",{className:"physics-orbit physics-orbit-2"}),e.jsx("span",{className:"physics-orbit physics-orbit-3"}),e.jsx("div",{className:"physics-question-ring",children:e.jsx("span",{className:"physics-question",children:"?"})})]})}function de({config:s,onComplete:a,onProgress:t,theme:m,className:K,host:r}){const[f,I]=n.useState(()=>N(s.params)),[v,B]=n.useState("splash"),[G,C]=n.useState(""),[g,Q]=n.useState(()=>_[D(N(s.params))]),[l,W]=n.useState(()=>D(N(s.params))),[V,X]=n.useState(()=>F(N(s.params))),[J,O]=n.useState([]),[Y,P]=n.useState(""),w=n.useRef([]),b=n.useRef(r),q=n.useRef(a),z=n.useRef(t);n.useEffect(()=>{I(N(s.params))},[s.params]),n.useEffect(()=>{b.current=r,q.current=a,z.current=t},[r,a,t]),n.useEffect(()=>{if(v!=="processing")return;const i=H[l]??[];let c=!1;O([]),P("");const o=(h,k)=>{if(c)return;if(h>=i.length){x(()=>{if(c)return;const u=_[l];j(b.current,d.computeDone,{state:l}),y("result",()=>{z.current?.(100),j(b.current,u.tone==="stable"?d.verdictStable:d.verdictAlert,{state:l,outcome:u.outcome}),S(b.current,"verdict-ready",{state:l,outcome:u.outcome,tone:u.tone}),q.current({success:!0,score:re(u),data:{assumptions:V,state:l,outcome:u.outcome,intermediate:u.intermediate,description:u.description,processingTrace:H[l].map(L=>`${L.label}: ${L.value}`)}})})},520);return}const E=`${i[h].label}: ${i[h].value}`;if(k<=E.length){k===0&&j(b.current,d.computeStep,{state:l,lineIndex:h}),P(E.slice(0,k)),x(()=>o(h,k+1),24);return}O(u=>[...u,E]),P(""),h===i.length-1&&U(b.current,d.computeStep,{state:l,lineIndex:h}),x(()=>o(h+1,0),170)};return x(()=>o(0,0),180),()=>{c=!0,U(b.current,d.computeStep,{state:l})}},[V,l,v]),n.useEffect(()=>()=>{R()},[]);function R(){for(const i of w.current)window.clearTimeout(i);w.current=[]}function x(i,c){const o=window.setTimeout(i,c);w.current.push(o)}function y(i,c){R(),C("crt-collapse"),x(()=>{B(i),c?.(),C("crt-expand"),x(()=>{C("")},110)},110)}function T(i,c){I(o=>({...o,[i]:c})),j(r,d.click,{control:i,value:c})}function p(i){j(r,d.hover,{target:i})}function Z(){S(r,"session-started",{component:s.name,id:s.id}),t?.(10),y("controls")}function ee(){const i=D(f),c=_[i],o=F(f);W(i),X(o),Q(c),j(r,d.computeStart,{state:i}),S(r,"processing-started",{state:i,assumptions:o}),t?.(45),y("processing",()=>{t?.(70)})}function se(){R(),U(r,d.computeStep,{state:l}),S(r,"returned-to-controls",{state:l}),t?.(20),y("controls")}F(f);const ie=v==="result"&&g.visualClass.includes("paradox"),te={"--gc-primary":m?.primary||"#248a00","--gc-accent":m?.accent||"#1c6a00","--gc-bg":m?.bg||"#ffffff","--gc-bg-secondary":m?.bgSecondary||"#616161","--gc-text":m?.text||"#0f172a","--gc-text-muted":m?.textMuted||"#eaffd8","--gc-border":m?.border||"rgba(255,255,255,0.12)","--assumption-frame-image":`url(${ae})`};return e.jsx("div",{className:`gc-assumption-toggle ${K||""}`.trim(),style:te,children:e.jsx("div",{className:"component-shell",children:e.jsx("div",{className:"main-wrapper",children:e.jsx("div",{className:`crt-screen ${ie?"paradox-errors":""}`,children:e.jsxs("div",{className:`slides-wrapper ${G}`,children:[v==="splash"&&e.jsx("div",{className:"slide slide-splash",children:e.jsxs("div",{className:"splash-content",children:[e.jsx("h1",{children:"Foundational Assumption Recombinator Tool"}),e.jsx("h2",{children:"v1.0"}),e.jsx("button",{type:"button",className:"action-button",onClick:Z,onMouseEnter:()=>p("initialize"),onFocus:()=>p("initialize"),children:"Initialize"})]})}),v==="controls"&&e.jsxs("div",{className:"slide slide-controls",children:[e.jsx("div",{className:"widget-header",children:e.jsx("h1",{children:"Settings"})}),e.jsxs("div",{className:"switch-group",children:[e.jsxs("div",{className:"switch-item",children:[e.jsx("input",{id:`${s.id}-toggle-universe`,className:"switch-input",type:"checkbox",checked:f.continuousUniverse,onChange:i=>T("continuousUniverse",i.target.checked)}),e.jsxs("label",{className:"toggle-track",htmlFor:`${s.id}-toggle-universe`,onMouseEnter:()=>p("toggle-universe"),children:[e.jsx("span",{className:"option-left",children:"Discrete Universe"}),e.jsx("span",{className:"option-right",children:"Continuous Universe"})]})]}),e.jsxs("div",{className:"switch-item",children:[e.jsx("input",{id:`${s.id}-toggle-precision`,className:"switch-input",type:"checkbox",checked:f.infinitePrecision,onChange:i=>T("infinitePrecision",i.target.checked)}),e.jsxs("label",{className:"toggle-track",htmlFor:`${s.id}-toggle-precision`,onMouseEnter:()=>p("toggle-precision"),children:[e.jsx("span",{className:"option-left",children:"Finite Precision"}),e.jsx("span",{className:"option-right",children:"Infinite Precision"})]})]}),e.jsxs("div",{className:"switch-item",children:[e.jsx("input",{id:`${s.id}-toggle-particles`,className:"switch-input",type:"checkbox",checked:f.chunkParticles,onChange:i=>T("chunkParticles",i.target.checked)}),e.jsxs("label",{className:"toggle-track",htmlFor:`${s.id}-toggle-particles`,onMouseEnter:()=>p("toggle-particles"),children:[e.jsx("span",{className:"option-left",children:"Point Particles"}),e.jsx("span",{className:"option-right",children:"Chunk Particles"})]})]})]}),e.jsx("button",{type:"button",className:"action-button",onClick:ee,onMouseEnter:()=>p("simulate"),onFocus:()=>p("simulate"),children:"Simulate"})]}),v==="result"&&e.jsxs("div",{className:"slide slide-result",children:[e.jsxs("div",{className:"bottom-container",children:[e.jsx("div",{className:"visualization-container",children:e.jsx("div",{className:`art-canvas ${g.visualClass}`,children:e.jsx(oe,{visualClass:g.visualClass})})}),e.jsxs("div",{className:"result-container",children:[e.jsx("div",{className:"summary-box",children:e.jsx("span",{className:`result-value result-${g.tone}`,children:g.outcome})}),e.jsx("div",{className:"summary-box",children:e.jsx("div",{className:"intermediate-result",children:g.intermediate})}),e.jsx("span",{className:"result-description",children:g.description})]})]}),e.jsx("button",{type:"button",className:"action-button secondary",onClick:se,onMouseEnter:()=>p("back"),onFocus:()=>p("back"),children:"Back"})]}),v==="processing"&&e.jsx("div",{className:"slide slide-processing",children:e.jsxs("div",{className:"processing-shell",children:[e.jsxs("div",{className:"processing-header",children:[e.jsx("span",{className:"processing-led"}),e.jsx("h2",{children:"Computing Assumption Matrix"})]}),e.jsx("div",{className:"processing-subtitle",children:"Applying Constructor Theoretic Constraints"}),e.jsxs("div",{className:"processing-terminal",children:[J.map((i,c)=>e.jsxs("div",{className:"processing-line",children:[e.jsx("span",{className:"processing-prompt",children:">"}),e.jsx("span",{children:i})]},`${i}-${c}`)),e.jsxs("div",{className:"processing-line processing-line-active",children:[e.jsx("span",{className:"processing-prompt",children:">"}),e.jsx("span",{children:Y}),e.jsx("span",{className:"processing-cursor"})]})]})]})})]})})})})})}const me={name:"assumption-toggle",displayName:"Assumption Toggle",version:"1.0.0",paramSchema:{continuousUniverse:{type:"boolean",label:"Continuous Universe",description:"Toggle between a discrete and continuous universe model.",default:!0},infinitePrecision:{type:"boolean",label:"Infinite Precision",description:"Toggle between finite and infinite precision.",default:!0},chunkParticles:{type:"boolean",label:"Chunk Particles",description:"Toggle between point particles and chunk particles.",default:!1}},defaultParams:{continuousUniverse:!0,infinitePrecision:!0,chunkParticles:!1}};export{de as default,me as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-B7Erow2S.css b/dist/vendor/glitch/glitch_gallery/assets/index-B7Erow2S.css new file mode 100644 index 0000000..752cc3c --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-B7Erow2S.css @@ -0,0 +1 @@ +._container_12iml_1{background:var(--color-bg, #0a0a0f);color:var(--color-text, #e8e8ec);padding:var(--spacing-md, 2rem);border-radius:var(--border-radius, 12px);box-sizing:border-box;font-family:var(--font-main, "Iceland", -apple-system, BlinkMacSystemFont, sans-serif);line-height:1.5;min-height:400px;display:flex;flex-direction:column}._container_12iml_1 *,._container_12iml_1 *:before,._container_12iml_1 *:after{box-sizing:inherit}._introScreen_12iml_19{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1;text-align:center}._introTitle_12iml_27{font-family:var(--font-display, "Russo One", sans-serif);font-size:var(--small-font, 1.875rem);color:var(--color-accent, #22d3ee)}._introSubtitle_12iml_33{font-size:1rem;color:var(--color-text-muted, #9999a8);margin-top:calc(var(--spacing-sm, 1rem) * -1)}._carouselDots_12iml_39{display:flex;gap:.5rem;justify-content:center}._carouselDot_12iml_39{width:8px;height:8px;border-radius:50%;background:var(--color-border, #2a2a3a);transition:var(--transition, .2s ease)}._carouselDot_12iml_39._active_12iml_53{background:var(--color-accent, #22d3ee)}._continueButton_12iml_57{background:var(--color-primary, #6366f1);color:#fff;border:none;padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;font-family:var(--font-display, "Russo One", sans-serif);cursor:pointer;transition:var(--transition, .2s ease);margin-top:auto}._continueButton_12iml_57:hover{background:var(--color-primary-hover, #818cf8)}._quizScreen_12iml_75{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1}._intro_12iml_19{font-family:var(--font-display, "Russo One", sans-serif);font-size:var(--small-font, 1.875rem);color:var(--color-accent, #22d3ee);text-align:center;margin-bottom:var(--spacing-sm, 1rem)}._progress_12iml_90{display:flex;gap:.5rem;justify-content:center;margin-bottom:var(--spacing-sm, 1rem)}._progressDot_12iml_97{width:12px;height:12px;border-radius:50%;background:var(--color-border, #2a2a3a);transition:var(--transition, .2s ease)}._progressDot_12iml_97._active_12iml_53{background:var(--color-primary, #6366f1)}._progressDot_12iml_97._completed_12iml_109{background:var(--color-accent, #22d3ee)}._questionContainer_12iml_113{flex:1;display:flex;flex-direction:column;gap:var(--spacing-sm, 1rem)}._questionText_12iml_120{font-size:1.25rem;color:var(--color-text, #e8e8ec);font-weight:600;text-align:center}._questionContext_12iml_127{font-size:1rem;color:var(--color-text-muted, #9999a8);text-align:center;margin-bottom:var(--spacing-sm, 1rem)}._options_12iml_134{display:flex;flex-direction:column;gap:var(--spacing-xs, .5rem)}._option_12iml_134{background:var(--color-bg-secondary, #12121a);border:1px solid var(--color-border, #2a2a3a);color:var(--color-text, #e8e8ec);padding:var(--spacing-sm, 1rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;cursor:pointer;transition:var(--transition, .2s ease);text-align:left;font-family:inherit}._option_12iml_134:hover{border-color:var(--color-primary, #6366f1);background:#6366f11a}._option_12iml_134._selected_12iml_158{border-color:var(--color-accent, #22d3ee);background:#22d3ee1a}._recommendationScreen_12iml_164{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1}._diagnosticComplete_12iml_171{font-family:var(--font-display, "Russo One", sans-serif);font-size:1.25rem;color:var(--color-accent, #22d3ee);text-align:center}._summaryBox_12iml_178{background:var(--color-bg-secondary, #12121a);border:1px solid var(--color-border, #2a2a3a);border-radius:var(--border-radius, 12px);padding:var(--spacing-md, 2rem);text-align:center}._summaryLabel_12iml_186{font-size:.875rem;color:var(--color-text-muted, #9999a8);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--spacing-xs, .5rem)}._summaryText_12iml_194{font-size:1.125rem;color:var(--color-text, #e8e8ec);font-style:italic;white-space:pre-line;line-height:1.6}._recommendedLabel_12iml_202{font-size:.875rem;color:var(--color-text-muted, #9999a8);text-transform:uppercase;letter-spacing:.1em;text-align:center}._roleCards_12iml_210{display:flex;gap:var(--spacing-sm, 1rem);overflow-x:auto;padding-bottom:var(--spacing-xs, .5rem);scroll-snap-type:x mandatory}._roleCard_12iml_210{flex:0 0 280px;background:var(--color-bg-secondary, #12121a);border:2px solid var(--color-border, #2a2a3a);border-radius:var(--border-radius, 12px);padding:var(--spacing-sm, 1rem);transition:var(--transition, .2s ease);scroll-snap-align:center}._roleCard_12iml_210._recommended_12iml_202{border-color:var(--color-accent, #22d3ee);box-shadow:0 0 20px #22d3ee33}._roleCard_12iml_210._recommended_12iml_202:before{content:"RECOMMENDED";display:block;font-size:.625rem;color:var(--color-accent, #22d3ee);letter-spacing:.15em;margin-bottom:var(--spacing-xs, .5rem)}._roleTitle_12iml_242{font-family:var(--font-display, "Russo One", sans-serif);font-size:1.25rem;color:var(--color-primary, #6366f1);margin-bottom:var(--spacing-xs, .5rem)}._roleDescription_12iml_249{font-size:.875rem;color:var(--color-text-muted, #9999a8);line-height:1.5}._roleStrengths_12iml_255{display:flex;flex-direction:column;gap:.25rem;margin-top:var(--spacing-xs, .5rem)}._strengthTag_12iml_262{font-size:.75rem;color:var(--color-accent, #22d3ee)}._roleCard_12iml_210._selectable_12iml_267{cursor:pointer}._roleCard_12iml_210._selectable_12iml_267:hover{border-color:var(--color-primary, #6366f1);transform:translateY(-2px)}._resultScreen_12iml_277{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1;text-align:center}._assignedLabel_12iml_285{font-size:.875rem;color:var(--color-text-muted, #9999a8);text-transform:uppercase;letter-spacing:.1em}._resultCard_12iml_292{background:var(--color-bg-secondary, #12121a);border:2px solid var(--color-accent, #22d3ee);border-radius:var(--border-radius, 12px);padding:var(--spacing-md, 2rem);box-shadow:0 0 20px #22d3ee33;text-align:left}._resultCard_12iml_292 ._roleTitle_12iml_242{text-align:center}._resultCard_12iml_292 ._roleDescription_12iml_249{text-align:center;margin-bottom:var(--spacing-sm, 1rem)}._resultCard_12iml_292 ._roleStrengths_12iml_255{align-items:center}._resultButtons_12iml_314{display:flex;flex-direction:column;gap:var(--spacing-xs, .5rem);margin-top:auto}._acceptButton_12iml_321{background:var(--color-accent, #22d3ee);color:var(--color-bg, #0a0a0f);border:none;padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;font-family:var(--font-display, "Russo One", sans-serif);cursor:pointer;transition:var(--transition, .2s ease);font-weight:600}._acceptButton_12iml_321:hover{background:#5ce1f0}._decideButton_12iml_338{background:transparent;color:var(--color-text-muted, #9999a8);border:1px solid var(--color-border, #2a2a3a);padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:.875rem;font-family:inherit;cursor:pointer;transition:var(--transition, .2s ease)}._decideButton_12iml_338:hover{border-color:var(--color-text-muted, #9999a8);color:var(--color-text, #e8e8ec)}._selectionScreen_12iml_356{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1}._selectionTitle_12iml_363{font-family:var(--font-display, "Russo One", sans-serif);font-size:1.25rem;color:var(--color-accent, #22d3ee);text-align:center}._welcomeScreen_12iml_371{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1;text-align:center}._welcomeTitle_12iml_379{font-family:var(--font-display, "Russo One", sans-serif);font-size:var(--small-font, 1.875rem);color:var(--color-primary, #6366f1)}._welcomeRole_12iml_385{color:var(--color-accent, #22d3ee)}._welcomeDescription_12iml_389{font-size:1.125rem;color:var(--color-text, #e8e8ec);max-width:500px;margin:0 auto;line-height:1.6}._statsList_12iml_397{display:flex;flex-direction:column;gap:var(--spacing-sm, 1rem);text-align:left;max-width:400px;margin:0 auto}._statItem_12iml_406{background:var(--color-bg-secondary, #12121a);border-radius:var(--border-radius-sm, 8px);padding:var(--spacing-sm, 1rem)}._statLabel_12iml_412{font-size:.75rem;color:var(--color-accent, #22d3ee);text-transform:uppercase;letter-spacing:.1em;margin-bottom:.25rem}._statValue_12iml_420{font-size:.875rem;color:var(--color-text, #e8e8ec)}._strengthsList_12iml_425{list-style:none;padding:0;margin:0}._strengthsList_12iml_425 li{padding:.25rem 0}._strengthsList_12iml_425 li:before{content:"+ ";color:var(--color-accent, #22d3ee)}._confirmButton_12iml_440{background:var(--color-primary, #6366f1);color:#fff;border:none;padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;font-family:var(--font-display, "Russo One", sans-serif);cursor:pointer;transition:var(--transition, .2s ease);margin-top:auto}._confirmButton_12iml_440:hover{background:var(--color-primary-hover, #818cf8)}@media(max-width:768px){._introScreen_12iml_19 ._roleCards_12iml_210,._selectionScreen_12iml_356 ._roleCards_12iml_210{flex-direction:row}._introScreen_12iml_19 ._roleCard_12iml_210,._selectionScreen_12iml_356 ._roleCard_12iml_210{flex:0 0 260px}} diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-BOUPxVBe.js b/dist/vendor/glitch/glitch_gallery/assets/index-BOUPxVBe.js new file mode 100644 index 0000000..fc5591c --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-BOUPxVBe.js @@ -0,0 +1 @@ +import{r as n,j as e}from"./index-CEeZxcxj.js";const H="_container_166qm_3",U="_panel_166qm_21",Y="_imageFrame_166qm_38",K="_sceneImage_166qm_63",O="_sceneFallback_166qm_70",P="_sceneFallbackGlow_166qm_102",V="_sceneFallbackHud_166qm_113",$="_sceneFallbackBadge_166qm_122",G="_sceneFallbackSignal_166qm_123",W="_sceneFallbackCopy_166qm_138",J="_sceneFallbackKicker_166qm_146",z="_sceneFallbackTitle_166qm_155",Q="_sceneFallbackDetail_166qm_164",X="_sceneFallbackBars_166qm_171",Z="_dialogueBox_166qm_196",ee="_dialogueHeader_166qm_217",ae="_title_166qm_224",se="_loopBadge_166qm_235",te="_description_166qm_253",ne="_actionButton_166qm_261",ce="_choices_166qm_296",oe="_choiceButton_166qm_303",ie="_choiceKey_166qm_337",le="_choiceContent_166qm_366",re="_choiceTitle_166qm_373",de="_choiceDesc_166qm_380",me="_rejection_166qm_387",he="_rejectionBadge_166qm_395",pe="_quote_166qm_416",ge="_explanation_166qm_426",ue="_insightButton_166qm_435",xe="_insight_166qm_435",_e="_insightTitle_166qm_465",je="_paradoxDiagram_166qm_474",be="_paradoxNode_166qm_486",Ne="_paradoxArrow_166qm_495",ke="_insightText_166qm_513",ye="_completeButton_166qm_530",Be="_successBox_166qm_566",ve="_successTitle_166qm_570",Ce="_stats_166qm_581",qe="_scoreDisplay_166qm_587",Te="_scoreLabel_166qm_597",Fe="_scoreValue_166qm_605",a={container:H,panel:U,imageFrame:Y,sceneImage:K,sceneFallback:O,sceneFallbackGlow:P,sceneFallbackHud:V,sceneFallbackBadge:$,sceneFallbackSignal:G,sceneFallbackCopy:W,sceneFallbackKicker:J,sceneFallbackTitle:z,sceneFallbackDetail:Q,sceneFallbackBars:X,dialogueBox:Z,dialogueHeader:ee,title:ae,loopBadge:se,description:te,actionButton:ne,choices:ce,choiceButton:oe,choiceKey:ie,choiceContent:le,choiceTitle:re,choiceDesc:de,rejection:me,rejectionBadge:he,quote:pe,explanation:ge,insightButton:ue,insight:xe,insightTitle:_e,paradoxDiagram:je,paradoxNode:be,paradoxArrow:Ne,insightText:ke,completeButton:ye,successBox:Be,successTitle:ve,stats:Ce,scoreDisplay:qe,scoreLabel:Te,scoreValue:Fe},f="/glitch/migration-paradox",fe=2,Ae=1,u={presenting:{badge:"Migration Briefing",title:"Stakeholders Await Your Plan",copy:"Frame the migration as progress without triggering fear.",detail:"You need a strategy that creates momentum before the paradox closes in.",tone:"primary"},"rejection-value":{badge:"Stakeholder Response",title:"Too Much Change",copy:"Your pitch sounded valuable, but it also sounded dangerous.",detail:"They want new capability only if nothing important feels different.",tone:"danger"},"rejection-same":{badge:"Stakeholder Response",title:"Too Little Value",copy:"Your pitch sounded safe, but it also sounded pointless.",detail:"They want risk contained, but they still expect the migration to matter.",tone:"danger"},awareness:{badge:"Pattern Detected",title:"Expose The Contradiction",copy:"Show how value and continuity need different phases, not one impossible promise.",detail:"Explore, preserve, and then innovate.",tone:"accent"},complete:{badge:"Challenge Complete",title:"Paradox Resolved",copy:"You reframed the migration into a sequence stakeholders can accept.",detail:"Value and stability can coexist when delivery is phased.",tone:"success"}};function we(c){if(typeof c!="string")return f;const o=c.trim();return o?o.replace(/\/+$/,""):f}function b(c,o){return`${c}/${o}`}function A(c,o){const s=c==="A"?fe:Ae,i=Math.floor(Math.random()*s)+1;return b(o,`rejection${c}_${i}.png`)}function x({src:c,alt:o,fallback:s,onImageError:i}){return e.jsx("div",{className:a.imageFrame,children:c?e.jsx("img",{src:c,alt:o,className:a.sceneImage,onError:()=>i(c)}):e.jsxs("div",{className:a.sceneFallback,"data-tone":s.tone,role:"img","aria-label":o,children:[e.jsx("div",{className:a.sceneFallbackGlow}),e.jsxs("div",{className:a.sceneFallbackHud,children:[e.jsx("span",{className:a.sceneFallbackBadge,children:s.badge}),e.jsx("span",{className:a.sceneFallbackSignal,children:"GLITCH SIM"})]}),e.jsxs("div",{className:a.sceneFallbackCopy,children:[e.jsx("p",{className:a.sceneFallbackKicker,children:s.copy}),e.jsx("h3",{className:a.sceneFallbackTitle,children:s.title}),e.jsx("p",{className:a.sceneFallbackDetail,children:s.detail})]}),e.jsxs("div",{className:a.sceneFallbackBars,"aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]})]})})}function Se({config:c,onComplete:o,onProgress:s,theme:i,className:w}){const _=c?.params??{},[m,h]=n.useState("intro"),[l,v]=n.useState({loopCount:0,valueAttempts:0,sameAttempts:0}),[N,E]=n.useState(!1),[C,q]=n.useState(""),[T,S]=n.useState({}),r=n.useMemo(()=>we(_.assetBaseUrl??_.imageBaseUrl),[_.assetBaseUrl,_.imageBaseUrl]),j=n.useMemo(()=>({presenting:b(r,"presenting.png"),insight:b(r,"insight.png"),complete:b(r,"complete.png")}),[r]),I={"--gc-primary":i?.primary||"#6366f1","--gc-accent":i?.accent||"#22d3ee","--gc-bg":i?.bg||"#0a0a0f","--gc-bg-secondary":i?.bgSecondary||"#12121a","--gc-text":i?.text||"#e8e8ec","--gc-text-muted":i?.textMuted||"#9999a8","--gc-border":i?.border||"#2a2a3a"},d=l.valueAttempts+l.sameAttempts,k=d>=4,p=n.useCallback(t=>T[t]?void 0:t,[T]),g=n.useCallback(t=>{S(B=>B[t]?B:{...B,[t]:!0})},[]),D=n.useCallback(()=>{h("choice"),s?.(10)},[s]),M=n.useCallback(()=>{q(A("A",r)),v(t=>({...t,valueAttempts:t.valueAttempts+1,loopCount:t.loopCount+(t.sameAttempts>t.valueAttempts?.5:0)})),h("rejection-value"),s?.(Math.min(30+d*10,80))},[r,d,s]),L=n.useCallback(()=>{q(A("B",r)),v(t=>({...t,sameAttempts:t.sameAttempts+1,loopCount:t.loopCount+(t.valueAttempts>t.sameAttempts?.5:0)})),h("rejection-same"),s?.(Math.min(30+d*10,80))},[r,d,s]),F=n.useCallback(()=>{h("choice")},[]),y=n.useCallback(()=>{E(!0),h("awareness"),s?.(90)},[s]),R=n.useCallback(()=>{h("complete"),s?.(100),o({success:!0,score:100,data:{loopsBeforeInsight:Math.floor(l.loopCount),totalAttempts:d,valueAttempts:l.valueAttempts,sameAttempts:l.sameAttempts},rewards:{paradoxes:[{id:"migration-paradox",name:"The Migration Paradox",description:"Stakeholders simultaneously demand that a migration adds value AND changes nothing.",rarity:"uncommon"}]}})},[o,s,l,d]);return e.jsxs("div",{className:`${a.container} ${w||""}`,style:I,children:[m==="intro"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.presenting),alt:"Presenting to stakeholders",fallback:u.presenting,onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsx("h2",{className:a.title,children:"The Migration Paradox"}),e.jsx("p",{className:a.description,children:"You've been tasked with migrating the core system. Your stakeholders are waiting for your strategy."}),e.jsx("button",{className:a.actionButton,onClick:D,children:"▶ Present Your Strategy"})]})]}),m==="choice"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.presenting),alt:"Presenting options",fallback:u.presenting,onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.dialogueHeader,children:[e.jsx("h2",{className:a.title,children:"Choose Your Approach"}),l.loopCount>0&&e.jsxs("span",{className:a.loopBadge,children:["LOOP ",Math.floor(l.loopCount)+1]})]}),e.jsx("p",{className:a.description,children:"How will you pitch the migration project?"}),e.jsxs("div",{className:a.choices,children:[e.jsxs("button",{className:a.choiceButton,onClick:M,children:[e.jsx("span",{className:a.choiceKey,children:"A"}),e.jsxs("span",{className:a.choiceContent,children:[e.jsx("span",{className:a.choiceTitle,children:"Emphasize Change"}),e.jsx("span",{className:a.choiceDesc,children:'"The new system will add value and enable new capabilities"'})]})]}),e.jsxs("button",{className:a.choiceButton,onClick:L,children:[e.jsx("span",{className:a.choiceKey,children:"B"}),e.jsxs("span",{className:a.choiceContent,children:[e.jsx("span",{className:a.choiceTitle,children:"Emphasize No Change"}),e.jsx("span",{className:a.choiceDesc,children:'"Everything will work exactly the same as before"'})]})]})]}),k&&!N&&e.jsx("button",{className:a.insightButton,onClick:y,children:"✦ Wait... I see the pattern"})]})]}),m==="rejection-value"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(C),alt:"Stakeholder rejection",fallback:u["rejection-value"],onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.rejection,children:[e.jsx("span",{className:a.rejectionBadge,children:"✗ REJECTED"}),e.jsx("p",{className:a.quote,children:'"Are you insane? This will break everything!"'}),e.jsx("p",{className:a.explanation,children:`"If you want to change the core system, you need to make absolutely sure that everything works exactly the same. We can't risk any disruption."`})]}),e.jsx("button",{className:a.actionButton,onClick:F,children:"▶ Try a Different Approach"}),k&&!N&&e.jsx("button",{className:a.insightButton,onClick:y,children:"✦ Wait... I see the pattern"})]})]}),m==="rejection-same"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(C),alt:"Stakeholder rejection",fallback:u["rejection-same"],onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.rejection,children:[e.jsx("span",{className:a.rejectionBadge,children:"✗ REJECTED"}),e.jsx("p",{className:a.quote,children:'"This is insane. Why would we do this?"'}),e.jsx("p",{className:a.explanation,children:`"If everything is going to stay exactly the same, why would we spend all this time and money replacing the core system? What's the point?"`})]}),e.jsx("button",{className:a.actionButton,onClick:F,children:"▶ Try a Different Approach"}),k&&!N&&e.jsx("button",{className:a.insightButton,onClick:y,children:"✦ Wait... I see the pattern"})]})]}),m==="awareness"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.insight),alt:"Insight moment",fallback:u.awareness,onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.insight,children:[e.jsx("h2",{className:a.insightTitle,children:"★ The Paradox Revealed ★"}),e.jsxs("p",{className:a.insightText,children:["You've discovered the ",e.jsx("strong",{children:"Migration Paradox"}),": stakeholders demand that you change things - to give value. But also that nothing changes, to contain risk."]}),e.jsxs("p",{className:a.insightText,children:["The solution is ",e.jsx("strong",{children:"phased delivery"}),". First, prove business case. Then prove you can preserve existing functionality. Then introduce new capabilities."]}),e.jsxs("div",{className:a.paradoxDiagram,children:[e.jsx("div",{className:a.paradoxNode,children:'"Explore"'}),e.jsx("div",{className:a.paradoxArrow,children:"→"}),e.jsx("div",{className:a.paradoxNode,children:'"Preserve"'}),e.jsx("div",{className:a.paradoxArrow,children:"→"}),e.jsx("div",{className:a.paradoxNode,children:'"Innovate"'}),e.jsx("div",{className:a.paradoxArrow,children:"→"})]})]}),e.jsx("button",{className:a.completeButton,onClick:R,children:"▶ Complete Challenge"})]})]}),m==="complete"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.complete),alt:"Challenge complete",fallback:u.complete,onImageError:g}),e.jsx("div",{className:a.dialogueBox,children:e.jsxs("div",{className:a.successBox,children:[e.jsx("h2",{className:a.successTitle,children:"★ CHALLENGE COMPLETE ★"}),e.jsxs("p",{className:a.stats,children:["You experienced ",Math.floor(l.loopCount)," loop(s) before seeing the pattern."]}),e.jsxs("div",{className:a.scoreDisplay,children:[e.jsx("span",{className:a.scoreLabel,children:"SCORE"}),e.jsx("span",{className:a.scoreValue,children:"100"})]})]})})]})]})}const Ie={name:"migration-paradox",displayName:"The Migration Paradox",version:"1.0.0",paramSchema:{assetBaseUrl:{type:"string",label:"Asset Base URL",description:"Shared CDN or public folder containing presenting.png, insight.png, complete.png, rejectionA_1.png, rejectionA_2.png, and rejectionB_1.png.",default:"/glitch/migration-paradox"}},defaultParams:{assetBaseUrl:"/glitch/migration-paradox"}};export{Se as default,Ie as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-Bdi24PkQ.css b/dist/vendor/glitch/glitch_gallery/assets/index-Bdi24PkQ.css new file mode 100644 index 0000000..38eeab7 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-Bdi24PkQ.css @@ -0,0 +1 @@ +:root{--ccd-bg: #04010b;--ccd-panel: rgba(11, 10, 22, .86);--ccd-panel-edge: rgba(168, 160, 255, .22);--ccd-text: #f4efff;--ccd-muted: #aaa1c8;--ccd-grid-line: rgba(255, 255, 255, .08);--ccd-card-bg: rgba(10, 11, 20, .74);--ccd-card-edge: rgba(255, 255, 255, .08);--ccd-accent-soft: rgba(255, 113, 74, .12);--ccd-accent-cool: rgba(125, 100, 255, .14)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 18% 18%,rgba(255,100,72,.18),transparent 20rem),radial-gradient(circle at 82% 24%,rgba(111,90,255,.22),transparent 26rem),radial-gradient(circle at 50% 100%,rgba(54,20,92,.4),transparent 28rem),linear-gradient(180deg,#06020f,#030108 55%,#020106);color:var(--ccd-text);font-family:Space Grotesk,sans-serif}button,input,select,textarea{font:inherit}.ccd-shell{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.ccd-panel{width:min(94vw,64rem);display:grid;gap:1.4rem;padding:clamp(1.2rem,3vw,2rem);border-radius:1.8rem}.ccd-panel-wide-scene{width:min(97vw,84rem)}.ccd-topbar{padding:.8rem 1rem;display:grid;gap:1rem}.ccd-toolbar-row{display:flex;justify-content:flex-end}.ccd-pipeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.ccd-pipeline-step{display:flex;font-size:small;align-items:center;gap:.65rem;min-height:1.25rem;padding:.4rem;border:1px solid rgba(255,255,255,.08);border-radius:2rem;color:#cfc6ea;background:#ffffff08;transition:border-color .14s ease,background .14s ease,box-shadow .14s ease,transform .14s ease}.ccd-pipeline-step.is-active{border-color:#ff795652;color:#f3edff;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1a;transform:translateY(-1px)}.ccd-pipeline-index{display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;flex:0 0 auto;border-radius:999px;border:1px solid rgba(255,255,255,.12);color:var(--ccd-muted);background:#ffffff0a;font-family:Russo One,sans-serif;font-size:.78rem}.ccd-pipeline-step.is-active .ccd-pipeline-index{border-color:#ff795642;color:#fff4ef;background:#ff714a24}.ccd-copy{display:grid;gap:.65rem}.ccd-kicker,.ccd-stat-label{margin:0;color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.22em;text-transform:uppercase}.emojilarge{font-size:2.8rem;line-height:1}.ccd-copy h1,.ccd-summary-card strong,.ccd-stat strong,.ccd-chart-head strong,.ccd-band-meta strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-copy h1{margin:0;font-size:clamp(1.9rem,3vw,3rem);line-height:.96;letter-spacing:-.03em}.ccd-description{margin:0;max-width:48rem;color:#c8c0df;line-height:1.55}.ccd-chooser-button,.ccd-modal-close{padding:.8rem 1rem;border:1px solid rgba(255,121,86,.28);border-radius:.9rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.88rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-chooser-button:hover,.ccd-modal-close:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-modal-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-start;justify-content:center;padding:1.5rem 1rem 1rem;background:#03040abd;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow-y:auto}.ccd-modal{width:min(92vw,62rem);max-height:min(90vh,52rem);overflow:auto;display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.3rem;background:linear-gradient(180deg,#140e28eb,#0a0813f5),#0b0a16f5;box-shadow:0 1.4rem 3rem #0000006b}.ccd-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.ccd-modal-header h2{margin:0;font-family:Russo One,sans-serif;font-size:1.3rem;font-weight:400}.ccd-selector{display:grid;gap:.95rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:radial-gradient(circle at top center,rgba(255,113,74,.08),transparent 40%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#090a15e0}.ccd-selector-root{display:grid;justify-items:center;gap:.35rem;text-align:center}.ccd-selector-root strong,.ccd-selector-link strong,.ccd-selector-axis strong,.ccd-selector-leaf strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-selector-root strong{font-size:1.25rem}.ccd-selector-root p{margin:0;max-width:42rem;color:#d8d0f8;line-height:1.45}.ccd-selector-raw,.ccd-selector-results{display:grid;gap:.9rem}.ccd-selector-raw{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-selector-link,.ccd-selector-leaf{position:relative;display:grid;gap:.38rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;color:#e9e3ff;text-decoration:none;background:#ffffff08;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease,background .14s ease}.ccd-selector-link:hover,.ccd-selector-leaf:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-link.is-active,.ccd-selector-leaf.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1.2rem #8b6aff1f}.ccd-selector-link-label,.ccd-selector-leaf-dim{color:var(--ccd-muted);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.ccd-selector-link-label{margin-bottom:.15rem}.ccd-selector-section{display:grid;gap:.75rem}.ccd-selector-axis{position:relative;display:grid;justify-items:center;gap:.38rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08;text-align:center}.ccd-selector-axis p{margin:0;max-width:34rem;color:#d8d0f8;line-height:1.45}.ccd-selector-option{justify-self:start;padding:.82rem .7rem;border:1px solid rgba(255,255,255,.08);border-radius:.9rem;color:#e9e3ff;background:#ffffff08;cursor:pointer;transition:transform .14s ease,border-color .14s ease,background .14s ease,box-shadow .14s ease}.ccd-selector-option:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-option.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1f}.ccd-selector-results{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-current{display:grid;gap:.55rem;padding:.9rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-mini-diagram{display:flex;align-items:end;gap:.32rem;min-height:4rem;padding:.55rem;margin:.15rem 0 .25rem;border-radius:.85rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 24%),#04070feb}.ccd-mini-diagram-bar{flex:1 1 0;min-height:.5rem;border-radius:.45rem .45rem .18rem .18rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6);box-shadow:0 0 .65rem #ff9e6d29}.ccd-mini-diagram-bar.is-energy{background:linear-gradient(180deg,#78dfffeb,#8d7effe6);box-shadow:0 0 .8rem #8d7eff2e}.ccd-mini-diagram-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.28rem;align-items:stretch}.ccd-mini-diagram-grid-cell{display:block;min-height:.95rem;border-radius:.32rem;background:linear-gradient(180deg,#ffd35dbd,#8f7dffe0);box-shadow:0 0 .7rem #8d7eff24}.ccd-event-note{display:grid;gap:.45rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(90deg,#ff714a14,#7d64ff14),#ffffff08}.ccd-event-note p{margin:0;color:#d8d0f8;line-height:1.45}.ccd-page{display:grid;gap:1rem}.ccd-orbit-screen{display:grid;place-items:center;min-height:min(80vh,48rem);width:100%}.ccd-orbit-panel{width:min(100%,56rem);display:grid;gap:1rem;padding:clamp(1rem,2.8vw,1.8rem);border:1px solid rgba(255,255,255,.09);border-radius:1.6rem;background:radial-gradient(circle at 16% 18%,rgba(255,113,74,.08),transparent 18rem),radial-gradient(circle at 84% 20%,rgba(125,100,255,.14),transparent 22rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15eb}.ccd-orbit-copy{display:grid;gap:.4rem;justify-items:center;text-align:center}.ccd-orbit-copy h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(2rem,4vw,3.2rem);font-weight:400;line-height:.95;letter-spacing:-.03em}.ccd-orbit-copy p{margin:0;max-width:36rem;color:#d8d0f8;line-height:1.55}.ccd-orbit-stage{position:relative;width:100%;overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1.35rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.08),transparent 18rem),linear-gradient(180deg,#080a14f5,#02040bfa)}.ccd-orbit-svg{display:block;width:100%;height:auto;min-height:36rem}.ccd-orbit-track{fill:none;stroke:#ffffff24;stroke-width:2.5;stroke-dasharray:12 10}.ccd-orbit-earth-atmosphere{fill:#68cdff2e;filter:drop-shadow(0 0 1.6rem rgba(76,173,255,.18))}.ccd-orbit-continent{fill:#57e3968c}.ccd-orbit-night-shadow{fill:#050a1a7a}.ccd-orbit-telescope{filter:drop-shadow(0 0 1.2rem rgba(255,167,113,.24))}.ccd-orbit-actions{display:flex;justify-content:center}.ccd-intro-screen{display:grid;place-items:center;min-height:min(76vh,44rem)}.ccd-intro-panel{display:grid;gap:1.1rem;width:min(100%,48rem);padding:clamp(1rem,2.6vw,1.6rem);border:1px solid rgba(255,255,255,.09);border-radius:1.5rem;background:radial-gradient(circle at 18% 18%,rgba(255,113,74,.12),transparent 18rem),radial-gradient(circle at 82% 24%,rgba(125,100,255,.16),transparent 24rem),radial-gradient(circle at 50% 0%,rgba(255,255,255,.04),transparent 18rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15e6;justify-items:center}.ccd-intro-logo-frame{display:grid;place-items:center;width:clamp(6.5rem,16vw,8.75rem);aspect-ratio:1;padding:.45rem;border:1px solid rgba(255,255,255,.12);border-radius:50%;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.14),transparent 48%),linear-gradient(180deg,#ff714a1f,#7d64ff1a),#ffffff08;box-shadow:0 0 0 1px #ffffff08 inset,0 0 1.8rem #7d64ff29}.ccd-intro-logo{width:100%;height:100%;object-fit:cover;border-radius:50%;box-shadow:0 0 1.2rem #ff714a2e}.ccd-intro-brand{display:inline-grid;justify-items:center;gap:.18rem;text-align:center}.ccd-intro-brand-mark,.ccd-intro-brand-sub{font-family:Russo One,sans-serif;font-weight:400;line-height:1}.ccd-intro-brand-mark{color:#fff1e8;font-size:clamp(1.1rem,2.8vw,1.55rem);letter-spacing:.08em;text-transform:uppercase}.ccd-intro-brand-sub{color:#d7cff3;font-size:clamp(1.55rem,4.5vw,2.8rem);letter-spacing:-.04em}.ccd-intro-copy{display:grid;gap:.45rem;justify-items:center;text-align:center}.ccd-intro-copy h2,.ccd-intro-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-intro-copy h2{font-size:clamp(2rem,4vw,3.4rem);line-height:.95;letter-spacing:-.03em}.ccd-intro-copy p,.ccd-intro-card p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-intro-copy p{font-size:1rem;max-width:35rem}.ccd-intro-covers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;width:100%}.ccd-intro-card{display:grid;gap:.42rem;padding:.85rem;border:1px solid rgba(255,255,255,.08);border-radius:1.05rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 22%),#ffffff08;box-shadow:0 0 0 1px #ffffff05 inset}.ccd-intro-card-index{color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.72rem;letter-spacing:.18em}.ccd-intro-actions{display:flex;justify-content:flex-end}.ccd-energy-panel{display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#0a0c16e0}.ccd-energy-scale{display:grid;gap:.65rem}.ccd-energy-spectrum{position:relative;height:3.5rem;border-radius:999px;background:linear-gradient(90deg,#ff5752f2,#ff7e47f2 14%,#ffba52f2,#fff461f2,#7df15ff2,#61e6faf2,#6b7ffff2 84%,#c67afff2);box-shadow:inset 0 0 0 1px #ffffff14,0 0 1.8rem #7d64ff24}.ccd-energy-spectrum:after{content:"";position:absolute;top:50%;left:var(--ccd-spectrum-position, 50%);width:1.15rem;height:4.25rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:var(--ccd-spectrum-color, rgba(255, 255, 255, .9));box-shadow:0 0 1.1rem var(--ccd-spectrum-color, rgba(255, 255, 255, .44)),0 0 0 .2rem #05070de6;transform:translate(-50%,-50%)}.ccd-energy-slider-wrap{padding:0 .3rem}.ccd-energy-slider{width:100%;margin:0;appearance:none;background:transparent}.ccd-energy-slider::-webkit-slider-runnable-track{height:.4rem;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-webkit-slider-thumb{appearance:none;width:1rem;height:1rem;margin-top:-.3rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-slider::-moz-range-track{height:.4rem;border:0;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-moz-range-thumb{width:1rem;height:1rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-scale-labels{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#cfc6ea;font-size:.84rem}.ccd-energy-scale-labels-strong{font-family:Russo One,sans-serif;font-size:.78rem;letter-spacing:.04em}.ccd-energy-readout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.ccd-energy-notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-transition-screen{display:grid;place-items:center;min-height:min(68vh,34rem);padding:1rem 0;background:none}.ccd-transition-card{width:min(100%,30rem);display:grid;gap:.75rem;justify-items:center;padding:.4rem 0;text-align:center}.ccd-transition-card h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(1.7rem,4vw,2.35rem);font-weight:400;line-height:.98}.ccd-transition-card p{margin:0;max-width:24rem;color:#d8d0f8;line-height:1.5}.ccd-transition-actions{display:flex;justify-content:center;width:100%}.ccd-closing-screen{display:grid;place-items:center;min-height:min(72vh,40rem);padding:1rem 0}.ccd-closing-panel{width:min(100%,44rem);display:grid;gap:1rem;padding:.4rem 0}.ccd-closing-panel h2,.ccd-closing-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-closing-panel h2{font-size:clamp(1.8rem,4vw,2.5rem);line-height:.98}.ccd-closing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-closing-card{display:grid;gap:.38rem;padding:.9rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-closing-card p,.ccd-closing-message{margin:0;color:#d8d0f8;line-height:1.5}.ccd-closing-message{font-family:Russo One,sans-serif;font-size:1rem;text-align:center}.ccd-closing-actions{display:flex;justify-content:center}.ccd-experience-frame{display:grid;gap:1rem}.ccd-experience-overlay{display:grid;gap:.75rem;width:100%;max-width:36rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.1);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 22%,rgba(125,100,255,.06)),#0a0c16e0;box-shadow:0 0 0 1px #ffffff08 inset}.ccd-experience-step{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#d8d0f8;font-size:.84rem}.ccd-experience-overlay h2{margin:0;font-family:Russo One,sans-serif;font-size:1.1rem;font-weight:400;line-height:1.15}.ccd-experience-overlay p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-experience-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.ccd-experience-button{display:inline-flex;align-items:center;justify-content:center;min-width:7rem;padding:.72rem .95rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;text-decoration:none;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-experience-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-experience-button-secondary{border-color:#ffffff1f;background:#ffffff0a}.ccd-experience-spacer{width:7rem}.ccd-stage{display:grid;gap:1rem;justify-items:center}.ccd-grid-frame{position:relative;width:min(78vw,36rem);aspect-ratio:1;padding:1rem;border-radius:50%;background:linear-gradient(145deg,#ffffff0a,#ffffff03),#060812eb;box-shadow:inset 0 0 0 1px #ffffff0a,0 0 0 1px #9976ff14,0 1rem 3rem #00000057}.ccd-grid{position:relative;display:grid;grid-template-columns:repeat(18,minmax(0,1fr));width:100%;height:100%;overflow:hidden;border-radius:50%;background:linear-gradient(180deg,#080a14fa,#02040bfa),#05070d}.ccd-grid:before{content:"";position:absolute;inset:0;background:linear-gradient(var(--ccd-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--ccd-grid-line) 1px,transparent 1px);background-size:calc(100% / 18) calc(100% / 18);pointer-events:none}.ccd-grid:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,transparent 48%,rgba(0,0,0,.34) 100%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 12%,transparent 88%,rgba(255,255,255,.04));pointer-events:none}.ccd-cell{position:relative}.ccd-hit{position:absolute;left:50%;top:50%;border-radius:999px;pointer-events:none;will-change:transform,opacity;transition:opacity 60ms linear,transform 90ms ease-out,box-shadow .12s ease-out}.ccd-grid-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(151,100,255,.06),transparent 44%),radial-gradient(circle at 50% 50%,transparent 62%,rgba(255,110,74,.05) 100%);mix-blend-mode:screen;pointer-events:none}.ccd-readout,.ccd-summary-row{display:grid;gap:.9rem}.ccd-readout{width:min(78vw,36rem);grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-summary-row{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.ccd-stat,.ccd-summary-card,.ccd-chart-panel,.ccd-table-panel,.ccd-legend-chip{border:1px solid var(--ccd-card-edge);border-radius:1rem;background:var(--ccd-card-bg)}.ccd-stat,.ccd-summary-card{display:grid;gap:.35rem;padding:.95rem 1rem}.ccd-stat strong,.ccd-summary-card strong,.ccd-chart-head strong{font-size:1.28rem}.ccd-audio-button{padding:.72rem .9rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-audio-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1.1rem #8b6aff1f}.ccd-chart-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 18%,transparent 80%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-table-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 15%,transparent 85%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-chart-panel-wide{gap:1.15rem}.ccd-chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.ccd-periodogram{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:.8rem;min-height:20rem;align-items:end}.ccd-periodogram-band{display:grid;gap:.8rem}.ccd-bar-shell{display:flex;align-items:end;justify-content:center;min-height:18rem;padding:.8rem .4rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 26%),#04070feb}.ccd-bar-fill{width:100%;min-height:1.6rem;border-radius:.8rem .8rem .35rem .35rem}.ccd-band-meta{display:grid;gap:.15rem;justify-items:center;text-align:center;color:#cdc5e8;font-size:.84rem}.ccd-spectrum-legend{display:flex;flex-wrap:wrap;gap:.7rem}.ccd-event-table-shell{overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 14%),#04070ff5}.ccd-event-table,.ccd-event-table-head{display:grid;grid-template-columns:1.2fr 1fr .8fr .8fr;gap:.8rem;align-items:center}.ccd-event-table{padding:.72rem .95rem;border-bottom:1px solid rgba(255,255,255,.06);font-family:SFMono-Regular,Menlo,monospace;font-size:.86rem;letter-spacing:.02em}.ccd-event-table-head{padding:.85rem .95rem;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;color:#e9e3ff;font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.14em}.ccd-event-table-body{max-height:26rem;overflow:auto}.ccd-event-table-body .ccd-event-table:nth-child(2n){background:#ffffff05}.ccd-event-table-empty{color:#aaa1c8}.ccd-legend-chip{display:inline-flex;align-items:center;gap:.55rem;padding:.72rem .85rem}.ccd-legend-dot{width:.7rem;height:.7rem;border-radius:999px}.ccd-spectrogram-shell{display:grid;grid-template-columns:5rem minmax(0,1fr);gap:.9rem;align-items:stretch}.ccd-spectrogram-axis{display:grid;grid-template-rows:repeat(8,minmax(0,1fr));gap:.5rem;color:#b7afd6;font-size:.84rem}.ccd-spectrogram-axis span{display:flex;align-items:center}.ccd-spectrogram{display:grid;gap:.45rem;overflow-x:auto}.ccd-spectrogram-row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:.3rem;min-width:22rem}.ccd-spectrogram-cell{display:block;min-height:1.6rem;border-radius:.35rem;background:#ffffff0f}.ccd-spectrogram-footer{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-chart-shell{display:grid;gap:.65rem;padding:.9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-flux-chart{position:relative;width:100%;height:15rem;overflow:visible;border-radius:.8rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 20%),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),#060912f0;background-size:auto,12.5% 100%,100% 20%}.ccd-flux-bin{fill:#ffffff06}.ccd-flux-bin-alt{fill:#ffffff0e}.ccd-flux-area{opacity:.9}.ccd-flux-line{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 .8rem rgba(143,125,255,.28))}.ccd-flux-mean-line{fill:none;stroke:#eff5ffeb;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:10 8;filter:drop-shadow(0 0 .45rem rgba(255,255,255,.16))}.ccd-flux-legend{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;color:#cdc5e8;font-size:.84rem}.ccd-flux-legend-item{display:inline-flex;align-items:center;gap:.45rem}.ccd-flux-legend-swatch{display:inline-block;width:1.6rem;height:.45rem;border-radius:999px}.ccd-flux-legend-swatch-raw{background:linear-gradient(90deg,#ff8d66,#ffd35d,#8f7dff)}.ccd-flux-legend-swatch-mean{background:repeating-linear-gradient(90deg,rgba(239,245,255,.92) 0 .45rem,transparent .45rem .8rem)}.ccd-flux-axis{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}.ccd-counts-shell{position:relative;padding:1rem .7rem .9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-counts-chart{position:relative;z-index:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(1rem,1fr));gap:.3rem;align-items:end;min-height:14rem}.ccd-count-bin{display:grid;gap:.45rem;align-items:end}.ccd-count-bin-label{color:#d9d2f0;font-size:.7rem;text-align:center}.ccd-count-bar-shell{display:flex;align-items:end;height:12rem;min-height:12rem;padding:.2rem;border-radius:.6rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 30%),#ffffff05}.ccd-count-bar{width:100%;min-height:.8rem;border-radius:.5rem .5rem .2rem .2rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6 52%,#8d7effe6);box-shadow:0 0 1rem #8d7eff2e}.ccd-counts-legend-swatch-bin{background:linear-gradient(90deg,#ffd45df2,#ff8a65e6,#8d7effe6)}@media(max-width:860px){.ccd-panel{width:min(96vw,64rem)}.ccd-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(4,minmax(0,1fr))}.ccd-intro-covers{grid-template-columns:1fr}.ccd-energy-readout,.ccd-energy-notes{grid-template-columns:1fr 1fr}.ccd-closing-grid,.ccd-summary-row,.ccd-flux-metrics,.ccd-selector-results{grid-template-columns:1fr}.ccd-modal-header{display:grid}}@media(max-width:720px){.ccd-shell{padding:1rem}.ccd-intro-screen{min-height:auto}.ccd-grid-frame,.ccd-readout{width:100%}.ccd-pipeline,.ccd-readout{grid-template-columns:1fr}.ccd-intro-actions,.ccd-closing-actions{justify-content:stretch}.ccd-chart-head,.ccd-spectrogram-shell{grid-template-columns:1fr}.ccd-chart-head{display:grid}.ccd-spectrogram-axis{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-energy-readout{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-energy-readout .ccd-stat{padding:.7rem .65rem}.ccd-energy-readout .ccd-stat strong{font-size:1rem}.ccd-energy-notes{grid-template-columns:1fr}.ccd-event-table,.ccd-event-table-head{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-raw{grid-template-columns:1fr}.ccd-selector-link,.ccd-selector-leaf{padding:.95rem}.ccd-closing-actions .ccd-experience-button{width:100%}.ccd-experience-overlay{width:100%;max-width:none}.ccd-toolbar-row{justify-content:stretch}.ccd-chooser-button,.ccd-modal-close,.ccd-intro-actions .ccd-experience-button{width:100%}} diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-Be41ZfS7.js b/dist/vendor/glitch/glitch_gallery/assets/index-Be41ZfS7.js new file mode 100644 index 0000000..fa5c524 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-Be41ZfS7.js @@ -0,0 +1 @@ +import{r as c,j as e,g as w,h as q,i as Z,a as z}from"./index-CEeZxcxj.js";const U="_container_101xd_1",Y="_frame_101xd_20",J="_squareLayout_101xd_26",X="_squarePanel_101xd_35",ee="_viewportPanel_101xd_44",te="_contentPanel_101xd_50",se="_panelBody_101xd_56",ne="_copy_101xd_66",ie="_muted_101xd_73",ae="_badge_101xd_77",ce="_choiceButton_101xd_89",re="_completeButton_101xd_90",oe="_sliderSection_101xd_112",le="_sliderHeader_101xd_118",de="_sliderLabel_101xd_125",ue="_sliderValue_101xd_132",xe="_valueInfinity_101xd_138",he="_slider_101xd_112",me="_sliderInfinity_101xd_170",fe="_sliderHint_101xd_184",pe="_statsOverlay_101xd_189",_e="_stat_101xd_189",ge="_statLabel_101xd_208",ye="_statValue_101xd_217",je="_statInfinity_101xd_223",ve="_warning_101xd_227",be="_warningText_101xd_233",Se="_warningQuestion_101xd_234",we="_warningChoices_101xd_245",Ne="_choiceInfinity_101xd_257",Me="_choiceFinite_101xd_265",Ie="_resultStats_101xd_273",Re="_resultRow_101xd_280",$e="_resultMessage_101xd_298",Ce="_resultSuccess_101xd_309",Le="_resultAccent_101xd_313",t={container:U,frame:Y,squareLayout:J,squarePanel:X,viewportPanel:ee,contentPanel:te,panelBody:se,copy:ne,muted:ie,badge:ae,choiceButton:ce,completeButton:re,sliderSection:oe,sliderHeader:le,sliderLabel:de,sliderValue:ue,valueInfinity:xe,slider:he,sliderInfinity:me,sliderHint:fe,statsOverlay:pe,stat:_e,statLabel:ge,statValue:ye,statInfinity:je,warning:ve,warningText:be,warningQuestion:Se,warningChoices:we,choiceInfinity:Ne,choiceFinite:Me,resultStats:Ie,resultRow:Re,resultMessage:$e,resultSuccess:Ce,resultAccent:Le},L=5,p=41;function Fe(d){const r=Math.min(Math.max(d,L),p);return r%2===0?r+1:r}function A(d){const r=[],i=d,x=2/i;for(let u=0;u1-N&&r.push(g,s,_)}return{positions:r,count:r.length/3}}function Pe({resolution:d,isInfinity:r}){const o=c.useRef(null),i=c.useMemo(()=>new Z,[]),{positions:x,count:u,cubeSize:m}=c.useMemo(()=>{const s=Math.min(d,p),_=A(s),f=2/s*.85;return{positions:_.positions,count:_.count,cubeSize:f}},[d]);c.useEffect(()=>{if(!(!o.current||u===0)){for(let s=0;s{o.current&&(o.current.rotation.y=s.clock.elapsedTime*.2)});const a=r?"#ef4444":"#818cf8";return e.jsxs("instancedMesh",{ref:o,args:[void 0,void 0,1e4],frustumCulled:!1,children:[e.jsx("boxGeometry",{args:[1,1,1]}),e.jsx("meshStandardMaterial",{color:a,emissive:a,emissiveIntensity:.05,roughness:.4,metalness:.3})]})}function C({resolution:d,isInfinity:r}){return e.jsxs(e.Fragment,{children:[e.jsx("ambientLight",{intensity:.3}),e.jsx("directionalLight",{position:[5,8,5],intensity:1.2,castShadow:!0}),e.jsx("directionalLight",{position:[-3,-2,-4],intensity:.4,color:"#22d3ee"}),e.jsx("pointLight",{position:[0,5,0],intensity:.5}),e.jsx(Pe,{resolution:d,isInfinity:r}),e.jsx(q,{enableZoom:!0,enablePan:!1,autoRotate:!1,minDistance:2,maxDistance:6})]})}function Be(){const d=c.useRef(null);return z(r=>{d.current&&(d.current.rotation.y=r.clock.elapsedTime*.3)}),e.jsxs("mesh",{ref:d,children:[e.jsx("sphereGeometry",{args:[1,128,128]}),e.jsx("meshStandardMaterial",{color:"#22d3ee",emissive:"#22d3ee",emissiveIntensity:.08,roughness:.15,metalness:.9,envMapIntensity:1})]})}function ke(){return e.jsxs(e.Fragment,{children:[e.jsx("ambientLight",{intensity:.3}),e.jsx("directionalLight",{position:[5,8,5],intensity:1.5}),e.jsx("directionalLight",{position:[-4,-2,-3],intensity:.5,color:"#6366f1"}),e.jsx("pointLight",{position:[0,3,3],intensity:.8,color:"#ffffff"}),e.jsx(Be,{}),e.jsx(q,{enableZoom:!1,enablePan:!1,autoRotate:!0,autoRotateSpeed:1.5})]})}function qe({config:d,onComplete:r,onProgress:o,theme:i,className:x}){const[u,m]=c.useState("exploring"),[a,g]=c.useState(L),[s,_]=c.useState(null),[f,N]=c.useState(!1),F=c.useRef(null),[y,O]=c.useState({stacked:!1,panelSize:320,gap:16,padding:16}),S=a>=p,P=c.useMemo(()=>A(Math.min(a,p)).count,[a]);c.useEffect(()=>{const n=F.current;if(!n||typeof ResizeObserver>"u")return;const l=()=>{const{width:h,height:v}=n.getBoundingClientRect();if(!h||!v)return;const R=v>h,V=Math.min(h,v),b=Math.round(Math.max(12,Math.min(28,V*.04))),$=Math.round(Math.max(12,Math.min(22,V*.03))),K=R?h-b*2:(h-b*2-$)/2,G=R?(v-b*2-$)/2:v-b*2;O({stacked:R,panelSize:Math.max(0,Math.floor(Math.min(K,G))),gap:$,padding:b})};l();const j=new ResizeObserver(l);return j.observe(n),()=>j.disconnect()},[]);const H={"--gc-primary":i?.primary||"#6366f1","--gc-accent":i?.accent||"#22d3ee","--gc-bg":i?.bg||"#0a0a0f","--gc-bg-secondary":i?.bgSecondary||"#12121a","--gc-text":i?.text||"#e8e8ec","--gc-text-muted":i?.textMuted||"#9999a8","--gc-border":i?.border||"#2a2a3a","--panel-gap":`${y.gap}px`,"--frame-pad":`${y.padding}px`},B={width:`${y.panelSize}px`,height:`${y.panelSize}px`};c.useEffect(()=>{o?.(10)},[o]);const D=c.useCallback(n=>{const l=Fe(parseInt(n.target.value,10));g(l);const j=10+l/p*40;o?.(Math.min(j,50)),l>=p&&!f&&(m("warning"),N(!0),o?.(70))},[f,o,p]),k=c.useCallback(n=>{_(n),m("result"),o?.(100)},[o]),E=c.useCallback(()=>{r({success:!0,score:100,data:{choice:s,finalResolution:a,exploredInfinity:f,completedAt:new Date().toISOString()}})},[s,a,f,r]),T=n=>n>=p?"∞":n.toString(),Q=(n,l)=>l?"∞":n.toLocaleString(),W=(n,l)=>{if(l)return"∞";const h=n*80;return h<1024?`${h} B`:h<1024*1024?`${(h/1024).toFixed(1)} KB`:`${(h/(1024*1024)).toFixed(2)} MB`},M=(n,l)=>e.jsxs("div",{className:`${t.squarePanel} ${t.viewportPanel}`,style:B,children:[n,e.jsxs("div",{className:t.statsOverlay,children:[e.jsxs("div",{className:t.stat,children:[e.jsx("span",{className:t.statLabel,children:"Blocks"}),e.jsx("span",{className:`${t.statValue} ${l?t.statInfinity:""}`,children:Q(P,l)})]}),e.jsxs("div",{className:t.stat,children:[e.jsx("span",{className:t.statLabel,children:"Memory"}),e.jsx("span",{className:`${t.statValue} ${l?t.statInfinity:""}`,children:W(P,l)})]})]})]}),I=n=>e.jsx("div",{className:`${t.squarePanel} ${t.contentPanel}`,style:B,children:e.jsx("div",{className:t.panelBody,children:n})});return e.jsx("div",{className:`${t.container} ${x||""}`,style:H,children:e.jsx("div",{ref:F,className:t.frame,children:e.jsxs("div",{className:t.squareLayout,style:{flexDirection:y.stacked?"column":"row"},children:[u==="exploring"&&e.jsxs(e.Fragment,{children:[M(e.jsx(w,{camera:{position:[0,0,3.5],fov:50},children:e.jsx(C,{resolution:a,isInfinity:S})}),S),I(e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.badge,children:"Resolution"}),e.jsx("p",{className:`${t.copy} ${t.muted}`,children:"Every step adds more cubes to the shell. Keep sliding until the approximation breaks open."}),e.jsxs("div",{className:t.sliderSection,children:[e.jsxs("div",{className:t.sliderHeader,children:[e.jsx("span",{className:t.sliderLabel,children:"Current Level"}),e.jsx("span",{className:`${t.sliderValue} ${S?t.valueInfinity:""}`,children:T(a)})]}),e.jsx("input",{type:"range",min:L,max:p,step:"2",value:a,onChange:D,className:`${t.slider} ${S?t.sliderInfinity:""}`}),e.jsx("div",{className:t.sliderHint,children:"Drag right to approach a perfectly smooth sphere."})]})]}))]}),u==="warning"&&e.jsxs(e.Fragment,{children:[M(e.jsx(w,{camera:{position:[0,0,3.5],fov:50},children:e.jsx(C,{resolution:a,isInfinity:!0})}),!0),I(e.jsxs("div",{className:t.warning,children:[e.jsx("div",{className:t.badge,children:"Limit Reached"}),e.jsx("p",{className:t.warningText,children:"At infinite resolution, the sphere needs infinitely many blocks."}),e.jsx("p",{className:t.warningText,children:"Infinitely many blocks means infinite information and unbounded memory."}),e.jsx("p",{className:t.warningQuestion,children:"Do you want the perfect sphere anyway?"}),e.jsxs("div",{className:t.warningChoices,children:[e.jsx("button",{className:`${t.choiceButton} ${t.choiceInfinity}`,onClick:()=>k("infinity"),children:"Embrace Infinity"}),e.jsx("button",{className:`${t.choiceButton} ${t.choiceFinite}`,onClick:()=>k("finite"),children:"Keep It Finite"})]})]}))]}),u==="result"&&e.jsxs(e.Fragment,{children:[M(s==="infinity"?e.jsx(w,{camera:{position:[0,0,3],fov:50},children:e.jsx(ke,{})}):e.jsx(w,{camera:{position:[0,0,3.5],fov:50},children:e.jsx(C,{resolution:a,isInfinity:!1})}),s==="infinity"),I(e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.badge,children:s==="finite"?"Finite Wins":"Infinity Chosen"}),e.jsxs("div",{className:t.resultStats,children:[e.jsxs("div",{className:t.resultRow,children:[e.jsx("span",{children:"Memory Required"}),e.jsx("span",{className:s==="finite"?t.resultSuccess:t.resultAccent,children:s==="finite"?"Finite":"∞"})]}),e.jsxs("div",{className:t.resultRow,children:[e.jsx("span",{children:"Simulation Possible"}),e.jsx("span",{className:s==="finite"?t.resultSuccess:t.resultAccent,children:s==="finite"?"Yes":"Only in theory"})]})]}),e.jsx("p",{className:t.resultMessage,children:s==="finite"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"Discreteness can be enough."})," A finite model never becomes perfect, but it can get close enough to feel continuous."]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"Perfect smoothness costs infinity."})," A mathematically exact sphere cannot be simulated without infinite information."]})}),e.jsx("button",{className:t.completeButton,onClick:E,children:"Complete Challenge"})]}))]})]})})})}const ze={name:"sphere-paradox",displayName:"Create a Perfect Sphere",version:"1.0.0",paramSchema:{},defaultParams:{}};export{qe as default,ze as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-BoeEa7xH.css b/dist/vendor/glitch/glitch_gallery/assets/index-BoeEa7xH.css new file mode 100644 index 0000000..31c89da --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-BoeEa7xH.css @@ -0,0 +1 @@ +._wrapper_h2w9g_1{--gc-bg: var(--color-bg, #0d1117);--gc-bg-secondary: var(--color-bg-secondary, #182237);--gc-text: var(--color-text, #f1f4ef);--gc-text-muted: var(--color-text-muted, #b6c0d4);--gc-primary: var(--color-primary, #45c4b0);--gc-accent: var(--color-accent, #ff6b6b);--gc-border: var(--color-border, #34516f);width:100%}._frame_h2w9g_12{position:relative;min-height:100dvh;padding:10px;color:var(--gc-text);font-family:Space Mono,IBM Plex Mono,Courier New,monospace;background:radial-gradient(circle at 12% 8%,rgb(69 196 176 / 24%),transparent 42%),radial-gradient(circle at 86% 14%,rgb(255 107 107 / 20%),transparent 38%),linear-gradient(156deg,var(--gc-bg),var(--gc-bg-secondary));border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent)}._frameSucceeded_h2w9g_25{background:radial-gradient(circle at 18% 12%,rgb(86 255 148 / 26%),transparent 42%),radial-gradient(circle at 82% 16%,rgb(42 210 104 / 22%),transparent 38%),linear-gradient(156deg,#0f2f1f,#1b5234);border-color:color-mix(in srgb,#4be38f 56%,var(--gc-border))}._header_h2w9g_33{margin-bottom:8px}._title_h2w9g_37{margin:0;font-size:clamp(20px,6.4vw,32px);letter-spacing:.05em;text-transform:uppercase}._subtitle_h2w9g_44{margin:4px 0 0;color:var(--gc-text-muted);font-size:clamp(11px,3.3vw,14px)}._statsLine_h2w9g_50{margin:5px 0 0;padding:5px 6px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#0913209e;font-size:clamp(11px,3.1vw,13px)}._boardPanel_h2w9g_58{margin-bottom:8px}._board_h2w9g_58{position:relative;overflow:hidden;width:min(88vw,340px);aspect-ratio:1 / 1;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border:2px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));box-shadow:0 0 0 1px #00000059,0 14px 26px #00000061}._trailOverlay_h2w9g_76{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}._trailPath_h2w9g_85{fill:none;stroke:#ff2828e5;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgb(255 30 30 / 65%))}._trailHead_h2w9g_94{fill:#ff3c3cf5;filter:drop-shadow(0 0 6px rgb(255 45 45 / 70%))}._cell_h2w9g_99{position:relative;display:grid;place-items:center}._lightCell_h2w9g_105{background:#f4ecd8}._darkCell_h2w9g_109{background:#c08c61}._knight_h2w9g_113{position:absolute;z-index:3;display:grid;place-items:center;width:100%;height:100%;font-family:Times New Roman,Georgia,serif;font-size:clamp(28px,15vw,56px);line-height:1;color:#111827;text-shadow:0 1px 0 rgb(255 255 255 / 55%),0 3px 8px rgb(0 0 0 / 25%);transform:translateY(-1px)}._target_h2w9g_130{position:absolute;z-index:2;font-size:clamp(12px,8.5vw,33px);color:#e21c29;text-shadow:0 0 8px rgb(236 37 58 / 60%)}._readout_h2w9g_138{margin-bottom:8px;padding:7px;border:1px solid color-mix(in srgb,var(--gc-border) 72%,transparent);background:#040a1173}._readoutLine_h2w9g_145{margin:0;font-size:clamp(11px,3.2vw,14px)}._readoutLine_h2w9g_145+._readoutLine_h2w9g_145{margin-top:3px}._programPanel_h2w9g_154{display:flex;flex-direction:column;gap:6px}._programTrack_h2w9g_160{min-height:42px;display:flex;flex-wrap:wrap;align-items:center;gap:5px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#07111d85;padding:7px}._placeholder_h2w9g_171{color:var(--gc-text-muted);font-size:12px}._step_h2w9g_176{width:24px;height:24px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));background:#45c4b024;font-weight:600;font-size:13px}._stepExecuted_h2w9g_187{background:#ff6b6b40;border-color:#ff6b6b99}._programButtons_h2w9g_192,._controlRow_h2w9g_193{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}._button_h2w9g_199,._buttonPrimary_h2w9g_200{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);padding:7px 6px;font:inherit;font-size:20px;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:transform .12s ease,background-color .12s ease}._button_h2w9g_199{background:#09132099;color:var(--gc-text)}._buttonPrimary_h2w9g_200{background:color-mix(in srgb,var(--gc-primary) 35%,#12252f);color:#f2fff8;border-color:color-mix(in srgb,var(--gc-primary) 65%,transparent)}._button_h2w9g_199:disabled,._buttonPrimary_h2w9g_200:disabled{opacity:.48;cursor:not-allowed}._button_h2w9g_199:active,._buttonPrimary_h2w9g_200:active{transform:scale(.98)}._legend_h2w9g_233{margin:0;color:var(--gc-text-muted);font-size:11px}._promptOverlay_h2w9g_239{position:absolute;inset:0;display:grid;place-content:center;gap:8px;padding:16px;background:#02080ddb;border:1px solid color-mix(in srgb,var(--gc-accent) 40%,var(--gc-border))}._promptTitle_h2w9g_250{margin:0;text-align:center;text-transform:uppercase;letter-spacing:.08em;font-size:clamp(20px,6vw,32px)}._promptText_h2w9g_258{margin:0;text-align:center;color:var(--gc-text-muted)}._promptOptions_h2w9g_264{display:flex;justify-content:center;gap:10px}._promptOption_h2w9g_264{min-width:110px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#09132099;color:var(--gc-text);padding:8px 10px;font:inherit;font-size:14px;text-align:left;cursor:pointer}._promptSelected_h2w9g_282{border-color:color-mix(in srgb,var(--gc-accent) 70%,transparent);background:#ff6b6b33}._promptHint_h2w9g_287{margin:0;text-align:center;color:var(--gc-text-muted);font-size:11px}@media(max-width:560px){._programButtons_h2w9g_192,._controlRow_h2w9g_193{grid-template-columns:1fr 1fr 1fr 1fr}}@media(min-width:780px){._frame_h2w9g_12{max-width:540px;margin:0 auto;border-radius:14px;min-height:auto}} diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-C2PFO5cD.css b/dist/vendor/glitch/glitch_gallery/assets/index-C2PFO5cD.css new file mode 100644 index 0000000..6e354fa --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-C2PFO5cD.css @@ -0,0 +1 @@ +._container_101xd_1{background:radial-gradient(circle at top,rgba(99,102,241,.14),transparent 48%),linear-gradient(180deg,var(--gc-bg-secondary, #12121a),var(--gc-bg, #0a0a0f));color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:Russo One,system-ui,-apple-system,sans-serif;line-height:1.5;width:100%;min-height:100%}._container_101xd_1,._container_101xd_1 *,._container_101xd_1 *:before,._container_101xd_1 *:after{box-sizing:inherit}._frame_101xd_20{width:100%;aspect-ratio:16 / 9;padding:var(--frame-pad, 1rem)}._squareLayout_101xd_26{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:var(--panel-gap, 1rem)}._squarePanel_101xd_35{position:relative;flex:0 0 auto;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent);border-radius:28px;box-shadow:0 28px 70px #00000040}._viewportPanel_101xd_44{background:radial-gradient(circle at 50% 18%,rgba(34,211,238,.2),transparent 32%),linear-gradient(160deg,#12121af2,#0a0a0ffa)}._contentPanel_101xd_50{background:linear-gradient(180deg,#12121af5,#0a0a0ffa),var(--gc-bg, #0a0a0f)}._panelBody_101xd_56{width:100%;height:100%;padding:clamp(1rem,3vw,2rem);display:flex;flex-direction:column;justify-content:center;gap:1rem}._copy_101xd_66{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.15rem);line-height:1.65}._muted_101xd_73{color:var(--gc-text-muted, #9999a8)}._badge_101xd_77{align-self:flex-start;padding:.35rem .7rem;border-radius:999px;background:#6366f124;color:var(--gc-primary, #6366f1);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}._startButton_101xd_88,._choiceButton_101xd_89,._completeButton_101xd_90{border:none;border-radius:14px;padding:.95rem 1.2rem;font:inherit;color:#fff;cursor:pointer;transition:transform .18s ease,filter .18s ease,border-color .18s ease,background .18s ease}._startButton_101xd_88:hover,._choiceButton_101xd_89:hover,._completeButton_101xd_90:hover{transform:translateY(-1px);filter:brightness(1.06)}._startButton_101xd_88,._completeButton_101xd_90{background:linear-gradient(135deg,var(--gc-primary, #6366f1),var(--gc-accent, #22d3ee))}._sliderSection_101xd_112{display:flex;flex-direction:column;gap:.8rem}._sliderHeader_101xd_118{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}._sliderLabel_101xd_125{color:var(--gc-text-muted, #9999a8);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}._sliderValue_101xd_132{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(1.2rem,2.4vw,1.8rem)}._valueInfinity_101xd_138{color:#ef4444}._slider_101xd_112{width:100%;height:12px;border-radius:999px;background:#ffffff14;outline:none;appearance:none;cursor:pointer}._slider_101xd_112::-webkit-slider-thumb{appearance:none;width:26px;height:26px;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._slider_101xd_112::-moz-range-thumb{width:26px;height:26px;border:0;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._sliderInfinity_101xd_170{background:linear-gradient(90deg,#ffffff14,#ef4444b3)}._sliderInfinity_101xd_170::-webkit-slider-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderInfinity_101xd_170::-moz-range-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderHint_101xd_184{color:var(--gc-text-muted, #9999a8);font-size:.85rem}._statsOverlay_101xd_189{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:space-between;gap:.75rem;pointer-events:none}._stat_101xd_189{min-width:0;padding:.7rem .85rem;border-radius:16px;background:#0000008c;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._statLabel_101xd_208{display:block;margin-bottom:.2rem;color:var(--gc-text-muted, #9999a8);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}._statValue_101xd_217{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(.95rem,1.8vw,1.15rem)}._statInfinity_101xd_223{color:#ef4444}._warning_101xd_227{display:flex;flex-direction:column;gap:1rem}._warningText_101xd_233,._warningQuestion_101xd_234{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.1rem);line-height:1.65}._warningQuestion_101xd_234{color:#ef4444}._warningChoices_101xd_245{display:flex;flex-direction:column;gap:.85rem}._choiceButton_101xd_89{text-align:left;background:#ffffff0a;border:1px solid var(--gc-border, #2a2a3a)}._choiceInfinity_101xd_257{border-color:#ef444473}._choiceInfinity_101xd_257:hover{background:#ef444424}._choiceFinite_101xd_265{border-color:#22c55e73}._choiceFinite_101xd_265:hover{background:#22c55e24}._resultStats_101xd_273{padding:1rem 1.1rem;border-radius:20px;background:#ffffff0a;border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent)}._resultRow_101xd_280{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;color:var(--gc-text-muted, #9999a8);font-size:.92rem}._resultRow_101xd_280+._resultRow_101xd_280{border-top:1px solid rgba(255,255,255,.08)}._resultRow_101xd_280 span:last-child{font-family:SF Mono,Monaco,Consolas,monospace;font-weight:700}._resultMessage_101xd_298{margin:0;color:var(--gc-text-muted, #9999a8);font-size:clamp(.92rem,1.8vw,1rem);line-height:1.7}._resultMessage_101xd_298 strong{color:var(--gc-text, #e8e8ec)}._resultSuccess_101xd_309{color:#22c55e}._resultAccent_101xd_313{color:var(--gc-accent, #22d3ee)}@media(orientation:portrait),(max-aspect-ratio:1 / 1){._frame_101xd_20{aspect-ratio:1 / 2}}@media(max-width:768px){._squarePanel_101xd_35{border-radius:22px}._panelBody_101xd_56{padding:1rem}._statsOverlay_101xd_189{right:.75rem;bottom:.75rem;left:.75rem}._stat_101xd_189{padding:.55rem .7rem}} diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-C370CA0j.js b/dist/vendor/glitch/glitch_gallery/assets/index-C370CA0j.js new file mode 100644 index 0000000..d8d51e9 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-C370CA0j.js @@ -0,0 +1,125 @@ +import{r as c,u as _t,c as Nt,a as We,_ as dt,D as Ht,V as ve,b as Vt,P as Tt,O as Et,S as Gt,U as Ut,d as Yt,M as Jt,R as qt,e as Xt,f as Zt,B as Qt,C as ut,A as Kt,j as e,Q as en}from"./index-CEeZxcxj.js";const Xe=new ve,ft=new ve,tn=new ve,jt=new Vt;function nn(t,n,o){const r=Xe.setFromMatrixPosition(t.matrixWorld);r.project(n);const s=o.width/2,i=o.height/2;return[r.x*s+s,-(r.y*i)+i]}function on(t,n){const o=Xe.setFromMatrixPosition(t.matrixWorld),r=ft.setFromMatrixPosition(n.matrixWorld),s=o.sub(r),i=n.getWorldDirection(tn);return s.angleTo(i)>Math.PI/2}function rn(t,n,o,r){const s=Xe.setFromMatrixPosition(t.matrixWorld),i=s.clone();i.project(n),jt.set(i.x,i.y),o.setFromCamera(jt,n);const d=o.intersectObjects(r,!0);if(d.length){const l=d[0].distance;return s.distanceTo(o.ray.origin)Math.abs(t)<1e-10?0:t;function kt(t,n,o=""){let r="matrix3d(";for(let s=0;s!==16;s++)r+=pt(n[s]*t.elements[s])+(s!==15?",":")");return o+r}const ln=(t=>n=>kt(n,t))([1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1]),cn=(t=>(n,o)=>kt(n,t(o),"translate(-50%,-50%)"))(t=>[1/t,1/t,1/t,1,-1/t,-1/t,-1/t,-1,1/t,1/t,1/t,1,1,1,1,1]);function dn(t){return t&&typeof t=="object"&&"current"in t}const Ae=c.forwardRef(({children:t,eps:n=.001,style:o,className:r,prepend:s,center:i,fullscreen:d,portal:l,distanceFactor:a,sprite:u=!1,transform:h=!1,occlude:p,onOcclude:g,castShadow:y,receiveShadow:I,material:S,geometry:L,zIndexRange:F=[16777271,0],calculatePosition:_=nn,as:v="div",wrapperClass:$,pointerEvents:A="auto",...D},W)=>{const{gl:B,camera:C,scene:te,size:j,raycaster:N,events:H,viewport:R}=_t(),[E]=c.useState(()=>document.createElement(v)),x=c.useRef(null),U=c.useRef(null),Se=c.useRef(0),G=c.useRef([0,0]),b=c.useRef(null),z=c.useRef(null),k=l?.current||H.connected||B.domElement.parentNode,w=c.useRef(null),K=c.useRef(!1),V=c.useMemo(()=>p&&p!=="blending"||Array.isArray(p)&&p.length&&dn(p[0]),[p]);c.useLayoutEffect(()=>{const X=B.domElement;p&&p==="blending"?(X.style.zIndex=`${Math.floor(F[0]/2)}`,X.style.position="absolute",X.style.pointerEvents="none"):(X.style.zIndex=null,X.style.position=null,X.style.pointerEvents=null)},[p]),c.useLayoutEffect(()=>{if(U.current){const X=x.current=Nt.createRoot(E);if(te.updateMatrixWorld(),h)E.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const O=_(U.current,C,j);E.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${O[0]}px,${O[1]}px,0);transform-origin:0 0;`}return k&&(s?k.prepend(E):k.appendChild(E)),()=>{k&&k.removeChild(E),X.unmount()}}},[k,h]),c.useLayoutEffect(()=>{$&&(E.className=$)},[$]);const re=c.useMemo(()=>h?{position:"absolute",top:0,left:0,width:j.width,height:j.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:i?"translate3d(-50%,-50%,0)":"none",...d&&{top:-j.height/2,left:-j.width/2,width:j.width,height:j.height},...o},[o,i,d,j,h]),ge=c.useMemo(()=>({position:"absolute",pointerEvents:A}),[A]);c.useLayoutEffect(()=>{if(K.current=!1,h){var X;(X=x.current)==null||X.render(c.createElement("div",{ref:b,style:re},c.createElement("div",{ref:z,style:ge},c.createElement("div",{ref:W,className:r,style:o,children:t}))))}else{var O;(O=x.current)==null||O.render(c.createElement("div",{ref:W,style:re,className:r,children:t}))}});const he=c.useRef(!0);We(X=>{if(U.current){C.updateMatrixWorld(),U.current.updateWorldMatrix(!0,!1);const O=h?G.current:_(U.current,C,j);if(h||Math.abs(Se.current-C.zoom)>n||Math.abs(G.current[0]-O[0])>n||Math.abs(G.current[1]-O[1])>n){const me=on(U.current,C);let ee=!1;V&&(Array.isArray(p)?ee=p.map(ae=>ae.current):p!=="blending"&&(ee=[te]));const fe=he.current;if(ee){const ae=rn(U.current,C,N,ee);he.current=ae&&!me}else he.current=!me;fe!==he.current&&(g?g(!he.current):E.style.display=he.current?"block":"none");const ce=Math.floor(F[0]/2),Y=p?V?[F[0],ce]:[ce-1,0]:F;if(E.style.zIndex=`${an(U.current,C,Y)}`,h){const[ae,ie]=[j.width/2,j.height/2],Be=C.projectionMatrix.elements[5]*ie,{isOrthographicCamera:Ce,top:Le,left:Te,bottom:Re,right:$e}=C,J=ln(C.matrixWorldInverse),_e=Ce?`scale(${Be})translate(${pt(-($e+Te)/2)}px,${pt((Le+Re)/2)}px)`:`translateZ(${Be}px)`;let be=U.current.matrixWorld;u&&(be=C.matrixWorldInverse.clone().transpose().copyPosition(be).scale(U.current.scale),be.elements[3]=be.elements[7]=be.elements[11]=0,be.elements[15]=1),E.style.width=j.width+"px",E.style.height=j.height+"px",E.style.perspective=Ce?"":`${Be}px`,b.current&&z.current&&(b.current.style.transform=`${_e}${J}translate(${ae}px,${ie}px)`,z.current.style.transform=cn(be,1/((a||10)/400)))}else{const ae=a===void 0?1:sn(U.current,C)*a;E.style.transform=`translate3d(${O[0]}px,${O[1]}px,0) scale(${ae})`}G.current=O,Se.current=C.zoom}}if(!V&&w.current&&!K.current)if(h){if(b.current){const O=b.current.children[0];if(O!=null&&O.clientWidth&&O!=null&&O.clientHeight){const{isOrthographicCamera:me}=C;if(me||L)D.scale&&(Array.isArray(D.scale)?D.scale instanceof ve?w.current.scale.copy(D.scale.clone().divideScalar(1)):w.current.scale.set(1/D.scale[0],1/D.scale[1],1/D.scale[2]):w.current.scale.setScalar(1/D.scale));else{const ee=(a||10)/400,fe=O.clientWidth*ee,ce=O.clientHeight*ee;w.current.scale.set(fe,ce,1)}K.current=!0}}}else{const O=E.children[0];if(O!=null&&O.clientWidth&&O!=null&&O.clientHeight){const me=1/R.factor,ee=O.clientWidth*me,fe=O.clientHeight*me;w.current.scale.set(ee,fe,1),K.current=!0}w.current.lookAt(X.camera.position)}});const q=c.useMemo(()=>({vertexShader:h?void 0:` + /* + This shader is from the THREE's SpriteMaterial. + We need to turn the backing plane into a Sprite + (make it always face the camera) if "transfrom" + is false. + */ + #include + + void main() { + vec2 center = vec2(0., 1.); + float rotation = 0.0; + + // This is somewhat arbitrary, but it seems to work well + // Need to figure out how to derive this dynamically if it even matters + float size = 0.03; + + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + + gl_Position = projectionMatrix * mvPosition; + } + `,fragmentShader:` + void main() { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}),[h]);return c.createElement("group",dt({},D,{ref:U}),p&&!V&&c.createElement("mesh",{castShadow:y,receiveShadow:I,ref:w},L||c.createElement("planeGeometry",null),S||c.createElement("shaderMaterial",{side:Ht,vertexShader:q.vertexShader,fragmentShader:q.fragmentShader})))});function un(t,n,o,r){var s;return s=class extends Gt{constructor(i){super({vertexShader:n,fragmentShader:o,...i});for(const d in t)this.uniforms[d]=new Ut(t[d]),Object.defineProperty(this,d,{get(){return this.uniforms[d].value},set(l){this.uniforms[d].value=l}});this.uniforms=Yt.clone(this.uniforms)}},s.key=Jt.generateUUID(),s}const pn=()=>parseInt(qt.replace(/\D+/g,"")),hn=pn(),fn=un({cellSize:.5,sectionSize:1,fadeDistance:100,fadeStrength:1,fadeFrom:1,cellThickness:.5,sectionThickness:1,cellColor:new ut,sectionColor:new ut,infiniteGrid:!1,followCamera:!1,worldCamProjPosition:new ve,worldPlanePosition:new ve},` + varying vec3 localPosition; + varying vec4 worldPosition; + + uniform vec3 worldCamProjPosition; + uniform vec3 worldPlanePosition; + uniform float fadeDistance; + uniform bool infiniteGrid; + uniform bool followCamera; + + void main() { + localPosition = position.xzy; + if (infiniteGrid) localPosition *= 1.0 + fadeDistance; + + worldPosition = modelMatrix * vec4(localPosition, 1.0); + if (followCamera) { + worldPosition.xyz += (worldCamProjPosition - worldPlanePosition); + localPosition = (inverse(modelMatrix) * worldPosition).xyz; + } + + gl_Position = projectionMatrix * viewMatrix * worldPosition; + } + `,` + varying vec3 localPosition; + varying vec4 worldPosition; + + uniform vec3 worldCamProjPosition; + uniform float cellSize; + uniform float sectionSize; + uniform vec3 cellColor; + uniform vec3 sectionColor; + uniform float fadeDistance; + uniform float fadeStrength; + uniform float fadeFrom; + uniform float cellThickness; + uniform float sectionThickness; + + float getGrid(float size, float thickness) { + vec2 r = localPosition.xz / size; + vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r); + float line = min(grid.x, grid.y) + 1.0 - thickness; + return 1.0 - min(line, 1.0); + } + + void main() { + float g1 = getGrid(cellSize, cellThickness); + float g2 = getGrid(sectionSize, sectionThickness); + + vec3 from = worldCamProjPosition*vec3(fadeFrom); + float dist = distance(from, worldPosition.xyz); + float d = 1.0 - min(dist / fadeDistance, 1.0); + vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2)); + + gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength)); + gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2); + if (gl_FragColor.a <= 0.0) discard; + + #include + #include <${hn>=154?"colorspace_fragment":"encodings_fragment"}> + } + `),xn=c.forwardRef(({args:t,cellColor:n="#000000",sectionColor:o="#2080ff",cellSize:r=.5,sectionSize:s=1,followCamera:i=!1,infiniteGrid:d=!1,fadeDistance:l=100,fadeStrength:a=1,fadeFrom:u=1,cellThickness:h=.5,sectionThickness:p=1,side:g=Qt,...y},I)=>{Xt({GridMaterial:fn});const S=c.useRef(null);c.useImperativeHandle(I,()=>S.current,[]);const L=new Zt,F=new ve(0,1,0),_=new ve(0,0,0);We(A=>{L.setFromNormalAndCoplanarPoint(F,_).applyMatrix4(S.current.matrixWorld);const D=S.current.material,W=D.uniforms.worldCamProjPosition,B=D.uniforms.worldPlanePosition;L.projectPoint(A.camera.position,W.value),B.value.set(0,0,0).applyMatrix4(S.current.matrixWorld)});const v={cellSize:r,sectionSize:s,cellColor:n,sectionColor:o,cellThickness:h,sectionThickness:p},$={fadeDistance:l,fadeStrength:a,fadeFrom:u,infiniteGrid:d,followCamera:i};return c.createElement("mesh",dt({ref:S,frustumCulled:!1},y),c.createElement("gridMaterial",dt({transparent:!0,"extensions-derivatives":!0,side:g},v,$)),c.createElement("planeGeometry",{args:t}))});function mn({vector:t,origin:n=[0,0,0],color:o="#facc15"}){const{dir:r,len:s,position:i}=c.useMemo(()=>{const l=new ve(...n),a=new ve(...t),u=l.distanceTo(a);return{dir:a.clone().sub(l).normalize(),len:u,position:l}},[t,n]),d=c.useMemo(()=>new Kt(r,i,s,o,.2*Math.min(s,1)+.1,.1*Math.min(s,1)+.05),[r,s,i,o]);return e.jsx("primitive",{object:d})}function gn(t,n=!1){const o=[];for(let r=0;r<=t;r++)for(let s=0;s<=t-r;s++){const i=t-r-s;if(i>=0)if(!n)o.push([r,s,i]);else{const d=r===0?[1]:[1,-1],l=s===0?[1]:[1,-1],a=i===0?[1]:[1,-1];for(const u of d)for(const h of l)for(const p of a)o.push([r*u,s*h,i*p])}}return o}function bn({vector:t,radius:n,distance:o,color:r}){const{position:s,quaternion:i}=c.useMemo(()=>{const d=new ve(...t).normalize(),l=new ve(0,1,0),a=new en().setFromUnitVectors(l,d);return{position:d.clone().multiplyScalar(o/2),quaternion:a}},[t,o]);return e.jsxs("mesh",{position:s,quaternion:i,children:[e.jsx("cylinderGeometry",{args:[n,n,o,32]}),e.jsx("meshStandardMaterial",{color:r,opacity:.5,transparent:!0})]})}function yn({complexity:t,lightlanes:n=!1,radius:o=.5,distance:r=5,allSectors:s=!1,cumulative:i=!1}){const d=c.useMemo(()=>{const a=[],u=i?1:t,h=t;for(let p=u;p<=h;p++){const g=gn(p,s);for(const y of g)a.push({vec:y,c:p})}return a},[t,s,i]),l=a=>{const u=i?Math.max(t,1):t;return`hsl(${270*(1-(u>1?(a-1)/(u-1):1))}, 100%, 50%)`};return e.jsx("group",{children:d.map((a,u)=>{const h=i?l(a.c):n?"#ff33c5":"#4ade80";return n?e.jsx(bn,{vector:a.vec,radius:o,distance:r,color:h},`cyl-${u}-${a.vec.join(",")}-${a.c}`):e.jsx(mn,{vector:a.vec,color:h},`vec-${u}-${a.vec.join(",")}-${a.c}`)})})}const vn="glitch:play-sound",Sn="glitch:stop-sound",ke={click:"ui.button_click",hover:"ui.button_hover",computeStart:"machine.compute_start",computeStep:"machine.compute_step",computeDone:"machine.compute_done"};function Bt(t,n){typeof window>"u"||window.dispatchEvent(new CustomEvent(t,{detail:n}))}function Ie(t,n,o){try{if(t?.playSound){t.playSound(n,o);return}}catch{}Bt(vn,{id:n,payload:o})}function jn(t,n,o){try{if(t?.stopSound){t.stopSound(n,o);return}}catch{}Bt(Sn,{id:n,payload:o})}const Ue=1e-12;function ct(t=123456789){let n=t>>>0;return function(){n|=0,n=n+1831565813|0;let r=Math.imul(n^n>>>15,1|n);return r=r+Math.imul(r^r>>>7,61|r)^r,((r^r>>>14)>>>0)/4294967296}}function Mn(t,n=Math.random){if(!Number.isFinite(t)||t<=0)return 0;if(t<30){const d=Math.exp(-t);let l=0,a=1;do l++,a*=n();while(a>d);return l-1}const o=Math.max(1e-12,n()),r=n(),s=Math.sqrt(-2*Math.log(o))*Math.cos(2*Math.PI*r),i=t+Math.sqrt(t)*s;return Math.max(0,Math.round(i))}function ot(t){return[t[0]??t.x,t[1]??t.y,t[2]??t.z]}function wn(t,n,o){return Math.sqrt(t*t+n*n+o*o)}function Rt(t){const n=2*Math.PI;let o=t%n;return o<0&&(o+=n),o}function Pn(t){const n=2*t()-1,o=2*Math.PI*t();return{theta:Math.acos(Math.max(-1,Math.min(1,n))),phi:o}}function ht(t){const n=2*Math.PI;let o=t%n;return o<0&&(o+=n),o>Math.PI&&(o=n-o),o}function Mt(t=Math.random){const n=Math.max(1e-12,t()),o=t();return Math.sqrt(-2*Math.log(n))*Math.cos(2*Math.PI*o)}function Fn(t,n,o){const r=Math.sin(n);return[t*r*Math.cos(o),t*Math.cos(n),t*r*Math.sin(o)]}function Cn(t,n=!1,o=!1){const r=[],s=o?1:t,i=t;for(let d=s;d<=i;d++)for(let l=0;l<=d;l++)for(let a=0;a<=d-l;a++){const u=d-l-a;if(!n){r.push([l,a,u]);continue}const h=l===0?[1]:[1,-1],p=a===0?[1]:[1,-1],g=u===0?[1]:[1,-1];for(const y of h)for(const I of p)for(const S of g)r.push([l*y,a*I,u*S])}return r}function wt({D:t,complexity:n,allSectors:o=!1,cumulative:r=!1}){if(!Number.isFinite(t)||t<=0)return[];if(!Number.isInteger(n)||n<1)return[];const s=Cn(n,o,r),i=[];for(let d=0;d1&&(y=1);const I=y*u,S=y*h,L=y*p,F=r-I,_=s-S,v=i-L;F*F+_*_+v*va&&u++}return u}function zt({D:t,lane_radius:n}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0)return 0;const o=n*n/(4*t*t);return o<=0?0:o>1?1:o}function kn({D:t,lane_radius:n,lane_length:o}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0||!Number.isFinite(o)||o<=0)return 0;if(o>=t-Ue)return zt({D:t,lane_radius:n});const r=n,s=o,i=t-s;if(r<=i)return 0;if(r>=t+s)return 1;const d=Math.sqrt(Math.max(0,t*t-s*s));let l;return r1&&(l=1),(1-l)/2):0}function Bn({flux:t,D:n,lane_radius:o,dt:r}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(r)||r<=0)return 0;const s=zt({D:n,lane_radius:o});return t*s*r}function Rn({flux:t,D:n,lane_radius:o,lane_length:r,dt:s}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(s)||s<=0)return 0;const i=kn({D:n,lane_radius:o,lane_length:r});return t*i*s}function It({flux:t,D:n,lane_radius:o,dt:r,hitTestModel:s="shell",lane_length:i}){return s==="segment"?Rn({flux:t,D:n,lane_radius:o,lane_length:i,dt:r}):Bn({flux:t,D:n,lane_radius:o,dt:r})}function zn(t){if(!t||typeof t!="object")throw new Error("createSamplingSimulation: config object is required.");const n=t.lane_radius??t.radius,o=t.D,r=t.complexity,s=t.flux,i=t.bin_size??1,d=t.sub_bin_sampling??4,l=t.thetaDrift??t.theta_drift??0,a=t.thetaJitter??t.theta_jitter??0,u=t.phiJitter??t.phi_jitter??0,h=t.laneLength??t.lane_length??t.distance??o,p=t.hitTestModel??t.hit_test_model??"shell",g=t.observationMode??t.observation_mode??"orbit";if(!Number.isFinite(o)||o<=0)throw new Error("createSamplingSimulation: D must be a positive number.");if(!Number.isFinite(n)||n<=0)throw new Error("createSamplingSimulation: lane_radius (or radius) must be a positive number.");if(!Number.isInteger(r)||r<1)throw new Error("createSamplingSimulation: complexity must be an integer >= 1.");if(!Number.isFinite(s)||s<0)throw new Error("createSamplingSimulation: flux must be a finite number >= 0.");if(!Number.isFinite(i)||i<=0)throw new Error("createSamplingSimulation: bin_size must be a positive number.");if(!Number.isInteger(d)||d<1)throw new Error("createSamplingSimulation: sub_bin_sampling must be an integer >= 1.");if(!Number.isFinite(l))throw new Error("createSamplingSimulation: thetaDrift must be finite.");if(!Number.isFinite(a)||a<0)throw new Error("createSamplingSimulation: thetaJitter must be a finite number >= 0.");if(!Number.isFinite(u)||u<0)throw new Error("createSamplingSimulation: phiJitter must be a finite number >= 0.");if(!Number.isFinite(h)||h<=0)throw new Error("createSamplingSimulation: laneLength/lane_length/distance must be a positive number.");if(p!=="shell"&&p!=="segment")throw new Error('createSamplingSimulation: hitTestModel must be "shell" or "segment".');if(g!=="orbit"&&g!=="randomSphere")throw new Error('createSamplingSimulation: observationMode must be "orbit" or "randomSphere".');return{D:o,lane_radius:n,complexity:r,flux:s,bin_size:i,sub_bin_sampling:d,theta:ht(t.theta??Math.PI/2),phi:Rt(t.phi??0),velocity:t.velocity??0,thetaDrift:l,thetaJitter:a,phiJitter:u,lane_length:h,hitTestModel:p,observationMode:g,allSectors:!!t.allSectors,cumulative:!!t.cumulative,usePoisson:t.usePoisson!==!1,seed:Number.isFinite(t.seed)?t.seed:1}}function Lt(t){const n=zn(t),o=wt(n),r=n.hitTestModel==="segment"?wt({...n,D:n.lane_length}):o,s=ct(n.seed),i=ct(n.seed+1),d=ct(n.seed+2),l=n.bin_size/n.sub_bin_sampling,a=It({flux:n.flux,D:n.D,lane_radius:n.lane_radius,dt:l,hitTestModel:n.hitTestModel,lane_length:n.lane_length});let u=0,h=0,p=n.phi,g=n.theta,y=0,I=0,S=0,L=0,F=0,_=0,v=0;function $(B,C){return n.usePoisson?Mn(B,C):B}function A(B=g,C=p){return Fn(n.D,B,C)}function D(){let B,C;if(n.observationMode==="randomSphere"){const R=Pn(d);B=R.theta,C=R.phi}else B=ht(g+(n.thetaJitter>0?n.thetaJitter*Mt(d):0)),C=Rt(p+(n.phiJitter>0?n.phiJitter*Mt(d):0));const te=A(B,C),j=n.hitTestModel==="segment"?Tn(r,te,n.lane_radius):En(o,n.D,te,n.lane_radius);_=j;const N=o.length,H=N>0?j*n.flux*l/N:0;return I+=$(H,s),S+=$(a,i),L+=H,v+=j,F++,{laneCount:j,satPos:te,lambdaLightlaneSubBin:H,phase:C,theta:B}}function W(){const B=F>0?F*l:n.bin_size,C=a*n.sub_bin_sampling,N={time:y,bin_size:B,lightlane:I,isotropic:S,lambdaIsotropic:F>0?a*F:C,overlaps:_,overlapsMean:F>0?v/F:0,subBins:F,phase:p,theta:g,lambdaLightlaneExpected:L};return I=0,S=0,L=0,v=0,F=0,N}return{config:{...n},getLaneCount(){return o.length},getState(){return{elapsed:y,phase:p,theta:g,timeInBin:u,timeInSubBin:h,accumulatedLightlane:I,accumulatedIsotropic:S,expectedLightlaneThisBin:L,processedSubBinsInCurrentBin:F,lastLaneCount:_,laneCount:o.length}},reset(){u=0,h=0,p=n.phi,g=n.theta,y=0,I=0,S=0,L=0,F=0,_=0,v=0},flushPartialBin(){if(F<=0)return null;const B=W();return u=0,h=0,B},simulate(B){if(!Number.isFinite(B)||B<=0)return{bins:[],lastLaneCount:_,subBinEvents:0,elapsed:y};let C=B,te=0;const j=[];for(;C>Ue;){const N=l-h,H=n.bin_size-u,R=Math.min(C,N,H);p+=n.velocity*R,g=ht(g+n.thetaDrift*R),y+=R,h+=R,u+=R,C-=R,h>=l-Ue&&(h=0,D(),te++),u>=n.bin_size-Ue&&(u=0,j.push(W()))}return{bins:j,lastLaneCount:_,subBinEvents:te,elapsed:y}}}}function Pt(t,n){const o=t.n+1,r=n-t.mean,s=t.mean+r/o,i=t.m2+r*(n-s);return{n:o,mean:s,m2:i}}function Ft(){return{n:0,mean:0,m2:0}}function In({complexity:t,samplesPerPoint:n,runsPerPoint:o,binSize:r,subBinSampling:s,props:i,observationMode:d,seed:l}){let a=Ft(),u=Ft(),h=0;for(let S=0;S1?a.m2/(a.n-1):0,g=u.n>1?u.m2/(u.n-1):0,y=a.mean>0?p/a.mean:0,I=u.mean>0?g/u.mean:0;return{complexity:t,laneCount:h,meanBlue:a.mean,meanYellow:u.mean,fanoBlue:y,fanoYellow:I,fanoExcess:Math.max(0,y-I)}}function Ln(t,n=1){const o=t.filter(p=>p.complexity>=n&&p.complexity>1&&p.fanoExcess>1e-6);if(o.length<3)return null;let r=0,s=0,i=0,d=0;const l=o.length;for(const p of o){const g=Math.log(p.laneCount),y=Math.log(p.fanoExcess);r+=g,s+=y,i+=g*g,d+=g*y}const a=l*i-r*r;if(Math.abs(a)<1e-12)return null;const u=(l*d-r*s)/a,h=(s-u*r)/l;return{A:Math.exp(h),alpha:-u,predictFanoExcessFromLaneCount(p){return Math.exp(h+u*Math.log(Math.max(1,p)))}}}function $n(t,n=1){const o=t.filter(l=>l.complexity>=n&&l.complexity>1&&l.fanoExcess>1e-6);if(o.length<4)return null;const r=Math.min(...o.map(l=>l.fanoExcess)),s=Math.max(0,r*.98);let i=null;const d=80;for(let l=0;l<=d;l++){const a=l/d*s,u=o.map(A=>({x:A.laneCount,y:A.fanoExcess-a})).filter(A=>A.y>1e-9);if(u.length<3)continue;let h=0,p=0,g=0,y=0;const I=u.length;for(const A of u){const D=Math.log(A.x),W=Math.log(A.y);h+=D,p+=W,g+=D*D,y+=D*W}const S=I*g-h*h;if(Math.abs(S)<1e-12)continue;const L=(I*y-h*p)/S,F=(p-L*h)/I,_=Math.exp(F),v=-L;if(!(_>0)||!(v>0))continue;let $=0;for(const A of o){const D=a+_*Math.pow(Math.max(1,A.laneCount),-v),W=Math.log(Math.max(1e-9,A.fanoExcess))-Math.log(Math.max(1e-9,D));$+=W*W}(!i||$p.x>0&&p.y>0);if(n.length<3)return null;let o=0,r=0,s=0,i=0;const d=n.length;for(const p of n){const g=Math.log(p.x),y=Math.log(p.y);o+=g,r+=y,s+=g*g,i+=g*y}const l=d*s-o*o;if(Math.abs(l)<1e-12)return null;const a=(d*i-o*r)/l,u=(r-a*o)/d,h=Math.exp(u);return{A:h,beta:a,predict(p){return h*Math.pow(Math.max(1e-9,p),a)},invert(p){return h<=0||Math.abs(a)<1e-12||p<=0?null:Math.pow(p/h,1/a)}}}function Dn(t,n){if(!Number.isFinite(n)||n<=0||t.length===0)return null;const o=[...t].sort((a,u)=>a.complexity-u.complexity),r=[...o].sort((a,u)=>a.laneCount-u.laneCount),s=r[0],i=r[r.length-1];if(n<=s.laneCount)return{complexity:s.complexity,mode:"observed-range"};for(let a=1;a({x:a.complexity,y:a.laneCount})))?.invert(n)??null;return l&&Number.isFinite(l)?{complexity:l,mode:"extrapolated"}:{complexity:i.complexity,mode:"observed-max"}}function Ct(t,n,o,r){return t.map((s,i)=>`${i===0?"M":"L"} ${o(s.complexity)} ${r(n(s))}`).join(" ")}function An(t){return t>=10?t.toFixed(0):t>=2?t.toFixed(1):t.toFixed(2)}function Wn(t,n){const r=[.5,.6,.7,.8,.9,1,1.1,1.2,1.4,1.6,1.8,2,2.5,3,4,5,7.5,10].filter(l=>l>=t&&l<=n);if(r.length>=3)return r;const s=5,i=Math.log(t),d=Math.log(n);return Array.from({length:s},(l,a)=>{const u=a/(s-1);return Math.exp(i+(d-i)*u)})}function _n(t){const[n,o]=c.useState(40),[r,s]=c.useState(1e3),[i,d]=c.useState(3),[l,a]=c.useState(1),[u,h]=c.useState(4),[p,g]=c.useState("randomSphere"),[y,I]=c.useState(.05),[S,L]=c.useState(10),[F,_]=c.useState(0),[v,$]=c.useState([]),[A,D]=c.useState(0),[W,B]=c.useState(!1),C=c.useRef(!1),te=c.useRef(-1),j=()=>{Ie(t.host,ke.hover,{page:"fano"})},N=(b,z)=>{Ie(t.host,ke.click,{page:"fano",target:b,...z})};c.useEffect(()=>{let b=!1;return $([]),D(0),B(!0),(async()=>{const z=[];for(let k=1;k<=n;k++){if(b)return;const w=In({complexity:k,samplesPerPoint:r,runsPerPoint:i,binSize:l,subBinSampling:u,props:t,observationMode:p,seed:1e4+k*97+F*100003});z.push(w),$([...z]),D(k/n),await new Promise(K=>setTimeout(K,0))}b||B(!1)})(),()=>{b=!0}},[n,r,i,l,u,p,F,t.radius,t.distance,t.chandraDistance,t.allSectors,t.cumulative,t.theta,t.phi,t.orbitSpeed,t.thetaDrift,t.thetaJitter,t.phiJitter,t.K,t.speedup,t.usePoisson]),c.useEffect(()=>{const b=C.current;if(C.current=W,W&&!b){te.current=-1,Ie(t.host,ke.computeStart,{page:"fano"});return}!W&&b&&(jn(t.host,ke.computeStep,{page:"fano"}),Ie(t.host,ke.computeDone,{page:"fano",points:v.length}))},[W,t.host,v.length]),c.useEffect(()=>{if(!W)return;const b=Math.floor(A*10);b<=te.current||(te.current=b,Ie(t.host,ke.computeStep,{page:"fano",progress:A}))},[A,W,t.host]);const H=c.useMemo(()=>Ln(v,S),[v,S]),R=c.useMemo(()=>$n(v,S),[v,S]),E=c.useMemo(()=>{if(!H||H.alpha<=0||y<=0)return null;if(R&&R.B>=y)return{targetExcess:y,requiredLaneCount:Number.POSITIVE_INFINITY,measuredCrossing:v.find(re=>re.fanoExcess<=y)??null,complexityEstimate:null,blockedByFloor:!0,floorExcess:R.B};const b=R?Math.max(1e-9,y-R.B):y,z=R?R.A:H.A,k=R?R.alpha:H.alpha,w=Math.pow(z/b,1/k);if(!Number.isFinite(w)||w<=0)return null;const K=v.find(re=>re.fanoExcess<=y)??null,V=Dn(v,w);return{targetExcess:y,requiredLaneCount:w,measuredCrossing:K,complexityEstimate:V,blockedByFloor:!1,floorExcess:R?.B??0}},[H,R,v,y]),x=c.useMemo(()=>{const k={top:20,right:20,bottom:42,left:48},w=860-k.left-k.right,K=360-k.top-k.bottom,V=Math.max(2,n),re=[1,...v.map(Y=>Y.fanoBlue),...v.map(Y=>Y.fanoYellow),...v.map(Y=>1+Y.fanoExcess)].filter(Y=>Number.isFinite(Y)&&Y>0),ge=Math.min(...re),he=Math.max(...re),q=Math.max(.001,Math.min(.95,ge*.95)),X=Math.max(1.05,he*1.05),O=Math.log(q),me=Math.log(X),ee=Y=>k.left+(Y-1)/(V-1)*w,fe=Y=>{const ae=Math.min(X,Math.max(q,Y)),ie=Math.log(ae);return k.top+K-(ie-O)/Math.max(1e-9,me-O)*K},ce=Wn(q,X);return{width:860,height:360,margin:k,innerW:w,innerH:K,xToPx:ee,yToPx:fe,yMax:X,yMin:q,yTicks:ce}},[v,n]),U=c.useMemo(()=>v.length>1?Ct(v,b=>b.fanoBlue,x.xToPx,x.yToPx):"",[v,x]),Se=c.useMemo(()=>v.length>1?Ct(v,b=>b.fanoYellow,x.xToPx,x.yToPx):"",[v,x]),G=v.at(-1)??null;return e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"auto"},children:e.jsxs("div",{style:{width:"100%",height:"100%",display:"flex",flexDirection:"column",background:"radial-gradient(circle at 20% 10%, rgba(30,41,59,0.9), rgba(2,6,23,0.96))",color:"var(--terminal-green-soft)",padding:"16px",paddingBottom:`${16+(t.bottomInset??0)}px`,boxSizing:"border-box",gap:"12px",fontFamily:"var(--font-ui)"},children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",flexWrap:"wrap"},children:[e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:"14px",fontWeight:400,letterSpacing:"0.12em",textTransform:"uppercase",fontFamily:"var(--font-headline)",color:"var(--terminal-green-soft)"},children:"Fano Sweep"}),e.jsxs("div",{style:{fontSize:"11px",color:"var(--terminal-green)",marginTop:"4px"},children:["Goal: show ","Fano(Blue)"," trending toward 1.0 (or toward Yellow) as complexity increases."]})]}),e.jsxs("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:[t.onBack&&e.jsx("button",{type:"button",onClick:()=>{N("back-to-simulator"),t.onBack?.()},onPointerEnter:j,style:{border:"1px solid var(--terminal-panel-border)",background:"rgba(7,19,11,0.8)",color:"var(--terminal-green-soft)",padding:"8px 12px",borderRadius:"8px",cursor:"pointer",fontSize:"12px",fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.08em",textTransform:"uppercase"},children:"Back To Simulator"}),e.jsx("button",{type:"button",onClick:()=>{N("rerun-sweep"),_(b=>b+1)},onPointerEnter:j,style:{border:"1px solid var(--terminal-panel-border)",background:W?"rgba(125, 255, 155, 0.14)":"rgba(7,19,11,0.8)",color:"var(--terminal-green-soft)",padding:"8px 12px",borderRadius:"8px",cursor:"pointer",fontSize:"12px",fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.08em",textTransform:"uppercase"},children:W?"Rerun (queued)":"Rerun Sweep"})]})]}),e.jsxs("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:[e.jsx("button",{type:"button",onClick:()=>{N("preset-video-demo"),g("randomSphere"),o(60),s(1200),d(2),a(1),h(4),L(12)},onPointerEnter:j,style:{border:"1px solid var(--terminal-panel-border)",background:"rgba(7,19,11,0.8)",color:"var(--terminal-green-soft)",padding:"6px 10px",borderRadius:8,cursor:"pointer",fontSize:11,fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.06em"},children:"Preset: Video Demo"}),e.jsx("button",{type:"button",onClick:()=>{N("preset-robust-sweep"),g("randomSphere"),o(200),s(3e3),d(5),a(1),h(16),L(40)},onPointerEnter:j,style:{border:"1px solid rgba(125, 255, 155, 0.32)",background:"rgba(2,6,23,0.8)",color:"var(--terminal-green-soft)",padding:"6px 10px",borderRadius:8,cursor:"pointer",fontSize:11,fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.06em"},children:"Preset: Robust Sweep"})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(140px, 1fr))",gap:"8px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Max Complexity",e.jsx("input",{type:"number",min:2,max:200,value:n,onChange:b=>o(Math.max(2,Math.min(200,Number(b.target.value)||2))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Samples / Point",e.jsx("input",{type:"number",min:100,max:2e4,step:100,value:r,onChange:b=>s(Math.max(100,Math.min(2e4,Number(b.target.value)||100))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Runs / Point (Seeds)",e.jsx("input",{type:"number",min:1,max:20,step:1,value:i,onChange:b=>d(Math.max(1,Math.min(20,Number(b.target.value)||1))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Bin Size (s)",e.jsx("input",{type:"number",min:.1,max:20,step:.1,value:l,onChange:b=>a(Math.max(.1,Math.min(20,Number(b.target.value)||.1))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Sub-Bin Sampling",e.jsx("input",{type:"number",min:1,max:256,step:1,value:u,onChange:b=>h(Math.max(1,Math.min(256,Math.round(Number(b.target.value)||1)))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Observation Mode",e.jsxs("select",{value:p,onChange:b=>g(b.target.value),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"},children:[e.jsx("option",{value:"randomSphere",children:"Random Sphere (recommended)"}),e.jsx("option",{value:"orbit",children:"Orbit (path-biased)"})]})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Target Excess (B-Y)",e.jsx("input",{type:"number",min:.001,max:1,step:.005,value:y,onChange:b=>I(Math.max(.001,Math.min(1,Number(b.target.value)||.05))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Fit Start Complexity",e.jsx("input",{type:"number",min:1,max:n,step:1,value:S,onChange:b=>L(Math.max(1,Math.min(n,Number(b.target.value)||1))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("div",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"6px"},children:["Progress",e.jsx("div",{style:{background:"rgba(7,19,11,0.9)",border:"1px solid var(--terminal-panel-border)",borderRadius:"999px",padding:"3px"},children:e.jsx("div",{style:{height:"8px",width:`${Math.round(A*100)}%`,background:"linear-gradient(90deg, var(--terminal-green-dim), var(--terminal-green-soft))",borderRadius:"999px",transition:"width 0.15s ease"}})}),e.jsx("div",{style:{color:"var(--terminal-green)"},children:W?`Running ${Math.round(A*100)}%`:"Complete"})]})]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px",minHeight:0,flex:1},children:[e.jsx("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",width:"100%",minWidth:0,minHeight:"min(58vh, 520px)"},children:e.jsxs("svg",{viewBox:`0 0 ${x.width} ${x.height}`,style:{width:"100%",height:"100%"},children:[e.jsx("rect",{x:0,y:0,width:x.width,height:x.height,fill:"transparent"}),x.yTicks.map((b,z)=>{const k=x.yToPx(b);return e.jsxs("g",{children:[e.jsx("line",{x1:x.margin.left,y1:k,x2:x.margin.left+x.innerW,y2:k,stroke:"rgba(125, 255, 155, 0.12)"}),e.jsx("text",{x:8,y:k+4,fill:"var(--terminal-green)",fontSize:"10",fontFamily:"var(--font-ui)",children:An(b)})]},`ygrid-${z}`)}),e.jsx("line",{x1:x.margin.left,y1:x.yToPx(1),x2:x.margin.left+x.innerW,y2:x.yToPx(1),stroke:"#f97316",strokeDasharray:"4 4",opacity:.8}),e.jsx("text",{x:x.margin.left+6,y:x.yToPx(1)-6,fill:"#fdba74",fontSize:"10",children:"Fano = 1"}),e.jsx("line",{x1:x.margin.left,y1:x.margin.top+x.innerH,x2:x.margin.left+x.innerW,y2:x.margin.top+x.innerH,stroke:"rgba(125, 255, 155, 0.3)"}),e.jsx("line",{x1:x.margin.left,y1:x.margin.top,x2:x.margin.left,y2:x.margin.top+x.innerH,stroke:"rgba(125, 255, 155, 0.3)"}),Array.from({length:Math.min(n,10)},(b,z)=>{const k=1+(n-1)*z/Math.max(1,Math.min(n-1,9)),w=x.xToPx(k);return e.jsxs("g",{children:[e.jsx("line",{x1:w,y1:x.margin.top+x.innerH,x2:w,y2:x.margin.top+x.innerH+4,stroke:"rgba(125, 255, 155, 0.3)"}),e.jsx("text",{x:w,y:x.margin.top+x.innerH+18,fill:"var(--terminal-green)",fontSize:"10",fontFamily:"var(--font-ui)",textAnchor:"middle",children:Math.round(k)})]},`xtick-${z}`)}),Se&&e.jsx("path",{d:Se,fill:"none",stroke:"#fbbf24",strokeWidth:"2",opacity:.95}),U&&e.jsx("path",{d:U,fill:"none",stroke:"#60a5fa",strokeWidth:"2.25",opacity:.95}),H&&v.length>2&&(()=>{const b=v.filter(z=>z.complexity>=S).map((z,k)=>{const w=1+H.predictFanoExcessFromLaneCount(z.laneCount);return`${k===0?"M":"L"} ${x.xToPx(z.complexity)} ${x.yToPx(w)}`}).join(" ");return e.jsx("path",{d:b,fill:"none",stroke:"#93c5fd",strokeDasharray:"5 4",strokeWidth:"1.5",opacity:.8})})(),R&&v.length>2&&(()=>{const b=v.filter(z=>z.complexity>=S).map((z,k)=>{const w=1+R.predictFanoExcessFromLaneCount(z.laneCount);return`${k===0?"M":"L"} ${x.xToPx(z.complexity)} ${x.yToPx(w)}`}).join(" ");return e.jsx("path",{d:b,fill:"none",stroke:"#22d3ee",strokeDasharray:"2 4",strokeWidth:"1.5",opacity:.7})})(),v.map(b=>e.jsxs("g",{children:[e.jsx("circle",{cx:x.xToPx(b.complexity),cy:x.yToPx(b.fanoYellow),r:"2.2",fill:"#fbbf24"}),e.jsx("circle",{cx:x.xToPx(b.complexity),cy:x.yToPx(b.fanoBlue),r:"2.5",fill:"#60a5fa"})]},`dot-${b.complexity}`)),e.jsx("text",{x:x.margin.left+x.innerW/2,y:x.height-8,fill:"var(--terminal-green)",fontSize:"11",fontFamily:"var(--font-ui)",textAnchor:"middle",children:"Complexity"}),e.jsx("text",{x:14,y:x.margin.top+x.innerH/2,fill:"var(--terminal-green)",fontSize:"11",fontFamily:"var(--font-ui)",textAnchor:"middle",transform:`rotate(-90 14 ${x.margin.top+x.innerH/2})`,children:"Fano Factor (Var / Mean, log scale)"})]})}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:"8px",alignItems:"start"},children:[e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Legend"}),e.jsx("div",{style:{color:"#60a5fa"},children:"Blue: Lightlane Fano"}),e.jsx("div",{style:{color:"#fbbf24"},children:"Yellow: Isotropic Fano"}),e.jsx("div",{style:{color:"#fdba74",marginTop:"4px"},children:"Dashed orange: Fano = 1"}),e.jsx("div",{style:{color:"#93c5fd",marginTop:"4px"},children:"Dashed blue: power-fit extrapolation (blue excess over yellow)"}),e.jsx("div",{style:{color:"#22d3ee",marginTop:"4px"},children:"Dashed cyan: floor-aware fit (B + A×N^-α)"})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Latest Point"}),G?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:["Complexity: ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:G.complexity})]}),e.jsxs("div",{children:["Lanes: ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:G.laneCount})]}),e.jsxs("div",{children:["Mean Ratio (B/Y): ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:(G.meanBlue/Math.max(1e-9,G.meanYellow)).toFixed(3)})]}),e.jsxs("div",{children:["Fano Blue: ",e.jsx("span",{style:{fontFamily:"monospace",color:"#93c5fd"},children:G.fanoBlue.toFixed(3)})]}),e.jsxs("div",{children:["Fano Yellow: ",e.jsx("span",{style:{fontFamily:"monospace",color:"#fef3c7"},children:G.fanoYellow.toFixed(3)})]}),e.jsxs("div",{children:["Excess (B-Y): ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:G.fanoExcess.toFixed(3)})]}),e.jsxs("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:["Aggregated over ",r.toLocaleString()," bins × ",i," seeds"]})]}):e.jsx("div",{style:{color:"var(--terminal-green)"},children:"No points yet."})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Power Fit"}),H?e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{color:"var(--terminal-green-soft)"},children:["Excess ≈ ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:H.A.toExponential(2)})," × N",e.jsxs("sup",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:["-",H.alpha.toFixed(2)]})]}),e.jsxs("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:["Fit is on blue excess over yellow using lane count N, starting at complexity ",S,"."]})]}):e.jsx("div",{style:{color:"var(--terminal-green)"},children:"Need more points with nonzero excess."}),R&&e.jsxs("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:["Floor fit: excess ≈ ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:R.B.toFixed(3)})," + ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:R.A.toExponential(2)})," × N",e.jsxs("sup",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:["-",R.alpha.toFixed(2)]})]})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Indistinguishable Target"}),e.jsxs("div",{style:{color:"var(--terminal-green)",marginBottom:"6px"},children:["Criterion: ",e.jsxs("span",{style:{color:"var(--terminal-green-soft)"},children:["Fano Blue - Fano Yellow ≤ ",y.toFixed(3)]})]}),E?e.jsxs(e.Fragment,{children:[E.blockedByFloor?e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{color:"#ff8f8f"},children:"Floor-aware fit predicts no finite crossing for this threshold."}),e.jsxs("div",{children:["Fitted excess floor:"," ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:E.floorExcess.toFixed(3)})]}),e.jsx("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:"Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau."})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:["Required lane count N (fit):"," ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:Math.round(E.requiredLaneCount).toLocaleString()})]}),e.jsxs("div",{children:["Estimated complexity:"," ",e.jsx("span",{style:{fontFamily:"monospace",color:"#93c5fd"},children:E.complexityEstimate?Math.ceil(E.complexityEstimate.complexity).toLocaleString():"n/a"}),E.complexityEstimate&&e.jsxs("span",{style:{color:"var(--terminal-green)"},children:[" ","(",E.complexityEstimate.mode==="observed-range"?"interpolated from current sweep":E.complexityEstimate.mode==="extrapolated"?"extrapolated":"bounded by current sweep",")"]})]})]}),e.jsx("div",{style:{marginTop:"6px",color:"var(--terminal-green)"},children:E.measuredCrossing?`Observed crossing already reached at complexity ${E.measuredCrossing.complexity}.`:"No observed crossing yet in current sweep; estimate uses fit."})]}):e.jsx("div",{style:{color:"var(--terminal-green)"},children:"Need a stable excess fit (nonzero blue excess across multiple points)."})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px",color:"var(--terminal-green)"},children:["Use ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"Random Sphere"})," to isolate discretization convergence from path bias. Orbit mode is still useful to show persistent anisotropy on specific trajectories.",e.jsxs("div",{style:{marginTop:"6px"},children:["For a stronger/cleaner claim in the video: report the threshold estimate together with ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"bin size"}),", ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"sub-bin sampling"}),", and ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"runs/point"}),"."]}),e.jsx("div",{style:{marginTop:"6px"},children:"If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers."})]})]})]})]})})}const Ye=new ut("#dbeafe");function Nn(t,n){const o=new Float32Array(n*3),r=new Float32Array(n*3),s=[],i=t+.01;for(let d=0;dNn(t,o),[t]);return We(({clock:d})=>{const l=n.current;if(!l)return;const a=l.geometry.getAttribute("color");if(!a)return;const u=d.getElapsedTime(),h=a.array;for(let p=0;p{if(!n&&o.current){const s=r.clock.elapsedTime*3,i=.5+(Math.sin(s)+1)/2*1.5;o.current.emissiveIntensity=i}}),e.jsxs("mesh",{position:[0,0,0],children:[e.jsx("sphereGeometry",{args:[t,64,64]}),e.jsx("meshStandardMaterial",{ref:o,color:"#ec4899",emissive:"#db2777",emissiveIntensity:1,toneMapped:!1})]})}function Gn(t){const n=2*Math.PI;let o=t%n;return o<0&&(o+=n),o>Math.PI&&(o=n-o),o}function Un({radius:t,theta:n,phi:o,orbitTime:r,simTime:s,thetaDrift:i=0,paused:d=!1}){const l=c.useRef(null);return We(()=>{if(!d&&l.current){const a=o+r.current,u=Gn(n+(s?.current??0)*i),h=t*Math.sin(u)*Math.cos(a),p=t*Math.cos(u),g=t*Math.sin(u)*Math.sin(a);l.current.position.set(h,p,g),l.current.lookAt(0,0,0)}}),e.jsxs("group",{ref:l,children:[e.jsxs("mesh",{renderOrder:10,children:[e.jsx("sphereGeometry",{args:[.09,16,16]}),e.jsx("meshBasicMaterial",{color:"#22d3ee",toneMapped:!1})]}),e.jsxs("mesh",{renderOrder:9,children:[e.jsx("sphereGeometry",{args:[.16,16,16]}),e.jsx("meshBasicMaterial",{color:"#22d3ee",transparent:!0,opacity:.18,toneMapped:!1})]}),e.jsxs("mesh",{rotation:[Math.PI/2,0,0],children:[e.jsx("cylinderGeometry",{args:[.14,.18,1,16]}),e.jsx("meshStandardMaterial",{color:"#c0c0c0",metalness:.8,roughness:.2})]}),e.jsxs("mesh",{position:[0,0,.3],rotation:[Math.PI/2,0,0],children:[e.jsx("cylinderGeometry",{args:[.18,.18,.16,8]}),e.jsx("meshStandardMaterial",{color:"#d4af37",metalness:.95,roughness:.18})]}),e.jsxs("mesh",{position:[0,0,.6],rotation:[Math.PI/2,0,0],children:[e.jsx("cylinderGeometry",{args:[.22,.22,.2,16]}),e.jsx("meshStandardMaterial",{color:"#ffd700",metalness:1,roughness:.1})]}),e.jsxs("mesh",{position:[0,0,.7],renderOrder:11,children:[e.jsx("sphereGeometry",{args:[.05,12,12]}),e.jsx("meshBasicMaterial",{color:"#f97316",toneMapped:!1})]}),e.jsxs("mesh",{position:[0,0,.35],rotation:[Math.PI/2,0,0],renderOrder:8,children:[e.jsx("cylinderGeometry",{args:[.015,.015,.7,8]}),e.jsx("meshBasicMaterial",{color:"#f97316",transparent:!0,opacity:.7,toneMapped:!1})]}),e.jsxs("group",{position:[0,0,.22],children:[e.jsxs("mesh",{position:[.6,0,0],children:[e.jsx("boxGeometry",{args:[.8,.4,.05]}),e.jsx("meshStandardMaterial",{color:"#1e3a8a",metalness:.5,roughness:.1})]}),e.jsxs("mesh",{position:[-.6,0,0],children:[e.jsx("boxGeometry",{args:[.8,.4,.05]}),e.jsx("meshStandardMaterial",{color:"#1e3a8a",metalness:.5,roughness:.1})]}),e.jsxs("mesh",{position:[.28,0,-.01],children:[e.jsx("boxGeometry",{args:[.18,.05,.04]}),e.jsx("meshStandardMaterial",{color:"#94a3b8",metalness:.7,roughness:.22})]}),e.jsxs("mesh",{position:[-.28,0,-.01],children:[e.jsx("boxGeometry",{args:[.18,.05,.04]}),e.jsx("meshStandardMaterial",{color:"#94a3b8",metalness:.7,roughness:.22})]})]})]})}const xe={solid:"#60a5fa",dark:"#3b82f6",light:"#93c5fd",glow:"rgba(96,165,250,0.5)",panel:"rgba(0,20,40,0.8)"},pe={solid:"#fbbf24",dark:"#f59e0b",light:"#fef3c7",glow:"rgba(251,191,36,0.5)"},tt="var(--font-headline)",ye="var(--font-ui)",Yn="var(--terminal-green)",De="var(--terminal-green-soft)",Fe="var(--terminal-green-muted)";function Jn({bars:t}){const n=window.innerHeight;return e.jsxs(e.Fragment,{children:[t.map(o=>{const r=n-o.startBottom-o.barHeight,s=o.targetLeft-o.startLeft,i=o.targetTop-r;return e.jsx("div",{style:{position:"absolute",left:`${o.startLeft}px`,top:`${r}px`,width:`${o.barWidth}px`,height:`${o.barHeight}px`,background:o.color,borderRadius:"2px 2px 0 0",opacity:.95,animation:"flyToDistribution 1.2s ease-in-out forwards","--delta-x":`${s}px`,"--delta-y":`${i}px`,zIndex:1e3,boxShadow:`0 0 15px ${o.color}`}},o.id)}),e.jsx("style",{children:` + @keyframes flyToDistribution { + 0% { + transform: translate(0, 0) scale(1); + opacity: 0.95; + } + 40% { + transform: translate(calc(var(--delta-x) * 0.3), calc(var(--delta-y) * 0.5)) scale(0.9); + opacity: 0.9; + } + 85% { + transform: translate(calc(var(--delta-x) * 0.95), calc(var(--delta-y) * 0.95)) scale(0.7); + opacity: 0.85; + } + 100% { + transform: translate(var(--delta-x), var(--delta-y)) scale(0.6); + opacity: 0; + } + } + .clickable-bar { + transition: all 0.2s ease; + } + .clickable-bar:hover { + transform: scaleY(1.1) scaleX(1.2); + filter: brightness(1.3); + box-shadow: 0 0 10px currentColor; + } + `})]})}function nt(){return{n:0,meanObs:0,m2Obs:0,meanIso:0,m2Iso:0}}function qn(t,n,o){const r=t.n+1,s=n-t.meanObs,i=t.meanObs+s/r,d=t.m2Obs+s*(n-i),l=o-t.meanIso,a=t.meanIso+l/r,u=t.m2Iso+l*(o-a);return{n:r,meanObs:i,m2Obs:d,meanIso:a,m2Iso:u}}function Xn({complexity:t,radius:n,distance:o,theta:r,phi:s,observationMode:i,allSectors:d,cumulative:l,K:a,orbitRadius:u,orbitVelocity:h,thetaDrift:p,thetaJitter:g,phiJitter:y,usePoisson:I,speedup:S,paused:L,sceneView:F,bottomInset:_=0,showNumericDiagnostics:v=!0,compactNumericDiagnostics:$=!1,host:A,centerDistribution:D=!1,hideFlyingBars:W=!1}){const[B,C]=c.useState({current:0,total:0,lastCheck:0,overlaps:0,currentTheory:0,binOverlapsMean:0,currentExpectedLightlane:0}),te=4,j=c.useMemo(()=>Lt({D:u,theta:r,phi:s,observationMode:i,velocity:h,thetaDrift:p,thetaJitter:g,phiJitter:y,distance:o,hitTestModel:"segment",bin_size:1,complexity:t,sub_bin_sampling:te,flux:a,lane_radius:n,allSectors:d,cumulative:l,usePoisson:I}),[u,r,s,i,h,p,g,y,t,a,n,o,d,l,I]),N=60,H=c.useRef(new Array(N).fill(-1)),R=c.useRef(new Array(N).fill(-1)),E=c.useRef(0),[x,U]=c.useState(new Array(N).fill(-1)),[Se,G]=c.useState(new Array(N).fill(-1)),b=It({flux:a,D:u,lane_radius:n,dt:1,hitTestModel:"segment",lane_length:o}),z=Math.sqrt(b),k=15,w=4*z,K=Math.max(0,b-w),V=b+w,re=I,ge=Math.max(0,Math.floor(K)),he=Math.max(ge,Math.ceil(V)),q=re?he-ge+1:k,X=re?1:Math.max(1e-9,(V-K)/k),O=m=>{if(re){const M=Math.round(m);return M<=ge?0:M>=he?q-1:M-ge}return m=V?q-1:Math.floor((m-K)/X)},me=m=>re?ge+m:K+(m+.5)*X,[ee,fe]=c.useState(new Array(q).fill(0)),[ce,Y]=c.useState(new Array(q).fill(0)),[ae,ie]=c.useState(new Set),[Be,Ce]=c.useState(new Set),[Le,Te]=c.useState([]),Re=c.useRef(0),$e=c.useRef(nt()),[J,_e]=c.useState(nt()),be=c.useRef(L),Ze=c.useRef(0);c.useEffect(()=>{fe(new Array(q).fill(0)),Y(new Array(q).fill(0)),H.current.fill(-1),R.current.fill(-1),E.current=0,U(new Array(N).fill(-1)),G(new Array(N).fill(-1)),ie(new Set),Ce(new Set),Te([]),$e.current=nt(),_e(nt()),C({current:0,total:0,lastCheck:0,overlaps:0,currentTheory:0,binOverlapsMean:0,currentExpectedLightlane:0})},[t,a,n,o,u,r,s,i,h,p,g,y,d,l,I,q]);const Qe=(m,M)=>{if(m.length===0)return;let T=0,le=0,se=0,je=B.binOverlapsMean,Q=B.currentExpectedLightlane,de=$e.current;for(const ue of m){const Me=ue.lightlane,we=ue.isotropic;if(T+=Me,le=Me,se=we,je=ue.overlapsMean,Q=ue.lambdaLightlaneExpected,de=qn(de,Me,we),H.current[E.current]=Me,R.current[E.current]=we,E.current++,E.current>=N){const Ee=Math.max(10,...H.current.filter(oe=>oe>=0),...R.current.filter(oe=>oe>=0));ne([...H.current],[...R.current],Ee),H.current.fill(-1),R.current.fill(-1),E.current=0,ie(new Set),Ce(new Set)}}$e.current=de,C(ue=>({current:le,total:ue.total+T,lastCheck:Date.now(),overlaps:M,currentTheory:se,binOverlapsMean:je,currentExpectedLightlane:Q})),_e(de),U([...H.current]),G([...R.current])},Ne=c.useRef(!1),He=c.useRef(null),Ke=(m,M)=>{m.stopPropagation(),Ne.current=!0,He.current=M,m.target.setPointerCapture(m.pointerId),Ie(A,ke.click,{target:`${M}-periodogram`,action:"pointer-down"})},et=(m,M,T,le)=>{if(!Ne.current||He.current!==M)return;m.stopPropagation();const se=m.currentTarget.getBoundingClientRect(),je=m.clientX-se.left,Q=Math.floor(je/se.width*N);if(Q>=0&&Q=0&&!ue&&Z(Q,de,M,le)}},f=m=>{m.stopPropagation(),Ne.current=!1,He.current=null},P=(m,M,T,le)=>{const se=window.innerWidth,je=m/N*se,Q=se/N,de=Math.max(2,M/le*80),we=T==="observed"?25:110,Ee=O(M),oe=20,Pe=se-2*oe,ze=oe+(Ee+.5)/q*Pe;return{startLeft:je,startBottom:we,barHeight:de,barWidth:Q,targetLeft:ze,targetTop:150,binIndex:Ee}},Z=(m,M,T,le)=>{if(M<0)return;const se=Date.now();se-Ze.current>=45&&(Ze.current=se,Ie(A,ke.computeStep,{target:`${T}-periodogram`,value:M}));const{startLeft:je,startBottom:Q,barHeight:de,barWidth:ue,targetLeft:Me,targetTop:we}=P(m,M,T,le),Ee={id:Re.current++,value:M,startLeft:je,startBottom:Q,barHeight:de,barWidth:ue,targetLeft:Me,targetTop:we,color:T==="observed"?pe.solid:xe.solid,type:T};Te(oe=>[...oe,Ee]),T==="observed"?(ie(oe=>new Set(oe).add(m)),fe(oe=>{const Pe=[...oe],ze=O(M);return Pe[ze]++,Pe})):(Ce(oe=>new Set(oe).add(m)),Y(oe=>{const Pe=[...oe],ze=O(M);return Pe[ze]++,Pe}))},ne=(m,M,T)=>{const le=[],se=[...ee],je=[...ce];m.forEach((Q,de)=>{if(Q>=0){const{startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,binIndex:ze}=P(de,Q,"observed",T);le.push({id:Re.current++,value:Q,startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,color:pe.solid,type:"observed"}),se[ze]++}}),M.forEach((Q,de)=>{if(Q>=0){const{startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,binIndex:ze}=P(de,Q,"theory",T);le.push({id:Re.current++,value:Q,startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,color:xe.solid,type:"theory"}),je[ze]++}}),Te(Q=>[...Q,...le]),fe(se),Y(je)};c.useEffect(()=>{if(Le.length>0){const m=setTimeout(()=>{Te([])},1300);return()=>clearTimeout(m)}},[Le.length]);const Ve=c.useRef(0);c.useEffect(()=>{E.current{const m=be.current;if(be.current=L,!L||m)return;const M=j.flushPartialBin();M&&Qe([M],M.overlaps)},[L,j]),We((m,M)=>{if(L)return;const T=j.simulate(M*S);T.subBinEvents>0&&C(le=>({...le,overlaps:T.lastLaneCount})),Qe(T.bins,T.lastLaneCount)});const $t=x.filter(m=>m>=0),Ot=Se.filter(m=>m>=0),rt=Math.max(10,Math.max(0,...$t)),it=Math.max(10,Math.max(0,...Ot)),xt=Math.max(1,...ee,...ce),mt=J.n>1?J.m2Obs/(J.n-1):0,st=J.n>1?J.m2Iso/(J.n-1):0,Dt=J.meanIso>0?J.meanObs/J.meanIso:0,gt=st>0?mt/st:0,at=J.meanObs>0?mt/J.meanObs:0,Je=J.meanIso>0?st/J.meanIso:0,lt=j.getLaneCount(),bt=lt>0&&a>0?lt*b/a:0,yt=v&&!$,qe=F!=="lightlane",Oe=F!=="poisson",At=Le.filter(m=>m.type==="theory"&&qe||m.type==="observed"&&Oe),Wt=F==="poisson"?"Shot Noise Distribution":F==="lightlane"?"Shot Noise + Lightlane":"Head to Head",Ge={background:"rgba(255,255,255,0.04)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px",fontFamily:ye},vt=e.jsxs("div",{style:{marginTop:$?"0":"12px",display:"grid",gridTemplateColumns:$?"1fr":"repeat(3, minmax(0, 1fr))",gap:$?"6px":"8px",fontSize:"10px",color:De,fontFamily:ye},children:[e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Samples"}),e.jsx("div",{style:{fontFamily:"monospace"},children:J.n})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Mean Ratio (Lightlane/Poisson)"}),e.jsx("div",{style:{fontFamily:"monospace",color:De},children:J.n>0?Dt.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Var Ratio (Lightlane/Poisson)"}),e.jsx("div",{style:{fontFamily:"monospace",color:gt>1.1?pe.light:xe.light},children:J.n>1?gt.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Fano Lightlane"}),e.jsx("div",{style:{fontFamily:"monospace",color:pe.light},children:J.n>1?at.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Fano Poisson"}),e.jsx("div",{style:{fontFamily:"monospace",color:xe.light},children:J.n>1?Je.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Fano Ratio (Lightlane/Poisson)"}),e.jsx("div",{style:{fontFamily:"monospace",color:Je>0&&at/Je>1.05?pe.light:De},children:J.n>1&&Je>0?(at/Je).toFixed(3):"n/a"})]})]}),St=e.jsxs("div",{style:{marginTop:$?"6px":"8px",display:$?"grid":"flex",gridTemplateColumns:$?"1fr":void 0,justifyContent:$?void 0:"center",gap:$?"4px":"12px",flexWrap:$?void 0:"wrap",fontSize:"10px",color:Fe,fontFamily:ye},children:[e.jsxs("span",{children:["LC(now): ",B.overlaps]}),e.jsxs("span",{children:["LC(bin avg): ",B.binOverlapsMean.toFixed(2)]}),e.jsxs("span",{children:["LC iso target: ",Number.isFinite(bt)?bt.toFixed(2):"n/a"]}),e.jsxs("span",{children:["E[Lightlane|bin]: ",B.currentExpectedLightlane.toFixed(2)]}),e.jsxs("span",{children:["Lightlane(last): ",typeof B.current=="number"?Number(B.current).toFixed(2):B.current]}),e.jsxs("span",{children:["Lanes: ",lt]}),e.jsxs("span",{children:["Mode: ",i==="randomSphere"?"Random Sphere":"Orbit"]}),e.jsxs("span",{children:["theta drift: ",p.toFixed(3)]}),e.jsxs("span",{children:["theta jitter: ",g.toFixed(3)]}),e.jsxs("span",{children:["phi jitter: ",y.toFixed(3)]})]});return e.jsxs(e.Fragment,{children:[!W&&e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"none"},children:e.jsx(Jn,{bars:At})}),e.jsxs(Ae,{fullscreen:!0,style:{pointerEvents:"none",display:"flex",flexDirection:"column",justifyContent:D?"center":"flex-start"},children:[e.jsxs("div",{style:{position:"absolute",top:"18px",left:"20px",right:"20px",color:De,fontSize:"12px",fontWeight:400,textAlign:"center",textTransform:"uppercase",letterSpacing:"0.16em",fontFamily:tt},children:[Wt,e.jsxs("span",{style:{fontSize:"10px",fontWeight:"normal",marginLeft:"10px",opacity:.8,fontFamily:ye,color:Yn},children:["(λ = ",b.toFixed(1),", σ = ",z.toFixed(1),")"]})]}),e.jsxs("div",{style:{width:"100%",padding:D?"20px":"60px 20px 20px 20px",background:D?"transparent":"linear-gradient(to bottom, rgba(0,0,0,0.9), transparent)",fontFamily:ye,alignSelf:"center"},children:[e.jsx("div",{style:{position:"absolute",left:"5px",top:D?"130px":"170px",transform:"rotate(-90deg)",transformOrigin:"left top",fontSize:"10px",color:Fe,fontStyle:"italic",whiteSpace:"nowrap",fontFamily:ye},children:"← Frequency (how many)"}),e.jsx("div",{style:{display:"flex",height:"100px",gap:"2px",alignItems:"flex-end",padding:"0 20px"},children:ee.map((m,M)=>{const T=ce[M],le=m/xt*100,se=T/xt*100;return e.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",position:"relative",height:"100%",justifyContent:"flex-end"},children:[e.jsxs("div",{style:{width:"100%",display:"flex",justifyContent:"center",gap:"1px",alignItems:"flex-end",height:"100%",position:"relative"},children:[qe&&e.jsx("div",{style:{width:Oe?"45%":"92%",height:`${se}%`,background:`linear-gradient(to top, ${xe.solid}, ${xe.dark})`,borderRadius:"2px 2px 0 0",minHeight:T>0?"2px":"0",transition:"height 0.3s ease",boxShadow:T>0?`0 0 5px ${xe.glow}`:"none",position:"relative"},children:T>0&&e.jsx("div",{style:{position:"absolute",top:"-16px",left:"50%",transform:"translateX(-50%)",fontSize:"9px",fontWeight:"bold",color:xe.solid,textShadow:"0 0 3px rgba(0,0,0,0.8)"},children:T})}),Oe&&e.jsx("div",{style:{width:qe?"45%":"92%",height:`${le}%`,background:`linear-gradient(to top, ${pe.solid}, ${pe.dark})`,borderRadius:"2px 2px 0 0",minHeight:m>0?"2px":"0",transition:"height 0.3s ease",boxShadow:m>0?`0 0 5px ${pe.glow}`:"none",position:"relative"},children:m>0&&e.jsx("div",{style:{position:"absolute",top:"-16px",left:"50%",transform:"translateX(-50%)",fontSize:"9px",fontWeight:"bold",color:pe.solid,textShadow:"0 0 3px rgba(0,0,0,0.8)"},children:m})})]}),e.jsx("div",{style:{position:"absolute",bottom:"-18px",fontSize:"9px",color:Fe,fontWeight:"bold",fontFamily:ye},children:me(M).toFixed(0)})]},M)})}),e.jsx("div",{style:{textAlign:"center",marginTop:"25px",fontSize:"10px",color:Fe,fontStyle:"italic",fontFamily:ye},children:"Photon Count Value →"}),e.jsxs("div",{style:{display:"flex",justifyContent:"center",gap:"20px",marginTop:"25px",fontSize:"10px"},children:[qe&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[e.jsx("div",{style:{width:"12px",height:"12px",background:xe.solid,borderRadius:"2px"}}),e.jsx("span",{style:{color:xe.solid},children:"Theory (Poisson)"})]}),Oe&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[e.jsx("div",{style:{width:"12px",height:"12px",background:pe.solid,borderRadius:"2px"}}),e.jsx("span",{style:{color:pe.solid},children:"Observed (Lightlanes)"})]})]}),yt&&vt,yt&&St]})]}),v&&$&&e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"none"},children:e.jsxs("div",{style:{position:"absolute",top:"88px",left:"12px",width:"min(300px, calc(100vw - 24px))",background:"linear-gradient(to bottom, rgba(0,0,0,0.88), rgba(0,0,0,0.55))",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",boxShadow:"0 8px 24px rgba(0,0,0,0.35)",fontFamily:ye},children:[e.jsx("div",{style:{color:De,fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.08em",marginBottom:"8px",fontWeight:400,fontFamily:tt},children:"Diagnostics"}),vt,St]})}),e.jsxs(Ae,{fullscreen:!0,style:{pointerEvents:"none",display:"flex",flexDirection:"column",justifyContent:"flex-end",paddingBottom:`${_}px`,boxSizing:"border-box"},children:[qe&&e.jsxs("div",{onPointerDown:m=>Ke(m,"theory"),onPointerMove:m=>et(m,"theory",Se,it),onPointerUp:f,onPointerLeave:f,style:{width:"100%",height:"100px",background:`linear-gradient(to top, ${xe.panel}, transparent)`,display:"flex",alignItems:"flex-end",padding:Oe?"0 20px 5px 20px":"0 20px 20px 20px",gap:"2px",position:"relative",borderBottom:Oe?"1px solid #555":"none",pointerEvents:"auto",touchAction:"none",cursor:"crosshair"},children:[e.jsx("div",{style:{position:"absolute",top:"10px",left:"20px",color:xe.solid,fontSize:"10px",fontWeight:400,pointerEvents:"none",fontFamily:tt,letterSpacing:"0.08em"},children:"THEORY (Poisson) - Swipe or click to count"}),Se.map((m,M)=>{const T=Be.has(M);return e.jsx("div",{className:m>=0&&!T?"clickable-bar":"",style:{flex:1,height:m>=0&&!T?`${m/it*100}%`:"0",background:m===0?"rgba(255,255,255,0.1)":xe.solid,color:xe.solid,minHeight:m>=0&&!T?"1px":"0",transition:"all 0.3s ease",opacity:T?0:.8,borderRadius:"2px 2px 0 0",transform:T?"scale(0)":"scale(1)",pointerEvents:"none"}},M)}),e.jsxs("div",{style:{position:"absolute",bottom:"10px",right:"80px",color:De,fontFamily:ye,fontSize:"10px",pointerEvents:"none"},children:["Max: ",it]})]}),Oe&&e.jsxs("div",{onPointerDown:m=>Ke(m,"observed"),onPointerMove:m=>et(m,"observed",x,rt),onPointerUp:f,onPointerLeave:f,style:{width:"100%",height:"100px",background:"linear-gradient(to top, rgba(0,0,0,0.8), transparent)",display:"flex",alignItems:"flex-end",padding:"0 20px 20px 20px",gap:"2px",position:"relative",pointerEvents:"auto",touchAction:"none",cursor:"crosshair"},children:[e.jsx("div",{style:{position:"absolute",top:"10px",left:"20px",color:pe.solid,fontSize:"10px",fontWeight:400,pointerEvents:"none",fontFamily:tt,letterSpacing:"0.08em"},children:"OBSERVED (Lightlanes) - Swipe or click to count"}),x.map((m,M)=>{const T=ae.has(M);return e.jsx("div",{className:m>=0&&!T?"clickable-bar":"",style:{flex:1,height:m>=0&&!T?`${m/rt*100}%`:"0",background:m===0?"rgba(255,255,255,0.1)":m>0?pe.solid:"transparent",color:pe.solid,minHeight:m>=0&&!T?"2px":"0",transition:"all 0.3s ease",borderTop:m>=0&&!T?`2px solid ${pe.light}`:"none",opacity:T?0:.8,position:"relative",borderRadius:"2px 2px 0 0",transform:T?"scale(0)":"scale(1)",pointerEvents:"none"},children:(M+1)%5===0&&!T&&e.jsx("div",{style:{position:"absolute",bottom:"-20px",left:"50%",transform:"translateX(-50%)",width:"1px",height:"5px",background:"#fff",opacity:.5,pointerEvents:"none"},children:e.jsx("span",{style:{position:"absolute",top:"5px",left:"-50%",fontSize:"10px",color:Fe,fontFamily:ye},children:M+1})})},M)}),e.jsxs("div",{style:{position:"absolute",bottom:"10px",right:"80px",color:De,fontFamily:ye,fontSize:"10px"},children:["Max: ",rt]})]})]})]})}const Zn={complexity:1,radius:2,distance:5,chandraDistance:6,showAxes:!1,lightlanes:!0,allSectors:!0,cumulative:!1,phi:0,theta:Math.PI/2,observationMode:"orbit",orbitSpeed:.2,thetaDrift:0,thetaJitter:0,phiJitter:0,speedup:1,K:1e3,usePoisson:!0,sceneView:"both",hideScenePresentation:!1,hideFlyingBars:!1,hideDataBoxes:!1};function eo(t){const n=t.host,o=t.devUi?.compactNumericDiagnostics??!1,r=t.devUi?.maxComplexity??20,s=t.devUi?.maxSpeedup??240,i=74,d=20,l=t.config?.params||{},{complexity:a,radius:u,distance:h,chandraDistance:p,showAxes:g,lightlanes:y,allSectors:I,cumulative:S,phi:L,theta:F,observationMode:_,orbitSpeed:v,thetaDrift:$,thetaJitter:A,phiJitter:D,speedup:W,K:B,usePoisson:C,sceneView:te,hideScenePresentation:j,hideFlyingBars:N,hideDataBoxes:H}={...Zn,...l},R=!H,E=c.useRef(0),x=c.useRef(0),[U,Se]=c.useState(!1),[G,b]=c.useState("scene"),[z,k]=c.useState(te),[w,K]=c.useState(a),[V,re]=c.useState(W),[ge,he]=c.useState(null),q=c.useRef(null);c.useEffect(()=>{k(te)},[te]),c.useEffect(()=>{K(a)},[a]),c.useEffect(()=>{re(W)},[W]);const X=V>20,O=z!=="lightlane",me=z!=="poisson",ee=G==="scene"&&z!=="poisson",fe=f=>f==="poisson"?"Poisson":f==="lightlane"?"Lightlane":"Both",ce=()=>{Ie(n,ke.hover,{page:G,sceneView:z})},Y=(f,P)=>{Ie(n,ke.click,{page:G,sceneView:z,target:f,...P})},ae=f=>{he(f),q.current&&clearTimeout(q.current),q.current=setTimeout(()=>{he(null),q.current=null},1500)},ie=f=>{const P=Array.from({length:d},(Z,ne)=>ne===0?1:ne===d-1?f:Math.round(1+(f-1)*ne/(d-1)));return Array.from(new Set(P)).sort((Z,ne)=>Z-ne)},Be=(f,P)=>{const Z=ie(P);return Z.find(ne=>f{const Z=ie(P);for(let ne=Z.length-1;ne>=0;ne-=1)if(f>Z[ne])return Z[ne];return Z[0]},Le=(f,P)=>{const Z=ie(P),ne=Z.findIndex(Ve=>f<=Ve);return ne>=0?ne:Z.length-1},Te=Le(w,r),Re=Le(V,s),$e=`${(Te+1)/d*100}%`,J=`${(Re+1)/d*100}%`,_e=ee&&w>ie(r)[0],be=ee&&wie(s)[0],Qe=V{if(!ee)return;const P=f==="up"?Be(w,r):Ce(w,r);P!==w&&(Y("complexity",{direction:f,value:P}),K(P),t.devUi?.onSetParam?.("complexity",P),ae(`Complexity ${P}`))},He=f=>{const P=f==="up"?Be(V,s):Ce(V,s);P!==V&&(Y("turbo",{direction:f,value:P}),re(P),t.devUi?.onSetParam?.("speedup",P),ae(`Turbo ${P}x`))},Ke=()=>{const f=["poisson","lightlane","both"],P=f.indexOf(z),Z=f[(P+1)%f.length];Y("mode",{value:Z}),k(Z),ae(`Mode ${fe(Z)}`)},et=()=>{Y("fano-page",{value:G==="scene"?"fano":"scene"}),b(f=>f==="scene"?"fano":"scene")};return c.useEffect(()=>{const f=P=>{if(P.code!=="Space"||P.repeat)return;const Z=P.target,ne=Z?.tagName;ne==="INPUT"||ne==="TEXTAREA"||Z?.isContentEditable||(P.preventDefault(),Se(Ve=>!Ve))};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[]),c.useEffect(()=>()=>{q.current&&clearTimeout(q.current)},[]),We((f,P)=>{U||G==="fano"||(E.current+=P*v*V,x.current+=P*V)}),c.useEffect(()=>{E.current=0,x.current=0},[w,u,h,p,L,F,_,v,$,A,D,V,B,I,S,C]),e.jsxs(e.Fragment,{children:[e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"none",zIndex:3e3},children:e.jsx("div",{style:{position:"absolute",top:12,right:12,display:"flex",gap:8,pointerEvents:"auto"},children:e.jsx("button",{type:"button",onClick:()=>{Y("advanced"),t.devUi?.onOpenHarness?.()},onPointerEnter:ce,style:{border:"1px solid var(--terminal-panel-border)",background:"rgba(7,19,11,0.86)",color:"var(--terminal-green-soft)",borderRadius:10,padding:"10px 12px",fontSize:12,fontWeight:400,letterSpacing:"0.08em",fontFamily:"var(--font-headline)",textTransform:"uppercase",cursor:"pointer",boxShadow:"0 8px 24px rgba(0,0,0,0.25)"},children:"Advanced"})})}),e.jsx("ambientLight",{intensity:.4}),e.jsx("directionalLight",{position:[10,10,5],intensity:1,castShadow:!0}),e.jsx("pointLight",{position:[-10,-10,-10],intensity:.5,color:"blue"}),G==="scene"?e.jsxs(e.Fragment,{children:[!j&&O&&e.jsx(Hn,{radius:p}),!j&&me&&e.jsx(yn,{complexity:w,lightlanes:y,radius:u,distance:h,allSectors:I,cumulative:S}),!j&&e.jsx(Vn,{radius:u,paused:U}),e.jsx(Un,{radius:p,theta:F,phi:L,orbitTime:E,simTime:x,thetaDrift:$,paused:U}),e.jsx(Xn,{complexity:w,radius:u,distance:h,theta:F,phi:L,observationMode:_,allSectors:I,cumulative:S,K:B,orbitRadius:p,orbitVelocity:v,thetaDrift:$,thetaJitter:A,phiJitter:D,usePoisson:C,speedup:V,paused:U,sceneView:z,bottomInset:i,showNumericDiagnostics:R,compactNumericDiagnostics:o,host:n,centerDistribution:j,hideFlyingBars:N||X}),U&&e.jsx("group",{position:[0,p+1.5,0],children:e.jsxs("mesh",{children:[e.jsx("sphereGeometry",{args:[.12,16,16]}),e.jsx("meshBasicMaterial",{color:"#ef4444",toneMapped:!1})]})}),g&&e.jsx("axesHelper",{args:[Math.max(5,w)]}),e.jsx(xn,{infiniteGrid:!0,fadeDistance:50,sectionColor:"#333",cellColor:"#111",position:[0,-.01,0]})]}):e.jsx(_n,{radius:u,distance:h,chandraDistance:p,allSectors:I,cumulative:S,theta:F,phi:L,orbitSpeed:v,thetaDrift:$,thetaJitter:A,phiJitter:D,K:B,speedup:V,usePoisson:C,bottomInset:i,onBack:()=>b("scene"),host:n}),e.jsxs(Ae,{fullscreen:!0,style:{pointerEvents:"none",zIndex:3200},children:[ge&&e.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%) skewX(-12deg)",padding:"16px 28px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",fontStyle:"italic",fontSize:42,letterSpacing:"0.16em",textTransform:"uppercase",textShadow:"0 0 20px rgba(125,255,155,0.38), 0 0 42px rgba(125,255,155,0.18)"},children:e.jsx("span",{style:{display:"inline-block",transform:"skewX(12deg)"},children:ge})}),e.jsx("div",{style:{position:"absolute",left:10,bottom:i+16,width:26,height:"min(44vh, 320px)",display:"flex",alignItems:"flex-end"},children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",borderRadius:14,border:"1px solid rgba(251,191,36,0.35)",background:"linear-gradient(to top, rgba(30,18,0,0.92), rgba(7,19,11,0.15))",boxShadow:"0 0 22px rgba(251,191,36,0.12)",overflow:"hidden",opacity:ee?1:.35,transition:"opacity 0.2s ease"},children:[e.jsx("div",{style:{position:"absolute",inset:"6px",borderRadius:10,border:"1px solid rgba(251,191,36,0.14)"}}),e.jsx("div",{style:{position:"absolute",left:5,right:5,bottom:5,height:$e,borderRadius:9,background:"linear-gradient(to top, rgba(245,158,11,0.96), rgba(253,224,71,0.96))",boxShadow:"0 0 18px rgba(251,191,36,0.5)",transition:"height 0.25s ease"}}),e.jsx("div",{style:{position:"absolute",inset:"8px 7px",display:"grid",gridTemplateRows:`repeat(${d}, 1fr)`,pointerEvents:"none"},children:Array.from({length:d}).map((f,P)=>e.jsx("div",{style:{borderTop:P===0?"none":"1px solid rgba(251,191,36,0.15)"}},`complexity-tick-${P}`))}),e.jsxs("div",{style:{position:"absolute",left:34,bottom:0,color:"#fcd34d",fontFamily:"var(--font-headline)",fontSize:10,letterSpacing:"0.08em",textTransform:"uppercase",writingMode:"vertical-rl",transform:"rotate(180deg)",textShadow:"0 0 12px rgba(251,191,36,0.25)"},children:["Complexity ",Te+1,"/",d]})]})}),e.jsx("div",{style:{position:"absolute",right:10,bottom:i+16,width:26,height:"min(44vh, 320px)",display:"flex",alignItems:"flex-end"},children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",borderRadius:14,border:"1px solid rgba(244,114,182,0.35)",background:"linear-gradient(to top, rgba(42,7,23,0.94), rgba(7,19,11,0.15))",boxShadow:"0 0 22px rgba(244,114,182,0.14)",overflow:"hidden"},children:[e.jsx("div",{style:{position:"absolute",inset:"6px",borderRadius:10,border:"1px solid rgba(244,114,182,0.14)"}}),e.jsx("div",{style:{position:"absolute",left:5,right:5,bottom:5,height:J,borderRadius:9,background:"linear-gradient(to top, rgba(236,72,153,0.96), rgba(244,114,182,0.98))",boxShadow:"0 0 18px rgba(244,114,182,0.5)",transition:"height 0.25s ease"}}),e.jsx("div",{style:{position:"absolute",inset:"8px 7px",display:"grid",gridTemplateRows:`repeat(${d}, 1fr)`,pointerEvents:"none"},children:Array.from({length:d}).map((f,P)=>e.jsx("div",{style:{borderTop:P===0?"none":"1px solid rgba(244,114,182,0.15)"}},`turbo-tick-${P}`))}),e.jsxs("div",{style:{position:"absolute",right:34,bottom:0,color:"#f9a8d4",fontFamily:"var(--font-headline)",fontSize:10,letterSpacing:"0.08em",textTransform:"uppercase",writingMode:"vertical-rl",textShadow:"0 0 12px rgba(244,114,182,0.25)"},children:["Turbo ",Re+1,"/",d]})]})}),e.jsx("div",{style:{position:"absolute",left:12,right:12,bottom:10,display:"grid",gridTemplateColumns:"repeat(4, minmax(0, 1fr))",gap:8,pointerEvents:"auto"},children:[{label:"Complexity",kind:"adjust",active:!1,disabled:!ee,accent:"rgba(245,158,11,0.2)",sublabel:`${w} • ${Te+1}/${d}`,meterColor:"linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))",meterSide:"left",meterFill:$e,onDecrease:()=>Ne("down"),onIncrease:()=>Ne("up"),canDecrease:_e,canIncrease:be},{label:"Mode",kind:"action",onClick:Ke,active:!1,accent:"rgba(59,130,246,0.18)",sublabel:fe(z)},{label:"Fano Sweep",kind:"action",onClick:et,active:G==="fano",accent:"rgba(59,130,246,0.22)",sublabel:G==="fano"?"Open":"Scene"},{label:"Turbo",kind:"adjust",active:!1,accent:"rgba(34,197,94,0.2)",sublabel:`${V}x • ${Re+1}/${d}`,meterColor:"linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))",meterSide:"right",meterFill:J,onDecrease:()=>He("down"),onIncrease:()=>He("up"),canDecrease:Ze,canIncrease:Qe}].map(f=>f.kind==="adjust"?e.jsxs("div",{style:{minHeight:54,border:"1px solid var(--terminal-panel-border)",background:f.active?f.accent:"rgba(7,19,11,0.86)",color:"var(--terminal-green-soft)",borderRadius:10,padding:"8px 10px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:6,boxShadow:f.active?"0 0 18px rgba(125,255,155,0.12)":"0 8px 24px rgba(0,0,0,0.25)",position:"relative",overflow:"hidden",opacity:f.disabled?.38:1},children:["meterColor"in f&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{position:"absolute",top:6,bottom:6,left:f.meterSide==="left"?6:void 0,right:f.meterSide==="right"?6:void 0,width:6,borderRadius:999,background:"rgba(255,255,255,0.07)",border:"1px solid rgba(255,255,255,0.08)"}}),e.jsx("div",{style:{position:"absolute",bottom:7,left:f.meterSide==="left"?7:void 0,right:f.meterSide==="right"?7:void 0,width:4,height:f.meterFill,borderRadius:999,background:f.meterColor,boxShadow:f.meterSide==="left"?"0 0 10px rgba(251,191,36,0.45)":"0 0 10px rgba(244,114,182,0.45)",transition:"height 0.25s ease"}})]}),e.jsx("span",{style:{fontFamily:"var(--font-headline)",fontSize:11,fontWeight:400,letterSpacing:"0.08em",textTransform:"uppercase",lineHeight:1.1},children:f.label}),e.jsx("span",{style:{fontFamily:"var(--font-ui)",fontSize:10,color:"var(--terminal-green)",letterSpacing:"0.08em",lineHeight:1},children:f.sublabel}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:6,width:"100%",marginTop:"auto"},children:[e.jsx("button",{type:"button",onClick:f.onDecrease,onPointerEnter:ce,disabled:f.disabled||!f.canDecrease,style:{border:"1px solid rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.04)",color:"var(--terminal-green-soft)",borderRadius:8,minHeight:24,cursor:f.disabled||!f.canDecrease?"not-allowed":"pointer",fontFamily:"var(--font-headline)",fontSize:12,letterSpacing:"0.08em",opacity:f.disabled||!f.canDecrease?.35:1,position:"relative",zIndex:1},children:"-"}),e.jsx("button",{type:"button",onClick:f.onIncrease,onPointerEnter:ce,disabled:f.disabled||!f.canIncrease,style:{border:"1px solid rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.04)",color:"var(--terminal-green-soft)",borderRadius:8,minHeight:24,cursor:f.disabled||!f.canIncrease?"not-allowed":"pointer",fontFamily:"var(--font-headline)",fontSize:12,letterSpacing:"0.08em",opacity:f.disabled||!f.canIncrease?.35:1,position:"relative",zIndex:1},children:"+"})]})]},f.label):e.jsxs("button",{type:"button",onClick:f.onClick,onPointerEnter:ce,disabled:"disabled"in f?f.disabled:!1,style:{minHeight:54,border:"1px solid var(--terminal-panel-border)",background:f.active?f.accent:"rgba(7,19,11,0.86)",color:"var(--terminal-green-soft)",borderRadius:10,padding:"8px 10px",cursor:"disabled"in f&&f.disabled?"not-allowed":"pointer",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,boxShadow:f.active?"0 0 18px rgba(125,255,155,0.12)":"0 8px 24px rgba(0,0,0,0.25)",position:"relative",overflow:"hidden",opacity:"disabled"in f&&f.disabled?.38:1},children:[e.jsx("span",{style:{fontFamily:"var(--font-headline)",fontSize:11,fontWeight:400,letterSpacing:"0.08em",textTransform:"uppercase",lineHeight:1.1},children:f.label}),e.jsx("span",{style:{fontFamily:"var(--font-ui)",fontSize:10,color:"var(--terminal-green)",letterSpacing:"0.08em",lineHeight:1},children:f.sublabel})]},f.label))})]}),e.jsx("color",{attach:"background",args:["#050505"]})]})}const to={name:"lightlane",displayName:"Lightlane Challenge",version:"1.1.0",paramSchema:{hideScenePresentation:{type:"boolean",label:"Hide Sphere + Lightlanes",default:!1},hideFlyingBars:{type:"boolean",label:"Hide Flying Bars",default:!1},hideDataBoxes:{type:"boolean",label:"Hide Data Boxes",default:!1},complexity:{type:"range",label:"Complexity",default:5,min:1,max:20,step:1},radius:{type:"range",label:"Distance to star",default:2,min:.1,max:5,step:.1},chandraDistance:{type:"range",label:"Chandra Camera Distance",default:6,min:5,max:30,step:.5},observationMode:{type:"select",label:"Observation Mode",default:"randomSphere",options:[{value:"orbit",label:"Orbit"},{value:"randomSphere",label:"Random Sphere"}]},sceneView:{type:"select",label:"Scene View",default:"both",options:[{value:"both",label:"Both"},{value:"poisson",label:"Poisson"},{value:"lightlane",label:"Lightlane"}]},orbitSpeed:{type:"range",label:"Orbit Speed",default:.2,min:0,max:2,step:.01},thetaDrift:{type:"range",label:"Theta Drift",default:0,min:-1,max:1,step:.01},thetaJitter:{type:"range",label:"Theta Jitter",default:0,min:0,max:.25,step:.005},phiJitter:{type:"range",label:"Phi Jitter",default:0,min:0,max:.5,step:.01},speedup:{type:"range",label:"Speedup",default:1,min:1,max:240,step:1}},defaultParams:{complexity:5,radius:2,orbitSpeed:.2,thetaDrift:0,thetaJitter:0,phiJitter:0,chandraDistance:6,observationMode:"randomSphere",sceneView:"both",speedup:1,distance:5,showAxes:!1,lightlanes:!0,allSectors:!0,cumulative:!1,phi:0,theta:Math.PI/2,K:1e3,usePoisson:!0,hideScenePresentation:!1,hideFlyingBars:!1,hideDataBoxes:!1}};export{eo as default,to as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-CDPygLjY.js b/dist/vendor/glitch/glitch_gallery/assets/index-CDPygLjY.js new file mode 100644 index 0000000..3431fff --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-CDPygLjY.js @@ -0,0 +1 @@ +import{j as a,G as r}from"./index-CEeZxcxj.js";function l({className:e}){return a.jsx("div",{className:e,children:a.jsx(r,{})})}const s={name:"gallery",displayName:"Glitch Gallery",version:"0.1.0",paramSchema:{},defaultParams:{}};export{l as default,s as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-CEeZxcxj.js b/dist/vendor/glitch/glitch_gallery/assets/index-CEeZxcxj.js new file mode 100644 index 0000000..3be31df --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-CEeZxcxj.js @@ -0,0 +1,4031 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-B1PtMIUq.js","assets/index-DOIp2aoq.css","assets/index-CMvlyyxu.js","assets/index-Bdi24PkQ.css","assets/index-CwQ-ysLn.js","assets/index-BoeEa7xH.css","assets/index-CRhmqMwz.js","assets/index-B7Erow2S.css","assets/index-BOUPxVBe.js","assets/index-WVFKiT6G.css","assets/index-DOdpM0HQ.js","assets/index-hWn6tbl7.css","assets/index-MgCr_Urj.js","assets/index-D0SeHWP2.css","assets/index-Be41ZfS7.js","assets/index-C2PFO5cD.css","assets/index-DnqmHVBx.js","assets/index-mpZwhQDb.css"])))=>i.map(i=>d[i]); +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const u of s)if(u.type==="childList")for(const f of u.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&n(f)}).observe(document,{childList:!0,subtree:!0});function t(s){const u={};return s.integrity&&(u.integrity=s.integrity),s.referrerPolicy&&(u.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?u.credentials="include":s.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function n(s){if(s.ep)return;s.ep=!0;const u=t(s);fetch(s.href,u)}})();function py(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var I_={exports:{}},Lp={};var jS;function $A(){if(jS)return Lp;jS=1;var r=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function t(n,s,u){var f=null;if(u!==void 0&&(f=""+u),s.key!==void 0&&(f=""+s.key),"key"in s){u={};for(var h in s)h!=="key"&&(u[h]=s[h])}else u=s;return s=u.ref,{$$typeof:r,type:n,key:f,ref:s!==void 0?s:null,props:u}}return Lp.Fragment=e,Lp.jsx=t,Lp.jsxs=t,Lp}var YS;function ew(){return YS||(YS=1,I_.exports=$A()),I_.exports}var he=ew(),O_={exports:{}},Up={},P_={exports:{}},z_={};var ZS;function tw(){return ZS||(ZS=1,(function(r){function e(Y,q){var ne=Y.length;Y.push(q);e:for(;0>>1,Ne=Y[be];if(0>>1;bes(Ae,ne))Fes(lt,Ae)?(Y[be]=lt,Y[Fe]=ne,be=Fe):(Y[be]=Ae,Y[oe]=ne,be=oe);else if(Fes(lt,ne))Y[be]=lt,Y[Fe]=ne,be=Fe;else break e}}return q}function s(Y,q){var ne=Y.sortIndex-q.sortIndex;return ne!==0?ne:Y.id-q.id}if(r.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;r.unstable_now=function(){return u.now()}}else{var f=Date,h=f.now();r.unstable_now=function(){return f.now()-h}}var m=[],g=[],_=1,x=null,b=3,M=!1,A=!1,R=!1,w=!1,E=typeof setTimeout=="function"?setTimeout:null,N=typeof clearTimeout=="function"?clearTimeout:null,D=typeof setImmediate<"u"?setImmediate:null;function U(Y){for(var q=t(g);q!==null;){if(q.callback===null)n(g);else if(q.startTime<=Y)n(g),q.sortIndex=q.expirationTime,e(m,q);else break;q=t(g)}}function B(Y){if(R=!1,U(Y),!A)if(t(m)!==null)A=!0,z||(z=!0,se());else{var q=t(g);q!==null&&pe(B,q.startTime-Y)}}var z=!1,H=-1,W=5,I=-1;function P(){return w?!0:!(r.unstable_now()-IY&&P());){var be=x.callback;if(typeof be=="function"){x.callback=null,b=x.priorityLevel;var Ne=be(x.expirationTime<=Y);if(Y=r.unstable_now(),typeof Ne=="function"){x.callback=Ne,U(Y),q=!0;break t}x===t(m)&&n(m),U(Y)}else n(m);x=t(m)}if(x!==null)q=!0;else{var X=t(g);X!==null&&pe(B,X.startTime-Y),q=!1}}break e}finally{x=null,b=ne,M=!1}q=void 0}}finally{q?se():z=!1}}}var se;if(typeof D=="function")se=function(){D(Z)};else if(typeof MessageChannel<"u"){var te=new MessageChannel,fe=te.port2;te.port1.onmessage=Z,se=function(){fe.postMessage(null)}}else se=function(){E(Z,0)};function pe(Y,q){H=E(function(){Y(r.unstable_now())},q)}r.unstable_IdlePriority=5,r.unstable_ImmediatePriority=1,r.unstable_LowPriority=4,r.unstable_NormalPriority=3,r.unstable_Profiling=null,r.unstable_UserBlockingPriority=2,r.unstable_cancelCallback=function(Y){Y.callback=null},r.unstable_forceFrameRate=function(Y){0>Y||125be?(Y.sortIndex=ne,e(g,Y),t(m)===null&&Y===t(g)&&(R?(N(H),H=-1):R=!0,pe(B,ne-be))):(Y.sortIndex=Ne,e(m,Y),A||M||(A=!0,z||(z=!0,se()))),Y},r.unstable_shouldYield=P,r.unstable_wrapCallback=function(Y){var q=b;return function(){var ne=b;b=q;try{return Y.apply(this,arguments)}finally{b=ne}}}})(z_)),z_}var QS;function nE(){return QS||(QS=1,P_.exports=tw()),P_.exports}var B_={exports:{}},Qt={};var KS;function nw(){if(KS)return Qt;KS=1;var r=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),f=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),g=Symbol.for("react.memo"),_=Symbol.for("react.lazy"),x=Symbol.for("react.activity"),b=Symbol.iterator;function M(X){return X===null||typeof X!="object"?null:(X=b&&X[b]||X["@@iterator"],typeof X=="function"?X:null)}var A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},R=Object.assign,w={};function E(X,oe,Ae){this.props=X,this.context=oe,this.refs=w,this.updater=Ae||A}E.prototype.isReactComponent={},E.prototype.setState=function(X,oe){if(typeof X!="object"&&typeof X!="function"&&X!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,X,oe,"setState")},E.prototype.forceUpdate=function(X){this.updater.enqueueForceUpdate(this,X,"forceUpdate")};function N(){}N.prototype=E.prototype;function D(X,oe,Ae){this.props=X,this.context=oe,this.refs=w,this.updater=Ae||A}var U=D.prototype=new N;U.constructor=D,R(U,E.prototype),U.isPureReactComponent=!0;var B=Array.isArray;function z(){}var H={H:null,A:null,T:null,S:null},W=Object.prototype.hasOwnProperty;function I(X,oe,Ae){var Fe=Ae.ref;return{$$typeof:r,type:X,key:oe,ref:Fe!==void 0?Fe:null,props:Ae}}function P(X,oe){return I(X.type,oe,X.props)}function Z(X){return typeof X=="object"&&X!==null&&X.$$typeof===r}function se(X){var oe={"=":"=0",":":"=2"};return"$"+X.replace(/[=:]/g,function(Ae){return oe[Ae]})}var te=/\/+/g;function fe(X,oe){return typeof X=="object"&&X!==null&&X.key!=null?se(""+X.key):oe.toString(36)}function pe(X){switch(X.status){case"fulfilled":return X.value;case"rejected":throw X.reason;default:switch(typeof X.status=="string"?X.then(z,z):(X.status="pending",X.then(function(oe){X.status==="pending"&&(X.status="fulfilled",X.value=oe)},function(oe){X.status==="pending"&&(X.status="rejected",X.reason=oe)})),X.status){case"fulfilled":return X.value;case"rejected":throw X.reason}}throw X}function Y(X,oe,Ae,Fe,lt){var de=typeof X;(de==="undefined"||de==="boolean")&&(X=null);var Re=!1;if(X===null)Re=!0;else switch(de){case"bigint":case"string":case"number":Re=!0;break;case"object":switch(X.$$typeof){case r:case e:Re=!0;break;case _:return Re=X._init,Y(Re(X._payload),oe,Ae,Fe,lt)}}if(Re)return lt=lt(X),Re=Fe===""?"."+fe(X,0):Fe,B(lt)?(Ae="",Re!=null&&(Ae=Re.replace(te,"$&/")+"/"),Y(lt,oe,Ae,"",function(ht){return ht})):lt!=null&&(Z(lt)&&(lt=P(lt,Ae+(lt.key==null||X&&X.key===lt.key?"":(""+lt.key).replace(te,"$&/")+"/")+Re)),oe.push(lt)),1;Re=0;var tt=Fe===""?".":Fe+":";if(B(X))for(var st=0;st"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(e){console.error(e)}}return r(),F_.exports=iw(),F_.exports}var tM;function sw(){if(tM)return Up;tM=1;var r=nE(),e=Tm(),t=aw();function n(i){var a="https://react.dev/errors/"+i;if(1Ne||(i.current=be[Ne],be[Ne]=null,Ne--)}function Ae(i,a){Ne++,be[Ne]=i.current,i.current=a}var Fe=X(null),lt=X(null),de=X(null),Re=X(null);function tt(i,a){switch(Ae(de,a),Ae(lt,i),Ae(Fe,null),a.nodeType){case 9:case 11:i=(i=a.documentElement)&&(i=i.namespaceURI)?gS(i):0;break;default:if(i=a.tagName,a=a.namespaceURI)a=gS(a),i=vS(a,i);else switch(i){case"svg":i=1;break;case"math":i=2;break;default:i=0}}oe(Fe),Ae(Fe,i)}function st(){oe(Fe),oe(lt),oe(de)}function ht(i){i.memoizedState!==null&&Ae(Re,i);var a=Fe.current,c=vS(a,i.type);a!==c&&(Ae(lt,i),Ae(Fe,c))}function jt(i){lt.current===i&&(oe(Fe),oe(lt)),Re.current===i&&(oe(Re),Cp._currentValue=ne)}var tn,Nt;function Le(i){if(tn===void 0)try{throw Error()}catch(c){var a=c.stack.trim().match(/\n( *(at )?)/);tn=a&&a[1]||"",Nt=-1)":-1y||$[d]!==ve[y]){var De=` +`+$[d].replace(" at new "," at ");return i.displayName&&De.includes("")&&(De=De.replace("",i.displayName)),De}while(1<=d&&0<=y);break}}}finally{He=!1,Error.prepareStackTrace=c}return(c=i?i.displayName||i.name:"")?Le(c):""}function nt(i,a){switch(i.tag){case 26:case 27:case 5:return Le(i.type);case 16:return Le("Lazy");case 13:return i.child!==a&&a!==null?Le("Suspense Fallback"):Le("Suspense");case 19:return Le("SuspenseList");case 0:case 15:return Oe(i.type,!1);case 11:return Oe(i.type.render,!1);case 1:return Oe(i.type,!0);case 31:return Le("Activity");default:return""}}function Q(i){try{var a="",c=null;do a+=nt(i,c),c=i,i=i.return;while(i);return a}catch(d){return` +Error generating stack: `+d.message+` +`+d.stack}}var Et=Object.prototype.hasOwnProperty,ot=r.unstable_scheduleCallback,Tt=r.unstable_cancelCallback,Qe=r.unstable_shouldYield,G=r.unstable_requestPaint,O=r.unstable_now,ae=r.unstable_getCurrentPriorityLevel,Te=r.unstable_ImmediatePriority,Ie=r.unstable_UserBlockingPriority,Ee=r.unstable_NormalPriority,dt=r.unstable_LowPriority,Ke=r.unstable_IdlePriority,vt=r.log,Dt=r.unstable_setDisableYieldValue,Ve=null,Ze=null;function ct(i){if(typeof vt=="function"&&Dt(i),Ze&&typeof Ze.setStrictMode=="function")try{Ze.setStrictMode(Ve,i)}catch{}}var K=Math.clz32?Math.clz32:J,me=Math.log,et=Math.LN2;function J(i){return i>>>=0,i===0?32:31-(me(i)/et|0)|0}var je=256,Ge=262144,at=4194304;function Xe(i){var a=i&42;if(a!==0)return a;switch(i&-i){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return i&261888;case 262144:case 524288:case 1048576:case 2097152:return i&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return i&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return i}}function Ue(i,a,c){var d=i.pendingLanes;if(d===0)return 0;var y=0,S=i.suspendedLanes,L=i.pingedLanes;i=i.warmLanes;var V=d&134217727;return V!==0?(d=V&~S,d!==0?y=Xe(d):(L&=V,L!==0?y=Xe(L):c||(c=V&~i,c!==0&&(y=Xe(c))))):(V=d&~S,V!==0?y=Xe(V):L!==0?y=Xe(L):c||(c=d&~i,c!==0&&(y=Xe(c)))),y===0?0:a!==0&&a!==y&&(a&S)===0&&(S=y&-y,c=a&-a,S>=c||S===32&&(c&4194048)!==0)?a:y}function Ye(i,a){return(i.pendingLanes&~(i.suspendedLanes&~i.pingedLanes)&a)===0}function Ct(i,a){switch(i){case 1:case 2:case 4:case 8:case 64:return a+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Jt(){var i=at;return at<<=1,(at&62914560)===0&&(at=4194304),i}function nn(i){for(var a=[],c=0;31>c;c++)a.push(i);return a}function Jn(i,a){i.pendingLanes|=a,a!==268435456&&(i.suspendedLanes=0,i.pingedLanes=0,i.warmLanes=0)}function Ci(i,a,c,d,y,S){var L=i.pendingLanes;i.pendingLanes=c,i.suspendedLanes=0,i.pingedLanes=0,i.warmLanes=0,i.expiredLanes&=c,i.entangledLanes&=c,i.errorRecoveryDisabledLanes&=c,i.shellSuspendCounter=0;var V=i.entanglements,$=i.expirationTimes,ve=i.hiddenUpdates;for(c=L&~c;0"u")return null;try{return i.activeElement||i.body}catch{return i.body}}var _n=/[\n"\\]/g;function Ft(i){return i.replace(_n,function(a){return"\\"+a.charCodeAt(0).toString(16)+" "})}function xi(i,a,c,d,y,S,L,V){i.name="",L!=null&&typeof L!="function"&&typeof L!="symbol"&&typeof L!="boolean"?i.type=L:i.removeAttribute("type"),a!=null?L==="number"?(a===0&&i.value===""||i.value!=a)&&(i.value=""+Pt(a)):i.value!==""+Pt(a)&&(i.value=""+Pt(a)):L!=="submit"&&L!=="reset"||i.removeAttribute("value"),a!=null?Wn(i,L,Pt(a)):c!=null?Wn(i,L,Pt(c)):d!=null&&i.removeAttribute("value"),y==null&&S!=null&&(i.defaultChecked=!!S),y!=null&&(i.checked=y&&typeof y!="function"&&typeof y!="symbol"),V!=null&&typeof V!="function"&&typeof V!="symbol"&&typeof V!="boolean"?i.name=""+Pt(V):i.removeAttribute("name")}function Ls(i,a,c,d,y,S,L,V){if(S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"&&(i.type=S),a!=null||c!=null){if(!(S!=="submit"&&S!=="reset"||a!=null)){In(i);return}c=c!=null?""+Pt(c):"",a=a!=null?""+Pt(a):c,V||a===i.value||(i.value=a),i.defaultValue=a}d=d??y,d=typeof d!="function"&&typeof d!="symbol"&&!!d,i.checked=V?i.checked:!!d,i.defaultChecked=!!d,L!=null&&typeof L!="function"&&typeof L!="symbol"&&typeof L!="boolean"&&(i.name=L),In(i)}function Wn(i,a,c){a==="number"&&ut(i.ownerDocument)===i||i.defaultValue===""+c||(i.defaultValue=""+c)}function la(i,a,c,d){if(i=i.options,a){a={};for(var y=0;y"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),fd=!1;if(Ws)try{var Ol={};Object.defineProperty(Ol,"passive",{get:function(){fd=!0}}),window.addEventListener("test",Ol,Ol),window.removeEventListener("test",Ol,Ol)}catch{fd=!1}var Ga=null,pf=null,jo=null;function Wu(){if(jo)return jo;var i,a=pf,c=a.length,d,y="value"in Ga?Ga.value:Ga.textContent,S=y.length;for(i=0;i=kl),Jm=" ",Qu=!1;function Sf(i,a){switch(i){case"keyup":return Km.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function yd(i){return i=i.detail,typeof i=="object"&&"data"in i?i.data:null}var Qo=!1;function $m(i,a){switch(i){case"compositionend":return yd(a);case"keypress":return a.which!==32?null:(Qu=!0,Jm);case"textInput":return i=a.data,i===Jm&&Qu?null:i;default:return null}}function _d(i,a){if(Qo)return i==="compositionend"||!Zo&&Sf(i,a)?(i=Wu(),jo=pf=Ga=null,Qo=!1,i):null;switch(i){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1=a)return{node:c,offset:a-i};i=d}e:{for(;c;){if(c.nextSibling){c=c.nextSibling;break e}c=c.parentNode}c=void 0}c=$u(c)}}function Fn(i,a){return i&&a?i===a?!0:i&&i.nodeType===3?!1:a&&a.nodeType===3?Fn(i,a.parentNode):"contains"in i?i.contains(a):i.compareDocumentPosition?!!(i.compareDocumentPosition(a)&16):!1:!1}function ag(i){i=i!=null&&i.ownerDocument!=null&&i.ownerDocument.defaultView!=null?i.ownerDocument.defaultView:window;for(var a=ut(i.document);a instanceof i.HTMLIFrameElement;){try{var c=typeof a.contentWindow.location.href=="string"}catch{c=!1}if(c)i=a.contentWindow;else break;a=ut(i.document)}return a}function wd(i){var a=i&&i.nodeName&&i.nodeName.toLowerCase();return a&&(a==="input"&&(i.type==="text"||i.type==="search"||i.type==="tel"||i.type==="url"||i.type==="password")||a==="textarea"||i.contentEditable==="true")}var sg=Ws&&"documentMode"in document&&11>=document.documentMode,js=null,Ys=null,Xl=null,Ef=!1;function Wl(i,a,c){var d=c.window===c?c.document:c.nodeType===9?c:c.ownerDocument;Ef||js==null||js!==ut(d)||(d=js,"selectionStart"in d&&wd(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Xl&&Hl(Xl,d)||(Xl=d,d=a0(Ys,"onSelect"),0>=L,y-=L,ti=1<<32-K(a)+y|c<ln?(bn=At,At=null):bn=At.sibling;var Nn=xe(le,At,ge[ln],Pe);if(Nn===null){At===null&&(At=bn);break}i&&At&&Nn.alternate===null&&a(le,At),ie=S(Nn,ie,ln),Rn===null?It=Nn:Rn.sibling=Nn,Rn=Nn,At=bn}if(ln===ge.length)return c(le,At),mn&&Qs(le,ln),It;if(At===null){for(;lnln?(bn=At,At=null):bn=At.sibling;var Su=xe(le,At,Nn.value,Pe);if(Su===null){At===null&&(At=bn);break}i&&At&&Su.alternate===null&&a(le,At),ie=S(Su,ie,ln),Rn===null?It=Su:Rn.sibling=Su,Rn=Su,At=bn}if(Nn.done)return c(le,At),mn&&Qs(le,ln),It;if(At===null){for(;!Nn.done;ln++,Nn=ge.next())Nn=Be(le,Nn.value,Pe),Nn!==null&&(ie=S(Nn,ie,ln),Rn===null?It=Nn:Rn.sibling=Nn,Rn=Nn);return mn&&Qs(le,ln),It}for(At=d(At);!Nn.done;ln++,Nn=ge.next())Nn=Ce(At,le,ln,Nn.value,Pe),Nn!==null&&(i&&Nn.alternate!==null&&At.delete(Nn.key===null?ln:Nn.key),ie=S(Nn,ie,ln),Rn===null?It=Nn:Rn.sibling=Nn,Rn=Nn);return i&&At.forEach(function(JA){return a(le,JA)}),mn&&Qs(le,ln),It}function Gn(le,ie,ge,Pe){if(typeof ge=="object"&&ge!==null&&ge.type===R&&ge.key===null&&(ge=ge.props.children),typeof ge=="object"&&ge!==null){switch(ge.$$typeof){case M:e:{for(var It=ge.key;ie!==null;){if(ie.key===It){if(It=ge.type,It===R){if(ie.tag===7){c(le,ie.sibling),Pe=y(ie,ge.props.children),Pe.return=le,le=Pe;break e}}else if(ie.elementType===It||typeof It=="object"&&It!==null&&It.$$typeof===W&&tl(It)===ie.type){c(le,ie.sibling),Pe=y(ie,ge.props),ds(Pe,ge),Pe.return=le,le=Pe;break e}c(le,ie);break}else a(le,ie);ie=ie.sibling}ge.type===R?(Pe=ro(ge.props.children,le.mode,Pe,ge.key),Pe.return=le,le=Pe):(Pe=Zs(ge.type,ge.key,ge.props,null,le.mode,Pe),ds(Pe,ge),Pe.return=le,le=Pe)}return L(le);case A:e:{for(It=ge.key;ie!==null;){if(ie.key===It)if(ie.tag===4&&ie.stateNode.containerInfo===ge.containerInfo&&ie.stateNode.implementation===ge.implementation){c(le,ie.sibling),Pe=y(ie,ge.children||[]),Pe.return=le,le=Pe;break e}else{c(le,ie);break}else a(le,ie);ie=ie.sibling}Pe=Rf(ge,le.mode,Pe),Pe.return=le,le=Pe}return L(le);case W:return ge=tl(ge),Gn(le,ie,ge,Pe)}if(pe(ge))return Mt(le,ie,ge,Pe);if(se(ge)){if(It=se(ge),typeof It!="function")throw Error(n(150));return ge=It.call(ge),kt(le,ie,ge,Pe)}if(typeof ge.then=="function")return Gn(le,ie,uc(ge),Pe);if(ge.$$typeof===D)return Gn(le,ie,$l(le,ge),Pe);eu(le,ge)}return typeof ge=="string"&&ge!==""||typeof ge=="number"||typeof ge=="bigint"?(ge=""+ge,ie!==null&&ie.tag===6?(c(le,ie.sibling),Pe=y(ie,ge),Pe.return=le,le=Pe):(c(le,ie),Pe=Cf(ge,le.mode,Pe),Pe.return=le,le=Pe),L(le)):c(le,ie)}return function(le,ie,ge,Pe){try{sl=0;var It=Gn(le,ie,ge,Pe);return al=null,It}catch(At){if(At===el||At===an)throw At;var Rn=ei(29,At,null,le.mode);return Rn.lanes=Pe,Rn.return=le,Rn}}}var Dr=Ff(!0),kf=Ff(!1),ha=!1;function cc(i){i.updateQueue={baseState:i.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function zd(i,a){i=i.updateQueue,a.updateQueue===i&&(a.updateQueue={baseState:i.baseState,firstBaseUpdate:i.firstBaseUpdate,lastBaseUpdate:i.lastBaseUpdate,shared:i.shared,callbacks:null})}function Lr(i){return{lane:i,tag:0,payload:null,callback:null,next:null}}function po(i,a,c){var d=i.updateQueue;if(d===null)return null;if(d=d.shared,(wt&2)!==0){var y=d.pending;return y===null?a.next=a:(a.next=y.next,y.next=a),d.pending=a,a=fs(i),ao(i,null,c),a}return Hi(i,d,a,c),fs(i)}function mo(i,a,c){if(a=a.updateQueue,a!==null&&(a=a.shared,(c&4194048)!==0)){var d=a.lanes;d&=i.pendingLanes,c|=d,a.lanes=c,Kr(i,c)}}function Ut(i,a){var c=i.updateQueue,d=i.alternate;if(d!==null&&(d=d.updateQueue,c===d)){var y=null,S=null;if(c=c.firstBaseUpdate,c!==null){do{var L={lane:c.lane,tag:c.tag,payload:c.payload,callback:null,next:null};S===null?y=S=L:S=S.next=L,c=c.next}while(c!==null);S===null?y=S=a:S=S.next=a}else y=S=a;c={baseState:d.baseState,firstBaseUpdate:y,lastBaseUpdate:S,shared:d.shared,callbacks:d.callbacks},i.updateQueue=c;return}i=c.lastBaseUpdate,i===null?c.firstBaseUpdate=a:i.next=a,c.lastBaseUpdate=a}var Bd=!1;function fc(){if(Bd){var i=hs;if(i!==null)throw i}}function tu(i,a,c,d){Bd=!1;var y=i.updateQueue;ha=!1;var S=y.firstBaseUpdate,L=y.lastBaseUpdate,V=y.shared.pending;if(V!==null){y.shared.pending=null;var $=V,ve=$.next;$.next=null,L===null?S=ve:L.next=ve,L=$;var De=i.alternate;De!==null&&(De=De.updateQueue,V=De.lastBaseUpdate,V!==L&&(V===null?De.firstBaseUpdate=ve:V.next=ve,De.lastBaseUpdate=$))}if(S!==null){var Be=y.baseState;L=0,De=ve=$=null,V=S;do{var xe=V.lane&-536870913,Ce=xe!==V.lane;if(Ce?($t&xe)===xe:(d&xe)===xe){xe!==0&&xe===Nr&&(Bd=!0),De!==null&&(De=De.next={lane:0,tag:V.tag,payload:V.payload,callback:null,next:null});e:{var Mt=i,kt=V;xe=a;var Gn=c;switch(kt.tag){case 1:if(Mt=kt.payload,typeof Mt=="function"){Be=Mt.call(Gn,Be,xe);break e}Be=Mt;break e;case 3:Mt.flags=Mt.flags&-65537|128;case 0:if(Mt=kt.payload,xe=typeof Mt=="function"?Mt.call(Gn,Be,xe):Mt,xe==null)break e;Be=x({},Be,xe);break e;case 2:ha=!0}}xe=V.callback,xe!==null&&(i.flags|=64,Ce&&(i.flags|=8192),Ce=y.callbacks,Ce===null?y.callbacks=[xe]:Ce.push(xe))}else Ce={lane:xe,tag:V.tag,payload:V.payload,callback:V.callback,next:null},De===null?(ve=De=Ce,$=Be):De=De.next=Ce,L|=xe;if(V=V.next,V===null){if(V=y.shared.pending,V===null)break;Ce=V,V=Ce.next,Ce.next=null,y.lastBaseUpdate=Ce,y.shared.pending=null}}while(!0);De===null&&($=Be),y.baseState=$,y.firstBaseUpdate=ve,y.lastBaseUpdate=De,S===null&&(y.shared.lanes=0),cr|=L,i.lanes=L,i.memoizedState=Be}}function nu(i,a){if(typeof i!="function")throw Error(n(191,i));i.call(a)}function pg(i,a){var c=i.callbacks;if(c!==null)for(i.callbacks=null,i=0;iS?S:8;var L=Y.T,V={};Y.T=V,op(i,!1,a,c);try{var $=y(),ve=Y.S;if(ve!==null&&ve(V,$),$!==null&&typeof $=="object"&&typeof $.then=="function"){var De=Od($,d);mc(i,a,De,Ja(i))}else mc(i,a,d,Ja(i))}catch(Be){mc(i,a,{then:function(){},status:"rejected",reason:Be},Ja())}finally{q.p=S,L!==null&&V.types!==null&&(L.types=V.types),Y.T=L}}function o_(){}function sp(i,a,c,d){if(i.tag!==5)throw Error(n(476));var y=Vg(i).queue;kg(i,y,a,ne,c===null?o_:function(){return Hg(i),c(d)})}function Vg(i){var a=i.memoizedState;if(a!==null)return a;a={memoizedState:ne,baseState:ne,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ir,lastRenderedState:ne},next:null};var c={};return a.next={memoizedState:c,baseState:c,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ir,lastRenderedState:c},next:null},i.memoizedState=a,i=i.alternate,i!==null&&(i.memoizedState=a),a}function Hg(i){var a=Vg(i);a.next===null&&(a=i.alternate.memoizedState),mc(i,a.next.queue,{},Ja())}function rp(){return Vt(Cp)}function Gg(){return di().memoizedState}function Xg(){return di().memoizedState}function l_(i){for(var a=i.return;a!==null;){switch(a.tag){case 24:case 3:var c=Ja();i=Lr(c);var d=po(a,i,c);d!==null&&(rn(d,a,c),mo(d,a,c)),a={cache:Ld()},i.payload=a;return}a=a.return}}function u_(i,a,c){var d=Ja();c={lane:d,revertLane:0,gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Zf(i)?qg(a,c):(c=Af(i,a,c,d),c!==null&&(rn(c,i,d),jg(c,a,d)))}function Wg(i,a,c){var d=Ja();mc(i,a,c,d)}function mc(i,a,c,d){var y={lane:d,revertLane:0,gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null};if(Zf(i))qg(a,y);else{var S=i.alternate;if(i.lanes===0&&(S===null||S.lanes===0)&&(S=a.lastRenderedReducer,S!==null))try{var L=a.lastRenderedState,V=S(L,c);if(y.hasEagerState=!0,y.eagerState=V,ca(V,L))return Hi(i,a,y,0),Gt===null&&ac(),!1}catch{}if(c=Af(i,a,y,d),c!==null)return rn(c,i,d),jg(c,a,d),!0}return!1}function op(i,a,c,d){if(d={lane:2,revertLane:Me(),gesture:null,action:d,hasEagerState:!1,eagerState:null,next:null},Zf(i)){if(a)throw Error(n(479))}else a=Af(i,c,d,2),a!==null&&rn(a,i,2)}function Zf(i){var a=i.alternate;return i===Yt||a!==null&&a===Yt}function qg(i,a){au=ps=!0;var c=i.pending;c===null?a.next=a:(a.next=c.next,c.next=a),i.pending=a}function jg(i,a,c){if((c&4194048)!==0){var d=a.lanes;d&=i.pendingLanes,c|=d,a.lanes=c,Kr(i,c)}}var ru={readContext:Vt,use:go,useCallback:ni,useContext:ni,useEffect:ni,useImperativeHandle:ni,useLayoutEffect:ni,useInsertionEffect:ni,useMemo:ni,useReducer:ni,useRef:ni,useState:ni,useDebugValue:ni,useDeferredValue:ni,useTransition:ni,useSyncExternalStore:ni,useId:ni,useHostTransitionStatus:ni,useFormState:ni,useActionState:ni,useOptimistic:ni,useMemoCache:ni,useCacheRefresh:ni};ru.useEffectEvent=ni;var Yg={readContext:Vt,use:go,useCallback:function(i,a){return Di().memoizedState=[i,a===void 0?null:a],i},useContext:Vt,useEffect:Ng,useImperativeHandle:function(i,a,c){c=c!=null?c.concat([i]):null,jf(4194308,4,Og.bind(null,a,i),c)},useLayoutEffect:function(i,a){return jf(4194308,4,i,a)},useInsertionEffect:function(i,a){jf(4,2,i,a)},useMemo:function(i,a){var c=Di();a=a===void 0?null:a;var d=i();if(rl){ct(!0);try{i()}finally{ct(!1)}}return c.memoizedState=[d,a],d},useReducer:function(i,a,c){var d=Di();if(c!==void 0){var y=c(a);if(rl){ct(!0);try{c(a)}finally{ct(!1)}}}else y=a;return d.memoizedState=d.baseState=y,i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:i,lastRenderedState:y},d.queue=i,i=i.dispatch=u_.bind(null,Yt,i),[d.memoizedState,i]},useRef:function(i){var a=Di();return i={current:i},a.memoizedState=i},useState:function(i){i=Zd(i);var a=i.queue,c=Wg.bind(null,Yt,a);return a.dispatch=c,[i.memoizedState,c]},useDebugValue:ip,useDeferredValue:function(i,a){var c=Di();return ap(c,i,a)},useTransition:function(){var i=Zd(!1);return i=kg.bind(null,Yt,i.queue,!0,!1),Di().memoizedState=i,[!1,i]},useSyncExternalStore:function(i,a,c){var d=Yt,y=Di();if(mn){if(c===void 0)throw Error(n(407));c=c()}else{if(c=a(),Gt===null)throw Error(n(349));($t&127)!==0||_g(d,a,c)}y.memoizedState=c;var S={value:c,getSnapshot:a};return y.queue=S,Ng(bg.bind(null,d,S,i),[i]),d.flags|=2048,vo(9,{destroy:void 0},xg.bind(null,d,S,c,a),null),c},useId:function(){var i=Di(),a=Gt.identifierPrefix;if(mn){var c=Us,d=ti;c=(d&~(1<<32-K(d)-1)).toString(32)+c,a="_"+a+"R_"+c,c=Hf++,0<\/script>",S=S.removeChild(S.firstChild);break;case"select":S=typeof d.is=="string"?L.createElement("select",{is:d.is}):L.createElement("select"),d.multiple?S.multiple=!0:d.size&&(S.size=d.size);break;default:S=typeof d.is=="string"?L.createElement(y,{is:d.is}):L.createElement(y)}}S[$n]=a,S[Ri]=d;e:for(L=a.child;L!==null;){if(L.tag===5||L.tag===6)S.appendChild(L.stateNode);else if(L.tag!==4&&L.tag!==27&&L.child!==null){L.child.return=L,L=L.child;continue}if(L===a)break e;for(;L.sibling===null;){if(L.return===null||L.return===a)break e;L=L.return}L.sibling.return=L.return,L=L.sibling}a.stateNode=S;e:switch(ya(S,y,d),y){case"button":case"input":case"select":case"textarea":d=!!d.autoFocus;break e;case"img":d=!0;break e;default:d=!1}d&&sr(a)}}return Pn(a),_c(a,a.type,i===null?null:i.memoizedProps,a.pendingProps,c),null;case 6:if(i&&a.stateNode!=null)i.memoizedProps!==d&&sr(a);else{if(typeof d!="string"&&a.stateNode===null)throw Error(n(166));if(i=de.current,Kl(a)){if(i=a.stateNode,c=a.memoizedProps,d=null,y=li,y!==null)switch(y.tag){case 27:case 5:d=y.memoizedProps}i[$n]=a,i=!!(i.nodeValue===c||d!==null&&d.suppressHydrationWarning===!0||pS(i.nodeValue,c)),i||Js(a,!0)}else i=s0(i).createTextNode(d),i[$n]=a,a.stateNode=i}return Pn(a),null;case 31:if(c=a.memoizedState,i===null||i.memoizedState!==null){if(d=Kl(a),c!==null){if(i===null){if(!d)throw Error(n(318));if(i=a.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(n(557));i[$n]=a}else uo(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;Pn(a),i=!1}else c=Lf(),i!==null&&i.memoizedState!==null&&(i.memoizedState.hydrationErrors=c),i=!0;if(!i)return a.flags&256?(hi(a),a):(hi(a),null);if((a.flags&128)!==0)throw Error(n(558))}return Pn(a),null;case 13:if(d=a.memoizedState,i===null||i.memoizedState!==null&&i.memoizedState.dehydrated!==null){if(y=Kl(a),d!==null&&d.dehydrated!==null){if(i===null){if(!y)throw Error(n(318));if(y=a.memoizedState,y=y!==null?y.dehydrated:null,!y)throw Error(n(317));y[$n]=a}else uo(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;Pn(a),y=!1}else y=Lf(),i!==null&&i.memoizedState!==null&&(i.memoizedState.hydrationErrors=y),y=!0;if(!y)return a.flags&256?(hi(a),a):(hi(a),null)}return hi(a),(a.flags&128)!==0?(a.lanes=c,a):(c=d!==null,i=i!==null&&i.memoizedState!==null,c&&(d=a.child,y=null,d.alternate!==null&&d.alternate.memoizedState!==null&&d.alternate.memoizedState.cachePool!==null&&(y=d.alternate.memoizedState.cachePool.pool),S=null,d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(S=d.memoizedState.cachePool.pool),S!==y&&(d.flags|=2048)),c!==i&&c&&(a.child.flags|=8192),Or(a,a.updateQueue),Pn(a),null);case 4:return st(),i===null&&p_(a.stateNode.containerInfo),Pn(a),null;case 10:return tr(a.type),Pn(a),null;case 19:if(oe(gn),d=a.memoizedState,d===null)return Pn(a),null;if(y=(a.flags&128)!==0,S=d.rendering,S===null)if(y)rr(d,!1);else{if(ii!==0||i!==null&&(i.flags&128)!==0)for(i=a.child;i!==null;){if(S=ja(i),S!==null){for(a.flags|=128,rr(d,!1),i=S.updateQueue,a.updateQueue=i,Or(a,i),a.subtreeFlags=0,i=c,c=a.child;c!==null;)ql(c,i),c=c.sibling;return Ae(gn,gn.current&1|2),mn&&Qs(a,d.treeForkCount),a.child}i=i.sibling}d.tail!==null&&O()>mi&&(a.flags|=128,y=!0,rr(d,!1),a.lanes=4194304)}else{if(!y)if(i=ja(S),i!==null){if(a.flags|=128,y=!0,i=i.updateQueue,a.updateQueue=i,Or(a,i),rr(d,!0),d.tail===null&&d.tailMode==="hidden"&&!S.alternate&&!mn)return Pn(a),null}else 2*O()-d.renderingStartTime>mi&&c!==536870912&&(a.flags|=128,y=!0,rr(d,!1),a.lanes=4194304);d.isBackwards?(S.sibling=a.child,a.child=S):(i=d.last,i!==null?i.sibling=S:a.child=S,d.last=S)}return d.tail!==null?(i=d.tail,d.rendering=i,d.tail=i.sibling,d.renderingStartTime=O(),i.sibling=null,c=gn.current,Ae(gn,y?c&1|2:c&1),mn&&Qs(a,d.treeForkCount),i):(Pn(a),null);case 22:case 23:return hi(a),hc(),d=a.memoizedState!==null,i!==null?i.memoizedState!==null!==d&&(a.flags|=8192):d&&(a.flags|=8192),d?(c&536870912)!==0&&(a.flags&128)===0&&(Pn(a),a.subtreeFlags&6&&(a.flags|=8192)):Pn(a),c=a.updateQueue,c!==null&&Or(a,c.retryQueue),c=null,i!==null&&i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(c=i.memoizedState.cachePool.pool),d=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(d=a.memoizedState.cachePool.pool),d!==c&&(a.flags|=2048),i!==null&&oe(ho),null;case 24:return c=null,i!==null&&(c=i.memoizedState.cache),a.memoizedState.cache!==c&&(a.flags|=2048),tr(Si),Pn(a),null;case 25:return null;case 30:return null}throw Error(n(156,a.tag))}function gs(i,a){switch(Nf(a),a.tag){case 1:return i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 3:return tr(Si),st(),i=a.flags,(i&65536)!==0&&(i&128)===0?(a.flags=i&-65537|128,a):null;case 26:case 27:case 5:return jt(a),null;case 31:if(a.memoizedState!==null){if(hi(a),a.alternate===null)throw Error(n(340));uo()}return i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 13:if(hi(a),i=a.memoizedState,i!==null&&i.dehydrated!==null){if(a.alternate===null)throw Error(n(340));uo()}return i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 19:return oe(gn),null;case 4:return st(),null;case 10:return tr(a.type),null;case 22:case 23:return hi(a),hc(),i!==null&&oe(ho),i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 24:return tr(Si),null;case 25:return null;default:return null}}function Ya(i,a){switch(Nf(a),a.tag){case 3:tr(Si),st();break;case 26:case 27:case 5:jt(a);break;case 4:st();break;case 31:a.memoizedState!==null&&hi(a);break;case 13:hi(a);break;case 19:oe(gn);break;case 10:tr(a.type);break;case 22:case 23:hi(a),hc(),i!==null&&oe(ho);break;case 24:tr(Si)}}function vs(i,a){try{var c=a.updateQueue,d=c!==null?c.lastEffect:null;if(d!==null){var y=d.next;c=y;do{if((c.tag&i)===i){d=void 0;var S=c.create,L=c.inst;d=S(),L.destroy=d}c=c.next}while(c!==y)}}catch(V){En(a,a.return,V)}}function Qi(i,a,c){try{var d=a.updateQueue,y=d!==null?d.lastEffect:null;if(y!==null){var S=y.next;d=S;do{if((d.tag&i)===i){var L=d.inst,V=L.destroy;if(V!==void 0){L.destroy=void 0,y=a;var $=c,ve=V;try{ve()}catch(De){En(y,$,De)}}}d=d.next}while(d!==S)}}catch(De){En(a,a.return,De)}}function Is(i){var a=i.updateQueue;if(a!==null){var c=i.stateNode;try{pg(a,c)}catch(d){En(i,i.return,d)}}}function Xi(i,a,c){c.props=yo(i.type,i.memoizedProps),c.state=i.memoizedState;try{c.componentWillUnmount()}catch(d){En(i,a,d)}}function Pr(i,a){try{var c=i.ref;if(c!==null){switch(i.tag){case 26:case 27:case 5:var d=i.stateNode;break;case 30:d=i.stateNode;break;default:d=i.stateNode}typeof c=="function"?i.refCleanup=c(d):c.current=d}}catch(y){En(i,a,y)}}function Ki(i,a){var c=i.ref,d=i.refCleanup;if(c!==null)if(typeof d=="function")try{d()}catch(y){En(i,a,y)}finally{i.refCleanup=null,i=i.alternate,i!=null&&(i.refCleanup=null)}else if(typeof c=="function")try{c(null)}catch(y){En(i,a,y)}else c.current=null}function bc(i){var a=i.type,c=i.memoizedProps,d=i.stateNode;try{e:switch(a){case"button":case"input":case"select":case"textarea":c.autoFocus&&d.focus();break e;case"img":c.src?d.src=c.src:c.srcSet&&(d.srcset=c.srcSet)}}catch(y){En(i,i.return,y)}}function Ui(i,a,c){try{var d=i.stateNode;SA(d,i.type,c,a),d[Ri]=a}catch(y){En(i,i.return,y)}}function Qn(i){return i.tag===5||i.tag===3||i.tag===26||i.tag===27&&vu(i.type)||i.tag===4}function dn(i){e:for(;;){for(;i.sibling===null;){if(i.return===null||Qn(i.return))return null;i=i.return}for(i.sibling.return=i.return,i=i.sibling;i.tag!==5&&i.tag!==6&&i.tag!==18;){if(i.tag===27&&vu(i.type)||i.flags&2||i.child===null||i.tag===4)continue e;i.child.return=i,i=i.child}if(!(i.flags&2))return i.stateNode}}function or(i,a,c){var d=i.tag;if(d===5||d===6)i=i.stateNode,a?(c.nodeType===9?c.body:c.nodeName==="HTML"?c.ownerDocument.body:c).insertBefore(i,a):(a=c.nodeType===9?c.body:c.nodeName==="HTML"?c.ownerDocument.body:c,a.appendChild(i),c=c._reactRootContainer,c!=null||a.onclick!==null||(a.onclick=Er));else if(d!==4&&(d===27&&vu(i.type)&&(c=i.stateNode,a=null),i=i.child,i!==null))for(or(i,a,c),i=i.sibling;i!==null;)or(i,a,c),i=i.sibling}function pa(i,a,c){var d=i.tag;if(d===5||d===6)i=i.stateNode,a?c.insertBefore(i,a):c.appendChild(i);else if(d!==4&&(d===27&&vu(i.type)&&(c=i.stateNode),i=i.child,i!==null))for(pa(i,a,c),i=i.sibling;i!==null;)pa(i,a,c),i=i.sibling}function oh(i){var a=i.stateNode,c=i.memoizedProps;try{for(var d=i.type,y=a.attributes;y.length;)a.removeAttributeNode(y[0]);ya(a,d,c),a[$n]=i,a[Ri]=c}catch(S){En(i,i.return,S)}}var ys=!1,Vn=!1,Os=!1,n0=typeof WeakSet=="function"?WeakSet:Set,Wi=null;function f_(i,a){if(i=i.containerInfo,v_=h0,i=ag(i),wd(i)){if("selectionStart"in i)var c={start:i.selectionStart,end:i.selectionEnd};else e:{c=(c=i.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&d.rangeCount!==0){c=d.anchorNode;var y=d.anchorOffset,S=d.focusNode;d=d.focusOffset;try{c.nodeType,S.nodeType}catch{c=null;break e}var L=0,V=-1,$=-1,ve=0,De=0,Be=i,xe=null;t:for(;;){for(var Ce;Be!==c||y!==0&&Be.nodeType!==3||(V=L+y),Be!==S||d!==0&&Be.nodeType!==3||($=L+d),Be.nodeType===3&&(L+=Be.nodeValue.length),(Ce=Be.firstChild)!==null;)xe=Be,Be=Ce;for(;;){if(Be===i)break t;if(xe===c&&++ve===y&&(V=L),xe===S&&++De===d&&($=L),(Ce=Be.nextSibling)!==null)break;Be=xe,xe=Be.parentNode}Be=Ce}c=V===-1||$===-1?null:{start:V,end:$}}else c=null}c=c||{start:0,end:0}}else c=null;for(y_={focusedElem:i,selectionRange:c},h0=!1,Wi=a;Wi!==null;)if(a=Wi,i=a.child,(a.subtreeFlags&1028)!==0&&i!==null)i.return=a,Wi=i;else for(;Wi!==null;){switch(a=Wi,S=a.alternate,i=a.flags,a.tag){case 0:if((i&4)!==0&&(i=a.updateQueue,i=i!==null?i.events:null,i!==null))for(c=0;c title"))),ya(S,d,c),S[$n]=i,k(S),d=S;break e;case"link":var L=DS("link","href",y).get(d+(c.href||""));if(L){for(var V=0;VGn&&(L=Gn,Gn=kt,kt=L);var le=Gl(V,kt),ie=Gl(V,Gn);if(le&&ie&&(Ce.rangeCount!==1||Ce.anchorNode!==le.node||Ce.anchorOffset!==le.offset||Ce.focusNode!==ie.node||Ce.focusOffset!==ie.offset)){var ge=Be.createRange();ge.setStart(le.node,le.offset),Ce.removeAllRanges(),kt>Gn?(Ce.addRange(ge),Ce.extend(ie.node,ie.offset)):(ge.setEnd(ie.node,ie.offset),Ce.addRange(ge))}}}}for(Be=[],Ce=V;Ce=Ce.parentNode;)Ce.nodeType===1&&Be.push({element:Ce,left:Ce.scrollLeft,top:Ce.scrollTop});for(typeof V.focus=="function"&&V.focus(),V=0;Vc?32:c,Y.T=null,c=hu,hu=null;var S=Ka,L=Ms;if(Ln=0,cu=Ka=null,Ms=0,(wt&6)!==0)throw Error(n(331));var V=wt;if(wt|=4,wa(S.current),xp(S,S.current,L,c),wt=V,gt(0,!1),Ze&&typeof Ze.onPostCommitFiberRoot=="function")try{Ze.onPostCommitFiberRoot(Ve,S)}catch{}return!0}finally{q.p=y,Y.T=d,hr(i,a)}}function Mp(i,a,c){a=Xa(c,a),a=dp(i.stateNode,a,2),i=po(i,a,2),i!==null&&(Jn(i,2),We(i))}function En(i,a,c){if(i.tag===3)Mp(i,i,c);else for(;a!==null;){if(a.tag===3){Mp(a,i,c);break}else if(a.tag===1){var d=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof d.componentDidCatch=="function"&&(gi===null||!gi.has(d))){i=Xa(c,i),c=pp(2),d=po(a,c,2),d!==null&&(Kg(c,d,a,i),Jn(d,2),We(d));break}}a=a.return}}function Cc(i,a,c){var d=i.pingCache;if(d===null){d=i.pingCache=new Zt;var y=new Set;d.set(a,y)}else y=d.get(a),y===void 0&&(y=new Set,d.set(a,y));y.has(c)||(bp=!0,y.add(c),i=o.bind(null,i,a,c),a.then(i,i))}function o(i,a,c){var d=i.pingCache;d!==null&&d.delete(a),i.pingedLanes|=i.suspendedLanes&c,i.warmLanes&=~c,Gt===i&&($t&c)===c&&(ii===4||ii===3&&($t&62914560)===$t&&300>O()-uu?(wt&2)===0&&Ao(i,0):Mc|=c,qn===$t&&(qn=0)),We(i)}function l(i,a){a===0&&(a=Jt()),i=fa(i,a),i!==null&&(Jn(i,a),We(i))}function p(i){var a=i.memoizedState,c=0;a!==null&&(c=a.retryLane),l(i,c)}function v(i,a){var c=0;switch(i.tag){case 31:case 13:var d=i.stateNode,y=i.memoizedState;y!==null&&(c=y.retryLane);break;case 19:d=i.stateNode;break;case 22:d=i.stateNode._retryCache;break;default:throw Error(n(314))}d!==null&&d.delete(a),l(i,c)}function T(i,a){return ot(i,a)}var C=null,F=null,ee=!1,we=!1,ke=!1,it=0;function We(i){i!==F&&i.next===null&&(F===null?C=F=i:F=F.next=i),we=!0,ee||(ee=!0,ce())}function gt(i,a){if(!ke&&we){ke=!0;do for(var c=!1,d=C;d!==null;){if(i!==0){var y=d.pendingLanes;if(y===0)var S=0;else{var L=d.suspendedLanes,V=d.pingedLanes;S=(1<<31-K(42|i)+1)-1,S&=y&~(L&~V),S=S&201326741?S&201326741|1:S?S|2:0}S!==0&&(c=!0,_e(d,S))}else S=$t,S=Ue(d,d===Gt?S:0,d.cancelPendingCommit!==null||d.timeoutHandle!==-1),(S&3)===0||Ye(d,S)||(c=!0,_e(d,S));d=d.next}while(c);ke=!1}}function qt(){vi()}function vi(){we=ee=!1;var i=0;it!==0&&EA()&&(i=it);for(var a=O(),c=null,d=C;d!==null;){var y=d.next,S=gu(d,a);S===0?(d.next=null,c===null?C=y:c.next=y,y===null&&(F=c)):(c=d,(i!==0||(S&3)!==0)&&(we=!0)),d=y}Ln!==0&&Ln!==5||gt(i),it!==0&&(it=0)}function gu(i,a){for(var c=i.suspendedLanes,d=i.pingedLanes,y=i.expirationTimes,S=i.pendingLanes&-62914561;0V)break;var De=$.transferSize,Be=$.initiatorType;De&&mS(Be)&&($=$.responseEnd,L+=De*($"u"?null:document;function wS(i,a,c){var d=dh;if(d&&typeof a=="string"&&a){var y=Ft(a);y='link[rel="'+i+'"][href="'+y+'"]',typeof c=="string"&&(y+='[crossorigin="'+c+'"]'),AS.has(y)||(AS.add(y),i={rel:i,crossOrigin:c,href:a},d.querySelector(y)===null&&(a=d.createElement("link"),ya(a,"link",i),k(a),d.head.appendChild(a)))}}function UA(i){xl.D(i),wS("dns-prefetch",i,null)}function IA(i,a){xl.C(i,a),wS("preconnect",i,a)}function OA(i,a,c){xl.L(i,a,c);var d=dh;if(d&&i&&a){var y='link[rel="preload"][as="'+Ft(a)+'"]';a==="image"&&c&&c.imageSrcSet?(y+='[imagesrcset="'+Ft(c.imageSrcSet)+'"]',typeof c.imageSizes=="string"&&(y+='[imagesizes="'+Ft(c.imageSizes)+'"]')):y+='[href="'+Ft(i)+'"]';var S=y;switch(a){case"style":S=ph(i);break;case"script":S=mh(i)}pr.has(S)||(i=x({rel:"preload",href:a==="image"&&c&&c.imageSrcSet?void 0:i,as:a},c),pr.set(S,i),d.querySelector(y)!==null||a==="style"&&d.querySelector(Ap(S))||a==="script"&&d.querySelector(wp(S))||(a=d.createElement("link"),ya(a,"link",i),k(a),d.head.appendChild(a)))}}function PA(i,a){xl.m(i,a);var c=dh;if(c&&i){var d=a&&typeof a.as=="string"?a.as:"script",y='link[rel="modulepreload"][as="'+Ft(d)+'"][href="'+Ft(i)+'"]',S=y;switch(d){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":S=mh(i)}if(!pr.has(S)&&(i=x({rel:"modulepreload",href:i},a),pr.set(S,i),c.querySelector(y)===null)){switch(d){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(c.querySelector(wp(S)))return}d=c.createElement("link"),ya(d,"link",i),k(d),c.head.appendChild(d)}}}function zA(i,a,c){xl.S(i,a,c);var d=dh;if(d&&i){var y=Xs(d).hoistableStyles,S=ph(i);a=a||"default";var L=y.get(S);if(!L){var V={loading:0,preload:null};if(L=d.querySelector(Ap(S)))V.loading=5;else{i=x({rel:"stylesheet",href:i,"data-precedence":a},c),(c=pr.get(S))&&T_(i,c);var $=L=d.createElement("link");k($),ya($,"link",i),$._p=new Promise(function(ve,De){$.onload=ve,$.onerror=De}),$.addEventListener("load",function(){V.loading|=1}),$.addEventListener("error",function(){V.loading|=2}),V.loading|=4,o0(L,a,d)}L={type:"stylesheet",instance:L,count:1,state:V},y.set(S,L)}}}function BA(i,a){xl.X(i,a);var c=dh;if(c&&i){var d=Xs(c).hoistableScripts,y=mh(i),S=d.get(y);S||(S=c.querySelector(wp(y)),S||(i=x({src:i,async:!0},a),(a=pr.get(y))&&A_(i,a),S=c.createElement("script"),k(S),ya(S,"link",i),c.head.appendChild(S)),S={type:"script",instance:S,count:1,state:null},d.set(y,S))}}function FA(i,a){xl.M(i,a);var c=dh;if(c&&i){var d=Xs(c).hoistableScripts,y=mh(i),S=d.get(y);S||(S=c.querySelector(wp(y)),S||(i=x({src:i,async:!0,type:"module"},a),(a=pr.get(y))&&A_(i,a),S=c.createElement("script"),k(S),ya(S,"link",i),c.head.appendChild(S)),S={type:"script",instance:S,count:1,state:null},d.set(y,S))}}function CS(i,a,c,d){var y=(y=de.current)?r0(y):null;if(!y)throw Error(n(446));switch(i){case"meta":case"title":return null;case"style":return typeof c.precedence=="string"&&typeof c.href=="string"?(a=ph(c.href),c=Xs(y).hoistableStyles,d=c.get(a),d||(d={type:"style",instance:null,count:0,state:null},c.set(a,d)),d):{type:"void",instance:null,count:0,state:null};case"link":if(c.rel==="stylesheet"&&typeof c.href=="string"&&typeof c.precedence=="string"){i=ph(c.href);var S=Xs(y).hoistableStyles,L=S.get(i);if(L||(y=y.ownerDocument||y,L={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},S.set(i,L),(S=y.querySelector(Ap(i)))&&!S._p&&(L.instance=S,L.state.loading=5),pr.has(i)||(c={rel:"preload",as:"style",href:c.href,crossOrigin:c.crossOrigin,integrity:c.integrity,media:c.media,hrefLang:c.hrefLang,referrerPolicy:c.referrerPolicy},pr.set(i,c),S||kA(y,i,c,L.state))),a&&d===null)throw Error(n(528,""));return L}if(a&&d!==null)throw Error(n(529,""));return null;case"script":return a=c.async,c=c.src,typeof c=="string"&&a&&typeof a!="function"&&typeof a!="symbol"?(a=mh(c),c=Xs(y).hoistableScripts,d=c.get(a),d||(d={type:"script",instance:null,count:0,state:null},c.set(a,d)),d):{type:"void",instance:null,count:0,state:null};default:throw Error(n(444,i))}}function ph(i){return'href="'+Ft(i)+'"'}function Ap(i){return'link[rel="stylesheet"]['+i+"]"}function RS(i){return x({},i,{"data-precedence":i.precedence,precedence:null})}function kA(i,a,c,d){i.querySelector('link[rel="preload"][as="style"]['+a+"]")?d.loading=1:(a=i.createElement("link"),d.preload=a,a.addEventListener("load",function(){return d.loading|=1}),a.addEventListener("error",function(){return d.loading|=2}),ya(a,"link",c),k(a),i.head.appendChild(a))}function mh(i){return'[src="'+Ft(i)+'"]'}function wp(i){return"script[async]"+i}function NS(i,a,c){if(a.count++,a.instance===null)switch(a.type){case"style":var d=i.querySelector('style[data-href~="'+Ft(c.href)+'"]');if(d)return a.instance=d,k(d),d;var y=x({},c,{"data-href":c.href,"data-precedence":c.precedence,href:null,precedence:null});return d=(i.ownerDocument||i).createElement("style"),k(d),ya(d,"style",y),o0(d,c.precedence,i),a.instance=d;case"stylesheet":y=ph(c.href);var S=i.querySelector(Ap(y));if(S)return a.state.loading|=4,a.instance=S,k(S),S;d=RS(c),(y=pr.get(y))&&T_(d,y),S=(i.ownerDocument||i).createElement("link"),k(S);var L=S;return L._p=new Promise(function(V,$){L.onload=V,L.onerror=$}),ya(S,"link",d),a.state.loading|=4,o0(S,c.precedence,i),a.instance=S;case"script":return S=mh(c.src),(y=i.querySelector(wp(S)))?(a.instance=y,k(y),y):(d=c,(y=pr.get(S))&&(d=x({},c),A_(d,y)),i=i.ownerDocument||i,y=i.createElement("script"),k(y),ya(y,"link",d),i.head.appendChild(y),a.instance=y);case"void":return null;default:throw Error(n(443,a.type))}else a.type==="stylesheet"&&(a.state.loading&4)===0&&(d=a.instance,a.state.loading|=4,o0(d,c.precedence,i));return a.instance}function o0(i,a,c){for(var d=c.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),y=d.length?d[d.length-1]:null,S=y,L=0;L title"):null)}function VA(i,a,c){if(c===1||a.itemProp!=null)return!1;switch(i){case"meta":case"title":return!0;case"style":if(typeof a.precedence!="string"||typeof a.href!="string"||a.href==="")break;return!0;case"link":if(typeof a.rel!="string"||typeof a.href!="string"||a.href===""||a.onLoad||a.onError)break;return a.rel==="stylesheet"?(i=a.disabled,typeof a.precedence=="string"&&i==null):!0;case"script":if(a.async&&typeof a.async!="function"&&typeof a.async!="symbol"&&!a.onLoad&&!a.onError&&a.src&&typeof a.src=="string")return!0}return!1}function US(i){return!(i.type==="stylesheet"&&(i.state.loading&3)===0)}function HA(i,a,c,d){if(c.type==="stylesheet"&&(typeof d.media!="string"||matchMedia(d.media).matches!==!1)&&(c.state.loading&4)===0){if(c.instance===null){var y=ph(d.href),S=a.querySelector(Ap(y));if(S){a=S._p,a!==null&&typeof a=="object"&&typeof a.then=="function"&&(i.count++,i=u0.bind(i),a.then(i,i)),c.state.loading|=4,c.instance=S,k(S);return}S=a.ownerDocument||a,d=RS(d),(y=pr.get(y))&&T_(d,y),S=S.createElement("link"),k(S);var L=S;L._p=new Promise(function(V,$){L.onload=V,L.onerror=$}),ya(S,"link",d),c.instance=S}i.stylesheets===null&&(i.stylesheets=new Map),i.stylesheets.set(c,a),(a=c.state.preload)&&(c.state.loading&3)===0&&(i.count++,c=u0.bind(i),a.addEventListener("load",c),a.addEventListener("error",c))}}var w_=0;function GA(i,a){return i.stylesheets&&i.count===0&&f0(i,i.stylesheets),0w_?50:800)+a);return i.unsuspend=c,function(){i.unsuspend=null,clearTimeout(d),clearTimeout(y)}}:null}function u0(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)f0(this,this.stylesheets);else if(this.unsuspend){var i=this.unsuspend;this.unsuspend=null,i()}}}var c0=null;function f0(i,a){i.stylesheets=null,i.unsuspend!==null&&(i.count++,c0=new Map,a.forEach(XA,i),c0=null,u0.call(i))}function XA(i,a){if(!(a.state.loading&4)){var c=c0.get(i);if(c)var d=c.get(null);else{c=new Map,c0.set(i,c);for(var y=i.querySelectorAll("link[data-precedence],style[data-precedence]"),S=0;S"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(e){console.error(e)}}return r(),O_.exports=sw(),O_.exports}var ow=rw();const lw=py(ow),uw="modulepreload",cw=function(r){return"/"+r},iM={},Hr=function(e,t,n){let s=Promise.resolve();if(t&&t.length>0){let m=function(g){return Promise.all(g.map(_=>Promise.resolve(_).then(x=>({status:"fulfilled",value:x}),x=>({status:"rejected",reason:x}))))};document.getElementsByTagName("link");const f=document.querySelector("meta[property=csp-nonce]"),h=f?.nonce||f?.getAttribute("nonce");s=m(t.map(g=>{if(g=cw(g),g in iM)return;iM[g]=!0;const _=g.endsWith(".css"),x=_?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${g}"]${x}`))return;const b=document.createElement("link");if(b.rel=_?"stylesheet":uw,_||(b.as="script"),b.crossOrigin="",b.href=g,h&&b.setAttribute("nonce",h),document.head.appendChild(b),_)return new Promise((M,A)=>{b.addEventListener("load",M),b.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${g}`)))})}))}function u(f){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=f,window.dispatchEvent(h),!h.defaultPrevented)throw f}return s.then(f=>{for(const h of f||[])h.status==="rejected"&&u(h.reason);return e().catch(u)})},fw="assumption-toggle",hw="Assumption Toggle",dw="1.0.0",pw="glitch_assumption_toggle",mw="@nommo/assumption-toggle",gw="dist/assumption-toggle.js",vw="src/index.tsx",yw=["glitch-component","crt","logic"],_w={componentId:fw,displayName:hw,version:dw,folderName:pw,packageName:mw,entry:gw,source:vw,tags:yw},xw="ccd",bw="CCD Photon Explorer",Sw="0.1.0",Mw="glitch_ccd",Ew="@glitch-components/ccd",Tw="dist/index.html",Aw="src/index.tsx",ww=["internal","visualization","tooling"],Cw={componentId:xw,displayName:bw,version:Sw,folderName:Mw,packageName:Ew,entry:Tw,source:Aw,tags:ww},Rw="chess_analogy",Nw="Chess Move Set Lab",Dw="1.0.0",Lw="glitch_chess_analogy",Uw="@glitch-components/chess-analogy",Iw="dist/chess_analogy.js",Ow="src/index.tsx",Pw=["glitch-component","reference","2d","chess"],zw={componentId:Rw,displayName:Nw,version:Dw,folderName:Lw,packageName:Uw,entry:Iw,source:Ow,tags:Pw},Bw="gallery",Fw="Glitch Gallery",kw="0.1.0",Vw="glitch_gallery",Hw="@glitch-components/gallery",Gw="dist/index.html",Xw="src/index.tsx",Ww=["internal","tooling","preview"],qw={componentId:Bw,displayName:Fw,version:kw,folderName:Vw,packageName:Hw,entry:Gw,source:Xw,tags:Ww},jw="level-questions",Yw="Level Questions",Zw="1.0.0",Qw="glitch_level_questions",Kw="level-questions",Jw="dist/level-questions.js",$w="src/index.tsx",eC=["glitch-component","quiz","role-mapping"],tC={componentId:jw,displayName:Yw,version:Zw,folderName:Qw,packageName:Kw,entry:Jw,source:$w,tags:eC},nC="lightlane",iC="Lightlane Challenge",aC="0.1.0",sC="glitch_lightlane",rC="@nommo/lightlane",oC="dist/lightlane.js",lC="src/index.tsx",uC=["glitch-component","reference","3d"],cC={componentId:nC,displayName:iC,version:aC,folderName:sC,packageName:rC,entry:oC,source:lC,tags:uC},fC="migration-paradox",hC="The Migration Paradox",dC="1.0.0",pC="glitch_migration_paradox",mC="migration-paradox",gC="dist/migration-paradox.js",vC="src/index.tsx",yC=["glitch-component","paradox","narrative"],_C={componentId:fC,displayName:hC,version:dC,folderName:pC,packageName:mC,entry:gC,source:vC,tags:yC},xC="onboarding",bC="Glitch University Onboarding",SC="1.0.0",MC="glitch_onboarding",EC="@glitch-components/onboarding",TC="dist/onboarding.js",AC="src/index.tsx",wC=["glitch-component","onboarding","narrative"],CC={componentId:xC,displayName:bC,version:SC,folderName:MC,packageName:EC,entry:TC,source:AC,tags:wC},RC="onboarding2",NC="Facility Slideshow",DC="1.0.0",LC="glitch_onboarding2",UC="@glitch-components/onboarding2",IC="dist/onboarding2.js",OC="src/index.tsx",PC=["glitch-component","onboarding","slideshow"],zC={componentId:RC,displayName:NC,version:DC,folderName:LC,packageName:UC,entry:IC,source:OC,tags:PC},BC="sphere-paradox",FC="Create a Perfect Sphere",kC="1.0.0",VC="glitch_sphere_paradox",HC="sphere-paradox",GC="dist/sphere-paradox.js",XC="src/index.tsx",WC=["glitch-component","3d","paradox"],qC={componentId:BC,displayName:FC,version:kC,folderName:VC,packageName:HC,entry:GC,source:XC,tags:WC},jC="voxel-universe",YC="Voxel Universe",ZC="1.0.0",QC="glitch_voxel_universe",KC="@glitch-components/voxel-universe",JC="dist/voxel_universe.js",$C="src/index.tsx",e3=["glitch-component","voxel","geometry"],t3={componentId:jC,displayName:YC,version:ZC,folderName:QC,packageName:KC,entry:JC,source:$C,tags:e3};function kx(){return kx=Object.assign?Object.assign.bind():function(r){for(var e=1;e=0;--e)if(r[e]>=65535)return!0;return!1}const G3={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Hh(r,e){return new G3[r](e)}function FE(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}function mm(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function kE(){const r=mm("canvas");return r.style.display="block",r}const aM={};let Bu=null;function X3(r){Bu=r}function W3(){return Bu}function gm(...r){const e="THREE."+r.shift();Bu?Bu("log",e,...r):console.log(e,...r)}function ft(...r){const e="THREE."+r.shift();Bu?Bu("warn",e,...r):console.warn(e,...r)}function Rt(...r){const e="THREE."+r.shift();Bu?Bu("error",e,...r):console.error(e,...r)}function Zh(...r){const e=r.join(" ");e in aM||(aM[e]=!0,ft(...r))}function q3(r,e,t){return new Promise(function(n,s){function u(){switch(r.clientWaitSync(e,r.SYNC_FLUSH_COMMANDS_BIT,0)){case r.WAIT_FAILED:s();break;case r.TIMEOUT_EXPIRED:setTimeout(u,t);break;default:n()}}setTimeout(u,t)})}let ko=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const n=this._listeners;if(n===void 0)return;const s=n[e];if(s!==void 0){const u=s.indexOf(t);u!==-1&&s.splice(u,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const n=t[e.type];if(n!==void 0){e.target=this;const s=n.slice(0);for(let u=0,f=s.length;u>8&255]+Da[r>>16&255]+Da[r>>24&255]+"-"+Da[e&255]+Da[e>>8&255]+"-"+Da[e>>16&15|64]+Da[e>>24&255]+"-"+Da[t&63|128]+Da[t>>8&255]+"-"+Da[t>>16&255]+Da[t>>24&255]+Da[n&255]+Da[n>>8&255]+Da[n>>16&255]+Da[n>>24&255]).toLowerCase()}function Ht(r,e,t){return Math.max(e,Math.min(t,r))}function wb(r,e){return(r%e+e)%e}function j3(r,e,t,n,s){return n+(r-e)*(s-n)/(t-e)}function Y3(r,e,t){return r!==e?(t-r)/(e-r):0}function im(r,e,t){return(1-t)*r+t*e}function Z3(r,e,t,n){return im(r,e,1-Math.exp(-t*n))}function Q3(r,e=1){return e-Math.abs(wb(r,e*2)-e)}function K3(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function J3(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function $3(r,e){return r+Math.floor(Math.random()*(e-r+1))}function eR(r,e){return r+Math.random()*(e-r)}function tR(r){return r*(.5-Math.random())}function nR(r){r!==void 0&&(sM=r);let e=sM+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function iR(r){return r*Jc}function aR(r){return r*Qh}function sR(r){return(r&r-1)===0&&r!==0}function rR(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function oR(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function lR(r,e,t,n,s){const u=Math.cos,f=Math.sin,h=u(t/2),m=f(t/2),g=u((e+n)/2),_=f((e+n)/2),x=u((e-n)/2),b=f((e-n)/2),M=u((n-e)/2),A=f((n-e)/2);switch(s){case"XYX":r.set(h*_,m*x,m*b,h*g);break;case"YZY":r.set(m*b,h*_,m*x,h*g);break;case"ZXZ":r.set(m*x,m*b,h*_,h*g);break;case"XZX":r.set(h*_,m*A,m*M,h*g);break;case"YXY":r.set(m*M,h*_,m*A,h*g);break;case"ZYZ":r.set(m*A,m*M,h*_,h*g);break;default:ft("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+s)}}function ns(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function on(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}const uR={DEG2RAD:Jc,RAD2DEG:Qh,generateUUID:Vs,clamp:Ht,euclideanModulo:wb,mapLinear:j3,inverseLerp:Y3,lerp:im,damp:Z3,pingpong:Q3,smoothstep:K3,smootherstep:J3,randInt:$3,randFloat:eR,randFloatSpread:tR,seededRandom:nR,degToRad:iR,radToDeg:aR,isPowerOfTwo:sR,ceilPowerOfTwo:rR,floorPowerOfTwo:oR,setQuaternionFromProperEuler:lR,normalize:on,denormalize:ns};class ze{constructor(e=0,t=0){ze.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6],this.y=s[1]*t+s[4]*n+s[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Ht(this.x,e.x,t.x),this.y=Ht(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Ht(this.x,e,t),this.y=Ht(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ht(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ht(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),s=Math.sin(t),u=this.x-e.x,f=this.y-e.y;return this.x=u*n-f*s+e.x,this.y=u*s+f*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Pa{constructor(e=0,t=0,n=0,s=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=s}static slerpFlat(e,t,n,s,u,f,h){let m=n[s+0],g=n[s+1],_=n[s+2],x=n[s+3],b=u[f+0],M=u[f+1],A=u[f+2],R=u[f+3];if(h<=0){e[t+0]=m,e[t+1]=g,e[t+2]=_,e[t+3]=x;return}if(h>=1){e[t+0]=b,e[t+1]=M,e[t+2]=A,e[t+3]=R;return}if(x!==R||m!==b||g!==M||_!==A){let w=m*b+g*M+_*A+x*R;w<0&&(b=-b,M=-M,A=-A,R=-R,w=-w);let E=1-h;if(w<.9995){const N=Math.acos(w),D=Math.sin(N);E=Math.sin(E*N)/D,h=Math.sin(h*N)/D,m=m*E+b*h,g=g*E+M*h,_=_*E+A*h,x=x*E+R*h}else{m=m*E+b*h,g=g*E+M*h,_=_*E+A*h,x=x*E+R*h;const N=1/Math.sqrt(m*m+g*g+_*_+x*x);m*=N,g*=N,_*=N,x*=N}}e[t]=m,e[t+1]=g,e[t+2]=_,e[t+3]=x}static multiplyQuaternionsFlat(e,t,n,s,u,f){const h=n[s],m=n[s+1],g=n[s+2],_=n[s+3],x=u[f],b=u[f+1],M=u[f+2],A=u[f+3];return e[t]=h*A+_*x+m*M-g*b,e[t+1]=m*A+_*b+g*x-h*M,e[t+2]=g*A+_*M+h*b-m*x,e[t+3]=_*A-h*x-m*b-g*M,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,s){return this._x=e,this._y=t,this._z=n,this._w=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,s=e._y,u=e._z,f=e._order,h=Math.cos,m=Math.sin,g=h(n/2),_=h(s/2),x=h(u/2),b=m(n/2),M=m(s/2),A=m(u/2);switch(f){case"XYZ":this._x=b*_*x+g*M*A,this._y=g*M*x-b*_*A,this._z=g*_*A+b*M*x,this._w=g*_*x-b*M*A;break;case"YXZ":this._x=b*_*x+g*M*A,this._y=g*M*x-b*_*A,this._z=g*_*A-b*M*x,this._w=g*_*x+b*M*A;break;case"ZXY":this._x=b*_*x-g*M*A,this._y=g*M*x+b*_*A,this._z=g*_*A+b*M*x,this._w=g*_*x-b*M*A;break;case"ZYX":this._x=b*_*x-g*M*A,this._y=g*M*x+b*_*A,this._z=g*_*A-b*M*x,this._w=g*_*x+b*M*A;break;case"YZX":this._x=b*_*x+g*M*A,this._y=g*M*x+b*_*A,this._z=g*_*A-b*M*x,this._w=g*_*x-b*M*A;break;case"XZY":this._x=b*_*x-g*M*A,this._y=g*M*x-b*_*A,this._z=g*_*A+b*M*x,this._w=g*_*x+b*M*A;break;default:ft("Quaternion: .setFromEuler() encountered an unknown order: "+f)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,s=Math.sin(n);return this._x=e.x*s,this._y=e.y*s,this._z=e.z*s,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],s=t[4],u=t[8],f=t[1],h=t[5],m=t[9],g=t[2],_=t[6],x=t[10],b=n+h+x;if(b>0){const M=.5/Math.sqrt(b+1);this._w=.25/M,this._x=(_-m)*M,this._y=(u-g)*M,this._z=(f-s)*M}else if(n>h&&n>x){const M=2*Math.sqrt(1+n-h-x);this._w=(_-m)/M,this._x=.25*M,this._y=(s+f)/M,this._z=(u+g)/M}else if(h>x){const M=2*Math.sqrt(1+h-n-x);this._w=(u-g)/M,this._x=(s+f)/M,this._y=.25*M,this._z=(m+_)/M}else{const M=2*Math.sqrt(1+x-n-h);this._w=(f-s)/M,this._x=(u+g)/M,this._y=(m+_)/M,this._z=.25*M}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<1e-8?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ht(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const s=Math.min(1,t/n);return this.slerp(e,s),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,s=e._y,u=e._z,f=e._w,h=t._x,m=t._y,g=t._z,_=t._w;return this._x=n*_+f*h+s*g-u*m,this._y=s*_+f*m+u*h-n*g,this._z=u*_+f*g+n*m-s*h,this._w=f*_-n*h-s*m-u*g,this._onChangeCallback(),this}slerp(e,t){if(t<=0)return this;if(t>=1)return this.copy(e);let n=e._x,s=e._y,u=e._z,f=e._w,h=this.dot(e);h<0&&(n=-n,s=-s,u=-u,f=-f,h=-h);let m=1-t;if(h<.9995){const g=Math.acos(h),_=Math.sin(g);m=Math.sin(m*g)/_,t=Math.sin(t*g)/_,this._x=this._x*m+n*t,this._y=this._y*m+s*t,this._z=this._z*m+u*t,this._w=this._w*m+f*t,this._onChangeCallback()}else this._x=this._x*m+n*t,this._y=this._y*m+s*t,this._z=this._z*m+u*t,this._w=this._w*m+f*t,this.normalize();return this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),s=Math.sqrt(1-n),u=Math.sqrt(n);return this.set(s*Math.sin(e),s*Math.cos(e),u*Math.sin(t),u*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class j{constructor(e=0,t=0,n=0){j.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(rM.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(rM.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,s=this.z,u=e.elements;return this.x=u[0]*t+u[3]*n+u[6]*s,this.y=u[1]*t+u[4]*n+u[7]*s,this.z=u[2]*t+u[5]*n+u[8]*s,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,s=this.z,u=e.elements,f=1/(u[3]*t+u[7]*n+u[11]*s+u[15]);return this.x=(u[0]*t+u[4]*n+u[8]*s+u[12])*f,this.y=(u[1]*t+u[5]*n+u[9]*s+u[13])*f,this.z=(u[2]*t+u[6]*n+u[10]*s+u[14])*f,this}applyQuaternion(e){const t=this.x,n=this.y,s=this.z,u=e.x,f=e.y,h=e.z,m=e.w,g=2*(f*s-h*n),_=2*(h*t-u*s),x=2*(u*n-f*t);return this.x=t+m*g+f*x-h*_,this.y=n+m*_+h*g-u*x,this.z=s+m*x+u*_-f*g,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,s=this.z,u=e.elements;return this.x=u[0]*t+u[4]*n+u[8]*s,this.y=u[1]*t+u[5]*n+u[9]*s,this.z=u[2]*t+u[6]*n+u[10]*s,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Ht(this.x,e.x,t.x),this.y=Ht(this.y,e.y,t.y),this.z=Ht(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Ht(this.x,e,t),this.y=Ht(this.y,e,t),this.z=Ht(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ht(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,s=e.y,u=e.z,f=t.x,h=t.y,m=t.z;return this.x=s*m-u*h,this.y=u*f-n*m,this.z=n*h-s*f,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return k_.copy(this).projectOnVector(e),this.sub(k_)}reflect(e){return this.sub(k_.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ht(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,s=this.z-e.z;return t*t+n*n+s*s}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const s=Math.sin(t)*e;return this.x=s*Math.sin(n),this.y=Math.cos(t)*e,this.z=s*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),s=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=s,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const k_=new j,rM=new Pa;class en{constructor(e,t,n,s,u,f,h,m,g){en.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,s,u,f,h,m,g)}set(e,t,n,s,u,f,h,m,g){const _=this.elements;return _[0]=e,_[1]=s,_[2]=h,_[3]=t,_[4]=u,_[5]=m,_[6]=n,_[7]=f,_[8]=g,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,s=t.elements,u=this.elements,f=n[0],h=n[3],m=n[6],g=n[1],_=n[4],x=n[7],b=n[2],M=n[5],A=n[8],R=s[0],w=s[3],E=s[6],N=s[1],D=s[4],U=s[7],B=s[2],z=s[5],H=s[8];return u[0]=f*R+h*N+m*B,u[3]=f*w+h*D+m*z,u[6]=f*E+h*U+m*H,u[1]=g*R+_*N+x*B,u[4]=g*w+_*D+x*z,u[7]=g*E+_*U+x*H,u[2]=b*R+M*N+A*B,u[5]=b*w+M*D+A*z,u[8]=b*E+M*U+A*H,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],s=e[2],u=e[3],f=e[4],h=e[5],m=e[6],g=e[7],_=e[8];return t*f*_-t*h*g-n*u*_+n*h*m+s*u*g-s*f*m}invert(){const e=this.elements,t=e[0],n=e[1],s=e[2],u=e[3],f=e[4],h=e[5],m=e[6],g=e[7],_=e[8],x=_*f-h*g,b=h*m-_*u,M=g*u-f*m,A=t*x+n*b+s*M;if(A===0)return this.set(0,0,0,0,0,0,0,0,0);const R=1/A;return e[0]=x*R,e[1]=(s*g-_*n)*R,e[2]=(h*n-s*f)*R,e[3]=b*R,e[4]=(_*t-s*m)*R,e[5]=(s*u-h*t)*R,e[6]=M*R,e[7]=(n*m-g*t)*R,e[8]=(f*t-n*u)*R,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,s,u,f,h){const m=Math.cos(u),g=Math.sin(u);return this.set(n*m,n*g,-n*(m*f+g*h)+f+e,-s*g,s*m,-s*(-g*f+m*h)+h+t,0,0,1),this}scale(e,t){return this.premultiply(V_.makeScale(e,t)),this}rotate(e){return this.premultiply(V_.makeRotation(-e)),this}translate(e,t){return this.premultiply(V_.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let s=0;s<9;s++)if(t[s]!==n[s])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const V_=new en,oM=new en().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),lM=new en().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function cR(){const r={enabled:!0,workingColorSpace:zu,spaces:{},convert:function(s,u,f){return this.enabled===!1||u===f||!u||!f||(this.spaces[u].transfer===zn&&(s.r=Nl(s.r),s.g=Nl(s.g),s.b=Nl(s.b)),this.spaces[u].primaries!==this.spaces[f].primaries&&(s.applyMatrix3(this.spaces[u].toXYZ),s.applyMatrix3(this.spaces[f].fromXYZ)),this.spaces[f].transfer===zn&&(s.r=Wh(s.r),s.g=Wh(s.g),s.b=Wh(s.b))),s},workingToColorSpace:function(s,u){return this.convert(s,this.workingColorSpace,u)},colorSpaceToWorking:function(s,u){return this.convert(s,u,this.workingColorSpace)},getPrimaries:function(s){return this.spaces[s].primaries},getTransfer:function(s){return s===Cl?dm:this.spaces[s].transfer},getToneMappingMode:function(s){return this.spaces[s].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(s,u=this.workingColorSpace){return s.fromArray(this.spaces[u].luminanceCoefficients)},define:function(s){Object.assign(this.spaces,s)},_getMatrix:function(s,u,f){return s.copy(this.spaces[u].toXYZ).multiply(this.spaces[f].fromXYZ)},_getDrawingBufferColorSpace:function(s){return this.spaces[s].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(s=this.workingColorSpace){return this.spaces[s].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(s,u){return Zh("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),r.workingToColorSpace(s,u)},toWorkingColorSpace:function(s,u){return Zh("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),r.colorSpaceToWorking(s,u)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return r.define({[zu]:{primaries:e,whitePoint:n,transfer:dm,toXYZ:oM,fromXYZ:lM,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Ia},outputColorSpaceConfig:{drawingBufferColorSpace:Ia}},[Ia]:{primaries:e,whitePoint:n,transfer:zn,toXYZ:oM,fromXYZ:lM,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Ia}}}),r}const Sn=cR();function Nl(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function Wh(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}let vh;class VE{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{vh===void 0&&(vh=mm("canvas")),vh.width=e.width,vh.height=e.height;const s=vh.getContext("2d");e instanceof ImageData?s.putImageData(e,0,0):s.drawImage(e,0,0,e.width,e.height),n=vh}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=mm("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const s=n.getImageData(0,0,e.width,e.height),u=s.data;for(let f=0;f1),this.pmremVersion=0}get width(){return this.source.getSize(G_).x}get height(){return this.source.getSize(G_).y}get depth(){return this.source.getSize(G_).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const n=e[t];if(n===void 0){ft(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const s=this[t];if(s===void 0){ft(`Texture.setValues(): property '${t}' does not exist.`);continue}s&&n&&s.isVector2&&n.isVector2||s&&n&&s.isVector3&&n.isVector3||s&&n&&s.isMatrix3&&n.isMatrix3?s.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const n={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==vy)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case um:e.x=e.x-Math.floor(e.x);break;case Rs:e.x=e.x<0?0:1;break;case cm:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case um:e.y=e.y-Math.floor(e.y);break;case Rs:e.y=e.y<0?0:1;break;case cm:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}wi.DEFAULT_IMAGE=null;wi.DEFAULT_MAPPING=vy;wi.DEFAULT_ANISOTROPY=1;class jn{constructor(e=0,t=0,n=0,s=1){jn.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=s}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,s){return this.x=e,this.y=t,this.z=n,this.w=s,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,s=this.z,u=this.w,f=e.elements;return this.x=f[0]*t+f[4]*n+f[8]*s+f[12]*u,this.y=f[1]*t+f[5]*n+f[9]*s+f[13]*u,this.z=f[2]*t+f[6]*n+f[10]*s+f[14]*u,this.w=f[3]*t+f[7]*n+f[11]*s+f[15]*u,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,s,u;const m=e.elements,g=m[0],_=m[4],x=m[8],b=m[1],M=m[5],A=m[9],R=m[2],w=m[6],E=m[10];if(Math.abs(_-b)<.01&&Math.abs(x-R)<.01&&Math.abs(A-w)<.01){if(Math.abs(_+b)<.1&&Math.abs(x+R)<.1&&Math.abs(A+w)<.1&&Math.abs(g+M+E-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const D=(g+1)/2,U=(M+1)/2,B=(E+1)/2,z=(_+b)/4,H=(x+R)/4,W=(A+w)/4;return D>U&&D>B?D<.01?(n=0,s=.707106781,u=.707106781):(n=Math.sqrt(D),s=z/n,u=H/n):U>B?U<.01?(n=.707106781,s=0,u=.707106781):(s=Math.sqrt(U),n=z/s,u=W/s):B<.01?(n=.707106781,s=.707106781,u=0):(u=Math.sqrt(B),n=H/u,s=W/u),this.set(n,s,u,t),this}let N=Math.sqrt((w-A)*(w-A)+(x-R)*(x-R)+(b-_)*(b-_));return Math.abs(N)<.001&&(N=1),this.x=(w-A)/N,this.y=(x-R)/N,this.z=(b-_)/N,this.w=Math.acos((g+M+E-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Ht(this.x,e.x,t.x),this.y=Ht(this.y,e.y,t.y),this.z=Ht(this.z,e.z,t.z),this.w=Ht(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Ht(this.x,e,t),this.y=Ht(this.y,e,t),this.z=Ht(this.z,e,t),this.w=Ht(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ht(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Cb extends ko{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:oi,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},n),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth,this.scissor=new jn(0,0,e,t),this.scissorTest=!1,this.viewport=new jn(0,0,e,t);const s={width:e,height:t,depth:n.depth},u=new wi(s);this.textures=[];const f=n.count;for(let h=0;h1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,n=e.textures.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Gr),Gr.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Ip),x0.subVectors(this.max,Ip),yh.subVectors(e.a,Ip),_h.subVectors(e.b,Ip),xh.subVectors(e.c,Ip),Mu.subVectors(_h,yh),Eu.subVectors(xh,_h),Rc.subVectors(yh,xh);let t=[0,-Mu.z,Mu.y,0,-Eu.z,Eu.y,0,-Rc.z,Rc.y,Mu.z,0,-Mu.x,Eu.z,0,-Eu.x,Rc.z,0,-Rc.x,-Mu.y,Mu.x,0,-Eu.y,Eu.x,0,-Rc.y,Rc.x,0];return!X_(t,yh,_h,xh,x0)||(t=[1,0,0,0,1,0,0,0,1],!X_(t,yh,_h,xh,x0))?!1:(b0.crossVectors(Mu,Eu),t=[b0.x,b0.y,b0.z],X_(t,yh,_h,xh,x0))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Gr).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Gr).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(bl[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),bl[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),bl[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),bl[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),bl[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),bl[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),bl[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),bl[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(bl),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const bl=[new j,new j,new j,new j,new j,new j,new j,new j],Gr=new j,_0=new za,yh=new j,_h=new j,xh=new j,Mu=new j,Eu=new j,Rc=new j,Ip=new j,x0=new j,b0=new j,Nc=new j;function X_(r,e,t,n,s){for(let u=0,f=r.length-3;u<=f;u+=3){Nc.fromArray(r,u);const h=s.x*Math.abs(Nc.x)+s.y*Math.abs(Nc.y)+s.z*Math.abs(Nc.z),m=e.dot(Nc),g=t.dot(Nc),_=n.dot(Nc);if(Math.max(-Math.max(m,g,_),Math.min(m,g,_))>h)return!1}return!0}const mR=new za,Op=new j,W_=new j;class _a{constructor(e=new j,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):mR.setFromPoints(e).getCenter(n);let s=0;for(let u=0,f=e.length;uthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Op.subVectors(e,this.center);const t=Op.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),s=(n-this.radius)*.5;this.center.addScaledVector(Op,s/n),this.radius+=s}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(W_.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Op.copy(e.center).add(W_)),this.expandByPoint(Op.copy(e.center).sub(W_))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const Sl=new j,q_=new j,S0=new j,Tu=new j,j_=new j,M0=new j,Y_=new j;class of{constructor(e=new j,t=new j(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Sl)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=Sl.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Sl.copy(this.origin).addScaledVector(this.direction,t),Sl.distanceToSquared(e))}distanceSqToSegment(e,t,n,s){q_.copy(e).add(t).multiplyScalar(.5),S0.copy(t).sub(e).normalize(),Tu.copy(this.origin).sub(q_);const u=e.distanceTo(t)*.5,f=-this.direction.dot(S0),h=Tu.dot(this.direction),m=-Tu.dot(S0),g=Tu.lengthSq(),_=Math.abs(1-f*f);let x,b,M,A;if(_>0)if(x=f*m-h,b=f*h-m,A=u*_,x>=0)if(b>=-A)if(b<=A){const R=1/_;x*=R,b*=R,M=x*(x+f*b+2*h)+b*(f*x+b+2*m)+g}else b=u,x=Math.max(0,-(f*b+h)),M=-x*x+b*(b+2*m)+g;else b=-u,x=Math.max(0,-(f*b+h)),M=-x*x+b*(b+2*m)+g;else b<=-A?(x=Math.max(0,-(-f*u+h)),b=x>0?-u:Math.min(Math.max(-u,-m),u),M=-x*x+b*(b+2*m)+g):b<=A?(x=0,b=Math.min(Math.max(-u,-m),u),M=b*(b+2*m)+g):(x=Math.max(0,-(f*u+h)),b=x>0?u:Math.min(Math.max(-u,-m),u),M=-x*x+b*(b+2*m)+g);else b=f>0?-u:u,x=Math.max(0,-(f*b+h)),M=-x*x+b*(b+2*m)+g;return n&&n.copy(this.origin).addScaledVector(this.direction,x),s&&s.copy(q_).addScaledVector(S0,b),M}intersectSphere(e,t){Sl.subVectors(e.center,this.origin);const n=Sl.dot(this.direction),s=Sl.dot(Sl)-n*n,u=e.radius*e.radius;if(s>u)return null;const f=Math.sqrt(u-s),h=n-f,m=n+f;return m<0?null:h<0?this.at(m,t):this.at(h,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,s,u,f,h,m;const g=1/this.direction.x,_=1/this.direction.y,x=1/this.direction.z,b=this.origin;return g>=0?(n=(e.min.x-b.x)*g,s=(e.max.x-b.x)*g):(n=(e.max.x-b.x)*g,s=(e.min.x-b.x)*g),_>=0?(u=(e.min.y-b.y)*_,f=(e.max.y-b.y)*_):(u=(e.max.y-b.y)*_,f=(e.min.y-b.y)*_),n>f||u>s||((u>n||isNaN(n))&&(n=u),(f=0?(h=(e.min.z-b.z)*x,m=(e.max.z-b.z)*x):(h=(e.max.z-b.z)*x,m=(e.min.z-b.z)*x),n>m||h>s)||((h>n||n!==n)&&(n=h),(m=0?n:s,t)}intersectsBox(e){return this.intersectBox(e,Sl)!==null}intersectTriangle(e,t,n,s,u){j_.subVectors(t,e),M0.subVectors(n,e),Y_.crossVectors(j_,M0);let f=this.direction.dot(Y_),h;if(f>0){if(s)return null;h=1}else if(f<0)h=-1,f=-f;else return null;Tu.subVectors(this.origin,e);const m=h*this.direction.dot(M0.crossVectors(Tu,M0));if(m<0)return null;const g=h*this.direction.dot(j_.cross(Tu));if(g<0||m+g>f)return null;const _=-h*Tu.dot(Y_);return _<0?null:this.at(_/f,u)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Xt{constructor(e,t,n,s,u,f,h,m,g,_,x,b,M,A,R,w){Xt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,s,u,f,h,m,g,_,x,b,M,A,R,w)}set(e,t,n,s,u,f,h,m,g,_,x,b,M,A,R,w){const E=this.elements;return E[0]=e,E[4]=t,E[8]=n,E[12]=s,E[1]=u,E[5]=f,E[9]=h,E[13]=m,E[2]=g,E[6]=_,E[10]=x,E[14]=b,E[3]=M,E[7]=A,E[11]=R,E[15]=w,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Xt().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return this.determinant()===0?(e.set(1,0,0),t.set(0,1,0),n.set(0,0,1),this):(e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this)}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){if(e.determinant()===0)return this.identity();const t=this.elements,n=e.elements,s=1/bh.setFromMatrixColumn(e,0).length(),u=1/bh.setFromMatrixColumn(e,1).length(),f=1/bh.setFromMatrixColumn(e,2).length();return t[0]=n[0]*s,t[1]=n[1]*s,t[2]=n[2]*s,t[3]=0,t[4]=n[4]*u,t[5]=n[5]*u,t[6]=n[6]*u,t[7]=0,t[8]=n[8]*f,t[9]=n[9]*f,t[10]=n[10]*f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,s=e.y,u=e.z,f=Math.cos(n),h=Math.sin(n),m=Math.cos(s),g=Math.sin(s),_=Math.cos(u),x=Math.sin(u);if(e.order==="XYZ"){const b=f*_,M=f*x,A=h*_,R=h*x;t[0]=m*_,t[4]=-m*x,t[8]=g,t[1]=M+A*g,t[5]=b-R*g,t[9]=-h*m,t[2]=R-b*g,t[6]=A+M*g,t[10]=f*m}else if(e.order==="YXZ"){const b=m*_,M=m*x,A=g*_,R=g*x;t[0]=b+R*h,t[4]=A*h-M,t[8]=f*g,t[1]=f*x,t[5]=f*_,t[9]=-h,t[2]=M*h-A,t[6]=R+b*h,t[10]=f*m}else if(e.order==="ZXY"){const b=m*_,M=m*x,A=g*_,R=g*x;t[0]=b-R*h,t[4]=-f*x,t[8]=A+M*h,t[1]=M+A*h,t[5]=f*_,t[9]=R-b*h,t[2]=-f*g,t[6]=h,t[10]=f*m}else if(e.order==="ZYX"){const b=f*_,M=f*x,A=h*_,R=h*x;t[0]=m*_,t[4]=A*g-M,t[8]=b*g+R,t[1]=m*x,t[5]=R*g+b,t[9]=M*g-A,t[2]=-g,t[6]=h*m,t[10]=f*m}else if(e.order==="YZX"){const b=f*m,M=f*g,A=h*m,R=h*g;t[0]=m*_,t[4]=R-b*x,t[8]=A*x+M,t[1]=x,t[5]=f*_,t[9]=-h*_,t[2]=-g*_,t[6]=M*x+A,t[10]=b-R*x}else if(e.order==="XZY"){const b=f*m,M=f*g,A=h*m,R=h*g;t[0]=m*_,t[4]=-x,t[8]=g*_,t[1]=b*x+R,t[5]=f*_,t[9]=M*x-A,t[2]=A*x-M,t[6]=h*_,t[10]=R*x+b}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(gR,e,vR)}lookAt(e,t,n){const s=this.elements;return Bs.subVectors(e,t),Bs.lengthSq()===0&&(Bs.z=1),Bs.normalize(),Au.crossVectors(n,Bs),Au.lengthSq()===0&&(Math.abs(n.z)===1?Bs.x+=1e-4:Bs.z+=1e-4,Bs.normalize(),Au.crossVectors(n,Bs)),Au.normalize(),E0.crossVectors(Bs,Au),s[0]=Au.x,s[4]=E0.x,s[8]=Bs.x,s[1]=Au.y,s[5]=E0.y,s[9]=Bs.y,s[2]=Au.z,s[6]=E0.z,s[10]=Bs.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,s=t.elements,u=this.elements,f=n[0],h=n[4],m=n[8],g=n[12],_=n[1],x=n[5],b=n[9],M=n[13],A=n[2],R=n[6],w=n[10],E=n[14],N=n[3],D=n[7],U=n[11],B=n[15],z=s[0],H=s[4],W=s[8],I=s[12],P=s[1],Z=s[5],se=s[9],te=s[13],fe=s[2],pe=s[6],Y=s[10],q=s[14],ne=s[3],be=s[7],Ne=s[11],X=s[15];return u[0]=f*z+h*P+m*fe+g*ne,u[4]=f*H+h*Z+m*pe+g*be,u[8]=f*W+h*se+m*Y+g*Ne,u[12]=f*I+h*te+m*q+g*X,u[1]=_*z+x*P+b*fe+M*ne,u[5]=_*H+x*Z+b*pe+M*be,u[9]=_*W+x*se+b*Y+M*Ne,u[13]=_*I+x*te+b*q+M*X,u[2]=A*z+R*P+w*fe+E*ne,u[6]=A*H+R*Z+w*pe+E*be,u[10]=A*W+R*se+w*Y+E*Ne,u[14]=A*I+R*te+w*q+E*X,u[3]=N*z+D*P+U*fe+B*ne,u[7]=N*H+D*Z+U*pe+B*be,u[11]=N*W+D*se+U*Y+B*Ne,u[15]=N*I+D*te+U*q+B*X,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],s=e[8],u=e[12],f=e[1],h=e[5],m=e[9],g=e[13],_=e[2],x=e[6],b=e[10],M=e[14],A=e[3],R=e[7],w=e[11],E=e[15],N=m*M-g*b,D=h*M-g*x,U=h*b-m*x,B=f*M-g*_,z=f*b-m*_,H=f*x-h*_;return t*(R*N-w*D+E*U)-n*(A*N-w*B+E*z)+s*(A*D-R*B+E*H)-u*(A*U-R*z+w*H)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const s=this.elements;return e.isVector3?(s[12]=e.x,s[13]=e.y,s[14]=e.z):(s[12]=e,s[13]=t,s[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],s=e[2],u=e[3],f=e[4],h=e[5],m=e[6],g=e[7],_=e[8],x=e[9],b=e[10],M=e[11],A=e[12],R=e[13],w=e[14],E=e[15],N=x*w*g-R*b*g+R*m*M-h*w*M-x*m*E+h*b*E,D=A*b*g-_*w*g-A*m*M+f*w*M+_*m*E-f*b*E,U=_*R*g-A*x*g+A*h*M-f*R*M-_*h*E+f*x*E,B=A*x*m-_*R*m-A*h*b+f*R*b+_*h*w-f*x*w,z=t*N+n*D+s*U+u*B;if(z===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const H=1/z;return e[0]=N*H,e[1]=(R*b*u-x*w*u-R*s*M+n*w*M+x*s*E-n*b*E)*H,e[2]=(h*w*u-R*m*u+R*s*g-n*w*g-h*s*E+n*m*E)*H,e[3]=(x*m*u-h*b*u-x*s*g+n*b*g+h*s*M-n*m*M)*H,e[4]=D*H,e[5]=(_*w*u-A*b*u+A*s*M-t*w*M-_*s*E+t*b*E)*H,e[6]=(A*m*u-f*w*u-A*s*g+t*w*g+f*s*E-t*m*E)*H,e[7]=(f*b*u-_*m*u+_*s*g-t*b*g-f*s*M+t*m*M)*H,e[8]=U*H,e[9]=(A*x*u-_*R*u-A*n*M+t*R*M+_*n*E-t*x*E)*H,e[10]=(f*R*u-A*h*u+A*n*g-t*R*g-f*n*E+t*h*E)*H,e[11]=(_*h*u-f*x*u-_*n*g+t*x*g+f*n*M-t*h*M)*H,e[12]=B*H,e[13]=(_*R*s-A*x*s+A*n*b-t*R*b-_*n*w+t*x*w)*H,e[14]=(A*h*s-f*R*s-A*n*m+t*R*m+f*n*w-t*h*w)*H,e[15]=(f*x*s-_*h*s+_*n*m-t*x*m-f*n*b+t*h*b)*H,this}scale(e){const t=this.elements,n=e.x,s=e.y,u=e.z;return t[0]*=n,t[4]*=s,t[8]*=u,t[1]*=n,t[5]*=s,t[9]*=u,t[2]*=n,t[6]*=s,t[10]*=u,t[3]*=n,t[7]*=s,t[11]*=u,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],s=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,s))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),s=Math.sin(t),u=1-n,f=e.x,h=e.y,m=e.z,g=u*f,_=u*h;return this.set(g*f+n,g*h-s*m,g*m+s*h,0,g*h+s*m,_*h+n,_*m-s*f,0,g*m-s*h,_*m+s*f,u*m*m+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,s,u,f){return this.set(1,n,u,0,e,1,f,0,t,s,1,0,0,0,0,1),this}compose(e,t,n){const s=this.elements,u=t._x,f=t._y,h=t._z,m=t._w,g=u+u,_=f+f,x=h+h,b=u*g,M=u*_,A=u*x,R=f*_,w=f*x,E=h*x,N=m*g,D=m*_,U=m*x,B=n.x,z=n.y,H=n.z;return s[0]=(1-(R+E))*B,s[1]=(M+U)*B,s[2]=(A-D)*B,s[3]=0,s[4]=(M-U)*z,s[5]=(1-(b+E))*z,s[6]=(w+N)*z,s[7]=0,s[8]=(A+D)*H,s[9]=(w-N)*H,s[10]=(1-(b+R))*H,s[11]=0,s[12]=e.x,s[13]=e.y,s[14]=e.z,s[15]=1,this}decompose(e,t,n){const s=this.elements;if(e.x=s[12],e.y=s[13],e.z=s[14],this.determinant()===0)return n.set(1,1,1),t.identity(),this;let u=bh.set(s[0],s[1],s[2]).length();const f=bh.set(s[4],s[5],s[6]).length(),h=bh.set(s[8],s[9],s[10]).length();this.determinant()<0&&(u=-u),Xr.copy(this);const g=1/u,_=1/f,x=1/h;return Xr.elements[0]*=g,Xr.elements[1]*=g,Xr.elements[2]*=g,Xr.elements[4]*=_,Xr.elements[5]*=_,Xr.elements[6]*=_,Xr.elements[8]*=x,Xr.elements[9]*=x,Xr.elements[10]*=x,t.setFromRotationMatrix(Xr),n.x=u,n.y=f,n.z=h,this}makePerspective(e,t,n,s,u,f,h=ks,m=!1){const g=this.elements,_=2*u/(t-e),x=2*u/(n-s),b=(t+e)/(t-e),M=(n+s)/(n-s);let A,R;if(m)A=u/(f-u),R=f*u/(f-u);else if(h===ks)A=-(f+u)/(f-u),R=-2*f*u/(f-u);else if(h===Yh)A=-f/(f-u),R=-f*u/(f-u);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+h);return g[0]=_,g[4]=0,g[8]=b,g[12]=0,g[1]=0,g[5]=x,g[9]=M,g[13]=0,g[2]=0,g[6]=0,g[10]=A,g[14]=R,g[3]=0,g[7]=0,g[11]=-1,g[15]=0,this}makeOrthographic(e,t,n,s,u,f,h=ks,m=!1){const g=this.elements,_=2/(t-e),x=2/(n-s),b=-(t+e)/(t-e),M=-(n+s)/(n-s);let A,R;if(m)A=1/(f-u),R=f/(f-u);else if(h===ks)A=-2/(f-u),R=-(f+u)/(f-u);else if(h===Yh)A=-1/(f-u),R=-u/(f-u);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+h);return g[0]=_,g[4]=0,g[8]=0,g[12]=b,g[1]=0,g[5]=x,g[9]=0,g[13]=M,g[2]=0,g[6]=0,g[10]=A,g[14]=R,g[3]=0,g[7]=0,g[11]=0,g[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let s=0;s<16;s++)if(t[s]!==n[s])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const bh=new j,Xr=new Xt,gR=new j(0,0,0),vR=new j(1,1,1),Au=new j,E0=new j,Bs=new j,uM=new Xt,cM=new Pa;class Gs{constructor(e=0,t=0,n=0,s=Gs.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=s}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,s=this._order){return this._x=e,this._y=t,this._z=n,this._order=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const s=e.elements,u=s[0],f=s[4],h=s[8],m=s[1],g=s[5],_=s[9],x=s[2],b=s[6],M=s[10];switch(t){case"XYZ":this._y=Math.asin(Ht(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(-_,M),this._z=Math.atan2(-f,u)):(this._x=Math.atan2(b,g),this._z=0);break;case"YXZ":this._x=Math.asin(-Ht(_,-1,1)),Math.abs(_)<.9999999?(this._y=Math.atan2(h,M),this._z=Math.atan2(m,g)):(this._y=Math.atan2(-x,u),this._z=0);break;case"ZXY":this._x=Math.asin(Ht(b,-1,1)),Math.abs(b)<.9999999?(this._y=Math.atan2(-x,M),this._z=Math.atan2(-f,g)):(this._y=0,this._z=Math.atan2(m,u));break;case"ZYX":this._y=Math.asin(-Ht(x,-1,1)),Math.abs(x)<.9999999?(this._x=Math.atan2(b,M),this._z=Math.atan2(m,u)):(this._x=0,this._z=Math.atan2(-f,g));break;case"YZX":this._z=Math.asin(Ht(m,-1,1)),Math.abs(m)<.9999999?(this._x=Math.atan2(-_,g),this._y=Math.atan2(-x,u)):(this._x=0,this._y=Math.atan2(h,M));break;case"XZY":this._z=Math.asin(-Ht(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(b,g),this._y=Math.atan2(h,u)):(this._x=Math.atan2(-_,M),this._y=0);break;default:ft("Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return uM.makeRotationFromQuaternion(e),this.setFromRotationMatrix(uM,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return cM.setFromEuler(this),this.setFromQuaternion(cM,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Gs.DEFAULT_ORDER="XYZ";class Kh{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let n=0;n0&&(s.userData=this.userData),s.layers=this.layers.mask,s.matrix=this.matrix.toArray(),s.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(s.matrixAutoUpdate=!1),this.isInstancedMesh&&(s.type="InstancedMesh",s.count=this.count,s.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(s.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(s.type="BatchedMesh",s.perObjectFrustumCulled=this.perObjectFrustumCulled,s.sortObjects=this.sortObjects,s.drawRanges=this._drawRanges,s.reservedRanges=this._reservedRanges,s.geometryInfo=this._geometryInfo.map(h=>({...h,boundingBox:h.boundingBox?h.boundingBox.toJSON():void 0,boundingSphere:h.boundingSphere?h.boundingSphere.toJSON():void 0})),s.instanceInfo=this._instanceInfo.map(h=>({...h})),s.availableInstanceIds=this._availableInstanceIds.slice(),s.availableGeometryIds=this._availableGeometryIds.slice(),s.nextIndexStart=this._nextIndexStart,s.nextVertexStart=this._nextVertexStart,s.geometryCount=this._geometryCount,s.maxInstanceCount=this._maxInstanceCount,s.maxVertexCount=this._maxVertexCount,s.maxIndexCount=this._maxIndexCount,s.geometryInitialized=this._geometryInitialized,s.matricesTexture=this._matricesTexture.toJSON(e),s.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(s.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(s.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(s.boundingBox=this.boundingBox.toJSON()));function u(h,m){return h[m.uuid]===void 0&&(h[m.uuid]=m.toJSON(e)),m.uuid}if(this.isScene)this.background&&(this.background.isColor?s.background=this.background.toJSON():this.background.isTexture&&(s.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(s.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){s.geometry=u(e.geometries,this.geometry);const h=this.geometry.parameters;if(h!==void 0&&h.shapes!==void 0){const m=h.shapes;if(Array.isArray(m))for(let g=0,_=m.length;g<_;g++){const x=m[g];u(e.shapes,x)}else u(e.shapes,m)}}if(this.isSkinnedMesh&&(s.bindMode=this.bindMode,s.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(u(e.skeletons,this.skeleton),s.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const h=[];for(let m=0,g=this.material.length;m0){s.children=[];for(let h=0;h0){s.animations=[];for(let h=0;h0&&(n.geometries=h),m.length>0&&(n.materials=m),g.length>0&&(n.textures=g),_.length>0&&(n.images=_),x.length>0&&(n.shapes=x),b.length>0&&(n.skeletons=b),M.length>0&&(n.animations=M),A.length>0&&(n.nodes=A)}return n.object=s,n;function f(h){const m=[];for(const g in h){const _=h[g];delete _.metadata,m.push(_)}return m}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n0?s.multiplyScalar(1/Math.sqrt(u)):s.set(0,0,0)}static getBarycoord(e,t,n,s,u){Wr.subVectors(s,t),El.subVectors(n,t),Q_.subVectors(e,t);const f=Wr.dot(Wr),h=Wr.dot(El),m=Wr.dot(Q_),g=El.dot(El),_=El.dot(Q_),x=f*g-h*h;if(x===0)return u.set(0,0,0),null;const b=1/x,M=(g*m-h*_)*b,A=(f*_-h*m)*b;return u.set(1-M-A,A,M)}static containsPoint(e,t,n,s){return this.getBarycoord(e,t,n,s,Tl)===null?!1:Tl.x>=0&&Tl.y>=0&&Tl.x+Tl.y<=1}static getInterpolation(e,t,n,s,u,f,h,m){return this.getBarycoord(e,t,n,s,Tl)===null?(m.x=0,m.y=0,"z"in m&&(m.z=0),"w"in m&&(m.w=0),null):(m.setScalar(0),m.addScaledVector(u,Tl.x),m.addScaledVector(f,Tl.y),m.addScaledVector(h,Tl.z),m)}static getInterpolatedAttribute(e,t,n,s,u,f){return ex.setScalar(0),tx.setScalar(0),nx.setScalar(0),ex.fromBufferAttribute(e,t),tx.fromBufferAttribute(e,n),nx.fromBufferAttribute(e,s),f.setScalar(0),f.addScaledVector(ex,u.x),f.addScaledVector(tx,u.y),f.addScaledVector(nx,u.z),f}static isFrontFacing(e,t,n,s){return Wr.subVectors(n,t),El.subVectors(e,t),Wr.cross(El).dot(s)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,s){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[s]),this}setFromAttributeAndIndices(e,t,n,s){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,s),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Wr.subVectors(this.c,this.b),El.subVectors(this.a,this.b),Wr.cross(El).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Cs.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Cs.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,s,u){return Cs.getInterpolation(e,this.a,this.b,this.c,t,n,s,u)}containsPoint(e){return Cs.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Cs.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,s=this.b,u=this.c;let f,h;Eh.subVectors(s,n),Th.subVectors(u,n),K_.subVectors(e,n);const m=Eh.dot(K_),g=Th.dot(K_);if(m<=0&&g<=0)return t.copy(n);J_.subVectors(e,s);const _=Eh.dot(J_),x=Th.dot(J_);if(_>=0&&x<=_)return t.copy(s);const b=m*x-_*g;if(b<=0&&m>=0&&_<=0)return f=m/(m-_),t.copy(n).addScaledVector(Eh,f);$_.subVectors(e,u);const M=Eh.dot($_),A=Th.dot($_);if(A>=0&&M<=A)return t.copy(u);const R=M*g-m*A;if(R<=0&&g>=0&&A<=0)return h=g/(g-A),t.copy(n).addScaledVector(Th,h);const w=_*A-M*x;if(w<=0&&x-_>=0&&M-A>=0)return gM.subVectors(u,s),h=(x-_)/(x-_+(M-A)),t.copy(s).addScaledVector(gM,h);const E=1/(w+R+b);return f=R*E,h=b*E,t.copy(n).addScaledVector(Eh,f).addScaledVector(Th,h)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const HE={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},wu={h:0,s:0,l:0},A0={h:0,s:0,l:0};function ix(r,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?r+(e-r)*6*t:t<1/2?e:t<2/3?r+(e-r)*6*(2/3-t):r}class yt{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const s=e;s&&s.isColor?this.copy(s):typeof s=="number"?this.setHex(s):typeof s=="string"&&this.setStyle(s)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Ia){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Sn.colorSpaceToWorking(this,t),this}setRGB(e,t,n,s=Sn.workingColorSpace){return this.r=e,this.g=t,this.b=n,Sn.colorSpaceToWorking(this,s),this}setHSL(e,t,n,s=Sn.workingColorSpace){if(e=wb(e,1),t=Ht(t,0,1),n=Ht(n,0,1),t===0)this.r=this.g=this.b=n;else{const u=n<=.5?n*(1+t):n+t-n*t,f=2*n-u;this.r=ix(f,u,e+1/3),this.g=ix(f,u,e),this.b=ix(f,u,e-1/3)}return Sn.colorSpaceToWorking(this,s),this}setStyle(e,t=Ia){function n(u){u!==void 0&&parseFloat(u)<1&&ft("Color: Alpha component of "+e+" will be ignored.")}let s;if(s=/^(\w+)\(([^\)]*)\)/.exec(e)){let u;const f=s[1],h=s[2];switch(f){case"rgb":case"rgba":if(u=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(h))return n(u[4]),this.setRGB(Math.min(255,parseInt(u[1],10))/255,Math.min(255,parseInt(u[2],10))/255,Math.min(255,parseInt(u[3],10))/255,t);if(u=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(h))return n(u[4]),this.setRGB(Math.min(100,parseInt(u[1],10))/100,Math.min(100,parseInt(u[2],10))/100,Math.min(100,parseInt(u[3],10))/100,t);break;case"hsl":case"hsla":if(u=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(h))return n(u[4]),this.setHSL(parseFloat(u[1])/360,parseFloat(u[2])/100,parseFloat(u[3])/100,t);break;default:ft("Color: Unknown color model "+e)}}else if(s=/^\#([A-Fa-f\d]+)$/.exec(e)){const u=s[1],f=u.length;if(f===3)return this.setRGB(parseInt(u.charAt(0),16)/15,parseInt(u.charAt(1),16)/15,parseInt(u.charAt(2),16)/15,t);if(f===6)return this.setHex(parseInt(u,16),t);ft("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Ia){const n=HE[e.toLowerCase()];return n!==void 0?this.setHex(n,t):ft("Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Nl(e.r),this.g=Nl(e.g),this.b=Nl(e.b),this}copyLinearToSRGB(e){return this.r=Wh(e.r),this.g=Wh(e.g),this.b=Wh(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Ia){return Sn.workingToColorSpace(La.copy(this),e),Math.round(Ht(La.r*255,0,255))*65536+Math.round(Ht(La.g*255,0,255))*256+Math.round(Ht(La.b*255,0,255))}getHexString(e=Ia){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Sn.workingColorSpace){Sn.workingToColorSpace(La.copy(this),t);const n=La.r,s=La.g,u=La.b,f=Math.max(n,s,u),h=Math.min(n,s,u);let m,g;const _=(h+f)/2;if(h===f)m=0,g=0;else{const x=f-h;switch(g=_<=.5?x/(f+h):x/(2-f-h),f){case n:m=(s-u)/x+(s0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){ft(`Material: parameter '${t}' has value of undefined.`);continue}const s=this[t];if(s===void 0){ft(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}s&&s.isColor?s.set(n):s&&s.isVector3&&n&&n.isVector3?s.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(n.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(n.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Kc&&(n.blending=this.blending),this.side!==Ll&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==vv&&(n.blendSrc=this.blendSrc),this.blendDst!==yv&&(n.blendDst=this.blendDst),this.blendEquation!==Du&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==ef&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==qx&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Wc&&(n.stencilFail=this.stencilFail),this.stencilZFail!==Wc&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==Wc&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.allowOverride===!1&&(n.allowOverride=!1),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function s(u){const f=[];for(const h in u){const m=u[h];delete m.metadata,f.push(m)}return f}if(t){const u=s(e.textures),f=s(e.images);u.length>0&&(n.textures=u),f.length>0&&(n.images=f)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const s=t.length;n=new Array(s);for(let u=0;u!==s;++u)n[u]=t[u].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.allowOverride=e.allowOverride,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class Vu extends Ba{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new yt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Gs,this.combine=Am,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Rl=MR();function MR(){const r=new ArrayBuffer(4),e=new Float32Array(r),t=new Uint32Array(r),n=new Uint32Array(512),s=new Uint32Array(512);for(let m=0;m<256;++m){const g=m-127;g<-27?(n[m]=0,n[m|256]=32768,s[m]=24,s[m|256]=24):g<-14?(n[m]=1024>>-g-14,n[m|256]=1024>>-g-14|32768,s[m]=-g-1,s[m|256]=-g-1):g<=15?(n[m]=g+15<<10,n[m|256]=g+15<<10|32768,s[m]=13,s[m|256]=13):g<128?(n[m]=31744,n[m|256]=64512,s[m]=24,s[m|256]=24):(n[m]=31744,n[m|256]=64512,s[m]=13,s[m|256]=13)}const u=new Uint32Array(2048),f=new Uint32Array(64),h=new Uint32Array(64);for(let m=1;m<1024;++m){let g=m<<13,_=0;for(;(g&8388608)===0;)g<<=1,_-=8388608;g&=-8388609,_+=947912704,u[m]=g|_}for(let m=1024;m<2048;++m)u[m]=939524096+(m-1024<<13);for(let m=1;m<31;++m)f[m]=m<<23;f[31]=1199570944,f[32]=2147483648;for(let m=33;m<63;++m)f[m]=2147483648+(m-32<<23);f[63]=3347054592;for(let m=1;m<64;++m)m!==32&&(h[m]=1024);return{floatView:e,uint32View:t,baseTable:n,shiftTable:s,mantissaTable:u,exponentTable:f,offsetTable:h}}function As(r){Math.abs(r)>65504&&ft("DataUtils.toHalfFloat(): Value out of range."),r=Ht(r,-65504,65504),Rl.floatView[0]=r;const e=Rl.uint32View[0],t=e>>23&511;return Rl.baseTable[t]+((e&8388607)>>Rl.shiftTable[t])}function Yp(r){const e=r>>10;return Rl.uint32View[0]=Rl.mantissaTable[Rl.offsetTable[e]+(r&1023)]+Rl.exponentTable[e],Rl.floatView[0]}class ER{static toHalfFloat(e){return As(e)}static fromHalfFloat(e){return Yp(e)}}const ji=new j,w0=new ze;let TR=0;class Xn{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:TR++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=pm,this.updateRanges=[],this.gpuType=is,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let s=0,u=this.itemSize;st.count&&ft("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new za);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){Rt("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new j(-1/0,-1/0,-1/0),new j(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,s=t.length;n0&&(e.userData=this.userData),this.parameters!==void 0){const m=this.parameters;for(const g in m)m[g]!==void 0&&(e[g]=m[g]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const m in n){const g=n[m];e.data.attributes[m]=g.toJSON(e.data)}const s={};let u=!1;for(const m in this.morphAttributes){const g=this.morphAttributes[m],_=[];for(let x=0,b=g.length;x0&&(s[m]=_,u=!0)}u&&(e.data.morphAttributes=s,e.data.morphTargetsRelative=this.morphTargetsRelative);const f=this.groups;f.length>0&&(e.data.groups=JSON.parse(JSON.stringify(f)));const h=this.boundingSphere;return h!==null&&(e.data.boundingSphere=h.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone());const s=e.attributes;for(const g in s){const _=s[g];this.setAttribute(g,_.clone(t))}const u=e.morphAttributes;for(const g in u){const _=[],x=u[g];for(let b=0,M=x.length;b0){const s=t[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let u=0,f=s.length;u(e.far-e.near)**2))&&(vM.copy(u).invert(),Dc.copy(e.ray).applyMatrix4(vM),!(n.boundingBox!==null&&Dc.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Dc)))}_computeIntersections(e,t,n){let s;const u=this.geometry,f=this.material,h=u.index,m=u.attributes.position,g=u.attributes.uv,_=u.attributes.uv1,x=u.attributes.normal,b=u.groups,M=u.drawRange;if(h!==null)if(Array.isArray(f))for(let A=0,R=b.length;At.far?null:{distance:g,point:U0.clone(),object:r}}function I0(r,e,t,n,s,u,f,h,m,g){r.getVertexPosition(h,R0),r.getVertexPosition(m,N0),r.getVertexPosition(g,D0);const _=UR(r,e,t,n,R0,N0,D0,_M);if(_){const x=new j;Cs.getBarycoord(_M,R0,N0,D0,x),s&&(_.uv=Cs.getInterpolatedAttribute(s,h,m,g,x,new ze)),u&&(_.uv1=Cs.getInterpolatedAttribute(u,h,m,g,x,new ze)),f&&(_.normal=Cs.getInterpolatedAttribute(f,h,m,g,x,new j),_.normal.dot(n.direction)>0&&_.normal.multiplyScalar(-1));const b={a:h,b:m,c:g,normal:new j,materialIndex:0};Cs.getNormal(R0,N0,D0,b.normal),_.face=b,_.barycoord=x}return _}class lf extends Kt{constructor(e=1,t=1,n=1,s=1,u=1,f=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:s,heightSegments:u,depthSegments:f};const h=this;s=Math.floor(s),u=Math.floor(u),f=Math.floor(f);const m=[],g=[],_=[],x=[];let b=0,M=0;A("z","y","x",-1,-1,n,t,e,f,u,0),A("z","y","x",1,-1,n,t,-e,f,u,1),A("x","z","y",1,1,e,n,t,s,f,2),A("x","z","y",1,-1,e,n,-t,s,f,3),A("x","y","z",1,-1,e,t,n,s,u,4),A("x","y","z",-1,-1,e,t,-n,s,u,5),this.setIndex(m),this.setAttribute("position",new bt(g,3)),this.setAttribute("normal",new bt(_,3)),this.setAttribute("uv",new bt(x,2));function A(R,w,E,N,D,U,B,z,H,W,I){const P=U/H,Z=B/W,se=U/2,te=B/2,fe=z/2,pe=H+1,Y=W+1;let q=0,ne=0;const be=new j;for(let Ne=0;Ne0?1:-1,_.push(be.x,be.y,be.z),x.push(oe/H),x.push(1-Ne/W),q+=1}}for(let Ne=0;Ne0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const s in this.extensions)this.extensions[s]===!0&&(n[s]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class Ry extends Cn{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Xt,this.projectionMatrix=new Xt,this.projectionMatrixInverse=new Xt,this.coordinateSystem=ks,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Cu=new j,xM=new ze,bM=new ze;class zi extends Ry{constructor(e=50,t=1,n=.1,s=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=s,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=Qh*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Jc*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Qh*2*Math.atan(Math.tan(Jc*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){Cu.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(Cu.x,Cu.y).multiplyScalar(-e/Cu.z),Cu.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(Cu.x,Cu.y).multiplyScalar(-e/Cu.z)}getViewSize(e,t){return this.getViewBounds(e,xM,bM),t.subVectors(bM,xM)}setViewOffset(e,t,n,s,u,f){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=s,this.view.width=u,this.view.height=f,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Jc*.5*this.fov)/this.zoom,n=2*t,s=this.aspect*n,u=-.5*s;const f=this.view;if(this.view!==null&&this.view.enabled){const m=f.fullWidth,g=f.fullHeight;u+=f.offsetX*s/m,t-=f.offsetY*n/g,s*=f.width/m,n*=f.height/g}const h=this.filmOffset;h!==0&&(u+=e*h/this.getFilmWidth()),this.projectionMatrix.makePerspective(u,u+s,t,t-n,e,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const wh=-90,Ch=1;class WE extends Cn{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const s=new zi(wh,Ch,e,t);s.layers=this.layers,this.add(s);const u=new zi(wh,Ch,e,t);u.layers=this.layers,this.add(u);const f=new zi(wh,Ch,e,t);f.layers=this.layers,this.add(f);const h=new zi(wh,Ch,e,t);h.layers=this.layers,this.add(h);const m=new zi(wh,Ch,e,t);m.layers=this.layers,this.add(m);const g=new zi(wh,Ch,e,t);g.layers=this.layers,this.add(g)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[n,s,u,f,h,m]=t;for(const g of t)this.remove(g);if(e===ks)n.up.set(0,1,0),n.lookAt(1,0,0),s.up.set(0,1,0),s.lookAt(-1,0,0),u.up.set(0,0,-1),u.lookAt(0,1,0),f.up.set(0,0,1),f.lookAt(0,-1,0),h.up.set(0,1,0),h.lookAt(0,0,1),m.up.set(0,1,0),m.lookAt(0,0,-1);else if(e===Yh)n.up.set(0,-1,0),n.lookAt(-1,0,0),s.up.set(0,-1,0),s.lookAt(1,0,0),u.up.set(0,0,1),u.lookAt(0,1,0),f.up.set(0,0,-1),f.lookAt(0,-1,0),h.up.set(0,-1,0),h.lookAt(0,0,1),m.up.set(0,-1,0),m.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const g of t)this.add(g),g.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:s}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[u,f,h,m,g,_]=this.children,x=e.getRenderTarget(),b=e.getActiveCubeFace(),M=e.getActiveMipmapLevel(),A=e.xr.enabled;e.xr.enabled=!1;const R=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,s),e.render(t,u),e.setRenderTarget(n,1,s),e.render(t,f),e.setRenderTarget(n,2,s),e.render(t,h),e.setRenderTarget(n,3,s),e.render(t,m),e.setRenderTarget(n,4,s),e.render(t,g),n.texture.generateMipmaps=R,e.setRenderTarget(n,5,s),e.render(t,_),e.setRenderTarget(x,b,M),e.xr.enabled=A,n.texture.needsPMREMUpdate=!0}}class Cm extends wi{constructor(e=[],t=zo,n,s,u,f,h,m,g,_){super(e,t,n,s,u,f,h,m,g,_),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Db extends Hs{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},s=[n,n,n,n,n,n];this.texture=new Cm(s),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},s=new lf(5,5,5),u=new yr({name:"CubemapFromEquirect",uniforms:Jh(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:as,blending:Po});u.uniforms.tEquirect.value=t;const f=new Yi(s,u),h=t.minFilter;return t.minFilter===Io&&(t.minFilter=oi),new WE(1,10,this).update(e,f),t.minFilter=h,f.geometry.dispose(),f.material.dispose(),this}clear(e,t=!0,n=!0,s=!0){const u=e.getRenderTarget();for(let f=0;f<6;f++)e.setRenderTarget(this,f),e.clear(t,n,s);e.setRenderTarget(u)}}class Gh extends Cn{constructor(){super(),this.isGroup=!0,this.type="Group"}}const zR={type:"move"};class pv{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Gh,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Gh,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new j,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new j),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Gh,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new j,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new j),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let s=null,u=null,f=null;const h=this._targetRay,m=this._grip,g=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(g&&e.hand){f=!0;for(const R of e.hand.values()){const w=t.getJointPose(R,n),E=this._getHandJoint(g,R);w!==null&&(E.matrix.fromArray(w.transform.matrix),E.matrix.decompose(E.position,E.rotation,E.scale),E.matrixWorldNeedsUpdate=!0,E.jointRadius=w.radius),E.visible=w!==null}const _=g.joints["index-finger-tip"],x=g.joints["thumb-tip"],b=_.position.distanceTo(x.position),M=.02,A=.005;g.inputState.pinching&&b>M+A?(g.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!g.inputState.pinching&&b<=M-A&&(g.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else m!==null&&e.gripSpace&&(u=t.getPose(e.gripSpace,n),u!==null&&(m.matrix.fromArray(u.transform.matrix),m.matrix.decompose(m.position,m.rotation,m.scale),m.matrixWorldNeedsUpdate=!0,u.linearVelocity?(m.hasLinearVelocity=!0,m.linearVelocity.copy(u.linearVelocity)):m.hasLinearVelocity=!1,u.angularVelocity?(m.hasAngularVelocity=!0,m.angularVelocity.copy(u.angularVelocity)):m.hasAngularVelocity=!1));h!==null&&(s=t.getPose(e.targetRaySpace,n),s===null&&u!==null&&(s=u),s!==null&&(h.matrix.fromArray(s.transform.matrix),h.matrix.decompose(h.position,h.rotation,h.scale),h.matrixWorldNeedsUpdate=!0,s.linearVelocity?(h.hasLinearVelocity=!0,h.linearVelocity.copy(s.linearVelocity)):h.hasLinearVelocity=!1,s.angularVelocity?(h.hasAngularVelocity=!0,h.angularVelocity.copy(s.angularVelocity)):h.hasAngularVelocity=!1,this.dispatchEvent(zR)))}return h!==null&&(h.visible=s!==null),m!==null&&(m.visible=u!==null),g!==null&&(g.visible=f!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new Gh;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class Ny{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new yt(e),this.density=t}clone(){return new Ny(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class Dy{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new yt(e),this.near=t,this.far=n}clone(){return new Dy(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Lb extends Cn{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Gs,this.environmentIntensity=1,this.environmentRotation=new Gs,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class Ly{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=pm,this.updateRanges=[],this.version=0,this.uuid=Vs()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let s=0,u=this.stride;se.far||t.push({distance:m,point:Bp.clone(),uv:Cs.getInterpolation(Bp,O0,kp,P0,SM,rx,MM,new ze),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function z0(r,e,t,n,s,u){Lh.subVectors(r,t).addScalar(.5).multiply(n),s!==void 0?(Fp.x=u*Lh.x-s*Lh.y,Fp.y=s*Lh.x+u*Lh.y):Fp.copy(Lh),r.copy(e),r.x+=Fp.x,r.y+=Fp.y,r.applyMatrix4(qE)}const B0=new j,EM=new j;class YE extends Cn{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let n=0,s=t.length;n0){let n,s;for(n=1,s=t.length;n0){B0.setFromMatrixPosition(this.matrixWorld);const s=e.ray.origin.distanceTo(B0);this.getObjectForDistance(s).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){B0.setFromMatrixPosition(e.matrixWorld),EM.setFromMatrixPosition(this.matrixWorld);const n=B0.distanceTo(EM)/e.zoom;t[0].object.visible=!0;let s,u;for(s=1,u=t.length;s=f)t[s-1].object.visible=!1,t[s].object.visible=!0;else break}for(this._currentLevel=s-1;s1?null:t.copy(e.start).addScaledVector(n,u)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||HR.getNormalMatrix(e),s=this.coplanarPoint(ux).applyMatrix4(e),u=this.normal.applyMatrix3(n).normalize();return this.constant=-s.dot(u),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Lc=new _a,GR=new ze(.5,.5),V0=new j;class ad{constructor(e=new wl,t=new wl,n=new wl,s=new wl,u=new wl,f=new wl){this.planes=[e,t,n,s,u,f]}set(e,t,n,s,u,f){const h=this.planes;return h[0].copy(e),h[1].copy(t),h[2].copy(n),h[3].copy(s),h[4].copy(u),h[5].copy(f),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=ks,n=!1){const s=this.planes,u=e.elements,f=u[0],h=u[1],m=u[2],g=u[3],_=u[4],x=u[5],b=u[6],M=u[7],A=u[8],R=u[9],w=u[10],E=u[11],N=u[12],D=u[13],U=u[14],B=u[15];if(s[0].setComponents(g-f,M-_,E-A,B-N).normalize(),s[1].setComponents(g+f,M+_,E+A,B+N).normalize(),s[2].setComponents(g+h,M+x,E+R,B+D).normalize(),s[3].setComponents(g-h,M-x,E-R,B-D).normalize(),n)s[4].setComponents(m,b,w,U).normalize(),s[5].setComponents(g-m,M-b,E-w,B-U).normalize();else if(s[4].setComponents(g-m,M-b,E-w,B-U).normalize(),t===ks)s[5].setComponents(g+m,M+b,E+w,B+U).normalize();else if(t===Yh)s[5].setComponents(m,b,w,U).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Lc.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Lc.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Lc)}intersectsSprite(e){Lc.center.set(0,0,0);const t=GR.distanceTo(e.center);return Lc.radius=.7071067811865476+t,Lc.applyMatrix4(e.matrixWorld),this.intersectsSphere(Lc)}intersectsSphere(e){const t=this.planes,n=e.center,s=-e.radius;for(let u=0;u<6;u++)if(t[u].distanceToPoint(n)0?e.max.x:e.min.x,V0.y=s.normal.y>0?e.max.y:e.min.y,V0.z=s.normal.z>0?e.max.z:e.min.z,s.distanceToPoint(V0)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}const No=new Xt,Do=new ad;class Iy{constructor(){this.coordinateSystem=ks}intersectsObject(e,t){if(!t.isArrayCamera||t.cameras.length===0)return!1;for(let n=0;n=u.length&&u.push({start:-1,count:-1,z:-1,index:-1});const h=u[this.index];f.push(h),this.index++,h.start=e,h.count=t,h.z=n,h.index=s}reset(){this.list.length=0,this.index=0}}const Ts=new Xt,jR=new yt(1,1,1),UM=new ad,YR=new Iy,H0=new za,Uc=new _a,Gp=new j,IM=new j,ZR=new j,fx=new qR,Ua=new Yi,G0=[];function QR(r,e,t=0){const n=e.itemSize;if(r.isInterleavedBufferAttribute||r.array.constructor!==e.array.constructor){const s=r.count;for(let u=0;u65535?new Uint32Array(s):new Uint16Array(s);t.setIndex(new Xn(u,1))}this._geometryInitialized=!0}}_validateGeometry(e){const t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(const n in t.attributes){if(!e.hasAttribute(n))throw new Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);const s=e.getAttribute(n),u=t.getAttribute(n);if(s.itemSize!==u.itemSize||s.normalized!==u.normalized)throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){const t=this._instanceInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){const t=this._geometryInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new za);const e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let n=0,s=t.length;n=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw new Error("THREE.BatchedMesh: Maximum item count reached.");const n={visible:!0,active:!0,geometryIndex:e};let s=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(cx),s=this._availableInstanceIds.shift(),this._instanceInfo[s]=n):(s=this._instanceInfo.length,this._instanceInfo.push(n));const u=this._matricesTexture;Ts.identity().toArray(u.image.data,s*16),u.needsUpdate=!0;const f=this._colorsTexture;return f&&(jR.toArray(f.image.data,s*4),f.needsUpdate=!0),this._visibilityChanged=!0,s}addGeometry(e,t=-1,n=-1){this._initializeGeometry(e),this._validateGeometry(e);const s={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},u=this._geometryInfo;s.vertexStart=this._nextVertexStart,s.reservedVertexCount=t===-1?e.getAttribute("position").count:t;const f=e.getIndex();if(f!==null&&(s.indexStart=this._nextIndexStart,s.reservedIndexCount=n===-1?f.count:n),s.indexStart!==-1&&s.indexStart+s.reservedIndexCount>this._maxIndexCount||s.vertexStart+s.reservedVertexCount>this._maxVertexCount)throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");let m;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(cx),m=this._availableGeometryIds.shift(),u[m]=s):(m=this._geometryCount,this._geometryCount++,u.push(s)),this.setGeometryAt(m,e),this._nextIndexStart=s.indexStart+s.reservedIndexCount,this._nextVertexStart=s.vertexStart+s.reservedVertexCount,m}setGeometryAt(e,t){if(e>=this._geometryCount)throw new Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);const n=this.geometry,s=n.getIndex()!==null,u=n.getIndex(),f=t.getIndex(),h=this._geometryInfo[e];if(s&&f.count>h.reservedIndexCount||t.attributes.position.count>h.reservedVertexCount)throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");const m=h.vertexStart,g=h.reservedVertexCount;h.vertexCount=t.getAttribute("position").count;for(const _ in n.attributes){const x=t.getAttribute(_),b=n.getAttribute(_);QR(x,b,m);const M=x.itemSize;for(let A=x.count,R=g;A=t.length||t[e].active===!1)return this;const n=this._instanceInfo;for(let s=0,u=n.length;sh).sort((f,h)=>n[f].vertexStart-n[h].vertexStart),u=this.geometry;for(let f=0,h=n.length;f=this._geometryCount)return null;const n=this.geometry,s=this._geometryInfo[e];if(s.boundingBox===null){const u=new za,f=n.index,h=n.attributes.position;for(let m=s.start,g=s.start+s.count;m=this._geometryCount)return null;const n=this.geometry,s=this._geometryInfo[e];if(s.boundingSphere===null){const u=new _a;this.getBoundingBoxAt(e,H0),H0.getCenter(u.center);const f=n.index,h=n.attributes.position;let m=0;for(let g=s.start,_=s.start+s.count;g<_;g++){let x=g;f&&(x=f.getX(x)),Gp.fromBufferAttribute(h,x),m=Math.max(m,u.center.distanceToSquared(Gp))}u.radius=Math.sqrt(m),s.boundingSphere=u}return t.copy(s.boundingSphere),t}setMatrixAt(e,t){this.validateInstanceId(e);const n=this._matricesTexture,s=this._matricesTexture.image.data;return t.toArray(s,e*16),n.needsUpdate=!0,this}getMatrixAt(e,t){return this.validateInstanceId(e),t.fromArray(this._matricesTexture.image.data,e*16)}setColorAt(e,t){return this.validateInstanceId(e),this._colorsTexture===null&&this._initColorsTexture(),t.toArray(this._colorsTexture.image.data,e*4),this._colorsTexture.needsUpdate=!0,this}getColorAt(e,t){return this.validateInstanceId(e),t.fromArray(this._colorsTexture.image.data,e*4)}setVisibleAt(e,t){return this.validateInstanceId(e),this._instanceInfo[e].visible===t?this:(this._instanceInfo[e].visible=t,this._visibilityChanged=!0,this)}getVisibleAt(e){return this.validateInstanceId(e),this._instanceInfo[e].visible}setGeometryIdAt(e,t){return this.validateInstanceId(e),this.validateGeometryId(t),this._instanceInfo[e].geometryIndex=t,this}getGeometryIdAt(e){return this.validateInstanceId(e),this._instanceInfo[e].geometryIndex}getGeometryRangeAt(e,t={}){this.validateGeometryId(e);const n=this._geometryInfo[e];return t.vertexStart=n.vertexStart,t.vertexCount=n.vertexCount,t.reservedVertexCount=n.reservedVertexCount,t.indexStart=n.indexStart,t.indexCount=n.indexCount,t.reservedIndexCount=n.reservedIndexCount,t.start=n.start,t.count=n.count,t}setInstanceCount(e){const t=this._availableInstanceIds,n=this._instanceInfo;for(t.sort(cx);t[t.length-1]===n.length-1;)n.pop(),t.pop();if(eh.active);if(Math.max(...n.map(h=>h.vertexStart+h.reservedVertexCount))>e)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...n.map(m=>m.indexStart+m.reservedIndexCount))>t)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);const u=this.geometry;u.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new Kt,this._initializeGeometry(u));const f=this.geometry;u.index&&Ic(u.index.array,f.index.array);for(const h in u.attributes)Ic(u.attributes[h].array,f.attributes[h].array)}raycast(e,t){const n=this._instanceInfo,s=this._geometryInfo,u=this.matrixWorld,f=this.geometry;Ua.material=this.material,Ua.geometry.index=f.index,Ua.geometry.attributes=f.attributes,Ua.geometry.boundingBox===null&&(Ua.geometry.boundingBox=new za),Ua.geometry.boundingSphere===null&&(Ua.geometry.boundingSphere=new _a);for(let h=0,m=n.length;h({...t,boundingBox:t.boundingBox!==null?t.boundingBox.clone():null,boundingSphere:t.boundingSphere!==null?t.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(t=>({...t})),this._availableInstanceIds=e._availableInstanceIds.slice(),this._availableGeometryIds=e._availableGeometryIds.slice(),this._nextIndexStart=e._nextIndexStart,this._nextVertexStart=e._nextVertexStart,this._geometryCount=e._geometryCount,this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._indirectTexture=e._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(e,t,n,s,u){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const f=s.getIndex(),h=f===null?1:f.array.BYTES_PER_ELEMENT,m=this._instanceInfo,g=this._multiDrawStarts,_=this._multiDrawCounts,x=this._geometryInfo,b=this.perObjectFrustumCulled,M=this._indirectTexture,A=M.image.data,R=n.isArrayCamera?YR:UM;b&&!n.isArrayCamera&&(Ts.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),UM.setFromProjectionMatrix(Ts,n.coordinateSystem,n.reversedDepth));let w=0;if(this.sortObjects){Ts.copy(this.matrixWorld).invert(),Gp.setFromMatrixPosition(n.matrixWorld).applyMatrix4(Ts),IM.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(Ts);for(let D=0,U=m.length;D0){const s=t[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let u=0,f=s.length;un)return;hx.applyMatrix4(r.matrixWorld);const g=e.ray.origin.distanceTo(hx);if(!(ge.far))return{distance:g,point:PM.clone().applyMatrix4(r.matrixWorld),index:f,face:null,faceIndex:null,barycoord:null,object:r}}const zM=new j,BM=new j;class Vo extends Fu{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[];for(let s=0,u=t.count;s0){const s=t[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let u=0,f=s.length;us.far)return;u.push({distance:g,distanceToRay:Math.sqrt(h),point:m,index:e,face:null,faceIndex:null,barycoord:null,object:f})}}class eT extends wi{constructor(e,t,n,s,u=oi,f=oi,h,m,g){super(e,t,n,s,u,f,h,m,g),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;const _=this;function x(){_.needsUpdate=!0,_._requestVideoFrameCallbackId=e.requestVideoFrameCallback(x)}"requestVideoFrameCallback"in e&&(this._requestVideoFrameCallbackId=e.requestVideoFrameCallback(x))}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}}class KR extends eT{constructor(e,t,n,s,u,f,h,m){super({},e,t,n,s,u,f,h,m),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}}class JR extends wi{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=Bi,this.minFilter=Bi,this.generateMipmaps=!1,this.needsUpdate=!0}}class Oy extends wi{constructor(e,t,n,s,u,f,h,m,g,_,x,b){super(null,f,h,m,g,_,s,u,x,b),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class $R extends Oy{constructor(e,t,n,s,u,f){super(e,t,n,u,f),this.isCompressedArrayTexture=!0,this.image.depth=s,this.wrapR=Rs,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class eN extends Oy{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,zo),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class tN extends wi{constructor(e,t,n,s,u,f,h,m,g){super(e,t,n,s,u,f,h,m,g),this.isCanvasTexture=!0,this.needsUpdate=!0}}class ed extends wi{constructor(e,t,n=vr,s,u,f,h=Bi,m=Bi,g,_=Fo,x=1){if(_!==Fo&&_!==Uu)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const b={width:e,height:t,depth:x};super(b,s,u,f,h,m,_,n,g),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Iu(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class tT extends ed{constructor(e,t=vr,n=zo,s,u,f=Bi,h=Bi,m,g=Fo){const _={width:e,height:e,depth:1},x=[_,_,_,_,_,_];super(e,e,t,n,s,u,f,h,m,g),this.image=x,this.isCubeDepthTexture=!0,this.isCubeTexture=!0}get images(){return this.image}set images(e){this.image=e}}class Pb extends wi{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}}class Py extends Kt{constructor(e=1,t=1,n=4,s=8,u=1){super(),this.type="CapsuleGeometry",this.parameters={radius:e,height:t,capSegments:n,radialSegments:s,heightSegments:u},t=Math.max(0,t),n=Math.max(1,Math.floor(n)),s=Math.max(3,Math.floor(s)),u=Math.max(1,Math.floor(u));const f=[],h=[],m=[],g=[],_=t/2,x=Math.PI/2*e,b=t,M=2*x+b,A=n*2+u,R=s+1,w=new j,E=new j;for(let N=0;N<=A;N++){let D=0,U=0,B=0,z=0;if(N<=n){const I=N/n,P=I*Math.PI/2;U=-_-e*Math.cos(P),B=e*Math.sin(P),z=-e*Math.cos(P),D=I*x}else if(N<=n+u){const I=(N-n)/u;U=-_+I*t,B=e,z=0,D=x+I*b}else{const I=(N-n-u)/n,P=I*Math.PI/2;U=_+e*Math.sin(P),B=e*Math.cos(P),z=e*Math.sin(P),D=x+b+I*x}const H=Math.max(0,Math.min(1,D/M));let W=0;N===0?W=.5/s:N===A&&(W=-.5/s);for(let I=0;I<=s;I++){const P=I/s,Z=P*Math.PI*2,se=Math.sin(Z),te=Math.cos(Z);E.x=-B*te,E.y=U,E.z=B*se,h.push(E.x,E.y,E.z),w.set(-B*te,z,B*se),w.normalize(),m.push(w.x,w.y,w.z),g.push(P+W,H)}if(N>0){const I=(N-1)*R;for(let P=0;P0&&D(!0),t>0&&D(!1)),this.setIndex(_),this.setAttribute("position",new bt(x,3)),this.setAttribute("normal",new bt(b,3)),this.setAttribute("uv",new bt(M,2));function N(){const U=new j,B=new j;let z=0;const H=(t-e)/n;for(let W=0;W<=u;W++){const I=[],P=W/u,Z=P*(t-e)+e;for(let se=0;se<=s;se++){const te=se/s,fe=te*m+h,pe=Math.sin(fe),Y=Math.cos(fe);B.x=Z*pe,B.y=-P*n+w,B.z=Z*Y,x.push(B.x,B.y,B.z),U.set(pe,H,Y).normalize(),b.push(U.x,U.y,U.z),M.push(te,1-P),I.push(A++)}R.push(I)}for(let W=0;W0||I!==0)&&(_.push(P,Z,te),z+=3),(t>0||I!==u-1)&&(_.push(Z,se,te),z+=3)}g.addGroup(E,z,0),E+=z}function D(U){const B=A,z=new ze,H=new j;let W=0;const I=U===!0?e:t,P=U===!0?1:-1;for(let se=1;se<=s;se++)x.push(0,w*P,0),b.push(0,P,0),M.push(.5,.5),A++;const Z=A;for(let se=0;se<=s;se++){const fe=se/s*m+h,pe=Math.cos(fe),Y=Math.sin(fe);H.x=I*Y,H.y=w*P,H.z=I*pe,x.push(H.x,H.y,H.z),b.push(0,P,0),z.x=pe*.5+.5,z.y=Y*.5*P+.5,M.push(z.x,z.y),A++}for(let se=0;se.9&&H<.1&&(D<.2&&(f[N+0]+=1),U<.2&&(f[N+2]+=1),B<.2&&(f[N+4]+=1))}}function b(N){u.push(N.x,N.y,N.z)}function M(N,D){const U=N*3;D.x=e[U+0],D.y=e[U+1],D.z=e[U+2]}function A(){const N=new j,D=new j,U=new j,B=new j,z=new ze,H=new ze,W=new ze;for(let I=0,P=0;I0)m=s-1;else{m=s;break}if(s=m,n[s]===f)return s/(u-1);const _=n[s],b=n[s+1]-_,M=(f-_)/b;return(s+M)/(u-1)}getTangent(e,t){let s=e-1e-4,u=e+1e-4;s<0&&(s=0),u>1&&(u=1);const f=this.getPoint(s),h=this.getPoint(u),m=t||(f.isVector2?new ze:new j);return m.copy(h).sub(f).normalize(),m}getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){const n=new j,s=[],u=[],f=[],h=new j,m=new Xt;for(let M=0;M<=e;M++){const A=M/e;s[M]=this.getTangentAt(A,new j)}u[0]=new j,f[0]=new j;let g=Number.MAX_VALUE;const _=Math.abs(s[0].x),x=Math.abs(s[0].y),b=Math.abs(s[0].z);_<=g&&(g=_,n.set(1,0,0)),x<=g&&(g=x,n.set(0,1,0)),b<=g&&n.set(0,0,1),h.crossVectors(s[0],n).normalize(),u[0].crossVectors(s[0],h),f[0].crossVectors(s[0],u[0]);for(let M=1;M<=e;M++){if(u[M]=u[M-1].clone(),f[M]=f[M-1].clone(),h.crossVectors(s[M-1],s[M]),h.length()>Number.EPSILON){h.normalize();const A=Math.acos(Ht(s[M-1].dot(s[M]),-1,1));u[M].applyMatrix4(m.makeRotationAxis(h,A))}f[M].crossVectors(s[M],u[M])}if(t===!0){let M=Math.acos(Ht(u[0].dot(u[e]),-1,1));M/=e,s[0].dot(h.crossVectors(u[0],u[e]))>0&&(M=-M);for(let A=1;A<=e;A++)u[A].applyMatrix4(m.makeRotationAxis(s[A],M*A)),f[A].crossVectors(s[A],u[A])}return{tangents:s,normals:u,binormals:f}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class Fy extends Zr{constructor(e=0,t=0,n=1,s=1,u=0,f=Math.PI*2,h=!1,m=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=s,this.aStartAngle=u,this.aEndAngle=f,this.aClockwise=h,this.aRotation=m}getPoint(e,t=new ze){const n=t,s=Math.PI*2;let u=this.aEndAngle-this.aStartAngle;const f=Math.abs(u)s;)u-=s;u0?0:(Math.floor(Math.abs(h)/u)+1)*u:m===0&&h===u-1&&(h=u-2,m=1);let g,_;this.closed||h>0?g=s[(h-1)%u]:(K0.subVectors(s[0],s[1]).add(s[0]),g=K0);const x=s[h%u],b=s[(h+1)%u];if(this.closed||h+2s.length-2?s.length-1:f+1],x=s[f>s.length-3?s.length-1:f+2];return n.set(VM(h,m.x,g.x,_.x,x.x),VM(h,m.y,g.y,_.y,x.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){const f=s[u]-n,h=this.curves[u],m=h.getLength(),g=m===0?0:1-f/m;return h.getPointAt(g,t)}u++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let n=0,s=this.curves.length;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){const x=g.getPoint(0);x.equals(this.currentPoint)||this.lineTo(x.x,x.y)}this.curves.push(g);const _=g.getPoint(1);return this.currentPoint.copy(_),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class $c extends ly{constructor(e){super(e),this.uuid=Vs(),this.type="Shape",this.holes=[]}getPointsHoles(e){const t=[];for(let n=0,s=this.holes.length;n80*t){h=r[0],m=r[1];let _=h,x=m;for(let b=t;b_&&(_=M),A>x&&(x=A)}g=Math.max(_-h,x-m),g=g!==0?32767/g:0}return vm(u,f,t,h,m,g,0),f}function lT(r,e,t,n,s){let u;if(s===TN(r,e,t,n)>0)for(let f=e;f=e;f-=n)u=HM(f/n|0,r[f],r[f+1],u);return u&&td(u,u.next)&&(_m(u),u=u.next),u}function af(r,e){if(!r)return r;e||(e=r);let t=r,n;do if(n=!1,!t.steiner&&(td(t,t.next)||_i(t.prev,t,t.next)===0)){if(_m(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function vm(r,e,t,n,s,u,f){if(!r)return;!f&&u&&_N(r,n,s,u);let h=r;for(;r.prev!==r.next;){const m=r.prev,g=r.next;if(u?fN(r,n,s,u):cN(r)){e.push(m.i,r.i,g.i),_m(r),r=g.next,h=g.next;continue}if(r=g,r===h){f?f===1?(r=hN(af(r),e),vm(r,e,t,n,s,u,2)):f===2&&dN(r,e,t,n,s,u):vm(af(r),e,t,n,s,u,1);break}}}function cN(r){const e=r.prev,t=r,n=r.next;if(_i(e,t,n)>=0)return!1;const s=e.x,u=t.x,f=n.x,h=e.y,m=t.y,g=n.y,_=Math.min(s,u,f),x=Math.min(h,m,g),b=Math.max(s,u,f),M=Math.max(h,m,g);let A=n.next;for(;A!==e;){if(A.x>=_&&A.x<=b&&A.y>=x&&A.y<=M&&Zp(s,h,u,m,f,g,A.x,A.y)&&_i(A.prev,A,A.next)>=0)return!1;A=A.next}return!0}function fN(r,e,t,n){const s=r.prev,u=r,f=r.next;if(_i(s,u,f)>=0)return!1;const h=s.x,m=u.x,g=f.x,_=s.y,x=u.y,b=f.y,M=Math.min(h,m,g),A=Math.min(_,x,b),R=Math.max(h,m,g),w=Math.max(_,x,b),E=Zx(M,A,e,t,n),N=Zx(R,w,e,t,n);let D=r.prevZ,U=r.nextZ;for(;D&&D.z>=E&&U&&U.z<=N;){if(D.x>=M&&D.x<=R&&D.y>=A&&D.y<=w&&D!==s&&D!==f&&Zp(h,_,m,x,g,b,D.x,D.y)&&_i(D.prev,D,D.next)>=0||(D=D.prevZ,U.x>=M&&U.x<=R&&U.y>=A&&U.y<=w&&U!==s&&U!==f&&Zp(h,_,m,x,g,b,U.x,U.y)&&_i(U.prev,U,U.next)>=0))return!1;U=U.nextZ}for(;D&&D.z>=E;){if(D.x>=M&&D.x<=R&&D.y>=A&&D.y<=w&&D!==s&&D!==f&&Zp(h,_,m,x,g,b,D.x,D.y)&&_i(D.prev,D,D.next)>=0)return!1;D=D.prevZ}for(;U&&U.z<=N;){if(U.x>=M&&U.x<=R&&U.y>=A&&U.y<=w&&U!==s&&U!==f&&Zp(h,_,m,x,g,b,U.x,U.y)&&_i(U.prev,U,U.next)>=0)return!1;U=U.nextZ}return!0}function hN(r,e){let t=r;do{const n=t.prev,s=t.next.next;!td(n,s)&&cT(n,t,t.next,s)&&ym(n,s)&&ym(s,n)&&(e.push(n.i,t.i,s.i),_m(t),_m(t.next),t=r=s),t=t.next}while(t!==r);return af(t)}function dN(r,e,t,n,s,u){let f=r;do{let h=f.next.next;for(;h!==f.prev;){if(f.i!==h.i&&SN(f,h)){let m=fT(f,h);f=af(f,f.next),m=af(m,m.next),vm(f,e,t,n,s,u,0),vm(m,e,t,n,s,u,0);return}h=h.next}f=f.next}while(f!==r)}function pN(r,e,t,n){const s=[];for(let u=0,f=e.length;u=t.next.y&&t.next.y!==t.y){const x=t.x+(s-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(x<=n&&x>u&&(u=x,f=t.x=t.x&&t.x>=m&&n!==t.x&&uT(sf.x||t.x===f.x&&yN(f,t)))&&(f=t,_=x)}t=t.next}while(t!==h);return f}function yN(r,e){return _i(r.prev,r,e.prev)<0&&_i(e.next,r,r.next)<0}function _N(r,e,t,n){let s=r;do s.z===0&&(s.z=Zx(s.x,s.y,e,t,n)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==r);s.prevZ.nextZ=null,s.prevZ=null,xN(s)}function xN(r){let e,t=1;do{let n=r,s;r=null;let u=null;for(e=0;n;){e++;let f=n,h=0;for(let g=0;g0||m>0&&f;)h!==0&&(m===0||!f||n.z<=f.z)?(s=n,n=n.nextZ,h--):(s=f,f=f.nextZ,m--),u?u.nextZ=s:r=s,s.prevZ=u,u=s;n=f}u.nextZ=null,t*=2}while(e>1);return r}function Zx(r,e,t,n,s){return r=(r-t)*s|0,e=(e-n)*s|0,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,r|e<<1}function bN(r){let e=r,t=r;do(e.x=(r-f)*(u-h)&&(r-f)*(n-h)>=(t-f)*(e-h)&&(t-f)*(u-h)>=(s-f)*(n-h)}function Zp(r,e,t,n,s,u,f,h){return!(r===f&&e===h)&&uT(r,e,t,n,s,u,f,h)}function SN(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!MN(r,e)&&(ym(r,e)&&ym(e,r)&&EN(r,e)&&(_i(r.prev,r,e.prev)||_i(r,e.prev,e))||td(r,e)&&_i(r.prev,r,r.next)>0&&_i(e.prev,e,e.next)>0)}function _i(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function td(r,e){return r.x===e.x&&r.y===e.y}function cT(r,e,t,n){const s=$0(_i(r,e,t)),u=$0(_i(r,e,n)),f=$0(_i(t,n,r)),h=$0(_i(t,n,e));return!!(s!==u&&f!==h||s===0&&J0(r,t,e)||u===0&&J0(r,n,e)||f===0&&J0(t,r,n)||h===0&&J0(t,e,n))}function J0(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function $0(r){return r>0?1:r<0?-1:0}function MN(r,e){let t=r;do{if(t.i!==r.i&&t.next.i!==r.i&&t.i!==e.i&&t.next.i!==e.i&&cT(t,t.next,r,e))return!0;t=t.next}while(t!==r);return!1}function ym(r,e){return _i(r.prev,r,r.next)<0?_i(r,e,r.next)>=0&&_i(r,r.prev,e)>=0:_i(r,e,r.prev)<0||_i(r,r.next,e)<0}function EN(r,e){let t=r,n=!1;const s=(r.x+e.x)/2,u=(r.y+e.y)/2;do t.y>u!=t.next.y>u&&t.next.y!==t.y&&s<(t.next.x-t.x)*(u-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==r);return n}function fT(r,e){const t=Qx(r.i,r.x,r.y),n=Qx(e.i,e.x,e.y),s=r.next,u=e.prev;return r.next=e,e.prev=r,t.next=s,s.prev=t,n.next=t,t.prev=n,u.next=n,n.prev=u,n}function HM(r,e,t,n){const s=Qx(r,e,t);return n?(s.next=n.next,s.prev=n,n.next.prev=s,n.next=s):(s.prev=s,s.next=s),s}function _m(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function Qx(r,e,t){return{i:r,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function TN(r,e,t,n){let s=0;for(let u=e,f=t-n;u2&&r[e-1].equals(r[0])&&r.pop()}function XM(r,e){for(let t=0;tNumber.EPSILON){const Te=Math.sqrt(O),Ie=Math.sqrt(Qe*Qe+G*G),Ee=He.x-Tt/Te,dt=He.y+ot/Te,Ke=Oe.x-G/Ie,vt=Oe.y+Qe/Ie,Dt=((Ke-Ee)*G-(vt-dt)*Qe)/(ot*G-Tt*Qe);nt=Ee+ot*Dt-Le.x,Q=dt+Tt*Dt-Le.y;const Ve=nt*nt+Q*Q;if(Ve<=2)return new ze(nt,Q);Et=Math.sqrt(Ve/2)}else{let Te=!1;ot>Number.EPSILON?Qe>Number.EPSILON&&(Te=!0):ot<-Number.EPSILON?Qe<-Number.EPSILON&&(Te=!0):Math.sign(Tt)===Math.sign(G)&&(Te=!0),Te?(nt=-Tt,Q=ot,Et=Math.sqrt(O)):(nt=ot,Q=Tt,Et=Math.sqrt(O/2))}return new ze(nt/Et,Q/Et)}const be=[];for(let Le=0,He=pe.length,Oe=He-1,nt=Le+1;Le=0;Le--){const He=Le/w,Oe=M*Math.cos(He*Math.PI/2),nt=A*Math.sin(He*Math.PI/2)+R;for(let Q=0,Et=pe.length;Q=0;){const nt=Oe;let Q=Oe-1;Q<0&&(Q=Le.length-1);for(let Et=0,ot=_+w*2;Et0)&&M.push(D,U,z),(E!==n-1||m0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class mT extends Ba{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new yt(16777215),this.specular=new yt(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new yt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Gs,this.combine=Am,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class gT extends Ba{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new yt(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new yt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class vT extends Ba{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class yT extends Ba{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new yt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new yt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Gs,this.combine=Am,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Wb extends Ba{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=NE,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class qb extends Ba{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}class _T extends Ba{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new yt(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this.fog=e.fog,this}}class xT extends ss{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function Qc(r,e){return!r||r.constructor===e?r:typeof e.BYTES_PER_ELEMENT=="number"?new e(r):Array.prototype.slice.call(r)}function bT(r){function e(s,u){return r[s]-r[u]}const t=r.length,n=new Array(t);for(let s=0;s!==t;++s)n[s]=s;return n.sort(e),n}function Kx(r,e,t){const n=r.length,s=new r.constructor(n);for(let u=0,f=0;f!==n;++u){const h=t[u]*e;for(let m=0;m!==e;++m)s[f++]=r[h+m]}return s}function jb(r,e,t,n){let s=1,u=r[0];for(;u!==void 0&&u[n]===void 0;)u=r[s++];if(u===void 0)return;let f=u[n];if(f!==void 0)if(Array.isArray(f))do f=u[n],f!==void 0&&(e.push(u.time),t.push(...f)),u=r[s++];while(u!==void 0);else if(f.toArray!==void 0)do f=u[n],f!==void 0&&(e.push(u.time),f.toArray(t,t.length)),u=r[s++];while(u!==void 0);else do f=u[n],f!==void 0&&(e.push(u.time),t.push(f)),u=r[s++];while(u!==void 0)}function NN(r,e,t,n,s=30){const u=r.clone();u.name=e;const f=[];for(let m=0;m=n)){x.push(g.times[M]);for(let R=0;R<_;++R)b.push(g.values[M*_+R])}}x.length!==0&&(g.times=Qc(x,g.times.constructor),g.values=Qc(b,g.values.constructor),f.push(g))}u.tracks=f;let h=1/0;for(let m=0;mu.tracks[m].times[0]&&(h=u.tracks[m].times[0]);for(let m=0;m=h.times[A]){const E=A*x+_,N=E+x-_;R=h.values.slice(E,N)}else{const E=h.createInterpolant(),N=_,D=x-_;E.evaluate(u),R=E.resultBuffer.slice(N,D)}m==="quaternion"&&new Pa().fromArray(R).normalize().conjugate().toArray(R);const w=g.times.length;for(let E=0;E=u)){const h=t[1];e=u)break t}f=n,n=0;break n}break e}for(;n>>1;et;)--f;if(++f,u!==0||f!==s){u>=f&&(f=Math.max(f,1),u=f-1);const h=this.getValueSize();this.times=n.slice(u,f),this.values=this.values.slice(u*h,f*h)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(Rt("KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,s=this.values,u=n.length;u===0&&(Rt("KeyframeTrack: Track is empty.",this),e=!1);let f=null;for(let h=0;h!==u;h++){const m=n[h];if(typeof m=="number"&&isNaN(m)){Rt("KeyframeTrack: Time is not a valid number.",this,h,m),e=!1;break}if(f!==null&&f>m){Rt("KeyframeTrack: Out of order keys.",this,h,m,f),e=!1;break}f=m}if(s!==void 0&&FE(s))for(let h=0,m=s.length;h!==m;++h){const g=s[h];if(isNaN(g)){Rt("KeyframeTrack: Value is not a valid number.",this,h,g),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),s=this.getInterpolation()===dv,u=e.length-1;let f=1;for(let h=1;h0){e[f]=e[u];for(let h=u*n,m=f*n,g=0;g!==n;++g)t[m+g]=t[h+g];++f}return f!==e.length?(this.times=e.slice(0,f),this.values=t.slice(0,f*n)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),n=this.constructor,s=new n(this.name,e,t);return s.createInterpolant=this.createInterpolant,s}}_r.prototype.ValueTypeName="";_r.prototype.TimeBufferType=Float32Array;_r.prototype.ValueBufferType=Float32Array;_r.prototype.DefaultInterpolation=ay;class uf extends _r{constructor(e,t,n){super(e,t,n)}}uf.prototype.ValueTypeName="bool";uf.prototype.ValueBufferType=Array;uf.prototype.DefaultInterpolation=fm;uf.prototype.InterpolantFactoryMethodLinear=void 0;uf.prototype.InterpolantFactoryMethodSmooth=void 0;class Zb extends _r{constructor(e,t,n,s){super(e,t,n,s)}}Zb.prototype.ValueTypeName="color";class xm extends _r{constructor(e,t,n,s){super(e,t,n,s)}}xm.prototype.ValueTypeName="number";class ET extends Um{constructor(e,t,n,s){super(e,t,n,s)}interpolate_(e,t,n,s){const u=this.resultBuffer,f=this.sampleValues,h=this.valueSize,m=(n-t)/(s-t);let g=e*h;for(let _=g+h;g!==_;g+=4)Pa.slerpFlat(u,0,f,g-h,f,g,m);return u}}class Im extends _r{constructor(e,t,n,s){super(e,t,n,s)}InterpolantFactoryMethodLinear(e){return new ET(this.times,this.values,this.getValueSize(),e)}}Im.prototype.ValueTypeName="quaternion";Im.prototype.InterpolantFactoryMethodSmooth=void 0;class cf extends _r{constructor(e,t,n){super(e,t,n)}}cf.prototype.ValueTypeName="string";cf.prototype.ValueBufferType=Array;cf.prototype.DefaultInterpolation=fm;cf.prototype.InterpolantFactoryMethodLinear=void 0;cf.prototype.InterpolantFactoryMethodSmooth=void 0;class bm extends _r{constructor(e,t,n,s){super(e,t,n,s)}}bm.prototype.ValueTypeName="vector";class Sm{constructor(e="",t=-1,n=[],s=Ey){this.name=e,this.tracks=n,this.duration=t,this.blendMode=s,this.uuid=Vs(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,s=1/(e.fps||1);for(let f=0,h=n.length;f!==h;++f)t.push(IN(n[f]).scale(s));const u=new this(e.name,e.duration,t,e.blendMode);return u.uuid=e.uuid,u.userData=JSON.parse(e.userData||"{}"),u}static toJSON(e){const t=[],n=e.tracks,s={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let u=0,f=n.length;u!==f;++u)t.push(_r.toJSON(n[u]));return s}static CreateFromMorphTargetSequence(e,t,n,s){const u=t.length,f=[];for(let h=0;h1){const x=_[1];let b=s[x];b||(s[x]=b=[]),b.push(g)}}const f=[];for(const h in s)f.push(this.CreateFromMorphTargetSequence(h,s[h],t,n));return f}static parseAnimation(e,t){if(ft("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return Rt("AnimationClip: No animation in JSONLoader data."),null;const n=function(x,b,M,A,R){if(M.length!==0){const w=[],E=[];jb(M,w,E,A),w.length!==0&&R.push(new x(b,w,E))}},s=[],u=e.name||"default",f=e.fps||30,h=e.blendMode;let m=e.length||-1;const g=e.hierarchy||[];for(let x=0;x{t&&t(u),this.manager.itemEnd(e)},0),u;if(Al[e]!==void 0){Al[e].push({onLoad:t,onProgress:n,onError:s});return}Al[e]=[],Al[e].push({onLoad:t,onProgress:n,onError:s});const f=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),h=this.mimeType,m=this.responseType;fetch(f).then(g=>{if(g.status===200||g.status===0){if(g.status===0&&ft("FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||g.body===void 0||g.body.getReader===void 0)return g;const _=Al[e],x=g.body.getReader(),b=g.headers.get("X-File-Size")||g.headers.get("Content-Length"),M=b?parseInt(b):0,A=M!==0;let R=0;const w=new ReadableStream({start(E){N();function N(){x.read().then(({done:D,value:U})=>{if(D)E.close();else{R+=U.byteLength;const B=new ProgressEvent("progress",{lengthComputable:A,loaded:R,total:M});for(let z=0,H=_.length;z{E.error(D)})}}});return new Response(w)}else throw new ON(`fetch for "${g.url}" responded with ${g.status}: ${g.statusText}`,g)}).then(g=>{switch(m){case"arraybuffer":return g.arrayBuffer();case"blob":return g.blob();case"document":return g.text().then(_=>new DOMParser().parseFromString(_,h));case"json":return g.json();default:if(h==="")return g.text();{const x=/charset="?([^;"\s]*)"?/i.exec(h),b=x&&x[1]?x[1].toLowerCase():void 0,M=new TextDecoder(b);return g.arrayBuffer().then(A=>M.decode(A))}}}).then(g=>{Oo.add(`file:${e}`,g);const _=Al[e];delete Al[e];for(let x=0,b=_.length;x{const _=Al[e];if(_===void 0)throw this.manager.itemError(e),g;delete Al[e];for(let x=0,b=_.length;x{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class PN extends Ns{constructor(e){super(e)}load(e,t,n,s){const u=this,f=new Ul(this.manager);f.setPath(this.path),f.setRequestHeader(this.requestHeader),f.setWithCredentials(this.withCredentials),f.load(e,function(h){try{t(u.parse(JSON.parse(h)))}catch(m){s?s(m):Rt(m),u.manager.itemError(e)}},n,s)}parse(e){const t=[];for(let n=0;n0:s.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const u in e.uniforms){const f=e.uniforms[u];switch(s.uniforms[u]={},f.type){case"t":s.uniforms[u].value=n(f.value);break;case"c":s.uniforms[u].value=new yt().setHex(f.value);break;case"v2":s.uniforms[u].value=new ze().fromArray(f.value);break;case"v3":s.uniforms[u].value=new j().fromArray(f.value);break;case"v4":s.uniforms[u].value=new jn().fromArray(f.value);break;case"m3":s.uniforms[u].value=new en().fromArray(f.value);break;case"m4":s.uniforms[u].value=new Xt().fromArray(f.value);break;default:s.uniforms[u].value=f.value}}if(e.defines!==void 0&&(s.defines=e.defines),e.vertexShader!==void 0&&(s.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(s.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(s.glslVersion=e.glslVersion),e.extensions!==void 0)for(const u in e.extensions)s.extensions[u]=e.extensions[u];if(e.lights!==void 0&&(s.lights=e.lights),e.clipping!==void 0&&(s.clipping=e.clipping),e.size!==void 0&&(s.size=e.size),e.sizeAttenuation!==void 0&&(s.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(s.map=n(e.map)),e.matcap!==void 0&&(s.matcap=n(e.matcap)),e.alphaMap!==void 0&&(s.alphaMap=n(e.alphaMap)),e.bumpMap!==void 0&&(s.bumpMap=n(e.bumpMap)),e.bumpScale!==void 0&&(s.bumpScale=e.bumpScale),e.normalMap!==void 0&&(s.normalMap=n(e.normalMap)),e.normalMapType!==void 0&&(s.normalMapType=e.normalMapType),e.normalScale!==void 0){let u=e.normalScale;Array.isArray(u)===!1&&(u=[u,u]),s.normalScale=new ze().fromArray(u)}return e.displacementMap!==void 0&&(s.displacementMap=n(e.displacementMap)),e.displacementScale!==void 0&&(s.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(s.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(s.roughnessMap=n(e.roughnessMap)),e.metalnessMap!==void 0&&(s.metalnessMap=n(e.metalnessMap)),e.emissiveMap!==void 0&&(s.emissiveMap=n(e.emissiveMap)),e.emissiveIntensity!==void 0&&(s.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(s.specularMap=n(e.specularMap)),e.specularIntensityMap!==void 0&&(s.specularIntensityMap=n(e.specularIntensityMap)),e.specularColorMap!==void 0&&(s.specularColorMap=n(e.specularColorMap)),e.envMap!==void 0&&(s.envMap=n(e.envMap)),e.envMapRotation!==void 0&&s.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(s.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(s.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(s.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(s.lightMap=n(e.lightMap)),e.lightMapIntensity!==void 0&&(s.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(s.aoMap=n(e.aoMap)),e.aoMapIntensity!==void 0&&(s.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(s.gradientMap=n(e.gradientMap)),e.clearcoatMap!==void 0&&(s.clearcoatMap=n(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(s.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(s.clearcoatNormalMap=n(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(s.clearcoatNormalScale=new ze().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(s.iridescenceMap=n(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(s.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(s.transmissionMap=n(e.transmissionMap)),e.thicknessMap!==void 0&&(s.thicknessMap=n(e.thicknessMap)),e.anisotropyMap!==void 0&&(s.anisotropyMap=n(e.anisotropyMap)),e.sheenColorMap!==void 0&&(s.sheenColorMap=n(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(s.sheenRoughnessMap=n(e.sheenRoughnessMap)),s}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return Zy.createMaterialFromType(e)}static createMaterialFromType(e){const t={ShadowMaterial:dT,SpriteMaterial:Ub,RawShaderMaterial:Gb,ShaderMaterial:yr,PointsMaterial:Ob,MeshPhysicalMaterial:pT,MeshStandardMaterial:Xb,MeshPhongMaterial:mT,MeshToonMaterial:gT,MeshNormalMaterial:vT,MeshLambertMaterial:yT,MeshDepthMaterial:Wb,MeshDistanceMaterial:qb,MeshBasicMaterial:Vu,MeshMatcapMaterial:_T,LineDashedMaterial:xT,LineBasicMaterial:ss,Material:Ba};return new t[e]}}class Jx{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class UT extends Kt{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class IT extends Ns{constructor(e){super(e)}load(e,t,n,s){const u=this,f=new Ul(u.manager);f.setPath(u.path),f.setRequestHeader(u.requestHeader),f.setWithCredentials(u.withCredentials),f.load(e,function(h){try{t(u.parse(JSON.parse(h)))}catch(m){s?s(m):Rt(m),u.manager.itemError(e)}},n,s)}parse(e){const t={},n={};function s(M,A){if(t[A]!==void 0)return t[A];const w=M.interleavedBuffers[A],E=u(M,w.buffer),N=Hh(w.type,E),D=new Ly(N,w.stride);return D.uuid=w.uuid,t[A]=D,D}function u(M,A){if(n[A]!==void 0)return n[A];const w=M.arrayBuffers[A],E=new Uint32Array(w).buffer;return n[A]=E,E}const f=e.isInstancedBufferGeometry?new UT:new Kt,h=e.data.index;if(h!==void 0){const M=Hh(h.type,h.array);f.setIndex(new Xn(M,1))}const m=e.data.attributes;for(const M in m){const A=m[M];let R;if(A.isInterleavedBufferAttribute){const w=s(e.data,A.data);R=new nf(w,A.itemSize,A.offset,A.normalized)}else{const w=Hh(A.type,A.array),E=A.isInstancedBufferAttribute?$h:Xn;R=new E(w,A.itemSize,A.normalized)}A.name!==void 0&&(R.name=A.name),A.usage!==void 0&&R.setUsage(A.usage),f.setAttribute(M,R)}const g=e.data.morphAttributes;if(g)for(const M in g){const A=g[M],R=[];for(let w=0,E=A.length;w0){const m=new Qb(t);u=new Mm(m),u.setCrossOrigin(this.crossOrigin);for(let g=0,_=e.length;g<_;g++){const x=e[g],b=x.url;if(Array.isArray(b)){const M=[];for(let A=0,R=b.length;A0){s=new Mm(this.manager),s.setCrossOrigin(this.crossOrigin);for(let f=0,h=e.length;f{let E=null,N=null;return w.boundingBox!==void 0&&(E=new za().fromJSON(w.boundingBox)),w.boundingSphere!==void 0&&(N=new _a().fromJSON(w.boundingSphere)),{...w,boundingBox:E,boundingSphere:N}}),f._instanceInfo=e.instanceInfo,f._availableInstanceIds=e._availableInstanceIds,f._availableGeometryIds=e._availableGeometryIds,f._nextIndexStart=e.nextIndexStart,f._nextVertexStart=e.nextVertexStart,f._geometryCount=e.geometryCount,f._maxInstanceCount=e.maxInstanceCount,f._maxVertexCount=e.maxVertexCount,f._maxIndexCount=e.maxIndexCount,f._geometryInitialized=e.geometryInitialized,f._matricesTexture=g(e.matricesTexture.uuid),f._indirectTexture=g(e.indirectTexture.uuid),e.colorsTexture!==void 0&&(f._colorsTexture=g(e.colorsTexture.uuid)),e.boundingSphere!==void 0&&(f.boundingSphere=new _a().fromJSON(e.boundingSphere)),e.boundingBox!==void 0&&(f.boundingBox=new za().fromJSON(e.boundingBox));break;case"LOD":f=new YE;break;case"Line":f=new Fu(h(e.geometry),m(e.material));break;case"LineLoop":f=new JE(h(e.geometry),m(e.material));break;case"LineSegments":f=new Vo(h(e.geometry),m(e.material));break;case"PointCloud":case"Points":f=new $E(h(e.geometry),m(e.material));break;case"Sprite":f=new jE(m(e.material));break;case"Group":f=new Gh;break;case"Bone":f=new Ib;break;default:f=new Cn}if(f.uuid=e.uuid,e.name!==void 0&&(f.name=e.name),e.matrix!==void 0?(f.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(f.matrixAutoUpdate=e.matrixAutoUpdate),f.matrixAutoUpdate&&f.matrix.decompose(f.position,f.quaternion,f.scale)):(e.position!==void 0&&f.position.fromArray(e.position),e.rotation!==void 0&&f.rotation.fromArray(e.rotation),e.quaternion!==void 0&&f.quaternion.fromArray(e.quaternion),e.scale!==void 0&&f.scale.fromArray(e.scale)),e.up!==void 0&&f.up.fromArray(e.up),e.castShadow!==void 0&&(f.castShadow=e.castShadow),e.receiveShadow!==void 0&&(f.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(f.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(f.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(f.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(f.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&f.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(f.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(f.visible=e.visible),e.frustumCulled!==void 0&&(f.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(f.renderOrder=e.renderOrder),e.userData!==void 0&&(f.userData=e.userData),e.layers!==void 0&&(f.layers.mask=e.layers),e.children!==void 0){const b=e.children;for(let M=0;M"u"&&ft("ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&ft("ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"},this._abortController=new AbortController}setOptions(e){return this.options=e,this}load(e,t,n,s){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const u=this,f=Oo.get(`image-bitmap:${e}`);if(f!==void 0){if(u.manager.itemStart(e),f.then){f.then(g=>{if(yx.has(f)===!0)s&&s(yx.get(f)),u.manager.itemError(e),u.manager.itemEnd(e);else return t&&t(g),u.manager.itemEnd(e),g});return}return setTimeout(function(){t&&t(f),u.manager.itemEnd(e)},0),f}const h={};h.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",h.headers=this.requestHeader,h.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;const m=fetch(e,h).then(function(g){return g.blob()}).then(function(g){return createImageBitmap(g,Object.assign(u.options,{colorSpaceConversion:"none"}))}).then(function(g){return Oo.add(`image-bitmap:${e}`,g),t&&t(g),u.manager.itemEnd(e),g}).catch(function(g){s&&s(g),yx.set(m,g),Oo.remove(`image-bitmap:${e}`),u.manager.itemError(e),u.manager.itemEnd(e)});Oo.add(`image-bitmap:${e}`,m),u.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}let ev;class $b{static getContext(){return ev===void 0&&(ev=new(window.AudioContext||window.webkitAudioContext)),ev}static setContext(e){ev=e}}class jN extends Ns{constructor(e){super(e)}load(e,t,n,s){const u=this,f=new Ul(this.manager);f.setResponseType("arraybuffer"),f.setPath(this.path),f.setRequestHeader(this.requestHeader),f.setWithCredentials(this.withCredentials),f.load(e,function(m){try{const g=m.slice(0);$b.getContext().decodeAudioData(g,function(x){t(x)}).catch(h)}catch(g){h(g)}},n,s);function h(m){s?s(m):Rt(m),u.manager.itemError(e)}}}const KM=new Xt,JM=new Xt,Oc=new Xt;class YN{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new zi,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new zi,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Oc.copy(e.projectionMatrix);const s=t.eyeSep/2,u=s*t.near/t.focus,f=t.near*Math.tan(Jc*t.fov*.5)/t.zoom;let h,m;JM.elements[12]=-s,KM.elements[12]=s,h=-f*t.aspect+u,m=f*t.aspect+u,Oc.elements[0]=2*t.near/(m-h),Oc.elements[8]=(m+h)/(m-h),this.cameraL.projectionMatrix.copy(Oc),h=-f*t.aspect-u,m=f*t.aspect-u,Oc.elements[0]=2*t.near/(m-h),Oc.elements[8]=(m+h)/(m-h),this.cameraR.projectionMatrix.copy(Oc)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(JM),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(KM)}}class OT extends zi{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class eS{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=performance.now();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}const Pc=new j,_x=new Pa,ZN=new j,zc=new j,Bc=new j;class QN extends Cn{constructor(){super(),this.type="AudioListener",this.context=$b.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new eS}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Pc,_x,ZN),zc.set(0,0,-1).applyQuaternion(_x),Bc.set(0,1,0).applyQuaternion(_x),t.positionX){const n=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Pc.x,n),t.positionY.linearRampToValueAtTime(Pc.y,n),t.positionZ.linearRampToValueAtTime(Pc.z,n),t.forwardX.linearRampToValueAtTime(zc.x,n),t.forwardY.linearRampToValueAtTime(zc.y,n),t.forwardZ.linearRampToValueAtTime(zc.z,n),t.upX.linearRampToValueAtTime(Bc.x,n),t.upY.linearRampToValueAtTime(Bc.y,n),t.upZ.linearRampToValueAtTime(Bc.z,n)}else t.setPosition(Pc.x,Pc.y,Pc.z),t.setOrientation(zc.x,zc.y,zc.z,Bc.x,Bc.y,Bc.z)}}let PT=class extends Cn{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){ft("Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){ft("Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){ft("Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){ft("Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,s,this._addIndex*t,1,t);for(let m=t,g=t+t;m!==g;++m)if(n[m]!==n[m+t]){h.setValue(n,s);break}}saveOriginalState(){const e=this.binding,t=this.buffer,n=this.valueSize,s=n*this._origIndex;e.getValue(t,s);for(let u=n,f=s;u!==f;++u)t[u]=t[s+u%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let f=0;f!==u;++f)e[t+f]=e[n+f]}_slerp(e,t,n,s){Pa.slerpFlat(e,t,e,t,e,n,s)}_slerpAdditive(e,t,n,s,u){const f=this._workIndex*u;Pa.multiplyQuaternionsFlat(e,f,e,t,e,n),Pa.slerpFlat(e,t,e,t,e,f,s)}_lerp(e,t,n,s,u){const f=1-s;for(let h=0;h!==u;++h){const m=t+h;e[m]=e[m]*f+e[n+h]*s}}_lerpAdditive(e,t,n,s,u){for(let f=0;f!==u;++f){const h=t+f;e[h]=e[h]+e[n+f]*s}}}const tS="\\[\\]\\.:\\/",eD=new RegExp("["+tS+"]","g"),nS="[^"+tS+"]",tD="[^"+tS.replace("\\.","")+"]",nD=/((?:WC+[\/:])*)/.source.replace("WC",nS),iD=/(WCOD+)?/.source.replace("WCOD",tD),aD=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",nS),sD=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",nS),rD=new RegExp("^"+nD+iD+aD+sD+"$"),oD=["material","materials","bones","map"];class lD{constructor(e,t,n){const s=n||wn.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,s)}getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,s=this._bindings[n];s!==void 0&&s.getValue(e,t)}setValue(e,t){const n=this._bindings;for(let s=this._targetGroup.nCachedObjects_,u=n.length;s!==u;++s)n[s].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}}class wn{constructor(e,t,n){this.path=t,this.parsedPath=n||wn.parseTrackName(t),this.node=wn.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new wn.Composite(e,t,n):new wn(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(eD,"")}static parseTrackName(e){const t=rD.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},s=n.nodeName&&n.nodeName.lastIndexOf(".");if(s!==void 0&&s!==-1){const u=n.nodeName.substring(s+1);oD.indexOf(u)!==-1&&(n.nodeName=n.nodeName.substring(0,s),n.objectName=u)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){const n=function(u){for(let f=0;f=u){const x=u++,b=e[x];t[b.uuid]=_,e[_]=b,t[g]=x,e[x]=m;for(let M=0,A=s;M!==A;++M){const R=n[M],w=R[x],E=R[_];R[_]=w,R[x]=E}}}this.nCachedObjects_=u}uncache(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,s=n.length;let u=this.nCachedObjects_,f=e.length;for(let h=0,m=arguments.length;h!==m;++h){const g=arguments[h],_=g.uuid,x=t[_];if(x!==void 0)if(delete t[_],x0&&(t[M.uuid]=x),e[x]=M,e.pop();for(let A=0,R=s;A!==R;++A){const w=n[A];w[x]=w[b],w.pop()}}}this.nCachedObjects_=u}subscribe_(e,t){const n=this._bindingsIndicesByPath;let s=n[e];const u=this._bindings;if(s!==void 0)return u[s];const f=this._paths,h=this._parsedPaths,m=this._objects,g=m.length,_=this.nCachedObjects_,x=new Array(g);s=u.length,n[e]=s,f.push(e),h.push(t),u.push(x);for(let b=_,M=m.length;b!==M;++b){const A=m[b];x[b]=new wn(A,e,t)}return x}unsubscribe_(e){const t=this._bindingsIndicesByPath,n=t[e];if(n!==void 0){const s=this._paths,u=this._parsedPaths,f=this._bindings,h=f.length-1,m=f[h],g=e[h];t[g]=n,f[n]=m,f.pop(),u[n]=u[h],u.pop(),s[n]=s[h],s.pop()}}}class BT{constructor(e,t,n=null,s=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=s;const u=t.tracks,f=u.length,h=new Array(f),m={endingStart:Yc,endingEnd:Yc};for(let g=0;g!==f;++g){const _=u[g].createInterpolant(null);h[g]=_,_.settings=m}this._interpolantSettings=m,this._interpolants=h,this._propertyBindings=new Array(f),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=CE,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n=!1){if(e.fadeOut(t),this.fadeIn(t),n===!0){const s=this._clip.duration,u=e._clip.duration,f=u/s,h=s/u;e.warp(1,f,t),this.warp(h,1,t)}return this}crossFadeTo(e,t,n=!1){return e.crossFadeFrom(this,t,n)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){const s=this._mixer,u=s.time,f=this.timeScale;let h=this._timeScaleInterpolant;h===null&&(h=s._lendControlInterpolant(),this._timeScaleInterpolant=h);const m=h.parameterPositions,g=h.sampleValues;return m[0]=u,m[1]=u+n,g[0]=e/f,g[1]=t/f,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,s){if(!this.enabled){this._updateWeight(e);return}const u=this._startTime;if(u!==null){const m=(e-u)*n;m<0||n===0?t=0:(this._startTime=null,t=n*m)}t*=this._updateTimeScale(e);const f=this._updateTime(t),h=this._updateWeight(e);if(h>0){const m=this._interpolants,g=this._propertyBindings;switch(this.blendMode){case Ab:for(let _=0,x=m.length;_!==x;++_)m[_].evaluate(f),g[_].accumulateAdditive(h);break;case Ey:default:for(let _=0,x=m.length;_!==x;++_)m[_].evaluate(f),g[_].accumulate(s,h)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const n=this._weightInterpolant;if(n!==null){const s=n.evaluate(e)[0];t*=s,e>n.parameterPositions[1]&&(this.stopFading(),s===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const n=this._timeScaleInterpolant;if(n!==null){const s=n.evaluate(e)[0];t*=s,e>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,n=this.loop;let s=this.time+e,u=this._loopCount;const f=n===RE;if(e===0)return u===-1?s:f&&(u&1)===1?t-s:s;if(n===wE){u===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(s>=t)s=t;else if(s<0)s=0;else{this.time=s;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(u===-1&&(e>=0?(u=0,this._setEndings(!0,this.repetitions===0,f)):this._setEndings(this.repetitions===0,!0,f)),s>=t||s<0){const h=Math.floor(s/t);s-=t*h,u+=Math.abs(h);const m=this.repetitions-u;if(m<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,s=e>0?t:0,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(m===1){const g=e<0;this._setEndings(g,!g,f)}else this._setEndings(!1,!1,f);this._loopCount=u,this.time=s,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:h})}}else this.time=s;if(f&&(u&1)===1)return t-s}return s}_setEndings(e,t,n){const s=this._interpolantSettings;n?(s.endingStart=Zc,s.endingEnd=Zc):(e?s.endingStart=this.zeroSlopeAtStart?Zc:Yc:s.endingStart=hm,t?s.endingEnd=this.zeroSlopeAtEnd?Zc:Yc:s.endingEnd=hm)}_scheduleFading(e,t,n){const s=this._mixer,u=s.time;let f=this._weightInterpolant;f===null&&(f=s._lendControlInterpolant(),this._weightInterpolant=f);const h=f.parameterPositions,m=f.sampleValues;return h[0]=u,m[0]=t,h[1]=u+e,m[1]=n,this}}const cD=new Float32Array(1);class fD extends ko{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const n=e._localRoot||this._root,s=e._clip.tracks,u=s.length,f=e._propertyBindings,h=e._interpolants,m=n.uuid,g=this._bindingsByRootAndName;let _=g[m];_===void 0&&(_={},g[m]=_);for(let x=0;x!==u;++x){const b=s[x],M=b.name;let A=_[M];if(A!==void 0)++A.referenceCount,f[x]=A;else{if(A=f[x],A!==void 0){A._cacheIndex===null&&(++A.referenceCount,this._addInactiveBinding(A,m,M));continue}const R=t&&t._propertyBindings[x].binding.parsedPath;A=new zT(wn.create(n,M,R),b.ValueTypeName,b.getValueSize()),++A.referenceCount,this._addInactiveBinding(A,m,M),f[x]=A}h[x].resultBuffer=A.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const n=(e._localRoot||this._root).uuid,s=e._clip.uuid,u=this._actionsByClip[s];this._bindAction(e,u&&u.knownActions[0]),this._addInactiveAction(e,s,n)}const t=e._propertyBindings;for(let n=0,s=t.length;n!==s;++n){const u=t[n];u.useCount++===0&&(this._lendBinding(u),u.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let n=0,s=t.length;n!==s;++n){const u=t[n];--u.useCount===0&&(u.restoreOriginalState(),this._takeBackBinding(u))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return t!==null&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;const t=this._actions,n=this._nActiveActions,s=this.time+=e,u=Math.sign(e),f=this._accuIndex^=1;for(let g=0;g!==n;++g)t[g]._update(s,e,u,f);const h=this._bindings,m=this._nActiveBindings;for(let g=0;g!==m;++g)h[g].apply(f);return this}setTime(e){this.time=0;for(let t=0;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,n1).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const i1=new j,tv=new j,Oh=new j,Ph=new j,xx=new j,bD=new j,SD=new j;class MD{constructor(e=new j,t=new j){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){i1.subVectors(e,this.start),tv.subVectors(this.end,this.start);const n=tv.dot(tv);let u=tv.dot(i1)/n;return t&&(u=Ht(u,0,1)),u}closestPointToPoint(e,t,n){const s=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(s).add(this.start)}distanceSqToLine3(e,t=bD,n=SD){const s=10000000000000001e-32;let u,f;const h=this.start,m=e.start,g=this.end,_=e.end;Oh.subVectors(g,h),Ph.subVectors(_,m),xx.subVectors(h,m);const x=Oh.dot(Oh),b=Ph.dot(Ph),M=Ph.dot(xx);if(x<=s&&b<=s)return t.copy(h),n.copy(m),t.sub(n),t.dot(t);if(x<=s)u=0,f=M/b,f=Ht(f,0,1);else{const A=Oh.dot(xx);if(b<=s)f=0,u=Ht(-A/x,0,1);else{const R=Oh.dot(Ph),w=x*b-R*R;w!==0?u=Ht((R*M-A*b)/w,0,1):u=0,f=(R*u+M)/b,f<0?(f=0,u=Ht(-A/x,0,1)):f>1&&(f=1,u=Ht((R-A)/x,0,1))}}return t.copy(h).add(Oh.multiplyScalar(u)),n.copy(m).add(Ph.multiplyScalar(f)),t.sub(n),t.dot(t)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const a1=new j;class ED extends Cn{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const n=new Kt,s=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let f=0,h=1,m=32;f1)for(let x=0;x.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{u1.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(u1,t)}}setLength(e,t=e*.2,n=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class zD extends Vo{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],s=new Kt;s.setAttribute("position",new bt(t,3)),s.setAttribute("color",new bt(n,3));const u=new ss({vertexColors:!0,toneMapped:!1});super(s,u),this.type="AxesHelper"}setColors(e,t,n){const s=new yt,u=this.geometry.attributes.color.array;return s.set(e),s.toArray(u,0),s.toArray(u,3),s.set(t),s.toArray(u,6),s.toArray(u,9),s.set(n),s.toArray(u,12),s.toArray(u,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class BD{constructor(){this.type="ShapePath",this.color=new yt,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new ly,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,s){return this.currentPath.quadraticCurveTo(e,t,n,s),this}bezierCurveTo(e,t,n,s,u,f){return this.currentPath.bezierCurveTo(e,t,n,s,u,f),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(E){const N=[];for(let D=0,U=E.length;DNumber.EPSILON){if(P<0&&(H=N[z],I=-I,W=N[B],P=-P),E.yW.y)continue;if(E.y===H.y){if(E.x===H.x)return!0}else{const Z=P*(E.x-H.x)-I*(E.y-H.y);if(Z===0)return!0;if(Z<0)continue;U=!U}}else{if(E.y!==H.y)continue;if(W.x<=E.x&&E.x<=H.x||H.x<=E.x&&E.x<=W.x)return!0}}return U}const s=jr.isClockWise,u=this.subPaths;if(u.length===0)return[];let f,h,m;const g=[];if(u.length===1)return h=u[0],m=new $c,m.curves=h.curves,g.push(m),g;let _=!s(u[0].getPoints());_=e?!_:_;const x=[],b=[];let M=[],A=0,R;b[A]=void 0,M[A]=[];for(let E=0,N=u.length;E1){let E=!1,N=0;for(let D=0,U=b.length;D0&&E===!1&&(M=x)}let w;for(let E=0,N=b.length;Ee?(r.repeat.x=1,r.repeat.y=t/e,r.offset.x=0,r.offset.y=(1-r.repeat.y)/2):(r.repeat.x=e/t,r.repeat.y=1,r.offset.x=(1-r.repeat.x)/2,r.offset.y=0),r}function VD(r,e){const t=r.image&&r.image.width?r.image.width/r.image.height:1;return t>e?(r.repeat.x=e/t,r.repeat.y=1,r.offset.x=(1-r.repeat.x)/2,r.offset.y=0):(r.repeat.x=1,r.repeat.y=t/e,r.offset.x=0,r.offset.y=(1-r.repeat.y)/2),r}function HD(r){return r.repeat.x=1,r.repeat.y=1,r.offset.x=0,r.offset.y=0,r}function tb(r,e,t,n){const s=GD(n);switch(t){case Eb:return r*e;case by:return r*e/s.components*s.byteLength;case wm:return r*e/s.components*s.byteLength;case tf:return r*e*2/s.components*s.byteLength;case Sy:return r*e*2/s.components*s.byteLength;case Tb:return r*e*3/s.components*s.byteLength;case Oa:return r*e*4/s.components*s.byteLength;case My:return r*e*4/s.components*s.byteLength;case $p:case em:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*8;case tm:case nm:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*16;case wv:case Rv:return Math.max(r,16)*Math.max(e,8)/4;case Av:case Cv:return Math.max(r,8)*Math.max(e,8)/2;case Nv:case Dv:case Uv:case Iv:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*8;case Lv:case Ov:case Pv:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*16;case zv:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*16;case Bv:return Math.floor((r+4)/5)*Math.floor((e+3)/4)*16;case Fv:return Math.floor((r+4)/5)*Math.floor((e+4)/5)*16;case kv:return Math.floor((r+5)/6)*Math.floor((e+4)/5)*16;case Vv:return Math.floor((r+5)/6)*Math.floor((e+5)/6)*16;case Hv:return Math.floor((r+7)/8)*Math.floor((e+4)/5)*16;case Gv:return Math.floor((r+7)/8)*Math.floor((e+5)/6)*16;case Xv:return Math.floor((r+7)/8)*Math.floor((e+7)/8)*16;case Wv:return Math.floor((r+9)/10)*Math.floor((e+4)/5)*16;case qv:return Math.floor((r+9)/10)*Math.floor((e+5)/6)*16;case jv:return Math.floor((r+9)/10)*Math.floor((e+7)/8)*16;case Yv:return Math.floor((r+9)/10)*Math.floor((e+9)/10)*16;case Zv:return Math.floor((r+11)/12)*Math.floor((e+9)/10)*16;case Qv:return Math.floor((r+11)/12)*Math.floor((e+11)/12)*16;case Kv:case Jv:case $v:return Math.ceil(r/4)*Math.ceil(e/4)*16;case ey:case ty:return Math.ceil(r/4)*Math.ceil(e/4)*8;case ny:case iy:return Math.ceil(r/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function GD(r){switch(r){case ts:case xb:return{byteLength:1,components:1};case qh:case bb:case Bo:return{byteLength:2,components:1};case _y:case xy:return{byteLength:2,components:4};case vr:case yy:case is:return{byteLength:4,components:1};case Sb:case Mb:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${r}.`)}class XD{static contain(e,t){return kD(e,t)}static cover(e,t){return VD(e,t)}static fill(e){return HD(e)}static getByteLength(e,t,n,s){return tb(e,t,n,s)}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:my}}));typeof window<"u"&&(window.__THREE__?ft("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=my);function VT(){let r=null,e=!1,t=null,n=null;function s(u,f){t(u,f),n=r.requestAnimationFrame(s)}return{start:function(){e!==!0&&t!==null&&(n=r.requestAnimationFrame(s),e=!0)},stop:function(){r.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(u){t=u},setContext:function(u){r=u}}}function WD(r){const e=new WeakMap;function t(h,m){const g=h.array,_=h.usage,x=g.byteLength,b=r.createBuffer();r.bindBuffer(m,b),r.bufferData(m,g,_),h.onUploadCallback();let M;if(g instanceof Float32Array)M=r.FLOAT;else if(typeof Float16Array<"u"&&g instanceof Float16Array)M=r.HALF_FLOAT;else if(g instanceof Uint16Array)h.isFloat16BufferAttribute?M=r.HALF_FLOAT:M=r.UNSIGNED_SHORT;else if(g instanceof Int16Array)M=r.SHORT;else if(g instanceof Uint32Array)M=r.UNSIGNED_INT;else if(g instanceof Int32Array)M=r.INT;else if(g instanceof Int8Array)M=r.BYTE;else if(g instanceof Uint8Array)M=r.UNSIGNED_BYTE;else if(g instanceof Uint8ClampedArray)M=r.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+g);return{buffer:b,type:M,bytesPerElement:g.BYTES_PER_ELEMENT,version:h.version,size:x}}function n(h,m,g){const _=m.array,x=m.updateRanges;if(r.bindBuffer(g,h),x.length===0)r.bufferSubData(g,0,_);else{x.sort((M,A)=>M.start-A.start);let b=0;for(let M=1;M 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,lL=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,uL=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,cL=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,fL=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,hL=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,dL=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,pL=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,mL=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,gL=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,vL=`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,yL=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,_L=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,xL=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE + emissiveColor = sRGBTransferEOTF( emissiveColor ); + #endif + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,bL=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,SL="gl_FragColor = linearToOutputTexel( gl_FragColor );",ML=`vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferEOTF( in vec4 value ) { + return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a ); +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,EL=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,TL=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif +#endif`,AL=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,wL=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,CL=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,RL=`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,NL=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,DL=`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,LL=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,UL=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,IL=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,OL=`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,PL=`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,zL=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,BL=`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, pow4( roughness ) ) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,FL=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,kL=`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,VL=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,HL=`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,GL=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.diffuseContribution = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +material.metalness = metalnessFactor; +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor; + material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = vec3( 0.04 ); + material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.0001, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,XL=`uniform sampler2D dfgLUT; +struct PhysicalMaterial { + vec3 diffuseColor; + vec3 diffuseContribution; + vec3 specularColor; + vec3 specularColorBlended; + float roughness; + float metalness; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + vec3 iridescenceFresnelDielectric; + vec3 iridescenceFresnelMetallic; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return v; + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColorBlended; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transpose( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float rInv = 1.0 / ( roughness + 0.1 ); + float a = -1.9362 + 1.0678 * roughness + 0.4573 * r2 - 0.8469 * rInv; + float b = -0.6014 + 0.5538 * roughness - 0.4670 * r2 - 0.1255 * rInv; + float DG = exp( a * dotNV + b ); + return saturate( DG ); +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg; + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg; + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +vec3 BRDF_GGX_Multiscatter( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 singleScatter = BRDF_GGX( lightDir, viewDir, normal, material ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 dfgV = texture2D( dfgLUT, vec2( material.roughness, dotNV ) ).rg; + vec2 dfgL = texture2D( dfgLUT, vec2( material.roughness, dotNL ) ).rg; + vec3 FssEss_V = material.specularColorBlended * dfgV.x + material.specularF90 * dfgV.y; + vec3 FssEss_L = material.specularColorBlended * dfgL.x + material.specularF90 * dfgL.y; + float Ess_V = dfgV.x + dfgV.y; + float Ess_L = dfgL.x + dfgL.y; + float Ems_V = 1.0 - Ess_V; + float Ems_L = 1.0 - Ess_L; + vec3 Favg = material.specularColorBlended + ( 1.0 - material.specularColorBlended ) * 0.047619; + vec3 Fms = FssEss_V * FssEss_L * Favg / ( 1.0 - Ems_V * Ems_L * Favg + EPSILON ); + float compensationFactor = Ems_V * Ems_L; + vec3 multiScatter = Fms * compensationFactor; + return singleScatter + multiScatter; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColorBlended * t2.x + ( vec3( 1.0 ) - material.specularColorBlended ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseContribution * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + + float sheenAlbedoV = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenAlbedoL = IBLSheenBRDF( geometryNormal, directLight.direction, material.sheenRoughness ); + + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * max( sheenAlbedoV, sheenAlbedoL ); + + irradiance *= sheenEnergyComp; + + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX_Multiscatter( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseContribution ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 diffuse = irradiance * BRDF_Lambert( material.diffuseContribution ); + #ifdef USE_SHEEN + float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo; + diffuse *= sheenEnergyComp; + #endif + reflectedLight.indirectDiffuse += diffuse; +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ) * RECIPROCAL_PI; + #endif + vec3 singleScatteringDielectric = vec3( 0.0 ); + vec3 multiScatteringDielectric = vec3( 0.0 ); + vec3 singleScatteringMetallic = vec3( 0.0 ); + vec3 multiScatteringMetallic = vec3( 0.0 ); + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnelDielectric, material.roughness, singleScatteringDielectric, multiScatteringDielectric ); + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.iridescence, material.iridescenceFresnelMetallic, material.roughness, singleScatteringMetallic, multiScatteringMetallic ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScatteringDielectric, multiScatteringDielectric ); + computeMultiscattering( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.roughness, singleScatteringMetallic, multiScatteringMetallic ); + #endif + vec3 singleScattering = mix( singleScatteringDielectric, singleScatteringMetallic, material.metalness ); + vec3 multiScattering = mix( multiScatteringDielectric, multiScatteringMetallic, material.metalness ); + vec3 totalScatteringDielectric = singleScatteringDielectric + multiScatteringDielectric; + vec3 diffuse = material.diffuseContribution * ( 1.0 - totalScatteringDielectric ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + vec3 indirectSpecular = radiance * singleScattering; + indirectSpecular += multiScattering * cosineWeightedIrradiance; + vec3 indirectDiffuse = diffuse * cosineWeightedIrradiance; + #ifdef USE_SHEEN + float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo; + indirectSpecular *= sheenEnergyComp; + indirectDiffuse *= sheenEnergyComp; + #endif + reflectedLight.indirectSpecular += indirectSpecular; + reflectedLight.indirectDiffuse += indirectDiffuse; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,WL=` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnelDielectric = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceFresnelMetallic = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.diffuseColor ); + material.iridescenceFresnel = mix( material.iridescenceFresnelDielectric, material.iridescenceFresnelMetallic, material.metalness ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,qL=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,jL=`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,YL=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,ZL=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,QL=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER + varying float vFragDepth; + varying float vIsPerspective; +#endif`,KL=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,JL=`#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,$L=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,eU=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,tU=`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,nU=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,iU=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,aU=`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,sU=`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,rU=`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,oU=`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,lU=`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,uU=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,cU=`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,fU=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,hU=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,dU=`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,pU=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,mU=`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,gU=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,vU=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,yU=`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,_U=`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,xU=`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,bU=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,SU=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,MU=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,EU=`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,TU=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,AU=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,wU=`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform sampler2DShadow directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + #else + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform sampler2DShadow spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + #else + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform samplerCubeShadow pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + #elif defined( SHADOWMAP_TYPE_BASIC ) + uniform samplerCube pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + #if defined( SHADOWMAP_TYPE_PCF ) + float interleavedGradientNoise( vec2 position ) { + return fract( 52.9829189 * fract( dot( position, vec2( 0.06711056, 0.00583715 ) ) ) ); + } + vec2 vogelDiskSample( int sampleIndex, int samplesCount, float phi ) { + const float goldenAngle = 2.399963229728653; + float r = sqrt( ( float( sampleIndex ) + 0.5 ) / float( samplesCount ) ); + float theta = float( sampleIndex ) * goldenAngle + phi; + return vec2( cos( theta ), sin( theta ) ) * r; + } + #endif + #if defined( SHADOWMAP_TYPE_PCF ) + float getShadow( sampler2DShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float radius = shadowRadius * texelSize.x; + float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718; + shadow = ( + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 0, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 1, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 2, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 3, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 4, 5, phi ) * radius, shadowCoord.z ) ) + ) * 0.2; + } + return mix( 1.0, shadow, shadowIntensity ); + } + #elif defined( SHADOWMAP_TYPE_VSM ) + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + vec2 distribution = texture2D( shadowMap, shadowCoord.xy ).rg; + float mean = distribution.x; + float variance = distribution.y * distribution.y; + #ifdef USE_REVERSED_DEPTH_BUFFER + float hard_shadow = step( mean, shadowCoord.z ); + #else + float hard_shadow = step( shadowCoord.z, mean ); + #endif + if ( hard_shadow == 1.0 ) { + shadow = 1.0; + } else { + variance = max( variance, 0.0000001 ); + float d = shadowCoord.z - mean; + float p_max = variance / ( variance + d * d ); + p_max = clamp( ( p_max - 0.3 ) / 0.65, 0.0, 1.0 ); + shadow = max( hard_shadow, p_max ); + } + } + return mix( 1.0, shadow, shadowIntensity ); + } + #else + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + float depth = texture2D( shadowMap, shadowCoord.xy ).r; + #ifdef USE_REVERSED_DEPTH_BUFFER + shadow = step( depth, shadowCoord.z ); + #else + shadow = step( shadowCoord.z, depth ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + float getPointShadow( samplerCubeShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + vec3 bd3D = normalize( lightToPosition ); + vec3 absVec = abs( lightToPosition ); + float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z ); + if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) { + float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) ); + dp += shadowBias; + float texelSize = shadowRadius / shadowMapSize.x; + vec3 absDir = abs( bd3D ); + vec3 tangent = absDir.x > absDir.z ? vec3( 0.0, 1.0, 0.0 ) : vec3( 1.0, 0.0, 0.0 ); + tangent = normalize( cross( bd3D, tangent ) ); + vec3 bitangent = cross( bd3D, tangent ); + float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718; + shadow = ( + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 0, 5, phi ).x + bitangent * vogelDiskSample( 0, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 1, 5, phi ).x + bitangent * vogelDiskSample( 1, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 2, 5, phi ).x + bitangent * vogelDiskSample( 2, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 3, 5, phi ).x + bitangent * vogelDiskSample( 3, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 4, 5, phi ).x + bitangent * vogelDiskSample( 4, 5, phi ).y ) * texelSize, dp ) ) + ) * 0.2; + } + return mix( 1.0, shadow, shadowIntensity ); + } + #elif defined( SHADOWMAP_TYPE_BASIC ) + float getPointShadow( samplerCube shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + vec3 bd3D = normalize( lightToPosition ); + vec3 absVec = abs( lightToPosition ); + float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z ); + if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) { + float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) ); + dp += shadowBias; + float depth = textureCube( shadowMap, bd3D ).r; + #ifdef USE_REVERSED_DEPTH_BUFFER + shadow = step( depth, dp ); + #else + shadow = step( dp, depth ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + #endif + #endif +#endif`,CU=`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,RU=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,NU=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) ) + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,DU=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,LU=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,UU=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,IU=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,OU=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,PU=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,zU=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,BU=`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,FU=`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseContribution, material.specularColorBlended, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,kU=`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + #else + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,VU=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,HU=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,GU=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,XU=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`;const WU=`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,qU=`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,jU=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,YU=`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,ZU=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,QU=`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,KU=`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,JU=`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + #ifdef USE_REVERSED_DEPTH_BUFFER + float fragCoordZ = vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ]; + #else + float fragCoordZ = 0.5 * vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ] + 0.5; + #endif + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,$U=`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,eI=`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = vec4( dist, 0.0, 0.0, 1.0 ); +}`,tI=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,nI=`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,iI=`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,aI=`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,sI=`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,rI=`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,oI=`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,lI=`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,uI=`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,cI=`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,fI=`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,hI=`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( normalize( normal ) * 0.5 + 0.5, diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,dI=`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,pI=`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,mI=`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,gI=`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + + outgoingLight = outgoingLight + sheenSpecularDirect + sheenSpecularIndirect; + + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,vI=`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,yI=`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,_I=`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,xI=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,bI=`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,SI=`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,MI=`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,EI=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`,un={alphahash_fragment:qD,alphahash_pars_fragment:jD,alphamap_fragment:YD,alphamap_pars_fragment:ZD,alphatest_fragment:QD,alphatest_pars_fragment:KD,aomap_fragment:JD,aomap_pars_fragment:$D,batching_pars_vertex:eL,batching_vertex:tL,begin_vertex:nL,beginnormal_vertex:iL,bsdfs:aL,iridescence_fragment:sL,bumpmap_pars_fragment:rL,clipping_planes_fragment:oL,clipping_planes_pars_fragment:lL,clipping_planes_pars_vertex:uL,clipping_planes_vertex:cL,color_fragment:fL,color_pars_fragment:hL,color_pars_vertex:dL,color_vertex:pL,common:mL,cube_uv_reflection_fragment:gL,defaultnormal_vertex:vL,displacementmap_pars_vertex:yL,displacementmap_vertex:_L,emissivemap_fragment:xL,emissivemap_pars_fragment:bL,colorspace_fragment:SL,colorspace_pars_fragment:ML,envmap_fragment:EL,envmap_common_pars_fragment:TL,envmap_pars_fragment:AL,envmap_pars_vertex:wL,envmap_physical_pars_fragment:BL,envmap_vertex:CL,fog_vertex:RL,fog_pars_vertex:NL,fog_fragment:DL,fog_pars_fragment:LL,gradientmap_pars_fragment:UL,lightmap_pars_fragment:IL,lights_lambert_fragment:OL,lights_lambert_pars_fragment:PL,lights_pars_begin:zL,lights_toon_fragment:FL,lights_toon_pars_fragment:kL,lights_phong_fragment:VL,lights_phong_pars_fragment:HL,lights_physical_fragment:GL,lights_physical_pars_fragment:XL,lights_fragment_begin:WL,lights_fragment_maps:qL,lights_fragment_end:jL,logdepthbuf_fragment:YL,logdepthbuf_pars_fragment:ZL,logdepthbuf_pars_vertex:QL,logdepthbuf_vertex:KL,map_fragment:JL,map_pars_fragment:$L,map_particle_fragment:eU,map_particle_pars_fragment:tU,metalnessmap_fragment:nU,metalnessmap_pars_fragment:iU,morphinstance_vertex:aU,morphcolor_vertex:sU,morphnormal_vertex:rU,morphtarget_pars_vertex:oU,morphtarget_vertex:lU,normal_fragment_begin:uU,normal_fragment_maps:cU,normal_pars_fragment:fU,normal_pars_vertex:hU,normal_vertex:dU,normalmap_pars_fragment:pU,clearcoat_normal_fragment_begin:mU,clearcoat_normal_fragment_maps:gU,clearcoat_pars_fragment:vU,iridescence_pars_fragment:yU,opaque_fragment:_U,packing:xU,premultiplied_alpha_fragment:bU,project_vertex:SU,dithering_fragment:MU,dithering_pars_fragment:EU,roughnessmap_fragment:TU,roughnessmap_pars_fragment:AU,shadowmap_pars_fragment:wU,shadowmap_pars_vertex:CU,shadowmap_vertex:RU,shadowmask_pars_fragment:NU,skinbase_vertex:DU,skinning_pars_vertex:LU,skinning_vertex:UU,skinnormal_vertex:IU,specularmap_fragment:OU,specularmap_pars_fragment:PU,tonemapping_fragment:zU,tonemapping_pars_fragment:BU,transmission_fragment:FU,transmission_pars_fragment:kU,uv_pars_fragment:VU,uv_pars_vertex:HU,uv_vertex:GU,worldpos_vertex:XU,background_vert:WU,background_frag:qU,backgroundCube_vert:jU,backgroundCube_frag:YU,cube_vert:ZU,cube_frag:QU,depth_vert:KU,depth_frag:JU,distance_vert:$U,distance_frag:eI,equirect_vert:tI,equirect_frag:nI,linedashed_vert:iI,linedashed_frag:aI,meshbasic_vert:sI,meshbasic_frag:rI,meshlambert_vert:oI,meshlambert_frag:lI,meshmatcap_vert:uI,meshmatcap_frag:cI,meshnormal_vert:fI,meshnormal_frag:hI,meshphong_vert:dI,meshphong_frag:pI,meshphysical_vert:mI,meshphysical_frag:gI,meshtoon_vert:vI,meshtoon_frag:yI,points_vert:_I,points_frag:xI,shadow_vert:bI,shadow_frag:SI,sprite_vert:MI,sprite_frag:EI},pt={common:{diffuse:{value:new yt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new en},alphaMap:{value:null},alphaMapTransform:{value:new en},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new en}},envmap:{envMap:{value:null},envMapRotation:{value:new en},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new en}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new en}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new en},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new en},normalScale:{value:new ze(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new en},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new en}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new en}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new en}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new yt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new yt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new en},alphaTest:{value:0},uvTransform:{value:new en}},sprite:{diffuse:{value:new yt(16777215)},opacity:{value:1},center:{value:new ze(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new en},alphaMap:{value:null},alphaMapTransform:{value:new en},alphaTest:{value:0}}},qr={basic:{uniforms:es([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.fog]),vertexShader:un.meshbasic_vert,fragmentShader:un.meshbasic_frag},lambert:{uniforms:es([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,pt.lights,{emissive:{value:new yt(0)}}]),vertexShader:un.meshlambert_vert,fragmentShader:un.meshlambert_frag},phong:{uniforms:es([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,pt.lights,{emissive:{value:new yt(0)},specular:{value:new yt(1118481)},shininess:{value:30}}]),vertexShader:un.meshphong_vert,fragmentShader:un.meshphong_frag},standard:{uniforms:es([pt.common,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.roughnessmap,pt.metalnessmap,pt.fog,pt.lights,{emissive:{value:new yt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:un.meshphysical_vert,fragmentShader:un.meshphysical_frag},toon:{uniforms:es([pt.common,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.gradientmap,pt.fog,pt.lights,{emissive:{value:new yt(0)}}]),vertexShader:un.meshtoon_vert,fragmentShader:un.meshtoon_frag},matcap:{uniforms:es([pt.common,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,{matcap:{value:null}}]),vertexShader:un.meshmatcap_vert,fragmentShader:un.meshmatcap_frag},points:{uniforms:es([pt.points,pt.fog]),vertexShader:un.points_vert,fragmentShader:un.points_frag},dashed:{uniforms:es([pt.common,pt.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:un.linedashed_vert,fragmentShader:un.linedashed_frag},depth:{uniforms:es([pt.common,pt.displacementmap]),vertexShader:un.depth_vert,fragmentShader:un.depth_frag},normal:{uniforms:es([pt.common,pt.bumpmap,pt.normalmap,pt.displacementmap,{opacity:{value:1}}]),vertexShader:un.meshnormal_vert,fragmentShader:un.meshnormal_frag},sprite:{uniforms:es([pt.sprite,pt.fog]),vertexShader:un.sprite_vert,fragmentShader:un.sprite_frag},background:{uniforms:{uvTransform:{value:new en},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:un.background_vert,fragmentShader:un.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new en}},vertexShader:un.backgroundCube_vert,fragmentShader:un.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:un.cube_vert,fragmentShader:un.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:un.equirect_vert,fragmentShader:un.equirect_frag},distance:{uniforms:es([pt.common,pt.displacementmap,{referencePosition:{value:new j},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:un.distance_vert,fragmentShader:un.distance_frag},shadow:{uniforms:es([pt.lights,pt.fog,{color:{value:new yt(0)},opacity:{value:1}}]),vertexShader:un.shadow_vert,fragmentShader:un.shadow_frag}};qr.physical={uniforms:es([qr.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new en},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new en},clearcoatNormalScale:{value:new ze(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new en},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new en},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new en},sheen:{value:0},sheenColor:{value:new yt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new en},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new en},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new en},transmissionSamplerSize:{value:new ze},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new en},attenuationDistance:{value:0},attenuationColor:{value:new yt(0)},specularColor:{value:new yt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new en},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new en},anisotropyVector:{value:new ze},anisotropyMap:{value:null},anisotropyMapTransform:{value:new en}}]),vertexShader:un.meshphysical_vert,fragmentShader:un.meshphysical_frag};const ov={r:0,b:0,g:0},Vc=new Gs,TI=new Xt;function AI(r,e,t,n,s,u,f){const h=new yt(0);let m=u===!0?0:1,g,_,x=null,b=0,M=null;function A(D){let U=D.isScene===!0?D.background:null;return U&&U.isTexture&&(U=(D.backgroundBlurriness>0?t:e).get(U)),U}function R(D){let U=!1;const B=A(D);B===null?E(h,m):B&&B.isColor&&(E(B,1),U=!0);const z=r.xr.getEnvironmentBlendMode();z==="additive"?n.buffers.color.setClear(0,0,0,1,f):z==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,f),(r.autoClear||U)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil))}function w(D,U){const B=A(U);B&&(B.isCubeTexture||B.mapping===id)?(_===void 0&&(_=new Yi(new lf(1,1,1),new yr({name:"BackgroundCubeMaterial",uniforms:Jh(qr.backgroundCube.uniforms),vertexShader:qr.backgroundCube.vertexShader,fragmentShader:qr.backgroundCube.fragmentShader,side:as,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),_.geometry.deleteAttribute("normal"),_.geometry.deleteAttribute("uv"),_.onBeforeRender=function(z,H,W){this.matrixWorld.copyPosition(W.matrixWorld)},Object.defineProperty(_.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),s.update(_)),Vc.copy(U.backgroundRotation),Vc.x*=-1,Vc.y*=-1,Vc.z*=-1,B.isCubeTexture&&B.isRenderTargetTexture===!1&&(Vc.y*=-1,Vc.z*=-1),_.material.uniforms.envMap.value=B,_.material.uniforms.flipEnvMap.value=B.isCubeTexture&&B.isRenderTargetTexture===!1?-1:1,_.material.uniforms.backgroundBlurriness.value=U.backgroundBlurriness,_.material.uniforms.backgroundIntensity.value=U.backgroundIntensity,_.material.uniforms.backgroundRotation.value.setFromMatrix4(TI.makeRotationFromEuler(Vc)),_.material.toneMapped=Sn.getTransfer(B.colorSpace)!==zn,(x!==B||b!==B.version||M!==r.toneMapping)&&(_.material.needsUpdate=!0,x=B,b=B.version,M=r.toneMapping),_.layers.enableAll(),D.unshift(_,_.geometry,_.material,0,0,null)):B&&B.isTexture&&(g===void 0&&(g=new Yi(new sd(2,2),new yr({name:"BackgroundMaterial",uniforms:Jh(qr.background.uniforms),vertexShader:qr.background.vertexShader,fragmentShader:qr.background.fragmentShader,side:Ll,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),g.geometry.deleteAttribute("normal"),Object.defineProperty(g.material,"map",{get:function(){return this.uniforms.t2D.value}}),s.update(g)),g.material.uniforms.t2D.value=B,g.material.uniforms.backgroundIntensity.value=U.backgroundIntensity,g.material.toneMapped=Sn.getTransfer(B.colorSpace)!==zn,B.matrixAutoUpdate===!0&&B.updateMatrix(),g.material.uniforms.uvTransform.value.copy(B.matrix),(x!==B||b!==B.version||M!==r.toneMapping)&&(g.material.needsUpdate=!0,x=B,b=B.version,M=r.toneMapping),g.layers.enableAll(),D.unshift(g,g.geometry,g.material,0,0,null))}function E(D,U){D.getRGB(ov,GE(r)),n.buffers.color.setClear(ov.r,ov.g,ov.b,U,f)}function N(){_!==void 0&&(_.geometry.dispose(),_.material.dispose(),_=void 0),g!==void 0&&(g.geometry.dispose(),g.material.dispose(),g=void 0)}return{getClearColor:function(){return h},setClearColor:function(D,U=1){h.set(D),m=U,E(h,m)},getClearAlpha:function(){return m},setClearAlpha:function(D){m=D,E(h,m)},render:R,addToRenderList:w,dispose:N}}function wI(r,e){const t=r.getParameter(r.MAX_VERTEX_ATTRIBS),n={},s=b(null);let u=s,f=!1;function h(P,Z,se,te,fe){let pe=!1;const Y=x(te,se,Z);u!==Y&&(u=Y,g(u.object)),pe=M(P,te,se,fe),pe&&A(P,te,se,fe),fe!==null&&e.update(fe,r.ELEMENT_ARRAY_BUFFER),(pe||f)&&(f=!1,U(P,Z,se,te),fe!==null&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,e.get(fe).buffer))}function m(){return r.createVertexArray()}function g(P){return r.bindVertexArray(P)}function _(P){return r.deleteVertexArray(P)}function x(P,Z,se){const te=se.wireframe===!0;let fe=n[P.id];fe===void 0&&(fe={},n[P.id]=fe);let pe=fe[Z.id];pe===void 0&&(pe={},fe[Z.id]=pe);let Y=pe[te];return Y===void 0&&(Y=b(m()),pe[te]=Y),Y}function b(P){const Z=[],se=[],te=[];for(let fe=0;fe=0){const Ne=fe[ne];let X=pe[ne];if(X===void 0&&(ne==="instanceMatrix"&&P.instanceMatrix&&(X=P.instanceMatrix),ne==="instanceColor"&&P.instanceColor&&(X=P.instanceColor)),Ne===void 0||Ne.attribute!==X||X&&Ne.data!==X.data)return!0;Y++}return u.attributesNum!==Y||u.index!==te}function A(P,Z,se,te){const fe={},pe=Z.attributes;let Y=0;const q=se.getAttributes();for(const ne in q)if(q[ne].location>=0){let Ne=pe[ne];Ne===void 0&&(ne==="instanceMatrix"&&P.instanceMatrix&&(Ne=P.instanceMatrix),ne==="instanceColor"&&P.instanceColor&&(Ne=P.instanceColor));const X={};X.attribute=Ne,Ne&&Ne.data&&(X.data=Ne.data),fe[ne]=X,Y++}u.attributes=fe,u.attributesNum=Y,u.index=te}function R(){const P=u.newAttributes;for(let Z=0,se=P.length;Z=0){let be=fe[q];if(be===void 0&&(q==="instanceMatrix"&&P.instanceMatrix&&(be=P.instanceMatrix),q==="instanceColor"&&P.instanceColor&&(be=P.instanceColor)),be!==void 0){const Ne=be.normalized,X=be.itemSize,oe=e.get(be);if(oe===void 0)continue;const Ae=oe.buffer,Fe=oe.type,lt=oe.bytesPerElement,de=Fe===r.INT||Fe===r.UNSIGNED_INT||be.gpuType===yy;if(be.isInterleavedBufferAttribute){const Re=be.data,tt=Re.stride,st=be.offset;if(Re.isInstancedInterleavedBuffer){for(let ht=0;ht0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT).precision>0)return"highp";H="mediump"}return H==="mediump"&&r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.MEDIUM_FLOAT).precision>0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let g=t.precision!==void 0?t.precision:"highp";const _=m(g);_!==g&&(ft("WebGLRenderer:",g,"not supported, using",_,"instead."),g=_);const x=t.logarithmicDepthBuffer===!0,b=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control"),M=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS),A=r.getParameter(r.MAX_VERTEX_TEXTURE_IMAGE_UNITS),R=r.getParameter(r.MAX_TEXTURE_SIZE),w=r.getParameter(r.MAX_CUBE_MAP_TEXTURE_SIZE),E=r.getParameter(r.MAX_VERTEX_ATTRIBS),N=r.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),D=r.getParameter(r.MAX_VARYING_VECTORS),U=r.getParameter(r.MAX_FRAGMENT_UNIFORM_VECTORS),B=r.getParameter(r.MAX_SAMPLES),z=r.getParameter(r.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:u,getMaxPrecision:m,textureFormatReadable:f,textureTypeReadable:h,precision:g,logarithmicDepthBuffer:x,reversedDepthBuffer:b,maxTextures:M,maxVertexTextures:A,maxTextureSize:R,maxCubemapSize:w,maxAttributes:E,maxVertexUniforms:N,maxVaryings:D,maxFragmentUniforms:U,maxSamples:B,samples:z}}function NI(r){const e=this;let t=null,n=0,s=!1,u=!1;const f=new wl,h=new en,m={value:null,needsUpdate:!1};this.uniform=m,this.numPlanes=0,this.numIntersection=0,this.init=function(x,b){const M=x.length!==0||b||n!==0||s;return s=b,n=x.length,M},this.beginShadows=function(){u=!0,_(null)},this.endShadows=function(){u=!1},this.setGlobalState=function(x,b){t=_(x,b,0)},this.setState=function(x,b,M){const A=x.clippingPlanes,R=x.clipIntersection,w=x.clipShadows,E=r.get(x);if(!s||A===null||A.length===0||u&&!w)u?_(null):g();else{const N=u?0:n,D=N*4;let U=E.clippingState||null;m.value=U,U=_(A,b,D,M);for(let B=0;B!==D;++B)U[B]=t[B];E.clippingState=U,this.numIntersection=R?this.numPlanes:0,this.numPlanes+=N}};function g(){m.value!==t&&(m.value=t,m.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function _(x,b,M,A){const R=x!==null?x.length:0;let w=null;if(R!==0){if(w=m.value,A!==!0||w===null){const E=M+R*4,N=b.matrixWorldInverse;h.getNormalMatrix(N),(w===null||w.length0){const g=new Db(m.height);return g.fromEquirectangularTexture(r,f),e.set(f,g),f.addEventListener("dispose",s),t(g.texture,f.mapping)}else return null}}return f}function s(f){const h=f.target;h.removeEventListener("dispose",s);const m=e.get(h);m!==void 0&&(e.delete(h),m.dispose())}function u(){e=new WeakMap}return{get:n,dispose:u}}const Ou=4,c1=[.125,.215,.35,.446,.526,.582],qc=20,LI=256,Wp=new Dl,f1=new yt;let Mx=null,Ex=0,Tx=0,Ax=!1;const UI=new j;class nb{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,n=.1,s=100,u={}){const{size:f=256,position:h=UI}=u;Mx=this._renderer.getRenderTarget(),Ex=this._renderer.getActiveCubeFace(),Tx=this._renderer.getActiveMipmapLevel(),Ax=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(f);const m=this._allocateTargets();return m.depthBuffer=!0,this._sceneToCubeUV(e,n,s,m,h),t>0&&this._blur(m,0,0,t),this._applyPMREM(m),this._cleanup(m),m}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=p1(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=d1(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?B:0,B,B),x.setRenderTarget(s),E&&x.render(R,m),x.render(e,m)}x.toneMapping=M,x.autoClear=b,e.background=N}_textureToCubeUV(e,t){const n=this._renderer,s=e.mapping===zo||e.mapping===Pu;s?(this._cubemapMaterial===null&&(this._cubemapMaterial=p1()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=d1());const u=s?this._cubemapMaterial:this._equirectMaterial,f=this._lodMeshes[0];f.material=u;const h=u.uniforms;h.envMap.value=e;const m=this._cubeSize;zh(t,0,0,3*m,2*m),n.setRenderTarget(t),n.render(f,Wp)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const s=this._lodMeshes.length;for(let u=1;uA-Ou?n-A+Ou:0),E=4*(this._cubeSize-R);m.envMap.value=e.texture,m.roughness.value=M,m.mipInt.value=A-t,zh(u,w,E,3*R,2*R),s.setRenderTarget(u),s.render(h,Wp),m.envMap.value=u.texture,m.roughness.value=0,m.mipInt.value=A-n,zh(e,w,E,3*R,2*R),s.setRenderTarget(e),s.render(h,Wp)}_blur(e,t,n,s,u){const f=this._pingPongRenderTarget;this._halfBlur(e,f,t,n,s,"latitudinal",u),this._halfBlur(f,e,n,n,s,"longitudinal",u)}_halfBlur(e,t,n,s,u,f,h){const m=this._renderer,g=this._blurMaterial;f!=="latitudinal"&&f!=="longitudinal"&&Rt("blur direction must be either latitudinal or longitudinal!");const _=3,x=this._lodMeshes[s];x.material=g;const b=g.uniforms,M=this._sizeLods[n]-1,A=isFinite(u)?Math.PI/(2*M):2*Math.PI/(2*qc-1),R=u/A,w=isFinite(u)?1+Math.floor(_*R):qc;w>qc&&ft(`sigmaRadians, ${u}, is too large and will clip, as it requested ${w} samples when the maximum is set to ${qc}`);const E=[];let N=0;for(let H=0;HD-Ou?s-D+Ou:0),z=4*(this._cubeSize-U);zh(t,B,z,3*U,2*U),m.setRenderTarget(t),m.render(x,Wp)}}function II(r){const e=[],t=[],n=[];let s=r;const u=r-Ou+1+c1.length;for(let f=0;fr-Ou?m=c1[f-r+Ou-1]:f===0&&(m=0),t.push(m);const g=1/(h-2),_=-g,x=1+g,b=[_,_,x,_,x,x,_,_,x,x,_,x],M=6,A=6,R=3,w=2,E=1,N=new Float32Array(R*A*M),D=new Float32Array(w*A*M),U=new Float32Array(E*A*M);for(let z=0;z2?0:-1,I=[H,W,0,H+2/3,W,0,H+2/3,W+1,0,H,W,0,H+2/3,W+1,0,H,W+1,0];N.set(I,R*A*z),D.set(b,w*A*z);const P=[z,z,z,z,z,z];U.set(P,E*A*z)}const B=new Kt;B.setAttribute("position",new Xn(N,R)),B.setAttribute("uv",new Xn(D,w)),B.setAttribute("faceIndex",new Xn(U,E)),n.push(new Yi(B,null)),s>Ou&&s--}return{lodMeshes:n,sizeLods:e,sigmas:t}}function h1(r,e,t){const n=new Hs(r,e,t);return n.texture.mapping=id,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function zh(r,e,t,n,s){r.viewport.set(e,t,n,s),r.scissor.set(e,t,n,s)}function OI(r,e,t){return new yr({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:LI,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:Qy(),fragmentShader:` + + precision highp float; + precision highp int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform float roughness; + uniform float mipInt; + + #define ENVMAP_TYPE_CUBE_UV + #include + + #define PI 3.14159265359 + + // Van der Corput radical inverse + float radicalInverse_VdC(uint bits) { + bits = (bits << 16u) | (bits >> 16u); + bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u); + bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u); + bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u); + bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u); + return float(bits) * 2.3283064365386963e-10; // / 0x100000000 + } + + // Hammersley sequence + vec2 hammersley(uint i, uint N) { + return vec2(float(i) / float(N), radicalInverse_VdC(i)); + } + + // GGX VNDF importance sampling (Eric Heitz 2018) + // "Sampling the GGX Distribution of Visible Normals" + // https://jcgt.org/published/0007/04/01/ + vec3 importanceSampleGGX_VNDF(vec2 Xi, vec3 V, float roughness) { + float alpha = roughness * roughness; + + // Section 3.2: Transform view direction to hemisphere configuration + vec3 Vh = normalize(vec3(alpha * V.x, alpha * V.y, V.z)); + + // Section 4.1: Orthonormal basis + float lensq = Vh.x * Vh.x + Vh.y * Vh.y; + vec3 T1 = lensq > 0.0 ? vec3(-Vh.y, Vh.x, 0.0) / sqrt(lensq) : vec3(1.0, 0.0, 0.0); + vec3 T2 = cross(Vh, T1); + + // Section 4.2: Parameterization of projected area + float r = sqrt(Xi.x); + float phi = 2.0 * PI * Xi.y; + float t1 = r * cos(phi); + float t2 = r * sin(phi); + float s = 0.5 * (1.0 + Vh.z); + t2 = (1.0 - s) * sqrt(1.0 - t1 * t1) + s * t2; + + // Section 4.3: Reprojection onto hemisphere + vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) * Vh; + + // Section 3.4: Transform back to ellipsoid configuration + return normalize(vec3(alpha * Nh.x, alpha * Nh.y, max(0.0, Nh.z))); + } + + void main() { + vec3 N = normalize(vOutputDirection); + vec3 V = N; // Assume view direction equals normal for pre-filtering + + vec3 prefilteredColor = vec3(0.0); + float totalWeight = 0.0; + + // For very low roughness, just sample the environment directly + if (roughness < 0.001) { + gl_FragColor = vec4(bilinearCubeUV(envMap, N, mipInt), 1.0); + return; + } + + // Tangent space basis for VNDF sampling + vec3 up = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangent = normalize(cross(up, N)); + vec3 bitangent = cross(N, tangent); + + for(uint i = 0u; i < uint(GGX_SAMPLES); i++) { + vec2 Xi = hammersley(i, uint(GGX_SAMPLES)); + + // For PMREM, V = N, so in tangent space V is always (0, 0, 1) + vec3 H_tangent = importanceSampleGGX_VNDF(Xi, vec3(0.0, 0.0, 1.0), roughness); + + // Transform H back to world space + vec3 H = normalize(tangent * H_tangent.x + bitangent * H_tangent.y + N * H_tangent.z); + vec3 L = normalize(2.0 * dot(V, H) * H - V); + + float NdotL = max(dot(N, L), 0.0); + + if(NdotL > 0.0) { + // Sample environment at fixed mip level + // VNDF importance sampling handles the distribution filtering + vec3 sampleColor = bilinearCubeUV(envMap, L, mipInt); + + // Weight by NdotL for the split-sum approximation + // VNDF PDF naturally accounts for the visible microfacet distribution + prefilteredColor += sampleColor * NdotL; + totalWeight += NdotL; + } + } + + if (totalWeight > 0.0) { + prefilteredColor = prefilteredColor / totalWeight; + } + + gl_FragColor = vec4(prefilteredColor, 1.0); + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function PI(r,e,t){const n=new Float32Array(qc),s=new j(0,1,0);return new yr({name:"SphericalGaussianBlur",defines:{n:qc,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:s}},vertexShader:Qy(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function d1(){return new yr({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Qy(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function p1(){return new yr({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Qy(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function Qy(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function zI(r){let e=new WeakMap,t=null;function n(h){if(h&&h.isTexture){const m=h.mapping,g=m===om||m===lm,_=m===zo||m===Pu;if(g||_){let x=e.get(h);const b=x!==void 0?x.texture.pmremVersion:0;if(h.isRenderTargetTexture&&h.pmremVersion!==b)return t===null&&(t=new nb(r)),x=g?t.fromEquirectangular(h,x):t.fromCubemap(h,x),x.texture.pmremVersion=h.pmremVersion,e.set(h,x),x.texture;if(x!==void 0)return x.texture;{const M=h.image;return g&&M&&M.height>0||_&&M&&s(M)?(t===null&&(t=new nb(r)),x=g?t.fromEquirectangular(h):t.fromCubemap(h),x.texture.pmremVersion=h.pmremVersion,e.set(h,x),h.addEventListener("dispose",u),x.texture):null}}}return h}function s(h){let m=0;const g=6;for(let _=0;_e.maxTextureSize&&(B=Math.ceil(U/e.maxTextureSize),U=e.maxTextureSize);const z=new Float32Array(U*B*4*x),H=new wy(z,U,B,x);H.type=is,H.needsUpdate=!0;const W=D*4;for(let P=0;P + #include + + void main() { + gl_FragColor = texture2D( tDiffuse, vUv ); + + #ifdef LINEAR_TONE_MAPPING + gl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb ); + #elif defined( REINHARD_TONE_MAPPING ) + gl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb ); + #elif defined( CINEON_TONE_MAPPING ) + gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb ); + #elif defined( ACES_FILMIC_TONE_MAPPING ) + gl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb ); + #elif defined( AGX_TONE_MAPPING ) + gl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb ); + #elif defined( NEUTRAL_TONE_MAPPING ) + gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb ); + #elif defined( CUSTOM_TONE_MAPPING ) + gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb ); + #endif + + #ifdef SRGB_TRANSFER + gl_FragColor = sRGBTransferOETF( gl_FragColor ); + #endif + }`,depthTest:!1,depthWrite:!1}),g=new Yi(h,m),_=new Dl(-1,1,1,-1,0,1);let x=null,b=null,M=!1,A,R=null,w=[],E=!1;this.setSize=function(N,D){u.setSize(N,D),f.setSize(N,D);for(let U=0;U0&&w[0].isRenderPass===!0;const D=u.width,U=u.height;for(let B=0;B0)return r;const s=e*t;let u=m1[s];if(u===void 0&&(u=new Float32Array(s),m1[s]=u),e!==0){n.toArray(u,0);for(let f=1,h=0;f!==e;++f)h+=t,r[f].toArray(u,h)}return u}function ea(r,e){if(r.length!==e.length)return!1;for(let t=0,n=r.length;t0&&(this.seq=s.concat(u))}setValue(e,t,n,s){const u=this.map[t];u!==void 0&&u.setValue(e,n,s)}setOptional(e,t,n){const s=t[n];s!==void 0&&this.setValue(e,n,s)}static upload(e,t,n,s){for(let u=0,f=t.length;u!==f;++u){const h=t[u],m=n[h.id];m.needsUpdate!==!1&&h.setValue(e,m.value,s)}}static seqWithValue(e,t){const n=[];for(let s=0,u=e.length;s!==u;++s){const f=e[s];f.id in t&&n.push(f)}return n}}function b1(r,e,t){const n=r.createShader(e);return r.shaderSource(n,t),r.compileShader(n),n}const PO=37297;let zO=0;function BO(r,e){const t=r.split(` +`),n=[],s=Math.max(e-6,0),u=Math.min(e+6,t.length);for(let f=s;f":" "} ${h}: ${t[f]}`)}return n.join(` +`)}const S1=new en;function FO(r){Sn._getMatrix(S1,Sn.workingColorSpace,r);const e=`mat3( ${S1.elements.map(t=>t.toFixed(4))} )`;switch(Sn.getTransfer(r)){case dm:return[e,"LinearTransferOETF"];case zn:return[e,"sRGBTransferOETF"];default:return ft("WebGLProgram: Unsupported color space: ",r),[e,"LinearTransferOETF"]}}function M1(r,e,t){const n=r.getShaderParameter(e,r.COMPILE_STATUS),u=(r.getShaderInfoLog(e)||"").trim();if(n&&u==="")return"";const f=/ERROR: 0:(\d+)/.exec(u);if(f){const h=parseInt(f[1]);return t.toUpperCase()+` + +`+u+` + +`+BO(r.getShaderSource(e),h)}else return u}function kO(r,e){const t=FO(e);return[`vec4 ${r}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(` +`)}const VO={[db]:"Linear",[pb]:"Reinhard",[mb]:"Cineon",[gy]:"ACESFilmic",[vb]:"AgX",[yb]:"Neutral",[gb]:"Custom"};function HO(r,e){const t=VO[e];return t===void 0?(ft("WebGLProgram: Unsupported toneMapping:",e),"vec3 "+r+"( vec3 color ) { return LinearToneMapping( color ); }"):"vec3 "+r+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const lv=new j;function GO(){Sn.getLuminanceCoefficients(lv);const r=lv.x.toFixed(4),e=lv.y.toFixed(4),t=lv.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${r}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` +`)}function XO(r){return[r.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",r.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(Qp).join(` +`)}function WO(r){const e=[];for(const t in r){const n=r[t];n!==!1&&e.push("#define "+t+" "+n)}return e.join(` +`)}function qO(r,e){const t={},n=r.getProgramParameter(e,r.ACTIVE_ATTRIBUTES);for(let s=0;s/gm;function ab(r){return r.replace(jO,ZO)}const YO=new Map;function ZO(r,e){let t=un[e];if(t===void 0){const n=YO.get(e);if(n!==void 0)t=un[n],ft('WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return ab(t)}const QO=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function A1(r){return r.replace(QO,KO)}function KO(r,e,t,n){let s="";for(let u=parseInt(e);u0&&(w+=` +`),E=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,A].filter(Qp).join(` +`),E.length>0&&(E+=` +`)):(w=[w1(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,A,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+_:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+m:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(Qp).join(` +`),E=[w1(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,A,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+g:"",t.envMap?"#define "+_:"",t.envMap?"#define "+x:"",b?"#define CUBEUV_TEXEL_WIDTH "+b.texelWidth:"",b?"#define CUBEUV_TEXEL_HEIGHT "+b.texelHeight:"",b?"#define CUBEUV_MAX_MIP "+b.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+m:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==gr?"#define TONE_MAPPING":"",t.toneMapping!==gr?un.tonemapping_pars_fragment:"",t.toneMapping!==gr?HO("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",un.colorspace_pars_fragment,kO("linearToOutputTexel",t.outputColorSpace),GO(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(Qp).join(` +`)),f=ab(f),f=E1(f,t),f=T1(f,t),h=ab(h),h=E1(h,t),h=T1(h,t),f=A1(f),h=A1(h),t.isRawShaderMaterial!==!0&&(N=`#version 300 es +`,w=[M,"#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+w,E=["#define varying in",t.glslVersion===jx?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===jx?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`)+` +`+E);const D=N+w+f,U=N+E+h,B=b1(s,s.VERTEX_SHADER,D),z=b1(s,s.FRAGMENT_SHADER,U);s.attachShader(R,B),s.attachShader(R,z),t.index0AttributeName!==void 0?s.bindAttribLocation(R,0,t.index0AttributeName):t.morphTargets===!0&&s.bindAttribLocation(R,0,"position"),s.linkProgram(R);function H(Z){if(r.debug.checkShaderErrors){const se=s.getProgramInfoLog(R)||"",te=s.getShaderInfoLog(B)||"",fe=s.getShaderInfoLog(z)||"",pe=se.trim(),Y=te.trim(),q=fe.trim();let ne=!0,be=!0;if(s.getProgramParameter(R,s.LINK_STATUS)===!1)if(ne=!1,typeof r.debug.onShaderError=="function")r.debug.onShaderError(s,R,B,z);else{const Ne=M1(s,B,"vertex"),X=M1(s,z,"fragment");Rt("THREE.WebGLProgram: Shader Error "+s.getError()+" - VALIDATE_STATUS "+s.getProgramParameter(R,s.VALIDATE_STATUS)+` + +Material Name: `+Z.name+` +Material Type: `+Z.type+` + +Program Info Log: `+pe+` +`+Ne+` +`+X)}else pe!==""?ft("WebGLProgram: Program Info Log:",pe):(Y===""||q==="")&&(be=!1);be&&(Z.diagnostics={runnable:ne,programLog:pe,vertexShader:{log:Y,prefix:w},fragmentShader:{log:q,prefix:E}})}s.deleteShader(B),s.deleteShader(z),W=new mv(s,R),I=qO(s,R)}let W;this.getUniforms=function(){return W===void 0&&H(this),W};let I;this.getAttributes=function(){return I===void 0&&H(this),I};let P=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return P===!1&&(P=s.getProgramParameter(R,PO)),P},this.destroy=function(){n.releaseStatesOfProgram(this),s.deleteProgram(R),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=zO++,this.cacheKey=e,this.usedTimes=1,this.program=R,this.vertexShader=B,this.fragmentShader=z,this}let lP=0;class uP{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,s=this._getShaderStage(t),u=this._getShaderStage(n),f=this._getShaderCacheForMaterial(e);return f.has(s)===!1&&(f.add(s),s.usedTimes++),f.has(u)===!1&&(f.add(u),u.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new cP(e),t.set(e,n)),n}}class cP{constructor(e){this.id=lP++,this.code=e,this.usedTimes=0}}function fP(r,e,t,n,s,u,f){const h=new Kh,m=new uP,g=new Set,_=[],x=new Map,b=s.logarithmicDepthBuffer;let M=s.precision;const A={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distance",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function R(I){return g.add(I),I===0?"uv":`uv${I}`}function w(I,P,Z,se,te){const fe=se.fog,pe=te.geometry,Y=I.isMeshStandardMaterial?se.environment:null,q=(I.isMeshStandardMaterial?t:e).get(I.envMap||Y),ne=q&&q.mapping===id?q.image.height:null,be=A[I.type];I.precision!==null&&(M=s.getMaxPrecision(I.precision),M!==I.precision&&ft("WebGLProgram.getParameters:",I.precision,"not supported, using",M,"instead."));const Ne=pe.morphAttributes.position||pe.morphAttributes.normal||pe.morphAttributes.color,X=Ne!==void 0?Ne.length:0;let oe=0;pe.morphAttributes.position!==void 0&&(oe=1),pe.morphAttributes.normal!==void 0&&(oe=2),pe.morphAttributes.color!==void 0&&(oe=3);let Ae,Fe,lt,de;if(be){const nn=qr[be];Ae=nn.vertexShader,Fe=nn.fragmentShader}else Ae=I.vertexShader,Fe=I.fragmentShader,m.update(I),lt=m.getVertexShaderID(I),de=m.getFragmentShaderID(I);const Re=r.getRenderTarget(),tt=r.state.buffers.depth.getReversed(),st=te.isInstancedMesh===!0,ht=te.isBatchedMesh===!0,jt=!!I.map,tn=!!I.matcap,Nt=!!q,Le=!!I.aoMap,He=!!I.lightMap,Oe=!!I.bumpMap,nt=!!I.normalMap,Q=!!I.displacementMap,Et=!!I.emissiveMap,ot=!!I.metalnessMap,Tt=!!I.roughnessMap,Qe=I.anisotropy>0,G=I.clearcoat>0,O=I.dispersion>0,ae=I.iridescence>0,Te=I.sheen>0,Ie=I.transmission>0,Ee=Qe&&!!I.anisotropyMap,dt=G&&!!I.clearcoatMap,Ke=G&&!!I.clearcoatNormalMap,vt=G&&!!I.clearcoatRoughnessMap,Dt=ae&&!!I.iridescenceMap,Ve=ae&&!!I.iridescenceThicknessMap,Ze=Te&&!!I.sheenColorMap,ct=Te&&!!I.sheenRoughnessMap,K=!!I.specularMap,me=!!I.specularColorMap,et=!!I.specularIntensityMap,J=Ie&&!!I.transmissionMap,je=Ie&&!!I.thicknessMap,Ge=!!I.gradientMap,at=!!I.alphaMap,Xe=I.alphaTest>0,Ue=!!I.alphaHash,Ye=!!I.extensions;let Ct=gr;I.toneMapped&&(Re===null||Re.isXRRenderTarget===!0)&&(Ct=r.toneMapping);const Jt={shaderID:be,shaderType:I.type,shaderName:I.name,vertexShader:Ae,fragmentShader:Fe,defines:I.defines,customVertexShaderID:lt,customFragmentShaderID:de,isRawShaderMaterial:I.isRawShaderMaterial===!0,glslVersion:I.glslVersion,precision:M,batching:ht,batchingColor:ht&&te._colorsTexture!==null,instancing:st,instancingColor:st&&te.instanceColor!==null,instancingMorph:st&&te.morphTexture!==null,outputColorSpace:Re===null?r.outputColorSpace:Re.isXRRenderTarget===!0?Re.texture.colorSpace:zu,alphaToCoverage:!!I.alphaToCoverage,map:jt,matcap:tn,envMap:Nt,envMapMode:Nt&&q.mapping,envMapCubeUVHeight:ne,aoMap:Le,lightMap:He,bumpMap:Oe,normalMap:nt,displacementMap:Q,emissiveMap:Et,normalMapObjectSpace:nt&&I.normalMapType===DE,normalMapTangentSpace:nt&&I.normalMapType===ku,metalnessMap:ot,roughnessMap:Tt,anisotropy:Qe,anisotropyMap:Ee,clearcoat:G,clearcoatMap:dt,clearcoatNormalMap:Ke,clearcoatRoughnessMap:vt,dispersion:O,iridescence:ae,iridescenceMap:Dt,iridescenceThicknessMap:Ve,sheen:Te,sheenColorMap:Ze,sheenRoughnessMap:ct,specularMap:K,specularColorMap:me,specularIntensityMap:et,transmission:Ie,transmissionMap:J,thicknessMap:je,gradientMap:Ge,opaque:I.transparent===!1&&I.blending===Kc&&I.alphaToCoverage===!1,alphaMap:at,alphaTest:Xe,alphaHash:Ue,combine:I.combine,mapUv:jt&&R(I.map.channel),aoMapUv:Le&&R(I.aoMap.channel),lightMapUv:He&&R(I.lightMap.channel),bumpMapUv:Oe&&R(I.bumpMap.channel),normalMapUv:nt&&R(I.normalMap.channel),displacementMapUv:Q&&R(I.displacementMap.channel),emissiveMapUv:Et&&R(I.emissiveMap.channel),metalnessMapUv:ot&&R(I.metalnessMap.channel),roughnessMapUv:Tt&&R(I.roughnessMap.channel),anisotropyMapUv:Ee&&R(I.anisotropyMap.channel),clearcoatMapUv:dt&&R(I.clearcoatMap.channel),clearcoatNormalMapUv:Ke&&R(I.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:vt&&R(I.clearcoatRoughnessMap.channel),iridescenceMapUv:Dt&&R(I.iridescenceMap.channel),iridescenceThicknessMapUv:Ve&&R(I.iridescenceThicknessMap.channel),sheenColorMapUv:Ze&&R(I.sheenColorMap.channel),sheenRoughnessMapUv:ct&&R(I.sheenRoughnessMap.channel),specularMapUv:K&&R(I.specularMap.channel),specularColorMapUv:me&&R(I.specularColorMap.channel),specularIntensityMapUv:et&&R(I.specularIntensityMap.channel),transmissionMapUv:J&&R(I.transmissionMap.channel),thicknessMapUv:je&&R(I.thicknessMap.channel),alphaMapUv:at&&R(I.alphaMap.channel),vertexTangents:!!pe.attributes.tangent&&(nt||Qe),vertexColors:I.vertexColors,vertexAlphas:I.vertexColors===!0&&!!pe.attributes.color&&pe.attributes.color.itemSize===4,pointsUvs:te.isPoints===!0&&!!pe.attributes.uv&&(jt||at),fog:!!fe,useFog:I.fog===!0,fogExp2:!!fe&&fe.isFogExp2,flatShading:I.flatShading===!0&&I.wireframe===!1,sizeAttenuation:I.sizeAttenuation===!0,logarithmicDepthBuffer:b,reversedDepthBuffer:tt,skinning:te.isSkinnedMesh===!0,morphTargets:pe.morphAttributes.position!==void 0,morphNormals:pe.morphAttributes.normal!==void 0,morphColors:pe.morphAttributes.color!==void 0,morphTargetsCount:X,morphTextureStride:oe,numDirLights:P.directional.length,numPointLights:P.point.length,numSpotLights:P.spot.length,numSpotLightMaps:P.spotLightMap.length,numRectAreaLights:P.rectArea.length,numHemiLights:P.hemi.length,numDirLightShadows:P.directionalShadowMap.length,numPointLightShadows:P.pointShadowMap.length,numSpotLightShadows:P.spotShadowMap.length,numSpotLightShadowsWithMaps:P.numSpotLightShadowsWithMaps,numLightProbes:P.numLightProbes,numClippingPlanes:f.numPlanes,numClipIntersection:f.numIntersection,dithering:I.dithering,shadowMapEnabled:r.shadowMap.enabled&&Z.length>0,shadowMapType:r.shadowMap.type,toneMapping:Ct,decodeVideoTexture:jt&&I.map.isVideoTexture===!0&&Sn.getTransfer(I.map.colorSpace)===zn,decodeVideoTextureEmissive:Et&&I.emissiveMap.isVideoTexture===!0&&Sn.getTransfer(I.emissiveMap.colorSpace)===zn,premultipliedAlpha:I.premultipliedAlpha,doubleSided:I.side===Uo,flipSided:I.side===as,useDepthPacking:I.depthPacking>=0,depthPacking:I.depthPacking||0,index0AttributeName:I.index0AttributeName,extensionClipCullDistance:Ye&&I.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(Ye&&I.extensions.multiDraw===!0||ht)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:I.customProgramCacheKey()};return Jt.vertexUv1s=g.has(1),Jt.vertexUv2s=g.has(2),Jt.vertexUv3s=g.has(3),g.clear(),Jt}function E(I){const P=[];if(I.shaderID?P.push(I.shaderID):(P.push(I.customVertexShaderID),P.push(I.customFragmentShaderID)),I.defines!==void 0)for(const Z in I.defines)P.push(Z),P.push(I.defines[Z]);return I.isRawShaderMaterial===!1&&(N(P,I),D(P,I),P.push(r.outputColorSpace)),P.push(I.customProgramCacheKey),P.join()}function N(I,P){I.push(P.precision),I.push(P.outputColorSpace),I.push(P.envMapMode),I.push(P.envMapCubeUVHeight),I.push(P.mapUv),I.push(P.alphaMapUv),I.push(P.lightMapUv),I.push(P.aoMapUv),I.push(P.bumpMapUv),I.push(P.normalMapUv),I.push(P.displacementMapUv),I.push(P.emissiveMapUv),I.push(P.metalnessMapUv),I.push(P.roughnessMapUv),I.push(P.anisotropyMapUv),I.push(P.clearcoatMapUv),I.push(P.clearcoatNormalMapUv),I.push(P.clearcoatRoughnessMapUv),I.push(P.iridescenceMapUv),I.push(P.iridescenceThicknessMapUv),I.push(P.sheenColorMapUv),I.push(P.sheenRoughnessMapUv),I.push(P.specularMapUv),I.push(P.specularColorMapUv),I.push(P.specularIntensityMapUv),I.push(P.transmissionMapUv),I.push(P.thicknessMapUv),I.push(P.combine),I.push(P.fogExp2),I.push(P.sizeAttenuation),I.push(P.morphTargetsCount),I.push(P.morphAttributeCount),I.push(P.numDirLights),I.push(P.numPointLights),I.push(P.numSpotLights),I.push(P.numSpotLightMaps),I.push(P.numHemiLights),I.push(P.numRectAreaLights),I.push(P.numDirLightShadows),I.push(P.numPointLightShadows),I.push(P.numSpotLightShadows),I.push(P.numSpotLightShadowsWithMaps),I.push(P.numLightProbes),I.push(P.shadowMapType),I.push(P.toneMapping),I.push(P.numClippingPlanes),I.push(P.numClipIntersection),I.push(P.depthPacking)}function D(I,P){h.disableAll(),P.instancing&&h.enable(0),P.instancingColor&&h.enable(1),P.instancingMorph&&h.enable(2),P.matcap&&h.enable(3),P.envMap&&h.enable(4),P.normalMapObjectSpace&&h.enable(5),P.normalMapTangentSpace&&h.enable(6),P.clearcoat&&h.enable(7),P.iridescence&&h.enable(8),P.alphaTest&&h.enable(9),P.vertexColors&&h.enable(10),P.vertexAlphas&&h.enable(11),P.vertexUv1s&&h.enable(12),P.vertexUv2s&&h.enable(13),P.vertexUv3s&&h.enable(14),P.vertexTangents&&h.enable(15),P.anisotropy&&h.enable(16),P.alphaHash&&h.enable(17),P.batching&&h.enable(18),P.dispersion&&h.enable(19),P.batchingColor&&h.enable(20),P.gradientMap&&h.enable(21),I.push(h.mask),h.disableAll(),P.fog&&h.enable(0),P.useFog&&h.enable(1),P.flatShading&&h.enable(2),P.logarithmicDepthBuffer&&h.enable(3),P.reversedDepthBuffer&&h.enable(4),P.skinning&&h.enable(5),P.morphTargets&&h.enable(6),P.morphNormals&&h.enable(7),P.morphColors&&h.enable(8),P.premultipliedAlpha&&h.enable(9),P.shadowMapEnabled&&h.enable(10),P.doubleSided&&h.enable(11),P.flipSided&&h.enable(12),P.useDepthPacking&&h.enable(13),P.dithering&&h.enable(14),P.transmission&&h.enable(15),P.sheen&&h.enable(16),P.opaque&&h.enable(17),P.pointsUvs&&h.enable(18),P.decodeVideoTexture&&h.enable(19),P.decodeVideoTextureEmissive&&h.enable(20),P.alphaToCoverage&&h.enable(21),I.push(h.mask)}function U(I){const P=A[I.type];let Z;if(P){const se=qr[P];Z=XE.clone(se.uniforms)}else Z=I.uniforms;return Z}function B(I,P){let Z=x.get(P);return Z!==void 0?++Z.usedTimes:(Z=new oP(r,P,I,u),_.push(Z),x.set(P,Z)),Z}function z(I){if(--I.usedTimes===0){const P=_.indexOf(I);_[P]=_[_.length-1],_.pop(),x.delete(I.cacheKey),I.destroy()}}function H(I){m.remove(I)}function W(){m.dispose()}return{getParameters:w,getProgramCacheKey:E,getUniforms:U,acquireProgram:B,releaseProgram:z,releaseShaderCache:H,programs:_,dispose:W}}function hP(){let r=new WeakMap;function e(f){return r.has(f)}function t(f){let h=r.get(f);return h===void 0&&(h={},r.set(f,h)),h}function n(f){r.delete(f)}function s(f,h,m){r.get(f)[h]=m}function u(){r=new WeakMap}return{has:e,get:t,remove:n,update:s,dispose:u}}function dP(r,e){return r.groupOrder!==e.groupOrder?r.groupOrder-e.groupOrder:r.renderOrder!==e.renderOrder?r.renderOrder-e.renderOrder:r.material.id!==e.material.id?r.material.id-e.material.id:r.z!==e.z?r.z-e.z:r.id-e.id}function C1(r,e){return r.groupOrder!==e.groupOrder?r.groupOrder-e.groupOrder:r.renderOrder!==e.renderOrder?r.renderOrder-e.renderOrder:r.z!==e.z?e.z-r.z:r.id-e.id}function R1(){const r=[];let e=0;const t=[],n=[],s=[];function u(){e=0,t.length=0,n.length=0,s.length=0}function f(x,b,M,A,R,w){let E=r[e];return E===void 0?(E={id:x.id,object:x,geometry:b,material:M,groupOrder:A,renderOrder:x.renderOrder,z:R,group:w},r[e]=E):(E.id=x.id,E.object=x,E.geometry=b,E.material=M,E.groupOrder=A,E.renderOrder=x.renderOrder,E.z=R,E.group=w),e++,E}function h(x,b,M,A,R,w){const E=f(x,b,M,A,R,w);M.transmission>0?n.push(E):M.transparent===!0?s.push(E):t.push(E)}function m(x,b,M,A,R,w){const E=f(x,b,M,A,R,w);M.transmission>0?n.unshift(E):M.transparent===!0?s.unshift(E):t.unshift(E)}function g(x,b){t.length>1&&t.sort(x||dP),n.length>1&&n.sort(b||C1),s.length>1&&s.sort(b||C1)}function _(){for(let x=e,b=r.length;x=u.length?(f=new R1,u.push(f)):f=u[s],f}function t(){r=new WeakMap}return{get:e,dispose:t}}function mP(){const r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new j,color:new yt};break;case"SpotLight":t={position:new j,direction:new j,color:new yt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new j,color:new yt,distance:0,decay:0};break;case"HemisphereLight":t={direction:new j,skyColor:new yt,groundColor:new yt};break;case"RectAreaLight":t={color:new yt,position:new j,halfWidth:new j,halfHeight:new j};break}return r[e.id]=t,t}}}function gP(){const r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ze};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ze};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ze,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[e.id]=t,t}}}let vP=0;function yP(r,e){return(e.castShadow?2:0)-(r.castShadow?2:0)+(e.map?1:0)-(r.map?1:0)}function _P(r){const e=new mP,t=gP(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let g=0;g<9;g++)n.probe.push(new j);const s=new j,u=new Xt,f=new Xt;function h(g){let _=0,x=0,b=0;for(let I=0;I<9;I++)n.probe[I].set(0,0,0);let M=0,A=0,R=0,w=0,E=0,N=0,D=0,U=0,B=0,z=0,H=0;g.sort(yP);for(let I=0,P=g.length;I0&&(r.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=pt.LTC_FLOAT_1,n.rectAreaLTC2=pt.LTC_FLOAT_2):(n.rectAreaLTC1=pt.LTC_HALF_1,n.rectAreaLTC2=pt.LTC_HALF_2)),n.ambient[0]=_,n.ambient[1]=x,n.ambient[2]=b;const W=n.hash;(W.directionalLength!==M||W.pointLength!==A||W.spotLength!==R||W.rectAreaLength!==w||W.hemiLength!==E||W.numDirectionalShadows!==N||W.numPointShadows!==D||W.numSpotShadows!==U||W.numSpotMaps!==B||W.numLightProbes!==H)&&(n.directional.length=M,n.spot.length=R,n.rectArea.length=w,n.point.length=A,n.hemi.length=E,n.directionalShadow.length=N,n.directionalShadowMap.length=N,n.pointShadow.length=D,n.pointShadowMap.length=D,n.spotShadow.length=U,n.spotShadowMap.length=U,n.directionalShadowMatrix.length=N,n.pointShadowMatrix.length=D,n.spotLightMatrix.length=U+B-z,n.spotLightMap.length=B,n.numSpotLightShadowsWithMaps=z,n.numLightProbes=H,W.directionalLength=M,W.pointLength=A,W.spotLength=R,W.rectAreaLength=w,W.hemiLength=E,W.numDirectionalShadows=N,W.numPointShadows=D,W.numSpotShadows=U,W.numSpotMaps=B,W.numLightProbes=H,n.version=vP++)}function m(g,_){let x=0,b=0,M=0,A=0,R=0;const w=_.matrixWorldInverse;for(let E=0,N=g.length;E=f.length?(h=new N1(r),f.push(h)):h=f[u],h}function n(){e=new WeakMap}return{get:t,dispose:n}}const bP=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,SP=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ).rg; + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ).r; + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( max( 0.0, squared_mean - mean * mean ) ); + gl_FragColor = vec4( mean, std_dev, 0.0, 1.0 ); +}`,MP=[new j(1,0,0),new j(-1,0,0),new j(0,1,0),new j(0,-1,0),new j(0,0,1),new j(0,0,-1)],EP=[new j(0,-1,0),new j(0,-1,0),new j(0,0,1),new j(0,0,-1),new j(0,-1,0),new j(0,-1,0)],D1=new Xt,qp=new j,Cx=new j;function TP(r,e,t){let n=new ad;const s=new ze,u=new ze,f=new jn,h=new Wb,m=new qb,g={},_=t.maxTextureSize,x={[Ll]:as,[as]:Ll,[Uo]:Uo},b=new yr({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new ze},radius:{value:4}},vertexShader:bP,fragmentShader:SP}),M=b.clone();M.defines.HORIZONTAL_PASS=1;const A=new Kt;A.setAttribute("position",new Xn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const R=new Yi(A,b),w=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Xh;let E=this.type;this.render=function(z,H,W){if(w.enabled===!1||w.autoUpdate===!1&&w.needsUpdate===!1||z.length===0)return;z.type===Kp&&(ft("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),z.type=Xh);const I=r.getRenderTarget(),P=r.getActiveCubeFace(),Z=r.getActiveMipmapLevel(),se=r.state;se.setBlending(Po),se.buffers.depth.getReversed()===!0?se.buffers.color.setClear(0,0,0,0):se.buffers.color.setClear(1,1,1,1),se.buffers.depth.setTest(!0),se.setScissorTest(!1);const te=E!==this.type;te&&H.traverse(function(fe){fe.material&&(Array.isArray(fe.material)?fe.material.forEach(pe=>pe.needsUpdate=!0):fe.material.needsUpdate=!0)});for(let fe=0,pe=z.length;fe_||s.y>_)&&(s.x>_&&(u.x=Math.floor(_/ne.x),s.x=u.x*ne.x,q.mapSize.x=u.x),s.y>_&&(u.y=Math.floor(_/ne.y),s.y=u.y*ne.y,q.mapSize.y=u.y)),q.map===null||te===!0){if(q.map!==null&&(q.map.depthTexture!==null&&(q.map.depthTexture.dispose(),q.map.depthTexture=null),q.map.dispose()),this.type===jc){if(Y.isPointLight){ft("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}q.map=new Hs(s.x,s.y,{format:tf,type:Bo,minFilter:oi,magFilter:oi,generateMipmaps:!1}),q.map.texture.name=Y.name+".shadowMap",q.map.depthTexture=new ed(s.x,s.y,is),q.map.depthTexture.name=Y.name+".shadowMapDepth",q.map.depthTexture.format=Fo,q.map.depthTexture.compareFunction=null,q.map.depthTexture.minFilter=Bi,q.map.depthTexture.magFilter=Bi}else{Y.isPointLight?(q.map=new Db(s.x),q.map.depthTexture=new tT(s.x,vr)):(q.map=new Hs(s.x,s.y),q.map.depthTexture=new ed(s.x,s.y,vr)),q.map.depthTexture.name=Y.name+".shadowMap",q.map.depthTexture.format=Fo;const Ne=r.state.buffers.depth.getReversed();this.type===Xh?(q.map.depthTexture.compareFunction=Ne?Ay:Ty,q.map.depthTexture.minFilter=oi,q.map.depthTexture.magFilter=oi):(q.map.depthTexture.compareFunction=null,q.map.depthTexture.minFilter=Bi,q.map.depthTexture.magFilter=Bi)}q.camera.updateProjectionMatrix()}const be=q.map.isWebGLCubeRenderTarget?6:1;for(let Ne=0;Ne0||H.map&&H.alphaTest>0||H.alphaToCoverage===!0){const se=P.uuid,te=H.uuid;let fe=g[se];fe===void 0&&(fe={},g[se]=fe);let pe=fe[te];pe===void 0&&(pe=P.clone(),fe[te]=pe,H.addEventListener("dispose",B)),P=pe}if(P.visible=H.visible,P.wireframe=H.wireframe,I===jc?P.side=H.shadowSide!==null?H.shadowSide:H.side:P.side=H.shadowSide!==null?H.shadowSide:x[H.side],P.alphaMap=H.alphaMap,P.alphaTest=H.alphaToCoverage===!0?.5:H.alphaTest,P.map=H.map,P.clipShadows=H.clipShadows,P.clippingPlanes=H.clippingPlanes,P.clipIntersection=H.clipIntersection,P.displacementMap=H.displacementMap,P.displacementScale=H.displacementScale,P.displacementBias=H.displacementBias,P.wireframeLinewidth=H.wireframeLinewidth,P.linewidth=H.linewidth,W.isPointLight===!0&&P.isMeshDistanceMaterial===!0){const se=r.properties.get(P);se.light=W}return P}function U(z,H,W,I,P){if(z.visible===!1)return;if(z.layers.test(H.layers)&&(z.isMesh||z.isLine||z.isPoints)&&(z.castShadow||z.receiveShadow&&P===jc)&&(!z.frustumCulled||n.intersectsObject(z))){z.modelViewMatrix.multiplyMatrices(W.matrixWorldInverse,z.matrixWorld);const te=e.update(z),fe=z.material;if(Array.isArray(fe)){const pe=te.groups;for(let Y=0,q=pe.length;Y=1):ne.indexOf("OpenGL ES")!==-1&&(q=parseFloat(/^OpenGL ES (\d)/.exec(ne)[1]),Y=q>=2);let be=null,Ne={};const X=r.getParameter(r.SCISSOR_BOX),oe=r.getParameter(r.VIEWPORT),Ae=new jn().fromArray(X),Fe=new jn().fromArray(oe);function lt(J,je,Ge,at){const Xe=new Uint8Array(4),Ue=r.createTexture();r.bindTexture(J,Ue),r.texParameteri(J,r.TEXTURE_MIN_FILTER,r.NEAREST),r.texParameteri(J,r.TEXTURE_MAG_FILTER,r.NEAREST);for(let Ye=0;Ye"u"?!1:/OculusBrowser/g.test(navigator.userAgent),g=new ze,_=new WeakMap;let x;const b=new WeakMap;let M=!1;try{M=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function A(G,O){return M?new OffscreenCanvas(G,O):mm("canvas")}function R(G,O,ae){let Te=1;const Ie=Qe(G);if((Ie.width>ae||Ie.height>ae)&&(Te=ae/Math.max(Ie.width,Ie.height)),Te<1)if(typeof HTMLImageElement<"u"&&G instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&G instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&G instanceof ImageBitmap||typeof VideoFrame<"u"&&G instanceof VideoFrame){const Ee=Math.floor(Te*Ie.width),dt=Math.floor(Te*Ie.height);x===void 0&&(x=A(Ee,dt));const Ke=O?A(Ee,dt):x;return Ke.width=Ee,Ke.height=dt,Ke.getContext("2d").drawImage(G,0,0,Ee,dt),ft("WebGLRenderer: Texture has been resized from ("+Ie.width+"x"+Ie.height+") to ("+Ee+"x"+dt+")."),Ke}else return"data"in G&&ft("WebGLRenderer: Image in DataTexture is too big ("+Ie.width+"x"+Ie.height+")."),G;return G}function w(G){return G.generateMipmaps}function E(G){r.generateMipmap(G)}function N(G){return G.isWebGLCubeRenderTarget?r.TEXTURE_CUBE_MAP:G.isWebGL3DRenderTarget?r.TEXTURE_3D:G.isWebGLArrayRenderTarget||G.isCompressedArrayTexture?r.TEXTURE_2D_ARRAY:r.TEXTURE_2D}function D(G,O,ae,Te,Ie=!1){if(G!==null){if(r[G]!==void 0)return r[G];ft("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+G+"'")}let Ee=O;if(O===r.RED&&(ae===r.FLOAT&&(Ee=r.R32F),ae===r.HALF_FLOAT&&(Ee=r.R16F),ae===r.UNSIGNED_BYTE&&(Ee=r.R8)),O===r.RED_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.R8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.R16UI),ae===r.UNSIGNED_INT&&(Ee=r.R32UI),ae===r.BYTE&&(Ee=r.R8I),ae===r.SHORT&&(Ee=r.R16I),ae===r.INT&&(Ee=r.R32I)),O===r.RG&&(ae===r.FLOAT&&(Ee=r.RG32F),ae===r.HALF_FLOAT&&(Ee=r.RG16F),ae===r.UNSIGNED_BYTE&&(Ee=r.RG8)),O===r.RG_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.RG8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.RG16UI),ae===r.UNSIGNED_INT&&(Ee=r.RG32UI),ae===r.BYTE&&(Ee=r.RG8I),ae===r.SHORT&&(Ee=r.RG16I),ae===r.INT&&(Ee=r.RG32I)),O===r.RGB_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.RGB8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.RGB16UI),ae===r.UNSIGNED_INT&&(Ee=r.RGB32UI),ae===r.BYTE&&(Ee=r.RGB8I),ae===r.SHORT&&(Ee=r.RGB16I),ae===r.INT&&(Ee=r.RGB32I)),O===r.RGBA_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.RGBA8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.RGBA16UI),ae===r.UNSIGNED_INT&&(Ee=r.RGBA32UI),ae===r.BYTE&&(Ee=r.RGBA8I),ae===r.SHORT&&(Ee=r.RGBA16I),ae===r.INT&&(Ee=r.RGBA32I)),O===r.RGB&&(ae===r.UNSIGNED_INT_5_9_9_9_REV&&(Ee=r.RGB9_E5),ae===r.UNSIGNED_INT_10F_11F_11F_REV&&(Ee=r.R11F_G11F_B10F)),O===r.RGBA){const dt=Ie?dm:Sn.getTransfer(Te);ae===r.FLOAT&&(Ee=r.RGBA32F),ae===r.HALF_FLOAT&&(Ee=r.RGBA16F),ae===r.UNSIGNED_BYTE&&(Ee=dt===zn?r.SRGB8_ALPHA8:r.RGBA8),ae===r.UNSIGNED_SHORT_4_4_4_4&&(Ee=r.RGBA4),ae===r.UNSIGNED_SHORT_5_5_5_1&&(Ee=r.RGB5_A1)}return(Ee===r.R16F||Ee===r.R32F||Ee===r.RG16F||Ee===r.RG32F||Ee===r.RGBA16F||Ee===r.RGBA32F)&&e.get("EXT_color_buffer_float"),Ee}function U(G,O){let ae;return G?O===null||O===vr||O===jh?ae=r.DEPTH24_STENCIL8:O===is?ae=r.DEPTH32F_STENCIL8:O===qh&&(ae=r.DEPTH24_STENCIL8,ft("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):O===null||O===vr||O===jh?ae=r.DEPTH_COMPONENT24:O===is?ae=r.DEPTH_COMPONENT32F:O===qh&&(ae=r.DEPTH_COMPONENT16),ae}function B(G,O){return w(G)===!0||G.isFramebufferTexture&&G.minFilter!==Bi&&G.minFilter!==oi?Math.log2(Math.max(O.width,O.height))+1:G.mipmaps!==void 0&&G.mipmaps.length>0?G.mipmaps.length:G.isCompressedTexture&&Array.isArray(G.image)?O.mipmaps.length:1}function z(G){const O=G.target;O.removeEventListener("dispose",z),W(O),O.isVideoTexture&&_.delete(O)}function H(G){const O=G.target;O.removeEventListener("dispose",H),P(O)}function W(G){const O=n.get(G);if(O.__webglInit===void 0)return;const ae=G.source,Te=b.get(ae);if(Te){const Ie=Te[O.__cacheKey];Ie.usedTimes--,Ie.usedTimes===0&&I(G),Object.keys(Te).length===0&&b.delete(ae)}n.remove(G)}function I(G){const O=n.get(G);r.deleteTexture(O.__webglTexture);const ae=G.source,Te=b.get(ae);delete Te[O.__cacheKey],f.memory.textures--}function P(G){const O=n.get(G);if(G.depthTexture&&(G.depthTexture.dispose(),n.remove(G.depthTexture)),G.isWebGLCubeRenderTarget)for(let Te=0;Te<6;Te++){if(Array.isArray(O.__webglFramebuffer[Te]))for(let Ie=0;Ie=s.maxTextures&&ft("WebGLTextures: Trying to use "+G+" texture units while this GPU supports only "+s.maxTextures),Z+=1,G}function fe(G){const O=[];return O.push(G.wrapS),O.push(G.wrapT),O.push(G.wrapR||0),O.push(G.magFilter),O.push(G.minFilter),O.push(G.anisotropy),O.push(G.internalFormat),O.push(G.format),O.push(G.type),O.push(G.generateMipmaps),O.push(G.premultiplyAlpha),O.push(G.flipY),O.push(G.unpackAlignment),O.push(G.colorSpace),O.join()}function pe(G,O){const ae=n.get(G);if(G.isVideoTexture&&ot(G),G.isRenderTargetTexture===!1&&G.isExternalTexture!==!0&&G.version>0&&ae.__version!==G.version){const Te=G.image;if(Te===null)ft("WebGLRenderer: Texture marked for update but no image data found.");else if(Te.complete===!1)ft("WebGLRenderer: Texture marked for update but image is incomplete");else{de(ae,G,O);return}}else G.isExternalTexture&&(ae.__webglTexture=G.sourceTexture?G.sourceTexture:null);t.bindTexture(r.TEXTURE_2D,ae.__webglTexture,r.TEXTURE0+O)}function Y(G,O){const ae=n.get(G);if(G.isRenderTargetTexture===!1&&G.version>0&&ae.__version!==G.version){de(ae,G,O);return}else G.isExternalTexture&&(ae.__webglTexture=G.sourceTexture?G.sourceTexture:null);t.bindTexture(r.TEXTURE_2D_ARRAY,ae.__webglTexture,r.TEXTURE0+O)}function q(G,O){const ae=n.get(G);if(G.isRenderTargetTexture===!1&&G.version>0&&ae.__version!==G.version){de(ae,G,O);return}t.bindTexture(r.TEXTURE_3D,ae.__webglTexture,r.TEXTURE0+O)}function ne(G,O){const ae=n.get(G);if(G.isCubeDepthTexture!==!0&&G.version>0&&ae.__version!==G.version){Re(ae,G,O);return}t.bindTexture(r.TEXTURE_CUBE_MAP,ae.__webglTexture,r.TEXTURE0+O)}const be={[um]:r.REPEAT,[Rs]:r.CLAMP_TO_EDGE,[cm]:r.MIRRORED_REPEAT},Ne={[Bi]:r.NEAREST,[_b]:r.NEAREST_MIPMAP_NEAREST,[Vh]:r.NEAREST_MIPMAP_LINEAR,[oi]:r.LINEAR,[Jp]:r.LINEAR_MIPMAP_NEAREST,[Io]:r.LINEAR_MIPMAP_LINEAR},X={[LE]:r.NEVER,[zE]:r.ALWAYS,[UE]:r.LESS,[Ty]:r.LEQUAL,[IE]:r.EQUAL,[Ay]:r.GEQUAL,[OE]:r.GREATER,[PE]:r.NOTEQUAL};function oe(G,O){if(O.type===is&&e.has("OES_texture_float_linear")===!1&&(O.magFilter===oi||O.magFilter===Jp||O.magFilter===Vh||O.magFilter===Io||O.minFilter===oi||O.minFilter===Jp||O.minFilter===Vh||O.minFilter===Io)&&ft("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),r.texParameteri(G,r.TEXTURE_WRAP_S,be[O.wrapS]),r.texParameteri(G,r.TEXTURE_WRAP_T,be[O.wrapT]),(G===r.TEXTURE_3D||G===r.TEXTURE_2D_ARRAY)&&r.texParameteri(G,r.TEXTURE_WRAP_R,be[O.wrapR]),r.texParameteri(G,r.TEXTURE_MAG_FILTER,Ne[O.magFilter]),r.texParameteri(G,r.TEXTURE_MIN_FILTER,Ne[O.minFilter]),O.compareFunction&&(r.texParameteri(G,r.TEXTURE_COMPARE_MODE,r.COMPARE_REF_TO_TEXTURE),r.texParameteri(G,r.TEXTURE_COMPARE_FUNC,X[O.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(O.magFilter===Bi||O.minFilter!==Vh&&O.minFilter!==Io||O.type===is&&e.has("OES_texture_float_linear")===!1)return;if(O.anisotropy>1||n.get(O).__currentAnisotropy){const ae=e.get("EXT_texture_filter_anisotropic");r.texParameterf(G,ae.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(O.anisotropy,s.getMaxAnisotropy())),n.get(O).__currentAnisotropy=O.anisotropy}}}function Ae(G,O){let ae=!1;G.__webglInit===void 0&&(G.__webglInit=!0,O.addEventListener("dispose",z));const Te=O.source;let Ie=b.get(Te);Ie===void 0&&(Ie={},b.set(Te,Ie));const Ee=fe(O);if(Ee!==G.__cacheKey){Ie[Ee]===void 0&&(Ie[Ee]={texture:r.createTexture(),usedTimes:0},f.memory.textures++,ae=!0),Ie[Ee].usedTimes++;const dt=Ie[G.__cacheKey];dt!==void 0&&(Ie[G.__cacheKey].usedTimes--,dt.usedTimes===0&&I(O)),G.__cacheKey=Ee,G.__webglTexture=Ie[Ee].texture}return ae}function Fe(G,O,ae){return Math.floor(Math.floor(G/ae)/O)}function lt(G,O,ae,Te){const Ee=G.updateRanges;if(Ee.length===0)t.texSubImage2D(r.TEXTURE_2D,0,0,0,O.width,O.height,ae,Te,O.data);else{Ee.sort((Ve,Ze)=>Ve.start-Ze.start);let dt=0;for(let Ve=1;Ve0){J&&je&&t.texStorage2D(r.TEXTURE_2D,at,K,et[0].width,et[0].height);for(let Xe=0,Ue=et.length;Xe0){const Ye=tb(me.width,me.height,O.format,O.type);for(const Ct of O.layerUpdates){const Jt=me.data.subarray(Ct*Ye/me.data.BYTES_PER_ELEMENT,(Ct+1)*Ye/me.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,Xe,0,0,Ct,me.width,me.height,1,Ze,Jt)}O.clearLayerUpdates()}else t.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,Xe,0,0,0,me.width,me.height,Ve.depth,Ze,me.data)}else t.compressedTexImage3D(r.TEXTURE_2D_ARRAY,Xe,K,me.width,me.height,Ve.depth,0,me.data,0,0);else ft("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else J?Ge&&t.texSubImage3D(r.TEXTURE_2D_ARRAY,Xe,0,0,0,me.width,me.height,Ve.depth,Ze,ct,me.data):t.texImage3D(r.TEXTURE_2D_ARRAY,Xe,K,me.width,me.height,Ve.depth,0,Ze,ct,me.data)}else{J&&je&&t.texStorage2D(r.TEXTURE_2D,at,K,et[0].width,et[0].height);for(let Xe=0,Ue=et.length;Xe0){const Xe=tb(Ve.width,Ve.height,O.format,O.type);for(const Ue of O.layerUpdates){const Ye=Ve.data.subarray(Ue*Xe/Ve.data.BYTES_PER_ELEMENT,(Ue+1)*Xe/Ve.data.BYTES_PER_ELEMENT);t.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,Ue,Ve.width,Ve.height,1,Ze,ct,Ye)}O.clearLayerUpdates()}else t.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,0,Ve.width,Ve.height,Ve.depth,Ze,ct,Ve.data)}else t.texImage3D(r.TEXTURE_2D_ARRAY,0,K,Ve.width,Ve.height,Ve.depth,0,Ze,ct,Ve.data);else if(O.isData3DTexture)J?(je&&t.texStorage3D(r.TEXTURE_3D,at,K,Ve.width,Ve.height,Ve.depth),Ge&&t.texSubImage3D(r.TEXTURE_3D,0,0,0,0,Ve.width,Ve.height,Ve.depth,Ze,ct,Ve.data)):t.texImage3D(r.TEXTURE_3D,0,K,Ve.width,Ve.height,Ve.depth,0,Ze,ct,Ve.data);else if(O.isFramebufferTexture){if(je)if(J)t.texStorage2D(r.TEXTURE_2D,at,K,Ve.width,Ve.height);else{let Xe=Ve.width,Ue=Ve.height;for(let Ye=0;Ye>=1,Ue>>=1}}else if(et.length>0){if(J&&je){const Xe=Qe(et[0]);t.texStorage2D(r.TEXTURE_2D,at,K,Xe.width,Xe.height)}for(let Xe=0,Ue=et.length;Xe0&&at++;const Ue=Qe(Ze[0]);t.texStorage2D(r.TEXTURE_CUBE_MAP,at,et,Ue.width,Ue.height)}for(let Ue=0;Ue<6;Ue++)if(Ve){J?Ge&&t.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+Ue,0,0,0,Ze[Ue].width,Ze[Ue].height,K,me,Ze[Ue].data):t.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+Ue,0,et,Ze[Ue].width,Ze[Ue].height,0,K,me,Ze[Ue].data);for(let Ye=0;Ye>Ee),ct=Math.max(1,O.height>>Ee);Ie===r.TEXTURE_3D||Ie===r.TEXTURE_2D_ARRAY?t.texImage3D(Ie,Ee,vt,Ze,ct,O.depth,0,dt,Ke,null):t.texImage2D(Ie,Ee,vt,Ze,ct,0,dt,Ke,null)}t.bindFramebuffer(r.FRAMEBUFFER,G),Et(O)?h.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,Te,Ie,Ve.__webglTexture,0,Q(O)):(Ie===r.TEXTURE_2D||Ie>=r.TEXTURE_CUBE_MAP_POSITIVE_X&&Ie<=r.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&r.framebufferTexture2D(r.FRAMEBUFFER,Te,Ie,Ve.__webglTexture,Ee),t.bindFramebuffer(r.FRAMEBUFFER,null)}function st(G,O,ae){if(r.bindRenderbuffer(r.RENDERBUFFER,G),O.depthBuffer){const Te=O.depthTexture,Ie=Te&&Te.isDepthTexture?Te.type:null,Ee=U(O.stencilBuffer,Ie),dt=O.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT;Et(O)?h.renderbufferStorageMultisampleEXT(r.RENDERBUFFER,Q(O),Ee,O.width,O.height):ae?r.renderbufferStorageMultisample(r.RENDERBUFFER,Q(O),Ee,O.width,O.height):r.renderbufferStorage(r.RENDERBUFFER,Ee,O.width,O.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,dt,r.RENDERBUFFER,G)}else{const Te=O.textures;for(let Ie=0;Ie{delete O.__boundDepthTexture,delete O.__depthDisposeCallback,Te.removeEventListener("dispose",Ie)};Te.addEventListener("dispose",Ie),O.__depthDisposeCallback=Ie}O.__boundDepthTexture=Te}if(G.depthTexture&&!O.__autoAllocateDepthBuffer)if(ae)for(let Te=0;Te<6;Te++)ht(O.__webglFramebuffer[Te],G,Te);else{const Te=G.texture.mipmaps;Te&&Te.length>0?ht(O.__webglFramebuffer[0],G,0):ht(O.__webglFramebuffer,G,0)}else if(ae){O.__webglDepthbuffer=[];for(let Te=0;Te<6;Te++)if(t.bindFramebuffer(r.FRAMEBUFFER,O.__webglFramebuffer[Te]),O.__webglDepthbuffer[Te]===void 0)O.__webglDepthbuffer[Te]=r.createRenderbuffer(),st(O.__webglDepthbuffer[Te],G,!1);else{const Ie=G.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,Ee=O.__webglDepthbuffer[Te];r.bindRenderbuffer(r.RENDERBUFFER,Ee),r.framebufferRenderbuffer(r.FRAMEBUFFER,Ie,r.RENDERBUFFER,Ee)}}else{const Te=G.texture.mipmaps;if(Te&&Te.length>0?t.bindFramebuffer(r.FRAMEBUFFER,O.__webglFramebuffer[0]):t.bindFramebuffer(r.FRAMEBUFFER,O.__webglFramebuffer),O.__webglDepthbuffer===void 0)O.__webglDepthbuffer=r.createRenderbuffer(),st(O.__webglDepthbuffer,G,!1);else{const Ie=G.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,Ee=O.__webglDepthbuffer;r.bindRenderbuffer(r.RENDERBUFFER,Ee),r.framebufferRenderbuffer(r.FRAMEBUFFER,Ie,r.RENDERBUFFER,Ee)}}t.bindFramebuffer(r.FRAMEBUFFER,null)}function tn(G,O,ae){const Te=n.get(G);O!==void 0&&tt(Te.__webglFramebuffer,G,G.texture,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,0),ae!==void 0&&jt(G)}function Nt(G){const O=G.texture,ae=n.get(G),Te=n.get(O);G.addEventListener("dispose",H);const Ie=G.textures,Ee=G.isWebGLCubeRenderTarget===!0,dt=Ie.length>1;if(dt||(Te.__webglTexture===void 0&&(Te.__webglTexture=r.createTexture()),Te.__version=O.version,f.memory.textures++),Ee){ae.__webglFramebuffer=[];for(let Ke=0;Ke<6;Ke++)if(O.mipmaps&&O.mipmaps.length>0){ae.__webglFramebuffer[Ke]=[];for(let vt=0;vt0){ae.__webglFramebuffer=[];for(let Ke=0;Ke0&&Et(G)===!1){ae.__webglMultisampledFramebuffer=r.createFramebuffer(),ae.__webglColorRenderbuffer=[],t.bindFramebuffer(r.FRAMEBUFFER,ae.__webglMultisampledFramebuffer);for(let Ke=0;Ke0)for(let vt=0;vt0)for(let vt=0;vt0){if(Et(G)===!1){const O=G.textures,ae=G.width,Te=G.height;let Ie=r.COLOR_BUFFER_BIT;const Ee=G.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,dt=n.get(G),Ke=O.length>1;if(Ke)for(let Dt=0;Dt0?t.bindFramebuffer(r.DRAW_FRAMEBUFFER,dt.__webglFramebuffer[0]):t.bindFramebuffer(r.DRAW_FRAMEBUFFER,dt.__webglFramebuffer);for(let Dt=0;Dt0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&O.__useRenderToTexture!==!1}function ot(G){const O=f.render.frame;_.get(G)!==O&&(_.set(G,O),G.update())}function Tt(G,O){const ae=G.colorSpace,Te=G.format,Ie=G.type;return G.isCompressedTexture===!0||G.isVideoTexture===!0||ae!==zu&&ae!==Cl&&(Sn.getTransfer(ae)===zn?(Te!==Oa||Ie!==ts)&&ft("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):Rt("WebGLTextures: Unsupported texture color space:",ae)),O}function Qe(G){return typeof HTMLImageElement<"u"&&G instanceof HTMLImageElement?(g.width=G.naturalWidth||G.width,g.height=G.naturalHeight||G.height):typeof VideoFrame<"u"&&G instanceof VideoFrame?(g.width=G.displayWidth,g.height=G.displayHeight):(g.width=G.width,g.height=G.height),g}this.allocateTextureUnit=te,this.resetTextureUnits=se,this.setTexture2D=pe,this.setTexture2DArray=Y,this.setTexture3D=q,this.setTextureCube=ne,this.rebindTextures=tn,this.setupRenderTarget=Nt,this.updateRenderTargetMipmap=Le,this.updateMultisampleRenderTarget=nt,this.setupDepthRenderbuffer=jt,this.setupFrameBufferTexture=tt,this.useMultisampledRTT=Et,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function qT(r,e){function t(n,s=Cl){let u;const f=Sn.getTransfer(s);if(n===ts)return r.UNSIGNED_BYTE;if(n===_y)return r.UNSIGNED_SHORT_4_4_4_4;if(n===xy)return r.UNSIGNED_SHORT_5_5_5_1;if(n===Sb)return r.UNSIGNED_INT_5_9_9_9_REV;if(n===Mb)return r.UNSIGNED_INT_10F_11F_11F_REV;if(n===xb)return r.BYTE;if(n===bb)return r.SHORT;if(n===qh)return r.UNSIGNED_SHORT;if(n===yy)return r.INT;if(n===vr)return r.UNSIGNED_INT;if(n===is)return r.FLOAT;if(n===Bo)return r.HALF_FLOAT;if(n===Eb)return r.ALPHA;if(n===Tb)return r.RGB;if(n===Oa)return r.RGBA;if(n===Fo)return r.DEPTH_COMPONENT;if(n===Uu)return r.DEPTH_STENCIL;if(n===by)return r.RED;if(n===wm)return r.RED_INTEGER;if(n===tf)return r.RG;if(n===Sy)return r.RG_INTEGER;if(n===My)return r.RGBA_INTEGER;if(n===$p||n===em||n===tm||n===nm)if(f===zn)if(u=e.get("WEBGL_compressed_texture_s3tc_srgb"),u!==null){if(n===$p)return u.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===em)return u.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===tm)return u.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===nm)return u.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(u=e.get("WEBGL_compressed_texture_s3tc"),u!==null){if(n===$p)return u.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===em)return u.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===tm)return u.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===nm)return u.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===Av||n===wv||n===Cv||n===Rv)if(u=e.get("WEBGL_compressed_texture_pvrtc"),u!==null){if(n===Av)return u.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===wv)return u.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Cv)return u.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Rv)return u.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===Nv||n===Dv||n===Lv||n===Uv||n===Iv||n===Ov||n===Pv)if(u=e.get("WEBGL_compressed_texture_etc"),u!==null){if(n===Nv||n===Dv)return f===zn?u.COMPRESSED_SRGB8_ETC2:u.COMPRESSED_RGB8_ETC2;if(n===Lv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:u.COMPRESSED_RGBA8_ETC2_EAC;if(n===Uv)return u.COMPRESSED_R11_EAC;if(n===Iv)return u.COMPRESSED_SIGNED_R11_EAC;if(n===Ov)return u.COMPRESSED_RG11_EAC;if(n===Pv)return u.COMPRESSED_SIGNED_RG11_EAC}else return null;if(n===zv||n===Bv||n===Fv||n===kv||n===Vv||n===Hv||n===Gv||n===Xv||n===Wv||n===qv||n===jv||n===Yv||n===Zv||n===Qv)if(u=e.get("WEBGL_compressed_texture_astc"),u!==null){if(n===zv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:u.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Bv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:u.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===Fv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:u.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===kv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:u.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Vv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:u.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Hv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:u.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Gv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:u.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Xv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:u.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Wv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:u.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===qv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:u.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===jv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:u.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Yv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:u.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Zv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:u.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===Qv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:u.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===Kv||n===Jv||n===$v)if(u=e.get("EXT_texture_compression_bptc"),u!==null){if(n===Kv)return f===zn?u.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:u.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Jv)return u.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===$v)return u.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===ey||n===ty||n===ny||n===iy)if(u=e.get("EXT_texture_compression_rgtc"),u!==null){if(n===ey)return u.COMPRESSED_RED_RGTC1_EXT;if(n===ty)return u.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===ny)return u.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===iy)return u.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===jh?r.UNSIGNED_INT_24_8:r[n]!==void 0?r[n]:null}return{convert:t}}const RP=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,NP=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`;class DP{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){const n=new Pb(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=n}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new yr({vertexShader:RP,fragmentShader:NP,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Yi(new sd(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class LP extends ko{constructor(e,t){super();const n=this;let s=null,u=1,f=null,h="local-floor",m=1,g=null,_=null,x=null,b=null,M=null,A=null;const R=typeof XRWebGLBinding<"u",w=new DP,E={},N=t.getContextAttributes();let D=null,U=null;const B=[],z=[],H=new ze;let W=null;const I=new zi;I.viewport=new jn;const P=new zi;P.viewport=new jn;const Z=[I,P],se=new OT;let te=null,fe=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(de){let Re=B[de];return Re===void 0&&(Re=new pv,B[de]=Re),Re.getTargetRaySpace()},this.getControllerGrip=function(de){let Re=B[de];return Re===void 0&&(Re=new pv,B[de]=Re),Re.getGripSpace()},this.getHand=function(de){let Re=B[de];return Re===void 0&&(Re=new pv,B[de]=Re),Re.getHandSpace()};function pe(de){const Re=z.indexOf(de.inputSource);if(Re===-1)return;const tt=B[Re];tt!==void 0&&(tt.update(de.inputSource,de.frame,g||f),tt.dispatchEvent({type:de.type,data:de.inputSource}))}function Y(){s.removeEventListener("select",pe),s.removeEventListener("selectstart",pe),s.removeEventListener("selectend",pe),s.removeEventListener("squeeze",pe),s.removeEventListener("squeezestart",pe),s.removeEventListener("squeezeend",pe),s.removeEventListener("end",Y),s.removeEventListener("inputsourceschange",q);for(let de=0;de=0&&(z[st]=null,B[st].disconnect(tt))}for(let Re=0;Re=z.length){z.push(tt),st=jt;break}else if(z[jt]===null){z[jt]=tt,st=jt;break}if(st===-1)break}const ht=B[st];ht&&ht.connect(tt)}}const ne=new j,be=new j;function Ne(de,Re,tt){ne.setFromMatrixPosition(Re.matrixWorld),be.setFromMatrixPosition(tt.matrixWorld);const st=ne.distanceTo(be),ht=Re.projectionMatrix.elements,jt=tt.projectionMatrix.elements,tn=ht[14]/(ht[10]-1),Nt=ht[14]/(ht[10]+1),Le=(ht[9]+1)/ht[5],He=(ht[9]-1)/ht[5],Oe=(ht[8]-1)/ht[0],nt=(jt[8]+1)/jt[0],Q=tn*Oe,Et=tn*nt,ot=st/(-Oe+nt),Tt=ot*-Oe;if(Re.matrixWorld.decompose(de.position,de.quaternion,de.scale),de.translateX(Tt),de.translateZ(ot),de.matrixWorld.compose(de.position,de.quaternion,de.scale),de.matrixWorldInverse.copy(de.matrixWorld).invert(),ht[10]===-1)de.projectionMatrix.copy(Re.projectionMatrix),de.projectionMatrixInverse.copy(Re.projectionMatrixInverse);else{const Qe=tn+ot,G=Nt+ot,O=Q-Tt,ae=Et+(st-Tt),Te=Le*Nt/G*Qe,Ie=He*Nt/G*Qe;de.projectionMatrix.makePerspective(O,ae,Te,Ie,Qe,G),de.projectionMatrixInverse.copy(de.projectionMatrix).invert()}}function X(de,Re){Re===null?de.matrixWorld.copy(de.matrix):de.matrixWorld.multiplyMatrices(Re.matrixWorld,de.matrix),de.matrixWorldInverse.copy(de.matrixWorld).invert()}this.updateCamera=function(de){if(s===null)return;let Re=de.near,tt=de.far;w.texture!==null&&(w.depthNear>0&&(Re=w.depthNear),w.depthFar>0&&(tt=w.depthFar)),se.near=P.near=I.near=Re,se.far=P.far=I.far=tt,(te!==se.near||fe!==se.far)&&(s.updateRenderState({depthNear:se.near,depthFar:se.far}),te=se.near,fe=se.far),se.layers.mask=de.layers.mask|6,I.layers.mask=se.layers.mask&3,P.layers.mask=se.layers.mask&5;const st=de.parent,ht=se.cameras;X(se,st);for(let jt=0;jt0&&(w.alphaTest.value=E.alphaTest);const N=e.get(E),D=N.envMap,U=N.envMapRotation;D&&(w.envMap.value=D,Hc.copy(U),Hc.x*=-1,Hc.y*=-1,Hc.z*=-1,D.isCubeTexture&&D.isRenderTargetTexture===!1&&(Hc.y*=-1,Hc.z*=-1),w.envMapRotation.value.setFromMatrix4(UP.makeRotationFromEuler(Hc)),w.flipEnvMap.value=D.isCubeTexture&&D.isRenderTargetTexture===!1?-1:1,w.reflectivity.value=E.reflectivity,w.ior.value=E.ior,w.refractionRatio.value=E.refractionRatio),E.lightMap&&(w.lightMap.value=E.lightMap,w.lightMapIntensity.value=E.lightMapIntensity,t(E.lightMap,w.lightMapTransform)),E.aoMap&&(w.aoMap.value=E.aoMap,w.aoMapIntensity.value=E.aoMapIntensity,t(E.aoMap,w.aoMapTransform))}function f(w,E){w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,E.map&&(w.map.value=E.map,t(E.map,w.mapTransform))}function h(w,E){w.dashSize.value=E.dashSize,w.totalSize.value=E.dashSize+E.gapSize,w.scale.value=E.scale}function m(w,E,N,D){w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,w.size.value=E.size*N,w.scale.value=D*.5,E.map&&(w.map.value=E.map,t(E.map,w.uvTransform)),E.alphaMap&&(w.alphaMap.value=E.alphaMap,t(E.alphaMap,w.alphaMapTransform)),E.alphaTest>0&&(w.alphaTest.value=E.alphaTest)}function g(w,E){w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,w.rotation.value=E.rotation,E.map&&(w.map.value=E.map,t(E.map,w.mapTransform)),E.alphaMap&&(w.alphaMap.value=E.alphaMap,t(E.alphaMap,w.alphaMapTransform)),E.alphaTest>0&&(w.alphaTest.value=E.alphaTest)}function _(w,E){w.specular.value.copy(E.specular),w.shininess.value=Math.max(E.shininess,1e-4)}function x(w,E){E.gradientMap&&(w.gradientMap.value=E.gradientMap)}function b(w,E){w.metalness.value=E.metalness,E.metalnessMap&&(w.metalnessMap.value=E.metalnessMap,t(E.metalnessMap,w.metalnessMapTransform)),w.roughness.value=E.roughness,E.roughnessMap&&(w.roughnessMap.value=E.roughnessMap,t(E.roughnessMap,w.roughnessMapTransform)),E.envMap&&(w.envMapIntensity.value=E.envMapIntensity)}function M(w,E,N){w.ior.value=E.ior,E.sheen>0&&(w.sheenColor.value.copy(E.sheenColor).multiplyScalar(E.sheen),w.sheenRoughness.value=E.sheenRoughness,E.sheenColorMap&&(w.sheenColorMap.value=E.sheenColorMap,t(E.sheenColorMap,w.sheenColorMapTransform)),E.sheenRoughnessMap&&(w.sheenRoughnessMap.value=E.sheenRoughnessMap,t(E.sheenRoughnessMap,w.sheenRoughnessMapTransform))),E.clearcoat>0&&(w.clearcoat.value=E.clearcoat,w.clearcoatRoughness.value=E.clearcoatRoughness,E.clearcoatMap&&(w.clearcoatMap.value=E.clearcoatMap,t(E.clearcoatMap,w.clearcoatMapTransform)),E.clearcoatRoughnessMap&&(w.clearcoatRoughnessMap.value=E.clearcoatRoughnessMap,t(E.clearcoatRoughnessMap,w.clearcoatRoughnessMapTransform)),E.clearcoatNormalMap&&(w.clearcoatNormalMap.value=E.clearcoatNormalMap,t(E.clearcoatNormalMap,w.clearcoatNormalMapTransform),w.clearcoatNormalScale.value.copy(E.clearcoatNormalScale),E.side===as&&w.clearcoatNormalScale.value.negate())),E.dispersion>0&&(w.dispersion.value=E.dispersion),E.iridescence>0&&(w.iridescence.value=E.iridescence,w.iridescenceIOR.value=E.iridescenceIOR,w.iridescenceThicknessMinimum.value=E.iridescenceThicknessRange[0],w.iridescenceThicknessMaximum.value=E.iridescenceThicknessRange[1],E.iridescenceMap&&(w.iridescenceMap.value=E.iridescenceMap,t(E.iridescenceMap,w.iridescenceMapTransform)),E.iridescenceThicknessMap&&(w.iridescenceThicknessMap.value=E.iridescenceThicknessMap,t(E.iridescenceThicknessMap,w.iridescenceThicknessMapTransform))),E.transmission>0&&(w.transmission.value=E.transmission,w.transmissionSamplerMap.value=N.texture,w.transmissionSamplerSize.value.set(N.width,N.height),E.transmissionMap&&(w.transmissionMap.value=E.transmissionMap,t(E.transmissionMap,w.transmissionMapTransform)),w.thickness.value=E.thickness,E.thicknessMap&&(w.thicknessMap.value=E.thicknessMap,t(E.thicknessMap,w.thicknessMapTransform)),w.attenuationDistance.value=E.attenuationDistance,w.attenuationColor.value.copy(E.attenuationColor)),E.anisotropy>0&&(w.anisotropyVector.value.set(E.anisotropy*Math.cos(E.anisotropyRotation),E.anisotropy*Math.sin(E.anisotropyRotation)),E.anisotropyMap&&(w.anisotropyMap.value=E.anisotropyMap,t(E.anisotropyMap,w.anisotropyMapTransform))),w.specularIntensity.value=E.specularIntensity,w.specularColor.value.copy(E.specularColor),E.specularColorMap&&(w.specularColorMap.value=E.specularColorMap,t(E.specularColorMap,w.specularColorMapTransform)),E.specularIntensityMap&&(w.specularIntensityMap.value=E.specularIntensityMap,t(E.specularIntensityMap,w.specularIntensityMapTransform))}function A(w,E){E.matcap&&(w.matcap.value=E.matcap)}function R(w,E){const N=e.get(E).light;w.referencePosition.value.setFromMatrixPosition(N.matrixWorld),w.nearDistance.value=N.shadow.camera.near,w.farDistance.value=N.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:s}}function OP(r,e,t,n){let s={},u={},f=[];const h=r.getParameter(r.MAX_UNIFORM_BUFFER_BINDINGS);function m(N,D){const U=D.program;n.uniformBlockBinding(N,U)}function g(N,D){let U=s[N.id];U===void 0&&(A(N),U=_(N),s[N.id]=U,N.addEventListener("dispose",w));const B=D.program;n.updateUBOMapping(N,B);const z=e.render.frame;u[N.id]!==z&&(b(N),u[N.id]=z)}function _(N){const D=x();N.__bindingPointIndex=D;const U=r.createBuffer(),B=N.__size,z=N.usage;return r.bindBuffer(r.UNIFORM_BUFFER,U),r.bufferData(r.UNIFORM_BUFFER,B,z),r.bindBuffer(r.UNIFORM_BUFFER,null),r.bindBufferBase(r.UNIFORM_BUFFER,D,U),U}function x(){for(let N=0;N0&&(U+=B-z),N.__size=U,N.__cache={},this}function R(N){const D={boundary:0,storage:0};return typeof N=="number"||typeof N=="boolean"?(D.boundary=4,D.storage=4):N.isVector2?(D.boundary=8,D.storage=8):N.isVector3||N.isColor?(D.boundary=16,D.storage=12):N.isVector4?(D.boundary=16,D.storage=16):N.isMatrix3?(D.boundary=48,D.storage=48):N.isMatrix4?(D.boundary=64,D.storage=64):N.isTexture?ft("WebGLRenderer: Texture samplers can not be part of an uniforms group."):ft("WebGLRenderer: Unsupported uniform value type.",N),D}function w(N){const D=N.target;D.removeEventListener("dispose",w);const U=f.indexOf(D.__bindingPointIndex);f.splice(U,1),r.deleteBuffer(s[D.id]),delete s[D.id],delete u[D.id]}function E(){for(const N in s)r.deleteBuffer(s[N]);f=[],s={},u={}}return{bind:m,update:g,dispose:E}}const PP=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]);let Lo=null;function zP(){return Lo===null&&(Lo=new Yr(PP,16,16,tf,Bo),Lo.name="DFG_LUT",Lo.minFilter=oi,Lo.magFilter=oi,Lo.wrapS=Rs,Lo.wrapT=Rs,Lo.generateMipmaps=!1,Lo.needsUpdate=!0),Lo}class jT{constructor(e={}){const{canvas:t=kE(),context:n=null,depth:s=!0,stencil:u=!1,alpha:f=!1,antialias:h=!1,premultipliedAlpha:m=!0,preserveDrawingBuffer:g=!1,powerPreference:_="default",failIfMajorPerformanceCaveat:x=!1,reversedDepthBuffer:b=!1,outputBufferType:M=ts}=e;this.isWebGLRenderer=!0;let A;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");A=n.getContextAttributes().alpha}else A=f;const R=M,w=new Set([My,Sy,wm]),E=new Set([ts,vr,qh,jh,_y,xy]),N=new Uint32Array(4),D=new Int32Array(4);let U=null,B=null;const z=[],H=[];let W=null;this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=gr,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const I=this;let P=!1;this._outputColorSpace=Ia;let Z=0,se=0,te=null,fe=-1,pe=null;const Y=new jn,q=new jn;let ne=null;const be=new yt(0);let Ne=0,X=t.width,oe=t.height,Ae=1,Fe=null,lt=null;const de=new jn(0,0,X,oe),Re=new jn(0,0,X,oe);let tt=!1;const st=new ad;let ht=!1,jt=!1;const tn=new Xt,Nt=new j,Le=new jn,He={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Oe=!1;function nt(){return te===null?Ae:1}let Q=n;function Et(k,re){return t.getContext(k,re)}try{const k={alpha:!0,depth:s,stencil:u,antialias:h,premultipliedAlpha:m,preserveDrawingBuffer:g,powerPreference:_,failIfMajorPerformanceCaveat:x};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${my}`),t.addEventListener("webglcontextlost",Ct,!1),t.addEventListener("webglcontextrestored",Jt,!1),t.addEventListener("webglcontextcreationerror",nn,!1),Q===null){const re="webgl2";if(Q=Et(re,k),Q===null)throw Et(re)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(k){throw Rt("WebGLRenderer: "+k.message),k}let ot,Tt,Qe,G,O,ae,Te,Ie,Ee,dt,Ke,vt,Dt,Ve,Ze,ct,K,me,et,J,je,Ge,at,Xe;function Ue(){ot=new BI(Q),ot.init(),Ge=new qT(Q,ot),Tt=new RI(Q,ot,e,Ge),Qe=new wP(Q,ot),Tt.reversedDepthBuffer&&b&&Qe.buffers.depth.setReversed(!0),G=new VI(Q),O=new hP,ae=new CP(Q,ot,Qe,O,Tt,Ge,G),Te=new DI(I),Ie=new zI(I),Ee=new WD(Q),at=new wI(Q,Ee),dt=new FI(Q,Ee,G,at),Ke=new GI(Q,dt,Ee,G),et=new HI(Q,Tt,ae),ct=new NI(O),vt=new fP(I,Te,Ie,ot,Tt,at,ct),Dt=new IP(I,O),Ve=new pP,Ze=new xP(ot),me=new AI(I,Te,Ie,Qe,Ke,A,m),K=new TP(I,Ke,Tt),Xe=new OP(Q,G,Tt,Qe),J=new CI(Q,ot,G),je=new kI(Q,ot,G),G.programs=vt.programs,I.capabilities=Tt,I.extensions=ot,I.properties=O,I.renderLists=Ve,I.shadowMap=K,I.state=Qe,I.info=G}Ue(),R!==ts&&(W=new WI(R,t.width,t.height,s,u));const Ye=new LP(I,Q);this.xr=Ye,this.getContext=function(){return Q},this.getContextAttributes=function(){return Q.getContextAttributes()},this.forceContextLoss=function(){const k=ot.get("WEBGL_lose_context");k&&k.loseContext()},this.forceContextRestore=function(){const k=ot.get("WEBGL_lose_context");k&&k.restoreContext()},this.getPixelRatio=function(){return Ae},this.setPixelRatio=function(k){k!==void 0&&(Ae=k,this.setSize(X,oe,!1))},this.getSize=function(k){return k.set(X,oe)},this.setSize=function(k,re,Se=!0){if(Ye.isPresenting){ft("WebGLRenderer: Can't change size while VR device is presenting.");return}X=k,oe=re,t.width=Math.floor(k*Ae),t.height=Math.floor(re*Ae),Se===!0&&(t.style.width=k+"px",t.style.height=re+"px"),W!==null&&W.setSize(t.width,t.height),this.setViewport(0,0,k,re)},this.getDrawingBufferSize=function(k){return k.set(X*Ae,oe*Ae).floor()},this.setDrawingBufferSize=function(k,re,Se){X=k,oe=re,Ae=Se,t.width=Math.floor(k*Se),t.height=Math.floor(re*Se),this.setViewport(0,0,k,re)},this.setEffects=function(k){if(R===ts){console.error("THREE.WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.");return}if(k){for(let re=0;re{function Je(){if(ye.forEach(function(mt){O.get(mt).currentProgram.isReady()&&ye.delete(mt)}),ye.size===0){ue(k);return}setTimeout(Je,10)}ot.get("KHR_parallel_shader_compile")!==null?Je():setTimeout(Je,10)})};let Ho=null;function Jr(k){Ho&&Ho(k)}function xr(){na.stop()}function Go(){na.start()}const na=new VT;na.setAnimationLoop(Jr),typeof self<"u"&&na.setContext(self),this.setAnimationLoop=function(k){Ho=k,Ye.setAnimationLoop(k),k===null?na.stop():na.start()},Ye.addEventListener("sessionstart",xr),Ye.addEventListener("sessionend",Go),this.render=function(k,re){if(re!==void 0&&re.isCamera!==!0){Rt("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(P===!0)return;const Se=Ye.enabled===!0&&Ye.isPresenting===!0,ye=W!==null&&(te===null||Se)&&W.begin(I,te);if(k.matrixWorldAutoUpdate===!0&&k.updateMatrixWorld(),re.parent===null&&re.matrixWorldAutoUpdate===!0&&re.updateMatrixWorld(),Ye.enabled===!0&&Ye.isPresenting===!0&&(W===null||W.isCompositing()===!1)&&(Ye.cameraAutoUpdate===!0&&Ye.updateCamera(re),re=Ye.getCamera()),k.isScene===!0&&k.onBeforeRender(I,k,re,te),B=Ze.get(k,H.length),B.init(re),H.push(B),tn.multiplyMatrices(re.projectionMatrix,re.matrixWorldInverse),st.setFromProjectionMatrix(tn,ks,re.reversedDepth),jt=this.localClippingEnabled,ht=ct.init(this.clippingPlanes,jt),U=Ve.get(k,z.length),U.init(),z.push(U),Ye.enabled===!0&&Ye.isPresenting===!0){const mt=I.xr.getDepthSensingMesh();mt!==null&&Fa(mt,re,-1/0,I.sortObjects)}Fa(k,re,0,I.sortObjects),U.finish(),I.sortObjects===!0&&U.sort(Fe,lt),Oe=Ye.enabled===!1||Ye.isPresenting===!1||Ye.hasDepthSensing()===!1,Oe&&me.addToRenderList(U,k),this.info.render.frame++,ht===!0&&ct.beginShadows();const ue=B.state.shadowsArray;if(K.render(ue,k,re),ht===!0&&ct.endShadows(),this.info.autoReset===!0&&this.info.reset(),(ye&&W.hasRenderPass())===!1){const mt=U.opaque,qe=U.transmissive;if(B.setupLights(),re.isArrayCamera){const _t=re.cameras;if(qe.length>0)for(let xt=0,Lt=_t.length;xt0&&Ri(mt,qe,k,re),Oe&&me.render(k),$n(U,k,re)}te!==null&&se===0&&(ae.updateMultisampleRenderTarget(te),ae.updateRenderTargetMipmap(te)),ye&&W.end(I),k.isScene===!0&&k.onAfterRender(I,k,re),at.resetDefaultState(),fe=-1,pe=null,H.pop(),H.length>0?(B=H[H.length-1],ht===!0&&ct.setGlobalState(I.clippingPlanes,B.state.camera)):B=null,z.pop(),z.length>0?U=z[z.length-1]:U=null};function Fa(k,re,Se,ye){if(k.visible===!1)return;if(k.layers.test(re.layers)){if(k.isGroup)Se=k.renderOrder;else if(k.isLOD)k.autoUpdate===!0&&k.update(re);else if(k.isLight)B.pushLight(k),k.castShadow&&B.pushShadow(k);else if(k.isSprite){if(!k.frustumCulled||st.intersectsSprite(k)){ye&&Le.setFromMatrixPosition(k.matrixWorld).applyMatrix4(tn);const mt=Ke.update(k),qe=k.material;qe.visible&&U.push(k,mt,qe,Se,Le.z,null)}}else if((k.isMesh||k.isLine||k.isPoints)&&(!k.frustumCulled||st.intersectsObject(k))){const mt=Ke.update(k),qe=k.material;if(ye&&(k.boundingSphere!==void 0?(k.boundingSphere===null&&k.computeBoundingSphere(),Le.copy(k.boundingSphere.center)):(mt.boundingSphere===null&&mt.computeBoundingSphere(),Le.copy(mt.boundingSphere.center)),Le.applyMatrix4(k.matrixWorld).applyMatrix4(tn)),Array.isArray(qe)){const _t=mt.groups;for(let xt=0,Lt=_t.length;xt0&&ka(ue,re,Se),Je.length>0&&ka(Je,re,Se),mt.length>0&&ka(mt,re,Se),Qe.buffers.depth.setTest(!0),Qe.buffers.depth.setMask(!0),Qe.buffers.color.setMask(!0),Qe.setPolygonOffset(!1)}function Ri(k,re,Se,ye){if((Se.isScene===!0?Se.overrideMaterial:null)!==null)return;if(B.state.transmissionRenderTarget[ye.id]===void 0){const Pt=ot.has("EXT_color_buffer_half_float")||ot.has("EXT_color_buffer_float");B.state.transmissionRenderTarget[ye.id]=new Hs(1,1,{generateMipmaps:!0,type:Pt?Bo:ts,minFilter:Io,samples:Tt.samples,stencilBuffer:u,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Sn.workingColorSpace})}const Je=B.state.transmissionRenderTarget[ye.id],mt=ye.viewport||Y;Je.setSize(mt.z*I.transmissionResolutionScale,mt.w*I.transmissionResolutionScale);const qe=I.getRenderTarget(),_t=I.getActiveCubeFace(),xt=I.getActiveMipmapLevel();I.setRenderTarget(Je),I.getClearColor(be),Ne=I.getClearAlpha(),Ne<1&&I.setClearColor(16777215,.5),I.clear(),Oe&&me.render(Se);const Lt=I.toneMapping;I.toneMapping=gr;const St=ye.viewport;if(ye.viewport!==void 0&&(ye.viewport=void 0),B.setupLightsView(ye),ht===!0&&ct.setGlobalState(I.clippingPlanes,ye),ka(k,Se,ye),ae.updateMultisampleRenderTarget(Je),ae.updateRenderTargetMipmap(Je),ot.has("WEBGL_multisampled_render_to_texture")===!1){let Pt=!1;for(let Mn=0,Bn=re.length;Mn0),St=!!Se.morphAttributes.position,Pt=!!Se.morphAttributes.normal,Mn=!!Se.morphAttributes.color;let Bn=gr;ye.toneMapped&&(te===null||te.isXRRenderTarget===!0)&&(Bn=I.toneMapping);const In=Se.morphAttributes.position||Se.morphAttributes.normal||Se.morphAttributes.color,Wt=In!==void 0?In.length:0,ut=O.get(ye),_n=B.state.lights;if(ht===!0&&(jt===!0||k!==pe)){const Fi=k===pe&&ye.id===fe;ct.setState(ye,k,Fi)}let Ft=!1;ye.version===ut.__version?(ut.needsLights&&ut.lightsStateVersion!==_n.state.version||ut.outputColorSpace!==qe||ue.isBatchedMesh&&ut.batching===!1||!ue.isBatchedMesh&&ut.batching===!0||ue.isBatchedMesh&&ut.batchingColor===!0&&ue.colorTexture===null||ue.isBatchedMesh&&ut.batchingColor===!1&&ue.colorTexture!==null||ue.isInstancedMesh&&ut.instancing===!1||!ue.isInstancedMesh&&ut.instancing===!0||ue.isSkinnedMesh&&ut.skinning===!1||!ue.isSkinnedMesh&&ut.skinning===!0||ue.isInstancedMesh&&ut.instancingColor===!0&&ue.instanceColor===null||ue.isInstancedMesh&&ut.instancingColor===!1&&ue.instanceColor!==null||ue.isInstancedMesh&&ut.instancingMorph===!0&&ue.morphTexture===null||ue.isInstancedMesh&&ut.instancingMorph===!1&&ue.morphTexture!==null||ut.envMap!==_t||ye.fog===!0&&ut.fog!==Je||ut.numClippingPlanes!==void 0&&(ut.numClippingPlanes!==ct.numPlanes||ut.numIntersection!==ct.numIntersection)||ut.vertexAlphas!==xt||ut.vertexTangents!==Lt||ut.morphTargets!==St||ut.morphNormals!==Pt||ut.morphColors!==Mn||ut.toneMapping!==Bn||ut.morphTargetsCount!==Wt)&&(Ft=!0):(Ft=!0,ut.__version=ye.version);let xi=ut.currentProgram;Ft===!0&&(xi=Ha(ye,re,ue));let Ls=!1,Wn=!1,la=!1;const An=xi.getUniforms(),Ni=ut.uniforms;if(Qe.useProgram(xi.program)&&(Ls=!0,Wn=!0,la=!0),ye.id!==fe&&(fe=ye.id,Wn=!0),Ls||pe!==k){Qe.buffers.depth.getReversed()&&k.reversedDepth!==!0&&(k._reversedDepth=!0,k.updateProjectionMatrix()),An.setValue(Q,"projectionMatrix",k.projectionMatrix),An.setValue(Q,"viewMatrix",k.matrixWorldInverse);const ki=An.map.cameraPosition;ki!==void 0&&ki.setValue(Q,Nt.setFromMatrixPosition(k.matrixWorld)),Tt.logarithmicDepthBuffer&&An.setValue(Q,"logDepthBufFC",2/(Math.log(k.far+1)/Math.LN2)),(ye.isMeshPhongMaterial||ye.isMeshToonMaterial||ye.isMeshLambertMaterial||ye.isMeshBasicMaterial||ye.isMeshStandardMaterial||ye.isShaderMaterial)&&An.setValue(Q,"isOrthographic",k.isOrthographicCamera===!0),pe!==k&&(pe=k,Wn=!0,la=!0)}if(ut.needsLights&&(_n.state.directionalShadowMap.length>0&&An.setValue(Q,"directionalShadowMap",_n.state.directionalShadowMap,ae),_n.state.spotShadowMap.length>0&&An.setValue(Q,"spotShadowMap",_n.state.spotShadowMap,ae),_n.state.pointShadowMap.length>0&&An.setValue(Q,"pointShadowMap",_n.state.pointShadowMap,ae)),ue.isSkinnedMesh){An.setOptional(Q,ue,"bindMatrix"),An.setOptional(Q,ue,"bindMatrixInverse");const Fi=ue.skeleton;Fi&&(Fi.boneTexture===null&&Fi.computeBoneTexture(),An.setValue(Q,"boneTexture",Fi.boneTexture,ae))}ue.isBatchedMesh&&(An.setOptional(Q,ue,"batchingTexture"),An.setValue(Q,"batchingTexture",ue._matricesTexture,ae),An.setOptional(Q,ue,"batchingIdTexture"),An.setValue(Q,"batchingIdTexture",ue._indirectTexture,ae),An.setOptional(Q,ue,"batchingColorTexture"),ue._colorsTexture!==null&&An.setValue(Q,"batchingColorTexture",ue._colorsTexture,ae));const bi=Se.morphAttributes;if((bi.position!==void 0||bi.normal!==void 0||bi.color!==void 0)&&et.update(ue,Se,xi),(Wn||ut.receiveShadow!==ue.receiveShadow)&&(ut.receiveShadow=ue.receiveShadow,An.setValue(Q,"receiveShadow",ue.receiveShadow)),ye.isMeshGouraudMaterial&&ye.envMap!==null&&(Ni.envMap.value=_t,Ni.flipEnvMap.value=_t.isCubeTexture&&_t.isRenderTargetTexture===!1?-1:1),ye.isMeshStandardMaterial&&ye.envMap===null&&re.environment!==null&&(Ni.envMapIntensity.value=re.environmentIntensity),Ni.dfgLUT!==void 0&&(Ni.dfgLUT.value=zP()),Wn&&(An.setValue(Q,"toneMappingExposure",I.toneMappingExposure),ut.needsLights&&br(Ni,la),Je&&ye.fog===!0&&Dt.refreshFogUniforms(Ni,Je),Dt.refreshMaterialUniforms(Ni,ye,Ae,oe,B.state.transmissionRenderTarget[k.id]),mv.upload(Q,$r(ut),Ni,ae)),ye.isShaderMaterial&&ye.uniformsNeedUpdate===!0&&(mv.upload(Q,$r(ut),Ni,ae),ye.uniformsNeedUpdate=!1),ye.isSpriteMaterial&&An.setValue(Q,"center",ue.center),An.setValue(Q,"modelViewMatrix",ue.modelViewMatrix),An.setValue(Q,"normalMatrix",ue.normalMatrix),An.setValue(Q,"modelMatrix",ue.matrixWorld),ye.isShaderMaterial||ye.isRawShaderMaterial){const Fi=ye.uniformsGroups;for(let ki=0,Wo=Fi.length;ki0&&ae.useMultisampledRTT(k)===!1?ye=O.get(k).__webglMultisampledFramebuffer:Array.isArray(xt)?ye=xt[Se]:ye=xt,Y.copy(k.viewport),q.copy(k.scissor),ne=k.scissorTest}else Y.copy(de).multiplyScalar(Ae).floor(),q.copy(Re).multiplyScalar(Ae).floor(),ne=tt;if(Se!==0&&(ye=Mr),Qe.bindFramebuffer(Q.FRAMEBUFFER,ye)&&Qe.drawBuffers(k,ye),Qe.viewport(Y),Qe.scissor(q),Qe.setScissorTest(ne),ue){const qe=O.get(k.texture);Q.framebufferTexture2D(Q.FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Q.TEXTURE_CUBE_MAP_POSITIVE_X+re,qe.__webglTexture,Se)}else if(Je){const qe=re;for(let _t=0;_t=0&&re<=k.width-ye&&Se>=0&&Se<=k.height-ue&&(k.textures.length>1&&Q.readBuffer(Q.COLOR_ATTACHMENT0+qe),Q.readPixels(re,Se,ye,ue,Ge.convert(Lt),Ge.convert(St),Je))}finally{const xt=te!==null?O.get(te).__webglFramebuffer:null;Qe.bindFramebuffer(Q.FRAMEBUFFER,xt)}}},this.readRenderTargetPixelsAsync=async function(k,re,Se,ye,ue,Je,mt,qe=0){if(!(k&&k.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let _t=O.get(k).__webglFramebuffer;if(k.isWebGLCubeRenderTarget&&mt!==void 0&&(_t=_t[mt]),_t)if(re>=0&&re<=k.width-ye&&Se>=0&&Se<=k.height-ue){Qe.bindFramebuffer(Q.FRAMEBUFFER,_t);const xt=k.textures[qe],Lt=xt.format,St=xt.type;if(!Tt.textureFormatReadable(Lt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Tt.textureTypeReadable(St))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const Pt=Q.createBuffer();Q.bindBuffer(Q.PIXEL_PACK_BUFFER,Pt),Q.bufferData(Q.PIXEL_PACK_BUFFER,Je.byteLength,Q.STREAM_READ),k.textures.length>1&&Q.readBuffer(Q.COLOR_ATTACHMENT0+qe),Q.readPixels(re,Se,ye,ue,Ge.convert(Lt),Ge.convert(St),0);const Mn=te!==null?O.get(te).__webglFramebuffer:null;Qe.bindFramebuffer(Q.FRAMEBUFFER,Mn);const Bn=Q.fenceSync(Q.SYNC_GPU_COMMANDS_COMPLETE,0);return Q.flush(),await q3(Q,Bn,4),Q.bindBuffer(Q.PIXEL_PACK_BUFFER,Pt),Q.getBufferSubData(Q.PIXEL_PACK_BUFFER,0,Je),Q.deleteBuffer(Pt),Q.deleteSync(Bn),Je}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(k,re=null,Se=0){const ye=Math.pow(2,-Se),ue=Math.floor(k.image.width*ye),Je=Math.floor(k.image.height*ye),mt=re!==null?re.x:0,qe=re!==null?re.y:0;ae.setTexture2D(k,0),Q.copyTexSubImage2D(Q.TEXTURE_2D,Se,0,0,mt,qe,ue,Je),Qe.unbindTexture()};const eo=Q.createFramebuffer(),Xs=Q.createFramebuffer();this.copyTextureToTexture=function(k,re,Se=null,ye=null,ue=0,Je=null){Je===null&&(ue!==0?(Zh("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),Je=ue,ue=0):Je=0);let mt,qe,_t,xt,Lt,St,Pt,Mn,Bn;const In=k.isCompressedTexture?k.mipmaps[Je]:k.image;if(Se!==null)mt=Se.max.x-Se.min.x,qe=Se.max.y-Se.min.y,_t=Se.isBox3?Se.max.z-Se.min.z:1,xt=Se.min.x,Lt=Se.min.y,St=Se.isBox3?Se.min.z:0;else{const bi=Math.pow(2,-ue);mt=Math.floor(In.width*bi),qe=Math.floor(In.height*bi),k.isDataArrayTexture?_t=In.depth:k.isData3DTexture?_t=Math.floor(In.depth*bi):_t=1,xt=0,Lt=0,St=0}ye!==null?(Pt=ye.x,Mn=ye.y,Bn=ye.z):(Pt=0,Mn=0,Bn=0);const Wt=Ge.convert(re.format),ut=Ge.convert(re.type);let _n;re.isData3DTexture?(ae.setTexture3D(re,0),_n=Q.TEXTURE_3D):re.isDataArrayTexture||re.isCompressedArrayTexture?(ae.setTexture2DArray(re,0),_n=Q.TEXTURE_2D_ARRAY):(ae.setTexture2D(re,0),_n=Q.TEXTURE_2D),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,re.flipY),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,re.premultiplyAlpha),Q.pixelStorei(Q.UNPACK_ALIGNMENT,re.unpackAlignment);const Ft=Q.getParameter(Q.UNPACK_ROW_LENGTH),xi=Q.getParameter(Q.UNPACK_IMAGE_HEIGHT),Ls=Q.getParameter(Q.UNPACK_SKIP_PIXELS),Wn=Q.getParameter(Q.UNPACK_SKIP_ROWS),la=Q.getParameter(Q.UNPACK_SKIP_IMAGES);Q.pixelStorei(Q.UNPACK_ROW_LENGTH,In.width),Q.pixelStorei(Q.UNPACK_IMAGE_HEIGHT,In.height),Q.pixelStorei(Q.UNPACK_SKIP_PIXELS,xt),Q.pixelStorei(Q.UNPACK_SKIP_ROWS,Lt),Q.pixelStorei(Q.UNPACK_SKIP_IMAGES,St);const An=k.isDataArrayTexture||k.isData3DTexture,Ni=re.isDataArrayTexture||re.isData3DTexture;if(k.isDepthTexture){const bi=O.get(k),Fi=O.get(re),ki=O.get(bi.__renderTarget),Wo=O.get(Fi.__renderTarget);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,ki.__webglFramebuffer),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,Wo.__webglFramebuffer);for(let rs=0;rs<_t;rs++)An&&(Q.framebufferTextureLayer(Q.READ_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,O.get(k).__webglTexture,ue,St+rs),Q.framebufferTextureLayer(Q.DRAW_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,O.get(re).__webglTexture,Je,Bn+rs)),Q.blitFramebuffer(xt,Lt,mt,qe,Pt,Mn,mt,qe,Q.DEPTH_BUFFER_BIT,Q.NEAREST);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,null),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,null)}else if(ue!==0||k.isRenderTargetTexture||O.has(k)){const bi=O.get(k),Fi=O.get(re);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,eo),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,Xs);for(let ki=0;ki<_t;ki++)An?Q.framebufferTextureLayer(Q.READ_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,bi.__webglTexture,ue,St+ki):Q.framebufferTexture2D(Q.READ_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Q.TEXTURE_2D,bi.__webglTexture,ue),Ni?Q.framebufferTextureLayer(Q.DRAW_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Fi.__webglTexture,Je,Bn+ki):Q.framebufferTexture2D(Q.DRAW_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Q.TEXTURE_2D,Fi.__webglTexture,Je),ue!==0?Q.blitFramebuffer(xt,Lt,mt,qe,Pt,Mn,mt,qe,Q.COLOR_BUFFER_BIT,Q.NEAREST):Ni?Q.copyTexSubImage3D(_n,Je,Pt,Mn,Bn+ki,xt,Lt,mt,qe):Q.copyTexSubImage2D(_n,Je,Pt,Mn,xt,Lt,mt,qe);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,null),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,null)}else Ni?k.isDataTexture||k.isData3DTexture?Q.texSubImage3D(_n,Je,Pt,Mn,Bn,mt,qe,_t,Wt,ut,In.data):re.isCompressedArrayTexture?Q.compressedTexSubImage3D(_n,Je,Pt,Mn,Bn,mt,qe,_t,Wt,In.data):Q.texSubImage3D(_n,Je,Pt,Mn,Bn,mt,qe,_t,Wt,ut,In):k.isDataTexture?Q.texSubImage2D(Q.TEXTURE_2D,Je,Pt,Mn,mt,qe,Wt,ut,In.data):k.isCompressedTexture?Q.compressedTexSubImage2D(Q.TEXTURE_2D,Je,Pt,Mn,In.width,In.height,Wt,In.data):Q.texSubImage2D(Q.TEXTURE_2D,Je,Pt,Mn,mt,qe,Wt,ut,In);Q.pixelStorei(Q.UNPACK_ROW_LENGTH,Ft),Q.pixelStorei(Q.UNPACK_IMAGE_HEIGHT,xi),Q.pixelStorei(Q.UNPACK_SKIP_PIXELS,Ls),Q.pixelStorei(Q.UNPACK_SKIP_ROWS,Wn),Q.pixelStorei(Q.UNPACK_SKIP_IMAGES,la),Je===0&&re.generateMipmaps&&Q.generateMipmap(_n),Qe.unbindTexture()},this.initRenderTarget=function(k){O.get(k).__webglFramebuffer===void 0&&ae.setupRenderTarget(k)},this.initTexture=function(k){k.isCubeTexture?ae.setTextureCube(k,0):k.isData3DTexture?ae.setTexture3D(k,0):k.isDataArrayTexture||k.isCompressedArrayTexture?ae.setTexture2DArray(k,0):ae.setTexture2D(k,0),Qe.unbindTexture()},this.resetState=function(){Z=0,se=0,te=null,Qe.reset(),at.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return ks}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=Sn._getDrawingBufferColorSpace(e),t.unpackColorSpace=Sn._getUnpackColorSpace()}}const BP=Object.freeze(Object.defineProperty({__proto__:null,ACESFilmicToneMapping:gy,AddEquation:Du,AddOperation:TE,AdditiveAnimationBlendMode:Ab,AdditiveBlending:Hx,AgXToneMapping:vb,AlphaFormat:Eb,AlwaysCompare:zE,AlwaysDepth:xv,AlwaysStencilFunc:qx,AmbientLight:NT,AnimationAction:BT,AnimationClip:Sm,AnimationLoader:PN,AnimationMixer:fD,AnimationObjectGroup:uD,AnimationUtils:LN,ArcCurve:iT,ArrayCamera:OT,ArrowHelper:PD,AttachedBindMode:Wx,Audio:PT,AudioAnalyser:$N,AudioContext:$b,AudioListener:QN,AudioLoader:jN,AxesHelper:zD,BackSide:as,BasicDepthPacking:NE,BasicShadowMap:sE,BatchedMesh:KE,Bone:Ib,BooleanKeyframeTrack:uf,Box2:xD,Box3:za,Box3Helper:ID,BoxGeometry:lf,BoxHelper:UD,BufferAttribute:Xn,BufferGeometry:Kt,BufferGeometryLoader:IT,ByteType:xb,Cache:Oo,Camera:Ry,CameraHelper:LD,CanvasTexture:tN,CapsuleGeometry:Py,CatmullRomCurve3:aT,CineonToneMapping:mb,CircleGeometry:zy,ClampToEdgeWrapping:Rs,Clock:eS,Color:yt,ColorKeyframeTrack:Zb,ColorManagement:Sn,CompressedArrayTexture:$R,CompressedCubeTexture:eN,CompressedTexture:Oy,CompressedTextureLoader:zN,ConeGeometry:Nm,ConstantAlphaFactor:SE,ConstantColorFactor:xE,Controls:FD,CubeCamera:WE,CubeDepthTexture:tT,CubeReflectionMapping:zo,CubeRefractionMapping:Pu,CubeTexture:Cm,CubeTextureLoader:BN,CubeUVReflectionMapping:id,CubicBezierCurve:Bb,CubicBezierCurve3:sT,CubicInterpolant:ST,CullFaceBack:Vx,CullFaceFront:aE,CullFaceFrontBack:n3,CullFaceNone:iE,Curve:Zr,CurvePath:oT,CustomBlending:rE,CustomToneMapping:gb,CylinderGeometry:Rm,Cylindrical:_D,Data3DTexture:Cy,DataArrayTexture:wy,DataTexture:Yr,DataTextureLoader:FN,DataUtils:ER,DecrementStencilOp:x3,DecrementWrapStencilOp:S3,DefaultLoadingManager:TT,DepthFormat:Fo,DepthStencilFormat:Uu,DepthTexture:ed,DetachedBindMode:AE,DirectionalLight:RT,DirectionalLightHelper:DD,DiscreteInterpolant:MT,DodecahedronGeometry:By,DoubleSide:Uo,DstAlphaFactor:mE,DstColorFactor:vE,DynamicCopyUsage:z3,DynamicDrawUsage:D3,DynamicReadUsage:I3,EdgesGeometry:nT,EllipseCurve:Fy,EqualCompare:IE,EqualDepth:Sv,EqualStencilFunc:A3,EquirectangularReflectionMapping:om,EquirectangularRefractionMapping:lm,Euler:Gs,EventDispatcher:ko,ExternalTexture:Pb,ExtrudeGeometry:ky,FileLoader:Ul,Float16BufferAttribute:DR,Float32BufferAttribute:bt,FloatType:is,Fog:Dy,FogExp2:Ny,FramebufferTexture:JR,FrontSide:Ll,Frustum:ad,FrustumArray:Iy,GLBufferAttribute:gD,GLSL1:F3,GLSL3:jx,GreaterCompare:OE,GreaterDepth:Ev,GreaterEqualCompare:Ay,GreaterEqualDepth:Mv,GreaterEqualStencilFunc:N3,GreaterStencilFunc:C3,GridHelper:RD,Group:Gh,HalfFloatType:Bo,HemisphereLight:AT,HemisphereLightHelper:CD,IcosahedronGeometry:Vy,ImageBitmapLoader:qN,ImageLoader:Mm,ImageUtils:VE,IncrementStencilOp:_3,IncrementWrapStencilOp:b3,InstancedBufferAttribute:$h,InstancedBufferGeometry:UT,InstancedInterleavedBuffer:mD,InstancedMesh:QE,Int16BufferAttribute:RR,Int32BufferAttribute:NR,Int8BufferAttribute:AR,IntType:yy,InterleavedBuffer:Ly,InterleavedBufferAttribute:nf,Interpolant:Um,InterpolateDiscrete:fm,InterpolateLinear:ay,InterpolateSmooth:dv,InterpolationSamplingMode:H3,InterpolationSamplingType:V3,InvertStencilOp:M3,KeepStencilOp:Wc,KeyframeTrack:_r,LOD:YE,LatheGeometry:Hy,Layers:Kh,LessCompare:UE,LessDepth:bv,LessEqualCompare:Ty,LessEqualDepth:ef,LessEqualStencilFunc:w3,LessStencilFunc:T3,Light:Gu,LightProbe:LT,Line:Fu,Line3:MD,LineBasicMaterial:ss,LineCurve:Fb,LineCurve3:rT,LineDashedMaterial:xT,LineLoop:JE,LineSegments:Vo,LinearFilter:oi,LinearInterpolant:Yb,LinearMipMapLinearFilter:r3,LinearMipMapNearestFilter:s3,LinearMipmapLinearFilter:Io,LinearMipmapNearestFilter:Jp,LinearSRGBColorSpace:zu,LinearToneMapping:db,LinearTransfer:dm,Loader:Ns,LoaderUtils:Jx,LoadingManager:Qb,LoopOnce:wE,LoopPingPong:RE,LoopRepeat:CE,MOUSE:Gc,Material:Ba,MaterialLoader:Zy,MathUtils:uR,Matrix2:aS,Matrix3:en,Matrix4:Xt,MaxEquation:cE,Mesh:Yi,MeshBasicMaterial:Vu,MeshDepthMaterial:Wb,MeshDistanceMaterial:qb,MeshLambertMaterial:yT,MeshMatcapMaterial:_T,MeshNormalMaterial:vT,MeshPhongMaterial:mT,MeshPhysicalMaterial:pT,MeshStandardMaterial:Xb,MeshToonMaterial:gT,MinEquation:uE,MirroredRepeatWrapping:cm,MixOperation:EE,MultiplyBlending:Xx,MultiplyOperation:Am,NearestFilter:Bi,NearestMipMapLinearFilter:a3,NearestMipMapNearestFilter:i3,NearestMipmapLinearFilter:Vh,NearestMipmapNearestFilter:_b,NeutralToneMapping:yb,NeverCompare:LE,NeverDepth:_v,NeverStencilFunc:E3,NoBlending:Po,NoColorSpace:Cl,NoNormalPacking:p3,NoToneMapping:gr,NormalAnimationBlendMode:Ey,NormalBlending:Kc,NormalGAPacking:g3,NormalRGPacking:m3,NotEqualCompare:PE,NotEqualDepth:Tv,NotEqualStencilFunc:R3,NumberKeyframeTrack:xm,Object3D:Cn,ObjectLoader:XN,ObjectSpaceNormalMap:DE,OctahedronGeometry:Dm,OneFactor:hE,OneMinusConstantAlphaFactor:ME,OneMinusConstantColorFactor:bE,OneMinusDstAlphaFactor:gE,OneMinusDstColorFactor:yE,OneMinusSrcAlphaFactor:yv,OneMinusSrcColorFactor:pE,OrthographicCamera:Dl,PCFShadowMap:Xh,PCFSoftShadowMap:Kp,PMREMGenerator:nb,Path:ly,PerspectiveCamera:zi,Plane:wl,PlaneGeometry:sd,PlaneHelper:OD,PointLight:CT,PointLightHelper:AD,Points:$E,PointsMaterial:Ob,PolarGridHelper:ND,PolyhedronGeometry:Hu,PositionalAudio:JN,PropertyBinding:wn,PropertyMixer:zT,QuadraticBezierCurve:kb,QuadraticBezierCurve3:Vb,Quaternion:Pa,QuaternionKeyframeTrack:Im,QuaternionLinearInterpolant:ET,R11_EAC_Format:Uv,RED_GREEN_RGTC2_Format:ny,RED_RGTC1_Format:ey,REVISION:my,RG11_EAC_Format:Ov,RGBADepthPacking:f3,RGBAFormat:Oa,RGBAIntegerFormat:My,RGBA_ASTC_10x10_Format:Yv,RGBA_ASTC_10x5_Format:Wv,RGBA_ASTC_10x6_Format:qv,RGBA_ASTC_10x8_Format:jv,RGBA_ASTC_12x10_Format:Zv,RGBA_ASTC_12x12_Format:Qv,RGBA_ASTC_4x4_Format:zv,RGBA_ASTC_5x4_Format:Bv,RGBA_ASTC_5x5_Format:Fv,RGBA_ASTC_6x5_Format:kv,RGBA_ASTC_6x6_Format:Vv,RGBA_ASTC_8x5_Format:Hv,RGBA_ASTC_8x6_Format:Gv,RGBA_ASTC_8x8_Format:Xv,RGBA_BPTC_Format:Kv,RGBA_ETC2_EAC_Format:Lv,RGBA_PVRTC_2BPPV1_Format:Rv,RGBA_PVRTC_4BPPV1_Format:Cv,RGBA_S3TC_DXT1_Format:em,RGBA_S3TC_DXT3_Format:tm,RGBA_S3TC_DXT5_Format:nm,RGBDepthPacking:h3,RGBFormat:Tb,RGBIntegerFormat:o3,RGB_BPTC_SIGNED_Format:Jv,RGB_BPTC_UNSIGNED_Format:$v,RGB_ETC1_Format:Nv,RGB_ETC2_Format:Dv,RGB_PVRTC_2BPPV1_Format:wv,RGB_PVRTC_4BPPV1_Format:Av,RGB_S3TC_DXT1_Format:$p,RGDepthPacking:d3,RGFormat:tf,RGIntegerFormat:Sy,RawShaderMaterial:Gb,Ray:of,Raycaster:FT,RectAreaLight:DT,RedFormat:by,RedIntegerFormat:wm,ReinhardToneMapping:pb,RenderTarget:Cb,RenderTarget3D:hD,RepeatWrapping:um,ReplaceStencilOp:y3,ReverseSubtractEquation:lE,RingGeometry:Gy,SIGNED_R11_EAC_Format:Iv,SIGNED_RED_GREEN_RGTC2_Format:iy,SIGNED_RED_RGTC1_Format:ty,SIGNED_RG11_EAC_Format:Pv,SRGBColorSpace:Ia,SRGBTransfer:zn,Scene:Lb,ShaderChunk:un,ShaderLib:qr,ShaderMaterial:yr,ShadowMaterial:dT,Shape:$c,ShapeGeometry:Xy,ShapePath:BD,ShapeUtils:jr,ShortType:bb,Skeleton:Uy,SkeletonHelper:TD,SkinnedMesh:ZE,Source:Iu,Sphere:_a,SphereGeometry:Lm,Spherical:eb,SphericalHarmonics3:Jb,SplineCurve:Hb,SpotLight:wT,SpotLightHelper:ED,Sprite:jE,SpriteMaterial:Ub,SrcAlphaFactor:vv,SrcAlphaSaturateFactor:_E,SrcColorFactor:dE,StaticCopyUsage:P3,StaticDrawUsage:pm,StaticReadUsage:U3,StereoCamera:YN,StreamCopyUsage:B3,StreamDrawUsage:L3,StreamReadUsage:O3,StringKeyframeTrack:cf,SubtractEquation:oE,SubtractiveBlending:Gx,TOUCH:Xc,TangentSpaceNormalMap:ku,TetrahedronGeometry:Wy,Texture:wi,TextureLoader:kN,TextureUtils:XD,Timer:vD,TimestampQuery:k3,TorusGeometry:qy,TorusKnotGeometry:jy,Triangle:Cs,TriangleFanDrawMode:c3,TriangleStripDrawMode:u3,TrianglesDrawMode:l3,TubeGeometry:Yy,UVMapping:vy,Uint16BufferAttribute:Rb,Uint32BufferAttribute:Nb,Uint8BufferAttribute:wR,Uint8ClampedBufferAttribute:CR,Uniform:iS,UniformsGroup:pD,UniformsLib:pt,UniformsUtils:XE,UnsignedByteType:ts,UnsignedInt101111Type:Mb,UnsignedInt248Type:jh,UnsignedInt5999Type:Sb,UnsignedIntType:vr,UnsignedShort4444Type:_y,UnsignedShort5551Type:xy,UnsignedShortType:qh,VSMShadowMap:jc,Vector2:ze,Vector3:j,Vector4:jn,VectorKeyframeTrack:bm,VideoFrameTexture:KR,VideoTexture:eT,WebGL3DRenderTarget:pR,WebGLArrayRenderTarget:dR,WebGLCoordinateSystem:ks,WebGLCubeRenderTarget:Db,WebGLRenderTarget:Hs,WebGLRenderer:jT,WebGLUtils:qT,WebGPUCoordinateSystem:Yh,WebXRController:pv,WireframeGeometry:hT,WrapAroundEnding:hm,ZeroCurvatureEnding:Yc,ZeroFactor:fE,ZeroSlopeEnding:Zc,ZeroStencilOp:v3,createCanvasElement:kE,error:Rt,getConsoleFunction:W3,log:gm,setConsoleFunction:X3,warn:ft,warnOnce:Zh},Symbol.toStringTag,{value:"Module"}));var Rx={exports:{}},Nx={},Dx={exports:{}},Lx={};var L1;function FP(){if(L1)return Lx;L1=1;var r=Tm();function e(x,b){return x===b&&(x!==0||1/x===1/b)||x!==x&&b!==b}var t=typeof Object.is=="function"?Object.is:e,n=r.useState,s=r.useEffect,u=r.useLayoutEffect,f=r.useDebugValue;function h(x,b){var M=b(),A=n({inst:{value:M,getSnapshot:b}}),R=A[0].inst,w=A[1];return u(function(){R.value=M,R.getSnapshot=b,m(R)&&w({inst:R})},[x,M,b]),s(function(){return m(R)&&w({inst:R}),x(function(){m(R)&&w({inst:R})})},[x]),f(M),M}function m(x){var b=x.getSnapshot;x=x.value;try{var M=b();return!t(x,M)}catch{return!0}}function g(x,b){return b()}var _=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?g:h;return Lx.useSyncExternalStore=r.useSyncExternalStore!==void 0?r.useSyncExternalStore:_,Lx}var U1;function kP(){return U1||(U1=1,Dx.exports=FP()),Dx.exports}var I1;function VP(){if(I1)return Nx;I1=1;var r=Tm(),e=kP();function t(g,_){return g===_&&(g!==0||1/g===1/_)||g!==g&&_!==_}var n=typeof Object.is=="function"?Object.is:t,s=e.useSyncExternalStore,u=r.useRef,f=r.useEffect,h=r.useMemo,m=r.useDebugValue;return Nx.useSyncExternalStoreWithSelector=function(g,_,x,b,M){var A=u(null);if(A.current===null){var R={hasValue:!1,value:null};A.current=R}else R=A.current;A=h(function(){function E(z){if(!N){if(N=!0,D=z,z=b(z),M!==void 0&&R.hasValue){var H=R.value;if(M(H,z))return U=H}return U=z}if(H=U,n(D,z))return H;var W=b(z);return M!==void 0&&M(H,W)?(D=z,H):(D=z,U=W)}var N=!1,D,U,B=x===void 0?null:x;return[function(){return E(_())},B===null?void 0:function(){return E(B())}]},[_,x,b,M]);var w=s(g,A[0],A[1]);return f(function(){R.hasValue=!0,R.value=w},[w]),m(w),w},Nx}var O1;function HP(){return O1||(O1=1,Rx.exports=VP()),Rx.exports}var GP=HP();const XP=py(GP),P1=r=>{let e;const t=new Set,n=(g,_)=>{const x=typeof g=="function"?g(e):g;if(!Object.is(x,e)){const b=e;e=_??(typeof x!="object"||x===null)?x:Object.assign({},e,x),t.forEach(M=>M(e,b))}},s=()=>e,h={setState:n,getState:s,getInitialState:()=>m,subscribe:g=>(t.add(g),()=>t.delete(g))},m=e=r(n,s,h);return h},WP=(r=>r?P1(r):P1),{useSyncExternalStoreWithSelector:qP}=XP,jP=r=>r;function YP(r,e=jP,t){const n=qP(r.subscribe,r.getState,r.getInitialState,e,t);return hb.useDebugValue(n),n}const z1=(r,e)=>{const t=WP(r),n=(s,u=e)=>YP(t,s,u);return Object.assign(n,t),n},ZP=((r,e)=>r?z1(r,e):z1);var sb=nE();const QP=py(sb);function sS(r,e,t){if(!r)return;if(t(r)===!0)return r;let n=e?r.return:r.child;for(;n;){const s=sS(n,e,t);if(s)return s;n=e?null:n.sibling}}function YT(r){try{return Object.defineProperties(r,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return r}}const rS=YT(rt.createContext(null));class ZT extends rt.Component{render(){return rt.createElement(rS.Provider,{value:this._reactInternals},this.props.children)}}function QT(){const r=rt.useContext(rS);if(r===null)throw new Error("its-fine: useFiber must be called within a !");const e=rt.useId();return rt.useMemo(()=>{for(const t of[r,r?.alternate]){if(!t)continue;const n=sS(t,!1,s=>{let u=s.memoizedState;for(;u;){if(u.memoizedState===e)return!0;u=u.next}});if(n)return n}},[r,e])}const KP=Symbol.for("react.context"),JP=r=>r!==null&&typeof r=="object"&&"$$typeof"in r&&r.$$typeof===KP;function $P(){const r=QT(),[e]=rt.useState(()=>new Map);e.clear();let t=r;for(;t;){const n=t.type;JP(n)&&n!==rS&&!e.has(n)&&e.set(n,rt.use(YT(n))),t=t.return}return e}function ez(){const r=$P();return rt.useMemo(()=>Array.from(r.keys()).reduce((e,t)=>n=>rt.createElement(e,null,rt.createElement(t.Provider,{...n,value:r.get(t)})),e=>rt.createElement(ZT,{...e})),[r])}function KT(r){let e=r.root;for(;e.getState().previousRoot;)e=e.getState().previousRoot;return e}const JT=r=>r&&r.isOrthographicCamera,tz=r=>r&&r.hasOwnProperty("current"),nz=r=>r!=null&&(typeof r=="string"||typeof r=="number"||r.isColor),Om=((r,e)=>typeof window<"u"&&(((r=window.document)==null?void 0:r.createElement)||((e=window.navigator)==null?void 0:e.product)==="ReactNative"))()?rt.useLayoutEffect:rt.useEffect;function $T(r){const e=rt.useRef(r);return Om(()=>{e.current=r},[r]),e}function iz(){const r=QT(),e=ez();return rt.useMemo(()=>({children:t})=>{const s=!!sS(r,!0,u=>u.type===rt.StrictMode)?rt.StrictMode:rt.Fragment;return he.jsx(s,{children:he.jsx(e,{children:t})})},[r,e])}function az({set:r}){return Om(()=>(r(new Promise(()=>null)),()=>r(!1)),[r]),null}const sz=(r=>(r=class extends rt.Component{constructor(...t){super(...t),this.state={error:!1}}componentDidCatch(t){this.props.set(t)}render(){return this.state.error?null:this.props.children}},r.getDerivedStateFromError=()=>({error:!0}),r))();function eA(r){var e;const t=typeof window<"u"?(e=window.devicePixelRatio)!=null?e:2:1;return Array.isArray(r)?Math.min(Math.max(r[0],t),r[1]):r}function Bh(r){var e;return(e=r.__r3f)==null?void 0:e.root.getState()}const yi={obj:r=>r===Object(r)&&!yi.arr(r)&&typeof r!="function",fun:r=>typeof r=="function",str:r=>typeof r=="string",num:r=>typeof r=="number",boo:r=>typeof r=="boolean",und:r=>r===void 0,nul:r=>r===null,arr:r=>Array.isArray(r),equ(r,e,{arrays:t="shallow",objects:n="reference",strict:s=!0}={}){if(typeof r!=typeof e||!!r!=!!e)return!1;if(yi.str(r)||yi.num(r)||yi.boo(r))return r===e;const u=yi.obj(r);if(u&&n==="reference")return r===e;const f=yi.arr(r);if(f&&t==="reference")return r===e;if((f||u)&&r===e)return!0;let h;for(h in r)if(!(h in e))return!1;if(u&&t==="shallow"&&n==="shallow"){for(h in s?e:r)if(!yi.equ(r[h],e[h],{strict:s,objects:"reference"}))return!1}else for(h in s?e:r)if(r[h]!==e[h])return!1;if(yi.und(h)){if(f&&r.length===0&&e.length===0||u&&Object.keys(r).length===0&&Object.keys(e).length===0)return!0;if(r!==e)return!1}return!0}};function rz(r){r.type!=="Scene"&&(r.dispose==null||r.dispose());for(const e in r){const t=r[e];t?.type!=="Scene"&&(t==null||t.dispose==null||t.dispose())}}const tA=["children","key","ref"];function oz(r){const e={};for(const t in r)tA.includes(t)||(e[t]=r[t]);return e}function uy(r,e,t,n){const s=r;let u=s?.__r3f;return u||(u={root:e,type:t,parent:null,children:[],props:oz(n),object:s,eventCount:0,handlers:{},isHidden:!1},s&&(s.__r3f=u)),u}function Em(r,e){if(!e.includes("-"))return{root:r,key:e,target:r[e]};if(e in r)return{root:r,key:e,target:r[e]};let t=r;const n=e.split("-");for(const s of n){if(typeof t!="object"||t===null){if(t!==void 0){const u=n.slice(n.indexOf(s)).join("-");return{root:t,key:u,target:void 0}}return{root:r,key:e,target:void 0}}e=s,r=t,t=t[e]}return{root:r,key:e,target:t}}const B1=/-\d+$/;function cy(r,e){if(yi.str(e.props.attach)){if(B1.test(e.props.attach)){const s=e.props.attach.replace(B1,""),{root:u,key:f}=Em(r.object,s);Array.isArray(u[f])||(u[f]=[])}const{root:t,key:n}=Em(r.object,e.props.attach);e.previousAttach=t[n],t[n]=e.object}else yi.fun(e.props.attach)&&(e.previousAttach=e.props.attach(r.object,e.object))}function fy(r,e){if(yi.str(e.props.attach)){const{root:t,key:n}=Em(r.object,e.props.attach),s=e.previousAttach;s===void 0?delete t[n]:t[n]=s}else e.previousAttach==null||e.previousAttach(r.object,e.object);delete e.previousAttach}const rb=[...tA,"args","dispose","attach","object","onUpdate","dispose"],F1=new Map;function lz(r){let e=F1.get(r.constructor);try{e||(e=new r.constructor,F1.set(r.constructor,e))}catch{}return e}function uz(r,e){const t={};for(const n in e)if(!rb.includes(n)&&!yi.equ(e[n],r.props[n])){t[n]=e[n];for(const s in e)s.startsWith(`${n}-`)&&(t[s]=e[s])}for(const n in r.props){if(rb.includes(n)||e.hasOwnProperty(n))continue;const{root:s,key:u}=Em(r.object,n);if(s.constructor&&s.constructor.length===0){const f=lz(s);yi.und(f)||(t[u]=f[u])}else t[u]=0}return t}const cz=["map","emissiveMap","sheenColorMap","specularColorMap","envMap"],fz=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function Lu(r,e){var t;const n=r.__r3f,s=n&&KT(n).getState(),u=n?.eventCount;for(const h in e){let m=e[h];if(rb.includes(h))continue;if(n&&fz.test(h)){typeof m=="function"?n.handlers[h]=m:delete n.handlers[h],n.eventCount=Object.keys(n.handlers).length;continue}if(m===void 0)continue;let{root:g,key:_,target:x}=Em(r,h);if(x===void 0&&(typeof g!="object"||g===null))throw Error(`R3F: Cannot set "${h}". Ensure it is an object before setting "${_}".`);if(x instanceof Kh&&m instanceof Kh)x.mask=m.mask;else if(x instanceof yt&&nz(m))x.set(m);else if(x!==null&&typeof x=="object"&&typeof x.set=="function"&&typeof x.copy=="function"&&m!=null&&m.constructor&&x.constructor===m.constructor)x.copy(m);else if(x!==null&&typeof x=="object"&&typeof x.set=="function"&&Array.isArray(m))typeof x.fromArray=="function"?x.fromArray(m):x.set(...m);else if(x!==null&&typeof x=="object"&&typeof x.set=="function"&&typeof m=="number")typeof x.setScalar=="function"?x.setScalar(m):x.set(m);else{var f;g[_]=m,s&&!s.linear&&cz.includes(_)&&(f=g[_])!=null&&f.isTexture&&g[_].format===Oa&&g[_].type===ts&&(g[_].colorSpace=Ia)}}if(n!=null&&n.parent&&s!=null&&s.internal&&(t=n.object)!=null&&t.isObject3D&&u!==n.eventCount){const h=n.object,m=s.internal.interaction.indexOf(h);m>-1&&s.internal.interaction.splice(m,1),n.eventCount&&h.raycast!==null&&s.internal.interaction.push(h)}return n&&n.props.attach===void 0&&(n.object.isBufferGeometry?n.props.attach="geometry":n.object.isMaterial&&(n.props.attach="material")),n&&od(n),r}function od(r){var e;if(!r.parent)return;r.props.onUpdate==null||r.props.onUpdate(r.object);const t=(e=r.root)==null||e.getState==null?void 0:e.getState();t&&t.internal.frames===0&&t.invalidate()}function hz(r,e){r.manual||(JT(r)?(r.left=e.width/-2,r.right=e.width/2,r.top=e.height/2,r.bottom=e.height/-2):r.aspect=e.width/e.height,r.updateProjectionMatrix())}const ws=r=>r?.isObject3D;function uv(r){return(r.eventObject||r.object).uuid+"/"+r.index+r.instanceId}function nA(r,e,t,n){const s=t.get(e);s&&(t.delete(e),t.size===0&&(r.delete(n),s.target.releasePointerCapture(n)))}function dz(r,e){const{internal:t}=r.getState();t.interaction=t.interaction.filter(n=>n!==e),t.initialHits=t.initialHits.filter(n=>n!==e),t.hovered.forEach((n,s)=>{(n.eventObject===e||n.object===e)&&t.hovered.delete(s)}),t.capturedMap.forEach((n,s)=>{nA(t.capturedMap,e,n,s)})}function pz(r){function e(m){const{internal:g}=r.getState(),_=m.offsetX-g.initialClick[0],x=m.offsetY-g.initialClick[1];return Math.round(Math.sqrt(_*_+x*x))}function t(m){return m.filter(g=>["Move","Over","Enter","Out","Leave"].some(_=>{var x;return(x=g.__r3f)==null?void 0:x.handlers["onPointer"+_]}))}function n(m,g){const _=r.getState(),x=new Set,b=[],M=g?g(_.internal.interaction):_.internal.interaction;for(let E=0;E{const D=Bh(E.object),U=Bh(N.object);return!D||!U?E.distance-N.distance:U.events.priority-D.events.priority||E.distance-N.distance}).filter(E=>{const N=uv(E);return x.has(N)?!1:(x.add(N),!0)});_.events.filter&&(R=_.events.filter(R,_));for(const E of R){let N=E.object;for(;N;){var w;(w=N.__r3f)!=null&&w.eventCount&&b.push({...E,eventObject:N}),N=N.parent}}if("pointerId"in m&&_.internal.capturedMap.has(m.pointerId))for(let E of _.internal.capturedMap.get(m.pointerId).values())x.has(uv(E.intersection))||b.push(E.intersection);return b}function s(m,g,_,x){if(m.length){const b={stopped:!1};for(const M of m){let A=Bh(M.object);if(A||M.object.traverseAncestors(R=>{const w=Bh(R);if(w)return A=w,!1}),A){const{raycaster:R,pointer:w,camera:E,internal:N}=A,D=new j(w.x,w.y,0).unproject(E),U=I=>{var P,Z;return(P=(Z=N.capturedMap.get(I))==null?void 0:Z.has(M.eventObject))!=null?P:!1},B=I=>{const P={intersection:M,target:g.target};N.capturedMap.has(I)?N.capturedMap.get(I).set(M.eventObject,P):N.capturedMap.set(I,new Map([[M.eventObject,P]])),g.target.setPointerCapture(I)},z=I=>{const P=N.capturedMap.get(I);P&&nA(N.capturedMap,M.eventObject,P,I)};let H={};for(let I in g){let P=g[I];typeof P!="function"&&(H[I]=P)}let W={...M,...H,pointer:w,intersections:m,stopped:b.stopped,delta:_,unprojectedPoint:D,ray:R.ray,camera:E,stopPropagation(){const I="pointerId"in g&&N.capturedMap.get(g.pointerId);if((!I||I.has(M.eventObject))&&(W.stopped=b.stopped=!0,N.hovered.size&&Array.from(N.hovered.values()).find(P=>P.eventObject===M.eventObject))){const P=m.slice(0,m.indexOf(M));u([...P,M])}},target:{hasPointerCapture:U,setPointerCapture:B,releasePointerCapture:z},currentTarget:{hasPointerCapture:U,setPointerCapture:B,releasePointerCapture:z},nativeEvent:g};if(x(W),b.stopped===!0)break}}}return m}function u(m){const{internal:g}=r.getState();for(const _ of g.hovered.values())if(!m.length||!m.find(x=>x.object===_.object&&x.index===_.index&&x.instanceId===_.instanceId)){const b=_.eventObject.__r3f;if(g.hovered.delete(uv(_)),b!=null&&b.eventCount){const M=b.handlers,A={..._,intersections:m};M.onPointerOut==null||M.onPointerOut(A),M.onPointerLeave==null||M.onPointerLeave(A)}}}function f(m,g){for(let _=0;_u([]);case"onLostPointerCapture":return g=>{const{internal:_}=r.getState();"pointerId"in g&&_.capturedMap.has(g.pointerId)&&requestAnimationFrame(()=>{_.capturedMap.has(g.pointerId)&&(_.capturedMap.delete(g.pointerId),u([]))})}}return function(_){const{onPointerMissed:x,internal:b}=r.getState();b.lastEvent.current=_;const M=m==="onPointerMove",A=m==="onClick"||m==="onContextMenu"||m==="onDoubleClick",w=n(_,M?t:void 0),E=A?e(_):0;m==="onPointerDown"&&(b.initialClick=[_.offsetX,_.offsetY],b.initialHits=w.map(D=>D.eventObject)),A&&!w.length&&E<=2&&(f(_,b.interaction),x&&x(_)),M&&u(w);function N(D){const U=D.eventObject,B=U.__r3f;if(!(B!=null&&B.eventCount))return;const z=B.handlers;if(M){if(z.onPointerOver||z.onPointerEnter||z.onPointerOut||z.onPointerLeave){const H=uv(D),W=b.hovered.get(H);W?W.stopped&&D.stopPropagation():(b.hovered.set(H,D),z.onPointerOver==null||z.onPointerOver(D),z.onPointerEnter==null||z.onPointerEnter(D))}z.onPointerMove==null||z.onPointerMove(D)}else{const H=z[m];H?(!A||b.initialHits.includes(U))&&(f(_,b.interaction.filter(W=>!b.initialHits.includes(W))),H(D)):A&&b.initialHits.includes(U)&&f(_,b.interaction.filter(W=>!b.initialHits.includes(W)))}}s(w,_,E,N)}}return{handlePointer:h}}const k1=r=>!!(r!=null&&r.render),iA=rt.createContext(null),mz=(r,e)=>{const t=ZP((h,m)=>{const g=new j,_=new j,x=new j;function b(E=m().camera,N=_,D=m().size){const{width:U,height:B,top:z,left:H}=D,W=U/B;N.isVector3?x.copy(N):x.set(...N);const I=E.getWorldPosition(g).distanceTo(x);if(JT(E))return{width:U/E.zoom,height:B/E.zoom,top:z,left:H,factor:1,distance:I,aspect:W};{const P=E.fov*Math.PI/180,Z=2*Math.tan(P/2)*I,se=Z*(U/B);return{width:se,height:Z,top:z,left:H,factor:U/se,distance:I,aspect:W}}}let M;const A=E=>h(N=>({performance:{...N.performance,current:E}})),R=new ze;return{set:h,get:m,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(E=1)=>r(m(),E),advance:(E,N)=>e(E,N,m()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new eS,pointer:R,mouse:R,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{const E=m();M&&clearTimeout(M),E.performance.current!==E.performance.min&&A(E.performance.min),M=setTimeout(()=>A(m().performance.max),E.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:b},setEvents:E=>h(N=>({...N,events:{...N.events,...E}})),setSize:(E,N,D=0,U=0)=>{const B=m().camera,z={width:E,height:N,top:D,left:U};h(H=>({size:z,viewport:{...H.viewport,...b(B,_,z)}}))},setDpr:E=>h(N=>{const D=eA(E);return{viewport:{...N.viewport,dpr:D,initialDpr:N.viewport.initialDpr||D}}}),setFrameloop:(E="always")=>{const N=m().clock;N.stop(),N.elapsedTime=0,E!=="never"&&(N.start(),N.elapsedTime=0),h(()=>({frameloop:E}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:rt.createRef(),active:!1,frames:0,priority:0,subscribe:(E,N,D)=>{const U=m().internal;return U.priority=U.priority+(N>0?1:0),U.subscribers.push({ref:E,priority:N,store:D}),U.subscribers=U.subscribers.sort((B,z)=>B.priority-z.priority),()=>{const B=m().internal;B!=null&&B.subscribers&&(B.priority=B.priority-(N>0?1:0),B.subscribers=B.subscribers.filter(z=>z.ref!==E))}}}}}),n=t.getState();let s=n.size,u=n.viewport.dpr,f=n.camera;return t.subscribe(()=>{const{camera:h,size:m,viewport:g,gl:_,set:x}=t.getState();if(m.width!==s.width||m.height!==s.height||g.dpr!==u){s=m,u=g.dpr,hz(h,m),g.dpr>0&&_.setPixelRatio(g.dpr);const b=typeof HTMLCanvasElement<"u"&&_.domElement instanceof HTMLCanvasElement;_.setSize(m.width,m.height,b)}h!==f&&(f=h,x(b=>({viewport:{...b.viewport,...b.viewport.getCurrentViewport(h)}})))}),t.subscribe(h=>r(h)),t};function aA(){const r=rt.useContext(iA);if(!r)throw new Error("R3F: Hooks can only be used within the Canvas component!");return r}function Nu(r=t=>t,e){return aA()(r,e)}function gz(r,e=0){const t=aA(),n=t.getState().internal.subscribe,s=$T(r);return Om(()=>n(s,e,t),[e,n,t]),null}const vz=1,yz=8,_z=32,xz=2;var bz={version:"9.5.0"};function Sz(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var V1={exports:{}},H1={exports:{}},G1;function Mz(){return G1||(G1=1,(function(r){r.exports=function(e){function t(o,l,p,v){return new Ld(o,l,p,v)}function n(){}function s(o){var l="https://react.dev/errors/"+o;if(1cl||(o.current=$f[cl],$f[cl]=null,cl--)}function A(o,l){cl++,$f[cl]=o.current,o.current=l}function R(o){return o>>>=0,o===0?32:31-(eh(o)/Jg|0)|0}function w(o){var l=o&42;if(l!==0)return l;switch(o&-o){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return o&261888;case 262144:case 524288:case 1048576:case 2097152:return o&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return o&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return o}}function E(o,l,p){var v=o.pendingLanes;if(v===0)return 0;var T=0,C=o.suspendedLanes,F=o.pingedLanes;o=o.warmLanes;var ee=v&134217727;return ee!==0?(v=ee&~C,v!==0?T=w(v):(F&=ee,F!==0?T=w(F):p||(p=ee&~o,p!==0&&(T=w(p))))):(ee=v&~C,ee!==0?T=w(ee):F!==0?T=w(F):p||(p=v&~o,p!==0&&(T=w(p)))),T===0?0:l!==0&&l!==T&&(l&C)===0&&(C=T&-T,p=l&-l,C>=p||C===32&&(p&4194048)!==0)?l:T}function N(o,l){return(o.pendingLanes&~(o.suspendedLanes&~o.pingedLanes)&l)===0}function D(o,l){switch(o){case 1:case 2:case 4:case 8:case 64:return l+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function U(){var o=ou;return ou<<=1,(ou&62914560)===0&&(ou=4194304),o}function B(o){for(var l=[],p=0;31>p;p++)l.push(o);return l}function z(o,l){o.pendingLanes|=l,l!==268435456&&(o.suspendedLanes=0,o.pingedLanes=0,o.warmLanes=0)}function H(o,l,p,v,T,C){var F=o.pendingLanes;o.pendingLanes=p,o.suspendedLanes=0,o.pingedLanes=0,o.warmLanes=0,o.expiredLanes&=p,o.entangledLanes&=p,o.errorRecoveryDisabledLanes&=p,o.shellSuspendCounter=0;var ee=o.entanglements,we=o.expirationTimes,ke=o.hiddenUpdates;for(p=F&~p;0)":-1T||we[v]!==ke[T]){var it=` +`+we[v].replace(" at new "," at ");return o.displayName&&it.includes("")&&(it=it.replace("",o.displayName)),it}while(1<=v&&0<=T);break}}}finally{_c=!1,Error.prepareStackTrace=p}return(p=o?o.displayName||o.name:"")?pe(p):""}function q(o,l){switch(o.tag){case 26:case 27:case 5:return pe(o.type);case 16:return pe("Lazy");case 13:return o.child!==l&&l!==null?pe("Suspense Fallback"):pe("Suspense");case 19:return pe("SuspenseList");case 0:case 15:return Y(o.type,!1);case 11:return Y(o.type.render,!1);case 1:return Y(o.type,!0);case 31:return pe("Activity");default:return""}}function ne(o){try{var l="",p=null;do l+=q(o,p),p=o,o=o.return;while(o);return l}catch(v){return` +Error generating stack: `+v.message+` +`+v.stack}}function be(o,l){if(typeof o=="object"&&o!==null){var p=yp.get(o);return p!==void 0?p:(l={value:o,source:l,stack:ne(l)},yp.set(o,l),l)}return{value:o,source:l,stack:ne(l)}}function Ne(o,l){Or[rr++]=xc,Or[rr++]=Pn,Pn=o,xc=l}function X(o,l,p){gs[Ya++]=Qi,gs[Ya++]=Is,gs[Ya++]=vs,vs=o;var v=Qi;o=Is;var T=32-Ta(v)-1;v&=~(1<>=F,T-=F,Qi=1<<32-Ta(l)+T|p<xn?(qi=zt,zt=null):qi=zt.sibling;var Tn=gt(_e,zt,Me[xn],$e);if(Tn===null){zt===null&&(zt=qi);break}o&&zt&&Tn.alternate===null&&l(_e,zt),ce=C(Tn,ce,xn),ri===null?Ot=Tn:ri.sibling=Tn,ri=Tn,zt=qi}if(xn===Me.length)return p(_e,zt),dn&&Ne(_e,xn),Ot;if(zt===null){for(;xnxn?(qi=zt,zt=null):qi=zt.sibling;var Es=gt(_e,zt,Tn.value,$e);if(Es===null){zt===null&&(zt=qi);break}o&&zt&&Es.alternate===null&&l(_e,zt),ce=C(Es,ce,xn),ri===null?Ot=Es:ri.sibling=Es,ri=Es,zt=qi}if(Tn.done)return p(_e,zt),dn&&Ne(_e,xn),Ot;if(zt===null){for(;!Tn.done;xn++,Tn=Me.next())Tn=We(_e,Tn.value,$e),Tn!==null&&(ce=C(Tn,ce,xn),ri===null?Ot=Tn:ri.sibling=Tn,ri=Tn);return dn&&Ne(_e,xn),Ot}for(zt=v(zt);!Tn.done;xn++,Tn=Me.next())Tn=qt(zt,_e,xn,Tn.value,$e),Tn!==null&&(o&&Tn.alternate!==null&&zt.delete(Tn.key===null?xn:Tn.key),ce=C(Tn,ce,xn),ri===null?Ot=Tn:ri.sibling=Tn,ri=Tn);return o&&zt.forEach(function(h_){return l(_e,h_)}),dn&&Ne(_e,xn),Ot}function Ro(_e,ce,Me,$e){if(typeof Me=="object"&&Me!==null&&Me.type===il&&Me.key===null&&(Me=Me.props.children),typeof Me=="object"&&Me!==null){switch(Me.$$typeof){case ir:e:{for(var Ot=Me.key;ce!==null;){if(ce.key===Ot){if(Ot=Me.type,Ot===il){if(ce.tag===7){p(_e,ce.sibling),$e=T(ce,Me.props.children),$e.return=_e,_e=$e;break e}}else if(ce.elementType===Ot||typeof Ot=="object"&&Ot!==null&&Ot.$$typeof===ha&&Jt(Ot)===ce.type){p(_e,ce.sibling),$e=T(ce,Me.props),Qr($e,Me),$e.return=_e,_e=$e;break e}p(_e,ce);break}else l(_e,ce);ce=ce.sibling}Me.type===il?($e=hs(Me.props.children,_e.mode,$e,Me.key),$e.return=_e,_e=$e):($e=Nr(Me.type,Me.key,Me.props,null,_e.mode,$e),Qr($e,Me),$e.return=_e,_e=$e)}return F(_e);case nl:e:{for(Ot=Me.key;ce!==null;){if(ce.key===Ot)if(ce.tag===4&&ce.stateNode.containerInfo===Me.containerInfo&&ce.stateNode.implementation===Me.implementation){p(_e,ce.sibling),$e=T(ce,Me.children||[]),$e.return=_e,_e=$e;break e}else{p(_e,ce);break}else l(_e,ce);ce=ce.sibling}$e=Od(Me,_e.mode,$e),$e.return=_e,_e=$e}return F(_e);case ha:return Me=Jt(Me),Ro(_e,ce,Me,$e)}if(mo(Me))return vi(_e,ce,Me,$e);if(_(Me)){if(Ot=_(Me),typeof Ot!="function")throw Error(s(150));return Me=Ot.call(Me),gu(_e,ce,Me,$e)}if(typeof Me.then=="function")return Ro(_e,ce,Ci(Me),$e);if(Me.$$typeof===ds)return Ro(_e,ce,O(_e,Me),$e);Kr(_e,Me)}return typeof Me=="string"&&Me!==""||typeof Me=="number"||typeof Me=="bigint"?(Me=""+Me,ce!==null&&ce.tag===6?(p(_e,ce.sibling),$e=T(ce,Me),$e.return=_e,_e=$e):(p(_e,ce),$e=Ud(Me,_e.mode,$e),$e.return=_e,_e=$e),F(_e)):p(_e,ce)}return function(_e,ce,Me,$e){try{dl=0;var Ot=Ro(_e,ce,Me,$e);return bo=null,Ot}catch(zt){if(zt===Oi||zt===bs)throw zt;var ri=t(29,zt,null,_e.mode);return ri.lanes=$e,ri.return=_e,ri}}}function Jr(){for(var o=ur,l=pl=ur=0;lC?C:8);var F=Ut.T,ee={};Ut.T=ee,vf(o,!1,l,p);try{var we=T(),ke=Ut.S;if(ke!==null&&ke(ee,we),we!==null&&typeof we=="object"&&typeof we.then=="function"){var it=je(we,v);Zu(o,l,it,Yn(o))}else Zu(o,l,v,Yn(o))}catch(We){Zu(o,l,{then:function(){},status:"rejected",reason:We},Yn())}finally{hn(C),F!==null&&ee.types!==null&&(F.types=ee.types),Ut.T=F}}function km(o){var l=o.memoizedState;if(l!==null)return l;l={memoizedState:ol,baseState:ol,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Wn,lastRenderedState:ol},next:null};var p={};return l.next={memoizedState:p,baseState:p,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Wn,lastRenderedState:p},next:null},o.memoizedState=l,o=o.alternate,o!==null&&(o.memoizedState=l),l}function dd(){return G(ll)}function gf(){return ut().memoizedState}function Vm(){return ut().memoizedState}function e_(o){for(var l=o.return;l!==null;){switch(l.tag){case 24:case 3:var p=Yn();o=Va(p);var v=Ha(l,o,p);v!==null&&(ti(v,l,p),$r(v,l,p)),l={cache:Te()},o.payload=l;return}l=l.return}}function t_(o,l,p){var v=Yn();p={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null},yf(o)?Gm(l,p):(p=Go(o,l,p,v),p!==null&&(ti(p,o,v),Xm(p,l,v)))}function Hm(o,l,p){var v=Yn();Zu(o,l,p,v)}function Zu(o,l,p,v){var T={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null};if(yf(o))Gm(l,T);else{var C=o.alternate;if(o.lanes===0&&(C===null||C.lanes===0)&&(C=l.lastRenderedReducer,C!==null))try{var F=l.lastRenderedState,ee=C(F,p);if(T.hasEagerState=!0,T.eagerState=ee,pi(ee,F))return xr(o,l,T,0),rn===null&&Jr(),!1}catch{}if(p=Go(o,l,T,v),p!==null)return ti(p,o,v),Xm(p,l,v),!0}return!1}function vf(o,l,p,v){if(v={lane:2,revertLane:me(),gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},yf(o)){if(l)throw Error(s(479))}else l=Go(o,p,v,2),l!==null&&ti(l,o,2)}function yf(o){var l=o.alternate;return o===Zt||l!==null&&l===Zt}function Gm(o,l){$t=sn=!0;var p=o.pending;p===null?l.next=l:(l.next=p.next,p.next=l),o.pending=l}function Xm(o,l,p){if((p&4194048)!==0){var v=l.lanes;v&=o.pendingLanes,p|=v,l.lanes=p,I(o,p)}}function pd(o,l,p,v){l=o.memoizedState,p=p(v,l),p=p==null?l:Bf({},l,p),o.memoizedState=p,o.lanes===0&&(o.updateQueue.baseState=p)}function _f(o,l,p,v,T,C,F){return o=o.stateNode,typeof o.shouldComponentUpdate=="function"?o.shouldComponentUpdate(v,C,F):l.prototype&&l.prototype.isPureReactComponent?!Ue(p,v)||!Ue(T,C):!0}function Wm(o,l,p,v){o=l.state,typeof l.componentWillReceiveProps=="function"&&l.componentWillReceiveProps(p,v),typeof l.UNSAFE_componentWillReceiveProps=="function"&&l.UNSAFE_componentWillReceiveProps(p,v),l.state!==o&&Mc.enqueueReplaceState(l,l.state,null)}function Yo(o,l){var p=l;if("ref"in l){p={};for(var v in l)v!=="ref"&&(p[v]=l[v])}if(o=o.defaultProps){p===l&&(p=Bf({},p));for(var T in o)p[T]===void 0&&(p[T]=o[T])}return p}function xf(o,l){try{var p=o.onUncaughtError;p(l.value,{componentStack:l.stack})}catch(v){setTimeout(function(){throw v})}}function md(o,l,p){try{var v=o.onCaughtError;v(p.value,{componentStack:p.stack,errorBoundary:l.tag===1?l.stateNode:null})}catch(T){setTimeout(function(){throw T})}}function gd(o,l,p){return p=Va(p),p.tag=3,p.payload={element:null},p.callback=function(){xf(o,l)},p}function qm(o){return o=Va(o),o.tag=3,o}function jm(o,l,p,v){var T=p.type.getDerivedStateFromError;if(typeof T=="function"){var C=v.value;o.payload=function(){return T(C)},o.callback=function(){md(l,p,v)}}var F=p.stateNode;F!==null&&typeof F.componentDidCatch=="function"&&(o.callback=function(){md(l,p,v),typeof T!="function"&&(kr===null?kr=new Set([this]):kr.add(this));var ee=v.stack;this.componentDidCatch(v.value,{componentStack:ee!==null?ee:""})})}function n_(o,l,p,v,T){if(p.flags|=32768,v!==null&&typeof v=="object"&&typeof v.then=="function"){if(l=p.alternate,l!==null&&ot(l,p,T,!0),p=wa.current,p!==null){switch(p.tag){case 31:case 13:return Ca===null?Ql():p.alternate===null&&si===0&&(si=3),p.flags&=-257,p.flags|=65536,p.lanes=T,v===lr?p.flags|=16384:(l=p.updateQueue,l===null?p.updateQueue=new Set([v]):l.add(v),$l(o,v,T)),!1;case 22:return p.flags|=65536,v===lr?p.flags|=16384:(l=p.updateQueue,l===null?(l={transitions:null,markerInstances:null,retryQueue:new Set([v])},p.updateQueue=l):(p=l.retryQueue,p===null?l.retryQueue=new Set([v]):p.add(v)),$l(o,v,T)),!1}throw Error(s(435,p.tag))}return $l(o,v,T),Ql(),!1}if(dn)return l=wa.current,l!==null?((l.flags&65536)===0&&(l.flags|=256),l.flags|=65536,l.lanes=T,v!==oh&&(o=Error(s(422),{cause:v}),He(be(o,p)))):(v!==oh&&(l=Error(s(423),{cause:v}),He(be(l,p))),o=o.current.alternate,o.flags|=65536,T&=-T,o.lanes|=T,v=be(v,p),T=gd(o.stateNode,v,T),Xo(o,T),si!==4&&(si=2)),!1;var C=Error(s(520),{cause:v});if(C=be(C,p),Tc===null?Tc=[C]:Tc.push(C),si!==4&&(si=2),l===null)return!0;v=be(v,p),p=l;do{switch(p.tag){case 3:return p.flags|=65536,o=T&-T,p.lanes|=o,o=gd(p.stateNode,v,o),Xo(p,o),!1;case 1:if(l=p.type,C=p.stateNode,(p.flags&128)===0&&(typeof l.getDerivedStateFromError=="function"||C!==null&&typeof C.componentDidCatch=="function"&&(kr===null||!kr.has(C))))return p.flags|=65536,T&=-T,p.lanes|=T,T=qm(T),jm(T,o,p,v),Xo(p,T),!1}p=p.return}while(p!==null);return!1}function Zi(o,l,p,v){l.child=o===null?xp(l,null,p,v):Ji(l,o.child,p,v)}function Ym(o,l,p,v,T){p=p.render;var C=l.ref;if("ref"in v){var F={};for(var ee in v)ee!=="ref"&&(F[ee]=v[ee])}else F=v;return Qe(l),v=xt(o,l,p,F,C,T),ee=Mn(),o!==null&&!qn?(Bn(o,l,T),qs(o,l,T)):(dn&&ee&&oe(l),l.flags|=1,Zi(o,l,v,T),l.child)}function Zm(o,l,p,v,T){if(o===null){var C=p.type;return typeof C=="function"&&!$o(C)&&C.defaultProps===void 0&&p.compare===null?(l.tag=15,l.type=C,Qm(o,l,C,v,T)):(o=Nr(p.type,null,v,l,l.mode,T),o.ref=l.ref,o.return=l,l.child=o)}if(C=o.child,!Ku(o,T)){var F=C.memoizedProps;if(p=p.compare,p=p!==null?p:Ue,p(F,v)&&o.ref===l.ref)return qs(o,l,T)}return l.flags|=1,o=qa(C,v),o.ref=l.ref,o.return=l,l.child=o}function Qm(o,l,p,v,T){if(o!==null){var C=o.memoizedProps;if(Ue(C,v)&&o.ref===l.ref)if(qn=!1,l.pendingProps=v=C,Ku(o,T))(o.flags&131072)!==0&&(qn=!0);else return l.lanes=o.lanes,qs(o,l,T)}return Sf(o,l,p,v,T)}function Km(o,l,p,v){var T=v.children,C=o!==null?o.memoizedState:null;if(o===null&&l.stateNode===null&&(l.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),v.mode==="hidden"){if((l.flags&128)!==0){if(C=C!==null?C.baseLanes|p:p,o!==null){for(v=l.child=o.child,T=0;v!==null;)T=T|v.lanes|v.childLanes,v=v.sibling;v=T&~C}else v=0,l.child=null;return kl(o,l,C,p,v)}if((p&536870912)!==0)l.memoizedState={baseLanes:0,cachePool:null},o!==null&&at(l,C!==null?C.cachePool:null),C!==null?eo(l,C):Xs(),ye(l);else return v=l.lanes=536870912,kl(o,l,C!==null?C.baseLanes|p:p,p,v)}else C!==null?(at(l,C.cachePool),eo(l,C),ue(),l.memoizedState=null):(o!==null&&at(l,null),Xs(),ue());return Zi(o,l,T,p),l.child}function Zo(o,l){return o!==null&&o.tag===22||l.stateNode!==null||(l.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),l.sibling}function kl(o,l,p,v,T){var C=Ge();return C=C===null?null:{parent:hi?Kn._currentValue:Kn._currentValue2,pool:C},l.memoizedState={baseLanes:p,cachePool:C},o!==null&&at(l,null),Xs(),ye(l),o!==null&&ot(o,l,v,!0),l.childLanes=T,null}function bf(o,l){return l=io({mode:l.mode,children:l.children},o.mode),l.ref=o.ref,o.child=l,l.return=o,l}function vd(o,l,p){return Ji(l,o.child,null,p),o=bf(l,l.pendingProps),o.flags|=2,Je(l),l.memoizedState=null,o}function Jm(o,l,p){var v=l.pendingProps,T=(l.flags&128)!==0;if(l.flags&=-129,o===null){if(dn){if(v.mode==="hidden")return o=bf(l,v),l.lanes=536870912,Zo(null,o);if(Se(l),(o=Qn)?(o=ap(o,pa),o!==null&&(l.memoizedState={dehydrated:o,treeContext:vs!==null?{id:Qi,overflow:Is}:null,retryLane:536870912,hydrationErrors:null},p=Id(o),p.return=l,l.child=p,Ui=l,Qn=null)):o=null,o===null)throw st(l);return l.lanes=536870912,null}return bf(l,v)}var C=o.memoizedState;if(C!==null){var F=C.dehydrated;if(Se(l),T)if(l.flags&256)l.flags&=-257,l=vd(o,l,p);else if(l.memoizedState!==null)l.child=o.child,l.flags|=128,l=null;else throw Error(s(558));else if(qn||ot(o,l,p,!1),T=(p&o.childLanes)!==0,qn||T){if(v=rn,v!==null&&(F=P(v,p),F!==0&&F!==C.retryLane))throw C.retryLane=F,na(o,F),ti(v,o,F),ga;Ql(),l=vd(o,l,p)}else o=C.treeContext,Zn&&(Qn=Og(F),Ui=l,dn=!0,or=null,pa=!1,o!==null&&Fe(l,o)),l=bf(l,v),l.flags|=4096;return l}return o=qa(o.child,{mode:v.mode,children:v.children}),o.ref=l.ref,l.child=o,o.return=l,o}function Qu(o,l){var p=l.ref;if(p===null)o!==null&&o.ref!==null&&(l.flags|=4194816);else{if(typeof p!="function"&&typeof p!="object")throw Error(s(284));(o===null||o.ref!==p)&&(l.flags|=4194816)}}function Sf(o,l,p,v,T){return Qe(l),p=xt(o,l,p,v,void 0,T),v=Mn(),o!==null&&!qn?(Bn(o,l,T),qs(o,l,T)):(dn&&v&&oe(l),l.flags|=1,Zi(o,l,p,T),l.child)}function yd(o,l,p,v,T,C){return Qe(l),l.updateQueue=null,p=St(l,v,p,T),Lt(o),v=Mn(),o!==null&&!qn?(Bn(o,l,C),qs(o,l,C)):(dn&&v&&oe(l),l.flags|=1,Zi(o,l,p,C),l.child)}function Qo(o,l,p,v,T){if(Qe(l),l.stateNode===null){var C=ar,F=p.contextType;typeof F=="object"&&F!==null&&(C=G(F)),C=new p(v,C),l.memoizedState=C.state!==null&&C.state!==void 0?C.state:null,C.updater=Mc,l.stateNode=C,C._reactInternals=l,C=l.stateNode,C.props=v,C.state=l.memoizedState,C.refs={},Ri(l),F=p.contextType,C.context=typeof F=="object"&&F!==null?G(F):ar,C.state=l.memoizedState,F=p.getDerivedStateFromProps,typeof F=="function"&&(pd(l,p,F,v),C.state=l.memoizedState),typeof p.getDerivedStateFromProps=="function"||typeof C.getSnapshotBeforeUpdate=="function"||typeof C.UNSAFE_componentWillMount!="function"&&typeof C.componentWillMount!="function"||(F=C.state,typeof C.componentWillMount=="function"&&C.componentWillMount(),typeof C.UNSAFE_componentWillMount=="function"&&C.UNSAFE_componentWillMount(),F!==C.state&&Mc.enqueueReplaceState(C,C.state,null),br(l,v,C,T),Ds(),C.state=l.memoizedState),typeof C.componentDidMount=="function"&&(l.flags|=4194308),v=!0}else if(o===null){C=l.stateNode;var ee=l.memoizedProps,we=Yo(p,ee);C.props=we;var ke=C.context,it=p.contextType;F=ar,typeof it=="object"&&it!==null&&(F=G(it));var We=p.getDerivedStateFromProps;it=typeof We=="function"||typeof C.getSnapshotBeforeUpdate=="function",ee=l.pendingProps!==ee,it||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(ee||ke!==F)&&Wm(l,C,v,F),Za=!1;var gt=l.memoizedState;C.state=gt,br(l,v,C,T),Ds(),ke=l.memoizedState,ee||gt!==ke||Za?(typeof We=="function"&&(pd(l,p,We,v),ke=l.memoizedState),(we=Za||_f(l,p,we,v,gt,ke,F))?(it||typeof C.UNSAFE_componentWillMount!="function"&&typeof C.componentWillMount!="function"||(typeof C.componentWillMount=="function"&&C.componentWillMount(),typeof C.UNSAFE_componentWillMount=="function"&&C.UNSAFE_componentWillMount()),typeof C.componentDidMount=="function"&&(l.flags|=4194308)):(typeof C.componentDidMount=="function"&&(l.flags|=4194308),l.memoizedProps=v,l.memoizedState=ke),C.props=v,C.state=ke,C.context=F,v=we):(typeof C.componentDidMount=="function"&&(l.flags|=4194308),v=!1)}else{C=l.stateNode,ka(o,l),F=l.memoizedProps,it=Yo(p,F),C.props=it,We=l.pendingProps,gt=C.context,ke=p.contextType,we=ar,typeof ke=="object"&&ke!==null&&(we=G(ke)),ee=p.getDerivedStateFromProps,(ke=typeof ee=="function"||typeof C.getSnapshotBeforeUpdate=="function")||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(F!==We||gt!==we)&&Wm(l,C,v,we),Za=!1,gt=l.memoizedState,C.state=gt,br(l,v,C,T),Ds();var qt=l.memoizedState;F!==We||gt!==qt||Za||o!==null&&o.dependencies!==null&&Tt(o.dependencies)?(typeof ee=="function"&&(pd(l,p,ee,v),qt=l.memoizedState),(it=Za||_f(l,p,it,v,gt,qt,we)||o!==null&&o.dependencies!==null&&Tt(o.dependencies))?(ke||typeof C.UNSAFE_componentWillUpdate!="function"&&typeof C.componentWillUpdate!="function"||(typeof C.componentWillUpdate=="function"&&C.componentWillUpdate(v,qt,we),typeof C.UNSAFE_componentWillUpdate=="function"&&C.UNSAFE_componentWillUpdate(v,qt,we)),typeof C.componentDidUpdate=="function"&&(l.flags|=4),typeof C.getSnapshotBeforeUpdate=="function"&&(l.flags|=1024)):(typeof C.componentDidUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=1024),l.memoizedProps=v,l.memoizedState=qt),C.props=v,C.state=qt,C.context=we,v=it):(typeof C.componentDidUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=1024),v=!1)}return C=v,Qu(o,l),v=(l.flags&128)!==0,C||v?(C=l.stateNode,p=v&&typeof p.getDerivedStateFromError!="function"?null:C.render(),l.flags|=1,o!==null&&v?(l.child=Ji(l,o.child,null,T),l.child=Ji(l,null,p,T)):Zi(o,l,p,T),l.memoizedState=C.state,o=l.child):o=qs(o,l,T),o}function $m(o,l,p,v){return Nt(),l.flags|=256,Zi(o,l,p,v),l.child}function _d(o){return{baseLanes:o,cachePool:Xe()}}function xd(o,l,p){return o=o!==null?o.childLanes&~p:0,l&&(o|=va),o}function bd(o,l,p){var v=l.pendingProps,T=!1,C=(l.flags&128)!==0,F;if((F=C)||(F=o!==null&&o.memoizedState===null?!1:(ui.current&2)!==0),F&&(T=!0,l.flags&=-129),F=(l.flags&32)!==0,l.flags&=-33,o===null){if(dn){if(T?re(l):ue(),(o=Qn)?(o=Fg(o,pa),o!==null&&(l.memoizedState={dehydrated:o,treeContext:vs!==null?{id:Qi,overflow:Is}:null,retryLane:536870912,hydrationErrors:null},p=Id(o),p.return=l,l.child=p,Ui=l,Qn=null)):o=null,o===null)throw st(l);return qf(o)?l.lanes=32:l.lanes=536870912,null}var ee=v.children;return v=v.fallback,T?(ue(),T=l.mode,ee=io({mode:"hidden",children:ee},T),v=hs(v,T,p,null),ee.return=l,v.return=l,ee.sibling=v,l.child=ee,v=l.child,v.memoizedState=_d(p),v.childLanes=xd(o,F,p),l.memoizedState=gl,Zo(null,v)):(re(l),Mf(l,ee))}var we=o.memoizedState;if(we!==null&&(ee=we.dehydrated,ee!==null)){if(C)l.flags&256?(re(l),l.flags&=-257,l=Ko(o,l,p)):l.memoizedState!==null?(ue(),l.child=o.child,l.flags|=128,l=null):(ue(),ee=v.fallback,T=l.mode,v=io({mode:"visible",children:v.children},T),ee=hs(ee,T,p,null),ee.flags|=2,v.return=l,ee.return=l,v.sibling=ee,l.child=v,Ji(l,o.child,null,p),v=l.child,v.memoizedState=_d(p),v.childLanes=xd(o,F,p),l.memoizedState=gl,l=Zo(null,v));else if(re(l),qf(ee))F=jf(ee).digest,v=Error(s(419)),v.stack="",v.digest=F,He({value:v,source:null,stack:null}),l=Ko(o,l,p);else if(qn||ot(o,l,p,!1),F=(p&o.childLanes)!==0,qn||F){if(F=rn,F!==null&&(v=P(F,p),v!==0&&v!==we.retryLane))throw we.retryLane=v,na(o,v),ti(F,o,v),ga;vo(ee)||Ql(),l=Ko(o,l,p)}else vo(ee)?(l.flags|=192,l.child=o.child,l=null):(o=we.treeContext,Zn&&(Qn=Pg(ee),Ui=l,dn=!0,or=null,pa=!1,o!==null&&Fe(l,o)),l=Mf(l,v.children),l.flags|=4096);return l}return T?(ue(),ee=v.fallback,T=l.mode,we=o.child,C=we.sibling,v=qa(we,{mode:"hidden",children:v.children}),v.subtreeFlags=we.subtreeFlags&65011712,C!==null?ee=qa(C,ee):(ee=hs(ee,T,p,null),ee.flags|=2),ee.return=l,v.return=l,v.sibling=ee,l.child=v,Zo(null,v),v=l.child,ee=o.child.memoizedState,ee===null?ee=_d(p):(T=ee.cachePool,T!==null?(we=hi?Kn._currentValue:Kn._currentValue2,T=T.parent!==we?{parent:we,pool:we}:T):T=Xe(),ee={baseLanes:ee.baseLanes|p,cachePool:T}),v.memoizedState=ee,v.childLanes=xd(o,F,p),l.memoizedState=gl,Zo(o.child,v)):(re(l),p=o.child,o=p.sibling,p=qa(p,{mode:"visible",children:v.children}),p.return=l,p.sibling=null,o!==null&&(F=l.deletions,F===null?(l.deletions=[o],l.flags|=16):F.push(o)),l.child=p,l.memoizedState=null,p)}function Mf(o,l){return l=io({mode:"visible",children:l},o.mode),l.return=o,o.child=l}function io(o,l){return o=t(22,o,null,l),o.lanes=0,o}function Ko(o,l,p){return Ji(l,o.child,null,p),o=Mf(l,l.pendingProps.children),o.flags|=2,l.memoizedState=null,o}function eg(o,l,p){o.lanes|=l;var v=o.alternate;v!==null&&(v.lanes|=l),Q(o.return,l,p)}function Vl(o,l,p,v,T,C){var F=o.memoizedState;F===null?o.memoizedState={isBackwards:l,rendering:null,renderingStartTime:0,last:v,tail:p,tailMode:T,treeForkCount:C}:(F.isBackwards=l,F.rendering=null,F.renderingStartTime=0,F.last=v,F.tail=p,F.tailMode=T,F.treeForkCount=C)}function Sd(o,l,p){var v=l.pendingProps,T=v.revealOrder,C=v.tail;v=v.children;var F=ui.current,ee=(F&2)!==0;if(ee?(F=F&1|2,l.flags|=128):F&=1,A(ui,F),Zi(o,l,v,p),v=dn?xc:0,!ee&&o!==null&&(o.flags&128)!==0)e:for(o=l.child;o!==null;){if(o.tag===13)o.memoizedState!==null&&eg(o,p,l);else if(o.tag===19)eg(o,p,l);else if(o.child!==null){o.child.return=o,o=o.child;continue}if(o===l)break e;for(;o.sibling===null;){if(o.return===null||o.return===l)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}switch(T){case"forwards":for(p=l.child,T=null;p!==null;)o=p.alternate,o!==null&&mt(o)===null&&(T=p),p=p.sibling;p=T,p===null?(T=l.child,l.child=null):(T=p.sibling,p.sibling=null),Vl(l,!1,T,p,C,v);break;case"backwards":case"unstable_legacy-backwards":for(p=null,T=l.child,l.child=null;T!==null;){if(o=T.alternate,o!==null&&mt(o)===null){l.child=T;break}o=T.sibling,T.sibling=p,p=T,T=o}Vl(l,!0,p,null,C,v);break;case"together":Vl(l,!1,null,null,void 0,v);break;default:l.memoizedState=null}return l.child}function qs(o,l,p){if(o!==null&&(l.dependencies=o.dependencies),Fr|=l.lanes,(p&l.childLanes)===0)if(o!==null){if(ot(o,l,p,!1),(p&l.childLanes)===0)return null}else return null;if(o!==null&&l.child!==o.child)throw Error(s(153));if(l.child!==null){for(o=l.child,p=qa(o,o.pendingProps),l.child=p,p.return=l;o.sibling!==null;)o=o.sibling,p=p.sibling=qa(o,o.pendingProps),p.return=l;p.sibling=null}return l.child}function Ku(o,l){return(o.lanes&l)!==0?!0:(o=o.dependencies,!!(o!==null&&Tt(o)))}function Md(o,l,p){switch(l.tag){case 3:lt(l,l.stateNode.containerInfo),Oe(l,Kn,o.memoizedState.cache),Nt();break;case 27:case 5:Re(l);break;case 4:lt(l,l.stateNode.containerInfo);break;case 10:Oe(l,l.type,l.memoizedProps.value);break;case 31:if(l.memoizedState!==null)return l.flags|=128,Se(l),null;break;case 13:var v=l.memoizedState;if(v!==null)return v.dehydrated!==null?(re(l),l.flags|=128,null):(p&l.child.childLanes)!==0?bd(o,l,p):(re(l),o=qs(o,l,p),o!==null?o.sibling:null);re(l);break;case 19:var T=(o.flags&128)!==0;if(v=(p&l.childLanes)!==0,v||(ot(o,l,p,!1),v=(p&l.childLanes)!==0),T){if(v)return Sd(o,l,p);l.flags|=128}if(T=l.memoizedState,T!==null&&(T.rendering=null,T.tail=null,T.lastEffect=null),A(ui,ui.current),v)break;return null;case 22:return l.lanes=0,Km(o,l,p,l.pendingProps);case 24:Oe(l,Kn,o.memoizedState.cache)}return qs(o,l,p)}function Ed(o,l,p){if(o!==null)if(o.memoizedProps!==l.pendingProps)qn=!0;else{if(!Ku(o,p)&&(l.flags&128)===0)return qn=!1,Md(o,l,p);qn=(o.flags&131072)!==0}else qn=!1,dn&&(l.flags&1048576)!==0&&X(l,xc,l.index);switch(l.lanes=0,l.tag){case 16:e:{var v=l.pendingProps;if(o=Jt(l.elementType),l.type=o,typeof o=="function")$o(o)?(v=Yo(o,v),l.tag=1,l=Qo(null,l,o,v,p)):(l.tag=0,l=Sf(null,l,o,v,p));else{if(o!=null){var T=o.$$typeof;if(T===eu){l.tag=11,l=Ym(null,l,o,v,p);break e}else if(T===kf){l.tag=14,l=Zm(null,l,o,v,p);break e}}throw l=x(o)||o,Error(s(306,l,""))}}return l;case 0:return Sf(o,l,l.type,l.pendingProps,p);case 1:return v=l.type,T=Yo(v,l.pendingProps),Qo(o,l,v,T,p);case 3:e:{if(lt(l,l.stateNode.containerInfo),o===null)throw Error(s(387));var C=l.pendingProps;T=l.memoizedState,v=T.element,ka(o,l),br(l,C,null,p);var F=l.memoizedState;if(C=F.cache,Oe(l,Kn,C),C!==T.cache&&Et(l,[Kn],p,!0),Ds(),C=F.element,Zn&&T.isDehydrated)if(T={element:C,isDehydrated:!1,cache:F.cache},l.updateQueue.baseState=T,l.memoizedState=T,l.flags&256){l=$m(o,l,C,p);break e}else if(C!==v){v=be(Error(s(424)),l),He(v),l=$m(o,l,C,p);break e}else for(Zn&&(Qn=Ig(l.stateNode.containerInfo),Ui=l,dn=!0,or=null,pa=!0),p=xp(l,null,C,p),l.child=p;p;)p.flags=p.flags&-3|4096,p=p.sibling;else{if(Nt(),C===v){l=qs(o,l,p);break e}Zi(o,l,C,p)}l=l.child}return l;case 26:if(ms)return Qu(o,l),o===null?(p=up(l.type,null,l.pendingProps,null))?l.memoizedState=p:dn||(l.stateNode=Kf(l.type,l.pendingProps,Ki.current,l)):l.memoizedState=up(l.type,o.memoizedProps,l.pendingProps,o.memoizedState),null;case 27:if(Li)return Re(l),o===null&&Li&&dn&&(v=l.stateNode=Jf(l.type,l.pendingProps,Ki.current,Xi.current,!1),Ui=l,pa=!0,Qn=ip(l.type,v,Qn)),Zi(o,l,l.pendingProps.children,p),Qu(o,l),o===null&&(l.flags|=4194304),l.child;case 5:return o===null&&dn&&(Yg(l.type,l.pendingProps,Xi.current),(T=v=Qn)&&(v=zg(v,l.type,l.pendingProps,pa),v!==null?(l.stateNode=v,Ui=l,Qn=Ug(v),pa=!1,T=!0):T=!1),T||st(l)),Re(l),T=l.type,C=l.pendingProps,F=o!==null?o.memoizedProps:null,v=C.children,da(T,C)?v=null:F!==null&&da(T,F)&&(l.flags|=32),l.memoizedState!==null&&(T=xt(o,l,Pt,null,null,p),hi?ll._currentValue=T:ll._currentValue2=T),Qu(o,l),Zi(o,l,v,p),l.child;case 6:return o===null&&dn&&(lp(l.pendingProps,Xi.current),(o=p=Qn)&&(p=Bg(p,l.pendingProps,pa),p!==null?(l.stateNode=p,Ui=l,Qn=null,o=!0):o=!1),o||st(l)),null;case 13:return bd(o,l,p);case 4:return lt(l,l.stateNode.containerInfo),v=l.pendingProps,o===null?l.child=Ji(l,null,v,p):Zi(o,l,v,p),l.child;case 11:return Ym(o,l,l.type,l.pendingProps,p);case 7:return Zi(o,l,l.pendingProps,p),l.child;case 8:return Zi(o,l,l.pendingProps.children,p),l.child;case 12:return Zi(o,l,l.pendingProps.children,p),l.child;case 10:return v=l.pendingProps,Oe(l,l.type,v.value),Zi(o,l,v.children,p),l.child;case 9:return T=l.type._context,v=l.pendingProps.children,Qe(l),T=G(T),v=v(T),l.flags|=1,Zi(o,l,v,p),l.child;case 14:return Zm(o,l,l.type,l.pendingProps,p);case 15:return Qm(o,l,l.type,l.pendingProps,p);case 19:return Sd(o,l,p);case 31:return Jm(o,l,p);case 22:return Km(o,l,p,l.pendingProps);case 24:return Qe(l),v=G(Kn),o===null?(T=Ge(),T===null&&(T=rn,C=Te(),T.pooledCache=C,C.refCount++,C!==null&&(T.pooledCacheLanes|=p),T=C),l.memoizedState={parent:v,cache:T},Ri(l),Oe(l,Kn,T)):((o.lanes&p)!==0&&(ka(o,l),br(l,null,null,p),Ds()),T=o.memoizedState,C=l.memoizedState,T.parent!==v?(T={parent:v,cache:v},l.memoizedState=T,l.lanes===0&&(l.memoizedState=l.updateQueue.baseState=T),Oe(l,Kn,v)):(v=C.cache,Oe(l,Kn,v),v!==T.cache&&Et(l,[Kn],p,!0))),Zi(o,l,l.pendingProps.children,p),l.child;case 29:throw l.pendingProps}throw Error(s(156,l.tag))}function os(o){o.flags|=4}function Ju(o){ja&&(o.flags|=8)}function tg(o,l){if(o!==null&&o.child===l.child)return!1;if((l.flags&16)!==0)return!0;for(o=l.child;o!==null;){if((o.flags&8218)!==0||(o.subtreeFlags&8218)!==0)return!0;o=o.sibling}return!1}function Td(o,l,p,v){if(gn)for(p=l.child;p!==null;){if(p.tag===5||p.tag===6)hc(o,p.stateNode);else if(!(p.tag===4||Li&&p.tag===27)&&p.child!==null){p.child.return=p,p=p.child;continue}if(p===l)break;for(;p.sibling===null;){if(p.return===null||p.return===l)return;p=p.return}p.sibling.return=p.return,p=p.sibling}else if(ja)for(var T=l.child;T!==null;){if(T.tag===5){var C=T.stateNode;p&&v&&(C=Rg(C,T.type,T.memoizedProps)),hc(o,C)}else if(T.tag===6)C=T.stateNode,p&&v&&(C=tp(C,T.memoizedProps)),hc(o,C);else if(T.tag!==4){if(T.tag===22&&T.memoizedState!==null)C=T.child,C!==null&&(C.return=T),Td(o,T,!0,!0);else if(T.child!==null){T.child.return=T,T=T.child;continue}}if(T===l)break;for(;T.sibling===null;){if(T.return===null||T.return===l)return;T=T.return}T.sibling.return=T.return,T=T.sibling}}function ng(o,l,p,v){var T=!1;if(ja)for(var C=l.child;C!==null;){if(C.tag===5){var F=C.stateNode;p&&v&&(F=Rg(F,C.type,C.memoizedProps)),$d(o,F)}else if(C.tag===6)F=C.stateNode,p&&v&&(F=tp(F,C.memoizedProps)),$d(o,F);else if(C.tag!==4){if(C.tag===22&&C.memoizedState!==null)T=C.child,T!==null&&(T.return=C),ng(o,C,!0,!0),T=!0;else if(C.child!==null){C.child.return=C,C=C.child;continue}}if(C===l)break;for(;C.sibling===null;){if(C.return===null||C.return===l)return T;C=C.return}C.sibling.return=C.return,C=C.sibling}return T}function ig(o,l){if(ja&&tg(o,l)){o=l.stateNode;var p=o.containerInfo,v=Jd();ng(v,l,!1,!1),o.pendingChildren=v,os(l),Cg(p,v)}}function Ad(o,l,p,v){if(gn)o.memoizedProps!==v&&os(l);else if(ja){var T=o.stateNode,C=o.memoizedProps;if((o=tg(o,l))||C!==v){var F=Xi.current;C=wg(T,p,C,v,!o,null),C===T?l.stateNode=T:(Ju(l),Ma(C,p,v,F)&&os(l),l.stateNode=C,o&&Td(C,l,!1,!1))}else l.stateNode=T}}function ca(o,l,p,v,T){if((o.mode&32)!==0&&(p===null?dc(l,v):su(l,p,v))){if(o.flags|=16777216,(T&335544128)===T||Vd(l,v))if(ni(o.stateNode,l,v))o.flags|=8192;else if(mn())o.flags|=8192;else throw ma=lr,uh}else o.flags&=-16777217}function Hl(o,l){if(dp(l)){if(o.flags|=16777216,!pp(l))if(mn())o.flags|=8192;else throw ma=lr,uh}else o.flags&=-16777217}function $u(o,l){l!==null&&(o.flags|=4),o.flags&16384&&(l=o.tag!==22?U():536870912,o.lanes|=l,pu|=l)}function Gl(o,l){if(!dn)switch(o.tailMode){case"hidden":l=o.tail;for(var p=null;l!==null;)l.alternate!==null&&(p=l),l=l.sibling;p===null?o.tail=null:p.sibling=null;break;case"collapsed":p=o.tail;for(var v=null;p!==null;)p.alternate!==null&&(v=p),p=p.sibling;v===null?l||o.tail===null?o.tail=null:o.tail.sibling=null:v.sibling=null}}function Fn(o){var l=o.alternate!==null&&o.alternate.child===o.child,p=0,v=0;if(l)for(var T=o.child;T!==null;)p|=T.lanes|T.childLanes,v|=T.subtreeFlags&65011712,v|=T.flags&65011712,T.return=o,T=T.sibling;else for(T=o.child;T!==null;)p|=T.lanes|T.childLanes,v|=T.subtreeFlags,v|=T.flags,T.return=o,T=T.sibling;return o.subtreeFlags|=v,o.childLanes=p,l}function ag(o,l,p){var v=l.pendingProps;switch(Ae(l),l.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Fn(l),null;case 1:return Fn(l),null;case 3:return p=l.stateNode,v=null,o!==null&&(v=o.memoizedState.cache),l.memoizedState.cache!==v&&(l.flags|=2048),nt(Kn),de(),p.pendingContext&&(p.context=p.pendingContext,p.pendingContext=null),(o===null||o.child===null)&&(tn(l)?os(l):o===null||o.memoizedState.isDehydrated&&(l.flags&256)===0||(l.flags|=1024,Le())),ig(o,l),Fn(l),null;case 26:if(ms){var T=l.type,C=l.memoizedState;return o===null?(os(l),C!==null?(Fn(l),Hl(l,C)):(Fn(l),ca(l,T,null,v,p))):C?C!==o.memoizedState?(os(l),Fn(l),Hl(l,C)):(Fn(l),l.flags&=-16777217):(C=o.memoizedProps,gn?C!==v&&os(l):Ad(o,l,T,v),Fn(l),ca(l,T,C,v,p)),null}case 27:if(Li){if(tt(l),p=Ki.current,T=l.type,o!==null&&l.stateNode!=null)gn?o.memoizedProps!==v&&os(l):Ad(o,l,T,v);else{if(!v){if(l.stateNode===null)throw Error(s(166));return Fn(l),null}o=Xi.current,tn(l)?ht(l,o):(o=Jf(T,v,p,o,!0),l.stateNode=o,os(l))}return Fn(l),null}case 5:if(tt(l),T=l.type,o!==null&&l.stateNode!=null)Ad(o,l,T,v);else{if(!v){if(l.stateNode===null)throw Error(s(166));return Fn(l),null}if(C=Xi.current,tn(l))ht(l,C),Wg(l.stateNode,T,v,C)&&(l.flags|=64);else{var F=Fd(T,v,Ki.current,C,l);Ju(l),Td(F,l,!1,!1),l.stateNode=F,Ma(F,T,v,C)&&os(l)}}return Fn(l),ca(l,l.type,o===null?null:o.memoizedProps,l.pendingProps,p),null;case 6:if(o&&l.stateNode!=null)p=o.memoizedProps,gn?p!==v&&os(l):ja&&(p!==v?(o=Ki.current,p=Xi.current,Ju(l),l.stateNode=Ur(v,o,p,l)):l.stateNode=o.stateNode);else{if(typeof v!="string"&&l.stateNode===null)throw Error(s(166));if(o=Ki.current,p=Xi.current,tn(l)){if(!Zn)throw Error(s(176));if(o=l.stateNode,p=l.memoizedProps,v=null,T=Ui,T!==null)switch(T.tag){case 27:case 5:v=T.memoizedProps}o_(o,p,l,v)||st(l,!0)}else Ju(l),l.stateNode=Ur(v,o,p,l)}return Fn(l),null;case 31:if(p=l.memoizedState,o===null||o.memoizedState!==null){if(v=tn(l),p!==null){if(o===null){if(!v)throw Error(s(318));if(!Zn)throw Error(s(556));if(o=l.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(s(557));sp(o,l)}else Nt(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;Fn(l),o=!1}else p=Le(),o!==null&&o.memoizedState!==null&&(o.memoizedState.hydrationErrors=p),o=!0;if(!o)return l.flags&256?(Je(l),l):(Je(l),null);if((l.flags&128)!==0)throw Error(s(558))}return Fn(l),null;case 13:if(v=l.memoizedState,o===null||o.memoizedState!==null&&o.memoizedState.dehydrated!==null){if(T=tn(l),v!==null&&v.dehydrated!==null){if(o===null){if(!T)throw Error(s(318));if(!Zn)throw Error(s(344));if(T=l.memoizedState,T=T!==null?T.dehydrated:null,!T)throw Error(s(317));Vg(T,l)}else Nt(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;Fn(l),T=!1}else T=Le(),o!==null&&o.memoizedState!==null&&(o.memoizedState.hydrationErrors=T),T=!0;if(!T)return l.flags&256?(Je(l),l):(Je(l),null)}return Je(l),(l.flags&128)!==0?(l.lanes=p,l):(p=v!==null,o=o!==null&&o.memoizedState!==null,p&&(v=l.child,T=null,v.alternate!==null&&v.alternate.memoizedState!==null&&v.alternate.memoizedState.cachePool!==null&&(T=v.alternate.memoizedState.cachePool.pool),C=null,v.memoizedState!==null&&v.memoizedState.cachePool!==null&&(C=v.memoizedState.cachePool.pool),C!==T&&(v.flags|=2048)),p!==o&&p&&(l.child.flags|=8192),$u(l,l.updateQueue),Fn(l),null);case 4:return de(),ig(o,l),o===null&&On(l.stateNode.containerInfo),Fn(l),null;case 10:return nt(l.type),Fn(l),null;case 19:if(M(ui),v=l.memoizedState,v===null)return Fn(l),null;if(T=(l.flags&128)!==0,C=v.rendering,C===null)if(T)Gl(v,!1);else{if(si!==0||o!==null&&(o.flags&128)!==0)for(o=l.child;o!==null;){if(C=mt(o),C!==null){for(l.flags|=128,Gl(v,!1),o=C.updateQueue,l.updateQueue=o,$u(l,o),l.subtreeFlags=0,o=p,p=l.child;p!==null;)Of(p,o),p=p.sibling;return A(ui,ui.current&1|2),dn&&Ne(l,v.treeForkCount),l.child}o=o.sibling}v.tail!==null&&aa()>Co&&(l.flags|=128,T=!0,Gl(v,!1),l.lanes=4194304)}else{if(!T)if(o=mt(C),o!==null){if(l.flags|=128,T=!0,o=o.updateQueue,l.updateQueue=o,$u(l,o),Gl(v,!0),v.tail===null&&v.tailMode==="hidden"&&!C.alternate&&!dn)return Fn(l),null}else 2*aa()-v.renderingStartTime>Co&&p!==536870912&&(l.flags|=128,T=!0,Gl(v,!1),l.lanes=4194304);v.isBackwards?(C.sibling=l.child,l.child=C):(o=v.last,o!==null?o.sibling=C:l.child=C,v.last=C)}return v.tail!==null?(o=v.tail,v.rendering=o,v.tail=o.sibling,v.renderingStartTime=aa(),o.sibling=null,p=ui.current,A(ui,T?p&1|2:p&1),dn&&Ne(l,v.treeForkCount),o):(Fn(l),null);case 22:case 23:return Je(l),k(),v=l.memoizedState!==null,o!==null?o.memoizedState!==null!==v&&(l.flags|=8192):v&&(l.flags|=8192),v?(p&536870912)!==0&&(l.flags&128)===0&&(Fn(l),l.subtreeFlags&6&&(l.flags|=8192)):Fn(l),p=l.updateQueue,p!==null&&$u(l,p.retryQueue),p=null,o!==null&&o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(p=o.memoizedState.cachePool.pool),v=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(v=l.memoizedState.cachePool.pool),v!==p&&(l.flags|=2048),o!==null&&M(xo),null;case 24:return p=null,o!==null&&(p=o.memoizedState.cache),l.memoizedState.cache!==p&&(l.flags|=2048),nt(Kn),Fn(l),null;case 25:return null;case 30:return null}throw Error(s(156,l.tag))}function wd(o,l){switch(Ae(l),l.tag){case 1:return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 3:return nt(Kn),de(),o=l.flags,(o&65536)!==0&&(o&128)===0?(l.flags=o&-65537|128,l):null;case 26:case 27:case 5:return tt(l),null;case 31:if(l.memoizedState!==null){if(Je(l),l.alternate===null)throw Error(s(340));Nt()}return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 13:if(Je(l),o=l.memoizedState,o!==null&&o.dehydrated!==null){if(l.alternate===null)throw Error(s(340));Nt()}return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 19:return M(ui),null;case 4:return de(),null;case 10:return nt(l.type),null;case 22:case 23:return Je(l),k(),o!==null&&M(xo),o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 24:return nt(Kn),null;case 25:return null;default:return null}}function sg(o,l){switch(Ae(l),l.tag){case 3:nt(Kn),de();break;case 26:case 27:case 5:tt(l);break;case 4:de();break;case 31:l.memoizedState!==null&&Je(l);break;case 13:Je(l);break;case 19:M(ui);break;case 10:nt(l.type);break;case 22:case 23:Je(l),k(),o!==null&&M(xo);break;case 24:nt(Kn)}}function js(o,l){try{var p=l.updateQueue,v=p!==null?p.lastEffect:null;if(v!==null){var T=v.next;p=T;do{if((p.tag&o)===o){v=void 0;var C=p.create,F=p.inst;v=C(),F.destroy=v}p=p.next}while(p!==T)}}catch(ee){Vt(l,l.return,ee)}}function Ys(o,l,p){try{var v=l.updateQueue,T=v!==null?v.lastEffect:null;if(T!==null){var C=T.next;v=C;do{if((v.tag&o)===o){var F=v.inst,ee=F.destroy;if(ee!==void 0){F.destroy=void 0,T=l;var we=p,ke=ee;try{ke()}catch(it){Vt(T,we,it)}}}v=v.next}while(v!==C)}}catch(it){Vt(l,l.return,it)}}function Xl(o){var l=o.updateQueue;if(l!==null){var p=o.stateNode;try{Mr(l,p)}catch(v){Vt(o,o.return,v)}}}function Ef(o,l,p){p.props=Yo(o.type,o.memoizedProps),p.state=o.memoizedState;try{p.componentWillUnmount()}catch(v){Vt(o,l,v)}}function Wl(o,l){try{var p=o.ref;if(p!==null){switch(o.tag){case 26:case 27:case 5:var v=nu(o.stateNode);break;case 30:v=o.stateNode;break;default:v=o.stateNode}typeof p=="function"?o.refCleanup=p(v):p.current=v}}catch(T){Vt(o,l,T)}}function ia(o,l){var p=o.ref,v=o.refCleanup;if(p!==null)if(typeof v=="function")try{v()}catch(T){Vt(o,l,T)}finally{o.refCleanup=null,o=o.alternate,o!=null&&(o.refCleanup=null)}else if(typeof p=="function")try{p(null)}catch(T){Vt(o,l,T)}else p.current=null}function Jo(o){var l=o.type,p=o.memoizedProps,v=o.stateNode;try{_g(v,l,p,o)}catch(T){Vt(o,o.return,T)}}function ec(o,l,p){try{xg(o.stateNode,o.type,p,l,o)}catch(v){Vt(o,o.return,v)}}function Cd(o){return o.tag===5||o.tag===3||(ms?o.tag===26:!1)||(Li?o.tag===27&&ul(o.type):!1)||o.tag===4}function Tr(o){e:for(;;){for(;o.sibling===null;){if(o.return===null||Cd(o.return))return null;o=o.return}for(o.sibling.return=o.return,o=o.sibling;o.tag!==5&&o.tag!==6&&o.tag!==18;){if(Li&&o.tag===27&&ul(o.type)||o.flags&2||o.child===null||o.tag===4)continue e;o.child.return=o,o=o.child}if(!(o.flags&2))return o.stateNode}}function Tf(o,l,p){var v=o.tag;if(v===5||v===6)o=o.stateNode,l?Sg(p,o,l):Yd(p,o);else if(v!==4&&(Li&&v===27&&ul(o.type)&&(p=o.stateNode,l=null),o=o.child,o!==null))for(Tf(o,l,p),o=o.sibling;o!==null;)Tf(o,l,p),o=o.sibling}function tc(o,l,p){var v=o.tag;if(v===5||v===6)o=o.stateNode,l?bg(p,o,l):jd(p,o);else if(v!==4&&(Li&&v===27&&ul(o.type)&&(p=o.stateNode),o=o.child,o!==null))for(tc(o,l,p),o=o.sibling;o!==null;)tc(o,l,p),o=o.sibling}function Rd(o,l,p){o=o.containerInfo;try{ep(o,p)}catch(v){Vt(l,l.return,v)}}function rg(o){var l=o.stateNode,p=o.memoizedProps;try{Mi(o.type,p,l,o)}catch(v){Vt(o,o.return,v)}}function i_(o,l){for(Vf(o.containerInfo),mi=l;mi!==null;)if(o=mi,l=o.child,(o.subtreeFlags&1028)!==0&&l!==null)l.return=o,mi=l;else for(;mi!==null;){o=mi;var p=o.alternate;switch(l=o.flags,o.tag){case 0:if((l&4)!==0&&(l=o.updateQueue,l=l!==null?l.events:null,l!==null))for(var v=0;v";case fu:return":has("+(Yl(o)||"")+")";case hu:return'[role="'+o.value+'"]';case Eo:return'"'+o.value+'"';case Ec:return'[data-testname="'+o.value+'"]';default:throw Error(s(365))}}function Zl(o,l){var p=[];o=[o,0];for(var v=0;vp?32:p;p=Ut.T;var T=ps();try{hn(v),Ut.T=null,v=hh,hh=null;var C=Vr,F=hr;if(Ti=0,_l=Vr=null,hr=0,(cn&6)!==0)throw Error(s(331));var ee=cn;if(cn|=4,Rf(C.current),wf(C,C.current,F,v),cn=ee,Ke(0,!1),Aa&&typeof Aa.onPostCommitFiberRoot=="function")try{Aa.onPostCommitFiberRoot(hl,C)}catch{}return!0}finally{hn(T),Ut.T=p,If(o,l)}}function fo(o,l,p){l=be(p,l),l=gd(o.stateNode,l,2),o=Ha(o,l,2),o!==null&&(z(o,2),dt(o))}function Vt(o,l,p){if(o.tag===3)fo(o,o,p);else for(;l!==null;){if(l.tag===3){fo(l,o,p);break}else if(l.tag===1){var v=l.stateNode;if(typeof l.type.getDerivedStateFromError=="function"||typeof v.componentDidCatch=="function"&&(kr===null||!kr.has(v))){o=be(p,o),p=qm(2),v=Ha(l,p,2),v!==null&&(jm(p,v,l,o),z(v,2),dt(v));break}}l=l.return}}function $l(o,l,p){var v=o.pingCache;if(v===null){v=o.pingCache=new Ja;var T=new Set;v.set(l,T)}else T=v.get(l),T===void 0&&(T=new Set,v.set(l,T));T.has(p)||(Ao=!0,T.add(p),o=fg.bind(null,o,l,p),l.then(o,o))}function fg(o,l,p){var v=o.pingCache;v!==null&&v.delete(l),o.pingedLanes|=o.suspendedLanes&p,o.warmLanes&=~p,rn===o&&(pn&p)===p&&(si===4||si===3&&(pn&62914560)===pn&&300>aa()-Ac?(cn&2)===0&&li(o,0):du|=p,pu===pn&&(pu=0)),dt(o)}function hg(o,l){l===0&&(l=U()),o=na(o,l),o!==null&&(z(o,l),dt(o))}function a_(o){var l=o.memoizedState,p=0;l!==null&&(p=l.retryLane),hg(o,p)}function s_(o,l){var p=0;switch(o.tag){case 31:case 13:var v=o.stateNode,T=o.memoizedState;T!==null&&(p=T.retryLane);break;case 19:v=o.stateNode;break;case 22:v=o.stateNode._retryCache;break;default:throw Error(s(314))}v!==null&&v.delete(l),hg(o,p)}function Si(o,l){return vc(o,l)}function Ld(o,l,p,v){this.tag=o,this.key=p,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=l,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=v,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function $o(o){return o=o.prototype,!(!o||!o.isReactComponent)}function qa(o,l){var p=o.alternate;return p===null?(p=t(o.tag,l,o.key,o.mode),p.elementType=o.elementType,p.type=o.type,p.stateNode=o.stateNode,p.alternate=o,o.alternate=p):(p.pendingProps=l,p.type=o.type,p.flags=0,p.subtreeFlags=0,p.deletions=null),p.flags=o.flags&65011712,p.childLanes=o.childLanes,p.lanes=o.lanes,p.child=o.child,p.memoizedProps=o.memoizedProps,p.memoizedState=o.memoizedState,p.updateQueue=o.updateQueue,l=o.dependencies,p.dependencies=l===null?null:{lanes:l.lanes,firstContext:l.firstContext},p.sibling=o.sibling,p.index=o.index,p.ref=o.ref,p.refCleanup=o.refCleanup,p}function Of(o,l){o.flags&=65011714;var p=o.alternate;return p===null?(o.childLanes=0,o.lanes=l,o.child=null,o.subtreeFlags=0,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null,o.stateNode=null):(o.childLanes=p.childLanes,o.lanes=p.lanes,o.child=p.child,o.subtreeFlags=0,o.deletions=null,o.memoizedProps=p.memoizedProps,o.memoizedState=p.memoizedState,o.updateQueue=p.updateQueue,o.type=p.type,l=p.dependencies,o.dependencies=l===null?null:{lanes:l.lanes,firstContext:l.firstContext}),o}function Nr(o,l,p,v,T,C){var F=0;if(v=o,typeof o=="function")$o(o)&&(F=1);else if(typeof o=="string")F=ms&&Li?Qf(o,p,Xi.current)?26:mp(o)?27:5:ms?Qf(o,p,Xi.current)?26:5:Li&&mp(o)?27:5;else e:switch(o){case cc:return o=t(31,p,l,T),o.elementType=cc,o.lanes=C,o;case il:return hs(p.children,T,C,l);case al:F=8,T|=24;break;case sl:return o=t(12,p,l,T|2),o.elementType=sl,o.lanes=C,o;case Ff:return o=t(13,p,l,T),o.elementType=Ff,o.lanes=C,o;case Dr:return o=t(19,p,l,T),o.elementType=Dr,o.lanes=C,o;default:if(typeof o=="object"&&o!==null)switch(o.$$typeof){case ds:F=10;break e;case uc:F=9;break e;case eu:F=11;break e;case kf:F=14;break e;case ha:F=16,v=null;break e}F=29,p=Error(s(130,o===null?"null":typeof o,"")),v=null}return l=t(F,p,l,T),l.elementType=o,l.type=v,l.lanes=C,l}function hs(o,l,p,v){return o=t(7,o,v,l),o.lanes=p,o}function Ud(o,l,p){return o=t(6,o,null,l),o.lanes=p,o}function Id(o){var l=t(18,null,null,0);return l.stateNode=o,l}function Od(o,l,p){return l=t(4,o.children!==null?o.children:[],o.key,l),l.lanes=p,l.stateNode={containerInfo:o.containerInfo,pendingChildren:null,implementation:o.implementation},l}function dg(o,l,p,v,T,C,F,ee,we){this.tag=1,this.containerInfo=o,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=Ea,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=B(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=B(0),this.hiddenUpdates=B(null),this.identifierPrefix=v,this.onUncaughtError=T,this.onCaughtError=C,this.onRecoverableError=F,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=we,this.incompleteTransitions=new Map}function ho(o,l,p,v,T,C,F,ee,we,ke,it,We){return o=new dg(o,l,p,F,we,ke,it,We,ee),l=1,C===!0&&(l|=24),C=t(3,null,null,l),o.current=C,C.stateNode=o,l=Te(),l.refCount++,o.pooledCache=l,l.refCount++,C.memoizedState={element:v,isDehydrated:p,cache:l},Ri(C),o}function Pf(o){return o?(o=ar,o):ar}function oc(o){var l=o._reactInternals;if(l===void 0)throw typeof o.render=="function"?Error(s(188)):(o=Object.keys(o).join(","),Error(s(268,o)));return o=h(l),o=o!==null?m(o):null,o===null?null:nu(o.stateNode)}function Pd(o,l,p,v,T,C){T=Pf(T),v.context===null?v.context=T:v.pendingContext=T,v=Va(l),v.payload={element:p},C=C===void 0?null:C,C!==null&&(v.callback=C),p=Ha(o,v,l),p!==null&&(ti(p,o,l),$r(p,o,l))}function el(o,l){if(o=o.memoizedState,o!==null&&o.dehydrated!==null){var p=o.retryLane;o.retryLane=p!==0&&p=ke&&C>=We&&T<=it&&F<=gt){o.splice(l,1);break}else if(v!==ke||p.width!==we.width||gtF){if(!(C!==We||p.height!==we.height||itT)){ke>v&&(we.width+=ke-v,we.x=v),itC&&(we.height+=We-C,we.y=C),gtp&&(p=ee)),ee ")+` + +No matching component was found for: + `)+o.join(" > ")}return null},an.getPublicRootInstance=function(o){if(o=o.current,!o.child)return null;switch(o.child.tag){case 27:case 5:return nu(o.child.stateNode);default:return o.child.stateNode}},an.injectIntoDevTools=function(){var o={bundleType:0,version:Bd,rendererPackageName:fc,currentDispatcherRef:Ut,reconcilerVersion:"19.2.0"};if(tu!==null&&(o.rendererConfig=tu),typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")o=!1;else{var l=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(l.isDisabled||!l.supportsFiber)o=!0;else{try{hl=l.inject(o),Aa=l}catch{}o=!!l.checkDCE}}return o},an.isAlreadyRendering=function(){return(cn&6)!==0},an.observeVisibleRects=function(o,l,p,v){if(!Di)throw Error(s(363));o=ba(o,l);var T=Wf(o,p,v).disconnect;return{disconnect:function(){T()}}},an.shouldError=function(){return null},an.shouldSuspend=function(){return!1},an.startHostTransition=function(o,l,p,v){if(o.tag!==5)throw Error(s(476));var T=km(o).queue;Fm(o,T,l,ol,p===null?n:function(){var C=km(o);return C.next===null&&(C=o.alternate.memoizedState),Zu(o,C.next.queue,{},Yn()),p(v)})},an.updateContainer=function(o,l,p,v){var T=l.current,C=Yn();return Pd(T,C,o,l,p,v),C},an.updateContainerSync=function(o,l,p,v){return Pd(l.current,2,o,l,p,v),2},an},r.exports.default=r.exports,Object.defineProperty(r.exports,"__esModule",{value:!0})})(H1)),H1.exports}var X1;function Ez(){return X1||(X1=1,V1.exports=Mz()),V1.exports}var Tz=Ez();const Az=Sz(Tz);function wz(r){const e=Az(r);return e.injectIntoDevTools(),e}const sA=0,nd={},Cz=/^three(?=[A-Z])/,Jy=r=>`${r[0].toUpperCase()}${r.slice(1)}`;let Rz=0;const Nz=r=>typeof r=="function";function Dz(r){if(Nz(r)){const e=`${Rz++}`;return nd[e]=r,e}else Object.assign(nd,r)}function rA(r,e){const t=Jy(r),n=nd[t];if(r!=="primitive"&&!n)throw new Error(`R3F: ${t} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if(r==="primitive"&&!e.object)throw new Error("R3F: Primitives without 'object' are invalid!");if(e.args!==void 0&&!Array.isArray(e.args))throw new Error("R3F: The args prop must be an array!")}function Lz(r,e,t){var n;return r=Jy(r)in nd?r:r.replace(Cz,""),rA(r,e),r==="primitive"&&(n=e.object)!=null&&n.__r3f&&delete e.object.__r3f,uy(e.object,t,r,e)}function Uz(r){if(!r.isHidden){var e;r.props.attach&&(e=r.parent)!=null&&e.object?fy(r.parent,r):ws(r.object)&&(r.object.visible=!1),r.isHidden=!0,od(r)}}function oA(r){if(r.isHidden){var e;r.props.attach&&(e=r.parent)!=null&&e.object?cy(r.parent,r):ws(r.object)&&r.props.visible!==!1&&(r.object.visible=!0),r.isHidden=!1,od(r)}}function oS(r,e,t){const n=e.root.getState();if(!(!r.parent&&r.object!==n.scene)){if(!e.object){var s,u;const f=nd[Jy(e.type)];e.object=(s=e.props.object)!=null?s:new f(...(u=e.props.args)!=null?u:[]),e.object.__r3f=e}if(Lu(e.object,e.props),e.props.attach)cy(r,e);else if(ws(e.object)&&ws(r.object)){const f=r.object.children.indexOf(t?.object);if(t&&f!==-1){const h=r.object.children.indexOf(e.object);if(h!==-1){r.object.children.splice(h,1);const m=h{try{r.dispose()}catch{}};typeof IS_REACT_ACT_ENVIRONMENT<"u"?e():sb.unstable_scheduleCallback(sb.unstable_IdlePriority,e)}}function ob(r,e,t){if(!e)return;e.parent=null;const n=r.children.indexOf(e);n!==-1&&r.children.splice(n,1),e.props.attach?fy(r,e):ws(e.object)&&ws(r.object)&&(r.object.remove(e.object),dz(KT(e),e.object));const s=e.props.dispose!==null&&t!==!1;for(let u=e.children.length-1;u>=0;u--){const f=e.children[u];ob(e,f,s)}e.children.length=0,delete e.object.__r3f,s&&e.type!=="primitive"&&e.object.type!=="Scene"&&lA(e.object),t===void 0&&od(e)}function Iz(r,e){for(const t of[r,r.alternate])if(t!==null)if(typeof t.ref=="function"){t.refCleanup==null||t.refCleanup();const n=t.ref(e);typeof n=="function"&&(t.refCleanup=n)}else t.ref&&(t.ref.current=e)}const gv=[];function Oz(){for(const[t]of gv){const n=t.parent;if(n){t.props.attach?fy(n,t):ws(t.object)&&ws(n.object)&&n.object.remove(t.object);for(const s of t.children)s.props.attach?fy(t,s):ws(s.object)&&ws(t.object)&&t.object.remove(s.object)}t.isHidden&&oA(t),t.object.__r3f&&delete t.object.__r3f,t.type!=="primitive"&&lA(t.object)}for(const[t,n,s]of gv){t.props=n;const u=t.parent;if(u){var r,e;const f=nd[Jy(t.type)];t.object=(r=t.props.object)!=null?r:new f(...(e=t.props.args)!=null?e:[]),t.object.__r3f=t,Iz(s,t.object),Lu(t.object,t.props),t.props.attach?cy(u,t):ws(t.object)&&ws(u.object)&&u.object.add(t.object);for(const h of t.children)h.props.attach?cy(t,h):ws(h.object)&&ws(t.object)&&t.object.add(h.object);od(t)}}gv.length=0}const Ix=()=>{},q1={};let cv=sA;const Pz=0,zz=4,lb=wz({isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:Lz,removeChild:ob,appendChild:Ux,appendInitialChild:Ux,insertBefore:W1,appendChildToContainer(r,e){const t=r.getState().scene.__r3f;!e||!t||Ux(t,e)},removeChildFromContainer(r,e){const t=r.getState().scene.__r3f;!e||!t||ob(t,e)},insertInContainerBefore(r,e,t){const n=r.getState().scene.__r3f;!e||!t||!n||W1(n,e,t)},getRootHostContext:()=>q1,getChildHostContext:()=>q1,commitUpdate(r,e,t,n,s){var u,f,h;rA(e,n);let m=!1;if((r.type==="primitive"&&t.object!==n.object||((u=n.args)==null?void 0:u.length)!==((f=t.args)==null?void 0:f.length)||(h=n.args)!=null&&h.some((_,x)=>{var b;return _!==((b=t.args)==null?void 0:b[x])}))&&(m=!0),m)gv.push([r,{...n},s]);else{const _=uz(r,n);Object.keys(_).length&&(Object.assign(r.props,_),Lu(r.object,_))}(s.sibling===null||(s.flags&zz)===Pz)&&Oz()},finalizeInitialChildren:()=>!1,commitMount(){},getPublicInstance:r=>r?.object,prepareForCommit:()=>null,preparePortalMount:r=>uy(r.getState().scene,r,"",{}),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance:Uz,unhideInstance:oA,createTextInstance:Ix,hideTextInstance:Ix,unhideTextInstance:Ix,scheduleTimeout:typeof setTimeout=="function"?setTimeout:void 0,cancelTimeout:typeof clearTimeout=="function"?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=>null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},prepareScopeUpdate(){},getInstanceFromScope:()=>null,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,requestPostPaintCallback(){},maySuspendCommit:()=>!1,preloadInstance:()=>!0,suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,HostTransitionContext:rt.createContext(null),setCurrentUpdatePriority(r){cv=r},getCurrentUpdatePriority(){return cv},resolveUpdatePriority(){var r;if(cv!==sA)return cv;switch(typeof window<"u"&&((r=window.event)==null?void 0:r.type)){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return xz;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return yz;default:return _z}},resetFormInstance(){},rendererPackageName:"@react-three/fiber",rendererVersion:bz.version,applyViewTransitionName(r,e,t){},restoreViewTransitionName(r,e){},cancelViewTransitionName(r,e,t){},cancelRootViewTransitionName(r){},restoreRootViewTransitionName(r){},InstanceMeasurement:null,measureInstance:r=>null,wasInstanceInViewport:r=>!0,hasInstanceChanged:(r,e)=>!1,hasInstanceAffectedParent:(r,e)=>!1,suspendOnActiveViewTransition(r,e){},startGestureTransition:()=>null,startViewTransition:()=>null,stopViewTransition(r){},createViewTransitionInstance:r=>null,getCurrentGestureOffset(r){throw new Error("startGestureTransition is not yet supported in react-three-fiber.")},cloneMutableInstance(r,e){return r},cloneMutableTextInstance(r){return r},cloneRootViewTransitionContainer(r){throw new Error("Not implemented.")},removeRootViewTransitionClone(r,e){throw new Error("Not implemented.")},createFragmentInstance:r=>null,updateFragmentInstanceFiber(r,e){},commitNewChildToFragmentInstance(r,e){},deleteChildFromFragmentInstance(r,e){},measureClonedInstance:r=>null,maySuspendCommitOnUpdate:(r,e,t)=>!1,maySuspendCommitInSyncRender:(r,e)=>!1,startSuspendingCommit:()=>null,getSuspendedCommitReason:(r,e)=>null}),sf=new Map,Fh={objects:"shallow",strict:!1};function Bz(r,e){if(!e&&typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement&&r.parentElement){const{width:t,height:n,top:s,left:u}=r.parentElement.getBoundingClientRect();return{width:t,height:n,top:s,left:u}}else if(!e&&typeof OffscreenCanvas<"u"&&r instanceof OffscreenCanvas)return{width:r.width,height:r.height,top:0,left:0};return{width:0,height:0,top:0,left:0,...e}}function Fz(r){const e=sf.get(r),t=e?.fiber,n=e?.store;e&&console.warn("R3F.createRoot should only be called once!");const s=typeof reportError=="function"?reportError:console.error,u=n||mz(fb,Y1),f=t||lb.createContainer(u,vz,null,!1,null,"",s,s,s,null);e||sf.set(r,{fiber:f,store:u});let h,m,g=!1,_=null;return{async configure(x={}){let b;_=new Promise(X=>b=X);let{gl:M,size:A,scene:R,events:w,onCreated:E,shadows:N=!1,linear:D=!1,flat:U=!1,legacy:B=!1,orthographic:z=!1,frameloop:H="always",dpr:W=[1,2],performance:I,raycaster:P,camera:Z,onPointerMissed:se}=x,te=u.getState(),fe=te.gl;if(!te.gl){const X={canvas:r,powerPreference:"high-performance",antialias:!0,alpha:!0},oe=typeof M=="function"?await M(X):M;k1(oe)?fe=oe:fe=new jT({...X,...M}),te.set({gl:fe})}let pe=te.raycaster;pe||te.set({raycaster:pe=new FT});const{params:Y,...q}=P||{};if(yi.equ(q,pe,Fh)||Lu(pe,{...q}),yi.equ(Y,pe.params,Fh)||Lu(pe,{params:{...pe.params,...Y}}),!te.camera||te.camera===m&&!yi.equ(m,Z,Fh)){m=Z;const X=Z?.isCamera,oe=X?Z:z?new Dl(0,0,0,0,.1,1e3):new zi(75,0,.1,1e3);X||(oe.position.z=5,Z&&(Lu(oe,Z),oe.manual||("aspect"in Z||"left"in Z||"right"in Z||"bottom"in Z||"top"in Z)&&(oe.manual=!0,oe.updateProjectionMatrix())),!te.camera&&!(Z!=null&&Z.rotation)&&oe.lookAt(0,0,0)),te.set({camera:oe}),pe.camera=oe}if(!te.scene){let X;R!=null&&R.isScene?(X=R,uy(X,u,"",{})):(X=new Lb,uy(X,u,"",{}),R&&Lu(X,R)),te.set({scene:X})}w&&!te.events.handlers&&te.set({events:w(u)});const ne=Bz(r,A);if(yi.equ(ne,te.size,Fh)||te.setSize(ne.width,ne.height,ne.top,ne.left),W&&te.viewport.dpr!==eA(W)&&te.setDpr(W),te.frameloop!==H&&te.setFrameloop(H),te.onPointerMissed||te.set({onPointerMissed:se}),I&&!yi.equ(I,te.performance,Fh)&&te.set(X=>({performance:{...X.performance,...I}})),!te.xr){var be;const X=(Fe,lt)=>{const de=u.getState();de.frameloop!=="never"&&Y1(Fe,!0,de,lt)},oe=()=>{const Fe=u.getState();Fe.gl.xr.enabled=Fe.gl.xr.isPresenting,Fe.gl.xr.setAnimationLoop(Fe.gl.xr.isPresenting?X:null),Fe.gl.xr.isPresenting||fb(Fe)},Ae={connect(){const Fe=u.getState().gl;Fe.xr.addEventListener("sessionstart",oe),Fe.xr.addEventListener("sessionend",oe)},disconnect(){const Fe=u.getState().gl;Fe.xr.removeEventListener("sessionstart",oe),Fe.xr.removeEventListener("sessionend",oe)}};typeof((be=fe.xr)==null?void 0:be.addEventListener)=="function"&&Ae.connect(),te.set({xr:Ae})}if(fe.shadowMap){const X=fe.shadowMap.enabled,oe=fe.shadowMap.type;if(fe.shadowMap.enabled=!!N,yi.boo(N))fe.shadowMap.type=Kp;else if(yi.str(N)){var Ne;const Ae={basic:sE,percentage:Xh,soft:Kp,variance:jc};fe.shadowMap.type=(Ne=Ae[N])!=null?Ne:Kp}else yi.obj(N)&&Object.assign(fe.shadowMap,N);(X!==fe.shadowMap.enabled||oe!==fe.shadowMap.type)&&(fe.shadowMap.needsUpdate=!0)}return Sn.enabled=!B,g||(fe.outputColorSpace=D?zu:Ia,fe.toneMapping=U?gr:gy),te.legacy!==B&&te.set(()=>({legacy:B})),te.linear!==D&&te.set(()=>({linear:D})),te.flat!==U&&te.set(()=>({flat:U})),M&&!yi.fun(M)&&!k1(M)&&!yi.equ(M,fe,Fh)&&Lu(fe,M),h=E,g=!0,b(),this},render(x){return!g&&!_&&this.configure(),_.then(()=>{lb.updateContainer(he.jsx(kz,{store:u,children:x,onCreated:h,rootElement:r}),f,null,()=>{})}),u},unmount(){uA(r)}}}function kz({store:r,children:e,onCreated:t,rootElement:n}){return Om(()=>{const s=r.getState();s.set(u=>({internal:{...u.internal,active:!0}})),t&&t(s),r.getState().events.connected||s.events.connect==null||s.events.connect(n)},[]),he.jsx(iA.Provider,{value:r,children:e})}function uA(r,e){const t=sf.get(r),n=t?.fiber;if(n){const s=t?.store.getState();s&&(s.internal.active=!1),lb.updateContainer(null,n,null,()=>{s&&setTimeout(()=>{try{var u,f,h,m;s.events.disconnect==null||s.events.disconnect(),(u=s.gl)==null||(f=u.renderLists)==null||f.dispose==null||f.dispose(),(h=s.gl)==null||h.forceContextLoss==null||h.forceContextLoss(),(m=s.gl)!=null&&m.xr&&s.xr.disconnect(),rz(s.scene),sf.delete(r)}catch{}},500)})}}const Vz=new Set,Hz=new Set,Gz=new Set;function Ox(r,e){if(r.size)for(const{callback:t}of r.values())t(e)}function rm(r,e){switch(r){case"before":return Ox(Vz,e);case"after":return Ox(Hz,e);case"tail":return Ox(Gz,e)}}let Px,zx;function ub(r,e,t){let n=e.clock.getDelta();e.frameloop==="never"&&typeof r=="number"&&(n=r-e.clock.elapsedTime,e.clock.oldTime=e.clock.elapsedTime,e.clock.elapsedTime=r),Px=e.internal.subscribers;for(let s=0;s0)&&!((e=kh.gl.xr)!=null&&e.isPresenting)&&(Bx+=ub(r,kh))}if(cb=!1,rm("after",r),Bx===0)return rm("tail",r),hy=!1,cancelAnimationFrame(j1)}function fb(r,e=1){var t;if(!r)return sf.forEach(n=>fb(n.store.getState(),e));(t=r.gl.xr)!=null&&t.isPresenting||!r.internal.active||r.frameloop==="never"||(e>1?r.internal.frames=Math.min(60,r.internal.frames+e):cb?r.internal.frames=2:r.internal.frames=1,hy||(hy=!0,requestAnimationFrame(cA)))}function Y1(r,e=!0,t,n){if(e&&rm("before",r),t)ub(r,t,n);else for(const s of sf.values())ub(r,s.store.getState());e&&rm("after",r)}const Fx={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function Xz(r){const{handlePointer:e}=pz(r);return{priority:1,enabled:!0,compute(t,n,s){n.pointer.set(t.offsetX/n.size.width*2-1,-(t.offsetY/n.size.height)*2+1),n.raycaster.setFromCamera(n.pointer,n.camera)},connected:void 0,handlers:Object.keys(Fx).reduce((t,n)=>({...t,[n]:e(n)}),{}),update:()=>{var t;const{events:n,internal:s}=r.getState();(t=s.lastEvent)!=null&&t.current&&n.handlers&&n.handlers.onPointerMove(s.lastEvent.current)},connect:t=>{const{set:n,events:s}=r.getState();if(s.disconnect==null||s.disconnect(),n(u=>({events:{...u.events,connected:t}})),s.handlers)for(const u in s.handlers){const f=s.handlers[u],[h,m]=Fx[u];t.addEventListener(h,f,{passive:m})}},disconnect:()=>{const{set:t,events:n}=r.getState();if(n.connected){if(n.handlers)for(const s in n.handlers){const u=n.handlers[s],[f]=Fx[s];n.connected.removeEventListener(f,u)}t(s=>({events:{...s.events,connected:void 0}}))}}}}function Z1(r,e){let t;return(...n)=>{window.clearTimeout(t),t=window.setTimeout(()=>r(...n),e)}}function Wz({debounce:r,scroll:e,polyfill:t,offsetSize:n}={debounce:0,scroll:!1,offsetSize:!1}){const s=t||(typeof window>"u"?class{}:window.ResizeObserver);if(!s)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[u,f]=rt.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),h=rt.useRef({element:null,scrollContainers:null,resizeObserver:null,lastBounds:u,orientationHandler:null}),m=r?typeof r=="number"?r:r.scroll:null,g=r?typeof r=="number"?r:r.resize:null,_=rt.useRef(!1);rt.useEffect(()=>(_.current=!0,()=>{_.current=!1}));const[x,b,M]=rt.useMemo(()=>{const E=()=>{if(!h.current.element)return;const{left:N,top:D,width:U,height:B,bottom:z,right:H,x:W,y:I}=h.current.element.getBoundingClientRect(),P={left:N,top:D,width:U,height:B,bottom:z,right:H,x:W,y:I};h.current.element instanceof HTMLElement&&n&&(P.height=h.current.element.offsetHeight,P.width=h.current.element.offsetWidth),Object.freeze(P),_.current&&!Zz(h.current.lastBounds,P)&&f(h.current.lastBounds=P)};return[E,g?Z1(E,g):E,m?Z1(E,m):E]},[f,n,m,g]);function A(){h.current.scrollContainers&&(h.current.scrollContainers.forEach(E=>E.removeEventListener("scroll",M,!0)),h.current.scrollContainers=null),h.current.resizeObserver&&(h.current.resizeObserver.disconnect(),h.current.resizeObserver=null),h.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",h.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",h.current.orientationHandler))}function R(){h.current.element&&(h.current.resizeObserver=new s(M),h.current.resizeObserver.observe(h.current.element),e&&h.current.scrollContainers&&h.current.scrollContainers.forEach(E=>E.addEventListener("scroll",M,{capture:!0,passive:!0})),h.current.orientationHandler=()=>{M()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",h.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",h.current.orientationHandler))}const w=E=>{!E||E===h.current.element||(A(),h.current.element=E,h.current.scrollContainers=fA(E),R())};return jz(M,!!e),qz(b),rt.useEffect(()=>{A(),R()},[e,M,b]),rt.useEffect(()=>A,[]),[w,u,x]}function qz(r){rt.useEffect(()=>{const e=r;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}},[r])}function jz(r,e){rt.useEffect(()=>{if(e){const t=r;return window.addEventListener("scroll",t,{capture:!0,passive:!0}),()=>{window.removeEventListener("scroll",t,!0)}}},[r,e])}function fA(r){const e=[];if(!r||r===document.body)return e;const{overflow:t,overflowX:n,overflowY:s}=window.getComputedStyle(r);return[t,n,s].some(u=>u==="auto"||u==="scroll")&&e.push(r),[...e,...fA(r.parentElement)]}const Yz=["x","y","top","bottom","left","right","width","height"],Zz=(r,e)=>Yz.every(t=>r[t]===e[t]);function Qz({ref:r,children:e,fallback:t,resize:n,style:s,gl:u,events:f=Xz,eventSource:h,eventPrefix:m,shadows:g,linear:_,flat:x,legacy:b,orthographic:M,frameloop:A,dpr:R,performance:w,raycaster:E,camera:N,scene:D,onPointerMissed:U,onCreated:B,...z}){rt.useMemo(()=>Dz(BP),[]);const H=iz(),[W,I]=Wz({scroll:!0,debounce:{scroll:50,resize:0},...n}),P=rt.useRef(null),Z=rt.useRef(null);rt.useImperativeHandle(r,()=>P.current);const se=$T(U),[te,fe]=rt.useState(!1),[pe,Y]=rt.useState(!1);if(te)throw te;if(pe)throw pe;const q=rt.useRef(null);Om(()=>{const be=P.current;if(I.width>0&&I.height>0&&be){q.current||(q.current=Fz(be));async function Ne(){await q.current.configure({gl:u,scene:D,events:f,shadows:g,linear:_,flat:x,legacy:b,orthographic:M,frameloop:A,dpr:R,performance:w,raycaster:E,camera:N,size:I,onPointerMissed:(...X)=>se.current==null?void 0:se.current(...X),onCreated:X=>{X.events.connect==null||X.events.connect(h?tz(h)?h.current:h:Z.current),m&&X.setEvents({compute:(oe,Ae)=>{const Fe=oe[m+"X"],lt=oe[m+"Y"];Ae.pointer.set(Fe/Ae.size.width*2-1,-(lt/Ae.size.height)*2+1),Ae.raycaster.setFromCamera(Ae.pointer,Ae.camera)}}),B?.(X)}}),q.current.render(he.jsx(H,{children:he.jsx(sz,{set:Y,children:he.jsx(rt.Suspense,{fallback:he.jsx(az,{set:fe}),children:e??null})})}))}Ne()}}),rt.useEffect(()=>{const be=P.current;if(be)return()=>uA(be)},[]);const ne=h?"none":"auto";return he.jsx("div",{ref:Z,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:ne,...s},...z,children:he.jsx("div",{ref:W,style:{width:"100%",height:"100%"},children:he.jsx("canvas",{ref:P,style:{display:"block"},children:t})})})}function Kz(r){return he.jsx(ZT,{children:he.jsx(Qz,{...r})})}var Jz=Object.defineProperty,$z=(r,e,t)=>e in r?Jz(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,e4=(r,e,t)=>($z(r,e+"",t),t);class t4{constructor(){e4(this,"_listeners")}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const s=this._listeners[e];if(s!==void 0){const u=s.indexOf(t);u!==-1&&s.splice(u,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const n=this._listeners[e.type];if(n!==void 0){e.target=this;const s=n.slice(0);for(let u=0,f=s.length;ue in r?n4(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Bt=(r,e,t)=>(i4(r,typeof e!="symbol"?e+"":e,t),t);const fv=new of,Q1=new wl,a4=Math.cos(70*(Math.PI/180)),K1=(r,e)=>(r%e+e)%e;let s4=class extends t4{constructor(e,t){super(),Bt(this,"object"),Bt(this,"domElement"),Bt(this,"enabled",!0),Bt(this,"target",new j),Bt(this,"minDistance",0),Bt(this,"maxDistance",1/0),Bt(this,"minZoom",0),Bt(this,"maxZoom",1/0),Bt(this,"minPolarAngle",0),Bt(this,"maxPolarAngle",Math.PI),Bt(this,"minAzimuthAngle",-1/0),Bt(this,"maxAzimuthAngle",1/0),Bt(this,"enableDamping",!1),Bt(this,"dampingFactor",.05),Bt(this,"enableZoom",!0),Bt(this,"zoomSpeed",1),Bt(this,"enableRotate",!0),Bt(this,"rotateSpeed",1),Bt(this,"enablePan",!0),Bt(this,"panSpeed",1),Bt(this,"screenSpacePanning",!0),Bt(this,"keyPanSpeed",7),Bt(this,"zoomToCursor",!1),Bt(this,"autoRotate",!1),Bt(this,"autoRotateSpeed",2),Bt(this,"reverseOrbit",!1),Bt(this,"reverseHorizontalOrbit",!1),Bt(this,"reverseVerticalOrbit",!1),Bt(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),Bt(this,"mouseButtons",{LEFT:Gc.ROTATE,MIDDLE:Gc.DOLLY,RIGHT:Gc.PAN}),Bt(this,"touches",{ONE:Xc.ROTATE,TWO:Xc.DOLLY_PAN}),Bt(this,"target0"),Bt(this,"position0"),Bt(this,"zoom0"),Bt(this,"_domElementKeyEvents",null),Bt(this,"getPolarAngle"),Bt(this,"getAzimuthalAngle"),Bt(this,"setPolarAngle"),Bt(this,"setAzimuthalAngle"),Bt(this,"getDistance"),Bt(this,"getZoomScale"),Bt(this,"listenToKeyEvents"),Bt(this,"stopListenToKeyEvents"),Bt(this,"saveState"),Bt(this,"reset"),Bt(this,"update"),Bt(this,"connect"),Bt(this,"dispose"),Bt(this,"dollyIn"),Bt(this,"dollyOut"),Bt(this,"getScale"),Bt(this,"setScale"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>_.phi,this.getAzimuthalAngle=()=>_.theta,this.setPolarAngle=K=>{let me=K1(K,2*Math.PI),et=_.phi;et<0&&(et+=2*Math.PI),me<0&&(me+=2*Math.PI);let J=Math.abs(me-et);2*Math.PI-J{let me=K1(K,2*Math.PI),et=_.theta;et<0&&(et+=2*Math.PI),me<0&&(me+=2*Math.PI);let J=Math.abs(me-et);2*Math.PI-Jn.object.position.distanceTo(n.target),this.listenToKeyEvents=K=>{K.addEventListener("keydown",Ee),this._domElementKeyEvents=K},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",Ee),this._domElementKeyEvents=null},this.saveState=()=>{n.target0.copy(n.target),n.position0.copy(n.object.position),n.zoom0=n.object.zoom},this.reset=()=>{n.target.copy(n.target0),n.object.position.copy(n.position0),n.object.zoom=n.zoom0,n.object.updateProjectionMatrix(),n.dispatchEvent(s),n.update(),m=h.NONE},this.update=(()=>{const K=new j,me=new j(0,1,0),et=new Pa().setFromUnitVectors(e.up,me),J=et.clone().invert(),je=new j,Ge=new Pa,at=2*Math.PI;return function(){const Ue=n.object.position;et.setFromUnitVectors(e.up,me),J.copy(et).invert(),K.copy(Ue).sub(n.target),K.applyQuaternion(et),_.setFromVector3(K),n.autoRotate&&m===h.NONE&&fe(se()),n.enableDamping?(_.theta+=x.theta*n.dampingFactor,_.phi+=x.phi*n.dampingFactor):(_.theta+=x.theta,_.phi+=x.phi);let Ye=n.minAzimuthAngle,Ct=n.maxAzimuthAngle;isFinite(Ye)&&isFinite(Ct)&&(Ye<-Math.PI?Ye+=at:Ye>Math.PI&&(Ye-=at),Ct<-Math.PI?Ct+=at:Ct>Math.PI&&(Ct-=at),Ye<=Ct?_.theta=Math.max(Ye,Math.min(Ct,_.theta)):_.theta=_.theta>(Ye+Ct)/2?Math.max(Ye,_.theta):Math.min(Ct,_.theta)),_.phi=Math.max(n.minPolarAngle,Math.min(n.maxPolarAngle,_.phi)),_.makeSafe(),n.enableDamping===!0?n.target.addScaledVector(M,n.dampingFactor):n.target.add(M),n.zoomToCursor&&I||n.object.isOrthographicCamera?_.radius=Ae(_.radius):_.radius=Ae(_.radius*b),K.setFromSpherical(_),K.applyQuaternion(J),Ue.copy(n.target).add(K),n.object.matrixAutoUpdate||n.object.updateMatrix(),n.object.lookAt(n.target),n.enableDamping===!0?(x.theta*=1-n.dampingFactor,x.phi*=1-n.dampingFactor,M.multiplyScalar(1-n.dampingFactor)):(x.set(0,0,0),M.set(0,0,0));let Jt=!1;if(n.zoomToCursor&&I){let nn=null;if(n.object instanceof zi&&n.object.isPerspectiveCamera){const Jn=K.length();nn=Ae(Jn*b);const Ci=Jn-nn;n.object.position.addScaledVector(H,Ci),n.object.updateMatrixWorld()}else if(n.object.isOrthographicCamera){const Jn=new j(W.x,W.y,0);Jn.unproject(n.object),n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/b)),n.object.updateProjectionMatrix(),Jt=!0;const Ci=new j(W.x,W.y,0);Ci.unproject(n.object),n.object.position.sub(Ci).add(Jn),n.object.updateMatrixWorld(),nn=K.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),n.zoomToCursor=!1;nn!==null&&(n.screenSpacePanning?n.target.set(0,0,-1).transformDirection(n.object.matrix).multiplyScalar(nn).add(n.object.position):(fv.origin.copy(n.object.position),fv.direction.set(0,0,-1).transformDirection(n.object.matrix),Math.abs(n.object.up.dot(fv.direction))g||8*(1-Ge.dot(n.object.quaternion))>g?(n.dispatchEvent(s),je.copy(n.object.position),Ge.copy(n.object.quaternion),Jt=!1,!0):!1}})(),this.connect=K=>{n.domElement=K,n.domElement.style.touchAction="none",n.domElement.addEventListener("contextmenu",vt),n.domElement.addEventListener("pointerdown",Qe),n.domElement.addEventListener("pointercancel",O),n.domElement.addEventListener("wheel",Ie)},this.dispose=()=>{var K,me,et,J,je,Ge;n.domElement&&(n.domElement.style.touchAction="auto"),(K=n.domElement)==null||K.removeEventListener("contextmenu",vt),(me=n.domElement)==null||me.removeEventListener("pointerdown",Qe),(et=n.domElement)==null||et.removeEventListener("pointercancel",O),(J=n.domElement)==null||J.removeEventListener("wheel",Ie),(je=n.domElement)==null||je.ownerDocument.removeEventListener("pointermove",G),(Ge=n.domElement)==null||Ge.ownerDocument.removeEventListener("pointerup",O),n._domElementKeyEvents!==null&&n._domElementKeyEvents.removeEventListener("keydown",Ee)};const n=this,s={type:"change"},u={type:"start"},f={type:"end"},h={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let m=h.NONE;const g=1e-6,_=new eb,x=new eb;let b=1;const M=new j,A=new ze,R=new ze,w=new ze,E=new ze,N=new ze,D=new ze,U=new ze,B=new ze,z=new ze,H=new j,W=new ze;let I=!1;const P=[],Z={};function se(){return 2*Math.PI/60/60*n.autoRotateSpeed}function te(){return Math.pow(.95,n.zoomSpeed)}function fe(K){n.reverseOrbit||n.reverseHorizontalOrbit?x.theta+=K:x.theta-=K}function pe(K){n.reverseOrbit||n.reverseVerticalOrbit?x.phi+=K:x.phi-=K}const Y=(()=>{const K=new j;return function(et,J){K.setFromMatrixColumn(J,0),K.multiplyScalar(-et),M.add(K)}})(),q=(()=>{const K=new j;return function(et,J){n.screenSpacePanning===!0?K.setFromMatrixColumn(J,1):(K.setFromMatrixColumn(J,0),K.crossVectors(n.object.up,K)),K.multiplyScalar(et),M.add(K)}})(),ne=(()=>{const K=new j;return function(et,J){const je=n.domElement;if(je&&n.object instanceof zi&&n.object.isPerspectiveCamera){const Ge=n.object.position;K.copy(Ge).sub(n.target);let at=K.length();at*=Math.tan(n.object.fov/2*Math.PI/180),Y(2*et*at/je.clientHeight,n.object.matrix),q(2*J*at/je.clientHeight,n.object.matrix)}else je&&n.object instanceof Dl&&n.object.isOrthographicCamera?(Y(et*(n.object.right-n.object.left)/n.object.zoom/je.clientWidth,n.object.matrix),q(J*(n.object.top-n.object.bottom)/n.object.zoom/je.clientHeight,n.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),n.enablePan=!1)}})();function be(K){n.object instanceof zi&&n.object.isPerspectiveCamera||n.object instanceof Dl&&n.object.isOrthographicCamera?b=K:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function Ne(K){be(b/K)}function X(K){be(b*K)}function oe(K){if(!n.zoomToCursor||!n.domElement)return;I=!0;const me=n.domElement.getBoundingClientRect(),et=K.clientX-me.left,J=K.clientY-me.top,je=me.width,Ge=me.height;W.x=et/je*2-1,W.y=-(J/Ge)*2+1,H.set(W.x,W.y,1).unproject(n.object).sub(n.object.position).normalize()}function Ae(K){return Math.max(n.minDistance,Math.min(n.maxDistance,K))}function Fe(K){A.set(K.clientX,K.clientY)}function lt(K){oe(K),U.set(K.clientX,K.clientY)}function de(K){E.set(K.clientX,K.clientY)}function Re(K){R.set(K.clientX,K.clientY),w.subVectors(R,A).multiplyScalar(n.rotateSpeed);const me=n.domElement;me&&(fe(2*Math.PI*w.x/me.clientHeight),pe(2*Math.PI*w.y/me.clientHeight)),A.copy(R),n.update()}function tt(K){B.set(K.clientX,K.clientY),z.subVectors(B,U),z.y>0?Ne(te()):z.y<0&&X(te()),U.copy(B),n.update()}function st(K){N.set(K.clientX,K.clientY),D.subVectors(N,E).multiplyScalar(n.panSpeed),ne(D.x,D.y),E.copy(N),n.update()}function ht(K){oe(K),K.deltaY<0?X(te()):K.deltaY>0&&Ne(te()),n.update()}function jt(K){let me=!1;switch(K.code){case n.keys.UP:ne(0,n.keyPanSpeed),me=!0;break;case n.keys.BOTTOM:ne(0,-n.keyPanSpeed),me=!0;break;case n.keys.LEFT:ne(n.keyPanSpeed,0),me=!0;break;case n.keys.RIGHT:ne(-n.keyPanSpeed,0),me=!0;break}me&&(K.preventDefault(),n.update())}function tn(){if(P.length==1)A.set(P[0].pageX,P[0].pageY);else{const K=.5*(P[0].pageX+P[1].pageX),me=.5*(P[0].pageY+P[1].pageY);A.set(K,me)}}function Nt(){if(P.length==1)E.set(P[0].pageX,P[0].pageY);else{const K=.5*(P[0].pageX+P[1].pageX),me=.5*(P[0].pageY+P[1].pageY);E.set(K,me)}}function Le(){const K=P[0].pageX-P[1].pageX,me=P[0].pageY-P[1].pageY,et=Math.sqrt(K*K+me*me);U.set(0,et)}function He(){n.enableZoom&&Le(),n.enablePan&&Nt()}function Oe(){n.enableZoom&&Le(),n.enableRotate&&tn()}function nt(K){if(P.length==1)R.set(K.pageX,K.pageY);else{const et=ct(K),J=.5*(K.pageX+et.x),je=.5*(K.pageY+et.y);R.set(J,je)}w.subVectors(R,A).multiplyScalar(n.rotateSpeed);const me=n.domElement;me&&(fe(2*Math.PI*w.x/me.clientHeight),pe(2*Math.PI*w.y/me.clientHeight)),A.copy(R)}function Q(K){if(P.length==1)N.set(K.pageX,K.pageY);else{const me=ct(K),et=.5*(K.pageX+me.x),J=.5*(K.pageY+me.y);N.set(et,J)}D.subVectors(N,E).multiplyScalar(n.panSpeed),ne(D.x,D.y),E.copy(N)}function Et(K){const me=ct(K),et=K.pageX-me.x,J=K.pageY-me.y,je=Math.sqrt(et*et+J*J);B.set(0,je),z.set(0,Math.pow(B.y/U.y,n.zoomSpeed)),Ne(z.y),U.copy(B)}function ot(K){n.enableZoom&&Et(K),n.enablePan&&Q(K)}function Tt(K){n.enableZoom&&Et(K),n.enableRotate&&nt(K)}function Qe(K){var me,et;n.enabled!==!1&&(P.length===0&&((me=n.domElement)==null||me.ownerDocument.addEventListener("pointermove",G),(et=n.domElement)==null||et.ownerDocument.addEventListener("pointerup",O)),Dt(K),K.pointerType==="touch"?dt(K):ae(K))}function G(K){n.enabled!==!1&&(K.pointerType==="touch"?Ke(K):Te(K))}function O(K){var me,et,J;Ve(K),P.length===0&&((me=n.domElement)==null||me.releasePointerCapture(K.pointerId),(et=n.domElement)==null||et.ownerDocument.removeEventListener("pointermove",G),(J=n.domElement)==null||J.ownerDocument.removeEventListener("pointerup",O)),n.dispatchEvent(f),m=h.NONE}function ae(K){let me;switch(K.button){case 0:me=n.mouseButtons.LEFT;break;case 1:me=n.mouseButtons.MIDDLE;break;case 2:me=n.mouseButtons.RIGHT;break;default:me=-1}switch(me){case Gc.DOLLY:if(n.enableZoom===!1)return;lt(K),m=h.DOLLY;break;case Gc.ROTATE:if(K.ctrlKey||K.metaKey||K.shiftKey){if(n.enablePan===!1)return;de(K),m=h.PAN}else{if(n.enableRotate===!1)return;Fe(K),m=h.ROTATE}break;case Gc.PAN:if(K.ctrlKey||K.metaKey||K.shiftKey){if(n.enableRotate===!1)return;Fe(K),m=h.ROTATE}else{if(n.enablePan===!1)return;de(K),m=h.PAN}break;default:m=h.NONE}m!==h.NONE&&n.dispatchEvent(u)}function Te(K){if(n.enabled!==!1)switch(m){case h.ROTATE:if(n.enableRotate===!1)return;Re(K);break;case h.DOLLY:if(n.enableZoom===!1)return;tt(K);break;case h.PAN:if(n.enablePan===!1)return;st(K);break}}function Ie(K){n.enabled===!1||n.enableZoom===!1||m!==h.NONE&&m!==h.ROTATE||(K.preventDefault(),n.dispatchEvent(u),ht(K),n.dispatchEvent(f))}function Ee(K){n.enabled===!1||n.enablePan===!1||jt(K)}function dt(K){switch(Ze(K),P.length){case 1:switch(n.touches.ONE){case Xc.ROTATE:if(n.enableRotate===!1)return;tn(),m=h.TOUCH_ROTATE;break;case Xc.PAN:if(n.enablePan===!1)return;Nt(),m=h.TOUCH_PAN;break;default:m=h.NONE}break;case 2:switch(n.touches.TWO){case Xc.DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;He(),m=h.TOUCH_DOLLY_PAN;break;case Xc.DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;Oe(),m=h.TOUCH_DOLLY_ROTATE;break;default:m=h.NONE}break;default:m=h.NONE}m!==h.NONE&&n.dispatchEvent(u)}function Ke(K){switch(Ze(K),m){case h.TOUCH_ROTATE:if(n.enableRotate===!1)return;nt(K),n.update();break;case h.TOUCH_PAN:if(n.enablePan===!1)return;Q(K),n.update();break;case h.TOUCH_DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;ot(K),n.update();break;case h.TOUCH_DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;Tt(K),n.update();break;default:m=h.NONE}}function vt(K){n.enabled!==!1&&K.preventDefault()}function Dt(K){P.push(K)}function Ve(K){delete Z[K.pointerId];for(let me=0;me{X(K),n.update()},this.dollyOut=(K=te())=>{Ne(K),n.update()},this.getScale=()=>b,this.setScale=K=>{be(K),n.update()},this.getZoomScale=()=>te(),t!==void 0&&this.connect(t),this.update()}};const r4=rt.forwardRef(({makeDefault:r,camera:e,regress:t,domElement:n,enableDamping:s=!0,keyEvents:u=!1,onChange:f,onStart:h,onEnd:m,...g},_)=>{const x=Nu(z=>z.invalidate),b=Nu(z=>z.camera),M=Nu(z=>z.gl),A=Nu(z=>z.events),R=Nu(z=>z.setEvents),w=Nu(z=>z.set),E=Nu(z=>z.get),N=Nu(z=>z.performance),D=e||b,U=n||A.connected||M.domElement,B=rt.useMemo(()=>new s4(D),[D]);return gz(()=>{B.enabled&&B.update()},-1),rt.useEffect(()=>(u&&B.connect(u===!0?U:u),B.connect(U),()=>{B.dispose()}),[u,U,t,B,x]),rt.useEffect(()=>{const z=I=>{x(),t&&N.regress(),f&&f(I)},H=I=>{h&&h(I)},W=I=>{m&&m(I)};return B.addEventListener("change",z),B.addEventListener("start",H),B.addEventListener("end",W),()=>{B.removeEventListener("start",H),B.removeEventListener("end",W),B.removeEventListener("change",z)}},[f,h,m,B,x,R]),rt.useEffect(()=>{if(r){const z=E().controls;return w({controls:B}),()=>w({controls:z})}},[r,B]),rt.createElement("primitive",kx({ref:_,object:B,enableDamping:s},g))}),o4=Object.assign({"../../glitch_assumption_toggle/src/index.tsx":()=>Hr(()=>import("./index-B1PtMIUq.js"),__vite__mapDeps([0,1])),"../../glitch_ccd/src/index.tsx":()=>Hr(()=>import("./index-CMvlyyxu.js"),__vite__mapDeps([2,3])),"../../glitch_chess_analogy/src/index.tsx":()=>Hr(()=>import("./index-CwQ-ysLn.js"),__vite__mapDeps([4,5])),"./index.tsx":()=>Hr(()=>import("./index-CDPygLjY.js"),[]),"../../glitch_level_questions/src/index.tsx":()=>Hr(()=>import("./index-CRhmqMwz.js"),__vite__mapDeps([6,7])),"../../glitch_lightlane/src/index.tsx":()=>Hr(()=>import("./index-C370CA0j.js"),[]),"../../glitch_migration_paradox/src/index.tsx":()=>Hr(()=>import("./index-BOUPxVBe.js"),__vite__mapDeps([8,9])),"../../glitch_onboarding/src/index.tsx":()=>Hr(()=>import("./index-DOdpM0HQ.js"),__vite__mapDeps([10,11])),"../../glitch_onboarding2/src/index.tsx":()=>Hr(()=>import("./index-MgCr_Urj.js"),__vite__mapDeps([12,13])),"../../glitch_sphere_paradox/src/index.tsx":()=>Hr(()=>import("./index-Be41ZfS7.js"),__vite__mapDeps([14,15])),"../../glitch_voxel_universe/src/index.tsx":()=>Hr(()=>import("./index-DnqmHVBx.js"),__vite__mapDeps([16,17]))}),l4=Object.assign({"../../glitch_assumption_toggle/glitch.manifest.json":_w,"../../glitch_ccd/glitch.manifest.json":Cw,"../../glitch_chess_analogy/glitch.manifest.json":zw,"../glitch.manifest.json":qw,"../../glitch_level_questions/glitch.manifest.json":tC,"../../glitch_lightlane/glitch.manifest.json":cC,"../../glitch_migration_paradox/glitch.manifest.json":_C,"../../glitch_onboarding/glitch.manifest.json":CC,"../../glitch_onboarding2/glitch.manifest.json":zC,"../../glitch_sphere_paradox/glitch.manifest.json":qC,"../../glitch_voxel_universe/glitch.manifest.json":t3}),$y=new Set(["glitch_gallery"]),lS=Object.fromEntries(Object.entries(o4).map(([r,e])=>[gA(r),e]).filter(([r])=>!$y.has(r))),u4=Object.fromEntries(Object.entries(l4).map(([r,e])=>[gA(r),e]).filter(([r])=>!$y.has(r))),uS=Object.keys(lS).sort((r,e)=>r.localeCompare(e)),c4=[{folder:"glitch_epicycles",note:"No exported GlitchComponent entry point yet."},{folder:"glitch_threshold_theory",note:"Standalone HTML experiment, not a React GlitchComponent."}],hA=new Set(["glitch_lightlane"]),dA=[{id:"fluid",label:"Fluid",width:null,height:null,note:"Host size"},{id:"desktop",label:"Desktop",width:1440,height:900,note:"1440×900"},{id:"tablet",label:"Tablet",width:834,height:1112,note:"834×1112"},{id:"mobile",label:"Mobile",width:390,height:844,note:"390×844"},{id:"narrow",label:"Narrow",width:320,height:640,note:"320×640"}],f4={primary:"#7dff9b",accent:"#ffb84d",bg:"#050505",bgSecondary:"#101613",text:"#f3ffee",textMuted:"#8cc99a",border:"rgba(125, 255, 155, 0.22)"},h4=new URL("/assets/blblblbl-D60GLrQ8.mp3",import.meta.url).href,d4=new URL("/assets/blblblbl-BrzQxThI.m4a",import.meta.url).href,p4={glitch_assumption_toggle:{"machine.compute_step":[h4,d4]}},J1={"ui.button_click":[{frequency:640,durationMs:55,gain:.025,type:"square"},{frequency:880,durationMs:40,gain:.018,type:"triangle",delayMs:36}],"ui.button_hover":[{frequency:540,durationMs:40,gain:.012,type:"sine"}],"machine.compute_start":[{frequency:240,durationMs:90,gain:.02,type:"sawtooth"},{frequency:320,durationMs:90,gain:.018,type:"sawtooth",delayMs:82},{frequency:430,durationMs:90,gain:.016,type:"triangle",delayMs:164}],"machine.compute_step":[{frequency:780,durationMs:26,gain:.009,type:"square"}],"machine.compute_done":[{frequency:520,durationMs:80,gain:.018,type:"triangle"},{frequency:780,durationMs:110,gain:.018,type:"triangle",delayMs:70}],"machine.verdict_stable":[{frequency:440,durationMs:90,gain:.016,type:"triangle"},{frequency:554,durationMs:90,gain:.016,type:"triangle",delayMs:65},{frequency:659,durationMs:140,gain:.015,type:"triangle",delayMs:130}],"machine.verdict_alert":[{frequency:180,durationMs:120,gain:.022,type:"sawtooth"},{frequency:140,durationMs:140,gain:.02,type:"sawtooth",delayMs:100}]},pA=Object.fromEntries(dA.map(r=>[r.id,r])),dy=uS.map(r=>{const e=u4[r];return{folder:r,componentId:e?.componentId??rf(r).replace(/\s+/g,"-").toLowerCase(),displayName:e?.displayName??rf(r),version:e?.version??"0.0.0",packageName:e?.packageName??r,tags:e?.tags??[],description:e?.description,thumbnailLabel:e?.thumbnailLabel,kind:hA.has(r)?"canvas":"standard"}}).filter(r=>!($y.has(r.folder)||r.componentId==="gallery"||r.packageName==="@glitch-components/gallery")),m4=Object.fromEntries(dy.map(r=>[r.folder,r])),mA="preview";let jp=null;class g4 extends hb.Component{constructor(){super(...arguments),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidUpdate(e){e.resetKey!==this.props.resetKey&&this.state.error&&this.setState({error:null})}render(){return this.state.error?he.jsxs("div",{className:"gallery-state gallery-state-error",children:[he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Render Error"}),he.jsx("h3",{children:"Component crashed while rendering."}),he.jsx("pre",{className:"gallery-pre",children:this.state.error.stack??this.state.error.message})]}):this.props.children}}function gA(r){const e=r.split("/");return e[e.length-3]??r}function rf(r){return r.replace(/^glitch[_-]?/i,"").replace(/[_-]+/g," ").replace(/\b\w/g,e=>e.toUpperCase())}function v4(r,e){const t=e.metadata??{},n=rf(r).replace(/\s+/g,"-").toLowerCase();return{name:t.name??n,displayName:t.displayName??rf(r),version:t.version??"0.0.0",description:t.description,tags:t.tags??[],paramSchema:t.paramSchema??{},defaultParams:t.defaultParams??{}}}function vA(){if(typeof window>"u")return dy[0]?.folder??"";const r=new URLSearchParams(window.location.search).get("component");return r&&!$y.has(r)&&uS.includes(r)?r:dy[0]?.folder??""}function $1(){return typeof window>"u"?!1:new URLSearchParams(window.location.search).get("mode")===mA}function y4(){if(typeof window>"u")return"fluid";const r=new URLSearchParams(window.location.search).get("viewport");return r&&r in pA?r:"fluid"}async function yA(r){const e=lS[r];if(!e)throw new Error("Missing loader for this component folder.");const t=await e();return{Component:t.default,kind:hA.has(r)?"canvas":"standard",metadata:v4(r,t)}}function _4(r){return r.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function eE(r){if(r===void 0)return"undefined";try{return JSON.stringify(r,null,2)}catch(e){return`Could not serialize payload: ${String(e)}`}}function x4(r,e){return String(r.value)===e}function hv(r,e){if(r.type==="boolean")return!!e;if(r.type==="number"||r.type==="range"){const t=Number(e);return Number.isFinite(t)?t:r.default??0}return r.type==="select"&&typeof e=="string"&&r.options?r.options.find(n=>x4(n,e))?.value??e:e}function b4(r){let e=0;for(let n=0;ne.charAt(0).toUpperCase()).join("")}function M4(){if(typeof window>"u")return null;const r=window.AudioContext||window.webkitAudioContext;return r?(jp||(jp=new r),jp.state==="suspended"&&jp.resume(),jp):null}function E4(r,e){const t=r.currentTime+(e.delayMs??0)/1e3,n=t+e.durationMs/1e3,s=r.createOscillator(),u=r.createGain();s.type=e.type??"triangle",s.frequency.setValueAtTime(e.frequency,t),u.gain.setValueAtTime(1e-4,t),u.gain.exponentialRampToValueAtTime(e.gain??.02,t+.008),u.gain.exponentialRampToValueAtTime(1e-4,n),s.connect(u),u.connect(r.destination),s.start(t),s.stop(n+.02)}function tE(r){const e=M4();if(!e)return;const t=J1[r]??J1["ui.button_click"];for(const n of t)E4(e,n)}function T4(r,e){return p4[r]?.[e]??[]}function A4({entry:r,hostBridge:e,params:t,previewKey:n,onComplete:s,onProgress:u}){const h={config:{id:`${r.metadata.name}-gallery`,name:r.metadata.name,version:r.metadata.version,params:t},theme:f4,host:e,onComplete:s,onProgress:u},m=r.Component;return r.kind==="canvas"?he.jsx("div",{className:"gallery-canvas-shell",children:he.jsxs(Kz,{camera:{position:[8,8,8],fov:45},children:[he.jsx(m,{...h}),he.jsx(r4,{makeDefault:!0})]})},n):he.jsx("div",{className:"gallery-standard-shell",children:he.jsx(m,{...h})},n)}function w4({paramKey:r,schema:e,value:t,onChange:n}){const s=e.label??rf(r),u=`gallery-param-${r}`;if(e.type==="boolean")return he.jsxs("label",{className:"gallery-control gallery-checkbox",htmlFor:u,children:[he.jsxs("span",{className:"gallery-control-copy",children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null]}),he.jsx("input",{checked:!!t,id:u,type:"checkbox",onChange:f=>n(r,f.currentTarget.checked)})]});if(e.type==="select")return he.jsxs("label",{className:"gallery-control",htmlFor:u,children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsx("select",{className:"gallery-input",id:u,value:String(t??""),onChange:f=>n(r,hv(e,f.currentTarget.value)),children:(e.options??[]).map(f=>he.jsx("option",{value:String(f.value),children:f.label},`${r}-${f.label}-${f.value}`))})]});if(e.type==="range"){const f=typeof t=="number"?t:Number(e.default??0);return he.jsxs("div",{className:"gallery-control",children:[he.jsx("label",{className:"gallery-control-label",htmlFor:u,children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsxs("div",{className:"gallery-range-row",children:[he.jsx("input",{className:"gallery-range",id:u,max:e.max,min:e.min,step:e.step,type:"range",value:f,onChange:h=>n(r,hv(e,h.currentTarget.value))}),he.jsx("input",{className:"gallery-number",max:e.max,min:e.min,step:e.step,type:"number",value:f,onChange:h=>n(r,hv(e,h.currentTarget.value))})]})]})}return e.type==="number"?he.jsxs("label",{className:"gallery-control",htmlFor:u,children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsx("input",{className:"gallery-input",id:u,max:e.max,min:e.min,step:e.step,type:"number",value:typeof t=="number"?t:Number(e.default??0),onChange:f=>n(r,hv(e,f.currentTarget.value))})]}):he.jsxs("label",{className:"gallery-control",htmlFor:u,children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsx("input",{className:"gallery-input",id:u,type:e.type==="color"?"color":"text",value:typeof t=="string"?t:String(t??""),onChange:f=>n(r,f.currentTarget.value)})]})}function C4(){return rt.useEffect(()=>{if(typeof document>"u")return;const r=$1()?"preview":"shell";return document.body.dataset.galleryMode=r,()=>{delete document.body.dataset.galleryMode}},[]),$1()?he.jsx(N4,{}):he.jsx(R4,{})}function R4(){const[r,e]=rt.useState(vA),[t,n]=rt.useState(y4),[s,u]=rt.useState({}),[f,h]=rt.useState({}),[m,g]=rt.useState({}),[_,x]=rt.useState(null),[b,M]=rt.useState(null),[A,R]=rt.useState([]),[w,E]=rt.useState(0),N=rt.useRef(null),[D,U]=rt.useState(!1),B=rt.useCallback((q,ne)=>{R(be=>[{id:Date.now()+be.length,kind:q,payload:ne,timestamp:_4(new Date)},...be].slice(0,32))},[]),z=rt.useCallback(async q=>{if(s[q])return s[q];if(!lS[q])return h(ne=>({...ne,[q]:{status:"error",error:"Missing loader for this component folder."}})),null;h(ne=>({...ne,[q]:{status:"loading"}}));try{const ne=await yA(q);return u(be=>({...be,[q]:ne})),g(be=>be[q]?be:{...be,[q]:{...ne.metadata.defaultParams}}),h(be=>({...be,[q]:{status:"idle"}})),ne}catch(ne){const be=ne instanceof Error?ne.message:String(ne);return h(Ne=>({...Ne,[q]:{status:"error",error:be}})),B("system",{component:q,error:be,type:"load-error"}),null}},[B,s]);rt.useEffect(()=>{if(!r)return;const q=window.setTimeout(()=>{z(r)},0);return()=>window.clearTimeout(q)},[z,r]),rt.useEffect(()=>{if(!r||typeof window>"u")return;const q=new URL(window.location.href);q.searchParams.set("component",r),q.searchParams.set("viewport",t),window.history.replaceState({},"",q)},[r,t]),rt.useEffect(()=>{const q=window.setTimeout(()=>{x(null),M(null),R([]),E(ne=>ne+1),U(!1)},0);return()=>window.clearTimeout(q)},[r]);const H=rt.useCallback(q=>{N.current?.contentWindow&&N.current.contentWindow.postMessage({source:"glitch-gallery-shell",type:"sync",payload:q},window.location.origin)},[]);rt.useEffect(()=>{const q=ne=>{if(!(ne.origin!==window.location.origin||!ne.data||ne.data.source!=="glitch-gallery-preview")){if(ne.data.type==="ready"){U(!0);return}if(ne.data.type==="progress"){x(ne.data.percent),B("progress",{percent:ne.data.percent});return}if(ne.data.type==="complete"){M(ne.data.payload),B("complete",ne.data.payload);return}ne.data.type==="log"&&B(ne.data.kind,ne.data.payload)}};return window.addEventListener("message",q),()=>window.removeEventListener("message",q)},[B]);const W=r?s[r]:void 0,I=r?m4[r]:void 0,P=r?f[r]:void 0,Z=pA[t],se=rt.useMemo(()=>r?m[r]??W?.metadata.defaultParams??{}:{},[m,W?.metadata.defaultParams,r]);rt.useEffect(()=>{!r||!D||H({component:r,params:se,revision:w})},[H,D,w,se,r]);const te=rt.useCallback((q,ne)=>{r&&g(be=>({...be,[r]:{...be[r]??{},[q]:ne}}))},[r]),fe=rt.useCallback(()=>{!r||!W||(g(q=>({...q,[r]:{...W.metadata.defaultParams}})),E(q=>q+1),B("system",{component:r,type:"params-reset"}))},[B,W,r]),pe=rt.useCallback(()=>{r&&(E(q=>q+1),B("system",{component:r,type:"preview-remount"}))},[B,r]),Y=rt.useMemo(()=>{if(typeof window>"u")return"";const q=new URL(window.location.href);return q.search="",q.searchParams.set("mode",mA),q.searchParams.set("component",r),q.toString()},[r]);return he.jsxs("div",{className:"gallery-shell","data-gallery-shell":"true",children:[he.jsxs("aside",{className:"gallery-sidebar",children:[he.jsxs("div",{className:"gallery-sidebar-header",children:[he.jsx("span",{className:"gallery-eyebrow",children:"Dev Host"}),he.jsx("h1",{children:"Glitch Gallery"}),he.jsx("div",{className:"gallery-viewport-switcher gallery-sidebar-viewport-switcher","data-gallery-viewport-switcher":"true",children:dA.map(q=>he.jsxs("button",{className:`gallery-viewport-button gallery-viewport-button-compact${t===q.id?" is-active":""}`,"data-gallery-viewport":q.id,type:"button",onClick:()=>n(q.id),children:[q.label," : ",q.width?`${q.width}px`:"Fluid"]},q.id))})]}),he.jsx("div",{className:"gallery-section",children:he.jsxs("div",{className:"gallery-selected-card",children:[he.jsx("span",{className:"gallery-eyebrow",children:"Selected"}),he.jsx("h2",{className:"gallery-selected-title",children:W?.metadata.displayName??I?.displayName??rf(r)}),he.jsx("p",{className:"gallery-selected-subtitle",children:W?.metadata.description??I?.description??"Gallery loads components lazily and hosts them with the same sound bridge/event logging model used for Glitch University testing."}),he.jsxs("div",{className:"gallery-toolbar-actions gallery-sidebar-actions",children:[he.jsx("button",{className:"gallery-button",type:"button",onClick:pe,children:"Remount Preview"}),he.jsx("button",{className:"gallery-button",type:"button",onClick:fe,disabled:!W,children:"Reset Params"})]})]})}),he.jsxs("div",{className:"gallery-section",children:[he.jsxs("div",{className:"gallery-section-header",children:[he.jsx("h2",{children:"GlitchComponents"}),he.jsx("span",{className:"gallery-badge",children:uS.length})]}),he.jsx("div",{className:"gallery-list","data-gallery-component-list":"true",children:dy.map(q=>{const ne=q.folder,be=s[ne],Ne=r===ne,X=f[ne]?.status??"idle";return he.jsxs("button",{className:`gallery-list-item${Ne?" is-active":""}`,"data-gallery-component":ne,type:"button",onClick:()=>e(ne),style:b4(ne),children:[he.jsx("span",{className:"gallery-list-thumb","aria-hidden":"true",children:he.jsxs("span",{className:"gallery-list-thumb-frame",children:[he.jsx("span",{className:"gallery-list-thumb-type",children:q.kind==="canvas"?"Canvas":"Standard"}),he.jsx("strong",{children:q.thumbnailLabel??S4(q.componentId)}),he.jsx("span",{className:"gallery-list-thumb-id",children:q.componentId})]})}),he.jsxs("span",{className:"gallery-list-copy",children:[he.jsx("span",{className:"gallery-list-title",children:be?.metadata.displayName??q.displayName}),he.jsx("span",{className:"gallery-list-subtitle",children:ne}),he.jsx("span",{className:"gallery-list-note",children:q.tags.slice(0,3).join(" · ")||"No tags exported"})]}),he.jsxs("span",{className:"gallery-list-status",children:[he.jsxs("span",{className:"gallery-badge gallery-badge-muted",children:["v",q.version]}),X==="loading"?he.jsx("span",{className:"gallery-badge",children:"Loading"}):null,X==="error"?he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Error"}):null]})]},ne)})})]}),he.jsxs("div",{className:"gallery-section",children:[he.jsx("div",{className:"gallery-section-header",children:he.jsx("h2",{children:"Not Yet Exported"})}),he.jsx("div",{className:"gallery-list",children:c4.map(q=>he.jsxs("div",{className:"gallery-list-item is-disabled",children:[he.jsxs("span",{className:"gallery-list-copy",children:[he.jsx("span",{className:"gallery-list-title",children:rf(q.folder)}),he.jsx("span",{className:"gallery-list-subtitle",children:q.folder}),he.jsx("span",{className:"gallery-list-note",children:q.note})]}),he.jsx("span",{className:"gallery-badge gallery-badge-muted",children:"Raw"})]},q.folder))})]})]}),he.jsx("main",{className:"gallery-main",children:he.jsxs("div",{className:"gallery-grid",children:[he.jsxs("section",{className:"gallery-preview-panel",children:[he.jsxs("div",{className:"gallery-panel-header",children:[he.jsx("span",{className:"gallery-badge",children:r}),he.jsxs("div",{className:"gallery-stage-badges",children:[he.jsx("span",{className:"gallery-badge gallery-badge-muted",children:Z.width?`${Z.width}px`:"Fluid"}),_!==null?he.jsxs("span",{className:"gallery-badge gallery-badge-accent",children:[Math.round(_),"%"]}):null]})]}),he.jsx("div",{className:"gallery-stage","data-gallery-stage":r,children:he.jsx("div",{className:`gallery-stage-viewport${Z.width?"":" is-fluid"}`,"data-gallery-preview-viewport":t,style:Z.width?{"--gallery-preview-width":`${Z.width}px`,"--gallery-preview-height":`${Z.height}px`}:void 0,children:P?.status==="error"?he.jsxs("div",{className:"gallery-state gallery-state-error",children:[he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Load Error"}),he.jsx("h3",{children:"Unable to import this component."}),he.jsx("pre",{className:"gallery-pre",children:P.error})]}):W?he.jsx("iframe",{ref:N,className:"gallery-preview-frame","data-gallery-preview-frame":r,src:Y,title:`${r} preview`},r):he.jsxs("div",{className:"gallery-state",children:[he.jsx("span",{className:"gallery-badge",children:"Loading"}),he.jsx("h3",{children:"Importing component metadata…"}),he.jsx("p",{children:"The gallery keeps the catalog light and only imports the selected component bundle."})]})})})]}),he.jsxs("aside",{className:"gallery-inspector",children:[he.jsxs("section",{className:"gallery-panel",children:[he.jsx("div",{className:"gallery-section-header",children:he.jsx("h3",{children:"Metadata"})}),W?he.jsxs("dl",{className:"gallery-metadata",children:[he.jsxs("div",{children:[he.jsx("dt",{children:"Name"}),he.jsx("dd",{children:W.metadata.name})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Version"}),he.jsx("dd",{children:W.metadata.version??I?.version})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Wrapper"}),he.jsx("dd",{children:W.kind==="canvas"?"Canvas host":"Standard host"})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Package"}),he.jsx("dd",{children:I?.packageName??"Unknown"})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Viewport"}),he.jsx("dd",{children:Z.width?`${Z.width}px fixed width`:"Fluid host width"})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Tags"}),he.jsx("dd",{children:W.metadata.tags?.length?W.metadata.tags.join(", "):I?.tags.length?I.tags.join(", "):"None exported"})]})]}):he.jsx("p",{className:"gallery-muted",children:"Metadata appears after the module loads."})]}),he.jsxs("section",{className:"gallery-panel gallery-panel-scroll",children:[he.jsxs("div",{className:"gallery-section-header",children:[he.jsx("h3",{children:"Params"}),W?he.jsx("span",{className:"gallery-badge",children:Object.keys(W.metadata.paramSchema).length}):null]}),W&&Object.keys(W.metadata.paramSchema).length>0?he.jsx("div",{className:"gallery-controls gallery-controls-scroll",children:Object.entries(W.metadata.paramSchema).map(([q,ne])=>he.jsx(w4,{onChange:te,paramKey:q,schema:ne,value:se[q]??ne.default},q))}):he.jsx("p",{className:"gallery-muted",children:"This component does not expose parameter controls."})]}),he.jsxs("section",{className:"gallery-panel",children:[he.jsx("div",{className:"gallery-section-header",children:he.jsx("h3",{children:"Latest Result"})}),b?he.jsx("pre",{className:"gallery-pre",children:eE(b)}):he.jsx("p",{className:"gallery-muted",children:"No completion payload yet."})]}),he.jsxs("section",{className:"gallery-panel",children:[he.jsxs("div",{className:"gallery-section-header",children:[he.jsx("h3",{children:"Event Log"}),he.jsx("button",{className:"gallery-button gallery-button-quiet",type:"button",onClick:()=>R([]),children:"Clear"})]}),A.length>0?he.jsx("div",{className:"gallery-log-list",children:A.map(q=>he.jsxs("article",{className:"gallery-log-item",children:[he.jsxs("div",{className:"gallery-log-header",children:[he.jsx("span",{className:`gallery-badge gallery-badge-${q.kind}`,children:q.kind}),he.jsx("span",{className:"gallery-log-time",children:q.timestamp})]}),he.jsx("pre",{className:"gallery-pre",children:eE(q.payload)})]},q.id))}):he.jsx("p",{className:"gallery-muted",children:"Progress, completion, host events, and sound calls appear here."})]})]})]})})]})}function N4(){const[r,e]=rt.useState(vA),[t,n]=rt.useState(null),[s,u]=rt.useState(null),[f,h]=rt.useState({}),[m,g]=rt.useState(0),_=rt.useRef({}),x=rt.useCallback(M=>{typeof window>"u"||window.parent===window||window.parent.postMessage(M,window.location.origin)},[]);rt.useEffect(()=>{x({source:"glitch-gallery-preview",type:"ready"})},[x]),rt.useEffect(()=>{const M=A=>{if(A.origin!==window.location.origin||!A.data||A.data.source!=="glitch-gallery-shell"||A.data.type!=="sync")return;const R=A.data.payload;e(R.component),h(R.params),g(R.revision)};return window.addEventListener("message",M),()=>window.removeEventListener("message",M)},[]),rt.useEffect(()=>{let M=!1;return yA(r).then(A=>{M||(n(A),u(null),h(R=>Object.keys(R).length>0?R:{...A.metadata.defaultParams}))}).catch(A=>{if(M)return;const R=A instanceof Error?A.message:String(A);n(null),u(R),x({source:"glitch-gallery-preview",type:"log",kind:"system",payload:{type:"load-error",component:r,error:R}})}),()=>{M=!0}},[x,r]);const b=rt.useMemo(()=>({playSound(M,A){const R=`${r}:${M}`,w=T4(r,M);let E=!1;if(w.length>0&&typeof window<"u"){E=!0;const[N]=w,D=_.current[R]??new Audio(N);_.current[R]=D,D.pause(),D.currentTime=0;const U=D.play();U&&U.catch(()=>{tE(M)})}E||tE(M),x({source:"glitch-gallery-preview",type:"log",kind:"sound",payload:{id:M,payload:A}})},stopSound(M,A){const R=`${r}:${M}`,w=_.current[R];w&&(w.pause(),w.currentTime=0),x({source:"glitch-gallery-preview",type:"log",kind:"sound",payload:{id:`stop:${M}`,payload:A}})},emit(M,A){x({source:"glitch-gallery-preview",type:"log",kind:"host",payload:{type:M,payload:A}})}}),[x]);return s?he.jsx("div",{className:"gallery-runtime-root",children:he.jsxs("div",{className:"gallery-state gallery-state-error",children:[he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Load Error"}),he.jsx("h3",{children:"Unable to import this component."}),he.jsx("pre",{className:"gallery-pre",children:s})]})}):t?he.jsx("div",{className:"gallery-runtime-root","data-gallery-runtime":r,children:he.jsx(g4,{resetKey:`${r}:${m}`,children:he.jsx(A4,{entry:t,hostBridge:b,onComplete:M=>{x({source:"glitch-gallery-preview",type:"complete",payload:M})},onProgress:M=>{x({source:"glitch-gallery-preview",type:"progress",percent:M})},params:f,previewKey:`${r}:${m}`})})}):he.jsx("div",{className:"gallery-runtime-root",children:he.jsxs("div",{className:"gallery-state",children:[he.jsx("span",{className:"gallery-badge",children:"Loading"}),he.jsx("h3",{children:"Importing preview runtime…"})]})})}lw.createRoot(document.getElementById("root")).render(he.jsx(C4,{}));export{PD as A,as as B,yt as C,Uo as D,Ny as F,C4 as G,QE as I,uR as M,Dl as O,zi as P,Pa as Q,my as R,yr as S,Xc as T,iS as U,j as V,jT as W,kx as _,gz as a,ze as b,ow as c,XE as d,Dz as e,wl as f,Kz as g,r4 as h,Cn as i,he as j,FD as k,Gc as l,eb as m,of as n,Lb as o,Kp as p,qy as q,rt as r,Xb as s,Yi as t,Nu as u,lf as v,Vu as w,NT as x,RT as y,CT as z}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-CMvlyyxu.js b/dist/vendor/glitch/glitch_gallery/assets/index-CMvlyyxu.js new file mode 100644 index 0000000..99fa45f --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-CMvlyyxu.js @@ -0,0 +1 @@ +import{r as o,j as e}from"./index-CEeZxcxj.js";const F=18,W=F*F,O=1e3,L=12,K=O*L,Q=K+O,J=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],I=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],j=[{label:"Red",shortLabel:"R",wavelength:690,hue:2,saturation:100,lightness:66,energy:.44,decay:700,radius:.28},{label:"Orange",shortLabel:"O",wavelength:620,hue:18,saturation:100,lightness:64,energy:.5,decay:760,radius:.3},{label:"Amber",shortLabel:"A",wavelength:590,hue:36,saturation:100,lightness:66,energy:.56,decay:820,radius:.32},{label:"Yellow",shortLabel:"Y",wavelength:570,hue:56,saturation:100,lightness:69,energy:.62,decay:900,radius:.34},{label:"Green",shortLabel:"G",wavelength:530,hue:108,saturation:84,lightness:66,energy:.7,decay:980,radius:.36},{label:"Cyan",shortLabel:"C",wavelength:500,hue:188,saturation:94,lightness:68,energy:.8,decay:1120,radius:.4},{label:"Blue",shortLabel:"B",wavelength:450,hue:232,saturation:100,lightness:71,energy:.92,decay:1300,radius:.45},{label:"Violet",shortLabel:"V",wavelength:410,hue:274,saturation:100,lightness:74,energy:1.08,decay:1540,radius:.52}],ee=[{page:"binning",title:"Count events per second",diagram:"count-time",rule:"Group event rows into 1 second time bins and count how many clicks fall into each bin.",output:"Light curve / count periodogram"},{page:"flux",title:"Sum energy per second",diagram:"energy-time",rule:"Group event rows into 1 second time bins and sum the total photon energy inside each bin.",output:"Flux variability"},{page:"periodogram",title:"Sum energy by wavelength bin",diagram:"energy-wavelength",rule:"Group event rows by wavelength and sum the energy across the recent time window.",output:"Spectrum"},{page:"spectrogram",title:"Count events by wavelength over time",diagram:"count-wavelength-time",rule:"Group event rows into both time bins and wavelength bins, then count clicks in each cell.",output:"Spectrogram"}],U={"transition-photon":{title:"Every photon has energy",body:"Colour tells us something about wavelength and energy. Before we record the hits, it helps to see what that means.",nextPage:"photon",emoji:"😶‍🌫️"},"transition-eventlist":{title:"Now record the hits",body:"Each photon hit becomes one row with a time, an energy, and a CCD position.",nextPage:"eventlist",emoji:"📝"},"transition-binning":{title:"Chart #1 : Brightness over time",body:"We now use the data and make the first chart",nextPage:"binning",emoji:"🫰🏻⏰"},"transition-flux":{title:"Chart #2: Energy over time",body:"Instead of counting clicks equally, we sum up the energy of each phton inside each time bin.",nextPage:"flux",emoji:"🔥⏰"},"transition-periodogram":{title:"Chart #3: Build a spectrum",body:"The same event list can also be grouped by wavelength. Is it lots of low-energy red photons, or high-energy violet ones? Let`s find out.",nextPage:"periodogram",emoji:"🌈"},"transition-spectrogram":{title:"Chart #3 : Let´s mix things up",body:"Now try both time bins, and wavelength/energy bins at the same time!",nextPage:"spectrogram",emoji:"🤪"}},Y=["receptor","photon","eventlist","binning","flux","periodogram","spectrogram"];function se(){return Array.from({length:W},(t,n)=>({id:n,level:0,size:.22,decay:900,tint:"hsla(0 0% 100% / 0)",glow:"hsla(0 0% 100% / 0)"}))}function te(){return Array.from({length:j.length},()=>0)}function ne(){return{cells:se(),eventHistory:[],totalPhotons:0}}function G(t,n,s){return Math.min(s,Math.max(n,t))}function ae(t){const n=Math.floor(t/1e3),s=Math.floor(n/60),a=n%60,c=Math.floor(t%1e3/10);return[s,a].map(r=>String(r).padStart(2,"0")).join(":")+"."+String(c).padStart(2,"0")}function ce(t){const n=t.replace(/^#/,"");return J.includes(n)?n:"orbit"}function z(){return typeof window>"u"?"orbit":ce(window.location.hash)}function B(t,n,s,a){return`hsla(${t} ${n}% ${s}% / ${a})`}function k(t,n){const s=j[t],a=G(.08+n*.88,.08,.96),c=Math.min(84,s.lightness+n*10);return`hsla(${s.hue} ${s.saturation}% ${c}% / ${a})`}function V(t,n,s,a){if(t.length===0)return"";const c=a?.min??Math.min(...t),r=a?.max??Math.max(...t),i=Math.max(r-c,1e-4);return t.map((d,p)=>{const u=t.length===1?n/2:p/(t.length-1)*n,m=s-(d-c)/i*(s-8)-4;return`${p===0?"M":"L"} ${u.toFixed(2)} ${m.toFixed(2)}`}).join(" ")}function re(t,n,s,a){return t.length===0?"":`${V(t,n,s,a)} L ${n} ${s} L 0 ${s} Z`}function ie(t){const s=G(t,0,1)*(j.length-1),a=Math.floor(s),c=Math.min(j.length-1,Math.ceil(s)),r=s-a,i=j[a],d=j[c],p=(u,m)=>u+(m-u)*r;return{label:r<.5?i.label:d.label,wavelength:p(i.wavelength,d.wavelength),energy:p(i.energy,d.energy),hue:p(i.hue,d.hue),saturation:p(i.saturation,d.saturation),lightness:p(i.lightness,d.lightness)}}function le(){return Array.from({length:42},(t,n)=>({x:n*73%100/100,y:(n*37+11)%100/100,size:.8+n*17%7*.22,opacity:.24+n*29%10*.05}))}function oe(t){const n=le(),s=t*24e-5,c=Math.cos(s)*178,r=Math.sin(s*.72)*34,i=Math.sin(s)*132,p=c*.72,u=r*.45,m=T=>1+T/620,N=460+(0-p)*.72,f=264+(0-u)*.42+i*.08,M=G(m(-p*.05),.88,1.14),C=460+(c-p)*.72,y=236+(r-u)*.5-i*.16,v=G(m(i),.82,1.34),h=s*.9;return{earth:{x:N,y:f,scale:M},telescope:{x:C,y,scale:v,rotation:h},stars:n}}function de(){const[t,n]=o.useState(0);o.useEffect(()=>{let a=0;const c=performance.now(),r=i=>{n(i-c),a=window.requestAnimationFrame(r)};return a=window.requestAnimationFrame(r),()=>window.cancelAnimationFrame(a)},[]);const s=oe(t);return e.jsxs("div",{className:"ccd-orbit-screen",children:[e.jsxs("div",{className:"ccd-orbit-copy",children:[e.jsx("span",{className:"ccd-stat-label",children:"Glitch Hunters's guide to telescopes"}),e.jsx("h2",{children:"Orbital telescopes"}),e.jsx("p",{children:"Humanity has launched multiple telescopes into orbit, each designed to observe the universe from different vantage points."})]}),e.jsx("div",{className:"ccd-orbit-stage",children:e.jsxs("svg",{className:"ccd-orbit-svg",viewBox:"0 0 920 520","aria-label":"Telescope orbiting Earth",children:[e.jsxs("defs",{children:[e.jsxs("radialGradient",{id:"orbitEarthGlow",cx:"42%",cy:"34%",r:"68%",children:[e.jsx("stop",{offset:"0%",stopColor:"#6bd3ff"}),e.jsx("stop",{offset:"36%",stopColor:"#2f88d8"}),e.jsx("stop",{offset:"72%",stopColor:"#124180"}),e.jsx("stop",{offset:"100%",stopColor:"#061327"})]}),e.jsxs("linearGradient",{id:"orbitCubeFront",x1:"0",x2:"1",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#fff7e9"}),e.jsx("stop",{offset:"100%",stopColor:"#ff9d77"})]}),e.jsxs("linearGradient",{id:"orbitCubeSide",x1:"0",x2:"1",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#d3caf7"}),e.jsx("stop",{offset:"100%",stopColor:"#7967db"})]})]}),s.stars.map((a,c)=>e.jsx("circle",{cx:a.x*920,cy:a.y*520,fill:"rgba(255,255,255,0.92)",opacity:a.opacity,r:a.size},c)),e.jsx("ellipse",{className:"ccd-orbit-track",cx:s.earth.x,cy:s.earth.y+8,rx:174*s.earth.scale,ry:62*s.earth.scale}),e.jsxs("g",{transform:`translate(${s.earth.x} ${s.earth.y}) scale(${s.earth.scale})`,children:[e.jsx("circle",{className:"ccd-orbit-earth-atmosphere",cx:"0",cy:"0",r:"112"}),e.jsx("circle",{cx:"0",cy:"0",fill:"url(#orbitEarthGlow)",r:"96"}),e.jsx("path",{className:"ccd-orbit-continent",d:"M -38 -20 C -18 -46 8 -44 22 -12 C 36 10 18 26 -4 32 C -20 38 -42 22 -48 0 Z"}),e.jsx("path",{className:"ccd-orbit-continent",d:"M 18 20 C 38 14 54 26 48 48 C 42 62 18 62 10 44 C 6 34 8 24 18 20 Z"}),e.jsx("circle",{className:"ccd-orbit-night-shadow",cx:"30",cy:"4",r:"92"})]}),e.jsx("g",{transform:`translate(${s.telescope.x} ${s.telescope.y}) rotate(${s.telescope.rotation*180/Math.PI}) scale(${s.telescope.scale})`,children:e.jsxs("g",{className:"ccd-orbit-telescope",children:[e.jsx("polygon",{points:"-18,-18 12,-28 12,4 -18,14",fill:"url(#orbitCubeFront)"}),e.jsx("polygon",{points:"12,-28 30,-14 30,18 12,4",fill:"url(#orbitCubeSide)"}),e.jsx("polygon",{points:"-18,-18 0,-4 30,-14 12,-28",fill:"rgba(255,255,255,0.82)"}),e.jsx("rect",{x:"-42",y:"-5",width:"18",height:"10",rx:"2.5",fill:"#d9d2f5"}),e.jsx("rect",{x:"30",y:"-4",width:"22",height:"8",rx:"3",fill:"#ffc66f"}),e.jsx("rect",{x:"-6",y:"18",width:"12",height:"34",rx:"5",fill:"#bdb4e8"}),e.jsx("rect",{x:"-34",y:"30",width:"68",height:"10",rx:"5",fill:"#8e78ff",opacity:"0.88"})]})})]})}),e.jsx("div",{className:"ccd-orbit-actions",children:e.jsx("a",{className:"ccd-experience-button",href:"#intro",children:"Next"})})]})}function q(t,n,s,a){const c=Array.from({length:L},()=>0),r=Math.max(0,s-L);return t.forEach(i=>{const d=Math.floor((i.time-n)/O);d=s||(c[d-r]+=a(i))}),c}function he(t,n,s){const a=Array.from({length:j.length},()=>Array.from({length:L},()=>0)),c=Math.max(0,s-L);return t.forEach(r=>{const i=Math.floor((r.time-n)/O);i=s||(a[r.photonIndex][i-c]+=1)}),a}function me(t,n,s){const a=te();if(s<=0)return a;const c=Math.max(0,s-L);return t.forEach(r=>{const i=Math.floor((r.time-n)/O);i>=c&&i"u")return null;const t=window.AudioContext??window.webkitAudioContext;return t?new t:null}function pe(t){const[n,s]=o.useState(()=>ne()),[a,c]=o.useState(0),[r,i]=o.useState(!1),[d,p]=o.useState(!0),[u]=o.useState(()=>Date.now()),m=o.useRef(u),N=o.useRef(null),f=o.useRef(null),M=o.useRef(t),C=o.useRef(null);o.useEffect(()=>{M.current=t},[t]);const y=()=>{const h=C.current??xe();if(!h){p(!1);return}C.current=h,h.resume().then(()=>{p(!0),i(h.state==="running")}).catch(()=>{i(!1)})};o.useEffect(()=>{const h=()=>{y()};return window.addEventListener("pointerdown",h,{passive:!0}),window.addEventListener("keydown",h),()=>{window.removeEventListener("pointerdown",h),window.removeEventListener("keydown",h)}},[]),o.useEffect(()=>()=>{C.current&&C.current.close()},[]);const v=(h,T,R)=>{if(!M.current)return;const E=C.current;if(!E||E.state!=="running")return;const x=E.currentTime+R,b=E.createOscillator(),A=E.createGain(),w=E.createBiquadFilter(),_=j[h],l=820+h*92,g=.006+T*.004,S=.018+T*.02;b.type="triangle",b.frequency.setValueAtTime(l,x),b.frequency.exponentialRampToValueAtTime(l*.74,x+S),w.type="bandpass",w.frequency.setValueAtTime(1400+_.hue*2.4,x),w.Q.setValueAtTime(1.4,x),A.gain.setValueAtTime(1e-4,x),A.gain.exponentialRampToValueAtTime(g,x+.003),A.gain.exponentialRampToValueAtTime(1e-4,x+S),b.connect(w),w.connect(A),A.connect(E.destination),b.start(x),b.stop(x+S+.008)};return o.useEffect(()=>{const h=()=>{c(Date.now()-m.current)};return h(),N.current=window.setInterval(h,90),()=>{N.current!==null&&window.clearInterval(N.current)}},[]),o.useEffect(()=>{let h=!1;const T=()=>{if(h)return;const R=[],E=[];s(x=>{const b=Date.now(),A=x.cells.map(g=>{if(g.level<=.001)return g.level===0?g:{...g,level:0};const S=36/g.decay;return{...g,level:Math.max(0,g.level-S),size:Math.max(.2,g.size-S*.3)}});let w=x.totalPhotons;const _=Math.random()<.28?2:1;for(let g=0;g<_;g+=1){const S=Math.floor(Math.random()*W),$=Math.floor(Math.random()*j.length),P=j[$],H=A[S],X=G(H.level+P.energy,0,1.25),Z=Math.max(H.size,P.radius+P.energy*.22);A[S]={...H,level:X,size:Z,decay:Math.max(H.decay,P.decay),tint:B(P.hue,P.saturation,P.lightness,.96),glow:B(P.hue,P.saturation,Math.min(88,P.lightness+8),.78)},w+=1,R.push({photonIndex:$,energy:P.energy}),E.push({time:b,photonIndex:$,energy:P.energy,cellIndex:S})}const l=[...x.eventHistory,...E].filter(g=>b-g.time{v(x.photonIndex,x.energy,b*.012)}),f.current=window.setTimeout(T,36+Math.random()*70)};return T(),()=>{h=!0,f.current!==null&&window.clearTimeout(f.current)}},[]),{audioArmed:r,audioSupported:d,enableAudio:y,elapsedMilliseconds:a,exposureStartTime:u,simulation:n}}function ge({cells:t,activeHits:n,averageEnergy:s,guide:a}){return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-stage",children:[e.jsx("div",{className:"ccd-grid-frame",children:e.jsxs("div",{className:"ccd-grid","aria-label":"Photon receptor grid",children:[t.map(c=>e.jsx("div",{className:"ccd-cell",children:e.jsx("span",{className:"ccd-hit",style:{opacity:c.opacity,transform:`translate(-50%, -50%) scale(${c.scale})`,width:`${c.size}rem`,height:`${c.size}rem`,background:c.tint,boxShadow:`0 0 ${.9+c.opacity*1.8}rem ${c.glow}`}})},c.id)),e.jsx("div",{className:"ccd-grid-glow"})]})}),a||null,e.jsxs("div",{className:"ccd-readout","aria-label":"Sensor readout",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Active pixels"}),e.jsx("strong",{children:String(n).padStart(3,"0")})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Mean charge"}),e.jsx("strong",{children:s.toFixed(3)})]})]})]})})}const je={eyebrow:"Detector Plane",title:"Telescope detector view",description:"The core of the telescope is a camera, called a CCD array. Photons - light from distant galaxies - strike the CCD and light up specific pixels. This is the raw material for the everything a telescope does."},fe={stepLabel:"Step 1",title:"Photons are hitting the detector",body:"Notice how some pixels are bigger than others? They have more energy."};function ve(){return e.jsx("div",{className:"ccd-intro-screen",children:e.jsxs("div",{className:"ccd-intro-panel",children:[e.jsx("div",{className:"ccd-intro-logo-frame","aria-hidden":"true",children:e.jsx("img",{alt:"",className:"ccd-intro-logo",src:"/glitchhunterlogo.png"})}),e.jsx("div",{className:"ccd-intro-brand",children:e.jsx("span",{className:"ccd-intro-brand-mark",children:"Glitch Hunter's"})}),e.jsxs("div",{className:"ccd-intro-copy",children:[e.jsx("h2",{children:"Guide to Telescopes"}),e.jsx("p",{children:"How do they work? What does the telescope actually do?"})]}),e.jsxs("div",{className:"ccd-intro-covers",children:[e.jsx("span",{className:"ccd-stat-label",children:"In this experience, you will see:"}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"01"}),e.jsx("strong",{children:"The CCD"}),e.jsx("p",{children:"The telescope's eye, where photons land."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"02"}),e.jsx("strong",{children:"Energy and wavelength"}),e.jsx("p",{children:"Colour tells us whether a photon is lower-energy red or higher-energy violet."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"03"}),e.jsx("strong",{children:"The event list"}),e.jsx("p",{children:"Each photon hit becomes a recorded row with time, energy, and detector position."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"04"}),e.jsx("strong",{children:"Periodograms"}),e.jsx("p",{children:"Group events by time or wavelength to see brightness and spectral power."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"05"}),e.jsx("strong",{children:"Spectrograms"}),e.jsx("p",{children:"Bin by both time and wavelength to see how the colours evolve."})]})]}),e.jsx("div",{className:"ccd-intro-actions",children:e.jsx("a",{className:"ccd-experience-button",href:"#receptor",children:"Next"})})]})})}function be(t){return t in U}function ye({onComplete:t}){return e.jsx("div",{className:"ccd-closing-screen",children:e.jsxs("div",{className:"ccd-closing-panel",children:[e.jsx("span",{className:"ccd-stat-label",children:"Key Concepts"}),e.jsx("h2",{children:"What to remember"}),e.jsxs("div",{className:"ccd-closing-grid",children:[e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Binning"}),e.jsx("p",{children:"Grouping events because they arrive at a similar time, or have a similar colour."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Energy / wavelength"}),e.jsx("p",{children:"Red means long wavelength and low energy. Violet means short wavelength and high energy."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Periodogram"}),e.jsx("p",{children:"How the brightness goes up and down over time."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Spectrogram"}),e.jsx("p",{children:"How much there is of each colour."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Periodo-spectrogram"}),e.jsx("p",{children:"Binning by both time and wavelength / frequency."})]})]}),e.jsx("p",{className:"ccd-closing-message",children:"You're on your way to becoming a Cosmotologist!"}),e.jsxs("div",{className:"ccd-closing-actions",children:[e.jsx("a",{className:"ccd-experience-button ccd-experience-button-secondary",href:"#orbit",children:"Start Over"}),e.jsx("button",{className:"ccd-experience-button",onClick:()=>{t?.({success:!0,score:100,data:{completedExperience:"ccd-photon-explorer",finalPage:"closing"}})},type:"button",children:"Take the Glitch Gate"})]})]})})}function Ne({page:t}){const n=U[t];return e.jsx("div",{className:"ccd-transition-screen",children:e.jsxs("div",{className:"ccd-transition-card",children:[e.jsx("span",{className:"ccd-stat-label emojilarge",children:n.emoji}),e.jsx("h2",{children:n.title}),e.jsx("p",{children:n.body}),e.jsx("div",{className:"ccd-transition-actions",children:e.jsx("a",{className:"ccd-experience-button",href:`#${n.nextPage}`,children:"Next"})})]})})}const D={eyebrow:"",title:"Space telescope 101",description:"In this interactive tutorial, you will see how photons hit eye of the telescope, and how that is turned into turned into different scientific charts. We`ll cover:"};function we(){const[t,n]=o.useState(.5),s=ie(t),a=B(s.hue,s.saturation,s.lightness,.98);return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-energy-panel",children:[e.jsxs("div",{className:"ccd-energy-scale",children:[e.jsx("div",{className:"ccd-energy-spectrum","aria-hidden":"true",style:{"--ccd-spectrum-position":`${t*100}%`,"--ccd-spectrum-color":a}}),e.jsx("div",{className:"ccd-energy-slider-wrap",children:e.jsx("input",{"aria-label":"Photon wavelength and energy slider",className:"ccd-energy-slider",max:1,min:0,onChange:c=>n(Number(c.target.value)),step:.001,type:"range",value:t})}),e.jsxs("div",{className:"ccd-energy-scale-labels",children:[e.jsx("span",{children:"Longer wavelength"}),e.jsx("span",{children:"Shorter wavelength"})]}),e.jsxs("div",{className:"ccd-energy-scale-labels ccd-energy-scale-labels-strong",children:[e.jsx("span",{children:"Red, lower energy"}),e.jsx("span",{children:"Violet, higher energy"})]})]}),e.jsxs("div",{className:"ccd-energy-readout",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Selected colour"}),e.jsx("strong",{style:{color:a},children:s.label})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Wavelength"}),e.jsxs("strong",{children:[s.wavelength.toFixed(0)," nm"]})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Energy"}),e.jsxs("strong",{children:[s.energy.toFixed(2)," units"]})]})]})]})})}const Ee={eyebrow:"Photon Energy And Wavelength",title:"Photon colour maps to wavelength",description:"Each hit has energy and wavelength. Red means longer wavelength and lower energy, while violet means shorter wavelength and higher energy. Wavelength is mesaured in nano-meters (nm). One nanometer is one billionth of a meter - about the size of a virus. The visible spectrum ranges from around 380 nm (violet) to 750 nm (red). But telescopes can see beyond that, into high-energy ultraviolet and infrared wavelengths that our eyes can´t detect."},Se={stepLabel:"Colour has meaning",title:"One photon, one observation",body:"In this demo, whenever you see the 🟣 colour, it indicates high energy - short wavelength. 🔴 is lower energy, but longer wavelength. "};function Pe({type:t}){if(t==="count-wavelength-time")return e.jsx("div",{className:"ccd-mini-diagram ccd-mini-diagram-grid","aria-hidden":"true",children:Array.from({length:12},(s,a)=>e.jsx("span",{className:"ccd-mini-diagram-grid-cell",style:{opacity:.28+a%4*.14}},a))});const n=t==="count-time"?[.28,.58,.38,.76,.46,.66]:t==="energy-time"?[.22,.5,.42,.88,.56,.72]:[.2,.32,.48,.84,.6,.3];return e.jsx("div",{className:"ccd-mini-diagram","aria-hidden":"true",children:n.map((s,a)=>e.jsx("span",{className:`ccd-mini-diagram-bar${t!=="count-time"?" is-energy":""}`,style:{height:`${s*100}%`}},a))})}function Ce({page:t,onSelect:n,showGuide:s,onToggleGuide:a}){const c=t==="receptor",r=t==="photon",i=t==="eventlist";return e.jsxs("section",{className:"ccd-selector","aria-label":"Visualization selector",children:[e.jsxs("div",{className:"ccd-selector-root",children:[e.jsx("span",{className:"ccd-stat-label",children:"These plots are different ways of binning the same event list."}),e.jsx("p",{children:"Everything begins with the CCD receiving photons. Those hits become rows in an event list. After that, different binning rules produce different plots."})]}),e.jsxs("div",{className:"ccd-selector-raw",children:[e.jsxs("a",{className:`ccd-selector-link${c?" is-active":""}`,href:"#receptor",onClick:n,children:[e.jsx("span",{className:"ccd-selector-link-label",children:"Raw data"}),e.jsx("strong",{children:"1. Photons hit CCD pixels"}),e.jsx("span",{children:"This is the detector plane: the spatial pattern of hits on the telescope CCD."})]}),e.jsxs("a",{className:`ccd-selector-link${r?" is-active":""}`,href:"#photon",onClick:n,children:[e.jsx("span",{className:"ccd-selector-link-label",children:"Photon properties"}),e.jsx("strong",{children:"2. Colour indicates wavelength and energy"}),e.jsx("span",{children:"Red means lower energy and violet means higher energy, which is why later plots can bin by wavelength."})]}),e.jsxs("a",{className:`ccd-selector-link${i?" is-active":""}`,href:"#eventlist",onClick:n,children:[e.jsx("span",{className:"ccd-selector-link-label",children:"Recorded data"}),e.jsx("strong",{children:"3. Each hit becomes a row: time, energy, x, y"}),e.jsx("span",{children:"This is the FITS-style event table. Every later diagram is derived from these same rows."})]})]}),e.jsx("div",{className:"ccd-selector-section",children:e.jsxs("div",{className:"ccd-selector-axis",children:[e.jsx("span",{className:"ccd-stat-label",children:"4. Choose a binning rule"}),e.jsx("strong",{children:"Derived view: binned visualization"}),e.jsx("p",{children:"These plots are different ways of grouping the same event rows."})]})}),e.jsx("div",{className:"ccd-selector-results",children:ee.map(d=>e.jsxs("a",{className:`ccd-selector-leaf${d.page===t?" is-active":""}`,href:`#${d.page}`,onClick:n,children:[e.jsx("span",{className:"ccd-selector-leaf-dim",children:"Input: same event list"}),e.jsx(Pe,{type:d.diagram}),e.jsx("strong",{children:d.title}),e.jsxs("span",{children:["Rule: ",d.rule]}),e.jsxs("span",{children:["Output: ",d.output]})]},d.page))}),e.jsxs("div",{className:"ccd-selector-current",children:[e.jsx("span",{className:"ccd-stat-label",children:"Recording"}),e.jsx("button",{className:`ccd-selector-option${s?" is-active":""}`,onClick:a,type:"button",children:s?"Guide overlay on":"Guide overlay off"})]})]})}function Te(t){switch(t){case"intro":return D;case"receptor":return je;case"photon":return Ee;case"eventlist":return ke;case"binning":return We;case"flux":return De;case"periodogram":return Le;case"spectrogram":return $e;case"closing":return D;default:return D}}function Ae(t){switch(t){case"intro":return null;case"receptor":return fe;case"photon":return Se;case"eventlist":return Ge;case"binning":return Ye;case"flux":return Be;case"periodogram":return _e;case"spectrogram":return He}}function Me({page:t}){const n=I.indexOf(t),s=n>0?I[n-1]:null,a=n>=0&&n{const r=ue(a.cellIndex),i=(a.time-n)/1e3;return j[a.photonIndex],e.jsxs("div",{className:"ccd-event-table",children:[e.jsx("span",{children:i.toFixed(3)}),e.jsx("span",{style:{color:k(a.photonIndex,.92)},children:a.energy.toFixed(2)}),e.jsx("span",{children:String(r.x).padStart(2,"0")}),e.jsx("span",{children:String(r.y).padStart(2,"0")})]},`${a.time}-${a.cellIndex}-${c}`)}),s.length===0?e.jsxs("div",{className:"ccd-event-table ccd-event-table-empty",children:[e.jsx("span",{children:"No rows yet"}),e.jsx("span",{children:"Waiting"}),e.jsx("span",{children:"--"}),e.jsx("span",{children:"--"})]}):null]})]}),e.jsx("div",{className:"ccd-flux-legend",children:j.map((a,c)=>e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-legend-dot",style:{background:k(c,.92),boxShadow:`0 0 0.8rem ${k(c,.56)}`}}),e.jsx("span",{children:a.label})]},a.label))})]})})}const ke={eyebrow:"FITS Event Table",title:"Photon event list view",description:"The clicks are recorded in a table, called the event list, with the time, energy, and CCD pixel position."},Ge={stepLabel:"Step 3",title:"Each hit becomes a row in the event list",body:"Astronomy pipelines often save these events as FITS tables. This is the raw data you can download from Telescopes like Chandra!"};function Ie({spectralEnergy:t}){const n=Math.max(...t,.01),s=t.reduce((a,c)=>a+c,0)||1;return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Integrated over last 12 completed 1.0 s bins"}),e.jsxs("strong",{children:[s.toFixed(2)," total energy units"]})]}),e.jsx("div",{className:"ccd-periodogram","aria-label":"Periodogram chart",children:j.map((a,c)=>{const r=G(t[c]/n,0,1),i=t[c]/s;return e.jsxs("div",{className:"ccd-periodogram-band",children:[e.jsx("div",{className:"ccd-bar-shell",children:e.jsx("div",{className:"ccd-bar-fill",style:{height:`${18+r*82}%`,background:`linear-gradient(180deg, ${k(c,.55)}, ${k(c,1)})`,boxShadow:`0 0 1.4rem ${k(c,.72)}`}})}),e.jsxs("div",{className:"ccd-band-meta",children:[e.jsx("strong",{children:a.shortLabel}),e.jsxs("span",{children:[a.wavelength," nm"]}),e.jsxs("span",{children:[t[c].toFixed(2)," E"]}),e.jsxs("span",{children:[(i*100).toFixed(1),"%"]})]})]},a.label)})})]})})}const Le={eyebrow:"Spectral power",title:"Spectrogram of energy",description:"We put low-energy on the left, and high energy on the right. The energy of all the photons in each frequency bin integrated over some period (here last 12 secs) gives us the shape of the spectrum during that time."},_e={stepLabel:"Step 6",title:"Spectral power",body:"Spectral power reveals the energy distribution, and it´s very important for many applications. It can tell us a lot about how stars work"};function Oe({spectrogramBins:t}){const n=Math.max(...t.flat(),1);return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Clicks per 1.0 s time bin"}),e.jsxs("strong",{children:[L," time bins x ",j.length," frequency bins"]})]}),e.jsxs("div",{className:"ccd-spectrogram-shell",children:[e.jsx("div",{className:"ccd-spectrogram-axis",children:j.map(s=>e.jsx("span",{children:s.label},s.label))}),e.jsx("div",{className:"ccd-spectrogram","aria-label":"Spectrogram heat map",children:j.map((s,a)=>e.jsx("div",{className:"ccd-spectrogram-row",children:t[a].map((c,r)=>e.jsx("span",{className:"ccd-spectrogram-cell",style:{background:k(a,c/n),boxShadow:c>0?`0 0 0.8rem ${k(a,c/n)}`:"none"}},`${s.label}-${r}`))},s.label))})]}),e.jsxs("div",{className:"ccd-spectrogram-footer",children:[e.jsx("span",{children:"Earlier"}),e.jsx("span",{children:"Now"})]})]})})}const $e={eyebrow:"Frequency X Time",title:"Periodo-spectro-gram!",description:"You can play around with the same data and make many charts! This shows the energy arriving during each time bin for each frequency bin!"},He={stepLabel:"Step 7",title:"Binned by time and frequency",body:"Is it useful? Maybe not for a lot of applications, but it looks pretty!"};function Fe({fluxBins:t}){const n=t.some(y=>y>0)?t:[1.2,1.8,1.4,2.1,1.7,1.5,2.3,1.6,1.9,1.4,2,1.7],s=n.map((y,v)=>{const h=n.slice(0,v+1);return h.reduce((T,R)=>T+R,0)/h.length}),a=n[n.length-1]??0,c=n.reduce((y,v)=>y+v,0)/n.length,r=n.reduce((y,v)=>y+(v-c)**2,0)/n.length,i=Math.sqrt(r),d=Math.min(...n),p=Math.max(...n),u=Math.min(...s),m=Math.max(...s),N={min:Math.min(d,u),max:Math.max(p,m)},f=V(n,760,240,N),M=re(n,760,240,N),C=V(s,760,240,N);return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Total energy per 1.0 s bin"}),e.jsxs("strong",{children:[a.toFixed(2)," energy units in latest bin"]})]}),e.jsxs("div",{className:"ccd-flux-chart-shell",children:[e.jsxs("svg",{className:"ccd-flux-chart",viewBox:"0 0 760 240","aria-label":"Total flux variability chart",preserveAspectRatio:"none",children:[e.jsxs("defs",{children:[e.jsxs("linearGradient",{id:"fluxArea",x1:"0",x2:"0",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"rgba(255, 113, 74, 0.40)"}),e.jsx("stop",{offset:"100%",stopColor:"rgba(125, 100, 255, 0.03)"})]}),e.jsxs("linearGradient",{id:"fluxLine",x1:"0",x2:"1",y1:"0",y2:"0",children:[e.jsx("stop",{offset:"0%",stopColor:"#ff8d66"}),e.jsx("stop",{offset:"55%",stopColor:"#ffd35d"}),e.jsx("stop",{offset:"100%",stopColor:"#8f7dff"})]})]}),n.map((y,v)=>{const h=760/n.length;return e.jsx("rect",{className:v%2===0?"ccd-flux-bin":"ccd-flux-bin ccd-flux-bin-alt",x:v*h,y:0,width:h,height:240},v)}),e.jsx("path",{className:"ccd-flux-area",d:M,fill:"url(#fluxArea)"}),e.jsx("path",{className:"ccd-flux-line",d:f,stroke:"url(#fluxLine)"}),e.jsx("path",{className:"ccd-flux-mean-line",d:C})]}),e.jsxs("div",{className:"ccd-flux-legend",children:[e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-raw"}),e.jsx("span",{children:"Raw flux"})]}),e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-mean"}),e.jsx("span",{children:"Running mean"})]})]}),e.jsxs("div",{className:"ccd-flux-axis",children:[e.jsx("span",{children:"Earlier"}),e.jsx("span",{children:"Now"})]})]}),e.jsxs("div",{className:"ccd-flux-metrics",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Mean flux"}),e.jsx("strong",{children:c.toFixed(4)})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Sigma"}),e.jsx("strong",{children:i.toFixed(4)})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Range"}),e.jsxs("strong",{children:[d.toFixed(4)," to ",p.toFixed(4)]})]})]})]})})}const De={eyebrow:"Flux Variability",title:"Total flux periodogram",description:"If we focus on the energy instead of the count, we get the flux - energy per second. It tells us how the total energy varies over time (1 sec bins)."},Be={stepLabel:"Step 5",title:"Periodogram of flux",body:"This tells you how much the flux varies over time . The dotted line is the running mean, which helps show trends over time."};function Ve({countBins:t}){const n=t.some(c=>c>0)?t:[3,5,4,7,6,5,8,4,6,5,7,4],s=Math.max(...n,1),a=n.reduce((c,r)=>c+r,0)/n.length;return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Photon clicks per 1.0 s bin"}),e.jsxs("strong",{children:[a.toFixed(1)," clicks / second bin"]})]}),e.jsxs("div",{className:"ccd-counts-shell",children:[e.jsx("div",{className:"ccd-counts-chart","aria-label":"Photon counts per bin chart",children:n.map((c,r)=>e.jsxs("div",{className:"ccd-count-bin",children:[e.jsx("div",{className:"ccd-count-bin-label",children:c}),e.jsx("div",{className:"ccd-count-bar-shell",children:e.jsx("div",{className:"ccd-count-bar",style:{height:`${12+c/s*88}%`}})})]},r))}),e.jsxs("div",{className:"ccd-flux-axis",children:[e.jsx("span",{children:"Earlier"}),e.jsx("span",{children:"Now!"})]})]}),e.jsx("div",{className:"ccd-flux-legend",children:e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-flux-legend-swatch ccd-counts-legend-swatch-bin"}),e.jsx("span",{children:"Photon count bins"})]})}),e.jsxs("div",{className:"ccd-flux-metrics",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Bin width"}),e.jsx("strong",{children:"1.0 s"})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Latest bin"}),e.jsxs("strong",{children:[n[n.length-1]??0," clicks"]})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Mean bin count"}),e.jsx("strong",{children:a.toFixed(2)})]})]})]})})}const We={eyebrow:"Brightness",title:"Periodogram of counts",description:"The first chart is the periodogram. We put the clicks into groups. They arrive same second, same group! This is called time bining. (each bin 1 sec). This gives us the count per second - or the periodogram of photon counts."},Ye={stepLabel:"Step 4",title:"Brightness is counting clicks!",body:"If we ignore photon energy and just count how many events arrive each second, we get a brightness-style light curve from the same event list."};function ze({onComplete:t,onProgress:n}={}){const[s,a]=o.useState(()=>z()),[c,r]=o.useState(!1),[i,d]=o.useState(!0),{elapsedMilliseconds:p,exposureStartTime:u,simulation:m}=pe(s==="receptor");o.useEffect(()=>{const l=()=>{a(z()),r(!1)};return window.addEventListener("hashchange",l),()=>window.removeEventListener("hashchange",l)},[]),o.useEffect(()=>{const l=I.indexOf(s);l<0||n?.(Math.round(l/(I.length-1)*100))},[n,s]),o.useEffect(()=>{if(!c)return;const l=g=>{g.key==="Escape"&&r(!1)};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[c]);const N=o.useMemo(()=>m.cells.map(l=>({id:l.id,opacity:G(l.level,0,1),scale:.72+G(l.level*.7,0,.86),size:l.size,tint:l.tint,glow:l.glow})),[m.cells]),f=Math.floor(p/O),M=o.useMemo(()=>me(m.eventHistory,u,f),[f,u,m.eventHistory]),C=o.useMemo(()=>q(m.eventHistory,u,f,l=>l.energy),[f,u,m.eventHistory]),y=o.useMemo(()=>q(m.eventHistory,u,f,()=>1),[f,u,m.eventHistory]),v=o.useMemo(()=>he(m.eventHistory,u,f),[f,u,m.eventHistory]),h=N.filter(l=>l.opacity>.08).length,T=N.reduce((l,g)=>l+g.opacity,0)/W,R=M.reduce((l,g,S,$)=>g>$[l]?S:l,0),E=j[R],x=be(s)?s:null,b=s==="orbit"||s==="intro"||s==="closing",A=s==="orbit",w=x||b?null:Te(s),_=i&&!b&&!x?e.jsx(Me,{page:s}):null;return e.jsx("main",{className:"ccd-shell",children:e.jsxs("section",{className:`ccd-panel${A?" ccd-panel-wide-scene":""}`,children:[w?e.jsx("header",{className:"ccd-topbar",children:e.jsxs("div",{className:"ccd-copy",children:[e.jsx("p",{className:"ccd-kicker",children:w.eyebrow}),e.jsx("h1",{children:w.title}),e.jsx("p",{className:"ccd-description",children:w.description})]})}):null,c?e.jsx("div",{className:"ccd-modal-backdrop",onClick:()=>r(!1),role:"presentation",children:e.jsxs("div",{className:"ccd-modal",onClick:l=>l.stopPropagation(),role:"dialog","aria-modal":"true","aria-label":"Visualization chooser",children:[e.jsxs("div",{className:"ccd-modal-header",children:[e.jsxs("div",{className:"ccd-copy",children:[e.jsx("p",{className:"ccd-kicker",children:"Data Pipeline"}),e.jsx("h2",{children:"How do we transform the event list?"})]}),e.jsx("button",{className:"ccd-modal-close",onClick:()=>r(!1),type:"button","aria-label":"Close visualization chooser",children:"Close"})]}),e.jsx(Ce,{page:s,onSelect:()=>r(!1),showGuide:i,onToggleGuide:()=>d(l=>!l)})]})}):null,e.jsxs("div",{className:"ccd-experience-frame",children:[s==="orbit"?e.jsx(de,{}):null,s==="intro"?e.jsx(ve,{}):null,s==="closing"?e.jsx(ye,{onComplete:t}):null,x?e.jsx(Ne,{page:x}):null,s==="receptor"?e.jsx(ge,{cells:N,activeHits:h,averageEnergy:T,guide:_}):null,s==="photon"?e.jsx(we,{}):null,s==="eventlist"?e.jsx(Re,{events:m.eventHistory,exposureStartTime:u}):null,s==="periodogram"?e.jsx(Ie,{spectralEnergy:M}):null,s==="spectrogram"?e.jsx(Oe,{spectrogramBins:v}):null,s==="flux"?e.jsx(Fe,{fluxBins:C}):null,s==="binning"?e.jsx(Ve,{countBins:y}):null,s!=="receptor"?_:null]}),!b&&!x?e.jsxs("div",{className:"ccd-summary-row","aria-label":"Simulation summary",children:[e.jsxs("div",{className:"ccd-summary-card",children:[e.jsx("span",{className:"ccd-stat-label",children:"Exposure time"}),e.jsx("strong",{children:ae(p)})]}),e.jsxs("div",{className:"ccd-summary-card",children:[e.jsx("span",{className:"ccd-stat-label",children:"Photon count"}),e.jsx("strong",{children:m.totalPhotons})]}),e.jsxs("div",{className:"ccd-summary-card",children:[e.jsx("span",{className:"ccd-stat-label",children:"Dominant Band (Last 1 s)"}),e.jsx("strong",{children:E.label})]})]}):null]})})}function Ue({className:t,onComplete:n,onProgress:s}){return e.jsx("div",{className:t,children:e.jsx(ze,{onComplete:n,onProgress:s})})}const Xe={name:"ccd",displayName:"CCD Photon Explorer",version:"0.1.0",paramSchema:{},defaultParams:{}};export{Ue as default,Xe as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-CRhmqMwz.js b/dist/vendor/glitch/glitch_gallery/assets/index-CRhmqMwz.js new file mode 100644 index 0000000..eb87cac --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-CRhmqMwz.js @@ -0,0 +1,10 @@ +import{r as n,j as e}from"./index-CEeZxcxj.js";const L="_container_12iml_1",$="_introScreen_12iml_19",z="_introTitle_12iml_27",E="_introSubtitle_12iml_33",Q="_carouselDots_12iml_39",W="_carouselDot_12iml_39",F="_active_12iml_53",K="_continueButton_12iml_57",P="_quizScreen_12iml_75",U="_intro_12iml_19",V="_progress_12iml_90",G="_progressDot_12iml_97",H="_completed_12iml_109",J="_questionContainer_12iml_113",X="_questionText_12iml_120",Z="_questionContext_12iml_127",tt="_options_12iml_134",et="_option_12iml_134",st="_selected_12iml_158",ot="_diagnosticComplete_12iml_171",it="_summaryBox_12iml_178",nt="_summaryLabel_12iml_186",rt="_summaryText_12iml_194",ct="_roleCards_12iml_210",at="_roleCard_12iml_210",ut="_recommended_12iml_202",lt="_roleTitle_12iml_242",mt="_roleDescription_12iml_249",dt="_roleStrengths_12iml_255",ht="_strengthTag_12iml_262",yt="_selectable_12iml_267",pt="_resultScreen_12iml_277",_t="_assignedLabel_12iml_285",xt="_resultCard_12iml_292",bt="_resultButtons_12iml_314",gt="_acceptButton_12iml_321",ft="_decideButton_12iml_338",Rt="_selectionScreen_12iml_356",vt="_selectionTitle_12iml_363",t={container:L,introScreen:$,introTitle:z,introSubtitle:E,carouselDots:Q,carouselDot:W,active:F,continueButton:K,quizScreen:P,intro:U,progress:V,progressDot:G,completed:H,questionContainer:J,questionText:X,questionContext:Z,options:tt,option:et,selected:st,diagnosticComplete:ot,summaryBox:it,summaryLabel:nt,summaryText:rt,roleCards:ct,roleCard:at,recommended:ut,roleTitle:lt,roleDescription:mt,roleStrengths:dt,strengthTag:ht,selectable:yt,resultScreen:pt,assignedLabel:_t,resultCard:xt,resultButtons:bt,acceptButton:gt,decideButton:ft,selectionScreen:Rt,selectionTitle:vt},St="Your glitch-modalities will now be tested.",Nt=[{id:"q1",question:'Mom says: "Ask Dad." Dad says: "Ask Mom."',context:"What do you do?",options:[{id:"a",text:"I technically asked both. That's permission.",scores:{authorityAutonomy:2,structureOutcome:1,stabilityReconstruction:0}},{id:"b",text:"I don't have permission. Stop.",scores:{authorityAutonomy:-2,structureOutcome:-1,stabilityReconstruction:-1}},{id:"c",text:"Tell Dad: Mom said you decide.",scores:{authorityAutonomy:1,structureOutcome:0,stabilityReconstruction:1}},{id:"d",text:"Tell Mom: Dad said you decide.",scores:{authorityAutonomy:1,structureOutcome:0,stabilityReconstruction:1}}]},{id:"q2",question:"A system works flawlessly. You discover it rests on a shaky assumption.",context:"Do you:",options:[{id:"a",text:"Ignore it. It works.",scores:{authorityAutonomy:-1,structureOutcome:2,stabilityReconstruction:-2}},{id:"b",text:"Patch the assumption quietly.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:0}},{id:"c",text:"Expose the assumption publicly.",scores:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:1}},{id:"d",text:"Rebuild the system to remove it.",scores:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:2}}]},{id:"q3",question:"You find a paradox in your own model.",context:"Your reaction:",options:[{id:"a",text:"I must be wrong.",scores:{authorityAutonomy:-1,structureOutcome:0,stabilityReconstruction:-1}},{id:"b",text:"The paradox is wrong.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:-1}},{id:"c",text:"The definitions are wrong.",scores:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:1}},{id:"d",text:"This is interesting. Push deeper.",scores:{authorityAutonomy:2,structureOutcome:0,stabilityReconstruction:2}}]},{id:"q4",question:"You prove something elegant. Reality disagrees.",context:"You:",options:[{id:"a",text:"Recheck the math.",scores:{authorityAutonomy:-1,structureOutcome:-1,stabilityReconstruction:0}},{id:"b",text:"Recheck the experiment.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:0}},{id:"c",text:"Recheck the assumptions.",scores:{authorityAutonomy:1,structureOutcome:0,stabilityReconstruction:1}},{id:"d",text:"Accept chaos.",scores:{authorityAutonomy:2,structureOutcome:1,stabilityReconstruction:2}}]},{id:"q5",question:"What annoys you more?",options:[{id:"a",text:"Vague thinking.",scores:{authorityAutonomy:0,structureOutcome:-2,stabilityReconstruction:0}},{id:"b",text:"Sloppy math.",scores:{authorityAutonomy:-1,structureOutcome:-2,stabilityReconstruction:-1}},{id:"c",text:"Blind obedience.",scores:{authorityAutonomy:2,structureOutcome:0,stabilityReconstruction:1}},{id:"d",text:"Overconfidence.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:0}}]}],jt=[{id:"philosopher-builder",name:"philosopher-builder",title:"Philosopher-Builder",description:"You approach systems from first principles. You like pulling assumptions apart and rebuilding from scratch. Formal training may vary — curiosity does not.",strengths:["Identifying hidden assumptions","Navigating paradox","Reconstructing from new foundations"],risk:"Building a house of cards. Impressive but useless.",mission:"Clarify structure before defending it.",axisProfile:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:2},summaries:[`You break loops instead of waiting inside them. +You are comfortable redirecting authority.`,`You question foundations before building on them. +Assumptions are targets, not givens.`,`You prefer rebuilding to patching. +Clarity matters more than comfort.`]},{id:"cross-domain-nerd",name:"cross-domain-nerd",title:"Cross-Domain Nerd",description:"You are fluent somewhere else. Math, biology, finance, code, art — you've built things in another domain. You suspect physics might benefit from outside pattern recognition.",strengths:["Translating ideas across domains","Spotting structural analogies","Bringing alien intuition"],risk:"Overextending metaphors. Using your favourite tool. Always.",mission:"Stress-test physics with alien intuition.",axisProfile:{authorityAutonomy:1,structureOutcome:1,stabilityReconstruction:1},summaries:[`You see patterns that others miss. +Your intuition comes from somewhere else.`,`You translate fluently between worlds. +Analogies are your native tongue.`,`You import tools from foreign domains. +Fresh perspective is your advantage.`]},{id:"formal-student",name:"formal-student",title:"Formal Student",description:"You are inside the machinery of formal education. You work with equations daily. You care about precision.",strengths:["Technical rigor","Mathematical discipline","Knowing what is good enough"],risk:"Over-trusting established formalism. Thinking you own the place.",mission:"Master the tools. Then question them.",axisProfile:{authorityAutonomy:-1,structureOutcome:-1,stabilityReconstruction:-1},summaries:[`You trust the process but verify the details. +Rigor is your foundation.`,`You work within structure to understand it. +Precision is non-negotiable.`,`You respect the machinery of knowledge. +Mastery precedes revolution.`]}],f={intro:St,questions:Nt,roles:jt};function Ct({onComplete:_,onProgress:u,className:j}){const[y,g]=n.useState("intro"),[A,C]=n.useState(0),[m,T]=n.useState(0),[d,q]=n.useState({}),[r,w]=n.useState(null),R=n.useRef(null),O=n.useRef(null),h=f.questions,l=f.roles,v=n.useCallback(s=>{const o={authorityAutonomy:0,structureOutcome:0,stabilityReconstruction:0};return h.forEach(i=>{const c=s[i.id],a=i.options.find(b=>b.id===c);a&&(o.authorityAutonomy+=a.scores.authorityAutonomy,o.structureOutcome+=a.scores.structureOutcome,o.stabilityReconstruction+=a.scores.stabilityReconstruction)}),o},[h]),S=n.useCallback(s=>{let o=l[0],i=1/0;return l.forEach(c=>{const a=Math.sqrt(Math.pow(s.authorityAutonomy-c.axisProfile.authorityAutonomy,2)+Math.pow(s.structureOutcome-c.axisProfile.structureOutcome,2)+Math.pow(s.stabilityReconstruction-c.axisProfile.stabilityReconstruction,2));a{const i=Math.max(Math.abs(o.authorityAutonomy),Math.abs(o.structureOutcome),Math.abs(o.stabilityReconstruction));let c=0;return Math.abs(o.structureOutcome)===i&&(c=1),Math.abs(o.stabilityReconstruction)===i&&(c=2),s.summaries[c]||s.summaries[0]},[]),k=n.useCallback((s,o)=>{const i={...d,[s]:o};q(i);const c=(m+1)/h.length*50;u?.(c),setTimeout(()=>{if(m{if(!r)return;const s=l.find(o=>o.id===r.recommendedRole);s&&(u?.(100),_({success:!0,score:100,data:{selectedRole:s.id,recommendedRole:r.recommendedRole,scores:r.scores,answers:d,completedAt:new Date().toISOString()}}))},[r,l,d,_,u]),B=n.useCallback(()=>{g("selection"),u?.(80)},[u]),Y=n.useCallback(s=>{r&&(u?.(100),_({success:!0,score:100,data:{selectedRole:s.id,recommendedRole:r.recommendedRole,scores:r.scores,answers:d,completedAt:new Date().toISOString()}}))},[r,d,_,u]),M=n.useCallback(()=>{g("quiz"),u?.(10)},[u]);n.useEffect(()=>{const s=R.current;if(!s||y!=="intro")return;const o=()=>{const i=s.scrollLeft,a=Math.round(i/296);C(Math.min(Math.max(a,0),l.length-1))};return s.addEventListener("scroll",o),()=>s.removeEventListener("scroll",o)},[y,l.length]);const p=h[m],x=r?l.find(s=>s.id===r.recommendedRole):null;return e.jsxs("div",{className:`${t.container} ${j||""}`,children:[y==="intro"&&e.jsxs("div",{className:t.introScreen,children:[e.jsx("h2",{className:t.introTitle,children:"Meet the Operator Modes"}),e.jsx("p",{className:t.introSubtitle,children:"Swipe to explore the three paths"}),e.jsx("div",{className:t.roleCards,ref:R,children:l.map(s=>e.jsxs("div",{className:t.roleCard,children:[e.jsx("h3",{className:t.roleTitle,children:s.title}),e.jsx("p",{className:t.roleDescription,children:s.description}),e.jsx("div",{className:t.roleStrengths,children:s.strengths.map((o,i)=>e.jsxs("span",{className:t.strengthTag,children:["+ ",o]},i))})]},s.id))}),e.jsx("div",{className:t.carouselDots,children:l.map((s,o)=>e.jsx("div",{className:`${t.carouselDot} ${o===A?t.active:""}`},o))}),e.jsx("button",{className:t.continueButton,onClick:M,children:"Begin Diagnostic"})]}),y==="quiz"&&e.jsxs("div",{className:t.quizScreen,children:[m===0&&e.jsx("h2",{className:t.intro,children:f.intro}),e.jsx("div",{className:t.progress,children:h.map((s,o)=>e.jsx("div",{className:`${t.progressDot} ${o===m?t.active:""} ${oe.jsx("button",{className:`${t.option} ${d[p.id]===s.id?t.selected:""}`,onClick:()=>k(p.id,s.id),children:s.text},s.id))})]})]}),y==="result"&&r&&x&&e.jsxs("div",{className:t.resultScreen,children:[e.jsx("p",{className:t.diagnosticComplete,children:"Diagnostic complete."}),e.jsxs("div",{className:t.summaryBox,children:[e.jsx("p",{className:t.summaryLabel,children:"Your reflex under uncertainty:"}),e.jsx("p",{className:t.summaryText,children:r.summary})]}),e.jsx("p",{className:t.assignedLabel,children:"Your assigned operator mode:"}),e.jsxs("div",{className:t.resultCard,children:[e.jsx("h3",{className:t.roleTitle,children:x.title}),e.jsx("p",{className:t.roleDescription,children:x.description}),e.jsx("div",{className:t.roleStrengths,children:x.strengths.map((s,o)=>e.jsxs("span",{className:t.strengthTag,children:["+ ",s]},o))})]}),e.jsxs("div",{className:t.resultButtons,children:[e.jsx("button",{className:t.acceptButton,onClick:D,children:"Accept"}),e.jsx("button",{className:t.decideButton,onClick:B,children:"I want to decide"})]})]}),y==="selection"&&r&&e.jsxs("div",{className:t.selectionScreen,children:[e.jsx("p",{className:t.selectionTitle,children:"Choose your operator mode"}),e.jsx("div",{className:t.roleCards,ref:O,children:l.map(s=>e.jsxs("div",{className:`${t.roleCard} ${t.selectable} ${s.id===r.recommendedRole?t.recommended:""}`,onClick:()=>Y(s),children:[e.jsx("h3",{className:t.roleTitle,children:s.title}),e.jsx("p",{className:t.roleDescription,children:s.description}),e.jsx("div",{className:t.roleStrengths,children:s.strengths.map((o,i)=>e.jsxs("span",{className:t.strengthTag,children:["+ ",o]},i))})]},s.id))})]})]})}const Tt={name:"level-questions",displayName:"Level Questions",version:"1.0.0",paramSchema:{},defaultParams:{}};export{Ct as default,Tt as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-CwQ-ysLn.js b/dist/vendor/glitch/glitch_gallery/assets/index-CwQ-ysLn.js new file mode 100644 index 0000000..5eeef3a --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-CwQ-ysLn.js @@ -0,0 +1 @@ +import{r as n,j as t}from"./index-CEeZxcxj.js";const ke="_wrapper_h2w9g_1",je="_frame_h2w9g_12",Pe="_frameSucceeded_h2w9g_25",ve="_header_h2w9g_33",$e="_title_h2w9g_37",Te="_statsLine_h2w9g_50",Oe="_boardPanel_h2w9g_58",Ee="_board_h2w9g_58",Re="_trailOverlay_h2w9g_76",Ae="_trailPath_h2w9g_85",Le="_trailHead_h2w9g_94",Me="_cell_h2w9g_99",Ie="_lightCell_h2w9g_105",De="_darkCell_h2w9g_109",He="_knight_h2w9g_113",Ge="_target_h2w9g_130",Be="_readout_h2w9g_138",Ue="_readoutLine_h2w9g_145",Fe="_programPanel_h2w9g_154",Ye="_programTrack_h2w9g_160",Ve="_placeholder_h2w9g_171",Xe="_step_h2w9g_176",Ke="_stepExecuted_h2w9g_187",Ze="_programButtons_h2w9g_192",ze="_controlRow_h2w9g_193",We="_button_h2w9g_199",qe="_buttonPrimary_h2w9g_200",Je="_legend_h2w9g_233",Qe="_promptOverlay_h2w9g_239",et="_promptTitle_h2w9g_250",tt="_promptText_h2w9g_258",rt="_promptOptions_h2w9g_264",st="_promptOption_h2w9g_264",nt="_promptSelected_h2w9g_282",at="_promptHint_h2w9g_287",e={wrapper:ke,frame:je,frameSucceeded:Pe,header:ve,title:$e,statsLine:Te,boardPanel:Oe,board:Ee,trailOverlay:Re,trailPath:Ae,trailHead:Le,cell:Me,lightCell:Ie,darkCell:De,knight:He,target:Ge,readout:Be,readoutLine:Ue,programPanel:Fe,programTrack:Ye,placeholder:Ve,step:Xe,stepExecuted:Ke,programButtons:Ze,controlRow:ze,button:We,buttonPrimary:qe,legend:Je,promptOverlay:Qe,promptTitle:et,promptText:tt,promptOptions:rt,promptOption:st,promptSelected:nt,promptHint:at},b=8,h={x:0,y:b-1},ot=220,ct=64,lt=3,I=100,it=5,dt={up:{dx:0,dy:-1},down:{dx:0,dy:1},left:{dx:-1,dy:0},right:{dx:1,dy:0}},pt={up:"↑",down:"↓",left:"←",right:"→"},de=[{dx:0,dy:1},{dx:1,dy:1},{dx:1,dy:2},{dx:1,dy:3},{dx:2,dy:3},{dx:1,dy:5},{dx:1,dy:6}],X=(s,o,u)=>Math.min(u,Math.max(o,s)),pe=s=>s.x>=0&&s.x=0&&s.ys.x===o.x&&s.y===o.y,se=(s,o)=>o===0?s:se(o,s%o),mt=(s,o)=>{const u=Math.abs(o.x-s.x),d=Math.abs(o.y-s.y);if(u===0&&d===0)return 0;if(u===0||d===0)return u+d;const g=se(u,d);return u/g+d/g},ht=s=>new Promise(o=>{window.setTimeout(o,s)}),ie=s=>s==="Enter"||s==="NumpadEnter"||s===" "||s==="Space"||s==="Spacebar",gt=s=>`${(s.x+.5)*I},${(s.y+.5)*I}`,K=s=>X(s,0,de.length-1),ue=s=>de[K(s)],te=s=>{const o=ue(s);return o.dx+o.dy},re=s=>{const o=ue(s),u=[];for(let g=1;git&&u.push(p)}if(u.length===0)return{x:h.x+o.dx,y:h.y-o.dy};const d=Math.floor(Math.random()*u.length);return u[d]};function _t({config:s,onComplete:o,onProgress:u,theme:d,className:g}){const p=n.useMemo(()=>{const a=s.params.goalCaptures;return typeof a!="number"?lt:X(Math.round(a),1,10)},[s.params.goalCaptures]),[N,ne]=n.useState(0),[w,Z]=n.useState(h),[k,ae]=n.useState(()=>re(0)),[x,z]=n.useState([]),[D,H]=n.useState([h]),[_,j]=n.useState("idle"),[me,v]=n.useState(-1),[y,oe]=n.useState(0),[ce,O]=n.useState(""),[E,G]=n.useState("yes"),[R,B]=n.useState("continue"),[f,he]=n.useState(!1),C=n.useRef(0),U=n.useRef(!1),i=_==="running",m=_==="gameOverPrompt"||_==="successPrompt"||_==="finished",W=te(N),ge=n.useMemo(()=>d?{"--gc-primary":d.primary,"--gc-accent":d.accent,"--gc-bg":d.bg,"--gc-bg-secondary":d.bgSecondary,"--gc-text":d.text,"--gc-text-muted":d.textMuted,"--gc-border":d.border}:{},[d]);n.useEffect(()=>{const a=y/p;u?.(Math.round(X(a*100,0,100)))},[y,p,u]);const F=n.useCallback((a,r,c="")=>{C.current+=1,j("idle"),ne(K(a)),Z(h),ae(re(a)),H([h]),v(-1),oe(r),G("yes"),B("continue"),O(c)},[]),q=n.useCallback(()=>{F(N,0,`Looking for a ${W}-step move set.`)},[N,W,F]),Y=n.useCallback((a=0)=>{const r=K(N+1),c=te(r);F(r,a,`Looking for a ${c}-step move set.`)},[N,F]),J=n.useCallback(()=>{U.current||(U.current=!0,C.current+=1,j("finished"),o({success:!1,error:"Player chose no after game over.",data:{captures:y,goalCaptures:p,configId:s.id,completedAt:new Date().toISOString(),hasEverSucceeded:f}}))},[y,s.id,p,f,o]),L=n.useCallback(()=>{U.current||(U.current=!0,C.current+=1,j("finished"),o({success:!0,score:100,data:{captures:y,goalCaptures:p,configId:s.id,completedAt:new Date().toISOString(),hasEverSucceeded:f}}))},[y,s.id,p,f,o]),A=n.useCallback(a=>{z(r=>i||m||r.length>=ct?r:[...r,a])},[m,i]),xe=n.useCallback(()=>{i||m||z(a=>a.slice(0,-1))},[m,i]),_e=n.useCallback(()=>{i||m||z([])},[m,i]),ye=n.useCallback(()=>{C.current+=1,j("idle"),v(-1),O("Program stopped.")},[]),fe=n.useCallback(async()=>{if(i||m||x.length===0)return;const a=C.current+1;C.current=a;let r=w,c=k,l=y,P=0;for(j("running"),v(-1),H([w]),O("");C.current===a;)for(let S=0;S[...T,$]),v(S),ut($,c)){if(l+=1,oe(l),he(!0),l>=p){j("successPrompt"),B("continue"),v(-1),O(`Success. ${l} challenge(s) complete.`);return}const T=K(N+1),ee=re(T),Ne=te(T);r=h,c=ee,j("idle"),ne(T),Z(h),ae(ee),H([h]),v(-1),O(`Challenge ${l}/${p} complete. Looking for a ${Ne}-step move set.`);return}}},[y,N,p,m,w,x,i,k]);n.useEffect(()=>{const a=r=>{const c={ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right"};if(_==="gameOverPrompt"){if(r.key==="ArrowLeft"||r.key==="ArrowUp"){r.preventDefault(),G("yes");return}if(r.key==="ArrowRight"||r.key==="ArrowDown"){r.preventDefault(),G("no");return}ie(r.key)&&(r.preventDefault(),E==="yes"?q():f?L():J());return}if(_==="successPrompt"){if(r.key==="ArrowLeft"||r.key==="ArrowUp"){r.preventDefault(),B("continue");return}if(r.key==="ArrowRight"||r.key==="ArrowDown"){r.preventDefault(),B("done");return}ie(r.key)&&(r.preventDefault(),R==="continue"?Y():L());return}if(_!=="idle")return;const l=c[r.key];l&&(r.preventDefault(),A(l))};return window.addEventListener("keydown",a),()=>{window.removeEventListener("keydown",a)}},[A,J,L,E,f,_,q,Y,R]),n.useEffect(()=>()=>{C.current+=1},[]);const be=n.useMemo(()=>{const a=k.x-w.x,r=w.y-k.y,c=Math.abs(a),l=Math.abs(r),P=mt(w,k);if(c===0&&l===0)return{angle:0,motifLength:P,motif:"On target"};if(c===0||l===0)return{angle:c===0?90:0,motifLength:P,motif:c===0?`${r>=0?"U":"D"} x ${l}`:`${a>=0?"R":"L"} x ${c}`};const S=se(c,l),M=c/S,V=l/S,$=`${a>=0?"R":"L"} x ${M}`,T=`${r>=0?"U":"D"} x ${V}`;return{angle:Math.atan2(l,c)*(180/Math.PI),motifLength:P,motif:`${$}, ${T}`}},[w,k]),we=Math.round(X(y/p*100,0,100)),Ce=g?`${e.wrapper} ${g}`:e.wrapper,le=b*I,Se=D.map(gt).join(" "),Q=D[D.length-1];return t.jsx("div",{className:Ce,style:ge,children:t.jsxs("section",{className:`${e.frame} ${f?e.frameSucceeded:""}`,"aria-label":"Chess move set trainer",children:[t.jsxs("header",{className:e.header,children:[t.jsx("h2",{className:e.title,children:"The Chess Analogy"}),t.jsxs("p",{className:e.statsLine,children:["Captures ",y,"/",p," • Progress ",we,"% • Program ",x.length," • Target ",W]})]}),t.jsx("div",{className:e.boardPanel,children:t.jsxs("div",{className:e.board,role:"grid","aria-label":"8 by 8 checkerboard",children:[t.jsxs("svg",{className:e.trailOverlay,viewBox:`0 0 ${le} ${le}`,preserveAspectRatio:"none","aria-hidden":"true",children:[D.length>1&&t.jsx("polyline",{className:e.trailPath,points:Se}),Q&&t.jsx("circle",{className:e.trailHead,cx:(Q.x+.5)*I,cy:(Q.y+.5)*I,r:6})]}),Array.from({length:b*b}).map((a,r)=>{const c=r%b,l=Math.floor(r/b),P=(c+l)%2===1,S=w.x===c&&w.y===l,M=k.x===c&&k.y===l;return t.jsxs("div",{className:`${e.cell} ${P?e.darkCell:e.lightCell}`,role:"gridcell","aria-label":`x ${c+1}, y ${b-l}`,children:[M&&t.jsx("span",{className:e.target,"aria-hidden":"true",children:"●"}),S&&t.jsx("span",{className:e.knight,"aria-hidden":"true",children:"♞"})]},`${c}-${l}`)})]})}),t.jsxs("div",{className:e.readout,children:[t.jsxs("p",{className:e.readoutLine,children:["Angle: ",t.jsxs("strong",{children:[be.angle.toFixed(1),"°"]})]}),!1]}),t.jsxs("div",{className:e.programPanel,children:[t.jsxs("div",{className:e.programTrack,"aria-live":"polite",children:[x.length===0&&t.jsx("span",{className:e.placeholder,children:"Empty move set"}),x.map((a,r)=>t.jsx("span",{className:`${e.step} ${i&&r===me?e.stepExecuted:""}`,children:pt[a]},`${a}-${r}`))]}),t.jsxs("div",{className:e.programButtons,children:[t.jsx("button",{type:"button",className:e.button,onClick:()=>A("up"),disabled:i||m,children:"↑"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>A("left"),disabled:i||m,children:"←"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>A("down"),disabled:i||m,children:"↓"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>A("right"),disabled:i||m,children:"→"})]}),t.jsxs("div",{className:e.controlRow,children:[t.jsx("button",{type:"button",className:e.button,onClick:xe,disabled:i||m||x.length===0,children:"Undo"}),t.jsx("button",{type:"button",className:e.button,onClick:_e,disabled:i||m||x.length===0,children:"Clear"}),t.jsx("button",{type:"button",className:e.buttonPrimary,onClick:i?ye:fe,disabled:m||x.length===0,children:i?"Stop":"Run"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>Y(),disabled:i,children:"Reset"})]}),ce&&t.jsx("p",{className:e.legend,children:ce})]}),_==="gameOverPrompt"&&t.jsxs("div",{className:e.promptOverlay,role:"dialog","aria-modal":"true","aria-label":"Game over prompt",children:[t.jsx("p",{className:e.promptTitle,children:"Game over"}),t.jsx("p",{className:e.promptText,children:f?"Try again or stop?":"Try again?"}),t.jsxs("div",{className:e.promptOptions,children:[t.jsxs("button",{type:"button",className:`${e.promptOption} ${E==="yes"?e.promptSelected:""}`,onClick:q,children:[E==="yes"?"▶ ":"","Yes"]}),t.jsxs("button",{type:"button",className:`${e.promptOption} ${E==="no"?e.promptSelected:""}`,onClick:f?L:J,children:[E==="no"?"▶ ":"",f?"I'm done":"No"]})]}),t.jsx("p",{className:e.promptHint,children:"Use arrows + Enter."})]}),_==="successPrompt"&&t.jsxs("div",{className:e.promptOverlay,role:"dialog","aria-modal":"true","aria-label":"Success prompt",children:[t.jsx("p",{className:e.promptTitle,children:"Success"}),t.jsx("p",{className:e.promptText,children:"Continue?"}),t.jsxs("div",{className:e.promptOptions,children:[t.jsxs("button",{type:"button",className:`${e.promptOption} ${R==="continue"?e.promptSelected:""}`,onClick:()=>Y(),children:[R==="continue"?"▶ ":"","Yes"]}),t.jsxs("button",{type:"button",className:`${e.promptOption} ${R==="done"?e.promptSelected:""}`,onClick:L,children:[R==="done"?"▶ ":"","I'm done"]})]}),t.jsx("p",{className:e.promptHint,children:"Use arrows + Enter."})]})]})})}const yt={name:"chess_analogy",displayName:"Chess Move Set Lab",version:"1.0.0",paramSchema:{goalCaptures:{type:"range",label:"Targets To Capture",description:"How many red targets must be captured before completion.",default:3,min:1,max:10,step:1}},defaultParams:{goalCaptures:3}};export{_t as default,yt as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-D0SeHWP2.css b/dist/vendor/glitch/glitch_gallery/assets/index-D0SeHWP2.css new file mode 100644 index 0000000..4264792 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-D0SeHWP2.css @@ -0,0 +1 @@ +._wrapper_61dhl_1{--gc-bg: var(--color-bg, #0a0a0f);--gc-bg-secondary: var(--color-bg-secondary, #12121a);--gc-text: var(--color-text, #e8e8ec);--gc-text-muted: var(--color-text-muted, #9999a8);--gc-primary: var(--color-primary, #6366f1);--gc-accent: var(--color-accent, #22d3ee);--gc-border: var(--color-border, #2a2a3a);--gc-font-main: var(--font-main, "Iceland", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-display: var(--font-display, "Russo One", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-text: "VT323", var(--font-mono, monospace);width:100%}._frame_61dhl_15{position:relative;width:100%;height:100dvh;min-height:100vh;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border) 60%,transparent);color:var(--gc-text);font-family:var(--gc-font-text);background:radial-gradient(circle at 18% 14%,color-mix(in srgb,var(--gc-accent) 18%,transparent),transparent 35%),radial-gradient(circle at 88% 2%,color-mix(in srgb,var(--gc-primary) 22%,transparent),transparent 30%),linear-gradient(165deg,var(--gc-bg),var(--gc-bg-secondary))}._scan_61dhl_30{position:absolute;inset:0;pointer-events:none;opacity:.18;mix-blend-mode:screen;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.1) 0,rgba(255,255,255,.1) 1px,transparent 1px,transparent 3px);animation:_scanDrift_61dhl_1 8s linear infinite}._stack_61dhl_47{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:22px 16px 18px}._meta_61dhl_57{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gc-text-muted);font-family:var(--gc-font-main)}._progressTrack_61dhl_68{margin-top:8px;width:100%;height:3px;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--gc-accent) 20%,transparent)}._progressFill_61dhl_77{height:100%;transition:width .24s ease;background:linear-gradient(90deg,var(--gc-accent),color-mix(in srgb,var(--gc-primary) 45%,var(--gc-accent)))}._slide_61dhl_87{flex:1;display:flex;flex-direction:column;justify-content:center;gap:20px}._title_61dhl_95{margin:0;width:fit-content;font-family:var(--gc-font-display);text-transform:uppercase;letter-spacing:.02em;line-height:1.04;font-size:clamp(28px,8.5vw,46px)}._rgbGlitch_61dhl_105{position:relative;display:inline-block}._rgbBase_61dhl_110{position:relative;z-index:1;color:color-mix(in srgb,var(--gc-text) 38%,#000)}._rgbLayer_61dhl_116{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.2}._layerR_61dhl_124{color:#ff3737bf;animation:_layerRShift_61dhl_1 2.4s infinite steps(2,end)}._layerG_61dhl_129{color:#37ff5fbf;animation:_layerGShift_61dhl_1 2.1s infinite steps(2,end)}._layerB_61dhl_134{color:#4182ffbf;animation:_layerBShift_61dhl_1 2.7s infinite steps(2,end)}._content_61dhl_139{display:flex;flex-direction:column;gap:10px;font-family:var(--gc-font-text);font-size:clamp(16px,4.2vw,22px);line-height:1.45}._line_61dhl_148{margin:0;color:var(--gc-text)}._spacer_61dhl_153{margin:0;min-height:.6em}._list_61dhl_158{margin:3px 0 0;padding-left:1.1em;display:flex;flex-direction:column;gap:7px}._warning_61dhl_166{list-style:none;padding-left:0}._warning_61dhl_166 li:before{content:"- ";color:var(--gc-accent)}._cta_61dhl_176{margin-top:10px;width:fit-content;border:1px solid var(--gc-accent);background:color-mix(in srgb,var(--gc-accent) 8%,transparent);color:var(--gc-accent);font:inherit;letter-spacing:.06em;text-transform:uppercase;padding:10px 14px;cursor:pointer;font-family:var(--gc-font-main);transition:transform .14s ease,background-color .14s ease}._cta_61dhl_176:active{transform:scale(.98)}._controls_61dhl_195{display:grid;grid-template-columns:1fr 1fr;gap:8px}._navButton_61dhl_201{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:color-mix(in srgb,var(--gc-bg-secondary) 75%,transparent);color:var(--gc-text);font:inherit;text-transform:uppercase;letter-spacing:.08em;padding:10px 12px;cursor:pointer;font-family:var(--gc-font-main)}._navButton_61dhl_201:disabled{opacity:.45;cursor:not-allowed}@keyframes _layerRShift_61dhl_1{0%,81%,to{transform:translate(0)}84%{transform:translate(-4px,2px)}88%{transform:translate(4px,-2px)}92%{transform:translate(2px)}96%{transform:translate(-2px,2px)}}@keyframes _layerGShift_61dhl_1{0%,79%,to{transform:translate(0)}83%{transform:translate(2px,-2px)}87%{transform:translate(-2px,4px)}91%{transform:translateY(-2px)}95%{transform:translate(2px)}}@keyframes _layerBShift_61dhl_1{0%,82%,to{transform:translate(0)}86%{transform:translate(4px)}90%{transform:translate(-4px,-2px)}94%{transform:translate(2px,2px)}98%{transform:translate(-2px)}}@keyframes _scanDrift_61dhl_1{0%{transform:translateY(-10px)}to{transform:translateY(10px)}}@media(min-width:600px){._frame_61dhl_15{max-width:420px;margin:0 auto}} diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-DOIp2aoq.css b/dist/vendor/glitch/glitch_gallery/assets/index-DOIp2aoq.css new file mode 100644 index 0000000..7476ca3 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-DOIp2aoq.css @@ -0,0 +1 @@ +.gc-assumption-toggle{--shell-bg: radial-gradient(circle at top, rgba(40, 58, 34, .35), transparent 42%), linear-gradient(180deg, #070a08, #0f160f 58%, #090b09);--screen-bg: #616161;--screen-error: #7f1d1d;--screen-glow: rgba(0, 0, 0, .5);--text-primary: var(--gc-text, #0f172a);--text-secondary: var(--gc-text-muted, #6bff5b);--accent-color: var(--gc-accent, #1c6a00);--panel-green: var(--gc-primary, #248a00);--panel-white: rgba(255, 255, 255, .92);--font-display: "Russo One", sans-serif;--font-ui: "VT323", sans-serif;color:var(--text-primary);width:100%}.gc-assumption-toggle *,.gc-assumption-toggle *:before,.gc-assumption-toggle *:after{box-sizing:border-box}.gc-assumption-toggle .component-shell{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px 0;background:var(--shell-bg)}.gc-assumption-toggle .main-wrapper{width:min(100%,1000px);aspect-ratio:1000 / 678;background-image:var(--assumption-frame-image);background-position:center;background-repeat:no-repeat;background-size:100% 100%;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .crt-screen{position:relative;width:51.8%;height:66.3%;transform:translateY(.6%);background:var(--screen-bg);border-radius:7.5%;display:flex;justify-content:center;align-items:center;overflow:hidden;box-shadow:inset 0 0 40px var(--screen-glow);transition:background-color .4s ease}.gc-assumption-toggle .crt-screen.paradox-errors{background:var(--screen-error)}.gc-assumption-toggle .crt-screen:after{content:"";position:absolute;inset:0;background:linear-gradient(#12101000 50%,#0000003d 50%),linear-gradient(90deg,#ff00000d,#00ff0005,#0000ff0d);background-size:100% 2px,3px 100%;pointer-events:none;z-index:20}.gc-assumption-toggle .slides-wrapper{width:100%;height:100%;display:flex;justify-content:center;align-items:center;transform-origin:center}.gc-assumption-toggle .slide{width:100%;height:100%;padding:20px;display:flex;flex-direction:column;justify-content:center;align-items:center}.gc-assumption-toggle .slide-splash{text-align:center}.gc-assumption-toggle .splash-content h1{margin:0 0 18px;font-size:clamp(1.4rem,2.7vw,2.2rem);line-height:1.3;color:var(--text-primary);font-family:var(--font-display);font-weight:400;text-transform:uppercase;text-shadow:0 0 4px rgba(0,0,0,.35)}.gc-assumption-toggle .splash-content h2{margin:0 0 42px;color:var(--text-secondary);font-size:clamp(1rem,1.5vw,1.2rem);font-weight:400;letter-spacing:.08em;font-family:var(--font-ui)}.gc-assumption-toggle .widget-header h1{margin:0 0 18px;color:var(--text-secondary);font-size:clamp(1.4rem,2.5vw,1.8rem);font-weight:400;letter-spacing:.05em;text-transform:uppercase;font-family:var(--font-display);text-shadow:0 0 5px rgba(255,255,255,.35)}.gc-assumption-toggle .switch-group{width:100%;display:flex;flex-direction:column;gap:18px;padding:0 24px}.gc-assumption-toggle .switch-item{width:100%}.gc-assumption-toggle .switch-input{position:absolute;opacity:0;pointer-events:none}.gc-assumption-toggle .toggle-track{position:relative;width:100%;min-height:58px;padding:4px;display:flex;align-items:stretch;justify-content:space-between;gap:8px;border-radius:28px;cursor:pointer;overflow:hidden;border:1px solid rgba(255,255,255,.08);background:#0006}.gc-assumption-toggle .toggle-track:before{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:calc(50% - 4px);border-radius:24px;background:var(--panel-green);transition:transform .35s cubic-bezier(.16,1,.3,1)}.gc-assumption-toggle .switch-input:checked+.toggle-track:before{transform:translate(100%)}.gc-assumption-toggle .option-left,.gc-assumption-toggle .option-right{position:relative;z-index:1;flex:1;display:flex;align-items:center;justify-content:center;text-align:center;padding:10px 8px;color:#ffffff9e;font-size:clamp(.78rem,2vw,1.4rem);font-weight:500;letter-spacing:.04em;line-height:1.15;font-family:var(--font-ui);transition:color .25s ease,font-weight .25s ease}.gc-assumption-toggle .switch-input:not(:checked)+.toggle-track .option-left,.gc-assumption-toggle .switch-input:checked+.toggle-track .option-right{color:#fff;font-weight:700}.gc-assumption-toggle .action-button{margin-top:24px;border:none;border-radius:8px;padding:12px 32px;background:var(--accent-color);color:#fff;cursor:pointer;text-transform:uppercase;font-family:var(--font-display);font-size:clamp(1rem,2vw,1.35rem);font-weight:400;letter-spacing:.06em;box-shadow:0 4px #00000047;transition:transform .12s ease,box-shadow .12s ease,opacity .2s ease}.gc-assumption-toggle .action-button:hover{opacity:.92}.gc-assumption-toggle .action-button:active{transform:translateY(3px);box-shadow:none}.gc-assumption-toggle .action-button.secondary{font-size:1rem;padding:7px 88px;color:var(--text-secondary);background:transparent;border:2px solid var(--text-secondary);box-shadow:none}.gc-assumption-toggle .bottom-container{width:100%;height:100%;display:flex;flex-direction:column;gap:16px}.gc-assumption-toggle .slide-processing{justify-content:flex-start;padding:26px 20px 20px}.gc-assumption-toggle .processing-shell{width:100%;height:100%;display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:18px;background:linear-gradient(180deg,#041207f5,#07180ceb),radial-gradient(circle at top,rgba(87,255,143,.14),transparent 40%);border:1px solid rgba(120,255,154,.22);box-shadow:inset 0 0 28px #00000047}.gc-assumption-toggle .processing-header{display:flex;align-items:center;gap:10px}.gc-assumption-toggle .processing-led{width:10px;height:10px;border-radius:999px;background:#5cff8b;box-shadow:0 0 10px #5cff8be6;animation:assumption-led-pulse 1.2s ease-in-out infinite}.gc-assumption-toggle .processing-header h2{margin:0;color:#dfffe7;font-family:var(--font-display);font-size:clamp(1.05rem,2vw,1.3rem);font-weight:400;letter-spacing:.06em;text-transform:uppercase}.gc-assumption-toggle .processing-subtitle{color:#b6ffc6b8;font-family:var(--font-ui);font-size:clamp(.88rem,1.6vw,1rem);letter-spacing:.05em;text-transform:uppercase}.gc-assumption-toggle .processing-terminal{flex:1;min-height:0;padding:14px 16px;border-radius:14px;background:linear-gradient(180deg,#030904f0,#071008f5),repeating-linear-gradient(180deg,rgba(255,255,255,.02) 0,rgba(255,255,255,.02) 1px,transparent 1px,transparent 18px);border:1px solid rgba(120,255,154,.12);overflow:hidden}.gc-assumption-toggle .processing-line{display:flex;align-items:baseline;gap:8px;min-height:1.45em;color:#b7ffca;font-family:var(--font-ui);font-size:clamp(1rem,1.8vw,1.18rem);letter-spacing:.04em;line-height:1.35;word-break:break-word}.gc-assumption-toggle .processing-line+.processing-line{margin-top:4px}.gc-assumption-toggle .processing-line-active{color:#edfff2}.gc-assumption-toggle .processing-prompt{flex:0 0 auto;color:#5cff8b;font-family:var(--font-display)}.gc-assumption-toggle .processing-cursor{display:inline-block;width:9px;height:1.05em;margin-left:2px;vertical-align:text-bottom;background:#74ff97;box-shadow:0 0 8px #74ff97a6;animation:assumption-cursor-blink .9s steps(1) infinite}.gc-assumption-toggle .visualization-container,.gc-assumption-toggle .result-container{width:100%;border-radius:16px}.gc-assumption-toggle .visualization-container{flex:1.5;min-height:0;display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(255,255,255,.05);background:#00000052}.gc-assumption-toggle .result-container{position:relative;flex:1;min-height:0;padding:18px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#ffffff52;border:1px solid rgba(0,0,0,.08);text-align:center}.gc-assumption-toggle .summary-box{width:100%}.gc-assumption-toggle .summary-label{display:block;margin-bottom:8px;color:var(--text-secondary);font-size:.84rem;letter-spacing:.08em;text-transform:uppercase;font-family:var(--font-display)}.gc-assumption-toggle .summary-value{display:block;color:var(--text-primary);font-size:clamp(.9rem,1.5vw,1rem);letter-spacing:.04em;line-height:1.4;font-family:var(--font-ui)}.gc-assumption-toggle .result-value{display:block;width:100%;margin-top:4px;font-size:clamp(1.7rem,3vw,2rem);font-weight:400;letter-spacing:.05em;background-clip:text;-webkit-background-clip:text;color:transparent;font-family:var(--font-display)}.gc-assumption-toggle .result-stable{background-image:linear-gradient(90deg,#064e3b,#16a34a)}.gc-assumption-toggle .result-warning{background-image:linear-gradient(90deg,#7c2d12,#d97706)}.gc-assumption-toggle .result-paradox{background-image:linear-gradient(90deg,#831843,#be185d)}.gc-assumption-toggle .result-uncertain{background-image:linear-gradient(90deg,#4338ca,#7c3aed)}.gc-assumption-toggle .result-description{display:block;width:100%;margin-top:4px;color:#000;font-size:clamp(.96rem,1.8vw,1.08rem);letter-spacing:.03em;line-height:1.35;font-family:var(--font-ui)}.gc-assumption-toggle .intermediate-result{margin-top:14px;color:var(--text-secondary);font-size:.76rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-family:var(--font-display)}.gc-assumption-toggle .art-canvas{position:relative;width:100%;height:100%;min-height:160px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .art-canvas:after{content:"";position:absolute;width:8px;height:8px;border-radius:999px;background:#fff;box-shadow:0 0 12px #ffffffe6}.gc-assumption-toggle .art-canvas.paradox-point:after,.gc-assumption-toggle .art-canvas.paradox-chunk:after{display:none}.gc-assumption-toggle .cube-wrapper{position:relative;width:64px;height:64px;perspective:400px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .cube{position:relative;width:64px;height:64px;transform-style:preserve-3d;animation:assumption-slow-spin 10s linear infinite}.gc-assumption-toggle .face{position:absolute;inset:0;border:1px solid rgba(255,255,255,.35);background:#ffffff0d}.gc-assumption-toggle .cube .front{transform:translateZ(32px)}.gc-assumption-toggle .cube .back{transform:rotateY(180deg) translateZ(32px)}.gc-assumption-toggle .cube .right{transform:rotateY(90deg) translateZ(32px)}.gc-assumption-toggle .cube .left{transform:rotateY(-90deg) translateZ(32px)}.gc-assumption-toggle .cube .top{transform:rotateX(90deg) translateZ(32px)}.gc-assumption-toggle .cube .bottom{transform:rotateX(-90deg) translateZ(32px)}.gc-assumption-toggle .particle-point{position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:999px;transform:translate(-50%,-50%);background:#a10356;box-shadow:0 0 12px #a10356}.gc-assumption-toggle .info-arrow{position:absolute;left:-70px;top:50%;transform:translateY(-50%);display:flex;align-items:center;opacity:0;animation:assumption-arrow-enter .9s ease forwards .3s}.gc-assumption-toggle .arrow-line{width:34px;height:2px;background:#a10356;box-shadow:0 0 5px #a10356}.gc-assumption-toggle .arrow-head{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid #a10356}.gc-assumption-toggle .infinite-symbol{position:absolute;top:-25px;left:8px;color:#a10356;font-size:1.4rem;font-weight:700;text-shadow:0 0 10px rgba(161,3,86,.45)}.gc-assumption-toggle .chakana-wrapper{position:relative;width:90px;height:90px;transform-style:preserve-3d;transform:rotateX(-30deg) rotateY(45deg);animation:assumption-float 6s ease-in-out infinite}.gc-assumption-toggle .gold-cube{position:absolute;width:42px;height:42px;transform-style:preserve-3d}.gc-assumption-toggle .gold-cube.center{transform:translate(24px,24px)}.gc-assumption-toggle .gold-cube.top-arm{transform:translate(24px,-14px)}.gc-assumption-toggle .gold-cube.bottom-arm{transform:translate(24px,62px)}.gc-assumption-toggle .gold-cube.left-arm{transform:translate(-14px,24px)}.gc-assumption-toggle .gold-cube.right-arm{transform:translate(62px,24px)}.gc-assumption-toggle .gold-cube .face{background:linear-gradient(135deg,#fcd34d,#fbbf24,#d97706);border-color:#0000002e}.gc-assumption-toggle .gold-cube .front{transform:translateZ(21px)}.gc-assumption-toggle .gold-cube .back{transform:rotateY(180deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .right{transform:rotateY(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .left{transform:rotateY(-90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .top{transform:rotateX(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .bottom{transform:rotateX(-90deg) translateZ(21px)}.gc-assumption-toggle .chaos-wrapper{position:relative;width:120px;height:120px;perspective:600px}.gc-assumption-toggle .central-source{position:absolute;left:50%;top:50%;width:22px;height:22px;transform-style:preserve-3d;transform:translate(-50%,-50%);animation:assumption-pulsar 2.1s ease-out infinite}.gc-assumption-toggle .central-source .face{background:#a10356;border:1px solid rgba(255,255,255,.78);box-shadow:0 0 15px #c084fc}.gc-assumption-toggle .central-source .front{transform:translateZ(11px)}.gc-assumption-toggle .central-source .back{transform:rotateY(180deg) translateZ(11px)}.gc-assumption-toggle .central-source .right{transform:rotateY(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .left{transform:rotateY(-90deg) translateZ(11px)}.gc-assumption-toggle .central-source .top{transform:rotateX(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .bottom{transform:rotateX(-90deg) translateZ(11px)}.gc-assumption-toggle .debris-cube{position:absolute;left:50%;top:50%;width:10px;height:10px;transform-style:preserve-3d}.gc-assumption-toggle .debris-cube .face{background:linear-gradient(45deg,#c084fc,#a10356);border:1px solid rgba(255,255,255,.4)}.gc-assumption-toggle .debris-cube .front{transform:translateZ(5px)}.gc-assumption-toggle .debris-cube .back{transform:rotateY(180deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .right{transform:rotateY(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .left{transform:rotateY(-90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .top{transform:rotateX(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .bottom{transform:rotateX(-90deg) translateZ(5px)}.gc-assumption-toggle .d-0{animation:assumption-explode-0 2.1s linear infinite}.gc-assumption-toggle .d-1{animation:assumption-explode-1 2.3s linear infinite .2s}.gc-assumption-toggle .d-2{animation:assumption-explode-2 1.9s linear infinite .4s}.gc-assumption-toggle .d-3{animation:assumption-explode-3 2.4s linear infinite .1s}.gc-assumption-toggle .d-4{animation:assumption-explode-4 2.1s linear infinite .5s}.gc-assumption-toggle .d-5{animation:assumption-explode-5 1.9s linear infinite .25s}.gc-assumption-toggle .d-6{animation:assumption-explode-6 2.25s linear infinite .45s}.gc-assumption-toggle .d-7{animation:assumption-explode-7 2.4s linear infinite .15s}.gc-assumption-toggle .d-8{animation:assumption-explode-8 1.75s linear infinite .65s}.gc-assumption-toggle .d-9{animation:assumption-explode-9 2.5s linear infinite .1s}.gc-assumption-toggle .signal-orbit,.gc-assumption-toggle .field-node{position:relative;width:112px;height:112px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .signal-ring,.gc-assumption-toggle .field-ring{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-ring{inset:22px;border:2px dashed rgba(255,255,255,.45);animation:assumption-rotate 7s linear infinite}.gc-assumption-toggle .signal-axis{position:absolute;width:100px;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent);transform:rotate(-25deg)}.gc-assumption-toggle .signal-dot,.gc-assumption-toggle .field-core{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-dot{width:14px;height:14px;background:#fc6;box-shadow:0 0 18px #ffcc66b3}.gc-assumption-toggle .signal-cube{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#f5d565,#e08e18);box-shadow:0 0 22px #e08e1899}.gc-assumption-toggle .signal-orbit-point .signal-dot{animation:assumption-jitter .22s infinite}.gc-assumption-toggle .signal-orbit-chunk .signal-cube{animation:assumption-tilt 2.8s ease-in-out infinite}.gc-assumption-toggle .field-ring-outer{inset:10px;border:1px solid rgba(123,245,186,.38)}.gc-assumption-toggle .field-ring-inner{inset:28px;border:1px dashed rgba(123,245,186,.55);animation:assumption-rotate 9s linear infinite reverse}.gc-assumption-toggle .field-core{width:16px;height:16px;background:#4ade80;box-shadow:0 0 18px #4ade80cc}.gc-assumption-toggle .field-core-chunk{width:30px;height:30px;border-radius:10px;background:linear-gradient(135deg,#4ade80,#16a34a)}.gc-assumption-toggle .field-question{position:absolute;top:12px;right:16px;color:#ffffffd9;font-size:1.4rem;font-weight:700}.gc-assumption-toggle .crt-collapse{animation:assumption-crt-collapse .1s cubic-bezier(.25,.46,.45,.94) forwards}.gc-assumption-toggle .crt-expand{animation:assumption-crt-expand .1s cubic-bezier(.25,.46,.45,.94) forwards}@keyframes assumption-crt-collapse{0%{transform:scaleY(1)}60%{transform:scaleY(.1)}to{transform:scaleY(.005)}}@keyframes assumption-crt-expand{0%{transform:scaleY(.005)}60%{transform:scaleY(.1)}to{transform:scaleY(1)}}@keyframes assumption-slow-spin{0%{transform:rotateX(-20deg) rotateY(0)}to{transform:rotateX(-20deg) rotateY(360deg)}}@keyframes assumption-arrow-enter{0%{opacity:0;transform:translate(-12px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes assumption-float{0%{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}50%{transform:rotateX(-30deg) rotateY(45deg) translateY(-10px)}to{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}}@keyframes assumption-pulsar{0%{transform:translate(-50%,-50%) scale3d(.15,.15,.15) rotate(0);opacity:0}50%{transform:translate(-50%,-50%) scale3d(1.45,1.45,1.45) rotate(180deg);opacity:1}to{transform:translate(-50%,-50%) scale3d(3,3,3) rotate(360deg);opacity:0}}@keyframes assumption-explode-0{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(56px,54px) rotate(360deg)}}@keyframes assumption-explode-1{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-72px,48px) rotate(-180deg)}}@keyframes assumption-explode-2{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(30px,-84px) rotate(90deg)}}@keyframes assumption-explode-3{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-58px,-44px) rotate(-270deg)}}@keyframes assumption-explode-4{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(12px,74px) rotate(45deg)}}@keyframes assumption-explode-5{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-92px,6px) rotate(-45deg)}}@keyframes assumption-explode-6{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(48px,-54px) rotate(120deg)}}@keyframes assumption-explode-7{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-64px,58px) rotate(200deg)}}@keyframes assumption-explode-8{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(74px,18px) rotate(-100deg)}}@keyframes assumption-explode-9{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-26px,-82px) rotate(60deg)}}@keyframes assumption-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes assumption-jitter{0%{transform:translate(0)}25%{transform:translate(1px,1px)}50%{transform:translate(-1px,-1px)}75%{transform:translate(-1px,1px)}to{transform:translate(1px,-1px)}}@keyframes assumption-tilt{0%{transform:rotate(0) scale(1)}50%{transform:rotate(18deg) scale(1.08)}to{transform:rotate(0) scale(1)}}@keyframes assumption-cursor-blink{0%,45%{opacity:1}46%,to{opacity:0}}@keyframes assumption-led-pulse{0%,to{opacity:.5;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}@media(max-width:900px){.gc-assumption-toggle .component-shell{padding:12px 0}.gc-assumption-toggle .switch-group{gap:12px;padding:0 14px}.gc-assumption-toggle .toggle-track{min-height:50px}.gc-assumption-toggle .action-button{padding:10px 22px}.gc-assumption-toggle .action-button.secondary{padding:6px 36px}.gc-assumption-toggle .result-container{padding:14px}.gc-assumption-toggle .intermediate-result{margin-top:10px;font-size:.68rem}.gc-assumption-toggle .slide-processing{padding:18px 14px 14px}.gc-assumption-toggle .processing-shell,.gc-assumption-toggle .processing-terminal{padding:12px}}.gc-assumption-toggle .visualization-container{background:radial-gradient(circle at 50% 30%,rgba(156,255,197,.12),transparent 42%),linear-gradient(180deg,#09130de6,#060c08f5)}.gc-assumption-toggle .result-container{background:linear-gradient(180deg,#f7fcf8eb,#dcede2f0);border:1px solid rgba(8,33,18,.12);box-shadow:inset 0 1px #ffffff59}.gc-assumption-toggle .summary-box{padding:4px 0}.gc-assumption-toggle .summary-value{color:#0f2d18}.gc-assumption-toggle .intermediate-result{padding:7px 12px;border-radius:999px;color:#d9ffe5;background:linear-gradient(180deg,#071b0eeb,#0c2814f0);border:1px solid rgba(120,255,154,.18);box-shadow:inset 0 1px #ffffff14,0 8px 20px #0000001f;opacity:1}.gc-assumption-toggle .digital-lattice{position:relative;width:150px;height:150px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .digital-grid{position:absolute;inset:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;transform:rotate(45deg)}.gc-assumption-toggle .digital-cell{border-radius:10px;background:linear-gradient(135deg,#f6cb4d40,#c98010ad),linear-gradient(180deg,#ffffff24,#0000001a);border:1px solid rgba(255,222,118,.35);box-shadow:inset 0 1px #ffffff1a,0 0 18px #f6b7311f;animation:assumption-digital-flicker 2.6s ease-in-out infinite}.gc-assumption-toggle .digital-cell-core{background:linear-gradient(135deg,#ffeb8ecc,#f09c16eb),linear-gradient(180deg,#ffffff2e,#0000000f);box-shadow:0 0 26px #ffd86ba6,inset 0 0 12px #fff3}.gc-assumption-toggle .digital-cell-0{animation-delay:.05s}.gc-assumption-toggle .digital-cell-1{animation-delay:.25s}.gc-assumption-toggle .digital-cell-2{animation-delay:.55s}.gc-assumption-toggle .digital-cell-3{animation-delay:.35s}.gc-assumption-toggle .digital-cell-4{animation-delay:.12s}.gc-assumption-toggle .digital-cell-5{animation-delay:.68s}.gc-assumption-toggle .digital-cell-6{animation-delay:.44s}.gc-assumption-toggle .digital-cell-7{animation-delay:.2s}.gc-assumption-toggle .digital-cell-8{animation-delay:.78s}.gc-assumption-toggle .digital-core{position:relative;z-index:2;width:54px;height:54px;border-radius:16px;border:1px solid rgba(255,230,136,.45);background:radial-gradient(circle at 35% 35%,rgba(255,248,202,.45),transparent 55%),linear-gradient(145deg,#624008eb,#eca718eb);box-shadow:0 0 34px #efb83c5c,inset 0 0 20px #fff6ae33;transform:rotate(45deg)}.gc-assumption-toggle .digital-core-dot{position:absolute;inset:18px;border-radius:12px;background:#fff8d2f0;box-shadow:0 0 18px #fff5be99}.gc-assumption-toggle .digital-scan{position:absolute;z-index:1;border-radius:999px;background:#91ffbf2e}.gc-assumption-toggle .digital-scan-horizontal{width:132px;height:2px;animation:assumption-digital-scan-x 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-scan-vertical{width:2px;height:132px;animation:assumption-digital-scan-y 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-aura{position:absolute;inset:6px;border-radius:28px;border:1px solid rgba(255,226,118,.18);box-shadow:0 0 34px #f5bc3f26}.gc-assumption-toggle .physics-observatory{position:relative;width:158px;height:158px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .physics-grid{position:absolute;inset:10px;border-radius:999px;background:radial-gradient(circle,rgba(151,244,209,.09),transparent 58%),repeating-radial-gradient(circle,rgba(255,255,255,.09) 0 1px,transparent 1px 18px);-webkit-mask-image:radial-gradient(circle,black 58%,transparent 78%);mask-image:radial-gradient(circle,black 58%,transparent 78%);opacity:.75}.gc-assumption-toggle .physics-halo{position:absolute;border-radius:999px;border:1px solid rgba(157,253,224,.28)}.gc-assumption-toggle .physics-halo-outer{inset:8px;animation:assumption-rotate 18s linear infinite}.gc-assumption-toggle .physics-halo-inner{inset:28px;border-style:dashed;border-color:#76edc68a;animation:assumption-rotate 12s linear infinite reverse}.gc-assumption-toggle .physics-core-shell{position:absolute;width:54px;height:54px;border-radius:999px;background:radial-gradient(circle at 35% 35%,rgba(255,255,255,.4),transparent 52%),linear-gradient(180deg,#1b5c45e0,#0a241cf2);box-shadow:inset 0 0 22px #b2ffe429,0 0 34px #54d9a452}.gc-assumption-toggle .physics-core-shell-chunk{border-radius:18px;transform:rotate(45deg)}.gc-assumption-toggle .physics-core-point{position:absolute;inset:17px;border-radius:999px;background:radial-gradient(circle,#baffe6,#4ade80 48%,#16825b);box-shadow:0 0 22px #85ffcca6,0 0 42px #5adca242}.gc-assumption-toggle .physics-core-chunk{border-radius:9px}.gc-assumption-toggle .physics-orbit{position:absolute;width:10px;height:10px;border-radius:999px;background:linear-gradient(180deg,#f2fff9,#89ffd0);box-shadow:0 0 16px #89ffd094}.gc-assumption-toggle .physics-orbit-1{animation:assumption-orbit-one 6.4s linear infinite}.gc-assumption-toggle .physics-orbit-2{width:8px;height:8px;background:linear-gradient(180deg,#fff6d7,#ffcf69);box-shadow:0 0 14px #ffcf698c;animation:assumption-orbit-two 8.2s linear infinite reverse}.gc-assumption-toggle .physics-orbit-3{width:6px;height:6px;background:linear-gradient(180deg,#dffcff,#73d4ff);box-shadow:0 0 12px #73d4ff80;animation:assumption-orbit-three 10s linear infinite}.gc-assumption-toggle .physics-question-ring{position:absolute;inset:44px;display:flex;justify-content:center;align-items:center;border-radius:999px;border:1px dashed rgba(255,241,171,.28)}.gc-assumption-toggle .physics-question{color:#fff8d2f0;font-size:1.2rem;font-weight:700;text-shadow:0 0 12px rgba(255,226,130,.35)}@keyframes assumption-digital-flicker{0%,to{opacity:.72;transform:scale(1)}35%{opacity:1;transform:scale(1.04)}60%{opacity:.84;transform:scale(.98)}}@keyframes assumption-digital-scan-x{0%,to{transform:translateY(-48px);opacity:.2}50%{transform:translateY(48px);opacity:.9}}@keyframes assumption-digital-scan-y{0%,to{transform:translate(-48px);opacity:.18}50%{transform:translate(48px);opacity:.88}}@keyframes assumption-orbit-one{0%{transform:rotate(0) translate(54px) rotate(0)}to{transform:rotate(360deg) translate(54px) rotate(-360deg)}}@keyframes assumption-orbit-two{0%{transform:rotate(40deg) translate(34px) translateY(-14px) rotate(0)}to{transform:rotate(400deg) translate(34px) translateY(-14px) rotate(-360deg)}}@keyframes assumption-orbit-three{0%{transform:rotate(-20deg) translate(64px) translateY(4px) rotate(0)}to{transform:rotate(340deg) translate(64px) translateY(4px) rotate(-360deg)}} diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-DOdpM0HQ.js b/dist/vendor/glitch/glitch_gallery/assets/index-DOdpM0HQ.js new file mode 100644 index 0000000..327b0a9 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-DOdpM0HQ.js @@ -0,0 +1 @@ +import{r as s,j as t}from"./index-CEeZxcxj.js";const b="_container_18jex_3",B="_grid_18jex_18",C="_textBlock_18jex_34",f="_mainText_18jex_41",k="_delayed_18jex_50",I="_sphere_18jex_63",M="_glitching_18jex_82",S="_voxelOverlay_18jex_113",w="_visible_18jex_122",$="_voxel_18jex_113",A="_rebelText_18jex_137",G="_enterButton_18jex_146",O="_migrationContent_18jex_168",D="_tagline_18jex_175",F="_notList_18jex_183",E="_notItem_18jex_190",L="_isText_18jex_212",R="_ruleBox_18jex_221",W="_ruleTitle_18jex_231",U="_ruleContent_18jex_238",z="_continueButton_18jex_244",H="_agreementContent_18jex_265",P="_agreementTitle_18jex_272",Y="_pledgeText_18jex_280",q="_signatureArea_18jex_293",J="_paper_18jex_302",K="_signatureMark_18jex_313",Q="_pencil_18jex_339",V="_animating_18jex_346",X="_signButton_18jex_365",Z="_navigationContent_18jex_390",ee="_welcomeText_18jex_397",te="_choiceButtons_18jex_405",ne="_choiceButton_18jex_405",se="_choiceTitle_18jex_434",ie="_choiceDesc_18jex_440",ae="_arrow_18jex_445",oe="_screenFadeIn_18jex_463",e={container:b,grid:B,textBlock:C,mainText:f,delayed:k,sphere:I,glitching:M,voxelOverlay:S,visible:w,voxel:$,rebelText:A,enterButton:G,migrationContent:O,tagline:D,notList:F,notItem:E,isText:L,ruleBox:R,ruleTitle:W,ruleContent:U,continueButton:z,agreementContent:H,agreementTitle:P,pledgeText:Y,signatureArea:q,paper:J,signatureMark:K,pencil:Q,animating:V,signButton:X,navigationContent:Z,welcomeText:ee,choiceButtons:te,choiceButton:ne,choiceTitle:se,choiceDesc:ie,arrow:ae,screenFadeIn:oe};function me({onComplete:l,onProgress:d,theme:n,className:h}){const[a,c]=s.useState("disorientation"),[x,m]=s.useState(!1),[_,j]=s.useState(!1),[u,p]=s.useState(!1),o=n?{"--gc-primary":n.primary,"--gc-accent":n.accent,"--gc-bg":n.bg,"--gc-bgSecondary":n.bgSecondary,"--gc-text":n.text,"--gc-textMuted":n.textMuted,"--gc-border":n.border}:{};s.useEffect(()=>{d?.({disorientation:25,migration:50,agreement:75,navigation:100}[a])},[a,d]),s.useEffect(()=>{if(a!=="disorientation")return;const i=()=>{m(!0),setTimeout(()=>m(!1),150)},r=setTimeout(i,4e3),T=setInterval(()=>{const y=Math.random()*3e3+3e3;setTimeout(i,y)},6e3);return()=>{clearTimeout(r),clearInterval(T)}},[a]);const v=s.useCallback(()=>{j(!0),setTimeout(()=>{p(!0),setTimeout(()=>{c("navigation")},1e3)},800)},[]),g=s.useCallback(i=>{l({success:!0,data:{choice:i,agreedToTerms:!0},rewards:{achievements:["onboarding_complete"],unlocks:i==="lesson"?["tech_tree"]:["character_builder"]}})},[l]),N={disorientation:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.textBlock,children:[t.jsx("p",{className:e.mainText,children:"You are standing on a smooth sphere. It looks continuous. It feels continuous."}),t.jsx("div",{className:e.sphere+(x?` ${e.glitching}`:""),children:t.jsx("div",{className:e.voxelOverlay+(x?` ${e.visible}`:""),children:Array.from({length:36}).map((i,r)=>t.jsx("div",{className:e.voxel,style:{opacity:Math.random()>.5?.8:0}},r))})}),t.jsx("p",{className:`${e.mainText} ${e.delayed}`,children:"But what if it isn't?"}),t.jsxs("p",{className:e.rebelText,children:["Most people assume the universe is continuous.",t.jsx("br",{}),"We're not most people."]}),t.jsx("button",{className:e.enterButton,onClick:()=>c("migration"),children:"Enter the Glitch"})]})]}),migration:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.migrationContent,children:[t.jsx("p",{className:e.tagline,children:"A migration project for physics. That might fail. Or not."}),t.jsxs("ul",{className:e.notList,children:[t.jsx("li",{className:e.notItem,children:"This is not a fringe physics forum."}),t.jsx("li",{className:e.notItem,children:"This is not an online RPG."}),t.jsx("li",{className:e.notItem,children:"This is not a lecture series in philosophy, physics and computer science."})]}),t.jsx("p",{className:e.isText,children:"It's all of those things."}),t.jsxs("div",{className:e.ruleBox,children:[t.jsx("div",{className:e.ruleTitle,children:"RULE 1"}),t.jsxs("div",{className:e.ruleContent,children:["Nothing is obvious. Show it.",t.jsx("br",{}),"Predictions matter more than opinions."]})]}),t.jsx("button",{className:e.continueButton,onClick:()=>c("agreement"),children:"Continue →"})]})]}),agreement:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.agreementContent,children:[t.jsx("p",{className:e.agreementTitle,children:"Make your mark and sign here"}),t.jsx("div",{className:e.pledgeText,children:'"I agree to test ideas against reality"'}),t.jsxs("div",{className:e.signatureArea,children:[t.jsx("div",{className:e.paper,children:t.jsx("span",{className:e.signatureMark+(u?` ${e.visible}`:""),children:"✕"})}),t.jsx("span",{className:e.pencil+(_?` ${e.animating}`:""),children:"✏️"})]}),!u&&t.jsx("button",{className:e.signButton,onClick:v,disabled:_,children:"Sign"})]})]}),navigation:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.navigationContent,children:[t.jsx("p",{className:e.welcomeText,children:"Welcome to the Glitch. What would you like to do?"}),t.jsxs("div",{className:e.choiceButtons,children:[t.jsxs("button",{className:e.choiceButton,onClick:()=>g("lesson"),children:[t.jsxs("div",{className:e.choiceTitle,children:["Take me to the first lesson ",t.jsx("span",{className:e.arrow,children:"→"})]}),t.jsx("div",{className:e.choiceDesc,children:"Opens the tech tree and begins your journey"})]}),t.jsxs("button",{className:e.choiceButton,onClick:()=>g("character"),children:[t.jsxs("div",{className:e.choiceTitle,children:["Build my character first ",t.jsx("span",{className:e.arrow,children:"→"})]}),t.jsx("div",{className:e.choiceDesc,children:"Customize your presence in the Glitch"})]})]})]})]})};return t.jsx("div",{className:h,children:N[a]()})}const _e={name:"onboarding",version:"1.0.0",displayName:"Glitch University Onboarding",description:"Multi-screen onboarding experience introducing users to the Glitch universe",author:"Glitch.university",paramSchema:{},tags:["onboarding","intro","welcome"]};export{me as OnboardingComponent,me as default,_e as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-DczjPplt.css b/dist/vendor/glitch/glitch_gallery/assets/index-DczjPplt.css new file mode 100644 index 0000000..aac4251 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-DczjPplt.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Iceland&family=JetBrains+Mono:wght@400;600&family=Russo+One&display=swap";@import"https://fonts.googleapis.com/css2?family=Iceland&family=Russo+One&family=VT323&display=swap";:root{--font-headline: "Russo One", sans-serif;--font-ui: "VT323", "Iceland", sans-serif;--terminal-green: #7dff9b;--terminal-green-soft: #b9ffca;--terminal-green-dim: #5fd67b;--terminal-green-muted: #4f7b59;--terminal-panel-border: rgba(125, 255, 155, .22);font-family:var(--font-ui)}body{margin:0;min-width:320px;min-height:100vh;overflow:hidden;background:radial-gradient(circle at top left,rgba(125,255,155,.12),transparent 26%),radial-gradient(circle at top right,rgba(255,184,77,.08),transparent 22%),linear-gradient(180deg,#040605,#070b08 46%,#050505);color:var(--terminal-green-soft);font-family:var(--font-ui);letter-spacing:.04em;text-shadow:0 0 10px rgba(125,255,155,.08)}#root{width:100%;height:100vh}html,body{width:100%;height:100%;min-height:100%}button,input,select,textarea{font:inherit}code{font-family:SFMono-Regular,Menlo,monospace}.gallery-shell{display:grid;grid-template-columns:280px minmax(0,1fr);width:100%;height:100%}.gallery-sidebar{display:flex;flex-direction:column;gap:22px;padding:24px 18px;border-right:1px solid rgba(125,255,155,.14);background:#060a08eb;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);overflow:auto}.gallery-sidebar-header h1,.gallery-toolbar h2,.gallery-section-header h2,.gallery-section-header h3{margin:0;font-family:var(--font-headline);font-weight:400;letter-spacing:.08em;text-transform:uppercase}.gallery-sidebar-header h1{font-size:1.7rem}.gallery-sidebar-header p,.gallery-toolbar-subtitle,.gallery-muted,.gallery-list-subtitle,.gallery-list-note,.gallery-control-help,.gallery-log-time,.gallery-metadata dt{color:var(--terminal-green-muted)}.gallery-sidebar-header p,.gallery-toolbar-subtitle,.gallery-muted,.gallery-list-note,.gallery-control-help{font-size:.95rem}.gallery-eyebrow{display:inline-flex;margin-bottom:6px;color:var(--terminal-green-dim);font-size:.95rem;text-transform:uppercase;letter-spacing:.18em}.gallery-section{display:flex;flex-direction:column;gap:10px}.gallery-section-header,.gallery-panel-header,.gallery-log-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.gallery-list{display:flex;flex-direction:column;gap:10px}.gallery-list-item{display:flex;align-items:stretch;justify-content:space-between;gap:12px;width:100%;padding:10px 12px;border:1px solid rgba(125,255,155,.14);border-radius:16px;background:#0d1510e0;color:inherit;text-align:left}button.gallery-list-item{cursor:pointer;transition:border-color .18s ease,transform .18s ease,background .18s ease}button.gallery-list-item:hover{transform:translateY(-1px);border-color:#7dff9b57;background:#121d16f0}.gallery-list-item.is-active{border-color:#7dff9b80;box-shadow:0 0 0 1px #7dff9b2e,inset 0 0 0 1px #7dff9b1f}.gallery-list-item.is-disabled{opacity:.7}.gallery-list-copy{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.gallery-list-title{color:var(--terminal-green-soft);font-size:1.08rem}.gallery-list-subtitle{font-family:SFMono-Regular,Menlo,monospace;font-size:.72rem;word-break:break-word}.gallery-list-note{line-height:1.2}.gallery-list-thumb{--gallery-card-accent: hsl(var(--gallery-card-hue, 120) 80% 70%);width:84px;min-width:84px;border-radius:14px;padding:1px;background:linear-gradient(145deg,color-mix(in srgb,var(--gallery-card-accent) 72%,transparent),transparent 62%),#7dff9b1f}.gallery-list-thumb-frame{display:flex;flex-direction:column;justify-content:space-between;gap:8px;min-height:84px;padding:10px;border-radius:13px;background:radial-gradient(circle at top left,color-mix(in srgb,var(--gallery-card-accent) 26%,transparent),transparent 58%),linear-gradient(180deg,#080d0af5,#060907fa)}.gallery-list-thumb-type,.gallery-list-thumb-id{font-size:.64rem;line-height:1;text-transform:uppercase;letter-spacing:.12em}.gallery-list-thumb-type{color:color-mix(in srgb,var(--gallery-card-accent) 72%,white)}.gallery-list-thumb-frame strong{color:#f6fff8;font-family:var(--font-headline);font-size:1.65rem;font-weight:400;line-height:.9}.gallery-list-thumb-id{color:#ffffffad}.gallery-list-status{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.gallery-selected-card{display:flex;flex-direction:column;gap:14px;padding:18px;border:1px solid rgba(125,255,155,.14);border-radius:20px;background:#0a100de0}.gallery-selected-title{margin:0;font-family:var(--font-headline);font-size:1.5rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase}.gallery-selected-subtitle{margin:0;color:var(--terminal-green-muted);font-size:.95rem}.gallery-sidebar-viewport-switcher{margin-top:14px}.gallery-main{display:flex;flex-direction:column;min-width:0;height:100%;padding:20px}.gallery-toolbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.gallery-viewport-switcher{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:8px}.gallery-sidebar-actions{justify-content:flex-start}.gallery-viewport-button{min-width:94px;padding:10px 12px;border:1px solid rgba(125,255,155,.14);border-radius:14px;background:#080e0ae0;color:var(--terminal-green-soft);cursor:pointer;text-align:left;transition:border-color .18s ease,transform .18s ease,background .18s ease}.gallery-viewport-button-compact{min-width:0;padding:6px 10px;border-radius:999px;font-size:.78rem;line-height:1.1;white-space:nowrap}.gallery-viewport-button:hover{transform:translateY(-1px);border-color:#7dff9b52}.gallery-viewport-button.is-active{border-color:#7dff9b6b;background:linear-gradient(180deg,#142018f5,#0a100deb);box-shadow:inset 0 0 0 1px #7dff9b1f}.gallery-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;height:100%;min-height:0;flex:1}.gallery-preview-panel,.gallery-panel{display:flex;flex-direction:column;gap:14px;min-height:0;padding:18px;border:1px solid rgba(125,255,155,.14);border-radius:20px;background:#0a100de0}.gallery-panel-scroll{flex:1 1 0;overflow:hidden}.gallery-inspector{display:flex;flex-direction:column;gap:18px;max-height:100%;min-height:0;overflow-x:hidden;overflow-y:scroll;overscroll-behavior:contain}.gallery-stage{position:relative;align-items:center;justify-content:center;min-height:0;flex:1;border:1px solid rgba(125,255,155,.14);border-radius:18px;background:linear-gradient(180deg,#060b08e0,#040705fa),repeating-linear-gradient(0deg,rgba(125,255,155,.02),rgba(125,255,155,.02) 1px,transparent 1px,transparent 30px);overflow:auto}.gallery-stage-badges{display:flex;align-items:center;gap:8px}.gallery-stage-viewport{width:min(100%,var(--gallery-preview-width));height:min(100%,var(--gallery-preview-height));min-height:0;min-width:0;display:flex;flex:0 0 auto;overflow:hidden;border-radius:14px;box-shadow:0 0 0 1px #7dff9b24,0 18px 38px #00000042}.gallery-stage-viewport.is-fluid{width:100%;height:100%;flex:1 1 auto;border-radius:0;box-shadow:none}.gallery-canvas-shell,.gallery-standard-shell,.gallery-state{width:100%;height:100%;flex:1 1 auto;min-width:100%;min-height:100%}.gallery-preview-frame{display:block;flex:1 1 auto;width:100%;height:100%;border:0;background:transparent}.gallery-runtime-root{display:flex;width:100%;height:100%;min-height:100%}.gallery-canvas-shell{display:flex;height:100%}.gallery-state{display:grid;place-items:center;padding:32px;text-align:center}.gallery-state h3{margin:8px 0 0;font-family:var(--font-headline);font-weight:400}.gallery-state p{max-width:360px}.gallery-state-error{place-items:start;text-align:left}.gallery-controls{display:flex;flex-direction:column;gap:14px}.gallery-controls-scroll{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding-right:4px}.gallery-control{display:flex;flex-direction:column;gap:7px}.gallery-checkbox{flex-direction:row;align-items:center;justify-content:space-between;gap:12px}.gallery-control-copy{display:flex;flex-direction:column;gap:4px}.gallery-control-label{color:var(--terminal-green-soft);font-size:1rem}.gallery-range-row{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:10px}.gallery-input,.gallery-number,.gallery-range,.gallery-button,.gallery-checkbox input{accent-color:var(--terminal-green)}.gallery-input,.gallery-number{width:100%;padding:10px 12px;border:1px solid rgba(125,255,155,.18);border-radius:12px;background:#070c09eb;color:var(--terminal-green-soft)}.gallery-range{width:100%}.gallery-button{padding:10px 14px;border:1px solid rgba(125,255,155,.18);border-radius:999px;background:#0c1610eb;color:var(--terminal-green-soft);cursor:pointer;transition:border-color .18s ease,background .18s ease}.gallery-button:hover:not(:disabled){border-color:#7dff9b57;background:#101c15f5}.gallery-button:disabled{opacity:.45;cursor:not-allowed}.gallery-button-quiet{padding:6px 10px}.gallery-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 9px;border-radius:999px;border:1px solid rgba(125,255,155,.18);background:#0c1610eb;color:var(--terminal-green-soft);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}.gallery-badge-muted{border-color:#7dff9b14;color:var(--terminal-green-muted)}.gallery-badge-accent{border-color:#ffb84d4d;color:#ffcd82}.gallery-badge-danger{border-color:#ff6b6b4d;color:#ff9b9b}.gallery-badge-progress{border-color:#7dff9b4d}.gallery-badge-complete{border-color:#4db8ff57;color:#98dbff}.gallery-badge-sound{border-color:#ffb84d4d;color:#ffcd82}.gallery-badge-host{border-color:#b57dff4d;color:#d8b8ff}.gallery-badge-system{border-color:#7dff9b24;color:var(--terminal-green-muted)}.gallery-metadata{display:grid;gap:12px;margin:0}.gallery-metadata div{display:grid;gap:4px}.gallery-metadata dt{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}.gallery-metadata dd{margin:0;color:var(--terminal-green-soft)}.gallery-log-list{display:flex;flex-direction:column;gap:12px;max-height:360px;overflow:auto}.gallery-log-item{padding:12px;border-radius:14px;background:#070c09eb;border:1px solid rgba(125,255,155,.1)}.gallery-pre{margin:0;white-space:pre-wrap;word-break:break-word;color:#d8f9df;font-family:SFMono-Regular,Menlo,monospace;font-size:.78rem;line-height:1.45}@media(max-width:1200px){.gallery-grid{grid-template-columns:minmax(0,1fr) 320px}}@media(max-width:960px){body{overflow:auto}body[data-gallery-mode=shell] #root{height:auto;min-height:100%}.gallery-shell{grid-template-columns:1fr;height:auto}.gallery-sidebar{border-right:0;border-bottom:1px solid rgba(125,255,155,.14)}.gallery-grid{grid-template-columns:1fr}.gallery-viewport-switcher,.gallery-toolbar-actions{justify-content:flex-start}.gallery-stage{min-height:70vh}} diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-DnqmHVBx.js b/dist/vendor/glitch/glitch_gallery/assets/index-DnqmHVBx.js new file mode 100644 index 0000000..10c4a01 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-DnqmHVBx.js @@ -0,0 +1 @@ +import{k as Zt,V as g,l as U,T as Y,Q as yt,m as bt,b as E,n as Ht,f as Kt,M as Ft,r as b,o as gt,C as Et,F as wt,P as Xt,W as Vt,p as Wt,q as qt,s as Pt,t as Gt,v as Bt,w as Qt,I as Mt,i as $t,j as w,x as Jt,y as te,z as Dt}from"./index-CEeZxcxj.js";const St={type:"change"},et={type:"start"},Ct={type:"end"},V=new Ht,Tt=new Kt,ee=Math.cos(70*Ft.DEG2RAD),h=new g,f=2*Math.PI,a={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},$=1e-6;class se extends Zt{constructor(t,e=null){super(t,e),this.state=a.NONE,this.target=new g,this.cursor=new g,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:U.ROTATE,MIDDLE:U.DOLLY,RIGHT:U.PAN},this.touches={ONE:Y.ROTATE,TWO:Y.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new g,this._lastQuaternion=new yt,this._lastTargetPosition=new g,this._quat=new yt().setFromUnitVectors(t.up,new g(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new bt,this._sphericalDelta=new bt,this._scale=1,this._panOffset=new g,this._rotateStart=new E,this._rotateEnd=new E,this._rotateDelta=new E,this._panStart=new E,this._panEnd=new E,this._panDelta=new E,this._dollyStart=new E,this._dollyEnd=new E,this._dollyDelta=new E,this._dollyDirection=new g,this._mouse=new E,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=oe.bind(this),this._onPointerDown=ie.bind(this),this._onPointerUp=ae.bind(this),this._onContextMenu=pe.bind(this),this._onMouseWheel=he.bind(this),this._onKeyDown=le.bind(this),this._onTouchStart=ce.bind(this),this._onTouchMove=de.bind(this),this._onMouseDown=ne.bind(this),this._onMouseMove=re.bind(this),this._interceptControlDown=ue.bind(this),this._interceptControlUp=me.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}connect(t){super.connect(t),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(t){t.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=t}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(St),this.update(),this.state=a.NONE}update(t=null){const e=this.object.position;h.copy(e).sub(this.target),h.applyQuaternion(this._quat),this._spherical.setFromVector3(h),this.autoRotate&&this.state===a.NONE&&this._rotateLeft(this._getAutoRotationAngle(t)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let i=this.minAzimuthAngle,o=this.maxAzimuthAngle;isFinite(i)&&isFinite(o)&&(i<-Math.PI?i+=f:i>Math.PI&&(i-=f),o<-Math.PI?o+=f:o>Math.PI&&(o-=f),i<=o?this._spherical.theta=Math.max(i,Math.min(o,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+o)/2?Math.max(i,this._spherical.theta):Math.min(o,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let n=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const r=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),n=r!=this._spherical.radius}if(h.setFromSpherical(this._spherical),h.applyQuaternion(this._quatInverse),e.copy(this.target).add(h),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let r=null;if(this.object.isPerspectiveCamera){const l=h.length();r=this._clampDistance(l*this._scale);const m=l-r;this.object.position.addScaledVector(this._dollyDirection,m),this.object.updateMatrixWorld(),n=!!m}else if(this.object.isOrthographicCamera){const l=new g(this._mouse.x,this._mouse.y,0);l.unproject(this.object);const m=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),n=m!==this.object.zoom;const c=new g(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(l),this.object.updateMatrixWorld(),r=h.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;r!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(r).add(this.object.position):(V.origin.copy(this.object.position),V.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(V.direction))$||8*(1-this._lastQuaternion.dot(this.object.quaternion))>$||this._lastTargetPosition.distanceToSquared(this.target)>$?(this.dispatchEvent(St),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(t){return t!==null?f/60*this.autoRotateSpeed*t:f/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(t*.01);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){h.setFromMatrixColumn(e,0),h.multiplyScalar(-t),this._panOffset.add(h)}_panUp(t,e){this.screenSpacePanning===!0?h.setFromMatrixColumn(e,1):(h.setFromMatrixColumn(e,0),h.crossVectors(this.object.up,h)),h.multiplyScalar(t),this._panOffset.add(h)}_pan(t,e){const i=this.domElement;if(this.object.isPerspectiveCamera){const o=this.object.position;h.copy(o).sub(this.target);let n=h.length();n*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*n/i.clientHeight,this.object.matrix),this._panUp(2*e*n/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const i=this.domElement.getBoundingClientRect(),o=t-i.left,n=e-i.top,r=i.width,l=i.height;this._mouse.x=o/r*2-1,this._mouse.y=-(n/l)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(f*this._rotateDelta.x/e.clientHeight),this._rotateUp(f*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0;break}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(this._pointers.length===1)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._rotateStart.set(i,o)}}_handleTouchStartPan(t){if(this._pointers.length===1)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._panStart.set(i,o)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,o=t.pageY-e.y,n=Math.sqrt(i*i+o*o);this._dollyStart.set(0,n)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(this._pointers.length==1)this._rotateEnd.set(t.pageX,t.pageY);else{const i=this._getSecondPointerPosition(t),o=.5*(t.pageX+i.x),n=.5*(t.pageY+i.y);this._rotateEnd.set(o,n)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(f*this._rotateDelta.x/e.clientHeight),this._rotateUp(f*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(this._pointers.length===1)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._panEnd.set(i,o)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,o=t.pageY-e.y,n=Math.sqrt(i*i+o*o);this._dollyEnd.set(0,n),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const r=(t.pageX+e.x)*.5,l=(t.pageY+e.y)*.5;this._updateZoomParameters(r,l)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;eMath.min(e,Math.max(t,s)),tt=(s,t,e,i,o=1)=>{if(typeof s!="number"||Number.isNaN(s))return t;const n=Math.round(s/o)*o;return xe(n,e,i)};function Ot(s){const t=new Jt(16777215,.65);s.add(t);const e=new te(16777215,1.1);e.position.set(20,50,20),e.castShadow=!0,e.shadow.mapSize.width=2048,e.shadow.mapSize.height=2048,s.add(e);const i=new Dt(3900150,1.1,50);i.position.set(-10,10,-10),s.add(i);const o=new Dt(16743001,.9,50);o.position.set(10,-10,10),s.add(o)}function Re(s){if(Array.isArray(s)){s.forEach(t=>t.dispose());return}s.dispose()}function Lt(s){s.traverse(t=>{const e=t;e.geometry&&e.geometry.dispose(),e.material&&Re(e.material)})}function Le({config:s,onComplete:t,onProgress:e,theme:i,className:o}){const n=s.params??{},r=tt(n.gridSize,24,12,80,1),l=tt(n.majorRadius,8,4,10,.5),m=tt(n.minorRadius,3,1,5,.25),[c,st]=b.useState(r),[v,jt]=b.useState({layout:"landscape",width:0,height:0}),it=b.useRef(null),ot=b.useRef(null),W=b.useRef(!1);b.useEffect(()=>{const y=it.current;if(!y)return;const T=()=>{const L=y.clientWidth,_=y.clientHeight;if(!L||!_)return;const d=L>=_?"landscape":"portrait";let p=L,N=_;d==="landscape"?(N=Math.min(_,L*(9/16)),p=N*(16/9)):(p=Math.min(L,_/2),N=p*2),jt({layout:d,width:p,height:N})},M=new ResizeObserver(T);return M.observe(y),T(),()=>{M.disconnect()}},[]),b.useEffect(()=>{st(r),W.current=!1},[s.id,r,l,m]);const at=b.useMemo(()=>Math.max(Se,(l+m+1.5)*2),[l,m]),S=b.useMemo(()=>at/c,[at,c]);b.useEffect(()=>{e?.(c===r?0:100)},[r,e,c]),b.useEffect(()=>{c===r||W.current||(W.current=!0,t({success:!0,score:100,data:{configId:s.id,completedAt:new Date().toISOString(),params:{gridSize:c,majorRadius:l,minorRadius:m}}}))},[s.id,r,l,m,t,c]),b.useEffect(()=>{const y=ot.current;if(!y)return;const T=new gt,M=new gt,L=new Et(J);T.background=L,T.fog=new wt(J,.02),M.background=L,M.fog=new wt(J,.02),Ot(T),Ot(M);const _=new Xt(45,1,.1,1e3);_.position.copy(xt);const d=new Vt({antialias:!0,alpha:!0});d.shadowMap.enabled=!0,d.shadowMap.type=Wt,d.setPixelRatio(Math.min(window.devicePixelRatio,2)),d.setScissorTest(!0),y.appendChild(d.domElement);const p=new se(_,d.domElement);p.enableDamping=!0,p.dampingFactor=.05,p.minDistance=5,p.maxDistance=100,p.target.copy(Rt);const N=new qt(l,m,64,128),Nt=new Pt({color:3900150,roughness:.22,metalness:.1}),Z=new Gt(N,Nt);Z.castShadow=!0,Z.receiveShadow=!0,Z.rotation.x=-Math.PI/2,T.add(Z);const kt=S*.12,q=Math.max(S-kt,S*.2),nt=new Bt(q,q,q),zt=new Pt({color:3900150,roughness:.22,metalness:.1}),It=new Qt({color:0,transparent:!0,opacity:.08,wireframe:!0}),rt=Math.pow(c,3),D=new Mt(nt,zt,rt),k=new Mt(nt,It,rt),G=(c-1)*S/2,K=new $t;D.castShadow=!0,D.receiveShadow=!0,M.add(D),M.add(k);let F=0,B=0;for(let O=0;O{x=y.clientWidth,R=y.clientHeight,!(!x||!R)&&(_.aspect=1,_.updateProjectionMatrix(),d.setSize(x,R,!1))},dt=new ResizeObserver(ct);dt.observe(y),ct();const pt=()=>{X=!1,z!==null&&(window.clearTimeout(z),z=null)},ut=()=>{z=window.setTimeout(()=>{X=!0},Te)};p.addEventListener("start",pt),p.addEventListener("end",ut);let mt=0;const _t=()=>{if(mt=window.requestAnimationFrame(_t),X&&(_.position.lerp(ht,.05),p.target.lerp(lt,.05),_.position.distanceTo(ht)<.1&&p.target.distanceTo(lt)<.1&&(X=!1)),Z.rotation.z+=.002,D.rotation.y+=.002,k.rotation.y+=.002,k.visible=!1,p.update(),!x||!R)return;const O=x>=R,u=O?Math.min(x/2,R):Math.min(x,R/2),C=O?(x-u*2)/2:(x-u)/2,j=O?(R-u)/2:(R-u*2)/2,A=C,I=O?j:j+u,H=O?C+u:C,Q=j;d.setScissor(A,I,u,u),d.setViewport(A,I,u,u),d.render(T,_),d.setScissor(H,Q,u,u),d.setViewport(H,Q,u,u),d.render(M,_)};return _t(),()=>{window.cancelAnimationFrame(mt),z!==null&&window.clearTimeout(z),dt.disconnect(),p.removeEventListener("start",pt),p.removeEventListener("end",ut),p.dispose(),d.dispose(),Lt(T),Lt(M),y.removeChild(d.domElement)}},[l,m,c,S]);const At=b.useMemo(()=>({"--gc-primary":i?.primary??"var(--color-primary, #45c4b0)","--gc-accent":i?.accent??"var(--color-accent, #ff7a59)","--gc-bg":i?.bg??"var(--color-bg, #0d1117)","--gc-bg-secondary":i?.bgSecondary??"var(--color-bg-secondary, #182237)","--gc-text":i?.text??"var(--color-text, #f1f4ef)","--gc-text-muted":i?.textMuted??"var(--color-text-muted, #b6c0d4)","--gc-border":i?.border??"var(--color-border, #34516f)"}),[i]),vt=y=>{st(Number(y.target.value))};return w.jsx("div",{className:[P.wrapper,o].filter(Boolean).join(" "),style:At,ref:it,children:w.jsxs("div",{className:P.canvasShell,"data-layout":v.layout,style:{width:v.width?`${v.width}px`:void 0,height:v.height?`${v.height}px`:void 0},children:[w.jsx("div",{className:P.canvas,ref:ot}),w.jsxs("div",{className:P.viewportLabels,"data-layout":v.layout,children:[w.jsx("div",{className:P.splitLabel,children:"Continuous"}),w.jsx("div",{className:P.splitLabel,children:"Discrete"})]}),w.jsx("div",{className:P.controlOverlay,children:w.jsx("label",{className:P.resolutionCard,children:w.jsxs("span",{className:P.resolutionControl,children:[w.jsx("input",{className:P.slider,type:"range",min:"12",max:"80",step:"1",value:c,onChange:vt}),w.jsxs("span",{className:P.sliderValue,children:[S.toFixed(2),"u"]})]})})})]})})}const Ce={name:"voxel_universe",displayName:"Voxel Universe",version:"1.0.0",paramSchema:{gridSize:{type:"range",label:"Voxel Resolution",description:"How many voxels are used per axis. Higher values make each voxel smaller.",default:24,min:12,max:80,step:1},majorRadius:{type:"range",label:"Major Radius",description:"Overall radius of the torus shape.",default:8,min:4,max:10,step:.5},minorRadius:{type:"range",label:"Minor Radius",description:"Thickness of the torus ring.",default:3,min:1,max:5,step:.25}},defaultParams:{gridSize:24,majorRadius:8,minorRadius:3}};export{Le as default,Ce as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-MgCr_Urj.js b/dist/vendor/glitch/glitch_gallery/assets/index-MgCr_Urj.js new file mode 100644 index 0000000..ee925a2 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-MgCr_Urj.js @@ -0,0 +1 @@ +import{r as c,j as s}from"./index-CEeZxcxj.js";const w="_wrapper_61dhl_1",k="_frame_61dhl_15",v="_scan_61dhl_30",S="_stack_61dhl_47",B="_meta_61dhl_57",$="_progressTrack_61dhl_68",C="_progressFill_61dhl_77",E="_slide_61dhl_87",G="_title_61dhl_95",L="_rgbGlitch_61dhl_105",F="_rgbBase_61dhl_110",R="_rgbLayer_61dhl_116",Y="_layerR_61dhl_124",I="_layerG_61dhl_129",P="_layerB_61dhl_134",W="_content_61dhl_139",M="_line_61dhl_148",A="_spacer_61dhl_153",D="_list_61dhl_158",H="_warning_61dhl_166",O="_cta_61dhl_176",q="_controls_61dhl_195",U="_navButton_61dhl_201",e={wrapper:w,frame:k,scan:v,stack:S,meta:B,progressTrack:$,progressFill:C,slide:E,title:G,rgbGlitch:L,rgbBase:F,rgbLayer:R,layerR:Y,layerG:I,layerB:P,content:W,line:M,spacer:A,list:D,warning:H,cta:O,controls:q,navButton:U},z=40,i=[{title:"The Premise",lines:["This facility tests foundational assumptions.","","Not interpretations.","Assumptions."]},{title:"The method",lines:["This is math and philosophy.","Make assumption.","Pretend it's true.","Where does that lead?"]},{title:"The law",lines:["We make predictions.","If they fail, the idea fails."]},{title:"The way",lines:["You will:"],bullets:["Pass challenges","Collect paradoxes","Examine anomalies","Learn to think sharply"]},{title:"Warning",lines:["You may feel:"],bullets:["This is not a game!","Temporary confusion","The urge to defend existing physics!"],bulletStyle:"warning",after:"Good. This is not for everyone."},{title:"How This Works",lines:["Watch a short module","Pass the glitch gate","Unlock the next tech","That's it. For now."]},{title:"Proceed",lines:["You may proceed as an investigator.","Begin at the intersection","Get briefed"],cta:"[ ENTER FACILITY ]"}];function K({config:h,onComplete:u,onProgress:_,theme:n,className:p}){const[l,g]=c.useState(0),o=c.useRef(null),y=c.useMemo(()=>n?{"--gc-primary":n.primary,"--gc-accent":n.accent,"--gc-bg":n.bg,"--gc-bg-secondary":n.bgSecondary,"--gc-text":n.text,"--gc-text-muted":n.textMuted,"--gc-border":n.border}:{},[n]);c.useEffect(()=>{const t=(l+1)/i.length*100;_?.(Math.round(t))},[l,_]);const d=c.useCallback(t=>{if(t>0&&l===i.length-1){g(0);return}const r=l+t;r<0||r>=i.length||g(r)},[l]),b=c.useCallback(t=>{o.current=t.changedTouches[0]?.clientY??null},[]),x=c.useCallback(t=>{if(o.current==null)return;const r=t.changedTouches[0]?.clientY??o.current,m=o.current-r;Math.abs(m)>z&&d(m>0?1:-1),o.current=null},[d]),f=c.useCallback(()=>{u({success:!0,score:100,data:{sequence:"facility-slideshow",configId:h.id,completedAt:new Date().toISOString()}})},[h.id,u]),a=i[l],j=l===i.length-1,N=(l+1)/i.length*100,T=p?`${e.wrapper} ${p}`:e.wrapper;return s.jsx("div",{className:T,style:y,children:s.jsxs("section",{className:e.frame,"aria-label":"Facility onboarding slideshow",onTouchStart:b,onTouchEnd:x,children:[s.jsx("div",{className:e.scan,"aria-hidden":"true"}),s.jsxs("div",{className:e.stack,children:[s.jsxs("header",{children:[s.jsxs("div",{className:e.meta,children:[s.jsx("span",{children:"Glitch Facility"}),s.jsxs("span",{children:[l+1," / ",i.length]})]}),s.jsx("div",{className:e.progressTrack,children:s.jsx("div",{className:e.progressFill,style:{width:`${N}%`}})})]}),s.jsxs("article",{className:e.slide,"aria-live":"polite",children:[s.jsx("h2",{className:e.title,children:s.jsxs("span",{className:e.rgbGlitch,children:[s.jsx("span",{className:e.rgbBase,children:a.title}),s.jsx("span",{className:`${e.rgbLayer} ${e.layerR}`,"aria-hidden":"true",children:a.title}),s.jsx("span",{className:`${e.rgbLayer} ${e.layerG}`,"aria-hidden":"true",children:a.title}),s.jsx("span",{className:`${e.rgbLayer} ${e.layerB}`,"aria-hidden":"true",children:a.title})]})}),s.jsxs("div",{className:e.content,children:[a.lines.map((t,r)=>t===""?s.jsx("p",{className:e.spacer,"aria-hidden":"true"},`line-${r}`):s.jsx("p",{className:e.line,children:t},`line-${r}`)),a.bullets&&s.jsx("ul",{className:`${e.list} ${a.bulletStyle==="warning"?e.warning:""}`,children:a.bullets.map(t=>s.jsx("li",{children:t},t))}),a.after&&s.jsx("p",{className:e.line,children:a.after}),a.cta&&s.jsx("button",{type:"button",className:e.cta,onClick:f,children:a.cta})]})]}),s.jsxs("nav",{className:e.controls,"aria-label":"Slideshow controls",children:[s.jsx("button",{type:"button",className:e.navButton,onClick:()=>d(-1),disabled:l===0,children:"Previous"}),s.jsx("button",{type:"button",className:e.navButton,onClick:()=>d(1),children:j?"Restart":"Next"})]})]})]})})}const Q={name:"onboarding2",displayName:"Facility Slideshow",version:"1.0.0",paramSchema:{},defaultParams:{}};export{K as default,Q as metadata}; diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-WVFKiT6G.css b/dist/vendor/glitch/glitch_gallery/assets/index-WVFKiT6G.css new file mode 100644 index 0000000..5cb8dd1 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-WVFKiT6G.css @@ -0,0 +1 @@ +._container_166qm_3{--component-font-main: var(--font-main, system-ui, sans-serif);--component-font-display: var(--font-display, var(--component-font-main));--component-font-mono: var(--font-mono, monospace);background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:var(--component-font-main);line-height:1.6;max-width:640px;margin:0 auto;padding:1rem}._container_166qm_3 *,._container_166qm_3 *:before,._container_166qm_3 *:after{box-sizing:inherit}._panel_166qm_21{animation:_fadeIn_166qm_1 .3s ease;background:var(--gc-bg-secondary, #12121a);border:4px solid var(--gc-border, #2a2a3a);border-radius:4px;box-shadow:0 0 0 2px var(--gc-bg, #0a0a0f),0 0 20px #6366f126,inset 0 0 60px #00000080}@keyframes _fadeIn_166qm_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}._imageFrame_166qm_38{width:100%;min-height:100%;object-fit:contain;aspect-ratio:16 / 9;background:#000;border-bottom:4px solid var(--gc-border, #2a2a3a);overflow:hidden;position:relative}._imageFrame_166qm_38:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.4) 0%,transparent 20%,transparent 80%,rgba(0,0,0,.2) 100%);pointer-events:none}._sceneImage_166qm_63{width:100%;height:100%;object-fit:contain;image-rendering:auto}._sceneFallback_166qm_70{--scene-accent: var(--gc-primary, #6366f1);--scene-glow: rgb(99 102 241 / 26%);--scene-panel: rgb(8 10 20 / 92%);position:relative;display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:1rem;background:radial-gradient(circle at 20% 18%,var(--scene-glow),transparent 34%),linear-gradient(145deg,#080a14f5,#05060cf5);overflow:hidden}._sceneFallback_166qm_70[data-tone=danger]{--scene-accent: #ef4444;--scene-glow: rgb(239 68 68 / 22%)}._sceneFallback_166qm_70[data-tone=accent]{--scene-accent: var(--gc-accent, #22d3ee);--scene-glow: rgb(34 211 238 / 20%)}._sceneFallback_166qm_70[data-tone=success]{--scene-accent: #22c55e;--scene-glow: rgb(34 197 94 / 20%)}._sceneFallbackGlow_166qm_102{position:absolute;inset:12% auto auto 8%;width:40%;aspect-ratio:1;border-radius:999px;background:radial-gradient(circle,var(--scene-glow),transparent 70%);filter:blur(8px);pointer-events:none}._sceneFallbackHud_166qm_113{position:relative;display:flex;justify-content:space-between;gap:.75rem;align-items:center;z-index:1}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{border:1px solid color-mix(in srgb,var(--scene-accent) 55%,transparent);background:color-mix(in srgb,var(--scene-panel) 88%,transparent);color:color-mix(in srgb,var(--scene-accent) 86%,white);padding:.35rem .55rem;text-transform:uppercase;letter-spacing:.14em;font-family:var(--component-font-mono);font-size:.66rem}._sceneFallbackSignal_166qm_123{opacity:.85}._sceneFallbackCopy_166qm_138{position:relative;z-index:1;display:grid;gap:.45rem;max-width:28rem}._sceneFallbackKicker_166qm_146{margin:0;color:color-mix(in srgb,var(--scene-accent) 78%,white);font-family:var(--component-font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}._sceneFallbackTitle_166qm_155{margin:0;color:#fff;font-family:var(--component-font-display);font-size:clamp(1.3rem,2.8vw,2rem);line-height:1.05;text-transform:uppercase}._sceneFallbackDetail_166qm_164{margin:0;color:#e8e8ecc2;font-size:.88rem;max-width:32ch}._sceneFallbackBars_166qm_171{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;align-items:end}._sceneFallbackBars_166qm_171 span{height:.35rem;border-radius:999px;background:linear-gradient(90deg,var(--scene-accent),color-mix(in srgb,var(--scene-accent) 18%,transparent));opacity:.9}._sceneFallbackBars_166qm_171 span:nth-child(2){width:82%}._sceneFallbackBars_166qm_171 span:nth-child(3){width:64%}._dialogueBox_166qm_196{padding:1.5rem;position:relative}._dialogueBox_166qm_196:before{content:"";position:absolute;top:0;left:1rem;right:1rem;height:1px;background:linear-gradient(90deg,transparent,var(--gc-primary, #6366f1) 20%,var(--gc-primary, #6366f1) 80%,transparent)}._dialogueHeader_166qm_217{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}._title_166qm_224{color:var(--gc-primary, #6366f1);font-family:var(--component-font-display);margin:0;font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 10px rgba(99,102,241,.5)}._loopBadge_166qm_235{background:#ef444433;color:#ef4444;padding:.25rem .75rem;border:2px solid #ef4444;border-radius:2px;font-family:var(--component-font-mono);font-size:.75rem;font-weight:700;letter-spacing:.1em;animation:_loopPulse_166qm_1 1.5s ease-in-out infinite}@keyframes _loopPulse_166qm_1{0%,to{opacity:1}50%{opacity:.6}}._description_166qm_253{color:var(--gc-text-muted, #9999a8);margin:0 0 1.25rem;font-size:.95rem;line-height:1.7}._actionButton_166qm_261{background:linear-gradient(180deg,#4f46e5,#3730a3);color:#fff;border:2px solid #6366f1;padding:.875rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #1e1b4b,0 6px 10px #0000004d;position:relative;top:0}._actionButton_166qm_261:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #1e1b4b,0 8px 15px #0000004d}._actionButton_166qm_261:active{top:4px;box-shadow:0 0 #1e1b4b,0 2px 5px #0000004d}._choices_166qm_296{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}._choiceButton_166qm_303{background:var(--gc-bg, #0a0a0f);border:2px solid var(--gc-border, #2a2a3a);padding:1rem;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;gap:1rem;position:relative;overflow:hidden}._choiceButton_166qm_303:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gc-primary, #6366f1);opacity:0;transition:opacity .15s ease}._choiceButton_166qm_303:hover{border-color:var(--gc-primary, #6366f1);background:#6366f114}._choiceButton_166qm_303:hover:before{opacity:1}._choiceKey_166qm_337{width:2.5rem;height:2.5rem;background:linear-gradient(180deg,#374151,#1f2937);border:2px solid #4b5563;border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--component-font-mono);font-size:1.25rem;font-weight:700;color:#e5e7eb;flex-shrink:0;box-shadow:0 3px #111827,inset 0 1px #ffffff1a;text-shadow:0 1px 2px rgba(0,0,0,.5)}._choiceButton_166qm_303:hover ._choiceKey_166qm_337{background:linear-gradient(180deg,#4f46e5,#3730a3);border-color:#6366f1;box-shadow:0 3px #1e1b4b,inset 0 1px #ffffff26,0 0 10px #6366f14d}._choiceContent_166qm_366{display:flex;flex-direction:column;gap:.25rem;text-align:left}._choiceTitle_166qm_373{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-weight:700;font-size:1rem}._choiceDesc_166qm_380{color:var(--gc-text-muted, #9999a8);font-size:.8rem;font-style:italic}._rejection_166qm_387{background:#ef444414;border:2px solid rgba(239,68,68,.4);padding:1.25rem;margin-bottom:1.25rem;position:relative}._rejectionBadge_166qm_395{display:inline-block;background:#dc2626;color:#fff;padding:.25rem .75rem;font-family:var(--component-font-mono);font-size:.8rem;font-weight:700;letter-spacing:.15em;margin-bottom:1rem;animation:_shake_166qm_1 .5s ease-in-out}@keyframes _shake_166qm_1{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}._quote_166qm_416{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-size:1.1rem;font-weight:700;margin:0 0 .75rem;padding-left:1rem;border-left:3px solid #ef4444}._explanation_166qm_426{color:var(--gc-text-muted, #9999a8);margin:0;font-size:.9rem;padding-left:1rem;border-left:3px solid transparent}._insightButton_166qm_435{background:transparent;border:2px dashed var(--gc-accent, #22d3ee);color:var(--gc-accent, #22d3ee);padding:.75rem 1rem;font-family:var(--component-font-display);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:1rem;width:100%;animation:_glowPulse_166qm_1 2s ease-in-out infinite}@keyframes _glowPulse_166qm_1{0%,to{box-shadow:0 0 5px #22d3ee4d}50%{box-shadow:0 0 15px #22d3ee80}}._insightButton_166qm_435:hover{background:#22d3ee1a;border-style:solid}._insight_166qm_435{text-align:center}._insightTitle_166qm_465{color:var(--gc-accent, #22d3ee);margin:0 0 1.5rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-shadow:0 0 15px rgba(34,211,238,.5)}._paradoxDiagram_166qm_474{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1.5rem;padding:1rem;background:#0006;border:1px solid var(--gc-border, #2a2a3a)}._paradoxNode_166qm_486{background:var(--gc-bg, #0a0a0f);border:1px solid var(--gc-border, #2a2a3a);padding:.4rem .6rem;font-family:var(--component-font-mono);font-size:.7rem;color:var(--gc-text-muted, #9999a8)}._paradoxArrow_166qm_495{color:var(--gc-primary, #6366f1);font-size:1rem;font-weight:700}._paradoxLoop_166qm_501{color:var(--gc-accent, #22d3ee);font-size:1.5rem;margin-left:.5rem;animation:_spin_166qm_1 3s linear infinite}@keyframes _spin_166qm_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._insightText_166qm_513{color:var(--gc-text, #e8e8ec);margin:0 0 1rem;font-size:.9rem;line-height:1.7;text-align:left}._insightText_166qm_513:last-of-type{margin-bottom:0}._insightText_166qm_513 strong{color:var(--gc-accent, #22d3ee)}._completeButton_166qm_530{background:linear-gradient(180deg,#059669,#047857);color:#fff;border:2px solid #10b981;padding:1rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;margin-top:1.5rem;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #064e3b,0 6px 10px #0000004d;position:relative;top:0}._completeButton_166qm_530:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #064e3b,0 8px 15px #0000004d}._completeButton_166qm_530:active{top:4px;box-shadow:0 0 #064e3b,0 2px 5px #0000004d}._successBox_166qm_566{text-align:center}._successTitle_166qm_570{color:#22c55e;margin:0 0 1rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 15px rgba(34,197,94,.5)}._stats_166qm_581{color:var(--gc-text-muted, #9999a8);margin:0 0 1.5rem;font-size:.9rem}._scoreDisplay_166qm_587{background:#0006;border:2px solid var(--gc-accent, #22d3ee);padding:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}._scoreLabel_166qm_597{color:var(--gc-text-muted, #9999a8);font-family:var(--component-font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.2em}._scoreValue_166qm_605{color:var(--gc-accent, #22d3ee);font-size:3rem;font-weight:700;text-shadow:0 0 20px rgba(34,211,238,.5)}@media(max-width:480px){._container_166qm_3{padding:.5rem}._dialogueBox_166qm_196{padding:1rem}._title_166qm_224{font-size:1.1rem}._choiceKey_166qm_337{width:2rem;height:2rem;font-size:1rem}._paradoxDiagram_166qm_474{gap:.25rem;padding:.75rem}._paradoxNode_166qm_486{font-size:.6rem;padding:.3rem .5rem}._sceneFallback_166qm_70{padding:.85rem}._sceneFallbackHud_166qm_113{gap:.5rem}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{font-size:.58rem;padding:.3rem .45rem}._sceneFallbackTitle_166qm_155{font-size:1.1rem}._sceneFallbackDetail_166qm_164{font-size:.78rem}} diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-hWn6tbl7.css b/dist/vendor/glitch/glitch_gallery/assets/index-hWn6tbl7.css new file mode 100644 index 0000000..5b74a39 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-hWn6tbl7.css @@ -0,0 +1 @@ +._container_18jex_3{width:100%;height:100vh;background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden}._grid_18jex_18{position:absolute;inset:0;background-image:linear-gradient(rgba(99,102,241,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.03) 1px,transparent 1px);background-size:40px 40px;opacity:.5;animation:_gridPulse_18jex_1 4s ease-in-out infinite}@keyframes _gridPulse_18jex_1{0%,to{opacity:.3}50%{opacity:.6}}._textBlock_18jex_34{max-width:600px;text-align:center;z-index:10;padding:2rem}._mainText_18jex_41{font-size:1.25rem;line-height:1.8;color:var(--gc-text, #e8e8ec);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards}._mainText_18jex_41._delayed_18jex_50{animation-delay:2s}._questionText_18jex_54{font-size:1.1rem;color:var(--gc-textMuted, #9999a8);font-style:italic;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:3.5s}._sphere_18jex_63{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(99,102,241,.3),rgba(34,211,238,.1) 50%,transparent 70%);border:1px solid rgba(99,102,241,.3);margin:2rem auto;position:relative;animation:_sphereFloat_18jex_1 3s ease-in-out infinite}@keyframes _sphereFloat_18jex_1{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}._sphere_18jex_63._glitching_18jex_82{animation:_sphereGlitch_18jex_1 .15s steps(2) forwards}@keyframes _sphereGlitch_18jex_1{0%{border-radius:50%;filter:none}25%{border-radius:10%;filter:hue-rotate(90deg);transform:scale(1.1) skew(5deg)}50%{border-radius:5%;filter:hue-rotate(180deg) saturate(2);transform:scale(.9) skew(-5deg)}75%{border-radius:20%;filter:hue-rotate(270deg);transform:scale(1.05)}to{border-radius:50%;filter:none;transform:scale(1)}}._voxelOverlay_18jex_113{position:absolute;inset:0;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(6,1fr);opacity:0}._voxelOverlay_18jex_113._visible_18jex_122{opacity:1;animation:_voxelFlash_18jex_1 .15s steps(1) forwards}._voxel_18jex_113{background:var(--gc-primary, #6366f1);opacity:.8}@keyframes _voxelFlash_18jex_1{0%{opacity:1}to{opacity:0}}._rebelText_18jex_137{font-size:.95rem;color:var(--gc-accent, #22d3ee);margin-top:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:5s}._enterButton_18jex_146{margin-top:3rem;padding:1rem 2.5rem;background:transparent;border:1px solid var(--gc-primary, #6366f1);color:var(--gc-primary, #6366f1);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:6.5s;transition:all .3s ease}._enterButton_18jex_146:hover{background:var(--gc-primary, #6366f1);color:var(--gc-bg, #0a0a0f);box-shadow:0 0 20px #6366f166}._migrationContent_18jex_168{max-width:650px;text-align:center;z-index:10;padding:2rem}._tagline_18jex_175{font-size:1.4rem;color:var(--gc-accent, #22d3ee);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._notList_18jex_183{list-style:none;padding:0;margin:0 0 2rem;text-align:left}._notItem_18jex_190{font-size:1rem;color:var(--gc-textMuted, #9999a8);padding:.5rem 0 .5rem 2rem;position:relative;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._notItem_18jex_190:before{content:"×";position:absolute;left:0;color:#ef4444b3;font-weight:700}._notItem_18jex_190:nth-child(1){animation-delay:.5s}._notItem_18jex_190:nth-child(2){animation-delay:.8s}._notItem_18jex_190:nth-child(3){animation-delay:1.1s}._isText_18jex_212{font-size:1.1rem;color:var(--gc-text, #e8e8ec);margin:2rem 0;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1.8s}._ruleBox_18jex_221{border:1px solid var(--gc-border, #2a2a3a);padding:1.5rem;margin:2rem 0;text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:2.5s}._ruleTitle_18jex_231{font-size:.85rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem;letter-spacing:.1em}._ruleContent_18jex_238{font-size:1rem;color:var(--gc-text, #e8e8ec);line-height:1.6}._continueButton_18jex_244{margin-top:2rem;padding:.8rem 2rem;background:transparent;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-textMuted, #9999a8);font-family:Courier New,monospace;font-size:.9rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards;animation-delay:3.2s;transition:all .3s ease}._continueButton_18jex_244:hover{border-color:var(--gc-primary, #6366f1);color:var(--gc-text, #e8e8ec)}._agreementContent_18jex_265{max-width:550px;text-align:center;z-index:10;padding:2rem}._agreementTitle_18jex_272{font-size:1.2rem;color:var(--gc-textMuted, #9999a8);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._pledgeText_18jex_280{font-size:1.5rem;color:var(--gc-text, #e8e8ec);font-style:italic;margin:2rem 0;padding:1.5rem;border-left:2px solid var(--gc-primary, #6366f1);text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:.5s}._signatureArea_18jex_293{margin:3rem 0;position:relative;height:120px;display:flex;align-items:center;justify-content:center}._paper_18jex_302{width:200px;height:100px;background:#ffffff08;border:1px solid var(--gc-border, #2a2a3a);position:relative;display:flex;align-items:center;justify-content:center}._signatureMark_18jex_313{font-size:4rem;color:var(--gc-primary, #6366f1);opacity:0;transform:scale(0)}._signatureMark_18jex_313._visible_18jex_122{animation:_drawX_18jex_1 .8s ease forwards}@keyframes _drawX_18jex_1{0%{opacity:0;transform:scale(0) rotate(-45deg)}50%{opacity:1;transform:scale(1.2) rotate(0)}to{opacity:1;transform:scale(1) rotate(0)}}._pencil_18jex_339{position:absolute;font-size:2rem;opacity:0;transform:translate(80px,-60px) rotate(-45deg)}._pencil_18jex_339._animating_18jex_346{animation:_pencilDraw_18jex_1 .8s ease forwards}@keyframes _pencilDraw_18jex_1{0%{opacity:1;transform:translate(80px,-60px) rotate(-45deg)}50%{opacity:1;transform:translate(0) rotate(-45deg)}to{opacity:0;transform:translate(-80px,60px) rotate(-45deg)}}._signButton_18jex_365{padding:1rem 2.5rem;background:var(--gc-primary, #6366f1);border:none;color:var(--gc-bg, #0a0a0f);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1s}._signButton_18jex_365:hover{box-shadow:0 0 25px #6366f180;transform:translateY(-2px)}._signButton_18jex_365:disabled{opacity:.5;cursor:not-allowed}._navigationContent_18jex_390{max-width:600px;text-align:center;z-index:10;padding:2rem}._welcomeText_18jex_397{font-size:1rem;color:var(--gc-textMuted, #9999a8);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._choiceButtons_18jex_405{display:flex;flex-direction:column;gap:1.5rem}._choiceButton_18jex_405{padding:1.5rem 2rem;background:#6366f10d;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;text-align:left;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._choiceButton_18jex_405:nth-child(1){animation-delay:.5s}._choiceButton_18jex_405:nth-child(2){animation-delay:.8s}._choiceButton_18jex_405:hover{border-color:var(--gc-primary, #6366f1);background:#6366f11a;transform:translate(5px)}._choiceTitle_18jex_434{font-size:1.1rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem}._choiceDesc_18jex_440{font-size:.85rem;color:var(--gc-textMuted, #9999a8)}._arrow_18jex_445{float:right;color:var(--gc-primary, #6366f1)}@keyframes _fadeInUp_18jex_1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}._screenFadeIn_18jex_463{animation:_screenEnter_18jex_1 .6s ease forwards}@keyframes _screenEnter_18jex_1{0%{opacity:0}to{opacity:1}} diff --git a/dist/vendor/glitch/glitch_gallery/assets/index-mpZwhQDb.css b/dist/vendor/glitch/glitch_gallery/assets/index-mpZwhQDb.css new file mode 100644 index 0000000..9f98957 --- /dev/null +++ b/dist/vendor/glitch/glitch_gallery/assets/index-mpZwhQDb.css @@ -0,0 +1 @@ +._wrapper_1xs2z_1{--gc-paper: #f2f0ea;box-sizing:border-box;width:100%;height:100%;min-height:100%;margin:0;padding:0;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:24px;background:radial-gradient(circle at 12% 8%,color-mix(in srgb,var(--gc-primary, #45c4b0) 16%,transparent),transparent 34%),radial-gradient(circle at 88% 10%,color-mix(in srgb,var(--gc-accent, #ff7a59) 14%,transparent),transparent 28%),linear-gradient(160deg,var(--gc-bg, #0d1117),var(--gc-bg-secondary, #182237));color:var(--gc-text, #f1f4ef);box-shadow:0 24px 64px #00000047;display:grid;place-items:center}._wrapper_1xs2z_1,._wrapper_1xs2z_1 *,._wrapper_1xs2z_1 *:before,._wrapper_1xs2z_1 *:after{box-sizing:inherit}._canvasShell_1xs2z_28{position:relative;overflow:hidden;flex:none;border:1px solid rgb(0 0 0 / 22%);background:var(--gc-paper, #f2f0ea);box-shadow:inset 0 0 0 1px #ffffff1f}._canvas_1xs2z_28{width:100%;height:100%}._canvas_1xs2z_28 canvas{display:block;width:100%;height:100%}._viewportLabels_1xs2z_48{position:absolute;inset:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));pointer-events:none}._viewportLabels_1xs2z_48[data-layout=portrait]{grid-template-columns:1fr;grid-template-rows:repeat(2,minmax(0,1fr))}._splitLabel_1xs2z_61{display:grid;place-items:center;color:#111827d1;font-size:clamp(1.15rem,2.7vw,2.1rem);font-weight:700;font-family:IBM Plex Sans Condensed,Avenir Next Condensed,sans-serif;text-transform:uppercase;letter-spacing:.34em;text-shadow:0 2px 12px rgb(255 255 255 / 42%)}._controlOverlay_1xs2z_73{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:center;pointer-events:none}._resolutionCard_1xs2z_83{pointer-events:auto;display:flex;align-items:center;justify-content:center;width:min(100%,26rem);padding:.75rem .9rem;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:16px;background:#070f199e;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 30px #0000002e}._resolutionControl_1xs2z_97{display:flex;align-items:center;gap:.85rem;width:100%;min-width:0}._slider_1xs2z_105{width:100%;accent-color:var(--gc-primary, #45c4b0);cursor:pointer}._sliderValue_1xs2z_111{min-width:3.75rem;text-align:right;font-family:IBM Plex Mono,JetBrains Mono,monospace;font-size:.95rem}@media(max-width:900px){._resolutionControl_1xs2z_97{min-width:0}}@media(max-width:720px){._wrapper_1xs2z_1{padding:0}._splitLabel_1xs2z_61{font-size:clamp(.95rem,5vw,1.4rem);letter-spacing:.24em}._controlOverlay_1xs2z_73{right:0rem;bottom:0rem;left:0rem}} diff --git a/dist/vendor/glitch/glitch_gallery/assets/technoborder-4brzcuN1.png b/dist/vendor/glitch/glitch_gallery/assets/technoborder-4brzcuN1.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd7f4af423ba286c4e4196a3dedd8b6e6986b8c GIT binary patch literal 846039 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Μ#CKYMQ=78-f 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

    `1_ zoRmQWIM!sR)O>>C;?JDQ4>mVpUtCbxS}gLKBAF36}*z=t@;n&w3OM<7m!v_v&zB>sWP>)=@XbzZJu%Y(M5Eq71vep@FY!EierO5;PT&NQ zpHye5OHBMr1lj~@>UEl-`YqgYj;Y7La)k;o{PT9)Q_TXBx5j?3r_se?eRrR9PW-h< z9^vcC543Z5LxPPyg88VQNcmq*;JvM*f7*^YSa9(Hwz!uM3@L}7*+zF9BA5tcmWg}V ze3|YZa2FhO?~@$Du`G$1Trb18!n20wb$McNbZ{^S)qi(-TR`7BtkvLfil~?9cpM^r zuoihm4{wkWN%d;c(6eGZ`(1;_?a;fTWv4>cY<;5VZ;B*Ec>7}{^-7oH^k)E#4?bhj zz^S5-FzzHfDXiAv&D&*|+p zVAh#E$6_N1RM|8aqx3);<)SPVQvE6N%DDm{g^h&mFKFH8NLI{BHB;@0sKMnw)WM|Y zpw{`8yoYlQ?@d3n->dh1@`Ph@5ka?XM*S+UV+4Z@ zG5ws3P4u{E?vd$7(>hQ0I25WNR#1i`l@jvJbHFZcoP`qUo>{|xi6xZ^32bQLj13;e`iM1YY z;I$l4xl$Yn)>xXquaz6_EwW6-5XEK=btkXg3l%UdW|~9bv)eWyuCV?9j_{h4+b&O05v2LTJ zh=xeKZ#TJQr3e{eb1M$XN-O^;^FM#Lr#oJ$H*Ea$MJ;=JIG6-^NKIdBfeljfg+KI^ z#k6R&g}Fd9Go)e;9merWrdf>2;Dc62CGPWThq{Gwi~HnqQtaXBf?8b;sAiAl4536GWHW-i*{ zXQYK*LMJKl%|*)?uTYt}$j`(}cT8Q;UlfK}w zGANB^vjdoZieIsyRT`ANl0cU~oieqT^kjreYmpBFr_~&ctNz8lkMmH;@t4gqyM6ap zO2JEHBLMUsaE_)qrb!VsUKL>!on4c3?_eG%qAxm?=os(tXJ=UGFhT_^EFV!P0o?N( zWQA;pGz*2emg$-^#ym32||!d(+;7KL(dM(eNA=|wJ|w33IC&1t3jl-ixv zpcmq$Slb*;%-(SThQf%u`VQB1e`XlUPnm})o_`Oi%O;HdR^%?IHQ^gA$~;ZrLRTFd z`5Wgsh9f=&^K$GFDQpV{y&@@YOo&ZNq(Bn&{z^Q$PMvj54yCK=!Fm20Zs+}PO*!JR z0DBcIMYDk6)_IEl};6KUviN}EqUv&`qf@y)WD=8EyTT)gtMe|lI_|D-S7*agzzS6vMXTN;x>w^?$G zLLr5HsZutaV+=piPw@y6{@GwN;vj#WJvZqd>#~1kX{;4@?psh=I7nC3$SDZIuXkda z&w;i6%uqC4%7@$){qSa9No=9u?l{_ZR?n&Y^IFFxk@o5qlvz$DxU-B>m?p$ciBf(- zJS^vwZ_Y0(=mT}FIb1%z%C~8ruGQiUOK_pplCYzMKunaV)`zypYlwW+fu-*zXu2K@ z)9jem;$P6Wj0`(vRB<^p2)*d|Q)lxJD6>>)>8uEPj7<03G{R$fpMzz}Yxcsr@2@sh zGXBi1L%+THb;#OV3JlT0cJ9}Xh-S;AX|eQWj+Va!5} zogHMrS61|Vch0po59EZ7SHlOdw@&h2cWdCzEW&y($-;u;&SOas^0iweXk}xtXngT< zGoUo`;+1o}X9eb;<3}3jcxM0%=KgLxOnFGo<1>5eS|5{$MtMN zws%yiRankKtmlK*NmpR!T$Rc21U1hj3AuR*4qW*A#wG-8Q;o@m?EPS6b=c#*nSss? zi1Qe+0*TarYwfK_gt9uYx_mHq8m^vr$8xMRu9josuv+7b4%KqG2`C-vxwFJ+Zty;>95?sB(ZGJ0pkH)0PnDDIUx`Dk5(z+aS}mMyWRc1pn7M#n zbgI}{`Ek;BH{zIZIf0x88dG35Lh!_508zE@roJ{L0$_niw7q&wxI^g{xM)+fBh}a) zikCAkCT{h8TR__Q4;|)w($GNXWNSi*>)SFj=JVzrHWxZh&;u#<%R;@x$Jf0eMQM(v zmX5d*{Nu~q8?T3yg3n{9AHFT~{btV5wij#aLyE|c9T^ecp8LQ6MivtJ#Xo;Na<(ga zvfgc_vOg7MyvnP-CHY~oumRYNp&jk#@ReW&N{$q*9Xz0Pvf&*op?G+7Pl8=9S=tat zGN9rofGW8F#|!ARg^_Pij;ET*grXGQR`JT%8eYr>9f;ZO**gW(H8r~7;UNpI}X>_yMY!J2SI~augA}nSqbNbCmhe^xPwAV z4G7n399wvOOLRQYeih0L51Wyqw>3hd>9>sN!g}U3O&Chnn4C7~U2&Pgn6u06glN`M z(ZZYP(m-PcHyB)*vnjXm{o+&d*@2I4dB*ZE4mLxI{E~1@rY~nd47rci0lL_DZt$6J zH?(RvKy>{a%YRg9Qxj><7L_y5I21tmfk){6U2)}{cct-^T*h+S>6hiZ894y=Y?f&C zc{rOQAv6%~_W=H-olX{S1}Bj`s+pDG!qt8qcbLG{;1o@d9%E2|yo6Mf%)sy&6| zv`24t=c0U%#5C0D)kNkdm$BOX@DrSoEu9Qm6H%w=MNC+z=TRRvG1%6sF=$>e0UwCY$r?91&U&ohuE05`t(&g8Z5hJw<6xmH!kZqaCAg z=W!3ExhK^V^pDgCYQ@Z>@_6d4F|#smZ(yZ>HE#>^EYtbVw<#D}+L@Lx#gMbwyXTrT zIlu{hP?#7Ya^FZt=7NLWz%hmjQh-yB1((V;76YoQODY0xvkIU*z%T|_Q7IxmF&^BX z?#>|UmF~n&-HJFC4smi*;>s@aM;L}GBIo6nhoUIHQ`v(;yaIvwhNf8e$Wa8FM@g$o zpr=Opf14{HG3iaJLtS)em7X3E0SKH~I1p%~i84_SU>wkY3qs*QvLvSM1lDyWi#A_`Z3XH*$0mfAzPC&#)lgn@HYR?Ti}cdb$#5kU zGF;`8!EN}L;v2Ula6GF=eA!_zjYt-KhQ0p%^fRUv?RA$HEMl*Y8WIHSGdDaJ@40#q zl2Mj#reOW)j#>Bdb@)@mtZ&e8N1XjPZ`RSG0HeWYS1z{Q%)5>bRtKiE2g>KPdj{2X zdH+RP(d}0uD*6%r4TIvFyH4X(ONxoV$oChUahgR`_U(-eQps6wriiJ!X2A)@v)Rpe zg+B!x096tjZ+8a%#?Z^ff_r1%*g4mL|GMD#G>qPE%=!(CIhno3f>X~BO;4}*eiIc6 zvk9pwgheSmk8P%nOT~Dty$Q<@$=g8Y@VkwMS!hZngIfcO_a7zrU=(_`++1EML%#1g zSgOgXG$ar%rR&gDEWz#vMH$n*k$`fSyz2vGkGs^3qSO^Q5hHS7-0B&v_@fTb<}Zlv z)HU)slEq8oOtLgA>X&N1TxUon)^e7ea%T)L2`)HD|0L{ z5~~WzneNRr`>J2a>-y4g8fIrlOvT=~me)JCO;s!ve8MjYmpZN8+iv0IyxclKFYT zBO_{IV0tm3g#*f8HU-##Qer!l(n$}KW|)279~__Ky50=Y!F!7vlDVFjFFzQC zpRJovn*YB?wU63#?f~LXa$;B$_P5IiufbaFy${)@n zV&HSQp`hRA-W6^_Ntll;suJD9)u5sO)1JPo6Uz$?V>Zpgg`%3G>%RqS%u>0itr|8H z>|64ZdFUMF@XAT?;EeaTO`|?PGN#KDm4kqNP@C5XH6G8HA;v3rmV3^nsPvLvkB&6ydE# zvuKN3am^2--WCrXlvx(Y7O4K#UL!?IwV1yI z^LOh;lQiuU2|eCNEw{{jXzm2!1dCX}hh(Qdqd4^5{{UYn{V?H54V$6h2G7=@kq3P| zxb5kCg9ix|QWo|jtvyH}dMHG7Q=lMg5hvmnaJ2A3g%<$S0T%{;UB;gd16>-t?Fymn z*>>3LF?SbMaGrU?ZumlK!DfT^{pTsNTSaI0t8m|gbLA}puZw4Db6&6tltFE5GJ=a* za8Z?|DI#u2ukKF&=TORnhQ~IL-I{a~nfdHIkpZ%(y4&GGkK-z)eVhj0r{!6=zEOwh zhG?jpHDqz%z;(Ijl~4f{$(EjHE``(wj*|h$DNJlXjN|rCQd1EiTQ^>2QY9TJD){MApLk`Bq%Bs? zHqxLRE^MJ|!Lynny5^kS1}7)@)E+sL>VH3-e_E?mZhK3OO`GW!1~ml1(A0NJ(B+=$ zW_nN(LR0vJfbj?iJL0W$WP>+{!ypH=5<}6-i{Xd320z;ye7G9H`<~{9hYv2?0dWHh z;9R9ytC|Jl*vKzJIemI`6T3EK!*^nb8+SL+&;T+N8|FgWVzZkSQsO*i1w`K^UkOpe z>9Uh&$@H7dJpyRuuJ~|vOjy8a;Omvh!>EtT<83G<=QaiUbB2p&}7{szj(P92ZUVL`9Jb9BFC0B)3-kb=19@)=EwyOMw&2Q()ffQwiYQQ%L~ z#ZJl{CTDF?rF!F0>(39Kvn87MgJh@%v&CAP&Z<1*st60;alZKv4YTNhRcG>IQxtA( z-0|IaA-g%@IpK-K+I%60K)#&60Zq3n&FFBrw498++Xm4^U#v7|OYddH9W$6?(eT76 z6v|0RrPZ#=0Fb}W*1^Fd83FREuE`qB*b-*iEphi_3MaNhMzC5*g26n zD;%sI!c{yV=t1WA)y8a)F!J=_ptoUll1`^@X4DcMF=`U)2eBa?Du0?Lr>LlNREWtvFK zyNs{E2YyLtZTOwvk@hQ6++`;MvPlQO2maYZK6a>dndE44fp54&9lG`R@M$y`8A}-V@JE&eOew6KDb-ucXqcBJzzNA^*DY+ifef@tX{6*TorO z*Siob+-tOl9jd6d^ZM;OwSS4}JtY0?OUnhwj+dsT7RsPg*HnY)HQBVV-^vO=!mGBm zy9IMlP1{nZW$Kp}FUJ&XP}gUJUhN+8&l3D*3DlOq(|}zVTBn=OnA^v;M2sKu?@o@z zP5Mij!V0Z$kx0<=j7s4QBOj6JnxsLRK1;@B!x!Oj&;@lPiNdM!|jfMa?6H&lvvRk zxN8vy(nU@B0@|meTBap*+t-1A^tCR3@+%E0>6f(j#DI!nHJpC_S?4!Jb_>C{cfkQT z_XO`uL3zOcHi#IVK8qdq6s5F+J?_TyHVqqDtz}pKG_&n+!7<)u}}F(}y9HETPE8e;Aw$AapfKQ;g1)%GK`mwzlydMVK~-%6Nl3-1MZtfsSvB zpkf7jh@*p~H=O{ozT!~!pG=1En9_4BCr%sJ)uF$0I2KuiTV*)EAjGUyT?7{g536y1 z7Z`V$8Msh(nqLl5J8)Z%4ZeVzZ}=CFc8V~A4^_BAgC*8E`LE39e68Nv!1crLe$BSXS zDCAJ;8#J3A36ocuUN)hCymZtu8(bqFHn1~V{R`hZLQ}|CAM*$Zsk0&p*Nurdi#GYw=)Ti{_?@UT z!e2?dKjYcMmO?L25RpwD9B?@&gXWW3Ucw1KXI;yJf|jaXkDsXUn$ykvJ)rZVbj{r` z&{RcL*eHnD&je>A4#?yY#{Eo**73lPYdtmqmF3+P`F!JNQ(cV*`0K~c&PAww`&vK4 zy2yxrINrfACpM_7Mo!>|wA9Z*~<`Uj5G{p++k!QOChg?k)>Yu6TM7 zrJ1ABV$EAjD=mI^&3uEM^J9s_cByQaoR;&z3X5eDcux*R)?MAV9ecML!-n7D8W&Q+ zf;05*BakkIgL3b&K(2GAU7OaREH>3Muw>uB%8A5Oqp7rXvVM;FtPHjN_=uyxTv03S z^JNp^$nBAzMUi53N%@M=3SP*5tt&W-r`p`q5pLd}X?bDr8x6xcahooDeJ6_H#&=m$ z>A?{t{>0r+wU%{gxv#F|BG6@YD+#wfOzki0TPfPotmUYo97eVlnmJZwo|Eo+0Ro6bDK;n@tjl z^HrSaJySSJ(iB|02biKjdHV!r65V|}XmeA+O35cn!BNOek}k`nM{Sdk7d#u z@%m6Fyut@w15!17F_`6KB$Z^*!ohS|%hNzGw{4Fe^wAB054=oZ{k0~XaJ0|5;oUjF z7HIJ;A;6codXr|yoUHSWgz5OvYc!Q0Mwxm!X?2wvM>2U-)a1B=kijBB{aGsnUJB_! z5$46O6U|Bs50srZ93l}(1ADy?H{RlZhg2-klQyO0y*;F9pUWBf{2=k6xqH7JdkDUl zze5{$IZLdvdRzIc#d>DtW(x&iR+J1rue(`_mZW<-2agj^J3VL{@6^1BA zZ+e@?E^eHforh4i$x*)kNEp`1J_3(wAoF@zVlVQzY1&3*1i~+llLcO-XuM37BL;%k z5jQ*{H2r`X-k44B&o%wq8fZTMDASQJ+tEAv%D9UE;LLW}8 zz!N)&F^@;I-Lzf?AOK|0E1^o3`QBsR&AlpDh^H8&n>hyrsQK~rfSUxKhw|7!=OhG> zOjLGNTazy~SkL-T|CSt*kDX#Qdq8w!UiK$PFXqL-fv9tjAt zQQo9tjfsm-ed{Pi$MP~vE8 zG&+P@>iNPC^$X}5@f?wbuMc{aqZK{2o%tArGcHRk5r@;n!bFQOP9TZSH!)HjB&clA z!|hWp1jP77U1F$-qUttOI>75k3^<^iCSnH}?Ftsm1!IA;7G*|xOGL09c3-3r9Ceyv zyt1FcS^Gt*^=D+?u<%?yVDomR zI^d^ulSn#O-1yw#ZS1A$FqDH~Ol~h{*zbT4w?tk0Y!!8prCpAOPq!&(vGQ5ztR2|~ z1hZ}3E~f~rR?D7HDYYkhuE~~PHBl*yce`5f;N?;emv@3;7mb^sEX8=^>3V`av*H@P zJ5xGo%t*$UVitHZE<869D=n|DGwBSs2mZ)Yw|cgZL&>en=#vw<>}o}bli+x^QdR1z z?x=PteiMciRl`2;^k@O41Mzj)8+%WU-eENKDMgbT3qmA%O7E$iwIQ{yV%K3|~8wjES`7o?lS?SSl;rKn5arMP3u7uKWrN$`eMaXKU9( z{!Z62A>@dE+KdQ<`ryFinD~_SrS6iCk4#7|L=0L5^eiSEG}at{`|!3`+p#Q^uww!C z4qtRmfz0EnGV`xV0jy2=@DCN>Y6}qDWp^N5PCprKK~OQ4D9qrz;P9Gruvtfl@q={` zzV(z~Fc2QSV3ioWU38sJ>Y4OY!+jnH$Q>%lU=R6Ww%@p~%OP9azT7|kDjmQ1)(10R z*vBKBxkdbunt4oI(Z30qV~x?R5B^-9QbQLBt5j)}l7j0_dO4^agH&E&Nqf5+U3+X? zv_Ns=Hz%A|9m6I9^oL|1Dw9`UelkXHO`GPySr9OBGN?_KR?6yvsj)=sih+x^1~ z6~7tqq#>Kax*vJHw6@WAAbjs*(CSZCt{_y=s;EgVz6gEyn$}Yog;($0vr2N4i7kw` z=9HlsfOGgu14T7X;E)4IQ8-g04OP0kHhFLJP2Q?JYKyi+QgMm=@S1hoa}A-eLoBGQAkTS=nnpvz!!eWYJYe%Ud3qg zajN;=dm4*F!8Dun+qEHRNGc@9C4TlCk4%6)GV-TYE#GLZ@T96cr()6fY`puENzd6b zbr#a}VeE@eav9}Zaq9=benPHj5O3sQt0hWg{loTn-k{3+MG$uP>vdjVDb-h{Pos>U z&8`(n`z}w07d^9n9Mc#)4fRN1ZV;`ALD-zwpJ&wJ@u6$5;6HWX1ry%%(%1N%NoGE~Jo6rIm8}OF z!B;?!Pm?%1{pK~NM5FLFMpmU~lWufbHu@VjshE{Xbo&z#i{=}PC@nx2rsXoQ@SB_% zBc;%^i3zL-;)84Uy?d-%{-}?xXhu&tA2s_7jsn#KK}BAXG%jth%`_N`5SmH$cM`kA z2jNCOwKT%D0t99m1&?P+2NFR8S1z_o;me?b_}-gX;4)HC)2`7@wT;+i5hik)mG@#= zmdzM~LaY%}=}0INteQ*v=u(kRQW9B|oMQ`;LLqV;lcFG$Zp!n(m+y`63#7QF`XSfvJd4hTJMH zV0@Z5aa#t$yXNwiuIR~R`<(aB67K4a%yZbD`nrnv6iKz6!BAdek4H7!@#_*hY#{l} z-v_Ju6%Y#Ih>oRIV>p%e7B{`va^p_I(>vg~cXV24Jg?$M?Jn~=l6z^qln1Vn! zyY1_q!xj`2`MaO(VWg1YnDbSB{NlE#CRffqH!G99i{fo?PSOHzvL1qIN?fpgns;rd z!Cir@FDHYg?t4t9WFro+O)A#~?r@1WGd4u=EANpC)Z21*Q&2Ri=|RCU(&xR!Cigr{ zfz31GRWEO$sU%Fq4wfl{WB)B-;=+h+(RkR-0$NJIkq4;y+>V@>L%8LAwM)<CCzm>UAiGE%ok^(IQ zkzL!>;NswYb56zH<kK;O#N%CoU9Pd8B z4-Wsu>KxW8scE^(f#M%wQVvh1WHx2Lq*tW07uz7hWgPcBHAUxagXj(BwL`H1&Km6+ zeUfr>Kxq#U4>ENrDwsa@D@uUl0a?CU7&YTAvbqua^(#k1&dMM9tXY3ixS%qQjl#HH z1H~r~3rWXys_g-;N!MoNw0|5U((*30@?MW&w0W4a`7^g5DSTb$qiA?|h#U0V*w(MP z6O&@i12r^0EI+vE`6{N+D=rKRckKZ`Sgsslmzkm8TF+~Z{L@kE8kYwTx_Jj%>uKXj zkGHp;nUg-5U4FA$I!SYTiOb6Yw{u&6RF0Kv>Np17vtx3`lnr&#Kf(jV56gMae61Vq z{L*|mCbp({>lREL0^9xUbJ%n`cJmJKaKCfEYajEE9E6W|eC#P%_Fj-he+_n-;`*Uz z5pLHnA@T#+ZkUsVaJTt7dVSo*A||}UQ|7zdf1hN*|NkUg!(!%wax%!=et|XN&)7bd zY83b4ZUU{W4J|yuc{VM8mRF?mdd_i{41iWzI)YKbnMBhtxapyzsITDUOquzPffdgX zE=FhfqA=DFCIJ3o@zTbTxeM=5yYlo_3R~5$3Hs7Glxm}m!OA#HH1fmzl!~3&9k&)& z7obnBNmB~={ed$GAqae;9?O1;nLa(X8FG%z{Gc85rVnb){;k&?_ceg3ECwb(9S*v*oHxsii;11+E-6PiHs{gL z#nK&m@DkuD4eMALr?y74H8)uP@bg|cG~xA>Ue2#B`Ufr@<1~*nJ-N9h1n>s#z9!#k zWXl`;kv6@vSI#I5`oz8hh4&NbV`T+0N{pK;0N?SBX?e>)C=o}`&Vc&GEi&`}5p_<1 zl|@Ut-LY-kwylnB+qT_tI<{>)9ox>1*|9rj-<)6fZ9cE{FlSYLHHPp_ayi{cd*HXt zOn$`BPA6@=6>CG?e-`w?6 zS=F3xOqoyb@X#14zef$IEp_$JE==cA`0@tS3GyoT&kQ4*6=`MyRhcN7(bNaNC0;4^ zFY(dfa9sl7+F>stemMHa;46|CU5$emR&4PEQTAKw^7{)!>=hK=I(G_f0HI6W0@U&B9{<|sBC^KMLA4|ZJBNZC}s@PgO$)* zH&rW9d7U3PxPMZ0ztInw`x~&bz6w(Gb~M2prp1?lApOnZ1S;@;`46=jCj%@NmwFw@75~H1!}a~5^1=E4LI878V<;U zASyX6W=na^nbyk!MXCX<1~cM;NW-FG(U9JgVvU5qbu-ccMM6Q-57MG5xiV6K--~Fx zAua{MC2UBF#kF*kgo|iTXB#M0i)8C1TdlV|02iJc6UtXrA++1U=_do^oQhv~i+zfB z2O`mq_uTt~TB0DIBq`qM;I4u(IpAT`AjCR@MfN~Kjl}^LI2FOc3B`fYfd2lx`1M&r zY#Vw?cgUz;LuDZ%DLe=DnHsIv*>4b;j%n6p_D7#tt*l!`d!^H|y^;ybtGe2{*votP zHR!`v6TFs}av(XE_nFN`Jz7qr@ZSk{eMOAFzO6>dP-Wtt`hXqr&6PKG>{WyE3DUZ^ zY4!Rg=Uw}1l8$B8(g1LqkI&t!={XhN;qNX9cp0zb; zCs)3KH_0fN0an54+Fj>uusVK_uy)}{S-FvSGw31-cp0!4y0O(lN=dBQuc26{N zG9zad>;96FRisb-9h%L9xw5RkGj?eS@@VGJ>`(MWeTf9beLjFq6;N)q4nrm;O71|u zky5Qf*?ZK%h?wOB`5CZ_P{B z#o=5t4}Ed))upRB`>I{j3OwA3#gnWv2_mHB*E z-3RlrMb+-?RvCdLpnfnB!N>i3L(0<#CqEayXB(BNhj;Mp3N-@hI~BI@MRAeGnT~|s z3_4WESy<;G;vO+T^rm!4gz0>3!Tl{@yEmL|WK*~uMr-DFZR+ReP%agL<-gT}`X@p) zV)$8}{jwYA0oV7|2)_G)XhD%uF}iumpk9=lUn($-pp_iIo1OTywzDp&qady+bZ4|o zKmzQTDekvq*70MjH9UOS_o^mqk=#Hr*+JFmPec5$_VtUE(MbPAh zAJL2pl@#+W5~jYOG@w)H(nYA?o)hRrOHNi2t$pR@Q5Sr|iKW~g#1MxF?UFEc-;vW^ zgGjR>v@s~|&W*8GT{1U|6DQZEn7N$YQ6zzu*zFHag(W5Y2jw`=yOVFo(1C6qZ|tL{ zVSh~h^+A2$3#dVdim``>2sY+2>+GAparbVA2N>RFyONseLo)anB+j?|?%y*~{@~UY zbaMJ!3|f{Wx=F$HA60UU!2AOI#XB07vvO?5?f$0;SgvLa@+C%(a*Vf6lCo~JtuANG zU$wD`N}($AnDT5G+9j-G!~`U}8<3;-UJnbt&SyvWURRJ#zG88eIIPI?avv1?ng1m9u63yfokV6t%&Q7sCL?G1n81`J36pH5(~6mdbzBm8qqm zh*BD;^o&nVu06v?x~g&&LYWpF{E&=#w6}cb(fif?3z?`$1eH$FBZG(WSf|1>B$5gZx5M&8XeBJl=B)Zn%j22xUv;jtfrUJF@oUlfIvQa@^P2giT7 z*J?uTnKV!XnveHTj9i%nES}yYHd(0o=QSlW)o7fpa(4;L_?xCWP~!@qM9*z6ekQ2hUgu{EWhw%_4;v_ zY*F{3ri}$7z=9z|x`%Lu+VQ>+1$``je%lSnr4R!!q&1kG$U!8V9>(eM>DYX&g?U)q zU&040pB40EM-xzb%;3$Vegyw;RBXF*jY3P3*O$Dzn)BAK`Jy&ry zqUj`=O#!^FIvn)Vh3>2mxpC_!=W+>4q9&%9i1@ z7~)fBz1xynIt#FVCqe2}BFX(E2BP*d-H*biP3EEop`z$27pDIE>kV`6baowMPz#!% z%4=-)1CH2;Si-1*u6sT>18~VR4~z$27e?rx&}FtfqC*U82e1>p^X6sU1I-&kFzd@t z*oa4Y$?0Iz5;CVdC4@X`$(VU_K8%LA?EQ0y6yx^nN^|EOq z`|#FC*rU5Ao~4}O5N&?(Z~jvsjh%{n8ogs2UR+%P20~EvV?bzdmuugg$;^vcyST0r zlr@_lsp}>bAk=X4GQ<<-T=CoiXck@)MtYbS45{8&kCrJs=&RP2*KdypK|!+L(csk^ z4sdb=rTEd9XH`u9IuhAca@zAek*69K%TGeH8n%jsyTLTvAbhNTM%yJhv>9BOL^6Rw zTWdJ_KO-FW{!htMdXKyqPdI3Rsiv^VUoG!*)i zuW^Bnxyx^xT3tQf^k1}E!sHIrGd4J8FJWMQZT8+25LM5B$?0YQ-7;Q{QlP}BJY*F& zvhKMamwoZh0hLTyI8L4pN19Ot6G5T=ge2H;M+j$N`s1wfVfyAbv|JMSGogA*;zeCe zE}?Ji+CN5`4Bg{ouqKrhuBz06M*;3%Zi<(~0KXEdo4~0L)Xo;@f@e7Z>pYASVz6di ziq}1*)0=Sk&AVi(^2VBT6iO&oaa%PIl>j~q#sXEemtDswW1zCOkrDM7A0(dOpqX-Q zy(+9a3EPOVEwr_D&heUz6wiE}qX~+&f>fetxmOlP>uxRwt2M^U)Wd>x};*7^Hob zqdQob`^J7SUnF|&*f7*gh3O~bwm4r}fycVE^B1L)eXefHM&H(bYGwVR@t_%%GObR& z7h&SHDV{UodzUerBFzCs~3no8lg z<0cP&1p8%LmS%RhYW^zCq}-|gPOdBg1o;WjO3~`nSj(bDi9!eE1vOh%c)C0nc|YAx)k+2 z3hU~jTL)aTD<*pu{YV4p->s#K-^VM#?~^ERzoqVAFj*c8%kDwplkZ<)Lk$v-uh{70 zg{ZlMZ>)1odUg&u-KeU(w7c5s)wi7gHqAIfgA7sxg?WQl!+Z#-|Tt5l=`6=8Pu zhX>ZCr$lB2?Qydfq!$#{}sp{Gd?wl`uo70$6W#9gv5N6fgQ)WQQf0m9g%a(Alj|4|9S z!-D%>g!%1f9vgw^+1R1A2Zls{`0s6dirU5I)bi!D`NHcX(fs!fft2&(I^H;N^^U6V z9qgsh(H9(O=#Rpbzd5}7p^0^Ou!1_oqm$e3QPHA`!7{ z_bG+GUZ)pIx`8jkFCotAbx0DbTuCbu`0f<%)mP~5Vn#$F9ZawQdpNI8T&EjWZT0?7 zso-_Q+fpu<-?tVao^zU@B|nrUpt^Fej*Wsqlvg^2J$r;k1{-4jo#iXuW}d9xEsMEw zySK!|ZsbVXqWd2=4f{b((^F~Tf@(U-J14giKtC)9%AsAR;23Pm-Htkhxal0ch=w?J zUug}F%T)}zLqZd@lFJ&fQ_NOa{HQ|0f+Bv%gvxfUcP=O=!3p^(gyo2H{aW!Y|y9VX3jRsT!c*FLzT3pIF#1D-5>;SgfTmk@x<%2n$KVv&?D}Jcz?SoBW|2MCobi0{WCY4)Tkzptp|zI0el?T0|Owu<8x} zF*dyn2#_H3BWP;0H(45Owmd@N`ghr-*{A)ew;jd9e4HV&3 zwTQQDYa{8SLqiv^p>0#=aKN(6w|wrdsbAJ_`{&YwpD;O;ACWePO} zZ6T2(%lV_NmWu}qN6=ljQF+E9W%0xH^gg%oe#A6g}K47))fHn_zxeRa)F z)A=Je1STe$n*`|(EHxzVF!LQCGg63F%cgCUx_A7Gwp3<2qdC4SiA_TW z2;7m3Q{vfF4{Wz1{B8Qz4&qLS@SL#Rq|gY{Q}J0btO zH2M<1kQGy!fEUHt{m`51eak?9FvUQYvABJPtxdzBM5y>5$1p>)O(>c?Z~ii!lt0=$ zl%mLMZ&(Dyid(iMg$p2F#t;(`SXaAI{QAEQCne!}8wmjovj~+(rV77SRTc%!Ace>A z+ek-xxmv&w{|h$ecl5ueN?dM6djs@umi^J$`1kX^EJOBgN)-05U7e#bt1-wnI7J+J z;&8!0x)m%f4N6$RL_BJ=c}Qs{Y_%)Q>L^UFU(c|Y%0a(g@b^7<8y*9`$LIAW6OY6X zJv|+JC;y9nub9ch+1nLMx;&yam*(qjt|#hOuKZo)Tu(4k@1fvFIFT2X!*4gt^!mEP zo3CSYeqZyD_1D6n*lhhhNH<6@tb&LdirzDuO7j&eEp@l_{G1`G3jHN7s}3`Rch!RO^w|VRxY)t2|JO_ zwrCNF1mm!JUtsI>cz=EL9{y-%WW~)Y0xA{a%8x9R1W?5NfqA5{^f~qH8e9%|H3>15 z#c1;kDvm(q_aYylnoWBduEyDME)(adASlv`CR^<(EzfjEQ=10&!g8lq{aDGTxxG7C zb-I5-wnQw?$VD**k=8BMBo;PPF%G6b4@Ylrr_@ zhfNjS`%I9=!`MynO#+0lB!YXXf$^fdqfH5cy5%VUkvpsKvN7uBxtPo4xkuDvYu)FU ziMAFf%MB-sz^Oau=k+p?^2@{4jIA7-JhH>?_AGhf!cRLTJfGUS>t>_wu_d5}o+H}+ z^+6ldy(3N^5iIFE3oC_%_WMLFI&?@S2)cILXxd+>4?J1r@>(s!`0X7Y=R9gs`yus+ zI-VofW`SM<&@UnadW{%>?DYic90e;~SVly)mnqVNGSA#vu&`Q}7jxMSgKGDS7@`Pb z{1lBIeAbcTF zeamZ5kv{$~j9W4o&ViYEPG>{E#2#393YZkM`|lq=+vQqqYxO*=_6HtXqT@fjAEQ{J zjSR%K^?jy2f4;vB@8oYa%RgC#@(H@MkJ>>HXC?UEqvB8XFp89d?|xZ@Kq;oEVEz27 z%bzyE$yG^?sQjH51*#%Bb$E0^mGA?|pXV#6@qV$;o#Kx=`kTCVkzM(MSSdqED~(6n zy?>GarCL_GNqW@Xe?V>Mf%AKk3D*NqC2Pm90SAvhL)=Ry*FOdG2$D%|&ydhV@H~?3 zo9t>TR-pSOKK~r*fSP)Iv-Z}Xa?u@YC|+*ac)og`tFAb6mqn_ada3Wn4z&oh>w{Qe z(XFEu+J$+eVpB&y&$2EL%X=_?5a|kW7aK?hm;CiE3Y!T8qgmhCM>q3e>n;S-+qym| z#jE)&F^zl2OLv0^DK<(1f+L9FsgnRjmVB`<_yD@Q(?Bp#&er&uPp5OL3gDT1jGT8hN4m?3qLs8Zq>hPlu z-sten92gf@kS$jblb(W;gZ!hd=%#c*E1{*a7i6WlL>WZ?(7*hie~8VOUG-oK?gule z)z!R~fH+AoEAbEjH0rboYNeccT#4nJs}~|!pbzf%?vCBM>3WmhltzPjR1>*OtO+Pg z!Z?lrrR0rT(T`;T_q?iIr;6-z|jhF;DcR= z7@xjZ?=P8YSPONGwfOg{KzU<5&n5JX-Dhjd)lsGJm3^CSi`73Z_=j)N3{z%T@Q54K zs^R1q$Ysg(wq%`c^zCuBJo5B+d=VZ((m@qigLFPBl?-O;gYI_lQ>F4sNTs5%=^O~= zcuP#FcXMA?{J)!i8GgPxUv6zLt0j}!GRMGC68M!4BOGsG$JdCmTo%!B%Fq%?Yp*>( zU4N85)FyXu9lia!SWc}A)%;aPo#wyw9u#_xO*c!U+-TfLu2aPhbQc!cAk~tN^lvYF z;oFS)_T+328~#QqWOha1+UZqXEg?tnk0^-t#?ba+=s{KaEI-5k=x;}%>QC>vmHTQ>1K?Pvbl3+I7> zA`NN%je9UrK6h}7kbP$ua4bT;w4`NVcQ942H{^Pvp;Wh+{?kT_=!8k0%)0iVew#I< z@3U80?vg;#(HKLDNFc`cURKLNDg%ZAUlx|zpHbB5jkRkVIry+(T>%+214z;Ksp8vn zCXeIT5^Lg2m^$D}jg;Ex3k+CGiz6V@yXV~3V&P|zSEo&#wb2x<)LKXg6VTEKOG+;~ z*eKfQVMg1_6A+d$a%CUc@8Rrqh4gxDim@O=KVqA@of#eVa-^k;Q}dQSf1lm!ppJB2 zLWJvk^`!T^=0p5?xkJq3O)~L|jnTlP$d6(AsYP?7kVF$uNnosnsbn<4D;w1bLkuEZ z>S6`cAY$IO;f>6#epGfo;QCxSJG8}COnbp}iZED@5u3%lHvmygfAMI+s+xDCCS?Ip zDX37}1f)lB1x(_CNVg&1=psH~rFK3u3riu6-#Ah}QmSo;8%~()Q1#uZg|K{nE5H9R z;LAZD;9@vm+kty=SmtR9pY9%~R&}~!Nt9JMF1zYy$~JDq-|dHTwym&h6^WUclhLfg zrv=@p^NsL1wkgvxKj``%s^XOAS8tS`)1qs?T+CabHPQD+G({ys^#1PCdBF<9Rs;V9 z+Sbw&Qujp+BTNVCfrB}LoME5^VWAPcu8t5*58}wImSr3co+W-~SA4FE?QYVsr57zK zBvNWrI33g$5=ShJtP@{R6GA;G!zaO}AbwU4jnE3CTy>)r8ErE$`qEI#n2wb6)tGV? zqn?mbNsK6M_H(jaZ3vb2x5lIRj;6yY3}J(fjVwloYecwyv2bNl(WcBoyb2DSWfn~u zmbOd&AkBQS=DLZuL0CuiIMS0Xj1JbIIz)|ZI6Om7MkmYO!L(g$XDYTiU+O$J$%&P9 zB5f%v17a4*d}1%Y>2L6@-z$T?_MD@(l_{5+*csC1w!I9vy3nRqMjv-TDCc8rdNEk@ zygQvWi{)eOQwvGLKf*fO*6`~VDVy5e>4H`0g$J(k{i1Y2_x_sdu$fO4=s#QP4k5Lx zWGZ&bX3*G}x$|-OuysfiZbfKt|nHSYbC1I(Cia~q8%}^79O&bxrEF`1-T89s{LTGTD759|UjN)^R%&;pk z)k>pO4xWOgJ0b0*NUtKno9cKcetCR0N>&5i^NIIH<{a+{f7Z;Cc$Lxuv=REBmd>@k zu56+YV`$1Q`ic57_Qr0SoV{G5OEJ_F*##lh{Oy6I4ExhwG{h=|A1jBpX^IZZw>|;m zBAvW|Hlik4PE7A3-(!jTd(wy9NTzO>%GJZ}*n3_u;>Dmwm17$S?i)N2EKN;bexw|; ze2cs|>e6=%L!5;irbDg3njv0z>^u|$9#9>w?!GsB7m$l}tXFLX8isbg!d-GyCZ=+) zgOE7ItvcZ!I=0BzDXze0W%`*lC~I9wS@^!7t(a}avG5s=3i8cs) zNA7i|gDz5SsLFZ#>mR#@p_#s>*TImAu4*(lmV!T?c%wX@r2RP>z0Yu`%3Ik7bQ-?D z;FAZ^q+h-eP;YGh(V?n|3F26zIKV)r&ZkN-ER$sf`EM155}^N14JACP>0-fjt!rw9 zhwL0e8QpjjaJvIGJ$m3HfhKuzNptTD0NJZ;b*&mp992%A9j{lYk^pP=GQ(R?cU;k9Qa1D>DwxnB$h;Onh89}d>70&^O z3(ou1Nm;4R0JAo8iFnj|f|JwAz?==$;#tBkRA*Y0(cDlol%Y&znmHX>X*N6VLn^H- z38!I?tQc4r8u&$2=6n;!@v&`4DCyoprhbf`+19Z5L> z2)B>q?RAO>l`n*9>R^MSTCTW1x`{;A!e66cIC>d=SYc?KVHm42Betwwh=orjU)tjK z{&?9!+0|5&blI4pVwQ_XW@~WRU9sAIoN!KPPcXs3ausm;T0e@g68Y+C{a#joAyf91 zC#&gm>OVEw=xm3->pKPs((s=H)mYmM8n??AgR*NQx?4@zi%;`>A#VsRM3t&KbSZ?% z4VXE?gLFg5jvR{~8s?-q-a8cv&h70* zK7Uv@A`+>VPJby^-QIy*7{ruBHE%40(BMQkB4ZchF-kuZmN5n#D1bRAF8hPH#6*)W z*Ckq<#=3={y%@Y2j)C0OU9Ve3YQUq>zB^(&6`6uIth0F$ZleN2Hp&fqxM2_*1w?i( zDTsf}gQW*njtSJ43#8T~B(&S!4#(N~Tqlgq-3XYVr4dpW*Rs$U4R1yHB07Zz@jETr zW?%}ze61Dvv4UOUuFsEjgo>!;w$?I;N^#WdLMF_-YT#wPm!cr-!KHQjoc@k3n#Sa!zlEVP%LJSti)q^gE8D^}VDmJ?G9fGu#b+ zq@(a9Ke9_t`skzM(ylJ)3RwlVsUWk#M%sA)8yW{?Quw#d(V{U;}qcEyScc(8__tnLli z*TH7(W|+?J6Gr)Jll4F5^(N%McsrCMvFyDIK#yZ#e|XQth^}hneZdD)u1&WiJMN1I zubybA6%dY5Jg$O=qrtTHS|exVDePE(P2_>NzoVa-e zO-*03Kt-noX8``F(70t*^~0>I7+dH^?88P2B9-FAvi7IZ3egHW{naPFR^I?r^Vgrh z|EWNTL1fvIz>;1PKnCm^V{tjQ&tHg}*bY-8Yp~KANGqR%oE3z(TLhDfI4kWolGA}+}+6asg^_mo-cu_O&bIL0}ygbAF{6WmRmi){G znY9i6>k*8G2Fc22Jk%NQBR?4}I_fSJdcR<%1J)TYWqaYm8#pSbn z*Thvkd!6YyTf^{?Cd??GnH5wGV$?abD&#SxRi!U9!@nA|1tUYTK*KIkT)FZ+?apKM z+!7U%(v7ECX`H`@VXe1TSh3RKFrRPIl>2^ZK?9pdJLgT8%_9RAyScMGJPPz=*oUfo zQZ?K4xa~op?ntMVt8@J~nqPVi!50xjgHg2us`sYF#c9!?yEE8n zCXcV2T{FGJxA1zL66zA7D4mB&_#43l;lU2%bA>vr}kn4)!fC3|u z^0i~lr7?<^G~)JDldepo#@bc4zr!PKa-kY!@~3S%Gsm`sqwZFJHn%SDlZ`cSZEH$b zLHZo;11x@{wtB#_^ANtrt08Bc(^d)pS$^Oy{0ZA^wFFFnm^^>X;URKm;)u*-UCt9q zJ8$8LX~rksY|miD$olISHeRx*v+h#@RQIUUN2={4vb7Q3xi-Ky>fP;cF5UIieW2Ji zmrpMrpWZwgrua;MJ^^zrGI6B(`Z)J37M}ZB3mUelTAI_oByMKq^+%e~K5erf$5REF z%9n5sOH_$|CTMBwO#2ZKgRJ`D7YdUtm;J5sR{pv$#D!77B|vME_1ZLRq(y|IPA(8K{V zvZzGMcZKdeFSdSWykv#*?~)7aF4d9gFg?%+E#R(P)+q+Or1Iqiyo%196|&)`C#6;O z43}4EqH({uNbNZ^z_&Nxo=jY+NHE5>Va0oI@4Ff&uJc=yc1&<6^MbNBC< ziM9ka$|Ks;EV?k{1UzDoF48Q2V8>O{-7czKdWJ5GRgX1Tu1;4qD(fqFG+tbL*PWc_ z(CC;wj^V60iyt}4%;PXKk!JSpiM66ZeBH;z+9$s%u5w*K=<`5Q3kljG1MtR1?|Qud z=iu*hx!#QSOX!K67i1_Cf0-YHP&Qm5$p_WRRx~O$kRGE_<%=H92!U{%UtwF56cd-r zUUsh+HOBF@8Oy})KmqHp6}eq*gS!=ZkPgGyyEMjfw(Sn>d70S&=59x9=*3Zyp#nk^ z_T#b#%K0A9z~3H;2IPIowVX5N0DW?(?2l5_>*Wvqb&WgN_ZF4Sq7~K1-5L}w2}PAo zkYm@a6&5}PH5F7$>1C-e}oH|@Q5>Ag3IK7X$zAZ#=x+HPswYHHk?TO=kye-)^L zK}#c2VFwmA2hMO2x?2Rh@?L-sNhQ_xbB5$B6RJ+5Xi|U_nxM2mjDo?)Yg{rSQqEzB z3~$D))+B?tbxqO=nX(=F0fryv!eVJi zUX;1DxT-}k;eH$<%9a{OecXa-_+EtCu?#7`?$2fLp%-~i7@1{IQ}!@A1s`c!&D-U7! zJyCZyMTl>{p}LLX)Yu^0hyyep?Y*pM{Sc7=R78-k^0C||^7-?7Rfis>3ahEkcto#^ zpesONZ-YebS$*`cUXs1E3GntS8D%*oGcpXh;LQXlIuO#3k{p2j5TM5iU_1Q#@HP_9_*Z}}?p)^8*$PiP$~Y<#zp&lWKW zYUX7D>$7M=<(Nm2mm1g16GyeR0XI=40S{6DVvfd`Z{Bh0D{)K74h|w>fwaa>8en_cs90ZCQ4cz#Zlno5?Gb!N zq3%s~C9UZ_&hw}|z;Qq2bGg1ZW*a=ZrPoAQ9grP(TPbN+MW1NeQfbrJcN}^>aD@ zc;uR%hU;WgzUjL@wgA7_;0z#OO8bWT6XC)Keip8tcXf%-WxGmqoXh+Lh3WZctgHU4 zTf4cccjA+wn_M?pMKkJ)h|yqL6T!)_h)!8MjNQo(7^1*2$%s(?+Vs&U8-@p-iW)rJ zgQ}s)3~+DtkYP$f5j>c{VV#(g+;P{>)-4W3625iy9bwJ1P%p=JG#M9{rd9bE@nJxX zQjgw#6N9_$xXs}hC8&Bp?W)Oa{pyQ$bk(o^5N-H0?6POHB56QGU)*q1%G1#rRQqB5 zv})IBSORYi2IUv8NY&$il>}=pPruvzSI^M#+(UEO!7v%9!C=m%b0S~CG4Uv_=7F2U zU0W3)_fOjuM;q@7Y#n^Sx^U{9$0GUz&EdclKa6uW^FVDcwC)4<8Mrv@|7bq zAStpbvEw9$Q9Oj0cFd<`N3K;f)|3x7k~A&ZT%DKt<6(MmETPC2)3a*ZqLcLC#s-_M z8BW=f@`7l4)yj87Y{M3ntW+z)kmHsKn4jHn7=~#QAM1Gjx$Fz4TrftzL3iYE`rkF9 z>Hn`8ukoIt*BaMa_Pq)HG~o@GbFSuNyP?aKg04`xHTU{nDx?2K=QX`1(3^^8n(SiY zaR`aBxjWl+#Z1LuKE?8^30a%o#)cDO^eccU=2-7P>8o#bvJHnqMZdhkAT`I3P)f~DG&H@1Yy-V1!Js$#LM$T+_o_h7r?dflbEzRb_k27I14h)rDWPkzwW)qpA*%G_NZ zQO+`Y%)^sDh|riJP(ggVmoU3(-H5Q0q+Kwb4qX7Hk( z18pEr#W^*)6N8kCKEOi(D~|@II%fqN@JubF^z^yIf64&cBRt$z1&Ip9MiSIIERoH* zSs>Ro6##|}<*i1dmnAF)ewV?~ZU@D?MY{fCCc4L`P|r87(;e)%;Spe-%-x1M+?XZ3 z-<4a~?u$$aQODH4-0$5%d#K{9pgD zgoXT(k=_dUxD!{w({!T(L^?E7;mc69ga(l4kx*dRJ zsy3+2T3c~X28F!3_n=DL@Fm<&$G<|f6&x~X<&(TIgnuVb(($AN>R{bC@Jzj#)|J+A z3zmp;$1chxQW&xwFzRgKf*68qhdHsxV97ubL+3@PoaU`cwX8=obP*etBlj9=I`$49 z{DMyAHec3A5JvA~Hm2YTROzgDy>hRJ@pN9Ruy#h{hf->@d*U?)AH&7Y1>o1rBMD&w z+gvgMyu=FywgwBLW{q=|Ih>Z*w>tD-fau^j@nV;*ABNWqJudA?5>CD}GQHvZtXJcx z6N^?{sA`|+x=5hyb3EJu3qKY6?%0vd{d#3YW_hJYn0%hCq6N^Zk}U4MqWPY~Z;?q) zhnqST^)&vH-*(u?*e~lD?Q(|5avJm$angZ;S}}W$MaD(k&==}hlm^Ag$|6o4A^Sd4 zm?XM9=tXPRgER|-SlF2A(eqAMh8o_@pO&t>Ru-^9^PUg)RE4v#amMRG zZi%88EGU;Gom z*Y}N$US*q#+gaK!zeBc+)AqfKN9T#L4%n7$oTo>~3N7#TTpP$}+gz5k^hjBF7uHVv z`KApQ0W=EtGxa0a>1;V@11SUR_?p&lk44NIeHVhL-UHgJ-$J!ClyezZSZwrs&NAY# z=1Q#|RMv*vPisGZ?Q6c!@d##%C7|gQOh>lN3Q0vBHH^ zV&a}DXX1P|QacKn)F}&cDVagets7ZP?&|p_ov7W?_BRvJTlYJF{B!T)6#h+u^Egot z2IX23yEA`pfZ??*0cR+5a5(kN(c1UKxcw4C`QGl#_xlyv$DefY0Sng2z#YlD`lA$wqQ=;T9BFK}zoz2?5R$6D7!^Y-$m9iUJ+?32 zPuqGoYI>>ymt-VI#asht9&N(Ayvw3<)R8u0K{6$NnP+g&d zZFDY|4av`b@VPa4O)cCw-F>dj%=7HslM>%TX?E>j|m5Vgn2Fh^)ofAMVkD0 zvi0`^R-LarMK+*GZA8~8x-%d_Hv-2Qbk3$I$LOC1k!HHqRmE%!De}f43z*DoK2@dv zKK&+&Z-clDEGiFHou$BTxP3%b?xMz&>^@Sn$~x-BU`aK=HZOnXo)pDF#ve$f@Q0EB zV(t{8fy3Bq<-Y6CWr zH@@kE1&*5GR2c(<2bABI*~eAX8Ce!d0$dDrTeN3y{~;Az5kFI^7|+yYcub!Q$pjeo zYhr;^5-Qs3&j{q#o-9@h@_=938JjI+SHKNhs=#k0F}Y(25EUB6Y+k%XMij<vm_w zq6}|l%n?(Vu7~I4Kq=9%&!3o)m%cV@`g|Kzez+X*4MO(#|5ev|{$E|2!liB=l4oeV zmk2ebQ6n&vI-C_s9wZ@<3c(A@YR6umGgTvEhE@qcW<;fmV7Me~bv6-M*Te5b-Y;{8 z}yMoO1f|A2Lti{rg9O?|UQr3b}-qB@cTzGM?p+_J6Zbd!fc3QL}LxDGN zWD;L`-UA(fw7+?R|1s-WVl|8@_$-Qs^{ox))XWo~zk+ePAQ_;flBg}|A05GDL#CID zEz{DMZg5l$>h|b*S!KaP%lBmI+!~$ptBTgWmQ~&a3>eDGgve59Da*5^# zkM$yQo$Ng<2Rv(fr>Y{>OYza$@uw-U-KCC>BFTt^Vh93o=2+OYJZr4yMq^-0#CM1h?x~DCABzDn90SVgZEW(;h%i21* zqmg8IJ&~(~@NF6e4nHoi{Rs}FueGqL`3|P$oJr--9!Q}?m?WrL8W!c09JMRBOkQWsvee35P-D)#Xs@fNa3}kTBLMr7k*}~YT7lkesu`@@+JluRhpgA z(q)j|7$Z`%14ypiB%@_$=6nytVWRykT7)hZF+) zODfC&;xLp@dUA-1@gqZtvgRMvOzhwN8qM2c&(?%G09Lwcj-kBqU5@}%{0-T@1^>CR zbzw~6J}a-lch*Tog9(FAWqaVc90SGanzdnBJ~7SCjju3P!k{oVX!HoWWM-ya_40dF zReN1&d94c~MV3=z5cKQ0PtGZTbKrUcwb!{R3S?{~H(zCMP$xT4(AzvE_chv`BKk5J zeAHwB+Eb@7eK|70@kO`FsT{F@bi2vpf>ni&{sFI!_ruk;-iG;&dM ziL49bw>;qCuyn3r6+E|tD~eU4j_+#6cX~CT9CsopaHypMd4Mv*0JY`m$syDt;)NR7 zdQuq~04k*3D)w#+#-R!J-l~MvCR5;VY)FheHgsYhUaCYBgwh~7KuFp=IILnyLQ?CM zr>*|S#ZiM{nl+^M6DLUam|l6LY8Q{g4btb<@^4McryL}CH4vANcu4`G%vr4!=f>5% zf2hy@cgXICq&_$pVYB2$Kb508P{ld8YM+Y$YTJPHDMaWsDB|4{tk@xz4q@+uo>?6# zD>2;R@&|MyFd`=%N$l~`nO)f^lHk7h_pw^OMEU=G6z^xVJ^XA#%@h-7juSElFnk&QC z+_?0l0H-0as){g=FSUIA#N2*1!TSP{EunVo&DFu^Q^;`BtJw}s)jP>Nfx5sT(FHu; zzR`MLK8<#0YitorzfM!P=}+jE#9gffFS+0-RM6E>|H2ea{0wMXHV2U!B%eXoH8`gp zd8L6T{U49yB42FNISYaL_z}6ep=V;FeS%Za3#n$Xx4>OnNp>N|$xq-t#^*aVy+X5912c{B}hV7Flm!_3GcrKa9j6naw&0W zFt2bi#AK6Z^zzlHFJN(sS1ferK+BB_mq-A$Z>V%aLk`g)P?y-|qhU7hi&8B{5p6}< z5D|=AR-U9SnwzKLD7^Zh^R&$En{yEW#mMteFl`@w>esd26qhby!L*3h)7)94G`v2QibP*T3}xzfdLSTJ&my%&EbkW zs{IVlP(Lp0X+FP)JcA+b+Es*RtBpUr;fS@>>RLAs1k|rw<(t(56WxhhpH2e7wrtO~ zXj)h2LLgm2B^+|j(#0QP0G$IxULgdV4L&qBV4Mm$)uu~YI6@DN1RdUE$dpoc4;p-t zz6f?z8yRNB2YLGGM%C_ay+cRqhwgrIUk1>YMNiJ;_xGmUzg8rndRBPIr9rIq#B$V> zZhfs<(`K%ao9JP{#4$(Y$rIctN@0A{rvBjmqS&u_(VM&cpO=Eu|GgA)91VpVFaI9^ zmq2L0OE_g{RRFK2!5fBb`Vvy<7EAC7o_JiFFhL3IBj}ZRFslW<3IU2lt-E)^7JxZS zeLQtO#wQM^*gOo34Y-&O3AUv0N+q0{Z{ZIfU&KH7xtlRG*u{=5!}!5FHlx#8mES#n zX%SATgeVN~*z?CQlmfr@>4PW@MYymS;N^J>fBND)j$K)VUvRKx%K%EAC+E~D(kHox zc3UqvWn-91hQM}D3LGR1({&Y490dv}pQIAmPB6UPK_^YnqFgt0@YXz)pxQrHRGX=& zF{e52zkgXJs{M;mmi;+w5wQsPi71s0* zCa^9lDq2D*a7fyOgoD}wHuHPFSG7=-MYZd?)a&aTAP)N~MAb0_0)Y)(0gzA~LqJ9W ziDt1c3vzDgY%0##0Cib1Eu<_4o<(qd2T|7*Yb{6AKq-3d7*Rl?fwHVfK;9d6xNw~k zPF?CEc08a*vk@~a zLxR9SP+x}}E0jPK@&fD;Oe29In;lyP6w?n>Y^Kz`aBNRV8;5?xiGy~pgXwyVAA2AX ztCiuFi_{Jzh%-|TS}8V<``EuT!0IZi22xB`flZrOHIZU)(1TTsVb>gt4mg;o#Ntg$ z)pe<)B+qN`7z-#AEjW^~VFQ7Z0{2oEK4O%L$}%BhwSs5EclmxchDr&BM{V&kKXNU` zt5YOwlwy$gVzBC=RJGuj9GtjpVLmA1i8B`7xyMGeLK`mji$v_2b{@O|JGSjWx#*!2 zw(-iho<=u_;X4Jytj4MIG8HC?5j#pm!MoH@fLPdzv1{j69KQW#_+Al>po8b1ejW?6 z%VOWvPGfAY5)ilH6%shiZK*goe-t=7-NjG5yNK-rZ5%rXTv#BPqLhSE^?yBH*B65I zh3*+LsQ{N8+G+qB0amnSL(YmOdxc?lK9QJ?|+V#O8!w%i1kRuTzrXNa_%Cj&=g zDuLu3LL3IA#vlX;B@xSPS*l40d7ED_61ht5P-2__`V`>wvAbMr)yz+)W&et z#;%bRF_o@HohwRzP0&f-An~cfcLkhfKV~qs$mCOOay$&}EW$n(W3UAD&=u7sfjY6~ z$kd{Gyp^FLr#vKXpz{Iij_56bA#w;T*81a_Ijmle?5@5%vdK9 z%xptMDaw9c@^S29j2m}X@K65wPW+31{}vv7rj2`k$(4#Fhe5IcCWbBS-KkW_k}*S2 zeVt93`HajvKM$(ru119~D;ole5oq1T=ELXhS9E0_&rOp;v{jKIO2&ExW(Xdl$2Q}< zu>QKmMnmil`T7)Yfu2ACd^f?~$pW0%K|AT8*^A`8%02|_5imUfY7X!lKQ(}#csRn9 zlQy0?-lehtKeX4vzMUyjpH_nkXd}SIIW^SxHB7Vxi?M#u?6pyx609SML9nf$gNa#L zVL6E+vkMkdFNN)syjF7#&++1%gTMQ`UA%HGLAgk>K>MxB!bjP%u}#%GDP~(7&&VpM z`7~d7p|~{zx@rK2UiS2J%jES2WXVsRzJwS@>ZC&Au9V0p;G@wv5xUjK4(N_ca5nox1+7q5fHxjyme zx6aQl7f>$yS!gHcc=@V9t z$JJ&F7cXBytKF6Bp}<5;Piz|#0~AZ7l8sXHfo-EU#zq(ltMbCcGR}3e+V-&Awh;7U zRDJsBC(6bYwp5~WjZLC1pg>{3xF*;g+ zi=N6ENR+6=idtgfsGe~sc7A=UN>u@3=H9+4KVP0@R70w7bpsoLoY&h!U|D5@^h;VV zLH2s09O08^2jY6&Og>pEuV$lF59$wOnmFJ;qNR3<)#ots5xg#<6jH zPaYdxbK}@JzE6%b^QW+5>t4bUR)7gX2Ldjl_BRy( z;`7}HZD^^pbHqZeV4)j%I5ivM?0kY7Cv1!s_0C)T(=8Or6@2r}CTibY5Fq;Dne32|1smhTWmHSP z0L7x7qP2$Wz;#&JpvzukV7P4KzzsUAjxQ1bMSDY2Jyii}VTzRoeH9awYxMkA>K1O~ z%w~oqzj4?Tbxom27!>dcGH@YJ0GVGMYN=CVLK5yvwKai@Yb(I1tHAgHOT2b(-)|ocqpaVaRQScHBlxz&T7ThAYBQZ(@r-ou|KLBhkF}pzpJ#Yge zp0Z-w!cD6qU>6s1DS>P%k3jVYCDdUMRp05<^KU=!Q09NFKyF7FFB8!l`qPZuK& zSdwt8{HqfU7;qP()`PSWu@H+2k&5#Ku>?y+qC)9*V)PPP6ewl3m9prRha>BA+jim6 zwu-8Gsv)Jcn_uZeNdx^5HZ48k2vs+P=XK#!61Y~3Y9T?vN#W6#MXYo9cYs?d!SaT& z+#SJktAH>mAc?7-rhXA^W-5fH;8NaYUWkB`jb z*8Nr7x~+@RvIEx+vYiM)8rm1k)@?j<+DA9E5wtVrC+~r2Z zQ}$dXM-*(jxIL>5;Xwu=gdGbj^%V7XiUx@Q z@s3p|CcKqN_Y<#W+P*0gVz3nBt^-tF+gM&nu-vv$Z@ZXVP0?zn7^);7S2R%tx*ZE{ zM~y`>!P*fW4yi3rBs^O#PXn78Smsm`YtML#q#pZ2Gs5ml4_ohZRMrJyMS=-Eouy;4 zGjc$q*q7)VnF04wg{Mf4Osc1x0Wym-0Ut7^#ccBP{{A|%LW3J?2pQ|`fp_zF88*Uc zf+rqC_~biESa`IHN56aq;cAHYK2*ZcFp$&shHFb_5 z$ej#H1lm;$lo^yw!bbA}GIgmjh(ru4Bt+dyU@I4rDWBQrMO5yLCY}ujli|m-#?uP> zv=`tPKa^l%(8m{_Z(u3#;fE;}mVuEWbw18DK6?w@W`a-NTf?W{=b|;2;FtbO2RCo8 z;!_V*@%ro2n1O@$9FEaofHLioJd*Mjsyf8lfb2>HsV-bqI%q$4`GJ8oO(?u-<2J42 zcz*+eg%MoG74PeUo#OCa9{%=n2|x4eExGTU=J__{wgfyBay><-mr5lW$9Iz>p-t)g zRy=Y;RY10ClLT)#Mw+#NVYG5t6l;K6^`8o?RS(}-e`W2^sM^JM+*knVo{*`t)xQmx zsKCNLW5D0DB9HcG0@_OMQ;GsC6lLr-#9<#yUu#jL^~uJQD;vu=C+RWLSexYfZ)Pi_ zFGE=wsWlGCV&%)|Mj`b8io}{2K?6693;n8&X2m^nJp1* z)j02`TxaQLW5R>A;$KxQ7$QLbm+SnZOxI;%YaT^Lg5?y=nGH)0;9OsLVhGe6;;(+M z?^~9OqAD-=e`y@)=iIM(acoy9-{rO3Q!oVA!KP6UwpABZJuBAuAD_d-=oreyB95PY z3vD3*xMEjT9YvDTteUi0c}!~?AAk9Vi;GK~dsGEtkUFv-T8ucBx~LXNJS3SQMb@a2 z2WF$}I~XWi7%apX8v(XgLu{`Fa9CYL;#EW%tfEx8LUZ+g*p|#)LUgLJ8h(InhY#bH zcm4==?mPguRzwmlT>#WG}$#s4m7QES$Q~#M391P#W@3EBo+@DZC3EOiy>QeW-xx zP8Tn{+`-R&z(#eu3UlG}RO6A(0MOQ)(v}pPuFp?8iTb^6C{kyUCTO;NY5#ogW?t%# zYwK*Ogg~~{x|j>i#1>Lq<``~HIiL$6Z5V!YfAn+F7K$QV=|-^17G|y#@vpzw!b0T0 zU$QVhF@S~D0+PB9*BL{}^5G{9Qtz;H9|+bJe17Pbu9Qu5vkEWC6XxO=aQ?IR&@Re8=5 zC}f~f;ui3Qr>|kCY~v^IJ_I)kFtyUg(fKA)0+Zrj-or<4oy5oQ+l-l&4o`*~AT%JyeU7g==JiAd2e<$jIM|4=@*#NWnNJ+LXj$qWqP`4nV0&Ndj=uNH}!B zx5THs zQ1dI;I<^US-*OO96r$a1W3}5stJOu=jnQnk(e1Voc6x}St`HeX7$S^2I1`0%8VO3= zU~p4G_>c+~KZbAHaBWvA5zNL`7QoC5aFowwuN$J<=_!x=+{V#_<1(a@i$J-}LbT96 zDHh8Lg7H34Gj6~Iuv6+1Zj}g#3!p%?eSxYck^zp`t1!ft&z9#ykVc+|$A5DN!v&|Z zs7YyGW%;0sJKMJL-r?sI9a^@{26gWAyN;#bbFU+Tt4Oe8+aR`Vu3}_lP{;^^(!Fkk9;*QY8{S|I-Jpf< zJarlERSQS2*|>ANhtY~98`{-2d#du)9WGkfTJB+GIhOEf@&hD@7ASIZT)1f>eL7%x zc|y|4#mY*GbSV~9J?(T_Vk>0);8WZ%V&TpmK)D#Bjx^XHh zyd48J!d?WIRYY4YTxH%yTPeN-93UuW)5@raA9}EeEhANo565`tp*EtH11}}vWuaOv z;P9avQQ~M6^)NU#iO%#ToQDqSr6t*rD)*O%C#BaZoSp&=jE8IzMVOnJL49ReZB)aq zvXZjcZ!HY^8W`m`RROFrFg}=IsA%EP&Ir4PJUp_ah6+LqjkN?UcZBTFHViqBZlk>I zTV!Z!hrDPm@AI5(GBs$Fg<%>}z+|bI3IOGaFIf~+cNbWVLj+b?YEg|#0K~6Zm>9G$ z9;FDn9Iv^#%-Mfv&u}yTh^Mj)E6OH;e!9#?Au#sl1z>8PJduU5Q5)k!DMrRDY@>qE z<8yK_GQg@W61^%{MZDx)4a$X@u;ivz2yzQPnO?DSuq3>hV;^l;95({!lgxq>W*YE5 z8_!(>9Oj}Fj15xXq+bJ(xlD%4l1D51*{pk$g%~p+kheM=cU5hSy7hF8h=U2ap@1 zROY$@q_0mEoXU_lq#BLYcQ#h!n^aE8zqYNd#iZ6_Q<_%IUMN6r&htKdk?!v*v{`|2 zB%!3*$2aQ_1;88ooeb#K&)xvmeXx4%NsE?OtS`BCG2z{c)KW}-j(jlVkRC?a#$^4Z z!DePHNd|{l{HWIzST!S6JvI`GRw!7I>u{veCz zm0nkfC|Zh9ltK`mc76i`Him}F_?KS_@vW0h`P zwvEU}ki=-lF;-~*vl=2^i4b(T{t2+F7~<#OQ@~ichjKARlX)aucR4AlEO8b^y_y3! zVo}u1DigZ^G&~#o?|BGYZhsh2o8j{j{Bi}!@C{gu-h^Fh>nbX3muXq(HB&UYP-|z) zl69cmS+4Dss5{>Xa^SM50My-wYJ0Nh(uq}`hpNg+QEzr}b*_mMms(ivdZ=|R^jd9n zdI7A2>}865lRb_A!ZAw?LM=1Vk&b~385ZzRL((C zEMV!_GG^*7Dn%~~EB|i2$E=TB&qYXoNv?Lw1K z6`Zj@6=>?D1cf9Ga`o^(wY#iTf#|8ngacmslN5@?c-;K}y>F4mqr5;i$ zr?uB5chO4q;>v>0v!cx6fNCR7_{PpeRG1opk&Y>@`;pFTpF0FLo`-A9oI@mWXj3AQM|sgg3mYCMiDIGB$;3>PEWU^y;9SG5D?TF?(| z1hFe$#m~OyNeD65kmAA2@GXW@b|TmnA44v1c(;X{w^#z+#XYKjRT!NtY#p_+?=}H{ z9=JG91-Od~OEFGfbMU~8DS~#2kKYyJTdya$ve3mBUv=S)46xW258QbGANjyL&|RtL zd}O%+SF3AYt0;#O1)^DY0p+3#-z_7p0ApjZsJE3*b)=Nojw=}kR2RiPvjC!7;P4r8QAor?&Reb)NfZho%&#_sPg4S&YC+DxO~Sjh=22~s zBvt{oUqEV8^HAFqpQxZSv+h@YMHJ9l?n^+Be=Bxd z^joD`J0`JG$J8G_iBEt0PTX1YiDd{~eunTSDNvLJ)aKSb0H(RqAR>6!w<{+jnlk)@{R>ot?+gQ}-hn*?C-Drk}rsiXEdMmSTEfTp3En3Y-M^>hTc&?vW#>K ziJtHtExi|IFgSH=_BOJ3J%J|6ASGYE2w~HR#@$$QCdTSS}``2+xXPo%3_A9 z+MWo4Aj0}`zjBX4S#TtM?Y#yzVNZ4r5N(Ex47##4hcO=ElyCW1yG>kOF`%8ur zZSi2_&{;rlwqINi)#bcmG>U709sLJuB(;W4$W*o3v&MMA%I{p$LHa61W#6U+avXzc zH9^3vYN22}sI%}wW1V6o<_1Be3Xh~^iV}U>qXhRH0HOm925J`Evhv^_XJy6BT3Je9 zfz@z=Yr8oRNlKiwa#3BofQ}r=#AjQdIF)Q7wbr2@l8&w`{pG7csm(rHD-VsbFe6~r zCCBQ`eBV1gS6-2K^)dDsIk-Z3FMl`uZ@u@AQC@5IK-dr7e_f`Z#JK%-54XRgL{QwLPA?xlA&tqVqpoG*?5vo4N)Mlu$KR=l1^Y6R< zWW=CR`kUv(@zLDZ>>lgu&jQu6*=K#gvtEPg|1spX8D}}i_re54zW~Q}P;acF-U`G9 zsa!6h(d^*b?0Fo#DZ-xJ+qEyhx__SQp~?zTO*EK25!bAa9bj^}C~MI3Q+0T@i!H+r z#>&9f?LMA8<>1M;niw1K@!-KB+;rnk^a>R$q!E_p+9)sw$5*yPZ2JnlR+4?Tg(7{` zwZDAaYa-}0(VlPM^GBMvp<>||-UY0LDP|T@1a6|Tg=Al(?r}jfu~?s=GNS6Shomru zZV(}E&~hk7>{{sAMZ|tdS>Z`rR%2A7Lu)>u-Jt~{V3ia(rr72+L4hqE@o<7pTmAN){BE--Cpohnv z4DomWWrQDjmyI9$Ne`9%F46^#7bK2_@{x79BGRMVv*T(0+ zQN};|qYg$2KK|B^l=0Zn4wB*sqHaOvKaQo{E~_O{#9kHS+qa<+rRX%5vNmpfJl9ff zxxwCiYbu=#8*IKenL&De%L%DQK?#6ETWx&u77Jf}DaGfX2kt-Y;GXTVn3~S0^l)G#!b|lCuIEeOFx3)C7-3?#giRwpmanyNbZQl?*h0m%QMDrc^ga8q zdDO>TFTi6b8+iQq45B24W6=*?m3S(>E_WV!aW86Y6|_b$UT`AM#>LO6*f*c;6I+ftIJubX@gdGzRe)y1$KX|@{n{M2VJ%Ot8zO|`Rse9bakr2=!#A0jXGR!j&rPP`8r*P)f6sEdmbgVWi!-)i@$p)zaEVnHD zr|)=p#+1glrH^ z8l~Pi@OQjEeor;sd*63I25Lk2$|Fx=wb{ehzwrw0yJIJA+CPb<#V!`+TNtg?uy^lP zoId^*B3d%g3WrKS*(d_TL%^0Xf=58%EuHBQTe#`weOO$Y!59Dhb690?cBL%2AKV)) z&t1i1U-~ngKYI#yKKL#SkMF^zZQF6>t<%a2G_?>Cog(2Pc^gE^2*^e7eFrP;2q&L7 zhSk*;td#vo=LN75#J17wwsGx|7cpBeVAGZzIC=CqI&mykPp*}~(=30EU?*MF*p$Kvh1mVuECs z2746XqDGDkEHQz9`ZL#{wRuUfei_NgzKYwF3upy-252kwb_Uv;`z%0)QET^se6b)i z_P7S54xI*VhzQt{&{FnF9pQn_0 z%HN!2{7Oxy@?Y}y6Dm}eBp#nnPOaL@CDmqku77{beUZ;u1M>I5c;&9735UGub-k$1 z5CQ#%m4m)=M;-+?&*{3uATqgU%zGfI-x{gmGZI<4Rv3zfU@9aZs|AfeJgYGHcvw{< z!QN{S`21(}uh$4fvv5VtLD&R@JO}^ji30xk`2^<{RaMep&Bj>C-|Kvk zgF)%c<1(a{=_jUt%7m2w!!CyZ!olx7AL3JEH9YXYG;r@*MZEF%JyhMU%=7A=k|-x> zqCNgs^u5+^O2T1tv4}f|x55i7T$x@0?1pq80yMT2A*G^~{nB+|IV9r)W&OhEZaeTi zU)FcLM~+X@HANv+#5?nx2wW*2cv{6N8$iy}#Kj2g%i2a)9xwpA>X$HFETTjUxg{*8!YfxQk9rQYi>mjb+ zOTG)=(_^`2YGfYCSxe>J>C9y*yCen9OJ)yA7_m}PK&`CD9H@YJw}_>M2CmI5VRUR1 z4?b`|#>Pg`2?Kol+fU=@iA&hFc`FJ9W^Aa62vxn|=}I*vXc0hL@_`b`BN`a0;NrDa zDdpKVR>tIni%na7oO*&{7z^*%S-}1KfrWSlcfIqYSWIlRJ6&1luv%AuX|DfeJ!=bL zNKucMG7rE-rBX!Erd{4FM*SH7@K^o-!=8)rkp!h)g0gQ3S;y*RMV=^2Dc?yHxyJRe zZ6kC%6vt{P)Kri*Ei4Hx7i%??Mn}-B&&hbs!H#s?@=}WBfL^OWr>Uw~vaw3m_PKG( z4C1n0)DoCSgJyDP|17&zXty!Ks z))D}GdZmutn_~Q{Uv=>1uO)cul>~1b@8M^EJjETKD#B@ph#7_@qA(>r;t5E5l(HUL z?%0^UT*ZI*y(`!;3shOjqvWNir2!^t9;R0ltaL0qb2`RDyBvJ{u!mQ^)ka(*cqpCt{6XzQ#zVhl6I_;hUPq+~bQ?xoEsuk*9Ndsu_ zV_h4xRil+u>Jpc0oG7wvOT^$(Yh z!xKdeI1zS@B-k+q43_D&?I3E?Vu$yOz_|*Cq_q%LGIklbc{6ZqK89EHBmnj0(<$D6 z7--ZZeCS>mUw%2k^RLcf$4w*Hwrvznzy+}a7*udoe|M8%Z^qYvdp5^KwK9N$S4Pn7 zVWqx|Lb-;CiBXiQWrPeBwH>tDZ2{GLEh_yTblY7N$|V#lR4h@E9m2PL1WqJGP1K8Y zcv%UhatR3o_M!;wW=E`s6fvMu^#tdq*S+VVL4 z1XNE_!R^UL*ku@=c=ju>IYNy2#bwzzQ>jIOpY|+Xfg4~Ob`Zk%eR#D&xiLMK2*XCP zSVHOo-Cjq?CR#Ub+B6EU>|wd<c)l3HvHEqzt$qVPu?gF*ipe)F#)a0oZOC{Kzi??2XO;r2$z4sw(-Mb%W zPP{1=PPWJAQ$(dwL50Kt`%s#oH@}Ep5MX&_6`gj7LZu}3R?fgqjNg14D&>;+9CsI{ zu{v`O$KN=G{ReN6o6+g9Uula1Qw~iq(Md5|Z)2+NB1v_4m;fsRfgmL?p>3yl@I6TM zsEiJROe&I2#sO}`v|ZUkE5SmGf5FbJ$SNVIiVhr4**ht)Qa!9BqGebh2*<*wBC(N^X58XU~! z#4!Lc>@<*eQzWc-h&n<_aANcQ&Irx>Y#VFJUP#!42jZ>@!0p{wV zB2vX3hjX#Rjb&s(y-(+~VP$X!pU&d{{A_@7k?e!+ z#3WSA12oxi&65!W2R`PeMl4^^C5%+B{Yj06o#yr>x|Z9h+%q>I^uiDpuBn z2TM**W>cwbt%O9DDvA_Qnu?me6{P3|i$Yv%W;V~(tq6huLxWW3--weZ&ttXO#bkK^ zVN7yH``pVt%SyTQ_Y(iBo?E1Vek$0@euQdS^^wJ9ijk^|hxXZsSL#@9#|S$yx=sNr zLNdm%%Qg6ZQL1cgBC(b$Vh`SY=F!a68)(l>!)Y#HvJzo(Z&lWr<)Q_D1gN%B)W((Q zr^1XW!|RIPiG-07b)=q)rFM!_=gy&Ao`AEGz%6kN<6>sHfj5pXpgB`lmSb^(LKPw`_v3cUAz3*Y&6ir@S%0q%M}z|a125rexe zBrCKbja9apI4Y_=E*X+HUM}FbJ~M|OIOO05e@Og{RN%K+v#g=;O+`s|g{q>=Y|&&b zqu6E{d+0sLN5`=Cu4*UJj&)X1YTJ1I6%W7lWd|?5)xqEW$N>KO&osnp?unOxz^Wll zeYBbpy7d4-7@^fx-uY5-?t8lMLZ7SbuMM$w{W`CI5&GZxi^vTyqSRN5I5n>L%6_%% z0<#?k(gPpAJ(c`CzV@qcn0u7K4x6x=*QA0>gf3j6x=f-|xyW(sVl@gdKR1spTP87G zzq)o{+c-9kjpKXb*dPElj*a8{>`3omm{kR5rdLrd*+|1KJc6smvINOe)Zs+2fN>0M zrNYhiQ}|4y(!sjI8R)&JfKM*{^Hb~_4RL+}=)^u=ypZ7Je2n{Uu<#>SZ2Y%38*oa4 zvZ3Rq@*TUmzz=Zr@)E8#W29vZrKp2X-g7ftClnRPv#(ym)Jy|T!G$FoPcEt*tSmE( z*G8>Ulnsl)Y%<<#PaMMTCJWa;sfT)CMpzG=wc% zw_#*_lPdR=a(Svmd=v^rJpRN}xOncYs5@@Bc|RsLZN~VfO|TgdY%yrogtRZaa({58Q|#P=HLSSj5z|X&gUs6z5K##o*weD6{t6xElq(0>4leg#bY2;e#Lk5GFToMmy|^THS_&Vzr1~!^8PSAKvQ$?z$CN zZCd!ui$0z@N1%sR4jNESQye{h26NZuFkWS-tqO%!=x0Bu&?taOHVJ?s?bP6&+}LXi z3|$Q%8+ymWK)HkfA?wN9D#R6OH?hd2(=>viC=Qo?nVJ(F#tT&jwfEGsI8 zM=H2>{xqIPh#fn(D0?NAP*c@jE}>SdqCy{;B$Y7ac_e5zR}n=d2OR;llQ71%cf1d~ zZ+|DEZX0n*FPj9dg^PIeTVKS~+?-Uk1QH&|$^uIS#k_}6FUE)NuHvUZycNqGZs3b3 zlpJ}^2~@rVWk^(yNp2WJqN4<@E(ymN3v(?r+D$C2wD8m$bxbd-aKFt1HtxG?7?o`` zxWn5~tqo&nZ~%jnf8a|XGGn$af`k&HJCtj?wOc zp5$VWCO-B+)Y27GRJpN)ir|9)*-9-h;F0YM$i^xwsjJXN>1*(E>EIR$ddyYIcPcVD zHt3K$`ae6$Zb`3-r)uOh%$V~S0_B#f2GZ&m8VrypC?;^O%!W6Do+?k)Q zCjrb$jj}HH_UhX{h@S^3a#y?V&Hf5bVEvz7CnC(fmqBlJ*@ViSFu%%?dYNU?x@w1Y zq(c9_a~H_Bq$N(z#&_OIuzA}gwrtyql3x=da&cu9%PTFk+ATDjO-yVW#O*h4#pHNZ z<_=~`NX`svfsz1m)Dru;H{QI4W5?$(Hc~~=OW>DWAqhA}avneT`V`)riZIhl&{&B@ zHLp%fg+(U46!VKQnhf3*Ww8QaqtF(BWbcH9U7J>ga91J4%!<(=kWw{~vv0~QGV<+6 z6H$30$;|&bV#W|$yw^j%jg^Lj7heXdeuT+_FA97$+NicI{@;!+VlaI_PB1xK!{2}3 z2XStC1#?M=!Djile2 z@MR$(B-~bIGzmaNqSy0KEYRy*6Nq|T;oRM&bx@jO6CB)G7{--_C3I+yM_=@UhtRjt z4ntX=6dX0y^27XskI~@@T$|Njsv1&}ol5nuKxjkcXkYL(P11yc=9*}>_R95NV}GX1 zX!4They`MudY=`wVwvN}b)COBjb1kvU~G7xD5`uN1khjRT{ond&+n5ILaOL21N9?y zPMpg)Khb9M%*7cjF4a-+J?z`N8@Jwi0M9)4656e<%KTvW9eWTD8c4F)JnDh%1WNc&*ia?~rV1oIDDZKE)*U@cWLhOZb3S2Mo zM3~c{2r{>rh~1&O-%1QowJj`heMm*W?O}1gg+KZCe}YFhKZSBsf>$fRs}|6hUBda7 zPN3p;;TK%Q-56t~6nl3%sBF>gkwS+#+OQb`KyLmu?O1-HL4TRIbMu*5C!5#m3W~H) zfL*GI=Y1R~r8~t_%xI!bU!hn*+FQbwaSx4IAFTHjv^fSQw*f!#^T2}-0$+Fp__bf{ z;!_`U@a~VZQY%K(WOWKHU@b(hi^m_e@JC->#*aKuz{frq3DLow0>jS57Sh;gtpU+Z zrI51u$wV6K`z+fBk#hPnc2Xs5kTnR9`WBYw9DLy^AAkH*j7l-a@BfVo?t5ECQ`^wS?N}knAh_Ct+@Ku21JrP(%*7`8U7#GgUx3 zKgZZJ669x5IBihH7K#PpHpK3a8B60s{l0D`45VI0K{y}w2UjYClb#|&>P-vND+y+1 zmhr{R@x5?t5C9v;#_@f2Tv@(|zy0ri6~Fg?{4U;l>k?dd6|--> zirqKgj&8V&sJVopQ45=E7HTD+N1%&jfTMs+37FDBuPShno~9~fcjq9muLjIEBV1hu zo_;IF?%PuQ$X&p(nHbM6bP&PE*gyey@2+8Xv5ptdFCnxY#GN+YxnmGF?ij_&>MGif zj~7las(?4G?B+&_n}&8b#+9ii2C4xnMPC4VDw2Bixfg49t@qL!7RM>WDUZUp8Pr5& zdng2lmjo#KE=F&>1zp=mXUYRgZ=&Y2yuE|^wA$2I^dN6X*ft96*_6Vil7plN7egLZ z)eeHLjpe$9dNV>h1eP20*#s^x*+{6wiBlBIz~X9(Z@mWm#Qiqhxdaa!2=S$pHjW*g z!S)?<7#WyAO5a4Hi#*;AJkejd!90HQ0)Fqe|4&wK`95D3tG?b~r{o-}%pCPr&MeS6+DyKk~z$zZzA3fO&eJGO7zg?rw4FUCj4Fg`wluYK(?{JVequT`M1a>L2s*FY3U1SuBg>iDxS zJd2v2qS@@BSgT~#K1K;7p~gm0DM44N)Seqo=^ymY)yhe3V5Ll+0KiBUj$Ov|^ojsR zCr_N0l{HC&n1-lShm$PvN;o&Qia+|Z@8B1I`e9V7McJ%U$r^FP$8$&+Vhxn76wR(G z;UxhO1ql-0L)z=1!0xU~sbxsH z8Pyg*eNlOavC8<8vy~E`dID8KgfggIg_sNQ&)hk!7FCi*RvBo3Sg|Z?1^H`jlQWB( zKK^JFuIZXk#SAzy0C@JY{;t2T?##hIIoTYQu;RZim!yFq0ZCO3L?+V}RV|a|9ay{> za&I(%r2k$4`npR>K&tsb{d;kT(cau75}1~)MYHsN7cxNP+)9<50fR=Ny#|!aq1V=T zLF}#o#6Ua01OLCv57zNw|(w^rUCoc+>XB8iGf$--a9rfUr5jlJPEC59?7+t8NB=5@5bS~ zCj=l{ZZ`3yFMbVU}-9%6XN$8Ue;b9nj0=im)& z!O+AA+MSLNtyia4aQpk;g)OZ|aP<6HG@HQcN`lb|WsyVcBhHWX-{#n*T?nO7x4Q`< zR^=o%T5Vu;$-?Na9)fO)F(QHS! zxB$FkXMm62;fcT^*3~Uy-=W>Jv@kofg4tXfmN{>6wIy_Y1u!>GQhEi1|wIz4InKuw@K(FG0~_VseUZC&Y_aFXN?aix?Xy zqvktUj6+N}+u1-Q*sso&QZ|t`!fp@m*gcM4xcgnOMn>?$sZ;pEiC4i0BaSN!1TV^G zt7~E9;h|e@5_?CARurbFAbMrrqOxXWs1;(~+)?BI)vu~lw_U5%&A^qlT}^CCwW%UW z_*H^cwUV8m%QGnYz9{Ymb8{dScIVE`%A7_oc`9QC%+}8|UqNK$tHN~u$Z}ew+4L)p zOo*={JuNhwU0k{{BXb}HE90oRKvH3C<_Ap>Wp+v0v%k-0YU;tLlyyH~KMGO@-6jbX_B#UB zu5xVAV~nvPBC(X~8ClhYDBO)mhQaJ{ik<}XrignHEZf7o-#H>cFU1SIzD~O%)`*lF z(4HnX0k51hw1`95!D&J~H>@f0Rta~cNQ?pt{h&ODm8~SbC|)435}`6wMAa#wl+-Xd zP((TMWX)Erl;CPAJ2?!2p6VwZo`kPN6;ykFb zs>qx3TKIjwnQ6U8)r`6oq|SSB_AUQLf^qTW`kD=q9)n55Ymn zai!AowI{!b#A2neixR`BxlYv;2vz{>xB>WEdx2M;1-|-7j8i9KeB?tmw(d&c^ir&Z zHop2qj8|U`@z>s8z&qa?1Fcy4Xv}Jyei+5t+@5Ue>|3*{j3%`nlmb+3k(61tad_d+ zxKu7M8_vQ@r#*b>2?wuTN$>-QiuiwiIzn|v3uyO2d|Q&~RaG5{sfj&1amTKkFg&tJ z$Wvyfz4GEyXth^RX*6_IKIdNcZId^Yvt`QV0+{NrHEWBkOR8*>Y_5@xpemI`^rD<| zZy3e4%uta{+n++QtTyuuJT4c+y1p@c6#+QpT5pb^^WNhn>4Adb;( zN2qu%3SNRziPjwsPF_iH4lf@)~VAt zboh4dUu%ovGeCrv=O8SUF}DIVnh9)XK?rE2Y*MId=N+$93wZpQ6S85VdY(a61okBq zS3pNQXJ4mT5MqFvN%60zg4IdId)8nHJSP$WB&nRDEgsMXk6zFO z(i{|GAA5K1gx6RBX0M^pY@*j}!|_x=+sfiHJX!!)K)F^zsZ@}*!t4ev@VPgdm(w8>0@$~U7UYkpC z+o5q-Q5Pjwz0NE80{*kSpP|GIs9b6GaQbo!&%Uw$~aJBpZ~glaDa z%aaX|SuxR$NB3W<0y7V3%lw>;hrkH$pHf%m72RfUDPFAl-cU&_uFo21At@`sjP{}B zdvG)E7*#trgS3J&1cN^E*uMJU>kNR_zGw{&tSuW1U}M51jV>-vGUV}P4bmy)GAkky z0ppb)zWy8W6Yne6R0V(r99TOZ*|2;S1TFo{>|h1lXBe|~UD8%SvVZ08s7PjW(@KAv z;Fl0d`lCetsXtE>Cu@9kt^X0azfQsaKYICE6n`BNU=*9WJ?Nmq>qubp%uMx0?ir|; zn1}YZCy;wD)%N=5u~y}r{VZdQOhd?J7BFZ#QzC0BVvS<0y<%ANu{6=Pz(Uo06yQ#^9V4jOd!IY0dqp= zhi_SEM;;!13D`ds;>fWGTdHhts-3ckU`-Hm_Ke@Y39Z5Xg={mgRbKv1Cl#RqRlbhH z928nOh8QU-Q)W(KLXy$!LK9&sho&Et%^^lggFinC4OG-wm;A&tAOq;g6!z?4Z?b5o>ZymwBEi07b#iOhm68HPXK7Eqjfafn(-_Pv^9!! zJ$%UhP@p`m-;!8W=~+>N1ADgN%H=r`DRBPge`=**&S9O+j{Zyq{Hvb{$)K$`^ZiJH z)XG-n(&cG18f`t#0)C;0t5efbAt||5IY3i&>3-kiT8V!r)}KNGnD$8UPrZ&+gcIXK zxcSEIVj(DE2Uf1;2xcKdsN6T-Yg;B0;M*T^w6&;McB;Ac;?yjD^%utRp1Wf7nk%p) zmIKkIREdu?r7mrpcTZ-<9JfdkL5O526tu*mvl&I`q#i#1R0q!-XXUOV=gexBYORX- z`2{@p^s^Wo8bGVv!MSr6P#Y+sHdt0`aXr@NE$`H-L{|jp_9nR)Vxy{l?s+O3$SKl> z%SOz$Qm!FPsEqa{ucStTKzW>k8g!0lCR%qzl(X3LGC1GxXaow?AX<#0_{u^D&BH0fKD};bT(L;HliVuJ6Q`okB zD-o;w2!RUG`^Kknh~hr1#=K~t?CMW_(5`ZGo(RW1b81Kf7U z9k~16_aNwT52D6_v*%ADo@rrVsHXB%jMbwYnt{)aVA;5qBR1C0JLbhIlSGLtC>)Y1 zQ_1{M;J+SPL`xyL4#E`}OHXC9q^_E_P3*hC#cOR$EyQRvL)>@oy&K^F#<6jH4<8!@ zz{at0d>`il41B1BA1HkY-}uHOXp4eZ9Aj~OI>tZ#0&veWz>mKNxb*=2-_;`C*qj&_ z04~@WhTG^;?QY@5tts{nr8qK^;Ow-8ubr^*%lD}-Enz-S{oAFD({EN7J`JZ56v5rnB zK&e>8wQDoD`IbZY$nH-{FfSED3-j}sotwqekADYePo2lu$Y$)>ce8lVzyAaK@c#FG z2vO3*!ongRee5Yb@x;^k&J)k#%@c3pXMXl)@U92nBO5Vp>>qyLd$DK#Zv5_V|0i_Y zZ7j|$!f`yzOkKqdH|)Vre)^}dYxizZq!)`mZn@5qkbE-XjJi*7 zQ!0uuy_u(yN7SR*AD01sae{Z;vJ>TW2|x6sH{+&T#t^l7D7ZeXFv8qy9k0LD!GHS0 zH}S@$6;T3Ro>@gm22RiD zqCl9{*>f1X z@fPvfPJ#sWOK)NNjTaM7`0Qp`OGmaH;>}ZJ9l8q zrUBFjhfpX~REaqslO}=ayz}OXt9as@FJb?IEqLF9d*vRuu2!fqJXEYbSdo+yMVo67 zVA(+W%49$);En&aMoE;Sajn2Kzh7o4w!9^koUDYB{7?1#83L{>>HAtVK61%JHNd}EP zF*9Ga%@1GCFlGT`>G{ESC@NKT+fil&da_7WH6S*R4;Y!7ZxUn@x!QwgBm3FK{z z_0T$>es%5UKJ{;6UX;D=oBuD4^>;b%2XB6&i4gPI>pv%l@k@xR@w`wb$GLM~2f*as zqtElKKabpJe3!q?elG-<2HW1|)~&tdJV=tEscYvq-I?OVLMH@Ts}Z_hif%7LtI-sz z7b==*qBTFif?lhQfm&I{gL-onwMrf3iiZNjYH7tma)<^%sW0TSlY|I@wpbHHsSmF( zjFl_r;T8j$lV#z@i6|aS6^rV7nzIscQSyA{_Nsap0k47pFCDXR@_dYy72wdO6izv3 z@s-^^)$#kcS^>Ok6yDO$jfz&kP_J5_RvE|g6cVsDUTonFgdA>0mnn!2@y!hdn&41TE9p^XpX!f)U(;vlBGnKy1aWUhb@#@#qhI;oLj;Q8o zb=|(};I7+l#OTN%f+*1QjLNvtPWecaNctt)Q)a=W$!DxtS~CYY^B`fw_TP=Epzgo|t+_bH=}IL&JHsVeDXIjIbuJJ| zv5Ie_65v%SrP#(bG=me_8ag6NRjDgYw2C8keHqFDP?|iT#;H_K_s~OF{ zOU52mVWZvPu0Ph0%eg}`e{#=^LFyzwq(W5@P(DRdu7{x2mP{@g$He|I6uZOFX5e^9 zs=MH@Cdm*pn(X9SxC0E0r}&9a+W5-jWjuN$#5a#b*tNyS-~IU%!{Y&xc7jBznZ!X! zWdksmOlLxwsuDxV86dr18Kml76Yd2s|1uNn;>1uDF0@dyF#!($y#5rqOI18^^}+y>M(002{}~@qK>y5B2b`KJtI#@khRclP8X0 zYHCJ2(<95mxz!Y}p9gkq?K>ryHHxm-mc`#tSp|;1cqzr`5O8RFigU{e7E=$Odn3Z( zN#MPEQtTc{QSlvY9ZGS2CC1S!Z6vOXBR$&*5ufp&^4mRCyWAi|Qhi^#n zrPm`IKXw_n-9C-|`*-UA%WONP0Ryw^Rv~LV2MKKBn%Xa-SSg^{YG7t|MxJl4L(85r z?!D(QzO-!wSEerG_UJB@O1=R9o!+Wa$+m&bo3~)!jr&n=Fi5z7;qfuVmW5WgD=Wa2 z`YI+SHskJl?!wo<`c2u4goxpmJnY`TA4!yAetuat!Bp|xaKk>FK6wl$jvYm_+k(ZC zP|HGnwIQ}bv|SkBD_M?&J~E#|Jk&!`ym3<{?Y>wH)j zNN!%yA)#in3sIY3s^eF$p2q3Nz5rAQko0;87Ul&I zscxD?cjmIZwGb;B0GEGjpw}1chZtoq#qekmBiqI>v3)NNA3ChSEnb-9kFeyLs_z87 zAi>Koyn>gWd>%!YA(2#E@-r0pLiL>})uIp;KSjKK6K;9nevJ7A?a{1Ub_Ku?ui!u` zE?UhHufBd7TXs&OT&)SQC4`}<{1mw;8Zo^QQr^-UM`C3L`5^*9o~t~k^P6B3YOE`) z&5>=}j2he!07_Dt?K@>dPhdfUF=gl9w_G>4kf>_ac%5_Z>4Us^mHXSswKKd@{6mZ? z-0lMmYY2hd`R9So4A9Mig?!cy6?L`>;*AvON{ciB5;}@ZGL}SA%|PWp2YB&e*O?l8 z0D`b+aLU)Dl9o=2BLIOpttuwr#y>G{E7=2S&K}8JgF$68RlT`oYr&ZR-@*U<@iu6A z{zn;kldlE4uA%fd{CQ`h_2>Dv)c|kvLXCy40sq&Wrba1E^+66Wpc3~wPHBBxyN*z} zUVX@e)=*`IYlyuJ!ziO9mQ0$1w;V*JP{PZv91#`pKgQJ|TP)6=e~gs@ssg3p0~L-?vr!qJzbmJtN~7`;=DKOXZNr_s^ZapX&lCihHlPCIZFsILa}(!XR{QaLv5%40 z>A6IY`64VxXnz^Vx?+*{mP9F4@l?3e;!fr*lHo2rJhK5LBNB9ehqCY>fuZb-lmflq zp$%Y9)jadGNHWxd5WOJG&P9TM^*EAMY32I<`icWJEGY=Rn|2ZPLN#|0@MWe1E#f$c zXF$IaPzdp2hCiJzYjha>@h+!KXQfa#MbII@E{g)$#4vx!^QrnyF+9jXV`fzW=P%7+ zsnNi@?z>eHM_ePb@{o%}z93&Pk{i-=QAZX&EEO9%@Lq@~wn6wvQV(gu>;zlD-lFcS zrm7$ti*r{YWG00rBR@%7L#L}8Ve}W>yyTLrN3rqvS*iTuxlEy?pKzw%`y#7_WHUS)%3IM&&|v9IFSXr z%Udbt;My|q=H(6=9Yvu1@BjRt;<>9|zrMX}92>{R@jY{F5C9v;#_>PF@oe+!@E-s^ z{L%N|rqZo=Yad8@B(~vKonB7JyKzFg`W2HHO|L`Y^_~NTy!Aerr z9xO37588O|!5V(nogCiQZ2)vH*T%MFu~FifpDdw5k-yXpw;Oj z2t(O4%+1Zo{qP80$I3&V3qJbfc6uS&-JW^6d*hZ%tqtgx1thW#_2-#yvs9JY2z?7fY?snx|XbHmt3tx^H4W&>dqq0#K1K{6p$Wzz(6sTLM%8kgZ&EqPy-@v2Zr<&R0w zrc#c?GG$>lL?G%*wZZ1ICCpIrUEDBGLu;jp3oLI*fh*URFu$;fdc7+fFBV=K0N5zR zgaDwzUn&3y+Ncd37u4b%uStQ?u@Q`pjNwa18#sEdfscJ+H(q(-JmMa(W!o@LUtGmk zUp$NFjxS3dMAB_wVqye|WE?0hlG+oi?FYrx;*(2&JOqmLlod--2e#PVsK7f}zzfho zOCunmKWR^(I|S_jPJzCikyz7g-8zYCxh$T)67(y;wSqjhOiW0be7Dns=c$STl5AEQ zqPut*NuBE23JSFn>`DPXpPTeEhKmzOX2yVO*HXPBR${J%`f_vRMu8eD99xw7VW+2n z11&RV`;Q3r7b77wsIub)^?C}tFiLJ|X9+jHRGP-{%OwF6J7K6cuqmx0v{i)o2S-S| z0ou);D9+1;f>Hw;CA;)Tdid)AKwS#W^AcZFy=ijUS49P;RiP$ySA%&355X^9hQ*)*+8Id$*L{xGK75}1osdZy zM9{>Cz#&CRtdP&(`4CVJ*|zv>Xjf-GSLQM0)2=Lt)+*vmo`Jd6{=Hn2$a@_b(!V$V zgUL5flH}hz_w8EJVJ)Dxh6wm8M3>hwHETZh`rloDlGmT3QEnTtdiI)p+b}G~Uv+PC z-y5o%&!t*U;RKNC4_fK53g>fw^jS>5=Kg?fS}#N*Z%kqvH#%BxZ}Zx5Ftd^ZDv&|jGG{^uGllR z&Jm%siagQE<5=Yj=*%JZ=Nqva{C zwL&Ut+E^0+5;SbEEUjp#0+ZueubUtVY;+SJb^~Zf4!Ty19??Jn<&-^vX55kUlw22%i=K^FqaGfenMKXAae8(R7u#(F1r?gk^Awv5j&rVq zH_L^7f;R2;MvD6;kiqf1f-0Zt)K@e0;|dr2k3P} zq>hVM>x=k1U-%3L9A83)R}zwi1tmh^cVY#v|6ZO+Bx?{~Dve0EctSo**PCe6R~3oN zYBs8^qX?16b&Z{vwyMcI>-+6efn2I1Dw0bP`~=lWL`v2Kxk`^~F;^^QilWd}_Hu5~ zkqScwkS?$Gu)Ip-FT6gydmUgZ!c8HOeDZLkRV%I0`bguV&W%W<-AdIj0d5KjibY(yI*SXJrcvbFpF|?k;E9pc5D`At zI%cla9(BgPNZAD%Qd}XoLRqlAOGRb`&#nR-|K)GZ++)a>J^-(BTlCw=oN0j03^rGD zy9`qNnq<$7rIHjz3=C9o?&4Kkx;l>@*H$S|t`>3EZTm4iJRsE*%uD)sD$U( z#hWj`j;Y!6C@fyZfBp3@qS56U>xvq^?=$OMJ|B)XYLxmeRzO*M%~F|_f0M|`d0t#M z$Euz1-m%JB0CCD2Gyy9@7d~!Q>Za&fF8s2qbCPl*9P_<0%{{2 z5t78Ai&tN>@WOEihxP%3n=M&yC=lL3(PM?67VsFAo9_2&ouLQ|373{C%Sb|sxxAG& zTmyPNAK&t)BcT(T<&4ypUJw(St@-@IiJps$%ez+I!(Tsm;fyV;EAz% zkMkVKiK&$Yubyq8(Gr#l|L=eJt9Y)x0se0s8^`zhu|WWA92>{~M8~z2tMVUi0)Fvl zKaKzRdw-1QE~Xef=3;c1HZv-`Q!V(^!SA^F`Pd!6<8L}RHXV!Y#$*}TQciF=wD8(| zihuD9mae8MxYDm-wXXayMV;bU*f~*?%~=mNUOqc5>y>l$6icUoTen&`FkxY&sK9qt zLAGPHu@Ge!m3X2MQA(XIH^@nhuJ!@t!iwAiS1Dexh%jNmz_q;U=H<*hnh=QIhT|1pNI_;j^ms4-Pg?6KZ zfdSsBSZov+CPh#sh(l4^tSl|yX-fbaH^%r~#{U3b~rr$V)zc_jx|Mm1W zT)jG{eA@|Ni`>NsW;INxgYLv!D(9vl>Pk)8c!CnA@T)^;SQUKj#T8tfTg4;CZA@Kk zVWL)sWzXQ`MUW!!pT4?6876_zFnCGBl20FeUC3@FVFAH#0Bf%20s ziX^?{d|8d)$!4NDI*eUIKI-8T{7baF;$}XEo5a|;bpo3w$E95m5Rl56%=U$qKEv3% zYdemecuQ?&^yaNp8${rgWs~Ol1*Ea^l^z->VliwhFpL{KsV3?JT>^@;EhbdZDn*y& zFfcek5XRER2waHQv20KxM6~lrLLq?6#*+I=0v09@L?AT**|h&VOZEx+(8EG+h}6c} zl-yGRNgJzF!iNc(IDSE@K#UOIHGa=IdlscQ*H}f83V_J*!?6kYnZB#~uZ>KZBhc zd?UXX6UDmz9aW)1)ae}<2^<4P@JC??xFwxMASa|ju`JAT9lrE7s_VYwyssGVlMp!o zzb`mn3-0Fts0^seDwoWAnt)hi1*EMzifY46m8N7o3!tO|^eEU=OopXEf4)tSNXb3R z=V=Qh)<7{!@O6l=Gz6{EWm}-|HK$%QJ6fZ?ppq;BM)@{kB+x{$#?y; zwGT;zd}|(qp5NBIMb4^Z-CJc~e~$dgK%@Sju0`hafPNnJGVN6Yy!&m&v{!>`eD`a+ z{xWmTNK}y3qEb_`dWv4^<#GWlON;p0m%f5WzxoIY)iUmW*B#>(eflnn0%$Bh(m~%K&eS<4mIXD;Y}E{GlO5 z4Qy+bvqW8}`%K#(hxr3>A|b5%rTBX}-D>bT!H#ru&eY<-jI&~d_ z{2?qa5MZqtGQ3fzYipADD;KWdkqcL0N0FRg!dw|4Qx)JQ!?9TF0B>BlhGQ3|1q7$^ zTr9ar)N;LH1E-#Q7Eu&R#UM#zHFjxRBS%%~2w5lOBgM5AE;Ltk;JQ|^$AS26vzpLn zHjGx~3&hI#pNk@~rLrXq`sL$S@bb|!LNEvkBV)Jj>zaTOLPkGhvEWgxZQs%*)xVdV zA5}RZ*ggSo0`MGLVw1CAVPeZBeDGbjVW8lNEuqLtd>5|o$~Bp+6RM3(@6E8eT)$J} zj*XV`{6@mNm)t$w`$@qdTth0N1vN^0o@p&V1r^^{~w2dh#=sheBp_Q}lWb*cRt> zW>e@fIrl$e=cN3%`gV6YwYC|DGO@M>#R(P@fS1pd=b&llt$0Bl1?0xX;lHrBp*l?C5Z@g0-FPOibBalhzJ&QAhfMg8V73KT`VFQ90ayd z4A6iTCbC{gnBme+&}{;To2P zS=CaC-fBPaxlhQb2BoTl)Sf~WgRpq7w zs~Rj6OC(G!*uMHt2;ZW%Z{o8XETK42#-Q7SowQ}lER;&9R4Xz*$5AM2VYWvSuV$=Z zB|ugsqZoyCgG6q!%_|S2G3SDsHRx}K8#X<~xhcXoKLV+xSl{l^2vuUo!c@Qi!@o>$b|yu6E3jn%SZPvi3p{@w2^+gcfRU2Q9pFNje&^hr z89#Khe_d`fBu_0>Bs^FQQ4;|(CGd_aIhGxFJLtBXNNR(!Xo>6!%C-k9;bK|&;fnHI zEGU%styeAKKm1XIFTU7AVQ>WRc<4Snc>i69dm#?ra~NkY--TzM_zq6JaSZ?F%U98A zRPpI|7g4fX`0GD1j{og<=H#9Yj`+Ad*TZASZT$FyDQ?~!;Jr%)eDy?#r=K{2$?*}~ zcwi?2`uMZ_RUs06^@VJT9Vy8cWsnVYI~`2VO~bKV4A3$s;&Tgd_RJ}))|=S0i5u1g zVc12l;G@Kn3T_Be3xED+e~g){^B8_;2(@Yzv)88a(hJYwo%h|ZRN1bBYtvJB6`+91oi51(SBEWzc>M8aaO};K zqQKw0Wdi5Uo)=~LzPUNLICbhcKJwuYYF}Y`QL2qcY!^_il(1vOgBSL&`xaUzr8s@Hi|XKr5E4}N z%q=$2ZuM~Ecnv@Mo4)KAG^I++riwhFd|O*DHfsqdf@+p=M!%@H@QAOFY$7_HctpQ@`iNw8ZK>&A{< zeb4*MJ|T`n+-Ondmh|9ysf3$R$;LJl(gE7>VS5#%y;OXj%fkh{Dp)dYqeWKSdnm2=S;vxh5L!Egm~9#|7l(FtubfSCKS)34}&IY zF95?NWJllPB`?Y{igZzx(aK398B(C`739H-1q3W1J0)+_yom_ssmRO$B<8)duYIeV z>wqQgYpufEOcJCiQ7{3%xlDugD)PKkEc-0|y$RTqoC*!BMM^PdRSRlkO#pyDV+9r~ z0$lC?pR+;}^{`6*MH(ugioh{#Bh+{!33f`+EMT7whol%S(q7l5vLWv!ok!!=0NB@q zZ-3?ScB=PvaQ$EThXO(yRiv&S%78BY9Q6BUTH+i=n67zEZj-+Lnj}0@p;fA4qOVGP z8+M=%Q0hz|b7TOJA$tr;mRWL{{^$I<4pz zB>%x!a|n3M*@b{zkMkV+xw2Y`qpm15$0tXzW%D@BoH~oEXD`4n7vR{Q05&{{TET|L z3=a*uvYmzj2|Z0#>2u|;yD=58tXk96jQo9)V5k=36AuRXgl>PTtLaREyp4o;ubg00 zVVJr3!;F*Wercl7))q-Jm|8$@3J3<&x@>-hLBUhvgQx)4_eRhla~)!1#x<92D-P}RfL6>k6U!wu&`Us6Tl@GdO_RUTuKk8Q z)gv$gQuW^IW;mkKP?esc%mXA80OEnPyB3l|KxJ0h#WL?jVT^LMf`!!{j+{7$8+Hv~ z@1%n&nH^g0Fee}i(UZIYsY++RQhI6TCH- z;^j-%@Z<{~KK0(iGH0=BQb2T8F6l7zd`DH{fm~nBI&hvyUEBRKTr&F;bwB$viMpS> z|C~h~uYh8ylC?8crKLelsQ^_9@p`i@qyg7xA_nl3?G5K7?7fXg{DiA9uUgaCbFR#g<4Dn1!cTpx}Tq5xl29XS!G3z5)g1_m>< zn%C)BSX!wgS!rki6z5iLO_T$bX_+Q_Flp0oGhdnpnj_rh(EWgYPRKo3U$Mf=lKil; z@1xgg;`L{~iG4TTibA1?I8Ye@^D|drQAiTS@T!w|Zn}zBe`5vpWnThvSLz|=TM1U1 zBw2ifu_yTp460_1gp3cYEJ-2^43^RAIr#Hq4Q%;Zj2pJ6IJ6l!aSiZ_%I;7|DQ#8N zC*0LIB*c|4hz0z?lL@}^au2VbPjGQH!T6>@Y#u7$^DnRBzrNrhOnp=x2SqDJ!Qp?( z7L+!f9F|CCCJc*q68N@{YfT4>fe(A3h1O~tr%s-L>z0&gLY_l}c5?+~-;q5s&rS#* zT7Io5#K?^)c|u_A5R}-iu~WInvS5aH;#wt)Yf zQ-1B&eg$uoUdW%=#<6j19N)vo1_7{fY#jd+A3yTH{UqM}<$sDsH$qSBdAJwk=1CC% z+%plNC4dlhQ@nG35C8H<9sHYbBv@EUv26s{S_76tT9FWlX9%y0pfHM+up=7@ZZ

    ?LgzuWz)2%{-x-^3oWO_{UtMK6^ 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%0A0`nK^zNP1@J0G12AASSw16=8|ibJShb; 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 z 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

\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'level-questions',\n displayName: 'Level Questions',\n version: '1.0.0',\n paramSchema: {},\n defaultParams: {}\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n QuizQuestion,\n QuizOption,\n Role,\n AxisScores,\n QuizResult\n} from './types';\n"],"names":["LevelQuestions","onComplete","onProgress","className","screen","setScreen","useState","introIndex","setIntroIndex","currentQuestion","setCurrentQuestion","answers","setAnswers","quizResult","setQuizResult","introCarouselRef","useRef","selectionCarouselRef","questions","questionsData","roles","calculateScores","useCallback","userAnswers","totals","q","answerId","option","o","findBestRole","scores","bestRole","bestDistance","role","distance","generateSummary","dominant","index","handleAnswer","questionId","optionId","newAnswers","progress","recommended","summary","handleAcceptRecommended","recommendedRole","r","handleWantToDecide","handleRoleSelect","handleStartQuiz","useEffect","carousel","handleScroll","scrollLeft","newIndex","currentQ","jsxs","styles","jsx","s","i","_","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vendor/glitch/glitch_lightlane/Component.d.ts b/dist/vendor/glitch/glitch_lightlane/Component.d.ts new file mode 100644 index 0000000..b416453 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/Component.d.ts @@ -0,0 +1,14 @@ +import { type GlitchComponentProps } from './types'; +type ComponentDevUiOverrides = { + showNumericDiagnostics?: boolean; + compactNumericDiagnostics?: boolean; + onOpenHarness?: () => void; + onSetParam?: (name: 'complexity' | 'speedup', value: number) => void; + maxComplexity?: number; + maxSpeedup?: number; +}; +type ComponentProps = GlitchComponentProps & { + devUi?: ComponentDevUiOverrides; +}; +export default function Component(props: ComponentProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/vendor/glitch/glitch_lightlane/components/DiophantineVectors.d.ts b/dist/vendor/glitch/glitch_lightlane/components/DiophantineVectors.d.ts new file mode 100644 index 0000000..c58efa8 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/components/DiophantineVectors.d.ts @@ -0,0 +1,10 @@ +interface DiophantineVectorsProps { + complexity: number; + lightlanes?: boolean; + radius?: number; + distance?: number; + allSectors?: boolean; + cumulative?: boolean; +} +export declare function DiophantineVectors({ complexity, lightlanes, radius, distance, allSectors, cumulative }: DiophantineVectorsProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/vendor/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts b/dist/vendor/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts new file mode 100644 index 0000000..b2a1b67 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts @@ -0,0 +1,22 @@ +import type { GlitchHostBridge } from '../types'; +interface FanoSweepPanelProps { + radius: number; + distance: number; + chandraDistance: number; + allSectors: boolean; + cumulative: boolean; + theta: number; + phi: number; + orbitSpeed: number; + thetaDrift: number; + thetaJitter: number; + phiJitter: number; + K: number; + speedup: number; + usePoisson: boolean; + bottomInset?: number; + onBack?: () => void; + host?: GlitchHostBridge; +} +export declare function FanoSweepPanel(props: FanoSweepPanelProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/vendor/glitch/glitch_lightlane/components/OrbitingObject.d.ts b/dist/vendor/glitch/glitch_lightlane/components/OrbitingObject.d.ts new file mode 100644 index 0000000..8190e96 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/components/OrbitingObject.d.ts @@ -0,0 +1,12 @@ +import { type MutableRefObject } from 'react'; +interface OrbitingObjectProps { + radius: number; + theta: number; + phi: number; + orbitTime: MutableRefObject; + simTime?: MutableRefObject; + thetaDrift?: number; + paused?: boolean; +} +export declare function OrbitingObject({ radius, theta, phi, orbitTime, simTime, thetaDrift, paused }: OrbitingObjectProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/vendor/glitch/glitch_lightlane/components/PoissonShell.d.ts b/dist/vendor/glitch/glitch_lightlane/components/PoissonShell.d.ts new file mode 100644 index 0000000..002434d --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/components/PoissonShell.d.ts @@ -0,0 +1,3 @@ +export declare function PoissonShell({ radius }: { + radius: number; +}): import("react/jsx-runtime").JSX.Element; diff --git a/dist/vendor/glitch/glitch_lightlane/components/PulsingSphere.d.ts b/dist/vendor/glitch/glitch_lightlane/components/PulsingSphere.d.ts new file mode 100644 index 0000000..6673eb6 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/components/PulsingSphere.d.ts @@ -0,0 +1,6 @@ +interface PulsingSphereProps { + radius: number; + paused?: boolean; +} +export declare function PulsingSphere({ radius, paused }: PulsingSphereProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/vendor/glitch/glitch_lightlane/components/SamplingSystem.d.ts b/dist/vendor/glitch/glitch_lightlane/components/SamplingSystem.d.ts new file mode 100644 index 0000000..ea738ce --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/components/SamplingSystem.d.ts @@ -0,0 +1,29 @@ +import type { GlitchHostBridge, SceneViewMode } from '../types'; +interface SamplingSystemProps { + complexity: number; + radius: number; + distance: number; + theta: number; + phi: number; + observationMode: 'orbit' | 'randomSphere'; + allSectors: boolean; + cumulative: boolean; + K: number; + orbitRadius: number; + orbitVelocity: number; + thetaDrift: number; + thetaJitter: number; + phiJitter: number; + usePoisson: boolean; + speedup: number; + paused: boolean; + sceneView: SceneViewMode; + bottomInset?: number; + showNumericDiagnostics?: boolean; + compactNumericDiagnostics?: boolean; + host?: GlitchHostBridge; + centerDistribution?: boolean; + hideFlyingBars?: boolean; +} +export declare function SamplingSystem({ complexity, radius, distance, theta, phi, observationMode, allSectors, cumulative, K, orbitRadius, orbitVelocity, thetaDrift, thetaJitter, phiJitter, usePoisson, speedup, paused, sceneView, bottomInset, showNumericDiagnostics, compactNumericDiagnostics, host, centerDistribution, hideFlyingBars }: SamplingSystemProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/vendor/glitch/glitch_lightlane/components/TargetDisc.d.ts b/dist/vendor/glitch/glitch_lightlane/components/TargetDisc.d.ts new file mode 100644 index 0000000..4a95429 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/components/TargetDisc.d.ts @@ -0,0 +1,6 @@ +interface TargetDiscProps { + radius: number; + distance: number; +} +export declare function TargetDisc({ radius, distance }: TargetDiscProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/vendor/glitch/glitch_lightlane/components/VectorArrow.d.ts b/dist/vendor/glitch/glitch_lightlane/components/VectorArrow.d.ts new file mode 100644 index 0000000..349ed2a --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/components/VectorArrow.d.ts @@ -0,0 +1,7 @@ +interface VectorArrowProps { + vector: [number, number, number]; + origin?: [number, number, number]; + color?: string; +} +export declare function VectorArrow({ vector, origin, color }: VectorArrowProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/dist/vendor/glitch/glitch_lightlane/dev.d.ts b/dist/vendor/glitch/glitch_lightlane/dev.d.ts new file mode 100644 index 0000000..2c068e0 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/dev.d.ts @@ -0,0 +1 @@ +import './dev-theme.css'; diff --git a/dist/vendor/glitch/glitch_lightlane/devHostBridge.d.ts b/dist/vendor/glitch/glitch_lightlane/devHostBridge.d.ts new file mode 100644 index 0000000..3fba17e --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/devHostBridge.d.ts @@ -0,0 +1,8 @@ +import type { GlitchHostBridge } from './types'; +export type DevHostBridgeOptions = { + isMuted?: () => boolean; + onSound?: (id: string, payload?: Record) => void; + onEmit?: (type: string, payload?: unknown) => void; +}; +export declare function createDevHostBridge(options?: DevHostBridgeOptions): GlitchHostBridge; +export declare function attachWindowSoundBridge(host: GlitchHostBridge): () => void; diff --git a/dist/vendor/glitch/glitch_lightlane/glitch.manifest.json b/dist/vendor/glitch/glitch_lightlane/glitch.manifest.json new file mode 100644 index 0000000..c4fb622 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "lightlane", + "displayName": "Lightlane Challenge", + "version": "0.1.0", + "folderName": "glitch_lightlane", + "packageName": "@nommo/lightlane", + "entry": "dist/lightlane.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "reference", + "3d" + ] +} diff --git a/dist/vendor/glitch/glitch_lightlane/hostBridge.d.ts b/dist/vendor/glitch/glitch_lightlane/hostBridge.d.ts new file mode 100644 index 0000000..fa85f46 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/hostBridge.d.ts @@ -0,0 +1,17 @@ +import type { GlitchHostBridge } from './types'; +export declare const HOST_SOUND_EVENT = "glitch:play-sound"; +export declare const HOST_STOP_SOUND_EVENT = "glitch:stop-sound"; +export declare const HOST_EMIT_PREFIX = "glitch:host:"; +export declare const SOUND_IDS: { + readonly click: "ui.button_click"; + readonly hover: "ui.button_hover"; + readonly computeStart: "machine.compute_start"; + readonly computeStep: "machine.compute_step"; + readonly computeDone: "machine.compute_done"; + readonly verdictStable: "machine.verdict_stable"; + readonly verdictAlert: "machine.verdict_alert"; +}; +export type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS]; +export declare function safePlaySound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeStopSound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown): void; diff --git a/dist/vendor/glitch/glitch_lightlane/index.d.ts b/dist/vendor/glitch/glitch_lightlane/index.d.ts new file mode 100644 index 0000000..50f28d5 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/index.d.ts @@ -0,0 +1,5 @@ +import Component from './Component'; +import { type GlitchComponentMetadata } from './types'; +export default Component; +export declare const metadata: GlitchComponentMetadata; +export type { GlitchComponentProps, GlitchComponentConfig, GlitchComponentResult, GlitchHostBridge } from './types'; diff --git a/dist/vendor/glitch/glitch_lightlane/lightlane.js b/dist/vendor/glitch/glitch_lightlane/lightlane.js new file mode 100644 index 0000000..030f745 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/lightlane.js @@ -0,0 +1,2805 @@ +import { jsx as n, jsxs as i, Fragment as Fe } from "react/jsx-runtime"; +import { useMemo as he, useState as $, useRef as Z, useEffect as de } from "react"; +import { useFrame as Qe } from "@react-three/fiber"; +import { Html as De, Grid as At } from "@react-three/drei"; +import * as Ye from "three"; +import { Color as Dt } from "three"; +function Nt({ vector: e, origin: t = [0, 0, 0], color: o = "#facc15" }) { + const { dir: r, len: l, position: a } = he(() => { + const c = new Ye.Vector3(...t), s = new Ye.Vector3(...e), d = c.distanceTo(s); + return { dir: s.clone().sub(c).normalize(), len: d, position: c }; + }, [e, t]), h = he(() => new Ye.ArrowHelper(r, a, l, o, 0.2 * Math.min(l, 1) + 0.1, 0.1 * Math.min(l, 1) + 0.05), [r, l, a, o]); + return /* @__PURE__ */ n("primitive", { object: h }); +} +function _t(e, t = !1) { + const o = []; + for (let r = 0; r <= e; r++) + for (let l = 0; l <= e - r; l++) { + const a = e - r - l; + if (a >= 0) + if (!t) + o.push([r, l, a]); + else { + const h = r === 0 ? [1] : [1, -1], c = l === 0 ? [1] : [1, -1], s = a === 0 ? [1] : [1, -1]; + for (const d of h) + for (const m of c) + for (const u of s) + o.push([r * d, l * m, a * u]); + } + } + return o; +} +function Ht({ vector: e, radius: t, distance: o, color: r }) { + const { position: l, quaternion: a } = he(() => { + const h = new Ye.Vector3(...e).normalize(), c = new Ye.Vector3(0, 1, 0), s = new Ye.Quaternion().setFromUnitVectors(c, h); + return { position: h.clone().multiplyScalar(o / 2), quaternion: s }; + }, [e, o]); + return /* @__PURE__ */ i("mesh", { position: l, quaternion: a, children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [t, t, o, 32] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: r, opacity: 0.5, transparent: !0 }) + ] }); +} +function Wt({ complexity: e, lightlanes: t = !1, radius: o = 0.5, distance: r = 5, allSectors: l = !1, cumulative: a = !1 }) { + const h = he(() => { + const s = [], d = a ? 1 : e, m = e; + for (let u = d; u <= m; u++) { + const x = _t(u, l); + for (const y of x) + s.push({ vec: y, c: u }); + } + return s; + }, [e, l, a]), c = (s) => { + const d = a ? Math.max(e, 1) : e; + return `hsl(${270 * (1 - (d > 1 ? (s - 1) / (d - 1) : 1))}, 100%, 50%)`; + }; + return /* @__PURE__ */ n("group", { children: h.map((s, d) => { + const m = a ? c(s.c) : t ? "#ff33c5" : "#4ade80"; + return t ? /* @__PURE__ */ n( + Ht, + { + vector: s.vec, + radius: o, + distance: r, + color: m + }, + `cyl-${d}-${s.vec.join(",")}-${s.c}` + ) : /* @__PURE__ */ n( + Nt, + { + vector: s.vec, + color: m + }, + `vec-${d}-${s.vec.join(",")}-${s.c}` + ); + }) }); +} +const Vt = "glitch:play-sound", jt = "glitch:stop-sound", we = { + click: "ui.button_click", + hover: "ui.button_hover", + computeStart: "machine.compute_start", + computeStep: "machine.compute_step", + computeDone: "machine.compute_done" +}; +function Ct(e, t) { + typeof window > "u" || window.dispatchEvent(new CustomEvent(e, { detail: t })); +} +function Ce(e, t, o) { + try { + if (e?.playSound) { + e.playSound(t, o); + return; + } + } catch { + } + Ct(Vt, { id: t, payload: o }); +} +function Yt(e, t, o) { + try { + if (e?.stopSound) { + e.stopSound(t, o); + return; + } + } catch { + } + Ct(jt, { id: t, payload: o }); +} +const Ue = 1e-12; +function ut(e = 123456789) { + let t = e >>> 0; + return function() { + t |= 0, t = t + 1831565813 | 0; + let r = Math.imul(t ^ t >>> 15, 1 | t); + return r = r + Math.imul(r ^ r >>> 7, 61 | r) ^ r, ((r ^ r >>> 14) >>> 0) / 4294967296; + }; +} +function Ut(e, t = Math.random) { + if (!Number.isFinite(e) || e <= 0) return 0; + if (e < 30) { + const h = Math.exp(-e); + let c = 0, s = 1; + do + c++, s *= t(); + while (s > h); + return c - 1; + } + const o = Math.max(1e-12, t()), r = t(), l = Math.sqrt(-2 * Math.log(o)) * Math.cos(2 * Math.PI * r), a = e + Math.sqrt(e) * l; + return Math.max(0, Math.round(a)); +} +function st(e) { + return [e[0] ?? e.x, e[1] ?? e.y, e[2] ?? e.z]; +} +function Gt(e, t, o) { + return Math.sqrt(e * e + t * t + o * o); +} +function kt(e) { + const t = 2 * Math.PI; + let o = e % t; + return o < 0 && (o += t), o; +} +function Jt(e) { + const t = 2 * e() - 1, o = 2 * Math.PI * e(); + return { + theta: Math.acos(Math.max(-1, Math.min(1, t))), + phi: o + }; +} +function mt(e) { + const t = 2 * Math.PI; + let o = e % t; + return o < 0 && (o += t), o > Math.PI && (o = t - o), o; +} +function Mt(e = Math.random) { + const t = Math.max(1e-12, e()), o = e(); + return Math.sqrt(-2 * Math.log(t)) * Math.cos(2 * Math.PI * o); +} +function qt(e, t, o) { + const r = Math.sin(t); + return [ + e * r * Math.cos(o), + e * Math.cos(t), + e * r * Math.sin(o) + ]; +} +function Xt(e, t = !1, o = !1) { + const r = [], l = o ? 1 : e, a = e; + for (let h = l; h <= a; h++) + for (let c = 0; c <= h; c++) + for (let s = 0; s <= h - c; s++) { + const d = h - c - s; + if (!t) { + r.push([c, s, d]); + continue; + } + const m = c === 0 ? [1] : [1, -1], u = s === 0 ? [1] : [1, -1], x = d === 0 ? [1] : [1, -1]; + for (const y of m) + for (const B of u) + for (const F of x) + r.push([c * y, s * B, d * F]); + } + return r; +} +function wt({ + D: e, + complexity: t, + allSectors: o = !1, + cumulative: r = !1 +}) { + if (!Number.isFinite(e) || e <= 0) return []; + if (!Number.isInteger(t) || t < 1) return []; + const l = Xt(t, o, r), a = []; + for (let h = 0; h < l.length; h++) { + const [c, s, d] = l[h], m = Gt(c, s, d); + m <= Ue || a.push([e * c / m, e * s / m, e * d / m]); + } + return a; +} +function Kt(e, t, o) { + if (!e || e.length === 0 || !Number.isFinite(o) || o <= 0) return 0; + const [r, l, a] = st(t), h = o * o; + let c = 0; + for (let s = 0; s < e.length; s++) { + const [d, m, u] = st(e[s]), x = d * d + m * m + u * u; + if (x <= Ue) continue; + let y = (r * d + l * m + a * u) / x; + y < 0 && (y = 0), y > 1 && (y = 1); + const B = y * d, F = y * m, R = y * u, C = r - B, j = l - F, v = a - R; + C * C + j * j + v * v < h && c++; + } + return c; +} +function Qt(e, t, o, r) { + if (!e || e.length === 0 || !Number.isFinite(t) || t <= 0 || !Number.isFinite(r) || r <= 0) return 0; + const [l, a, h] = st(o), s = t * t - 0.5 * r * r; + let d = 0; + for (let m = 0; m < e.length; m++) { + const [u, x, y] = st(e[m]); + l * u + a * x + h * y > s && d++; + } + return d; +} +function Bt({ D: e, lane_radius: t }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(t) || t <= 0) return 0; + const o = t * t / (4 * e * e); + return o <= 0 ? 0 : o > 1 ? 1 : o; +} +function Zt({ D: e, lane_radius: t, lane_length: o }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(t) || t <= 0 || !Number.isFinite(o) || o <= 0) return 0; + if (o >= e - Ue) + return Bt({ D: e, lane_radius: t }); + const r = t, l = o, a = e - l; + if (r <= a) return 0; + if (r >= e + l) return 1; + const h = Math.sqrt(Math.max(0, e * e - l * l)); + let c; + return r < h ? c = (e * e + l * l - r * r) / (2 * e * l) : r < e ? c = Math.sqrt(Math.max(0, 1 - r * r / (e * e))) : c = -1, Number.isFinite(c) ? (c < -1 && (c = -1), c > 1 && (c = 1), (1 - c) / 2) : 0; +} +function en({ flux: e, D: t, lane_radius: o, dt: r }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(r) || r <= 0) return 0; + const l = Bt({ D: t, lane_radius: o }); + return e * l * r; +} +function tn({ flux: e, D: t, lane_radius: o, lane_length: r, dt: l }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(l) || l <= 0) return 0; + const a = Zt({ D: t, lane_radius: o, lane_length: r }); + return e * a * l; +} +function Et({ + flux: e, + D: t, + lane_radius: o, + dt: r, + hitTestModel: l = "shell", + lane_length: a +}) { + return l === "segment" ? tn({ flux: e, D: t, lane_radius: o, lane_length: a, dt: r }) : en({ flux: e, D: t, lane_radius: o, dt: r }); +} +function nn(e) { + if (!e || typeof e != "object") + throw new Error("createSamplingSimulation: config object is required."); + const t = e.lane_radius ?? e.radius, o = e.D, r = e.complexity, l = e.flux, a = e.bin_size ?? 1, h = e.sub_bin_sampling ?? 4, c = e.thetaDrift ?? e.theta_drift ?? 0, s = e.thetaJitter ?? e.theta_jitter ?? 0, d = e.phiJitter ?? e.phi_jitter ?? 0, m = e.laneLength ?? e.lane_length ?? e.distance ?? o, u = e.hitTestModel ?? e.hit_test_model ?? "shell", x = e.observationMode ?? e.observation_mode ?? "orbit"; + if (!Number.isFinite(o) || o <= 0) + throw new Error("createSamplingSimulation: D must be a positive number."); + if (!Number.isFinite(t) || t <= 0) + throw new Error("createSamplingSimulation: lane_radius (or radius) must be a positive number."); + if (!Number.isInteger(r) || r < 1) + throw new Error("createSamplingSimulation: complexity must be an integer >= 1."); + if (!Number.isFinite(l) || l < 0) + throw new Error("createSamplingSimulation: flux must be a finite number >= 0."); + if (!Number.isFinite(a) || a <= 0) + throw new Error("createSamplingSimulation: bin_size must be a positive number."); + if (!Number.isInteger(h) || h < 1) + throw new Error("createSamplingSimulation: sub_bin_sampling must be an integer >= 1."); + if (!Number.isFinite(c)) + throw new Error("createSamplingSimulation: thetaDrift must be finite."); + if (!Number.isFinite(s) || s < 0) + throw new Error("createSamplingSimulation: thetaJitter must be a finite number >= 0."); + if (!Number.isFinite(d) || d < 0) + throw new Error("createSamplingSimulation: phiJitter must be a finite number >= 0."); + if (!Number.isFinite(m) || m <= 0) + throw new Error("createSamplingSimulation: laneLength/lane_length/distance must be a positive number."); + if (u !== "shell" && u !== "segment") + throw new Error('createSamplingSimulation: hitTestModel must be "shell" or "segment".'); + if (x !== "orbit" && x !== "randomSphere") + throw new Error('createSamplingSimulation: observationMode must be "orbit" or "randomSphere".'); + return { + D: o, + lane_radius: t, + complexity: r, + flux: l, + bin_size: a, + sub_bin_sampling: h, + theta: mt(e.theta ?? Math.PI / 2), + phi: kt(e.phi ?? 0), + velocity: e.velocity ?? 0, + thetaDrift: c, + thetaJitter: s, + phiJitter: d, + lane_length: m, + hitTestModel: u, + observationMode: x, + allSectors: !!e.allSectors, + cumulative: !!e.cumulative, + usePoisson: e.usePoisson !== !1, + seed: Number.isFinite(e.seed) ? e.seed : 1 + }; +} +function It(e) { + const t = nn(e), o = wt(t), r = t.hitTestModel === "segment" ? wt({ ...t, D: t.lane_length }) : o, l = ut(t.seed), a = ut(t.seed + 1), h = ut(t.seed + 2), c = t.bin_size / t.sub_bin_sampling, s = Et({ + flux: t.flux, + D: t.D, + lane_radius: t.lane_radius, + dt: c, + hitTestModel: t.hitTestModel, + lane_length: t.lane_length + }); + let d = 0, m = 0, u = t.phi, x = t.theta, y = 0, B = 0, F = 0, R = 0, C = 0, j = 0, v = 0; + function L(k, A) { + return t.usePoisson ? Ut(k, A) : k; + } + function O(k = x, A = u) { + return qt(t.D, k, A); + } + function J() { + let k, A; + if (t.observationMode === "randomSphere") { + const P = Jt(h); + k = P.theta, A = P.phi; + } else + k = mt( + x + (t.thetaJitter > 0 ? t.thetaJitter * Mt(h) : 0) + ), A = kt( + u + (t.phiJitter > 0 ? t.phiJitter * Mt(h) : 0) + ); + const ee = O(k, A), z = t.hitTestModel === "segment" ? Kt(r, ee, t.lane_radius) : Qt(o, t.D, ee, t.lane_radius); + j = z; + const D = o.length, N = D > 0 ? z * t.flux * c / D : 0; + return B += L(N, l), F += L(s, a), R += N, v += z, C++, { + laneCount: z, + satPos: ee, + lambdaLightlaneSubBin: N, + phase: A, + theta: k + }; + } + function _() { + const k = C > 0 ? C * c : t.bin_size, A = s * t.sub_bin_sampling, D = { + time: y, + bin_size: k, + lightlane: B, + isotropic: F, + lambdaIsotropic: C > 0 ? s * C : A, + overlaps: j, + overlapsMean: C > 0 ? v / C : 0, + subBins: C, + phase: u, + theta: x, + lambdaLightlaneExpected: R + }; + return B = 0, F = 0, R = 0, v = 0, C = 0, D; + } + return { + config: { ...t }, + getLaneCount() { + return o.length; + }, + getState() { + return { + elapsed: y, + phase: u, + theta: x, + timeInBin: d, + timeInSubBin: m, + accumulatedLightlane: B, + accumulatedIsotropic: F, + expectedLightlaneThisBin: R, + processedSubBinsInCurrentBin: C, + lastLaneCount: j, + laneCount: o.length + }; + }, + reset() { + d = 0, m = 0, u = t.phi, x = t.theta, y = 0, B = 0, F = 0, R = 0, C = 0, j = 0, v = 0; + }, + flushPartialBin() { + if (C <= 0) return null; + const k = _(); + return d = 0, m = 0, k; + }, + simulate(k) { + if (!Number.isFinite(k) || k <= 0) + return { + bins: [], + lastLaneCount: j, + subBinEvents: 0, + elapsed: y + }; + let A = k, ee = 0; + const z = []; + for (; A > Ue; ) { + const D = c - m, N = t.bin_size - d, P = Math.min(A, D, N); + u += t.velocity * P, x = mt(x + t.thetaDrift * P), y += P, m += P, d += P, A -= P, m >= c - Ue && (m = 0, J(), ee++), d >= t.bin_size - Ue && (d = 0, z.push(_())); + } + return { + bins: z, + lastLaneCount: j, + subBinEvents: ee, + elapsed: y + }; + } + }; +} +function Ft(e, t) { + const o = e.n + 1, r = t - e.mean, l = e.mean + r / o, a = e.m2 + r * (t - l); + return { n: o, mean: l, m2: a }; +} +function Pt() { + return { n: 0, mean: 0, m2: 0 }; +} +function on({ + complexity: e, + samplesPerPoint: t, + runsPerPoint: o, + binSize: r, + subBinSampling: l, + props: a, + observationMode: h, + seed: c +}) { + let s = Pt(), d = Pt(), m = 0; + for (let F = 0; F < o; F++) { + const R = It({ + D: a.chandraDistance, + theta: a.theta, + phi: a.phi, + observationMode: h, + velocity: a.orbitSpeed, + thetaDrift: a.thetaDrift, + thetaJitter: a.thetaJitter, + phiJitter: a.phiJitter, + bin_size: r, + complexity: e, + sub_bin_sampling: l, + flux: a.K, + lane_radius: a.radius, + distance: a.distance, + hitTestModel: "segment", + allSectors: a.allSectors, + cumulative: a.cumulative, + usePoisson: a.usePoisson, + seed: c + F * 7919 + }); + F === 0 && (m = R.getLaneCount()); + for (let C = 0; C < t; C++) { + const { bins: j } = R.simulate(r), v = j[0]; + v && (s = Ft(s, v.lightlane), d = Ft(d, v.isotropic)); + } + } + const u = s.n > 1 ? s.m2 / (s.n - 1) : 0, x = d.n > 1 ? d.m2 / (d.n - 1) : 0, y = s.mean > 0 ? u / s.mean : 0, B = d.mean > 0 ? x / d.mean : 0; + return { + complexity: e, + laneCount: m, + meanBlue: s.mean, + meanYellow: d.mean, + fanoBlue: y, + fanoYellow: B, + fanoExcess: Math.max(0, y - B) + }; +} +function rn(e, t = 1) { + const o = e.filter((u) => u.complexity >= t && u.complexity > 1 && u.fanoExcess > 1e-6); + if (o.length < 3) return null; + let r = 0, l = 0, a = 0, h = 0; + const c = o.length; + for (const u of o) { + const x = Math.log(u.laneCount), y = Math.log(u.fanoExcess); + r += x, l += y, a += x * x, h += x * y; + } + const s = c * a - r * r; + if (Math.abs(s) < 1e-12) return null; + const d = (c * h - r * l) / s, m = (l - d * r) / c; + return { + A: Math.exp(m), + alpha: -d, + predictFanoExcessFromLaneCount(u) { + return Math.exp(m + d * Math.log(Math.max(1, u))); + } + }; +} +function an(e, t = 1) { + const o = e.filter((c) => c.complexity >= t && c.complexity > 1 && c.fanoExcess > 1e-6); + if (o.length < 4) return null; + const r = Math.min(...o.map((c) => c.fanoExcess)), l = Math.max(0, r * 0.98); + let a = null; + const h = 80; + for (let c = 0; c <= h; c++) { + const s = c / h * l, d = o.map((O) => ({ x: O.laneCount, y: O.fanoExcess - s })).filter((O) => O.y > 1e-9); + if (d.length < 3) continue; + let m = 0, u = 0, x = 0, y = 0; + const B = d.length; + for (const O of d) { + const J = Math.log(O.x), _ = Math.log(O.y); + m += J, u += _, x += J * J, y += J * _; + } + const F = B * x - m * m; + if (Math.abs(F) < 1e-12) continue; + const R = (B * y - m * u) / F, C = (u - R * m) / B, j = Math.exp(C), v = -R; + if (!(j > 0) || !(v > 0)) continue; + let L = 0; + for (const O of o) { + const J = s + j * Math.pow(Math.max(1, O.laneCount), -v), _ = Math.log(Math.max(1e-9, O.fanoExcess)) - Math.log(Math.max(1e-9, J)); + L += _ * _; + } + (!a || L < a.score) && (a = { A: j, alpha: v, B: s, score: L }); + } + return a ? { + A: a.A, + alpha: a.alpha, + B: a.B, + score: a.score, + predictFanoExcessFromLaneCount(c) { + return a.B + a.A * Math.pow(Math.max(1, c), -a.alpha); + } + } : null; +} +function sn(e) { + const t = e.filter((u) => u.x > 0 && u.y > 0); + if (t.length < 3) return null; + let o = 0, r = 0, l = 0, a = 0; + const h = t.length; + for (const u of t) { + const x = Math.log(u.x), y = Math.log(u.y); + o += x, r += y, l += x * x, a += x * y; + } + const c = h * l - o * o; + if (Math.abs(c) < 1e-12) return null; + const s = (h * a - o * r) / c, d = (r - s * o) / h, m = Math.exp(d); + return { + A: m, + beta: s, + predict(u) { + return m * Math.pow(Math.max(1e-9, u), s); + }, + invert(u) { + return m <= 0 || Math.abs(s) < 1e-12 || u <= 0 ? null : Math.pow(u / m, 1 / s); + } + }; +} +function ln(e, t) { + if (!Number.isFinite(t) || t <= 0 || e.length === 0) return null; + const o = [...e].sort((s, d) => s.complexity - d.complexity), r = [...o].sort((s, d) => s.laneCount - d.laneCount), l = r[0], a = r[r.length - 1]; + if (t <= l.laneCount) + return { complexity: l.complexity, mode: "observed-range" }; + for (let s = 1; s < r.length; s++) { + const d = r[s - 1], m = r[s]; + if (t <= m.laneCount) { + const u = Math.max(1e-9, m.laneCount - d.laneCount), x = (t - d.laneCount) / u; + return { + complexity: d.complexity + x * (m.complexity - d.complexity), + mode: "observed-range" + }; + } + } + const c = sn(o.map((s) => ({ x: s.complexity, y: s.laneCount })))?.invert(t) ?? null; + return c && Number.isFinite(c) ? { complexity: c, mode: "extrapolated" } : { complexity: a.complexity, mode: "observed-max" }; +} +function Tt(e, t, o, r) { + return e.map((l, a) => `${a === 0 ? "M" : "L"} ${o(l.complexity)} ${r(t(l))}`).join(" "); +} +function cn(e) { + return e >= 10 ? e.toFixed(0) : e >= 2 ? e.toFixed(1) : e.toFixed(2); +} +function dn(e, t) { + const r = [ + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 1, + 1.1, + 1.2, + 1.4, + 1.6, + 1.8, + 2, + 2.5, + 3, + 4, + 5, + 7.5, + 10 + ].filter((c) => c >= e && c <= t); + if (r.length >= 3) return r; + const l = 5, a = Math.log(e), h = Math.log(t); + return Array.from({ length: l }, (c, s) => { + const d = s / (l - 1); + return Math.exp(a + (h - a) * d); + }); +} +function pn(e) { + const [t, o] = $(40), [r, l] = $(1e3), [a, h] = $(3), [c, s] = $(1), [d, m] = $(4), [u, x] = $("randomSphere"), [y, B] = $(0.05), [F, R] = $(10), [C, j] = $(0), [v, L] = $([]), [O, J] = $(0), [_, k] = $(!1), A = Z(!1), ee = Z(-1), z = () => { + Ce(e.host, we.hover, { page: "fano" }); + }, D = (b, T) => { + Ce(e.host, we.click, { page: "fano", target: b, ...T }); + }; + de(() => { + let b = !1; + return L([]), J(0), k(!0), (async () => { + const T = []; + for (let E = 1; E <= t; E++) { + if (b) return; + const I = on({ + complexity: E, + samplesPerPoint: r, + runsPerPoint: a, + binSize: c, + subBinSampling: d, + props: e, + observationMode: u, + seed: 1e4 + E * 97 + C * 100003 + }); + T.push(I), L([...T]), J(E / t), await new Promise((ne) => setTimeout(ne, 0)); + } + b || k(!1); + })(), () => { + b = !0; + }; + }, [ + t, + r, + a, + c, + d, + u, + C, + e.radius, + e.distance, + e.chandraDistance, + e.allSectors, + e.cumulative, + e.theta, + e.phi, + e.orbitSpeed, + e.thetaDrift, + e.thetaJitter, + e.phiJitter, + e.K, + e.speedup, + e.usePoisson + ]), de(() => { + const b = A.current; + if (A.current = _, _ && !b) { + ee.current = -1, Ce(e.host, we.computeStart, { page: "fano" }); + return; + } + !_ && b && (Yt(e.host, we.computeStep, { page: "fano" }), Ce(e.host, we.computeDone, { page: "fano", points: v.length })); + }, [_, e.host, v.length]), de(() => { + if (!_) return; + const b = Math.floor(O * 10); + b <= ee.current || (ee.current = b, Ce(e.host, we.computeStep, { page: "fano", progress: O })); + }, [O, _, e.host]); + const N = he(() => rn(v, F), [v, F]), P = he(() => an(v, F), [v, F]), H = he(() => { + if (!N || N.alpha <= 0 || y <= 0) return null; + if (P && P.B >= y) + return { + targetExcess: y, + requiredLaneCount: Number.POSITIVE_INFINITY, + measuredCrossing: v.find((se) => se.fanoExcess <= y) ?? null, + complexityEstimate: null, + blockedByFloor: !0, + floorExcess: P.B + }; + const b = P ? Math.max(1e-9, y - P.B) : y, T = P ? P.A : N.A, E = P ? P.alpha : N.alpha, I = Math.pow(T / b, 1 / E); + if (!Number.isFinite(I) || I <= 0) return null; + const ne = v.find((se) => se.fanoExcess <= y) ?? null, G = ln(v, I); + return { + targetExcess: y, + requiredLaneCount: I, + measuredCrossing: ne, + complexityEstimate: G, + blockedByFloor: !1, + floorExcess: P?.B ?? 0 + }; + }, [N, P, v, y]), g = he(() => { + const E = { top: 20, right: 20, bottom: 42, left: 48 }, I = 860 - E.left - E.right, ne = 360 - E.top - E.bottom, G = Math.max(2, t), se = [ + 1, + ...v.map((Y) => Y.fanoBlue), + ...v.map((Y) => Y.fanoYellow), + ...v.map((Y) => 1 + Y.fanoExcess) + ].filter((Y) => Number.isFinite(Y) && Y > 0), ve = Math.min(...se), Re = Math.max(...se), X = Math.max(1e-3, Math.min(0.95, ve * 0.95)), Pe = Math.max(1.05, Re * 1.05), Be = Math.log(X), Je = Math.log(Pe), me = (Y) => E.left + (Y - 1) / (G - 1) * I, Ee = (Y) => { + const Ie = Math.min(Pe, Math.max(X, Y)), le = Math.log(Ie); + return E.top + ne - (le - Be) / Math.max(1e-9, Je - Be) * ne; + }, Se = dn(X, Pe); + return { width: 860, height: 360, margin: E, innerW: I, innerH: ne, xToPx: me, yToPx: Ee, yMax: Pe, yMin: X, yTicks: Se }; + }, [v, t]), ue = he( + () => v.length > 1 ? Tt(v, (b) => b.fanoBlue, g.xToPx, g.yToPx) : "", + [v, g] + ), ke = he( + () => v.length > 1 ? Tt(v, (b) => b.fanoYellow, g.xToPx, g.yToPx) : "", + [v, g] + ), q = v.at(-1) ?? null; + return /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "auto" }, children: /* @__PURE__ */ i( + "div", + { + style: { + width: "100%", + height: "100%", + display: "flex", + flexDirection: "column", + background: "radial-gradient(circle at 20% 10%, rgba(30,41,59,0.9), rgba(2,6,23,0.96))", + color: "var(--terminal-green-soft)", + padding: "16px", + paddingBottom: `${16 + (e.bottomInset ?? 0)}px`, + boxSizing: "border-box", + gap: "12px", + fontFamily: "var(--font-ui)" + }, + children: [ + /* @__PURE__ */ i("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", gap: "12px", flexWrap: "wrap" }, children: [ + /* @__PURE__ */ i("div", { children: [ + /* @__PURE__ */ n("div", { style: { fontSize: "14px", fontWeight: 400, letterSpacing: "0.12em", textTransform: "uppercase", fontFamily: "var(--font-headline)", color: "var(--terminal-green-soft)" }, children: "Fano Sweep" }), + /* @__PURE__ */ i("div", { style: { fontSize: "11px", color: "var(--terminal-green)", marginTop: "4px" }, children: [ + "Goal: show ", + "Fano(Blue)", + " trending toward 1.0 (or toward Yellow) as complexity increases." + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [ + e.onBack && /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("back-to-simulator"), e.onBack?.(); + }, + onPointerEnter: z, + style: { + border: "1px solid var(--terminal-panel-border)", + background: "rgba(7,19,11,0.8)", + color: "var(--terminal-green-soft)", + padding: "8px 12px", + borderRadius: "8px", + cursor: "pointer", + fontSize: "12px", + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.08em", + textTransform: "uppercase" + }, + children: "Back To Simulator" + } + ), + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("rerun-sweep"), j((b) => b + 1); + }, + onPointerEnter: z, + style: { + border: "1px solid var(--terminal-panel-border)", + background: _ ? "rgba(125, 255, 155, 0.14)" : "rgba(7,19,11,0.8)", + color: "var(--terminal-green-soft)", + padding: "8px 12px", + borderRadius: "8px", + cursor: "pointer", + fontSize: "12px", + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.08em", + textTransform: "uppercase" + }, + children: _ ? "Rerun (queued)" : "Rerun Sweep" + } + ) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [ + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("preset-video-demo"), x("randomSphere"), o(60), l(1200), h(2), s(1), m(4), R(12); + }, + onPointerEnter: z, + style: { + border: "1px solid var(--terminal-panel-border)", + background: "rgba(7,19,11,0.8)", + color: "var(--terminal-green-soft)", + padding: "6px 10px", + borderRadius: 8, + cursor: "pointer", + fontSize: 11, + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.06em" + }, + children: "Preset: Video Demo" + } + ), + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("preset-robust-sweep"), x("randomSphere"), o(200), l(3e3), h(5), s(1), m(16), R(40); + }, + onPointerEnter: z, + style: { + border: "1px solid rgba(125, 255, 155, 0.32)", + background: "rgba(2,6,23,0.8)", + color: "var(--terminal-green-soft)", + padding: "6px 10px", + borderRadius: 8, + cursor: "pointer", + fontSize: 11, + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.06em" + }, + children: "Preset: Robust Sweep" + } + ) + ] }), + /* @__PURE__ */ i("div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(140px, 1fr))", gap: "8px" }, children: [ + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Max Complexity", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 2, + max: 200, + value: t, + onChange: (b) => o(Math.max(2, Math.min(200, Number(b.target.value) || 2))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Samples / Point", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 100, + max: 2e4, + step: 100, + value: r, + onChange: (b) => l(Math.max(100, Math.min(2e4, Number(b.target.value) || 100))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Runs / Point (Seeds)", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1, + max: 20, + step: 1, + value: a, + onChange: (b) => h(Math.max(1, Math.min(20, Number(b.target.value) || 1))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Bin Size (s)", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 0.1, + max: 20, + step: 0.1, + value: c, + onChange: (b) => s(Math.max(0.1, Math.min(20, Number(b.target.value) || 0.1))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Sub-Bin Sampling", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1, + max: 256, + step: 1, + value: d, + onChange: (b) => m(Math.max(1, Math.min(256, Math.round(Number(b.target.value) || 1)))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Observation Mode", + /* @__PURE__ */ i( + "select", + { + value: u, + onChange: (b) => x(b.target.value), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }, + children: [ + /* @__PURE__ */ n("option", { value: "randomSphere", children: "Random Sphere (recommended)" }), + /* @__PURE__ */ n("option", { value: "orbit", children: "Orbit (path-biased)" }) + ] + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Target Excess (B-Y)", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1e-3, + max: 1, + step: 5e-3, + value: y, + onChange: (b) => B(Math.max(1e-3, Math.min(1, Number(b.target.value) || 0.05))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Fit Start Complexity", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1, + max: t, + step: 1, + value: F, + onChange: (b) => R(Math.max(1, Math.min(t, Number(b.target.value) || 1))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("div", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "6px" }, children: [ + "Progress", + /* @__PURE__ */ n("div", { style: { background: "rgba(7,19,11,0.9)", border: "1px solid var(--terminal-panel-border)", borderRadius: "999px", padding: "3px" }, children: /* @__PURE__ */ n( + "div", + { + style: { + height: "8px", + width: `${Math.round(O * 100)}%`, + background: "linear-gradient(90deg, var(--terminal-green-dim), var(--terminal-green-soft))", + borderRadius: "999px", + transition: "width 0.15s ease" + } + } + ) }), + /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: _ ? `Running ${Math.round(O * 100)}%` : "Complete" }) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { display: "flex", flexDirection: "column", gap: "12px", minHeight: 0, flex: 1 }, children: [ + /* @__PURE__ */ n( + "div", + { + style: { + background: "rgba(7,19,11,0.72)", + border: "1px solid var(--terminal-panel-border)", + borderRadius: "10px", + padding: "10px", + width: "100%", + minWidth: 0, + minHeight: "min(58vh, 520px)" + }, + children: /* @__PURE__ */ i("svg", { viewBox: `0 0 ${g.width} ${g.height}`, style: { width: "100%", height: "100%" }, children: [ + /* @__PURE__ */ n("rect", { x: 0, y: 0, width: g.width, height: g.height, fill: "transparent" }), + g.yTicks.map((b, T) => { + const E = g.yToPx(b); + return /* @__PURE__ */ i("g", { children: [ + /* @__PURE__ */ n("line", { x1: g.margin.left, y1: E, x2: g.margin.left + g.innerW, y2: E, stroke: "rgba(125, 255, 155, 0.12)" }), + /* @__PURE__ */ n("text", { x: 8, y: E + 4, fill: "var(--terminal-green)", fontSize: "10", fontFamily: "var(--font-ui)", children: cn(b) }) + ] }, `ygrid-${T}`); + }), + /* @__PURE__ */ n( + "line", + { + x1: g.margin.left, + y1: g.yToPx(1), + x2: g.margin.left + g.innerW, + y2: g.yToPx(1), + stroke: "#f97316", + strokeDasharray: "4 4", + opacity: 0.8 + } + ), + /* @__PURE__ */ n("text", { x: g.margin.left + 6, y: g.yToPx(1) - 6, fill: "#fdba74", fontSize: "10", children: "Fano = 1" }), + /* @__PURE__ */ n("line", { x1: g.margin.left, y1: g.margin.top + g.innerH, x2: g.margin.left + g.innerW, y2: g.margin.top + g.innerH, stroke: "rgba(125, 255, 155, 0.3)" }), + /* @__PURE__ */ n("line", { x1: g.margin.left, y1: g.margin.top, x2: g.margin.left, y2: g.margin.top + g.innerH, stroke: "rgba(125, 255, 155, 0.3)" }), + Array.from({ length: Math.min(t, 10) }, (b, T) => { + const E = 1 + (t - 1) * T / Math.max(1, Math.min(t - 1, 9)), I = g.xToPx(E); + return /* @__PURE__ */ i("g", { children: [ + /* @__PURE__ */ n("line", { x1: I, y1: g.margin.top + g.innerH, x2: I, y2: g.margin.top + g.innerH + 4, stroke: "rgba(125, 255, 155, 0.3)" }), + /* @__PURE__ */ n("text", { x: I, y: g.margin.top + g.innerH + 18, fill: "var(--terminal-green)", fontSize: "10", fontFamily: "var(--font-ui)", textAnchor: "middle", children: Math.round(E) }) + ] }, `xtick-${T}`); + }), + ke && /* @__PURE__ */ n("path", { d: ke, fill: "none", stroke: "#fbbf24", strokeWidth: "2", opacity: 0.95 }), + ue && /* @__PURE__ */ n("path", { d: ue, fill: "none", stroke: "#60a5fa", strokeWidth: "2.25", opacity: 0.95 }), + N && v.length > 2 && (() => { + const b = v.filter((T) => T.complexity >= F).map((T, E) => { + const I = 1 + N.predictFanoExcessFromLaneCount(T.laneCount); + return `${E === 0 ? "M" : "L"} ${g.xToPx(T.complexity)} ${g.yToPx(I)}`; + }).join(" "); + return /* @__PURE__ */ n("path", { d: b, fill: "none", stroke: "#93c5fd", strokeDasharray: "5 4", strokeWidth: "1.5", opacity: 0.8 }); + })(), + P && v.length > 2 && (() => { + const b = v.filter((T) => T.complexity >= F).map((T, E) => { + const I = 1 + P.predictFanoExcessFromLaneCount(T.laneCount); + return `${E === 0 ? "M" : "L"} ${g.xToPx(T.complexity)} ${g.yToPx(I)}`; + }).join(" "); + return /* @__PURE__ */ n("path", { d: b, fill: "none", stroke: "#22d3ee", strokeDasharray: "2 4", strokeWidth: "1.5", opacity: 0.7 }); + })(), + v.map((b) => /* @__PURE__ */ i("g", { children: [ + /* @__PURE__ */ n("circle", { cx: g.xToPx(b.complexity), cy: g.yToPx(b.fanoYellow), r: "2.2", fill: "#fbbf24" }), + /* @__PURE__ */ n("circle", { cx: g.xToPx(b.complexity), cy: g.yToPx(b.fanoBlue), r: "2.5", fill: "#60a5fa" }) + ] }, `dot-${b.complexity}`)), + /* @__PURE__ */ n("text", { x: g.margin.left + g.innerW / 2, y: g.height - 8, fill: "var(--terminal-green)", fontSize: "11", fontFamily: "var(--font-ui)", textAnchor: "middle", children: "Complexity" }), + /* @__PURE__ */ n( + "text", + { + x: 14, + y: g.margin.top + g.innerH / 2, + fill: "var(--terminal-green)", + fontSize: "11", + fontFamily: "var(--font-ui)", + textAnchor: "middle", + transform: `rotate(-90 14 ${g.margin.top + g.innerH / 2})`, + children: "Fano Factor (Var / Mean, log scale)" + } + ) + ] }) + } + ), + /* @__PURE__ */ i( + "div", + { + style: { + display: "grid", + gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))", + gap: "8px", + alignItems: "start" + }, + children: [ + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Legend" }), + /* @__PURE__ */ n("div", { style: { color: "#60a5fa" }, children: "Blue: Lightlane Fano" }), + /* @__PURE__ */ n("div", { style: { color: "#fbbf24" }, children: "Yellow: Isotropic Fano" }), + /* @__PURE__ */ n("div", { style: { color: "#fdba74", marginTop: "4px" }, children: "Dashed orange: Fano = 1" }), + /* @__PURE__ */ n("div", { style: { color: "#93c5fd", marginTop: "4px" }, children: "Dashed blue: power-fit extrapolation (blue excess over yellow)" }), + /* @__PURE__ */ n("div", { style: { color: "#22d3ee", marginTop: "4px" }, children: "Dashed cyan: floor-aware fit (B + A×N^-α)" }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Latest Point" }), + q ? /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ i("div", { children: [ + "Complexity: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.complexity }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Lanes: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.laneCount }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Mean Ratio (B/Y): ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: (q.meanBlue / Math.max(1e-9, q.meanYellow)).toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Fano Blue: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#93c5fd" }, children: q.fanoBlue.toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Fano Yellow: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#fef3c7" }, children: q.fanoYellow.toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Excess (B-Y): ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.fanoExcess.toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ + "Aggregated over ", + r.toLocaleString(), + " bins × ", + a, + " seeds" + ] }) + ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "No points yet." }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Power Fit" }), + N ? /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green-soft)" }, children: [ + "Excess ≈ ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: N.A.toExponential(2) }), + " × N", + /* @__PURE__ */ i("sup", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: [ + "-", + N.alpha.toFixed(2) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ + "Fit is on blue excess over yellow using lane count N, starting at complexity ", + F, + "." + ] }) + ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "Need more points with nonzero excess." }), + P && /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ + "Floor fit: excess ≈ ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: P.B.toFixed(3) }), + " + ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: P.A.toExponential(2) }), + " × N", + /* @__PURE__ */ i("sup", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: [ + "-", + P.alpha.toFixed(2) + ] }) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Indistinguishable Target" }), + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginBottom: "6px" }, children: [ + "Criterion: ", + /* @__PURE__ */ i("span", { style: { color: "var(--terminal-green-soft)" }, children: [ + "Fano Blue - Fano Yellow ≤ ", + y.toFixed(3) + ] }) + ] }), + H ? /* @__PURE__ */ i(Fe, { children: [ + H.blockedByFloor ? /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ n("div", { style: { color: "#ff8f8f" }, children: "Floor-aware fit predicts no finite crossing for this threshold." }), + /* @__PURE__ */ i("div", { children: [ + "Fitted excess floor:", + " ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: H.floorExcess.toFixed(3) }) + ] }), + /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: "Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau." }) + ] }) : /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ i("div", { children: [ + "Required lane count N (fit):", + " ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: Math.round(H.requiredLaneCount).toLocaleString() }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Estimated complexity:", + " ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#93c5fd" }, children: H.complexityEstimate ? Math.ceil(H.complexityEstimate.complexity).toLocaleString() : "n/a" }), + H.complexityEstimate && /* @__PURE__ */ i("span", { style: { color: "var(--terminal-green)" }, children: [ + " ", + "(", + H.complexityEstimate.mode === "observed-range" ? "interpolated from current sweep" : H.complexityEstimate.mode === "extrapolated" ? "extrapolated" : "bounded by current sweep", + ")" + ] }) + ] }) + ] }), + /* @__PURE__ */ n("div", { style: { marginTop: "6px", color: "var(--terminal-green)" }, children: H.measuredCrossing ? `Observed crossing already reached at complexity ${H.measuredCrossing.complexity}.` : "No observed crossing yet in current sweep; estimate uses fit." }) + ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "Need a stable excess fit (nonzero blue excess across multiple points)." }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px", color: "var(--terminal-green)" }, children: [ + "Use ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "Random Sphere" }), + " to isolate discretization convergence from path bias. Orbit mode is still useful to show persistent anisotropy on specific trajectories.", + /* @__PURE__ */ i("div", { style: { marginTop: "6px" }, children: [ + "For a stronger/cleaner claim in the video: report the threshold estimate together with ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "bin size" }), + ", ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "sub-bin sampling" }), + ", and ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "runs/point" }), + "." + ] }), + /* @__PURE__ */ n("div", { style: { marginTop: "6px" }, children: "If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers." }) + ] }) + ] + } + ) + ] }) + ] + } + ) }); +} +const Ge = new Dt("#dbeafe"); +function hn(e, t) { + const o = new Float32Array(t * 3), r = new Float32Array(t * 3), l = [], a = e + 0.01; + for (let h = 0; h < t; h += 1) { + const c = Math.random(), s = Math.random(), d = 2 * Math.PI * c, m = 1 - 2 * s, u = Math.sqrt(Math.max(0, 1 - m * m)), x = h * 3; + o[x] = a * u * Math.cos(d), o[x + 1] = a * u * Math.sin(d), o[x + 2] = a * m, r[x] = Ge.r * 0.15, r[x + 1] = Ge.g * 0.15, r[x + 2] = Ge.b * 0.15, l.push({ + speed: 0.8 + Math.random() * 2.6, + phase: Math.random() * Math.PI * 2, + minBrightness: 0.03 + Math.random() * 0.06, + maxBoost: 0.35 + Math.random() * 0.85 + }); + } + return { positions: o, colors: r, sparklePoints: l }; +} +function un({ radius: e }) { + const t = Z(null), o = 16e3, { positions: r, colors: l, sparklePoints: a } = he( + () => hn(e, o), + [e] + ); + return Qe(({ clock: h }) => { + const c = t.current; + if (!c) return; + const s = c.geometry.getAttribute("color"); + if (!s) return; + const d = h.getElapsedTime(), m = s.array; + for (let u = 0; u < a.length; u += 1) { + const x = a[u], y = Math.pow(Math.max(0, Math.sin(d * x.speed + x.phase)), 24), B = x.minBrightness + y * x.maxBoost, F = u * 3; + m[F] = Ge.r * B, m[F + 1] = Ge.g * B, m[F + 2] = Ge.b * B; + } + s.needsUpdate = !0; + }), /* @__PURE__ */ i("group", { children: [ + /* @__PURE__ */ i("mesh", { children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [e, 64, 64] }), + /* @__PURE__ */ n( + "meshStandardMaterial", + { + color: "#60a5fa", + emissive: "#1d4ed8", + emissiveIntensity: 0.18, + transparent: !0, + opacity: 0.08, + roughness: 0.15, + metalness: 0.05 + } + ) + ] }), + /* @__PURE__ */ i("mesh", { renderOrder: 2, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [e, 48, 48] }), + /* @__PURE__ */ n( + "meshBasicMaterial", + { + color: "#93c5fd", + wireframe: !0, + transparent: !0, + opacity: 0.14, + toneMapped: !1 + } + ) + ] }), + /* @__PURE__ */ i("points", { ref: t, renderOrder: 3, children: [ + /* @__PURE__ */ i("bufferGeometry", { children: [ + /* @__PURE__ */ n("bufferAttribute", { attach: "attributes-position", args: [r, 3] }), + /* @__PURE__ */ n("bufferAttribute", { attach: "attributes-color", args: [l, 3] }) + ] }), + /* @__PURE__ */ n( + "pointsMaterial", + { + size: Math.max(0.06, e * 0.018), + sizeAttenuation: !0, + transparent: !0, + opacity: 0.95, + vertexColors: !0, + depthWrite: !1, + toneMapped: !1 + } + ) + ] }) + ] }); +} +function mn({ radius: e, paused: t = !1 }) { + const o = Z(null); + return Qe((r) => { + if (!t && o.current) { + const l = r.clock.elapsedTime * 3, a = 0.5 + (Math.sin(l) + 1) / 2 * 1.5; + o.current.emissiveIntensity = a; + } + }), /* @__PURE__ */ i("mesh", { position: [0, 0, 0], children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [e, 64, 64] }), + /* @__PURE__ */ n( + "meshStandardMaterial", + { + ref: o, + color: "#ec4899", + emissive: "#db2777", + emissiveIntensity: 1, + toneMapped: !1 + } + ) + ] }); +} +function fn(e) { + const t = 2 * Math.PI; + let o = e % t; + return o < 0 && (o += t), o > Math.PI && (o = t - o), o; +} +function gn({ radius: e, theta: t, phi: o, orbitTime: r, simTime: l, thetaDrift: a = 0, paused: h = !1 }) { + const c = Z(null); + return Qe(() => { + if (!h && c.current) { + const s = o + r.current, d = fn(t + (l?.current ?? 0) * a), m = e * Math.sin(d) * Math.cos(s), u = e * Math.cos(d), x = e * Math.sin(d) * Math.sin(s); + c.current.position.set(m, u, x), c.current.lookAt(0, 0, 0); + } + }), /* @__PURE__ */ i("group", { ref: c, children: [ + /* @__PURE__ */ i("mesh", { renderOrder: 10, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.09, 16, 16] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#22d3ee", toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("mesh", { renderOrder: 9, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.16, 16, 16] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#22d3ee", transparent: !0, opacity: 0.18, toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("mesh", { rotation: [Math.PI / 2, 0, 0], children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.14, 0.18, 1, 16] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#c0c0c0", metalness: 0.8, roughness: 0.2 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.3], rotation: [Math.PI / 2, 0, 0], children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.18, 0.18, 0.16, 8] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#d4af37", metalness: 0.95, roughness: 0.18 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.6], rotation: [Math.PI / 2, 0, 0], children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.22, 0.22, 0.2, 16] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#ffd700", metalness: 1, roughness: 0.1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.7], renderOrder: 11, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.05, 12, 12] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#f97316", toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.35], rotation: [Math.PI / 2, 0, 0], renderOrder: 8, children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.015, 0.015, 0.7, 8] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#f97316", transparent: !0, opacity: 0.7, toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("group", { position: [0, 0, 0.22], children: [ + /* @__PURE__ */ i("mesh", { position: [0.6, 0, 0], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.8, 0.4, 0.05] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#1e3a8a", metalness: 0.5, roughness: 0.1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [-0.6, 0, 0], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.8, 0.4, 0.05] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#1e3a8a", metalness: 0.5, roughness: 0.1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0.28, 0, -0.01], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.18, 0.05, 0.04] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#94a3b8", metalness: 0.7, roughness: 0.22 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [-0.28, 0, -0.01], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.18, 0.05, 0.04] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#94a3b8", metalness: 0.7, roughness: 0.22 }) + ] }) + ] }) + ] }); +} +const ce = { + solid: "#60a5fa", + dark: "#3b82f6", + light: "#93c5fd", + glow: "rgba(96,165,250,0.5)", + panel: "rgba(0,20,40,0.8)" +}, ae = { + solid: "#fbbf24", + dark: "#f59e0b", + light: "#fef3c7", + glow: "rgba(251,191,36,0.5)" +}, it = "var(--font-headline)", pe = "var(--font-ui)", xn = "var(--terminal-green)", Ae = "var(--terminal-green-soft)", ye = "var(--terminal-green-muted)"; +function bn({ bars: e }) { + const t = window.innerHeight; + return /* @__PURE__ */ i(Fe, { children: [ + e.map((o) => { + const r = t - o.startBottom - o.barHeight, l = o.targetLeft - o.startLeft, a = o.targetTop - r; + return /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: `${o.startLeft}px`, + top: `${r}px`, + width: `${o.barWidth}px`, + height: `${o.barHeight}px`, + background: o.color, + borderRadius: "2px 2px 0 0", + opacity: 0.95, + animation: "flyToDistribution 1.2s ease-in-out forwards", + "--delta-x": `${l}px`, + "--delta-y": `${a}px`, + zIndex: 1e3, + boxShadow: `0 0 15px ${o.color}` + } + }, + o.id + ); + }), + /* @__PURE__ */ n("style", { children: ` + @keyframes flyToDistribution { + 0% { + transform: translate(0, 0) scale(1); + opacity: 0.95; + } + 40% { + transform: translate(calc(var(--delta-x) * 0.3), calc(var(--delta-y) * 0.5)) scale(0.9); + opacity: 0.9; + } + 85% { + transform: translate(calc(var(--delta-x) * 0.95), calc(var(--delta-y) * 0.95)) scale(0.7); + opacity: 0.85; + } + 100% { + transform: translate(var(--delta-x), var(--delta-y)) scale(0.6); + opacity: 0; + } + } + .clickable-bar { + transition: all 0.2s ease; + } + .clickable-bar:hover { + transform: scaleY(1.1) scaleX(1.2); + filter: brightness(1.3); + box-shadow: 0 0 10px currentColor; + } + ` }) + ] }); +} +function at() { + return { n: 0, meanObs: 0, m2Obs: 0, meanIso: 0, m2Iso: 0 }; +} +function yn(e, t, o) { + const r = e.n + 1, l = t - e.meanObs, a = e.meanObs + l / r, h = e.m2Obs + l * (t - a), c = o - e.meanIso, s = e.meanIso + c / r, d = e.m2Iso + c * (o - s); + return { n: r, meanObs: a, m2Obs: h, meanIso: s, m2Iso: d }; +} +function vn({ + complexity: e, + radius: t, + distance: o, + theta: r, + phi: l, + observationMode: a, + allSectors: h, + cumulative: c, + K: s, + orbitRadius: d, + orbitVelocity: m, + thetaDrift: u, + thetaJitter: x, + phiJitter: y, + usePoisson: B, + speedup: F, + paused: R, + sceneView: C, + bottomInset: j = 0, + showNumericDiagnostics: v = !0, + compactNumericDiagnostics: L = !1, + host: O, + centerDistribution: J = !1, + hideFlyingBars: _ = !1 +}) { + const [k, A] = $({ + current: 0, + total: 0, + lastCheck: 0, + overlaps: 0, + currentTheory: 0, + binOverlapsMean: 0, + currentExpectedLightlane: 0 + }), ee = 4, z = he(() => It({ + D: d, + theta: r, + phi: l, + observationMode: a, + velocity: m, + thetaDrift: u, + thetaJitter: x, + phiJitter: y, + distance: o, + hitTestModel: "segment", + bin_size: 1, + complexity: e, + sub_bin_sampling: ee, + flux: s, + lane_radius: t, + allSectors: h, + cumulative: c, + usePoisson: B + }), [d, r, l, a, m, u, x, y, e, s, t, o, h, c, B]), D = 60, N = Z(new Array(D).fill(-1)), P = Z(new Array(D).fill(-1)), H = Z(0), [g, ue] = $(new Array(D).fill(-1)), [ke, q] = $(new Array(D).fill(-1)), b = Et({ + flux: s, + D: d, + lane_radius: t, + dt: 1, + hitTestModel: "segment", + lane_length: o + }), T = Math.sqrt(b), E = 15, I = 4 * T, ne = Math.max(0, b - I), G = b + I, se = B, ve = Math.max(0, Math.floor(ne)), Re = Math.max(ve, Math.ceil(G)), X = se ? Re - ve + 1 : E, Pe = se ? 1 : Math.max(1e-9, (G - ne) / E), Be = (f) => { + if (se) { + const S = Math.round(f); + return S <= ve ? 0 : S >= Re ? X - 1 : S - ve; + } + return f < ne ? 0 : f >= G ? X - 1 : Math.floor((f - ne) / Pe); + }, Je = (f) => se ? ve + f : ne + (f + 0.5) * Pe, [me, Ee] = $(new Array(X).fill(0)), [Se, Y] = $(new Array(X).fill(0)), [Ie, le] = $(/* @__PURE__ */ new Set()), [qe, Le] = $(/* @__PURE__ */ new Set()), [Ne, ze] = $([]), $e = Z(0), _e = Z(at()), [U, Ze] = $(at()), et = Z(R), tt = Z(0); + de(() => { + Ee(new Array(X).fill(0)), Y(new Array(X).fill(0)), N.current.fill(-1), P.current.fill(-1), H.current = 0, ue(new Array(D).fill(-1)), q(new Array(D).fill(-1)), le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set()), ze([]), _e.current = at(), Ze(at()), A({ + current: 0, + total: 0, + lastCheck: 0, + overlaps: 0, + currentTheory: 0, + binOverlapsMean: 0, + currentExpectedLightlane: 0 + }); + }, [e, s, t, o, d, r, l, a, m, u, x, y, h, c, B, X]); + const nt = (f, S) => { + if (f.length === 0) return; + let w = 0, oe = 0, te = 0, fe = k.binOverlapsMean, V = k.currentExpectedLightlane, re = _e.current; + for (const ie of f) { + const ge = ie.lightlane, xe = ie.isotropic; + if (w += ge, oe = ge, te = xe, fe = ie.overlapsMean, V = ie.lambdaLightlaneExpected, re = yn(re, ge, xe), N.current[H.current] = ge, P.current[H.current] = xe, H.current++, H.current >= D) { + const Me = Math.max(10, ...N.current.filter((Q) => Q >= 0), ...P.current.filter((Q) => Q >= 0)); + K([...N.current], [...P.current], Me), N.current.fill(-1), P.current.fill(-1), H.current = 0, le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set()); + } + } + _e.current = re, A((ie) => ({ + current: oe, + total: ie.total + w, + lastCheck: Date.now(), + overlaps: S, + currentTheory: te, + binOverlapsMean: fe, + currentExpectedLightlane: V + })), Ze(re), ue([...N.current]), q([...P.current]); + }, He = Z(!1), We = Z(null), ot = (f, S) => { + f.stopPropagation(), He.current = !0, We.current = S, f.target.setPointerCapture(f.pointerId), Ce(O, we.click, { target: `${S}-periodogram`, action: "pointer-down" }); + }, rt = (f, S, w, oe) => { + if (!He.current || We.current !== S) return; + f.stopPropagation(); + const te = f.currentTarget.getBoundingClientRect(), fe = f.clientX - te.left, V = Math.floor(fe / te.width * D); + if (V >= 0 && V < D) { + const re = w[V], ie = S === "observed" ? Ie.has(V) : qe.has(V); + re >= 0 && !ie && W(V, re, S, oe); + } + }, p = (f) => { + f.stopPropagation(), He.current = !1, We.current = null; + }, M = (f, S, w, oe) => { + const te = window.innerWidth, fe = f / D * te, V = te / D, re = Math.max(2, S / oe * 80), xe = w === "observed" ? 25 : 110, Me = Be(S), Q = 20, be = te - 2 * Q, Te = Q + (Me + 0.5) / X * be; + return { startLeft: fe, startBottom: xe, barHeight: re, barWidth: V, targetLeft: Te, targetTop: 150, binIndex: Me }; + }, W = (f, S, w, oe) => { + if (S < 0) return; + const te = Date.now(); + te - tt.current >= 45 && (tt.current = te, Ce(O, we.computeStep, { target: `${w}-periodogram`, value: S })); + const { startLeft: fe, startBottom: V, barHeight: re, barWidth: ie, targetLeft: ge, targetTop: xe } = M(f, S, w, oe), Me = { + id: $e.current++, + value: S, + startLeft: fe, + startBottom: V, + barHeight: re, + barWidth: ie, + targetLeft: ge, + targetTop: xe, + color: w === "observed" ? ae.solid : ce.solid, + type: w + }; + ze((Q) => [...Q, Me]), w === "observed" ? (le((Q) => new Set(Q).add(f)), Ee((Q) => { + const be = [...Q], Te = Be(S); + return be[Te]++, be; + })) : (Le((Q) => new Set(Q).add(f)), Y((Q) => { + const be = [...Q], Te = Be(S); + return be[Te]++, be; + })); + }, K = (f, S, w) => { + const oe = [], te = [...me], fe = [...Se]; + f.forEach((V, re) => { + if (V >= 0) { + const { startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, binIndex: Te } = M(re, V, "observed", w); + oe.push({ + id: $e.current++, + value: V, + startLeft: ie, + startBottom: ge, + barHeight: xe, + barWidth: Me, + targetLeft: Q, + targetTop: be, + color: ae.solid, + type: "observed" + }), te[Te]++; + } + }), S.forEach((V, re) => { + if (V >= 0) { + const { startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, binIndex: Te } = M(re, V, "theory", w); + oe.push({ + id: $e.current++, + value: V, + startLeft: ie, + startBottom: ge, + barHeight: xe, + barWidth: Me, + targetLeft: Q, + targetTop: be, + color: ce.solid, + type: "theory" + }), fe[Te]++; + } + }), ze((V) => [...V, ...oe]), Ee(te), Y(fe); + }; + de(() => { + if (Ne.length > 0) { + const f = setTimeout(() => { + ze([]); + }, 1300); + return () => clearTimeout(f); + } + }, [Ne.length]); + const Ve = Z(0); + de(() => { + H.current < Ve.current && (le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set())), Ve.current = H.current; + }), de(() => { + const f = et.current; + if (et.current = R, !R || f) return; + const S = z.flushPartialBin(); + S && nt([S], S.overlaps); + }, [R, z]), Qe((f, S) => { + if (R) return; + const w = z.simulate(S * F); + w.subBinEvents > 0 && A((oe) => ({ ...oe, overlaps: w.lastLaneCount })), nt(w.bins, w.lastLaneCount); + }); + const zt = g.filter((f) => f >= 0), Rt = ke.filter((f) => f >= 0), lt = Math.max(10, Math.max(0, ...zt)), ct = Math.max(10, Math.max(0, ...Rt)), ft = Math.max(1, ...me, ...Se), gt = U.n > 1 ? U.m2Obs / (U.n - 1) : 0, dt = U.n > 1 ? U.m2Iso / (U.n - 1) : 0, Lt = U.meanIso > 0 ? U.meanObs / U.meanIso : 0, xt = dt > 0 ? gt / dt : 0, pt = U.meanObs > 0 ? gt / U.meanObs : 0, Xe = U.meanIso > 0 ? dt / U.meanIso : 0, ht = z.getLaneCount(), bt = ht > 0 && s > 0 ? ht * b / s : 0, yt = v && !L, Ke = C !== "lightlane", Oe = C !== "poisson", $t = Ne.filter((f) => f.type === "theory" && Ke || f.type === "observed" && Oe), Ot = C === "poisson" ? "Shot Noise Distribution" : C === "lightlane" ? "Shot Noise + Lightlane" : "Head to Head", je = { + background: "rgba(255,255,255,0.04)", + border: "1px solid var(--terminal-panel-border)", + borderRadius: "6px", + padding: "6px 8px", + fontFamily: pe + }, vt = /* @__PURE__ */ i("div", { style: { + marginTop: L ? "0" : "12px", + display: "grid", + gridTemplateColumns: L ? "1fr" : "repeat(3, minmax(0, 1fr))", + gap: L ? "6px" : "8px", + fontSize: "10px", + color: Ae, + fontFamily: pe + }, children: [ + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Samples" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace" }, children: U.n }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Mean Ratio (Lightlane/Poisson)" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: Ae }, children: U.n > 0 ? Lt.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Var Ratio (Lightlane/Poisson)" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: xt > 1.1 ? ae.light : ce.light }, children: U.n > 1 ? xt.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Lightlane" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: ae.light }, children: U.n > 1 ? pt.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Poisson" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: ce.light }, children: U.n > 1 ? Xe.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Ratio (Lightlane/Poisson)" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: Xe > 0 && pt / Xe > 1.05 ? ae.light : Ae }, children: U.n > 1 && Xe > 0 ? (pt / Xe).toFixed(3) : "n/a" }) + ] }) + ] }), St = /* @__PURE__ */ i("div", { style: { + marginTop: L ? "6px" : "8px", + display: L ? "grid" : "flex", + gridTemplateColumns: L ? "1fr" : void 0, + justifyContent: L ? void 0 : "center", + gap: L ? "4px" : "12px", + flexWrap: L ? void 0 : "wrap", + fontSize: "10px", + color: ye, + fontFamily: pe + }, children: [ + /* @__PURE__ */ i("span", { children: [ + "LC(now): ", + k.overlaps + ] }), + /* @__PURE__ */ i("span", { children: [ + "LC(bin avg): ", + k.binOverlapsMean.toFixed(2) + ] }), + /* @__PURE__ */ i("span", { children: [ + "LC iso target: ", + Number.isFinite(bt) ? bt.toFixed(2) : "n/a" + ] }), + /* @__PURE__ */ i("span", { children: [ + "E[Lightlane|bin]: ", + k.currentExpectedLightlane.toFixed(2) + ] }), + /* @__PURE__ */ i("span", { children: [ + "Lightlane(last): ", + typeof k.current == "number" ? Number(k.current).toFixed(2) : k.current + ] }), + /* @__PURE__ */ i("span", { children: [ + "Lanes: ", + ht + ] }), + /* @__PURE__ */ i("span", { children: [ + "Mode: ", + a === "randomSphere" ? "Random Sphere" : "Orbit" + ] }), + /* @__PURE__ */ i("span", { children: [ + "theta drift: ", + u.toFixed(3) + ] }), + /* @__PURE__ */ i("span", { children: [ + "theta jitter: ", + x.toFixed(3) + ] }), + /* @__PURE__ */ i("span", { children: [ + "phi jitter: ", + y.toFixed(3) + ] }) + ] }); + return /* @__PURE__ */ i(Fe, { children: [ + !_ && /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none" }, children: /* @__PURE__ */ n(bn, { bars: $t }) }), + /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", display: "flex", flexDirection: "column", justifyContent: J ? "center" : "flex-start" }, children: [ + /* @__PURE__ */ i("div", { style: { + position: "absolute", + top: "18px", + left: "20px", + right: "20px", + color: Ae, + fontSize: "12px", + fontWeight: 400, + textAlign: "center", + textTransform: "uppercase", + letterSpacing: "0.16em", + fontFamily: it + }, children: [ + Ot, + /* @__PURE__ */ i("span", { style: { fontSize: "10px", fontWeight: "normal", marginLeft: "10px", opacity: 0.8, fontFamily: pe, color: xn }, children: [ + "(λ = ", + b.toFixed(1), + ", σ = ", + T.toFixed(1), + ")" + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { + width: "100%", + padding: J ? "20px" : "60px 20px 20px 20px", + background: J ? "transparent" : "linear-gradient(to bottom, rgba(0,0,0,0.9), transparent)", + fontFamily: pe, + alignSelf: "center" + }, children: [ + /* @__PURE__ */ n("div", { style: { + position: "absolute", + left: "5px", + top: J ? "130px" : "170px", + transform: "rotate(-90deg)", + transformOrigin: "left top", + fontSize: "10px", + color: ye, + fontStyle: "italic", + whiteSpace: "nowrap", + fontFamily: pe + }, children: "← Frequency (how many)" }), + /* @__PURE__ */ n("div", { style: { + display: "flex", + height: "100px", + gap: "2px", + alignItems: "flex-end", + padding: "0 20px" + }, children: me.map((f, S) => { + const w = Se[S], oe = f / ft * 100, te = w / ft * 100; + return /* @__PURE__ */ i("div", { style: { + flex: 1, + display: "flex", + flexDirection: "column", + alignItems: "center", + position: "relative", + height: "100%", + justifyContent: "flex-end" + }, children: [ + /* @__PURE__ */ i("div", { style: { + width: "100%", + display: "flex", + justifyContent: "center", + gap: "1px", + alignItems: "flex-end", + height: "100%", + position: "relative" + }, children: [ + Ke && /* @__PURE__ */ n("div", { style: { + width: Oe ? "45%" : "92%", + height: `${te}%`, + background: `linear-gradient(to top, ${ce.solid}, ${ce.dark})`, + borderRadius: "2px 2px 0 0", + minHeight: w > 0 ? "2px" : "0", + transition: "height 0.3s ease", + boxShadow: w > 0 ? `0 0 5px ${ce.glow}` : "none", + position: "relative" + }, children: w > 0 && /* @__PURE__ */ n("div", { style: { + position: "absolute", + top: "-16px", + left: "50%", + transform: "translateX(-50%)", + fontSize: "9px", + fontWeight: "bold", + color: ce.solid, + textShadow: "0 0 3px rgba(0,0,0,0.8)" + }, children: w }) }), + Oe && /* @__PURE__ */ n("div", { style: { + width: Ke ? "45%" : "92%", + height: `${oe}%`, + background: `linear-gradient(to top, ${ae.solid}, ${ae.dark})`, + borderRadius: "2px 2px 0 0", + minHeight: f > 0 ? "2px" : "0", + transition: "height 0.3s ease", + boxShadow: f > 0 ? `0 0 5px ${ae.glow}` : "none", + position: "relative" + }, children: f > 0 && /* @__PURE__ */ n("div", { style: { + position: "absolute", + top: "-16px", + left: "50%", + transform: "translateX(-50%)", + fontSize: "9px", + fontWeight: "bold", + color: ae.solid, + textShadow: "0 0 3px rgba(0,0,0,0.8)" + }, children: f }) }) + ] }), + /* @__PURE__ */ n("div", { style: { + position: "absolute", + bottom: "-18px", + fontSize: "9px", + color: ye, + fontWeight: "bold", + fontFamily: pe + }, children: Je(S).toFixed(0) }) + ] }, S); + }) }), + /* @__PURE__ */ n("div", { style: { + textAlign: "center", + marginTop: "25px", + fontSize: "10px", + color: ye, + fontStyle: "italic", + fontFamily: pe + }, children: "Photon Count Value →" }), + /* @__PURE__ */ i("div", { style: { + display: "flex", + justifyContent: "center", + gap: "20px", + marginTop: "25px", + fontSize: "10px" + }, children: [ + Ke && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "5px" }, children: [ + /* @__PURE__ */ n("div", { style: { width: "12px", height: "12px", background: ce.solid, borderRadius: "2px" } }), + /* @__PURE__ */ n("span", { style: { color: ce.solid }, children: "Theory (Poisson)" }) + ] }), + Oe && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "5px" }, children: [ + /* @__PURE__ */ n("div", { style: { width: "12px", height: "12px", background: ae.solid, borderRadius: "2px" } }), + /* @__PURE__ */ n("span", { style: { color: ae.solid }, children: "Observed (Lightlanes)" }) + ] }) + ] }), + yt && vt, + yt && St + ] }) + ] }), + v && L && /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none" }, children: /* @__PURE__ */ i("div", { style: { + position: "absolute", + top: "88px", + left: "12px", + width: "min(300px, calc(100vw - 24px))", + background: "linear-gradient(to bottom, rgba(0,0,0,0.88), rgba(0,0,0,0.55))", + border: "1px solid var(--terminal-panel-border)", + borderRadius: "10px", + padding: "10px", + boxShadow: "0 8px 24px rgba(0,0,0,0.35)", + fontFamily: pe + }, children: [ + /* @__PURE__ */ n("div", { style: { + color: Ae, + fontSize: "10px", + textTransform: "uppercase", + letterSpacing: "0.08em", + marginBottom: "8px", + fontWeight: 400, + fontFamily: it + }, children: "Diagnostics" }), + vt, + St + ] }) }), + /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", display: "flex", flexDirection: "column", justifyContent: "flex-end", paddingBottom: `${j}px`, boxSizing: "border-box" }, children: [ + Ke && /* @__PURE__ */ i( + "div", + { + onPointerDown: (f) => ot(f, "theory"), + onPointerMove: (f) => rt(f, "theory", ke, ct), + onPointerUp: p, + onPointerLeave: p, + style: { + width: "100%", + height: "100px", + background: `linear-gradient(to top, ${ce.panel}, transparent)`, + display: "flex", + alignItems: "flex-end", + padding: Oe ? "0 20px 5px 20px" : "0 20px 20px 20px", + gap: "2px", + position: "relative", + borderBottom: Oe ? "1px solid #555" : "none", + pointerEvents: "auto", + touchAction: "none", + cursor: "crosshair" + }, + children: [ + /* @__PURE__ */ n("div", { style: { position: "absolute", top: "10px", left: "20px", color: ce.solid, fontSize: "10px", fontWeight: 400, pointerEvents: "none", fontFamily: it, letterSpacing: "0.08em" }, children: "THEORY (Poisson) - Swipe or click to count" }), + ke.map((f, S) => { + const w = qe.has(S); + return /* @__PURE__ */ n( + "div", + { + className: f >= 0 && !w ? "clickable-bar" : "", + style: { + flex: 1, + height: f >= 0 && !w ? `${f / ct * 100}%` : "0", + background: f === 0 ? "rgba(255,255,255,0.1)" : ce.solid, + color: ce.solid, + minHeight: f >= 0 && !w ? "1px" : "0", + transition: "all 0.3s ease", + opacity: w ? 0 : 0.8, + borderRadius: "2px 2px 0 0", + transform: w ? "scale(0)" : "scale(1)", + pointerEvents: "none" + } + }, + S + ); + }), + /* @__PURE__ */ i("div", { style: { position: "absolute", bottom: "10px", right: "80px", color: Ae, fontFamily: pe, fontSize: "10px", pointerEvents: "none" }, children: [ + "Max: ", + ct + ] }) + ] + } + ), + Oe && /* @__PURE__ */ i( + "div", + { + onPointerDown: (f) => ot(f, "observed"), + onPointerMove: (f) => rt(f, "observed", g, lt), + onPointerUp: p, + onPointerLeave: p, + style: { + width: "100%", + height: "100px", + background: "linear-gradient(to top, rgba(0,0,0,0.8), transparent)", + display: "flex", + alignItems: "flex-end", + padding: "0 20px 20px 20px", + gap: "2px", + position: "relative", + pointerEvents: "auto", + touchAction: "none", + cursor: "crosshair" + }, + children: [ + /* @__PURE__ */ n("div", { style: { position: "absolute", top: "10px", left: "20px", color: ae.solid, fontSize: "10px", fontWeight: 400, pointerEvents: "none", fontFamily: it, letterSpacing: "0.08em" }, children: "OBSERVED (Lightlanes) - Swipe or click to count" }), + g.map((f, S) => { + const w = Ie.has(S); + return /* @__PURE__ */ n( + "div", + { + className: f >= 0 && !w ? "clickable-bar" : "", + style: { + flex: 1, + height: f >= 0 && !w ? `${f / lt * 100}%` : "0", + background: f === 0 ? "rgba(255,255,255,0.1)" : f > 0 ? ae.solid : "transparent", + color: ae.solid, + minHeight: f >= 0 && !w ? "2px" : "0", + transition: "all 0.3s ease", + borderTop: f >= 0 && !w ? `2px solid ${ae.light}` : "none", + opacity: w ? 0 : 0.8, + position: "relative", + borderRadius: "2px 2px 0 0", + transform: w ? "scale(0)" : "scale(1)", + pointerEvents: "none" + }, + children: (S + 1) % 5 === 0 && !w && /* @__PURE__ */ n("div", { style: { + position: "absolute", + bottom: "-20px", + left: "50%", + transform: "translateX(-50%)", + width: "1px", + height: "5px", + background: "#fff", + opacity: 0.5, + pointerEvents: "none" + }, children: /* @__PURE__ */ n("span", { style: { position: "absolute", top: "5px", left: "-50%", fontSize: "10px", color: ye, fontFamily: pe }, children: S + 1 }) }) + }, + S + ); + }), + /* @__PURE__ */ i("div", { style: { position: "absolute", bottom: "10px", right: "80px", color: Ae, fontFamily: pe, fontSize: "10px" }, children: [ + "Max: ", + lt + ] }) + ] + } + ) + ] }) + ] }); +} +const Sn = { + complexity: 1, + radius: 2, + distance: 5, + chandraDistance: 6, + showAxes: !1, + // Cleaner look for challenge + lightlanes: !0, + // Always show lightlanes + allSectors: !0, + cumulative: !1, + phi: 0, + theta: Math.PI / 2, + observationMode: "orbit", + orbitSpeed: 0.2, + thetaDrift: 0, + thetaJitter: 0, + phiJitter: 0, + speedup: 1, + K: 1e3, + usePoisson: !0, + sceneView: "both", + hideScenePresentation: !1, + hideFlyingBars: !1, + hideDataBoxes: !1 +}; +function kn(e) { + const t = e.host, o = e.devUi?.compactNumericDiagnostics ?? !1, r = e.devUi?.maxComplexity ?? 20, l = e.devUi?.maxSpeedup ?? 240, a = 74, h = 20, c = e.config?.params || {}, { + complexity: s, + radius: d, + distance: m, + chandraDistance: u, + showAxes: x, + lightlanes: y, + allSectors: B, + cumulative: F, + phi: R, + theta: C, + observationMode: j, + orbitSpeed: v, + thetaDrift: L, + thetaJitter: O, + phiJitter: J, + speedup: _, + K: k, + usePoisson: A, + sceneView: ee, + hideScenePresentation: z, + hideFlyingBars: D, + hideDataBoxes: N + } = { ...Sn, ...c }, P = !N, H = Z(0), g = Z(0), [ue, ke] = $(!1), [q, b] = $("scene"), [T, E] = $(ee), [I, ne] = $(s), [G, se] = $(_), [ve, Re] = $(null), X = Z(null); + de(() => { + E(ee); + }, [ee]), de(() => { + ne(s); + }, [s]), de(() => { + se(_); + }, [_]); + const Pe = G > 20, Be = T !== "lightlane", Je = T !== "poisson", me = q === "scene" && T !== "poisson", Ee = (p) => p === "poisson" ? "Poisson" : p === "lightlane" ? "Lightlane" : "Both", Se = () => { + Ce(t, we.hover, { page: q, sceneView: T }); + }, Y = (p, M) => { + Ce(t, we.click, { page: q, sceneView: T, target: p, ...M }); + }, Ie = (p) => { + Re(p), X.current && clearTimeout(X.current), X.current = setTimeout(() => { + Re(null), X.current = null; + }, 1500); + }, le = (p) => { + const M = Array.from({ length: h }, (W, K) => K === 0 ? 1 : K === h - 1 ? p : Math.round(1 + (p - 1) * K / (h - 1))); + return Array.from(new Set(M)).sort((W, K) => W - K); + }, qe = (p, M) => { + const W = le(M); + return W.find((K) => p < K) ?? W[W.length - 1]; + }, Le = (p, M) => { + const W = le(M); + for (let K = W.length - 1; K >= 0; K -= 1) + if (p > W[K]) return W[K]; + return W[0]; + }, Ne = (p, M) => { + const W = le(M), K = W.findIndex((Ve) => p <= Ve); + return K >= 0 ? K : W.length - 1; + }, ze = Ne(I, r), $e = Ne(G, l), _e = `${(ze + 1) / h * 100}%`, U = `${($e + 1) / h * 100}%`, Ze = me && I > le(r)[0], et = me && I < le(r).at(-1), tt = G > le(l)[0], nt = G < le(l).at(-1), He = (p) => { + if (!me) return; + const M = p === "up" ? qe(I, r) : Le(I, r); + M !== I && (Y("complexity", { direction: p, value: M }), ne(M), e.devUi?.onSetParam?.("complexity", M), Ie(`Complexity ${M}`)); + }, We = (p) => { + const M = p === "up" ? qe(G, l) : Le(G, l); + M !== G && (Y("turbo", { direction: p, value: M }), se(M), e.devUi?.onSetParam?.("speedup", M), Ie(`Turbo ${M}x`)); + }, ot = () => { + const p = ["poisson", "lightlane", "both"], M = p.indexOf(T), W = p[(M + 1) % p.length]; + Y("mode", { value: W }), E(W), Ie(`Mode ${Ee(W)}`); + }, rt = () => { + Y("fano-page", { value: q === "scene" ? "fano" : "scene" }), b((p) => p === "scene" ? "fano" : "scene"); + }; + return de(() => { + const p = (M) => { + if (M.code !== "Space" || M.repeat) return; + const W = M.target, K = W?.tagName; + K === "INPUT" || K === "TEXTAREA" || W?.isContentEditable || (M.preventDefault(), ke((Ve) => !Ve)); + }; + return window.addEventListener("keydown", p), () => window.removeEventListener("keydown", p); + }, []), de(() => () => { + X.current && clearTimeout(X.current); + }, []), Qe((p, M) => { + ue || q === "fano" || (H.current += M * v * G, g.current += M * G); + }), de(() => { + H.current = 0, g.current = 0; + }, [ + I, + d, + m, + u, + R, + C, + j, + v, + L, + O, + J, + G, + k, + B, + F, + A + ]), /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none", zIndex: 3e3 }, children: /* @__PURE__ */ n("div", { style: { position: "absolute", top: 12, right: 12, display: "flex", gap: 8, pointerEvents: "auto" }, children: /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + Y("advanced"), e.devUi?.onOpenHarness?.(); + }, + onPointerEnter: Se, + style: { + border: "1px solid var(--terminal-panel-border)", + background: "rgba(7,19,11,0.86)", + color: "var(--terminal-green-soft)", + borderRadius: 10, + padding: "10px 12px", + fontSize: 12, + fontWeight: 400, + letterSpacing: "0.08em", + fontFamily: "var(--font-headline)", + textTransform: "uppercase", + cursor: "pointer", + boxShadow: "0 8px 24px rgba(0,0,0,0.25)" + }, + children: "Advanced" + } + ) }) }), + /* @__PURE__ */ n("ambientLight", { intensity: 0.4 }), + /* @__PURE__ */ n("directionalLight", { position: [10, 10, 5], intensity: 1, castShadow: !0 }), + /* @__PURE__ */ n("pointLight", { position: [-10, -10, -10], intensity: 0.5, color: "blue" }), + q === "scene" ? /* @__PURE__ */ i(Fe, { children: [ + !z && Be && /* @__PURE__ */ n(un, { radius: u }), + !z && Je && /* @__PURE__ */ n( + Wt, + { + complexity: I, + lightlanes: y, + radius: d, + distance: m, + allSectors: B, + cumulative: F + } + ), + !z && /* @__PURE__ */ n(mn, { radius: d, paused: ue }), + /* @__PURE__ */ n( + gn, + { + radius: u, + theta: C, + phi: R, + orbitTime: H, + simTime: g, + thetaDrift: L, + paused: ue + } + ), + /* @__PURE__ */ n( + vn, + { + complexity: I, + radius: d, + distance: m, + theta: C, + phi: R, + observationMode: j, + allSectors: B, + cumulative: F, + K: k, + orbitRadius: u, + orbitVelocity: v, + thetaDrift: L, + thetaJitter: O, + phiJitter: J, + usePoisson: A, + speedup: G, + paused: ue, + sceneView: T, + bottomInset: a, + showNumericDiagnostics: P, + compactNumericDiagnostics: o, + host: t, + centerDistribution: z, + hideFlyingBars: D || Pe + } + ), + ue && /* @__PURE__ */ n("group", { position: [0, u + 1.5, 0], children: /* @__PURE__ */ i("mesh", { children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.12, 16, 16] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#ef4444", toneMapped: !1 }) + ] }) }), + x && /* @__PURE__ */ n("axesHelper", { args: [Math.max(5, I)] }), + /* @__PURE__ */ n( + At, + { + infiniteGrid: !0, + fadeDistance: 50, + sectionColor: "#333", + cellColor: "#111", + position: [0, -0.01, 0] + } + ) + ] }) : /* @__PURE__ */ n( + pn, + { + radius: d, + distance: m, + chandraDistance: u, + allSectors: B, + cumulative: F, + theta: C, + phi: R, + orbitSpeed: v, + thetaDrift: L, + thetaJitter: O, + phiJitter: J, + K: k, + speedup: G, + usePoisson: A, + bottomInset: a, + onBack: () => b("scene"), + host: t + } + ), + /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", zIndex: 3200 }, children: [ + ve && /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%) skewX(-12deg)", + padding: "16px 28px", + color: "var(--terminal-green-soft)", + fontFamily: "var(--font-headline)", + fontStyle: "italic", + fontSize: 42, + letterSpacing: "0.16em", + textTransform: "uppercase", + textShadow: "0 0 20px rgba(125,255,155,0.38), 0 0 42px rgba(125,255,155,0.18)" + }, + children: /* @__PURE__ */ n("span", { style: { display: "inline-block", transform: "skewX(12deg)" }, children: ve }) + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 10, + bottom: a + 16, + width: 26, + height: "min(44vh, 320px)", + display: "flex", + alignItems: "flex-end" + }, + children: /* @__PURE__ */ i( + "div", + { + style: { + position: "relative", + width: "100%", + height: "100%", + borderRadius: 14, + border: "1px solid rgba(251,191,36,0.35)", + background: "linear-gradient(to top, rgba(30,18,0,0.92), rgba(7,19,11,0.15))", + boxShadow: "0 0 22px rgba(251,191,36,0.12)", + overflow: "hidden", + opacity: me ? 1 : 0.35, + transition: "opacity 0.2s ease" + }, + children: [ + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "6px", + borderRadius: 10, + border: "1px solid rgba(251,191,36,0.14)" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 5, + right: 5, + bottom: 5, + height: _e, + borderRadius: 9, + background: "linear-gradient(to top, rgba(245,158,11,0.96), rgba(253,224,71,0.96))", + boxShadow: "0 0 18px rgba(251,191,36,0.5)", + transition: "height 0.25s ease" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "8px 7px", + display: "grid", + gridTemplateRows: `repeat(${h}, 1fr)`, + pointerEvents: "none" + }, + children: Array.from({ length: h }).map((p, M) => /* @__PURE__ */ n( + "div", + { + style: { + borderTop: M === 0 ? "none" : "1px solid rgba(251,191,36,0.15)" + } + }, + `complexity-tick-${M}` + )) + } + ), + /* @__PURE__ */ i( + "div", + { + style: { + position: "absolute", + left: 34, + bottom: 0, + color: "#fcd34d", + fontFamily: "var(--font-headline)", + fontSize: 10, + letterSpacing: "0.08em", + textTransform: "uppercase", + writingMode: "vertical-rl", + transform: "rotate(180deg)", + textShadow: "0 0 12px rgba(251,191,36,0.25)" + }, + children: [ + "Complexity ", + ze + 1, + "/", + h + ] + } + ) + ] + } + ) + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + right: 10, + bottom: a + 16, + width: 26, + height: "min(44vh, 320px)", + display: "flex", + alignItems: "flex-end" + }, + children: /* @__PURE__ */ i( + "div", + { + style: { + position: "relative", + width: "100%", + height: "100%", + borderRadius: 14, + border: "1px solid rgba(244,114,182,0.35)", + background: "linear-gradient(to top, rgba(42,7,23,0.94), rgba(7,19,11,0.15))", + boxShadow: "0 0 22px rgba(244,114,182,0.14)", + overflow: "hidden" + }, + children: [ + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "6px", + borderRadius: 10, + border: "1px solid rgba(244,114,182,0.14)" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 5, + right: 5, + bottom: 5, + height: U, + borderRadius: 9, + background: "linear-gradient(to top, rgba(236,72,153,0.96), rgba(244,114,182,0.98))", + boxShadow: "0 0 18px rgba(244,114,182,0.5)", + transition: "height 0.25s ease" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "8px 7px", + display: "grid", + gridTemplateRows: `repeat(${h}, 1fr)`, + pointerEvents: "none" + }, + children: Array.from({ length: h }).map((p, M) => /* @__PURE__ */ n( + "div", + { + style: { + borderTop: M === 0 ? "none" : "1px solid rgba(244,114,182,0.15)" + } + }, + `turbo-tick-${M}` + )) + } + ), + /* @__PURE__ */ i( + "div", + { + style: { + position: "absolute", + right: 34, + bottom: 0, + color: "#f9a8d4", + fontFamily: "var(--font-headline)", + fontSize: 10, + letterSpacing: "0.08em", + textTransform: "uppercase", + writingMode: "vertical-rl", + textShadow: "0 0 12px rgba(244,114,182,0.25)" + }, + children: [ + "Turbo ", + $e + 1, + "/", + h + ] + } + ) + ] + } + ) + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 12, + right: 12, + bottom: 10, + display: "grid", + gridTemplateColumns: "repeat(4, minmax(0, 1fr))", + gap: 8, + pointerEvents: "auto" + }, + children: [ + { + label: "Complexity", + kind: "adjust", + active: !1, + disabled: !me, + accent: "rgba(245,158,11,0.2)", + sublabel: `${I} • ${ze + 1}/${h}`, + meterColor: "linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))", + meterSide: "left", + meterFill: _e, + onDecrease: () => He("down"), + onIncrease: () => He("up"), + canDecrease: Ze, + canIncrease: et + }, + { + label: "Mode", + kind: "action", + onClick: ot, + active: !1, + accent: "rgba(59,130,246,0.18)", + sublabel: Ee(T) + }, + { + label: "Fano Sweep", + kind: "action", + onClick: rt, + active: q === "fano", + accent: "rgba(59,130,246,0.22)", + sublabel: q === "fano" ? "Open" : "Scene" + }, + { + label: "Turbo", + kind: "adjust", + active: !1, + accent: "rgba(34,197,94,0.2)", + sublabel: `${G}x • ${$e + 1}/${h}`, + meterColor: "linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))", + meterSide: "right", + meterFill: U, + onDecrease: () => We("down"), + onIncrease: () => We("up"), + canDecrease: tt, + canIncrease: nt + } + ].map((p) => p.kind === "adjust" ? /* @__PURE__ */ i( + "div", + { + style: { + minHeight: 54, + border: "1px solid var(--terminal-panel-border)", + background: p.active ? p.accent : "rgba(7,19,11,0.86)", + color: "var(--terminal-green-soft)", + borderRadius: 10, + padding: "8px 10px", + display: "flex", + flexDirection: "column", + alignItems: "center", + justifyContent: "center", + gap: 6, + boxShadow: p.active ? "0 0 18px rgba(125,255,155,0.12)" : "0 8px 24px rgba(0,0,0,0.25)", + position: "relative", + overflow: "hidden", + opacity: p.disabled ? 0.38 : 1 + }, + children: [ + "meterColor" in p && /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + top: 6, + bottom: 6, + left: p.meterSide === "left" ? 6 : void 0, + right: p.meterSide === "right" ? 6 : void 0, + width: 6, + borderRadius: 999, + background: "rgba(255,255,255,0.07)", + border: "1px solid rgba(255,255,255,0.08)" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + bottom: 7, + left: p.meterSide === "left" ? 7 : void 0, + right: p.meterSide === "right" ? 7 : void 0, + width: 4, + height: p.meterFill, + borderRadius: 999, + background: p.meterColor, + boxShadow: p.meterSide === "left" ? "0 0 10px rgba(251,191,36,0.45)" : "0 0 10px rgba(244,114,182,0.45)", + transition: "height 0.25s ease" + } + } + ) + ] }), + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-headline)", + fontSize: 11, + fontWeight: 400, + letterSpacing: "0.08em", + textTransform: "uppercase", + lineHeight: 1.1 + }, + children: p.label + } + ), + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-ui)", + fontSize: 10, + color: "var(--terminal-green)", + letterSpacing: "0.08em", + lineHeight: 1 + }, + children: p.sublabel + } + ), + /* @__PURE__ */ i("div", { style: { display: "grid", gridTemplateColumns: "repeat(2, minmax(0, 1fr))", gap: 6, width: "100%", marginTop: "auto" }, children: [ + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: p.onDecrease, + onPointerEnter: Se, + disabled: p.disabled || !p.canDecrease, + style: { + border: "1px solid rgba(255,255,255,0.12)", + background: "rgba(255,255,255,0.04)", + color: "var(--terminal-green-soft)", + borderRadius: 8, + minHeight: 24, + cursor: p.disabled || !p.canDecrease ? "not-allowed" : "pointer", + fontFamily: "var(--font-headline)", + fontSize: 12, + letterSpacing: "0.08em", + opacity: p.disabled || !p.canDecrease ? 0.35 : 1, + position: "relative", + zIndex: 1 + }, + children: "-" + } + ), + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: p.onIncrease, + onPointerEnter: Se, + disabled: p.disabled || !p.canIncrease, + style: { + border: "1px solid rgba(255,255,255,0.12)", + background: "rgba(255,255,255,0.04)", + color: "var(--terminal-green-soft)", + borderRadius: 8, + minHeight: 24, + cursor: p.disabled || !p.canIncrease ? "not-allowed" : "pointer", + fontFamily: "var(--font-headline)", + fontSize: 12, + letterSpacing: "0.08em", + opacity: p.disabled || !p.canIncrease ? 0.35 : 1, + position: "relative", + zIndex: 1 + }, + children: "+" + } + ) + ] }) + ] + }, + p.label + ) : /* @__PURE__ */ i( + "button", + { + type: "button", + onClick: p.onClick, + onPointerEnter: Se, + disabled: "disabled" in p ? p.disabled : !1, + style: { + minHeight: 54, + border: "1px solid var(--terminal-panel-border)", + background: p.active ? p.accent : "rgba(7,19,11,0.86)", + color: "var(--terminal-green-soft)", + borderRadius: 10, + padding: "8px 10px", + cursor: "disabled" in p && p.disabled ? "not-allowed" : "pointer", + display: "flex", + flexDirection: "column", + alignItems: "center", + justifyContent: "center", + gap: 2, + boxShadow: p.active ? "0 0 18px rgba(125,255,155,0.12)" : "0 8px 24px rgba(0,0,0,0.25)", + position: "relative", + overflow: "hidden", + opacity: "disabled" in p && p.disabled ? 0.38 : 1 + }, + children: [ + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-headline)", + fontSize: 11, + fontWeight: 400, + letterSpacing: "0.08em", + textTransform: "uppercase", + lineHeight: 1.1 + }, + children: p.label + } + ), + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-ui)", + fontSize: 10, + color: "var(--terminal-green)", + letterSpacing: "0.08em", + lineHeight: 1 + }, + children: p.sublabel + } + ) + ] + }, + p.label + )) + } + ) + ] }), + /* @__PURE__ */ n("color", { attach: "background", args: ["#050505"] }) + ] }); +} +const Bn = { + name: "lightlane", + displayName: "Lightlane Challenge", + version: "1.1.0", + paramSchema: { + hideScenePresentation: { type: "boolean", label: "Hide Sphere + Lightlanes", default: !1 }, + hideFlyingBars: { type: "boolean", label: "Hide Flying Bars", default: !1 }, + hideDataBoxes: { type: "boolean", label: "Hide Data Boxes", default: !1 }, + complexity: { type: "range", label: "Complexity", default: 5, min: 1, max: 20, step: 1 }, + radius: { type: "range", label: "Distance to star", default: 2, min: 0.1, max: 5, step: 0.1 }, + chandraDistance: { type: "range", label: "Chandra Camera Distance", default: 6, min: 5, max: 30, step: 0.5 }, + observationMode: { + type: "select", + label: "Observation Mode", + default: "randomSphere", + options: [ + { value: "orbit", label: "Orbit" }, + { value: "randomSphere", label: "Random Sphere" } + ] + }, + sceneView: { + type: "select", + label: "Scene View", + default: "both", + options: [ + { value: "both", label: "Both" }, + { value: "poisson", label: "Poisson" }, + { value: "lightlane", label: "Lightlane" } + ] + }, + orbitSpeed: { type: "range", label: "Orbit Speed", default: 0.2, min: 0, max: 2, step: 0.01 }, + thetaDrift: { type: "range", label: "Theta Drift", default: 0, min: -1, max: 1, step: 0.01 }, + thetaJitter: { type: "range", label: "Theta Jitter", default: 0, min: 0, max: 0.25, step: 5e-3 }, + phiJitter: { type: "range", label: "Phi Jitter", default: 0, min: 0, max: 0.5, step: 0.01 }, + speedup: { type: "range", label: "Speedup", default: 1, min: 1, max: 240, step: 1 } + }, + defaultParams: { + complexity: 5, + radius: 2, + orbitSpeed: 0.2, + thetaDrift: 0, + thetaJitter: 0, + phiJitter: 0, + chandraDistance: 6, + observationMode: "randomSphere", + sceneView: "both", + speedup: 1, + // Internal defaults will handle the rest + distance: 5, + showAxes: !1, + lightlanes: !0, + allSectors: !0, + cumulative: !1, + phi: 0, + theta: Math.PI / 2, + K: 1e3, + usePoisson: !0, + hideScenePresentation: !1, + hideFlyingBars: !1, + hideDataBoxes: !1 + } +}; +export { + kn as default, + Bn as metadata +}; +//# sourceMappingURL=lightlane.js.map diff --git a/dist/vendor/glitch/glitch_lightlane/lightlane.js.map b/dist/vendor/glitch/glitch_lightlane/lightlane.js.map new file mode 100644 index 0000000..6b3be1e --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/lightlane.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lightlane.js","sources":["../src/components/VectorArrow.tsx","../src/vectors.ts","../src/components/DiophantineVectors.tsx","../src/hostBridge.ts","../src/components/lightlane-engine.js","../src/components/FanoSweepPanel.tsx","../src/components/PoissonShell.tsx","../src/components/PulsingSphere.tsx","../src/components/OrbitingObject.tsx","../src/components/SamplingSystem.tsx","../src/types.ts","../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport * as THREE from 'three';\n\ninterface VectorArrowProps {\n vector: [number, number, number];\n origin?: [number, number, number];\n color?: string;\n}\n\nexport function VectorArrow({ vector, origin = [0, 0, 0], color = '#facc15' }: VectorArrowProps) {\n const { dir, len, position } = useMemo(() => {\n const start = new THREE.Vector3(...origin);\n const end = new THREE.Vector3(...vector);\n\n const len = start.distanceTo(end);\n const dir = end.clone().sub(start).normalize();\n\n // ArrowHelper takes direction, origin, length.\n return { dir, len, position: start };\n }, [vector, origin]);\n\n // Using primitive ArrowHelper for geometrical correctness and simplicity\n // We can wrap it in a primitive. \n // However, ArrowHelper manages its own geometry updates which can be tricky in React.\n // Re-creating the helper when props change is a safe pattern for simple props.\n const arrowHelper = useMemo(() => {\n return new THREE.ArrowHelper(dir, position, len, color, 0.2 * Math.min(len, 1) + 0.1, 0.1 * Math.min(len, 1) + 0.05);\n }, [dir, len, position, color]);\n\n return ;\n}\n","export type Vector3Tuple = [number, number, number];\n\nexport function getVectors(complexity: number, allSectors: boolean = false): Vector3Tuple[] {\n const vectors: Vector3Tuple[] = [];\n\n // Complexity N corresponds to integer solutions for x + y + z = N\n // where x, y, z >= 0\n\n for (let x = 0; x <= complexity; x++) {\n for (let y = 0; y <= complexity - x; y++) {\n const z = complexity - x - y;\n\n if (z >= 0) {\n if (!allSectors) {\n vectors.push([x, y, z]);\n } else {\n // Generate permutations for all octants\n // For each component, if it's non-zero, it can be + or -\n const xSigns = x === 0 ? [1] : [1, -1];\n const ySigns = y === 0 ? [1] : [1, -1];\n const zSigns = z === 0 ? [1] : [1, -1];\n\n for (const sx of xSigns) {\n for (const sy of ySigns) {\n for (const sz of zSigns) {\n vectors.push([x * sx, y * sy, z * sz]);\n }\n }\n }\n }\n }\n }\n }\n\n return vectors;\n}\n","import { useMemo } from 'react';\nimport { VectorArrow } from './VectorArrow';\nimport { getVectors } from '../vectors';\nimport * as THREE from 'three';\n\ninterface DiophantineVectorsProps {\n complexity: number;\n lightlanes?: boolean;\n radius?: number;\n distance?: number;\n allSectors?: boolean;\n cumulative?: boolean;\n}\n\nfunction LightlaneCylinder({ vector, radius, distance, color }: { vector: [number, number, number], radius: number, distance: number, color: string }) {\n const { position, quaternion } = useMemo(() => {\n const v = new THREE.Vector3(...vector).normalize();\n const up = new THREE.Vector3(0, 1, 0);\n const quaternion = new THREE.Quaternion().setFromUnitVectors(up, v);\n const position = v.clone().multiplyScalar(distance / 2);\n return { position, quaternion };\n }, [vector, distance]);\n\n return (\n \n \n \n \n );\n}\n\nexport function DiophantineVectors({ complexity, lightlanes = false, radius = 0.5, distance = 5, allSectors = false, cumulative = false }: DiophantineVectorsProps) {\n const vectorData = useMemo(() => {\n const data: { vec: [number, number, number], c: number }[] = [];\n\n const start = cumulative ? 1 : complexity;\n const end = complexity;\n\n for (let c = start; c <= end; c++) {\n const result = getVectors(c, allSectors);\n for (const v of result) {\n data.push({ vec: v, c });\n }\n }\n return data;\n }, [complexity, allSectors, cumulative]);\n\n // Helper to get color based on complexity\n // Low (1) -> Purple (~270)\n // High (max) -> Red (~0 or 360, but let's go down to 0)\n // But wait, standard HSL: Red=0/360, Purple=270.\n // User wants: Higher = Red, Lower = Purple.\n // So mapping: c=1 -> 270, c=max -> 0.\n const getColor = (c: number) => {\n const maxC = cumulative ? Math.max(complexity, 1) : complexity;\n const ratio = maxC > 1 ? (c - 1) / (maxC - 1) : 1;\n // inverse ratio for hue: 1 -> 0, 0 -> 1 ?\n // We want ratio 0 (c=1) -> 270\n // We want ratio 1 (c=max) -> 0\n const hue = 270 * (1 - ratio);\n return `hsl(${hue}, 100%, 50%)`;\n };\n\n return (\n \n {vectorData.map((item, i) => {\n const color = cumulative ? getColor(item.c) : (lightlanes ? \"#ff33c5\" : \"#4ade80\");\n\n return lightlanes ? (\n \n ) : (\n \n );\n })}\n \n );\n}\n","import type { GlitchHostBridge } from './types';\n\nexport const HOST_SOUND_EVENT = 'glitch:play-sound';\nexport const HOST_STOP_SOUND_EVENT = 'glitch:stop-sound';\nexport const HOST_EMIT_PREFIX = 'glitch:host:';\n\nexport const SOUND_IDS = {\n click: 'ui.button_click',\n hover: 'ui.button_hover',\n computeStart: 'machine.compute_start',\n computeStep: 'machine.compute_step',\n computeDone: 'machine.compute_done',\n verdictStable: 'machine.verdict_stable',\n verdictAlert: 'machine.verdict_alert'\n} as const;\n\nexport type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS];\n\nfunction dispatchWindowEvent(type: string, detail: T) {\n if (typeof window === 'undefined') return;\n window.dispatchEvent(new CustomEvent(type, { detail }));\n}\n\nexport function safePlaySound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.playSound) {\n host.playSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_SOUND_EVENT, { id, payload });\n}\n\nexport function safeStopSound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.stopSound) {\n host.stopSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_STOP_SOUND_EVENT, { id, payload });\n}\n\nexport function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown) {\n try {\n if (host?.emit) {\n host.emit(type, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(`${HOST_EMIT_PREFIX}${type}`, payload);\n}\n","// Pure JS sampling/simulation engine used by the React visualization.\n// The module owns the sampling state and exposes simulate(dt).\n\nconst EPS = 1e-12;\n\nexport function createRng(seed = 123456789) {\n let a = seed >>> 0;\n return function rand() {\n a |= 0;\n a = (a + 0x6d2b79f5) | 0;\n let t = Math.imul(a ^ (a >>> 15), 1 | a);\n t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n };\n}\n\nexport function samplePoisson(lambda, rand = Math.random) {\n if (!Number.isFinite(lambda) || lambda <= 0) return 0;\n\n if (lambda < 30) {\n const L = Math.exp(-lambda);\n let k = 0;\n let p = 1;\n do {\n k++;\n p *= rand();\n } while (p > L);\n return k - 1;\n }\n\n const u1 = Math.max(1e-12, rand());\n const u2 = rand();\n const z = Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n const x = lambda + Math.sqrt(lambda) * z;\n return Math.max(0, Math.round(x));\n}\n\nfunction toXYZ(v) {\n return [v[0] ?? v.x, v[1] ?? v.y, v[2] ?? v.z];\n}\n\nfunction norm3(x, y, z) {\n return Math.sqrt(x * x + y * y + z * z);\n}\n\nfunction wrapAngle(angle) {\n const twoPi = 2 * Math.PI;\n let a = angle % twoPi;\n if (a < 0) a += twoPi;\n return a;\n}\n\nfunction randomSphereAngles(rand) {\n const u = 2 * rand() - 1; // cos(theta) uniform\n const phi = 2 * Math.PI * rand();\n return {\n theta: Math.acos(Math.max(-1, Math.min(1, u))),\n phi,\n };\n}\n\n// Reflect polar angle back into [0, pi] so continuous drift can pass poles\n// without creating invalid spherical coordinates.\nexport function reflectPolarTheta(theta) {\n const twoPi = 2 * Math.PI;\n let t = theta % twoPi;\n if (t < 0) t += twoPi;\n if (t > Math.PI) t = twoPi - t;\n return t;\n}\n\nexport function sampleNormal(rand = Math.random) {\n const u1 = Math.max(1e-12, rand());\n const u2 = rand();\n return Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n}\n\nexport function vecOnSphereFromAngles(D, theta, phi) {\n const sinT = Math.sin(theta);\n return [\n D * sinT * Math.cos(phi),\n D * Math.cos(theta),\n D * sinT * Math.sin(phi),\n ];\n}\n\nexport function getDiophantineVectors(complexity, allSectors = false, cumulative = false) {\n const vectors = [];\n const start = cumulative ? 1 : complexity;\n const end = complexity;\n\n for (let c = start; c <= end; c++) {\n for (let x = 0; x <= c; x++) {\n for (let y = 0; y <= c - x; y++) {\n const z = c - x - y;\n if (!allSectors) {\n vectors.push([x, y, z]);\n continue;\n }\n\n const xSigns = x === 0 ? [1] : [1, -1];\n const ySigns = y === 0 ? [1] : [1, -1];\n const zSigns = z === 0 ? [1] : [1, -1];\n for (const sx of xSigns) {\n for (const sy of ySigns) {\n for (const sz of zSigns) {\n vectors.push([x * sx, y * sy, z * sz]);\n }\n }\n }\n }\n }\n }\n\n return vectors;\n}\n\nexport function buildLaneEndpointsOnShell({\n D,\n complexity,\n allSectors = false,\n cumulative = false,\n}) {\n if (!Number.isFinite(D) || D <= 0) return [];\n if (!Number.isInteger(complexity) || complexity < 1) return [];\n\n const raw = getDiophantineVectors(complexity, allSectors, cumulative);\n const out = [];\n for (let i = 0; i < raw.length; i++) {\n const [x, y, z] = raw[i];\n const n = norm3(x, y, z);\n if (n <= EPS) continue;\n out.push([(D * x) / n, (D * y) / n, (D * z) / n]);\n }\n return out;\n}\n\nexport function countLaneOverlapsOnSegments(lanes, satPos, laneRadius) {\n if (!lanes || lanes.length === 0) return 0;\n if (!Number.isFinite(laneRadius) || laneRadius <= 0) return 0;\n\n const [Px, Py, Pz] = toXYZ(satPos);\n const r2 = laneRadius * laneRadius;\n let count = 0;\n\n for (let i = 0; i < lanes.length; i++) {\n const [Bx, By, Bz] = toXYZ(lanes[i]);\n const b2 = Bx * Bx + By * By + Bz * Bz;\n if (b2 <= EPS) continue;\n\n let t = (Px * Bx + Py * By + Pz * Bz) / b2;\n if (t < 0) t = 0;\n if (t > 1) t = 1;\n\n const Cx = t * Bx;\n const Cy = t * By;\n const Cz = t * Bz;\n const dx = Px - Cx;\n const dy = Py - Cy;\n const dz = Pz - Cz;\n\n if (dx * dx + dy * dy + dz * dz < r2) count++;\n }\n\n return count;\n}\n\nexport function countLaneOverlapsOnShell(lanes, D, satPos, laneRadius) {\n if (!lanes || lanes.length === 0) return 0;\n if (!Number.isFinite(D) || D <= 0) return 0;\n if (!Number.isFinite(laneRadius) || laneRadius <= 0) return 0;\n\n const [Px, Py, Pz] = toXYZ(satPos);\n const R2 = D * D;\n const dotThreshold = R2 - 0.5 * laneRadius * laneRadius;\n\n let count = 0;\n for (let i = 0; i < lanes.length; i++) {\n const [Bx, By, Bz] = toXYZ(lanes[i]);\n if (Px * Bx + Py * By + Pz * Bz > dotThreshold) count++;\n }\n return count;\n}\n\nexport function isotropicCoverageProbability({ D, lane_radius }) {\n if (!Number.isFinite(D) || D <= 0) return 0;\n if (!Number.isFinite(lane_radius) || lane_radius <= 0) return 0;\n const p = (lane_radius * lane_radius) / (4 * D * D);\n if (p <= 0) return 0;\n return p > 1 ? 1 : p;\n}\n\nexport function isotropicCoverageProbabilitySegment({ D, lane_radius, lane_length }) {\n if (!Number.isFinite(D) || D <= 0) return 0;\n if (!Number.isFinite(lane_radius) || lane_radius <= 0) return 0;\n if (!Number.isFinite(lane_length) || lane_length <= 0) return 0;\n\n // If the visual segment reaches the observation shell, the shell-cap model is exact.\n if (lane_length >= D - EPS) {\n return isotropicCoverageProbability({ D, lane_radius });\n }\n\n const r = lane_radius;\n const L = lane_length;\n\n // No possible hit if the aperture is smaller than the endpoint gap.\n const dMin = D - L;\n if (r <= dMin) return 0;\n\n // For unrealistic very large apertures, clamp to full coverage.\n if (r >= D + L) return 1;\n\n // Minimum distance to the segment is a monotone function of c = cos(alpha) on c in [0,1].\n // The hit set is a spherical cap c > c0.\n const dJoin = Math.sqrt(Math.max(0, D * D - L * L)); // distance at projection hitting the endpoint boundary\n let c0;\n\n if (r < dJoin) {\n // Endpoint-limited branch (nearest point is the segment endpoint)\n c0 = (D * D + L * L - r * r) / (2 * D * L);\n } else if (r < D) {\n // Interior cylinder branch\n c0 = Math.sqrt(Math.max(0, 1 - (r * r) / (D * D)));\n } else {\n // r >= D covers the whole front hemisphere and may extend beyond; clamp conservatively.\n c0 = -1;\n }\n\n if (!Number.isFinite(c0)) return 0;\n if (c0 < -1) c0 = -1;\n if (c0 > 1) c0 = 1;\n return (1 - c0) / 2;\n}\n\nexport function lambdaIsotropic({ flux, D, lane_radius, dt }) {\n if (!Number.isFinite(flux) || flux <= 0) return 0;\n if (!Number.isFinite(dt) || dt <= 0) return 0;\n const p = isotropicCoverageProbability({ D, lane_radius });\n return flux * p * dt;\n}\n\nexport function lambdaIsotropicSegment({ flux, D, lane_radius, lane_length, dt }) {\n if (!Number.isFinite(flux) || flux <= 0) return 0;\n if (!Number.isFinite(dt) || dt <= 0) return 0;\n const p = isotropicCoverageProbabilitySegment({ D, lane_radius, lane_length });\n return flux * p * dt;\n}\n\nexport function lambdaIsotropicForGeometry({\n flux,\n D,\n lane_radius,\n dt,\n hitTestModel = \"shell\",\n lane_length,\n}) {\n if (hitTestModel === \"segment\") {\n return lambdaIsotropicSegment({ flux, D, lane_radius, lane_length, dt });\n }\n return lambdaIsotropic({ flux, D, lane_radius, dt });\n}\n\nfunction validateConfig(config) {\n if (!config || typeof config !== \"object\") {\n throw new Error(\"createSamplingSimulation: config object is required.\");\n }\n\n const lane_radius = config.lane_radius ?? config.radius;\n const D = config.D;\n const complexity = config.complexity;\n const flux = config.flux;\n const bin_size = config.bin_size ?? 1;\n const sub_bin_sampling = config.sub_bin_sampling ?? 4;\n const thetaDrift = config.thetaDrift ?? config.theta_drift ?? 0;\n const thetaJitter = config.thetaJitter ?? config.theta_jitter ?? 0;\n const phiJitter = config.phiJitter ?? config.phi_jitter ?? 0;\n const lane_length = config.laneLength ?? config.lane_length ?? config.distance ?? D;\n const hitTestModel = config.hitTestModel ?? config.hit_test_model ?? \"shell\";\n const observationMode = config.observationMode ?? config.observation_mode ?? \"orbit\";\n\n if (!Number.isFinite(D) || D <= 0) {\n throw new Error(\"createSamplingSimulation: D must be a positive number.\");\n }\n if (!Number.isFinite(lane_radius) || lane_radius <= 0) {\n throw new Error(\"createSamplingSimulation: lane_radius (or radius) must be a positive number.\");\n }\n if (!Number.isInteger(complexity) || complexity < 1) {\n throw new Error(\"createSamplingSimulation: complexity must be an integer >= 1.\");\n }\n if (!Number.isFinite(flux) || flux < 0) {\n throw new Error(\"createSamplingSimulation: flux must be a finite number >= 0.\");\n }\n if (!Number.isFinite(bin_size) || bin_size <= 0) {\n throw new Error(\"createSamplingSimulation: bin_size must be a positive number.\");\n }\n if (!Number.isInteger(sub_bin_sampling) || sub_bin_sampling < 1) {\n throw new Error(\"createSamplingSimulation: sub_bin_sampling must be an integer >= 1.\");\n }\n if (!Number.isFinite(thetaDrift)) {\n throw new Error(\"createSamplingSimulation: thetaDrift must be finite.\");\n }\n if (!Number.isFinite(thetaJitter) || thetaJitter < 0) {\n throw new Error(\"createSamplingSimulation: thetaJitter must be a finite number >= 0.\");\n }\n if (!Number.isFinite(phiJitter) || phiJitter < 0) {\n throw new Error(\"createSamplingSimulation: phiJitter must be a finite number >= 0.\");\n }\n if (!Number.isFinite(lane_length) || lane_length <= 0) {\n throw new Error(\"createSamplingSimulation: laneLength/lane_length/distance must be a positive number.\");\n }\n if (hitTestModel !== \"shell\" && hitTestModel !== \"segment\") {\n throw new Error('createSamplingSimulation: hitTestModel must be \"shell\" or \"segment\".');\n }\n if (observationMode !== \"orbit\" && observationMode !== \"randomSphere\") {\n throw new Error('createSamplingSimulation: observationMode must be \"orbit\" or \"randomSphere\".');\n }\n\n return {\n D,\n lane_radius,\n complexity,\n flux,\n bin_size,\n sub_bin_sampling,\n theta: reflectPolarTheta(config.theta ?? Math.PI / 2),\n phi: wrapAngle(config.phi ?? 0),\n velocity: config.velocity ?? 0,\n thetaDrift,\n thetaJitter,\n phiJitter,\n lane_length,\n hitTestModel,\n observationMode,\n allSectors: Boolean(config.allSectors),\n cumulative: Boolean(config.cumulative),\n usePoisson: config.usePoisson !== false,\n seed: Number.isFinite(config.seed) ? config.seed : 1,\n };\n}\n\nexport function createSamplingSimulation(config) {\n const cfg = validateConfig(config);\n const lanes = buildLaneEndpointsOnShell(cfg);\n const laneSegments =\n cfg.hitTestModel === \"segment\"\n ? buildLaneEndpointsOnShell({ ...cfg, D: cfg.lane_length })\n : lanes;\n const lightlaneRand = createRng(cfg.seed);\n const isotropicRand = createRng(cfg.seed + 1);\n const pathRand = createRng(cfg.seed + 2);\n\n const subBinSize = cfg.bin_size / cfg.sub_bin_sampling;\n const lambdaIsoSubBin = lambdaIsotropicForGeometry({\n flux: cfg.flux,\n D: cfg.D,\n lane_radius: cfg.lane_radius,\n dt: subBinSize,\n hitTestModel: cfg.hitTestModel,\n lane_length: cfg.lane_length,\n });\n let timeInBin = 0;\n let timeInSubBin = 0;\n let phase = cfg.phi;\n let thetaNow = cfg.theta;\n let elapsed = 0;\n let accumulatedLightlane = 0;\n let accumulatedIsotropic = 0;\n let expectedLightlaneThisBin = 0;\n let processedSubBinsInCurrentBin = 0;\n let lastLaneCount = 0;\n let overlapSumThisBin = 0;\n\n function sampleCount(lambda, rand) {\n return cfg.usePoisson ? samplePoisson(lambda, rand) : lambda;\n }\n\n function currentSatPos(sampleTheta = thetaNow, samplePhi = phase) {\n return vecOnSphereFromAngles(cfg.D, sampleTheta, samplePhi);\n }\n\n function processSubBin() {\n let sampleTheta;\n let samplePhi;\n if (cfg.observationMode === \"randomSphere\") {\n const ang = randomSphereAngles(pathRand);\n sampleTheta = ang.theta;\n samplePhi = ang.phi;\n } else {\n sampleTheta = reflectPolarTheta(\n thetaNow + (cfg.thetaJitter > 0 ? cfg.thetaJitter * sampleNormal(pathRand) : 0)\n );\n samplePhi = wrapAngle(\n phase + (cfg.phiJitter > 0 ? cfg.phiJitter * sampleNormal(pathRand) : 0)\n );\n }\n const satPos = currentSatPos(sampleTheta, samplePhi);\n const laneCount =\n cfg.hitTestModel === \"segment\"\n ? countLaneOverlapsOnSegments(laneSegments, satPos, cfg.lane_radius)\n : countLaneOverlapsOnShell(lanes, cfg.D, satPos, cfg.lane_radius);\n lastLaneCount = laneCount;\n\n const N = lanes.length;\n const lam = N > 0 ? (laneCount * cfg.flux * subBinSize) / N : 0;\n accumulatedLightlane += sampleCount(lam, lightlaneRand);\n accumulatedIsotropic += sampleCount(lambdaIsoSubBin, isotropicRand);\n expectedLightlaneThisBin += lam;\n overlapSumThisBin += laneCount;\n processedSubBinsInCurrentBin++;\n\n return {\n laneCount,\n satPos,\n lambdaLightlaneSubBin: lam,\n phase: samplePhi,\n theta: sampleTheta,\n };\n }\n\n function finalizeBin() {\n const effectiveBinSize =\n processedSubBinsInCurrentBin > 0 ? processedSubBinsInCurrentBin * subBinSize : cfg.bin_size;\n const lamIso = lambdaIsoSubBin * cfg.sub_bin_sampling;\n const isotropic = accumulatedIsotropic;\n const lightlane = accumulatedLightlane;\n\n const bin = {\n time: elapsed,\n bin_size: effectiveBinSize,\n lightlane,\n isotropic,\n lambdaIsotropic: processedSubBinsInCurrentBin > 0 ? lambdaIsoSubBin * processedSubBinsInCurrentBin : lamIso,\n overlaps: lastLaneCount,\n overlapsMean:\n processedSubBinsInCurrentBin > 0\n ? overlapSumThisBin / processedSubBinsInCurrentBin\n : 0,\n subBins: processedSubBinsInCurrentBin,\n phase,\n theta: thetaNow,\n lambdaLightlaneExpected: expectedLightlaneThisBin,\n };\n\n accumulatedLightlane = 0;\n accumulatedIsotropic = 0;\n expectedLightlaneThisBin = 0;\n overlapSumThisBin = 0;\n processedSubBinsInCurrentBin = 0;\n return bin;\n }\n\n return {\n config: { ...cfg },\n getLaneCount() {\n return lanes.length;\n },\n getState() {\n return {\n elapsed,\n phase,\n theta: thetaNow,\n timeInBin,\n timeInSubBin,\n accumulatedLightlane,\n accumulatedIsotropic,\n expectedLightlaneThisBin,\n processedSubBinsInCurrentBin,\n lastLaneCount,\n laneCount: lanes.length,\n };\n },\n reset() {\n timeInBin = 0;\n timeInSubBin = 0;\n phase = cfg.phi;\n thetaNow = cfg.theta;\n elapsed = 0;\n accumulatedLightlane = 0;\n accumulatedIsotropic = 0;\n expectedLightlaneThisBin = 0;\n processedSubBinsInCurrentBin = 0;\n lastLaneCount = 0;\n overlapSumThisBin = 0;\n },\n flushPartialBin() {\n if (processedSubBinsInCurrentBin <= 0) return null;\n const bin = finalizeBin();\n // Drop any partial sub-bin time so the visual pause appears immediate.\n timeInBin = 0;\n timeInSubBin = 0;\n return bin;\n },\n simulate(dt) {\n if (!Number.isFinite(dt) || dt <= 0) {\n return {\n bins: [],\n lastLaneCount,\n subBinEvents: 0,\n elapsed,\n };\n }\n\n let remaining = dt;\n let subBinEvents = 0;\n const bins = [];\n\n while (remaining > EPS) {\n const untilSub = subBinSize - timeInSubBin;\n const untilBin = cfg.bin_size - timeInBin;\n const step = Math.min(remaining, untilSub, untilBin);\n\n phase += cfg.velocity * step;\n thetaNow = reflectPolarTheta(thetaNow + cfg.thetaDrift * step);\n elapsed += step;\n timeInSubBin += step;\n timeInBin += step;\n remaining -= step;\n\n if (timeInSubBin >= subBinSize - EPS) {\n timeInSubBin = 0;\n processSubBin();\n subBinEvents++;\n }\n\n if (timeInBin >= cfg.bin_size - EPS) {\n timeInBin = 0;\n bins.push(finalizeBin());\n }\n }\n\n return {\n bins,\n lastLaneCount,\n subBinEvents,\n elapsed,\n };\n },\n };\n}\n\n// Backwards-compatible aliases while transitioning callers.\nexport const createDualRegimeSimulation = createSamplingSimulation;\n","import { Html } from '@react-three/drei';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { SOUND_IDS, safePlaySound, safeStopSound } from '../hostBridge';\nimport type { GlitchHostBridge } from '../types';\nimport { createSamplingSimulation } from './lightlane-engine.js';\n\ninterface FanoSweepPanelProps {\n radius: number;\n distance: number;\n chandraDistance: number;\n allSectors: boolean;\n cumulative: boolean;\n theta: number;\n phi: number;\n orbitSpeed: number;\n thetaDrift: number;\n thetaJitter: number;\n phiJitter: number;\n K: number;\n speedup: number;\n usePoisson: boolean;\n bottomInset?: number;\n onBack?: () => void;\n host?: GlitchHostBridge;\n}\n\ninterface SweepPoint {\n complexity: number;\n laneCount: number;\n meanBlue: number;\n meanYellow: number;\n fanoBlue: number;\n fanoYellow: number;\n fanoExcess: number;\n}\n\ninterface RunningMoments {\n n: number;\n mean: number;\n m2: number;\n}\n\nfunction updateMoments(m: RunningMoments, x: number): RunningMoments {\n const n = m.n + 1;\n const delta = x - m.mean;\n const mean = m.mean + delta / n;\n const m2 = m.m2 + delta * (x - mean);\n return { n, mean, m2 };\n}\n\nfunction emptyMoments(): RunningMoments {\n return { n: 0, mean: 0, m2: 0 };\n}\n\nfunction sampleFanoPoint({\n complexity,\n samplesPerPoint,\n runsPerPoint,\n binSize,\n subBinSampling,\n props,\n observationMode,\n seed,\n}: {\n complexity: number;\n samplesPerPoint: number;\n runsPerPoint: number;\n binSize: number;\n subBinSampling: number;\n props: FanoSweepPanelProps;\n observationMode: 'orbit' | 'randomSphere';\n seed: number;\n}): SweepPoint {\n let blue = emptyMoments();\n let yellow = emptyMoments();\n let laneCount = 0;\n\n for (let run = 0; run < runsPerPoint; run++) {\n const sim = createSamplingSimulation({\n D: props.chandraDistance,\n theta: props.theta,\n phi: props.phi,\n observationMode,\n velocity: props.orbitSpeed,\n thetaDrift: props.thetaDrift,\n thetaJitter: props.thetaJitter,\n phiJitter: props.phiJitter,\n bin_size: binSize,\n complexity,\n sub_bin_sampling: subBinSampling,\n flux: props.K,\n lane_radius: props.radius,\n distance: props.distance,\n hitTestModel: 'segment',\n allSectors: props.allSectors,\n cumulative: props.cumulative,\n usePoisson: props.usePoisson,\n seed: seed + run * 7_919,\n });\n if (run === 0) laneCount = sim.getLaneCount();\n\n for (let i = 0; i < samplesPerPoint; i++) {\n const { bins } = sim.simulate(binSize);\n const bin = bins[0];\n if (!bin) continue;\n blue = updateMoments(blue, bin.lightlane);\n yellow = updateMoments(yellow, bin.isotropic);\n }\n }\n\n const varBlue = blue.n > 1 ? blue.m2 / (blue.n - 1) : 0;\n const varYellow = yellow.n > 1 ? yellow.m2 / (yellow.n - 1) : 0;\n const fanoBlue = blue.mean > 0 ? varBlue / blue.mean : 0;\n const fanoYellow = yellow.mean > 0 ? varYellow / yellow.mean : 0;\n\n return {\n complexity,\n laneCount,\n meanBlue: blue.mean,\n meanYellow: yellow.mean,\n fanoBlue,\n fanoYellow,\n fanoExcess: Math.max(0, fanoBlue - fanoYellow),\n };\n}\n\nfunction fitPowerLaw(points: SweepPoint[], minComplexity = 1) {\n const usable = points.filter(p => p.complexity >= minComplexity && p.complexity > 1 && p.fanoExcess > 1e-6);\n if (usable.length < 3) return null;\n\n let sx = 0;\n let sy = 0;\n let sxx = 0;\n let sxy = 0;\n const n = usable.length;\n\n for (const p of usable) {\n const x = Math.log(p.laneCount);\n const y = Math.log(p.fanoExcess);\n sx += x;\n sy += y;\n sxx += x * x;\n sxy += x * y;\n }\n\n const denom = n * sxx - sx * sx;\n if (Math.abs(denom) < 1e-12) return null;\n\n const slope = (n * sxy - sx * sy) / denom;\n const intercept = (sy - slope * sx) / n;\n\n return {\n A: Math.exp(intercept),\n alpha: -slope,\n predictFanoExcessFromLaneCount(laneCount: number) {\n return Math.exp(intercept + slope * Math.log(Math.max(1, laneCount)));\n },\n };\n}\n\nfunction fitPowerLawWithFloor(points: SweepPoint[], minComplexity = 1) {\n const usable = points.filter(p => p.complexity >= minComplexity && p.complexity > 1 && p.fanoExcess > 1e-6);\n if (usable.length < 4) return null;\n\n const minY = Math.min(...usable.map((p) => p.fanoExcess));\n const maxB = Math.max(0, minY * 0.98);\n let best: null | {\n A: number;\n alpha: number;\n B: number;\n score: number;\n } = null;\n\n const steps = 80;\n for (let i = 0; i <= steps; i++) {\n const B = (i / steps) * maxB;\n const shifted = usable\n .map((p) => ({ x: p.laneCount, y: p.fanoExcess - B }))\n .filter((p) => p.y > 1e-9);\n if (shifted.length < 3) continue;\n\n let sx = 0;\n let sy = 0;\n let sxx = 0;\n let sxy = 0;\n const n = shifted.length;\n\n for (const p of shifted) {\n const x = Math.log(p.x);\n const y = Math.log(p.y);\n sx += x;\n sy += y;\n sxx += x * x;\n sxy += x * y;\n }\n\n const denom = n * sxx - sx * sx;\n if (Math.abs(denom) < 1e-12) continue;\n\n const slope = (n * sxy - sx * sy) / denom;\n const intercept = (sy - slope * sx) / n;\n const A = Math.exp(intercept);\n const alpha = -slope;\n if (!(A > 0) || !(alpha > 0)) continue;\n\n let score = 0;\n for (const p of usable) {\n const pred = B + A * Math.pow(Math.max(1, p.laneCount), -alpha);\n const err = Math.log(Math.max(1e-9, p.fanoExcess)) - Math.log(Math.max(1e-9, pred));\n score += err * err;\n }\n\n if (!best || score < best.score) {\n best = { A, alpha, B, score };\n }\n }\n\n if (!best) return null;\n\n return {\n A: best.A,\n alpha: best.alpha,\n B: best.B,\n score: best.score,\n predictFanoExcessFromLaneCount(laneCount: number) {\n return best.B + best.A * Math.pow(Math.max(1, laneCount), -best.alpha);\n },\n };\n}\n\nfunction fitPowerXY(samples: Array<{ x: number; y: number }>) {\n const usable = samples.filter((s) => s.x > 0 && s.y > 0);\n if (usable.length < 3) return null;\n\n let sx = 0;\n let sy = 0;\n let sxx = 0;\n let sxy = 0;\n const n = usable.length;\n\n for (const s of usable) {\n const x = Math.log(s.x);\n const y = Math.log(s.y);\n sx += x;\n sy += y;\n sxx += x * x;\n sxy += x * y;\n }\n\n const denom = n * sxx - sx * sx;\n if (Math.abs(denom) < 1e-12) return null;\n\n const slope = (n * sxy - sx * sy) / denom;\n const intercept = (sy - slope * sx) / n;\n const A = Math.exp(intercept);\n\n return {\n A,\n beta: slope,\n predict(x: number) {\n return A * Math.pow(Math.max(1e-9, x), slope);\n },\n invert(y: number) {\n if (A <= 0 || Math.abs(slope) < 1e-12 || y <= 0) return null;\n return Math.pow(y / A, 1 / slope);\n },\n };\n}\n\nfunction estimateComplexityFromLaneCount(points: SweepPoint[], targetLaneCount: number) {\n if (!Number.isFinite(targetLaneCount) || targetLaneCount <= 0 || points.length === 0) return null;\n\n const sorted = [...points].sort((a, b) => a.complexity - b.complexity);\n const byLane = [...sorted].sort((a, b) => a.laneCount - b.laneCount);\n const first = byLane[0];\n const last = byLane[byLane.length - 1];\n\n if (targetLaneCount <= first.laneCount) {\n return { complexity: first.complexity, mode: 'observed-range' as const };\n }\n\n for (let i = 1; i < byLane.length; i++) {\n const a = byLane[i - 1];\n const b = byLane[i];\n if (targetLaneCount <= b.laneCount) {\n const denom = Math.max(1e-9, b.laneCount - a.laneCount);\n const t = (targetLaneCount - a.laneCount) / denom;\n return {\n complexity: a.complexity + t * (b.complexity - a.complexity),\n mode: 'observed-range' as const,\n };\n }\n }\n\n const growthFit = fitPowerXY(sorted.map((p) => ({ x: p.complexity, y: p.laneCount })));\n const extrapolated = growthFit?.invert(targetLaneCount) ?? null;\n if (extrapolated && Number.isFinite(extrapolated)) {\n return { complexity: extrapolated, mode: 'extrapolated' as const };\n }\n\n return { complexity: last.complexity, mode: 'observed-max' as const };\n}\n\nfunction linePath(points: SweepPoint[], getY: (p: SweepPoint) => number, xToPx: (x: number) => number, yToPx: (y: number) => number) {\n return points\n .map((p, i) => `${i === 0 ? 'M' : 'L'} ${xToPx(p.complexity)} ${yToPx(getY(p))}`)\n .join(' ');\n}\n\nfunction formatYAxisTick(value: number) {\n if (value >= 10) return value.toFixed(0);\n if (value >= 2) return value.toFixed(1);\n return value.toFixed(2);\n}\n\nfunction buildLogTicks(min: number, max: number) {\n const candidates = [\n 0.5, 0.6, 0.7, 0.8, 0.9,\n 1.0, 1.1, 1.2, 1.4, 1.6, 1.8,\n 2.0, 2.5, 3.0, 4.0, 5.0, 7.5, 10.0,\n ];\n\n const ticks = candidates.filter(v => v >= min && v <= max);\n if (ticks.length >= 3) return ticks;\n\n // Fallback for unusual ranges.\n const steps = 5;\n const logMin = Math.log(min);\n const logMax = Math.log(max);\n return Array.from({ length: steps }, (_, i) => {\n const t = i / (steps - 1);\n return Math.exp(logMin + (logMax - logMin) * t);\n });\n}\n\nexport function FanoSweepPanel(props: FanoSweepPanelProps) {\n const [maxComplexity, setMaxComplexity] = useState(40);\n const [samplesPerPoint, setSamplesPerPoint] = useState(1000);\n const [runsPerPoint, setRunsPerPoint] = useState(3);\n const [binSize, setBinSize] = useState(1);\n const [subBinSampling, setSubBinSampling] = useState(4);\n const [observationMode, setObservationMode] = useState<'orbit' | 'randomSphere'>('randomSphere');\n const [targetExcess, setTargetExcess] = useState(0.05);\n const [fitStartComplexity, setFitStartComplexity] = useState(10);\n const [runId, setRunId] = useState(0);\n const [points, setPoints] = useState([]);\n const [progress, setProgress] = useState(0);\n const [running, setRunning] = useState(false);\n const wasRunningRef = useRef(false);\n const progressStepRef = useRef(-1);\n\n const playUiHover = () => {\n safePlaySound(props.host, SOUND_IDS.hover, { page: 'fano' });\n };\n\n const playUiClick = (target: string, payload?: Record) => {\n safePlaySound(props.host, SOUND_IDS.click, { page: 'fano', target, ...payload });\n };\n\n useEffect(() => {\n let cancelled = false;\n setPoints([]);\n setProgress(0);\n setRunning(true);\n\n (async () => {\n const nextPoints: SweepPoint[] = [];\n\n for (let c = 1; c <= maxComplexity; c++) {\n if (cancelled) return;\n const point = sampleFanoPoint({\n complexity: c,\n samplesPerPoint,\n runsPerPoint,\n binSize,\n subBinSampling,\n props,\n observationMode,\n seed: 10_000 + c * 97 + runId * 100_003,\n });\n nextPoints.push(point);\n setPoints([...nextPoints]);\n setProgress(c / maxComplexity);\n await new Promise(resolve => setTimeout(resolve, 0));\n }\n\n if (!cancelled) setRunning(false);\n })();\n\n return () => {\n cancelled = true;\n };\n }, [\n maxComplexity,\n samplesPerPoint,\n runsPerPoint,\n binSize,\n subBinSampling,\n observationMode,\n runId,\n props.radius,\n props.distance,\n props.chandraDistance,\n props.allSectors,\n props.cumulative,\n props.theta,\n props.phi,\n props.orbitSpeed,\n props.thetaDrift,\n props.thetaJitter,\n props.phiJitter,\n props.K,\n props.speedup,\n props.usePoisson,\n ]);\n\n useEffect(() => {\n const wasRunning = wasRunningRef.current;\n wasRunningRef.current = running;\n\n if (running && !wasRunning) {\n progressStepRef.current = -1;\n safePlaySound(props.host, SOUND_IDS.computeStart, { page: 'fano' });\n return;\n }\n\n if (!running && wasRunning) {\n safeStopSound(props.host, SOUND_IDS.computeStep, { page: 'fano' });\n safePlaySound(props.host, SOUND_IDS.computeDone, { page: 'fano', points: points.length });\n }\n }, [running, props.host, points.length]);\n\n useEffect(() => {\n if (!running) return;\n const nextProgressStep = Math.floor(progress * 10);\n if (nextProgressStep <= progressStepRef.current) return;\n progressStepRef.current = nextProgressStep;\n safePlaySound(props.host, SOUND_IDS.computeStep, { page: 'fano', progress });\n }, [progress, running, props.host]);\n\n const fit = useMemo(() => fitPowerLaw(points, fitStartComplexity), [points, fitStartComplexity]);\n const floorFit = useMemo(() => fitPowerLawWithFloor(points, fitStartComplexity), [points, fitStartComplexity]);\n const indistinguishableEstimate = useMemo(() => {\n if (!fit || fit.alpha <= 0 || targetExcess <= 0) return null;\n\n if (floorFit && floorFit.B >= targetExcess) {\n return {\n targetExcess,\n requiredLaneCount: Number.POSITIVE_INFINITY,\n measuredCrossing: points.find((p) => p.fanoExcess <= targetExcess) ?? null,\n complexityEstimate: null,\n blockedByFloor: true as const,\n floorExcess: floorFit.B,\n };\n }\n\n const effectiveTarget = floorFit ? Math.max(1e-9, targetExcess - floorFit.B) : targetExcess;\n const effectiveA = floorFit ? floorFit.A : fit.A;\n const effectiveAlpha = floorFit ? floorFit.alpha : fit.alpha;\n const requiredLaneCount = Math.pow(effectiveA / effectiveTarget, 1 / effectiveAlpha);\n if (!Number.isFinite(requiredLaneCount) || requiredLaneCount <= 0) return null;\n\n const measuredCrossing = points.find((p) => p.fanoExcess <= targetExcess) ?? null;\n const complexityEstimate = estimateComplexityFromLaneCount(points, requiredLaneCount);\n\n return {\n targetExcess,\n requiredLaneCount,\n measuredCrossing,\n complexityEstimate,\n blockedByFloor: false as const,\n floorExcess: floorFit?.B ?? 0,\n };\n }, [fit, floorFit, points, targetExcess]);\n\n const plot = useMemo(() => {\n const width = 860;\n const height = 360;\n const margin = { top: 20, right: 20, bottom: 42, left: 48 };\n const innerW = width - margin.left - margin.right;\n const innerH = height - margin.top - margin.bottom;\n const maxX = Math.max(2, maxComplexity);\n const positiveYs = [\n 1,\n ...points.map(p => p.fanoBlue),\n ...points.map(p => p.fanoYellow),\n ...points.map(p => 1 + p.fanoExcess),\n ].filter((v) => Number.isFinite(v) && v > 0);\n const rawYMin = Math.min(...positiveYs);\n const rawYMax = Math.max(...positiveYs);\n const yMin = Math.max(1e-3, Math.min(0.95, rawYMin * 0.95));\n const yMax = Math.max(1.05, rawYMax * 1.05);\n const logMin = Math.log(yMin);\n const logMax = Math.log(yMax);\n\n const xToPx = (x: number) => margin.left + ((x - 1) / (maxX - 1)) * innerW;\n const yToPx = (y: number) => {\n const safeY = Math.min(yMax, Math.max(yMin, y));\n const ly = Math.log(safeY);\n return margin.top + innerH - ((ly - logMin) / Math.max(1e-9, (logMax - logMin))) * innerH;\n };\n const yTicks = buildLogTicks(yMin, yMax);\n\n return { width, height, margin, innerW, innerH, xToPx, yToPx, yMax, yMin, yTicks };\n }, [points, maxComplexity]);\n\n const bluePath = useMemo(\n () => (points.length > 1 ? linePath(points, p => p.fanoBlue, plot.xToPx, plot.yToPx) : ''),\n [points, plot]\n );\n const yellowPath = useMemo(\n () => (points.length > 1 ? linePath(points, p => p.fanoYellow, plot.xToPx, plot.yToPx) : ''),\n [points, plot]\n );\n\n const latest = points.at(-1) ?? null;\n\n return (\n \n \n
\n
\n
\n Fano Sweep\n
\n
\n Goal: show {`Fano(Blue)`} trending toward 1.0 (or toward Yellow) as complexity increases.\n
\n
\n
\n {props.onBack && (\n {\n playUiClick('back-to-simulator');\n props.onBack?.();\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: 'rgba(7,19,11,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '8px 12px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.08em',\n textTransform: 'uppercase',\n }}\n >\n Back To Simulator\n \n )}\n {\n playUiClick('rerun-sweep');\n setRunId(prev => prev + 1);\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: running ? 'rgba(125, 255, 155, 0.14)' : 'rgba(7,19,11,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '8px 12px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.08em',\n textTransform: 'uppercase',\n }}\n >\n {running ? 'Rerun (queued)' : 'Rerun Sweep'}\n \n
\n
\n\n
\n {\n playUiClick('preset-video-demo');\n setObservationMode('randomSphere');\n setMaxComplexity(60);\n setSamplesPerPoint(1200);\n setRunsPerPoint(2);\n setBinSize(1);\n setSubBinSampling(4);\n setFitStartComplexity(12);\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: 'rgba(7,19,11,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '6px 10px',\n borderRadius: 8,\n cursor: 'pointer',\n fontSize: 11,\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.06em',\n }}\n >\n Preset: Video Demo\n \n {\n playUiClick('preset-robust-sweep');\n setObservationMode('randomSphere');\n setMaxComplexity(200);\n setSamplesPerPoint(3000);\n setRunsPerPoint(5);\n setBinSize(1);\n setSubBinSampling(16);\n setFitStartComplexity(40);\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid rgba(125, 255, 155, 0.32)',\n background: 'rgba(2,6,23,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '6px 10px',\n borderRadius: 8,\n cursor: 'pointer',\n fontSize: 11,\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.06em',\n }}\n >\n Preset: Robust Sweep\n \n
\n\n
\n \n \n \n \n \n \n \n \n
\n Progress\n
\n \n
\n
{running ? `Running ${Math.round(progress * 100)}%` : 'Complete'}
\n
\n
\n \n
\n \n \n \n\n {plot.yTicks.map((y, i) => {\n const py = plot.yToPx(y);\n return (\n \n \n {formatYAxisTick(y)}\n \n );\n })}\n\n \n Fano = 1\n\n \n \n\n {Array.from({ length: Math.min(maxComplexity, 10) }, (_, i) => {\n const x = 1 + ((maxComplexity - 1) * i) / Math.max(1, Math.min(maxComplexity - 1, 9));\n const px = plot.xToPx(x);\n return (\n \n \n \n {Math.round(x)}\n \n \n );\n })}\n\n {yellowPath && }\n {bluePath && }\n\n {fit && points.length > 2 && (() => {\n const fitPath = points\n .filter((p) => p.complexity >= fitStartComplexity)\n .map((p, i) => {\n const y = 1 + fit.predictFanoExcessFromLaneCount(p.laneCount);\n return `${i === 0 ? 'M' : 'L'} ${plot.xToPx(p.complexity)} ${plot.yToPx(y)}`;\n })\n .join(' ');\n return ;\n })()}\n\n {floorFit && points.length > 2 && (() => {\n const fitPath = points\n .filter((p) => p.complexity >= fitStartComplexity)\n .map((p, i) => {\n const y = 1 + floorFit.predictFanoExcessFromLaneCount(p.laneCount);\n return `${i === 0 ? 'M' : 'L'} ${plot.xToPx(p.complexity)} ${plot.yToPx(y)}`;\n })\n .join(' ');\n return ;\n })()}\n\n {points.map((p) => (\n \n \n \n \n ))}\n\n \n Complexity\n \n \n Fano Factor (Var / Mean, log scale)\n \n \n
\n\n \n
\n
Legend
\n
Blue: Lightlane Fano
\n
Yellow: Isotropic Fano
\n
Dashed orange: Fano = 1
\n
Dashed blue: power-fit extrapolation (blue excess over yellow)
\n
Dashed cyan: floor-aware fit (B + A×N^-α)
\n
\n\n
\n
Latest Point
\n {latest ? (\n <>\n
Complexity: {latest.complexity}
\n
Lanes: {latest.laneCount}
\n
Mean Ratio (B/Y): {(latest.meanBlue / Math.max(1e-9, latest.meanYellow)).toFixed(3)}
\n
Fano Blue: {latest.fanoBlue.toFixed(3)}
\n
Fano Yellow: {latest.fanoYellow.toFixed(3)}
\n
Excess (B-Y): {latest.fanoExcess.toFixed(3)}
\n
\n Aggregated over {samplesPerPoint.toLocaleString()} bins × {runsPerPoint} seeds\n
\n \n ) : (\n
No points yet.
\n )}\n
\n\n
\n
Power Fit
\n {fit ? (\n <>\n
\n Excess ≈ {fit.A.toExponential(2)} × N-{fit.alpha.toFixed(2)}\n
\n
\n Fit is on blue excess over yellow using lane count N, starting at complexity {fitStartComplexity}.\n
\n \n ) : (\n
Need more points with nonzero excess.
\n )}\n {floorFit && (\n
\n Floor fit: excess ≈ {floorFit.B.toFixed(3)} + {floorFit.A.toExponential(2)} × N-{floorFit.alpha.toFixed(2)}\n
\n )}\n
\n\n
\n
Indistinguishable Target
\n
\n Criterion: Fano Blue - Fano Yellow ≤ {targetExcess.toFixed(3)}\n
\n {indistinguishableEstimate ? (\n <>\n {indistinguishableEstimate.blockedByFloor ? (\n <>\n
\n Floor-aware fit predicts no finite crossing for this threshold.\n
\n
\n Fitted excess floor:{' '}\n \n {indistinguishableEstimate.floorExcess.toFixed(3)}\n \n
\n
\n Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau.\n
\n \n ) : (\n <>\n
\n Required lane count N (fit):{' '}\n \n {Math.round(indistinguishableEstimate.requiredLaneCount).toLocaleString()}\n \n
\n
\n Estimated complexity:{' '}\n \n {indistinguishableEstimate.complexityEstimate\n ? Math.ceil(indistinguishableEstimate.complexityEstimate.complexity).toLocaleString()\n : 'n/a'}\n \n {indistinguishableEstimate.complexityEstimate && (\n \n {' '}\n ({indistinguishableEstimate.complexityEstimate.mode === 'observed-range'\n ? 'interpolated from current sweep'\n : indistinguishableEstimate.complexityEstimate.mode === 'extrapolated'\n ? 'extrapolated'\n : 'bounded by current sweep'})\n \n )}\n
\n \n )}\n
\n {indistinguishableEstimate.measuredCrossing\n ? `Observed crossing already reached at complexity ${indistinguishableEstimate.measuredCrossing.complexity}.`\n : 'No observed crossing yet in current sweep; estimate uses fit.'}\n
\n \n ) : (\n
\n Need a stable excess fit (nonzero blue excess across multiple points).\n
\n )}\n
\n\n
\n Use Random Sphere to isolate discretization convergence from path bias.\n Orbit mode is still useful to show persistent anisotropy on specific trajectories.\n
\n For a stronger/cleaner claim in the video: report the threshold estimate together with bin size, sub-bin sampling, and runs/point.\n
\n
\n If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers.\n
\n
\n
\n
\n
\n \n );\n}\n","import { useMemo, useRef } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport { Color } from 'three';\nimport type { BufferGeometry, Points as ThreePoints, PointsMaterial } from 'three';\n\ntype SparklePoint = {\n speed: number;\n phase: number;\n minBrightness: number;\n maxBoost: number;\n};\n\nconst sparkleColor = new Color('#dbeafe');\n\nfunction createSparkleField(radius: number, count: number) {\n const positions = new Float32Array(count * 3);\n const colors = new Float32Array(count * 3);\n const sparklePoints: SparklePoint[] = [];\n const shellRadius = radius + 0.01;\n\n for (let index = 0; index < count; index += 1) {\n const u = Math.random();\n const v = Math.random();\n const theta = 2 * Math.PI * u;\n const z = 1 - 2 * v;\n const radial = Math.sqrt(Math.max(0, 1 - z * z));\n const offset = index * 3;\n\n positions[offset] = shellRadius * radial * Math.cos(theta);\n positions[offset + 1] = shellRadius * radial * Math.sin(theta);\n positions[offset + 2] = shellRadius * z;\n\n colors[offset] = sparkleColor.r * 0.15;\n colors[offset + 1] = sparkleColor.g * 0.15;\n colors[offset + 2] = sparkleColor.b * 0.15;\n\n sparklePoints.push({\n speed: 0.8 + Math.random() * 2.6,\n phase: Math.random() * Math.PI * 2,\n minBrightness: 0.03 + Math.random() * 0.06,\n maxBoost: 0.35 + Math.random() * 0.85,\n });\n }\n\n return { positions, colors, sparklePoints };\n}\n\nexport function PoissonShell({ radius }: { radius: number }) {\n const sparkleRef = useRef>(null);\n const sparkleCount = 16000;\n const { positions, colors, sparklePoints } = useMemo(\n () => createSparkleField(radius, sparkleCount),\n [radius]\n );\n\n useFrame(({ clock }) => {\n const sparkleCloud = sparkleRef.current;\n if (!sparkleCloud) return;\n\n const colorAttribute = sparkleCloud.geometry.getAttribute('color');\n if (!colorAttribute) return;\n\n const time = clock.getElapsedTime();\n const colorArray = colorAttribute.array as Float32Array;\n\n for (let index = 0; index < sparklePoints.length; index += 1) {\n const point = sparklePoints[index];\n const pulse = Math.pow(Math.max(0, Math.sin(time * point.speed + point.phase)), 24);\n const intensity = point.minBrightness + pulse * point.maxBoost;\n const offset = index * 3;\n\n colorArray[offset] = sparkleColor.r * intensity;\n colorArray[offset + 1] = sparkleColor.g * intensity;\n colorArray[offset + 2] = sparkleColor.b * intensity;\n }\n\n colorAttribute.needsUpdate = true;\n });\n\n return (\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n );\n}\n","import { useRef } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport { MeshStandardMaterial } from 'three';\n\ninterface PulsingSphereProps {\n radius: number;\n paused?: boolean;\n}\n\nexport function PulsingSphere({ radius, paused = false }: PulsingSphereProps) {\n const materialRef = useRef(null);\n\n useFrame((state) => {\n if (paused) return;\n if (materialRef.current) {\n // Pulse emissive intensity between 0.5 and 2.0\n // Sine wave from -1 to 1 -> mapped to 0.5 to 2.0\n // (sin + 1) / 2 is 0 to 1.\n // 0.5 + (0 -> 1) * 1.5 = 0.5 to 2.0\n const t = state.clock.elapsedTime * 3; // Speed\n const intensity = 0.5 + ((Math.sin(t) + 1) / 2) * 1.5;\n materialRef.current.emissiveIntensity = intensity;\n }\n });\n\n return (\n \n \n \n \n );\n}\n","import { useRef, type MutableRefObject } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport * as THREE from 'three';\n\nfunction reflectPolarTheta(theta: number): number {\n const twoPi = 2 * Math.PI;\n let t = theta % twoPi;\n if (t < 0) t += twoPi;\n if (t > Math.PI) t = twoPi - t;\n return t;\n}\n\ninterface OrbitingObjectProps {\n radius: number; // This corresponds to 'distance' from center\n theta: number; // Polar angle (0 to PI)\n phi: number; // Azimuthal angle (0 to 2PI)\n orbitTime: MutableRefObject; // Accumulated orbit time ref\n simTime?: MutableRefObject;\n thetaDrift?: number;\n paused?: boolean;\n}\n\nexport function OrbitingObject({ radius, theta, phi, orbitTime, simTime, thetaDrift = 0, paused = false }: OrbitingObjectProps) {\n const groupRef = useRef(null);\n\n useFrame(() => {\n if (paused) return;\n if (groupRef.current) {\n // Calculate position using spherical coordinates\n // Three.js uses Y-up, so usually:\n // Use passed accumulated time from ref\n const currentPhi = phi + orbitTime.current;\n const currentTheta = reflectPolarTheta(theta + (simTime?.current ?? 0) * thetaDrift);\n\n const x = radius * Math.sin(currentTheta) * Math.cos(currentPhi);\n const y = radius * Math.cos(currentTheta);\n const z = radius * Math.sin(currentTheta) * Math.sin(currentPhi);\n\n groupRef.current.position.set(x, y, z);\n\n // Orient towards center\n groupRef.current.lookAt(0, 0, 0);\n }\n });\n\n return (\n \n {/* Sampling point cue (engine uses the group origin as the camera/sample position) */}\n \n \n \n \n \n \n \n \n\n {/* Main Body - Cylindrical Telescope - Aligned to Z axis */}\n \n \n \n \n\n {/* Short forward octagonal gold collar */}\n \n \n \n \n\n {/* Front Aperture - Wider - At +Z end */}\n \n \n \n \n {/* Aperture center cue for visual alignment checks */}\n \n \n \n \n {/* Local +Z axis cue (helps spot orientation / offset issues) */}\n \n \n \n \n\n {/* Solar Panels - shifted forward toward the star-facing end */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { useState, useMemo, useRef, useEffect } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport { Html } from '@react-three/drei';\n\nimport { createSamplingSimulation, lambdaIsotropicForGeometry } from './lightlane-engine.js';\nimport { SOUND_IDS, safePlaySound } from '../hostBridge';\nimport type { GlitchHostBridge, SceneViewMode } from '../types';\n\n// Flying bar animation component\ninterface FlyingBar {\n id: number;\n value: number;\n startBottom: number; // Distance from bottom of viewport\n startLeft: number; // Distance from left of viewport\n barHeight: number;\n barWidth: number;\n targetLeft: number; // Target X position in distribution\n targetTop: number; // Target Y position (from top of viewport)\n color: string;\n type: 'observed' | 'theory';\n}\n\nconst poissonPalette = {\n solid: '#60a5fa',\n dark: '#3b82f6',\n light: '#93c5fd',\n glow: 'rgba(96,165,250,0.5)',\n panel: 'rgba(0,20,40,0.8)',\n};\n\nconst lightlanePalette = {\n solid: '#fbbf24',\n dark: '#f59e0b',\n light: '#fef3c7',\n glow: 'rgba(251,191,36,0.5)',\n panel: 'rgba(40,20,0,0.8)',\n};\n\nconst headlineFont = 'var(--font-headline)';\nconst uiFont = 'var(--font-ui)';\nconst terminalGreen = 'var(--terminal-green)';\nconst terminalGreenSoft = 'var(--terminal-green-soft)';\nconst terminalGreenMuted = 'var(--terminal-green-muted)';\n\nfunction FlyingBars({ bars }: { bars: FlyingBar[] }) {\n const screenHeight = window.innerHeight;\n // const screenWidth = window.innerWidth;\n\n return (\n <>\n {bars.map((bar) => {\n // Convert bottom to top positioning\n // startBottom is distance from bottom, so top = screenHeight - startBottom - barHeight\n const startTop = screenHeight - bar.startBottom - bar.barHeight;\n\n const deltaX = bar.targetLeft - bar.startLeft;\n const deltaY = bar.targetTop - startTop; // negative = move up\n\n return (\n \n );\n })}\n \n \n );\n}\n\ninterface RunningMoments {\n n: number;\n meanObs: number;\n m2Obs: number;\n meanIso: number;\n m2Iso: number;\n}\n\nfunction createEmptyMoments(): RunningMoments {\n return { n: 0, meanObs: 0, m2Obs: 0, meanIso: 0, m2Iso: 0 };\n}\n\nfunction updateMoments(m: RunningMoments, observed: number, isotropic: number): RunningMoments {\n const nextN = m.n + 1;\n\n const deltaObs = observed - m.meanObs;\n const meanObs = m.meanObs + deltaObs / nextN;\n const m2Obs = m.m2Obs + deltaObs * (observed - meanObs);\n\n const deltaIso = isotropic - m.meanIso;\n const meanIso = m.meanIso + deltaIso / nextN;\n const m2Iso = m.m2Iso + deltaIso * (isotropic - meanIso);\n\n return { n: nextN, meanObs, m2Obs, meanIso, m2Iso };\n}\n\ninterface SamplingSystemProps {\n complexity: number;\n radius: number; // Lightlane radius (collision threshold)\n distance: number; // Visual lightlane cylinder length\n theta: number;\n phi: number;\n observationMode: 'orbit' | 'randomSphere';\n allSectors: boolean;\n cumulative: boolean;\n K: number; // Poisson constant\n orbitRadius: number; // Satellite orbit radius\n orbitVelocity: number;\n thetaDrift: number;\n thetaJitter: number;\n phiJitter: number;\n usePoisson: boolean;\n speedup: number; // Time speedup factor\n paused: boolean;\n sceneView: SceneViewMode;\n bottomInset?: number;\n showNumericDiagnostics?: boolean;\n compactNumericDiagnostics?: boolean;\n host?: GlitchHostBridge;\n centerDistribution?: boolean;\n hideFlyingBars?: boolean;\n}\n\nexport function SamplingSystem({\n complexity,\n radius,\n distance,\n theta,\n phi,\n observationMode,\n allSectors,\n cumulative,\n K,\n orbitRadius,\n orbitVelocity,\n thetaDrift,\n thetaJitter,\n phiJitter,\n usePoisson,\n speedup,\n paused,\n sceneView,\n bottomInset = 0,\n showNumericDiagnostics = true,\n compactNumericDiagnostics = false,\n host,\n centerDistribution = false,\n hideFlyingBars = false\n}: SamplingSystemProps) {\n const [stats, setStats] = useState({\n current: 0,\n total: 0,\n lastCheck: 0,\n overlaps: 0,\n currentTheory: 0,\n binOverlapsMean: 0,\n currentExpectedLightlane: 0\n });\n const subBinSamples = 4;\n const simulator = useMemo(() => createSamplingSimulation({\n D: orbitRadius,\n theta,\n phi,\n observationMode,\n velocity: orbitVelocity,\n thetaDrift,\n thetaJitter,\n phiJitter,\n distance,\n hitTestModel: 'segment',\n bin_size: 1,\n complexity,\n sub_bin_sampling: subBinSamples,\n flux: K,\n lane_radius: radius,\n allSectors,\n cumulative,\n usePoisson\n }), [orbitRadius, theta, phi, observationMode, orbitVelocity, thetaDrift, thetaJitter, phiJitter, complexity, K, radius, distance, allSectors, cumulative, usePoisson]);\n\n // Fixed size buffer for display\n const bufferSize = 60;\n const historyRef = useRef(new Array(bufferSize).fill(-1));\n const historyTheoryRef = useRef(new Array(bufferSize).fill(-1));\n const currentIndexRef = useRef(0);\n const [history, setHistory] = useState(new Array(bufferSize).fill(-1));\n const [historyTheory, setHistoryTheory] = useState(new Array(bufferSize).fill(-1));\n\n // Calculate expected lambda (mean) from theory: K * r² / (4 * d²)\n const lambdaMean = lambdaIsotropicForGeometry({\n flux: K,\n D: orbitRadius,\n lane_radius: radius,\n dt: 1,\n hitTestModel: 'segment',\n lane_length: distance\n });\n const lambdaStdDev = Math.sqrt(lambdaMean);\n\n // Distribution binning:\n // - Poisson mode: integer-aligned bins (one photon count per bin) to avoid quantization artifacts\n // - Deterministic mode: coarse continuous bins for readability\n const distributionBinsContinuous = 15;\n const binRangeHalf = 4 * lambdaStdDev;\n const binMin = Math.max(0, lambdaMean - binRangeHalf);\n const binMax = lambdaMean + binRangeHalf;\n const useDiscreteCountBins = usePoisson;\n const discreteBinMin = Math.max(0, Math.floor(binMin));\n const discreteBinMax = Math.max(discreteBinMin, Math.ceil(binMax));\n const distributionBins = useDiscreteCountBins\n ? (discreteBinMax - discreteBinMin + 1)\n : distributionBinsContinuous;\n const binWidth = useDiscreteCountBins\n ? 1\n : Math.max(1e-9, (binMax - binMin) / distributionBinsContinuous);\n\n // Helper to convert a count value to a bin index\n const valueToBinIndex = (value: number): number => {\n if (useDiscreteCountBins) {\n const k = Math.round(value);\n if (k <= discreteBinMin) return 0;\n if (k >= discreteBinMax) return distributionBins - 1;\n return k - discreteBinMin;\n }\n\n if (value < binMin) return 0;\n if (value >= binMax) return distributionBins - 1;\n return Math.floor((value - binMin) / binWidth);\n };\n\n // Helper to get the center value of a bin (for display)\n const binIndexToValue = (index: number): number => {\n if (useDiscreteCountBins) return discreteBinMin + index;\n return binMin + (index + 0.5) * binWidth;\n };\n\n const [distributionObserved, setDistributionObserved] = useState(new Array(distributionBins).fill(0));\n const [distributionTheory, setDistributionTheory] = useState(new Array(distributionBins).fill(0));\n\n // Track which bars have been unfastened (clicked)\n const [unfastenedObserved, setUnfastenedObserved] = useState>(new Set());\n const [unfastenedTheory, setUnfastenedTheory] = useState>(new Set());\n\n // Flying bars state\n const [flyingBars, setFlyingBars] = useState([]);\n const flyingBarIdRef = useRef(0);\n const summaryRef = useRef(createEmptyMoments());\n const [summary, setSummary] = useState(createEmptyMoments());\n const pausedRef = useRef(paused);\n const lastBarSoundAtRef = useRef(0);\n\n // Reset all counting when complexity or mean-affecting parameters change\n // (K, radius, orbitRadius affect lambdaMean which determines bin ranges)\n useEffect(() => {\n // Reset distribution histograms\n setDistributionObserved(new Array(distributionBins).fill(0));\n setDistributionTheory(new Array(distributionBins).fill(0));\n\n // Reset periodogram buffers\n historyRef.current.fill(-1);\n historyTheoryRef.current.fill(-1);\n currentIndexRef.current = 0;\n setHistory(new Array(bufferSize).fill(-1));\n setHistoryTheory(new Array(bufferSize).fill(-1));\n\n // Reset unfastened tracking\n setUnfastenedObserved(new Set());\n setUnfastenedTheory(new Set());\n\n // Clear flying bars\n setFlyingBars([]);\n summaryRef.current = createEmptyMoments();\n setSummary(createEmptyMoments());\n setStats({\n current: 0,\n total: 0,\n lastCheck: 0,\n overlaps: 0,\n currentTheory: 0,\n binOverlapsMean: 0,\n currentExpectedLightlane: 0\n });\n }, [complexity, K, radius, distance, orbitRadius, theta, phi, observationMode, orbitVelocity, thetaDrift, thetaJitter, phiJitter, allSectors, cumulative, usePoisson, distributionBins]);\n\n const ingestBins = (bins: Array<{\n lightlane: number;\n isotropic: number;\n overlapsMean: number;\n lambdaLightlaneExpected: number;\n }>, lastLaneCount: number) => {\n if (bins.length === 0) return;\n\n let totalObservedAdded = 0;\n let lastObserved = 0;\n let lastTheory = 0;\n let lastBinOverlapsMean = stats.binOverlapsMean;\n let lastExpectedLightlane = stats.currentExpectedLightlane;\n let nextSummary = summaryRef.current;\n\n for (const bin of bins) {\n const observed = bin.lightlane;\n const observedTheory = bin.isotropic;\n totalObservedAdded += observed;\n lastObserved = observed;\n lastTheory = observedTheory;\n lastBinOverlapsMean = bin.overlapsMean;\n lastExpectedLightlane = bin.lambdaLightlaneExpected;\n nextSummary = updateMoments(nextSummary, observed, observedTheory);\n\n historyRef.current[currentIndexRef.current] = observed;\n historyTheoryRef.current[currentIndexRef.current] = observedTheory;\n currentIndexRef.current++;\n\n if (currentIndexRef.current >= bufferSize) {\n const currentMaxVal = Math.max(10, ...historyRef.current.filter(v => v >= 0), ...historyTheoryRef.current.filter(v => v >= 0));\n autoAccumulateRow([...historyRef.current], [...historyTheoryRef.current], currentMaxVal);\n\n historyRef.current.fill(-1);\n historyTheoryRef.current.fill(-1);\n currentIndexRef.current = 0;\n setUnfastenedObserved(new Set());\n setUnfastenedTheory(new Set());\n }\n }\n summaryRef.current = nextSummary;\n\n setStats(prev => ({\n current: lastObserved,\n total: prev.total + totalObservedAdded,\n lastCheck: Date.now(),\n overlaps: lastLaneCount,\n currentTheory: lastTheory,\n binOverlapsMean: lastBinOverlapsMean,\n currentExpectedLightlane: lastExpectedLightlane\n }));\n setSummary(nextSummary);\n setHistory([...historyRef.current]);\n setHistoryTheory([...historyTheoryRef.current]);\n };\n\n // Swipe state for unfastening multiple bars\n const isDraggingRef = useRef(false);\n const dragTypeRef = useRef<'observed' | 'theory' | null>(null);\n\n // Handle swipe/drag to unfasten multiple bars\n const handlePointerDown = (e: React.PointerEvent, type: 'observed' | 'theory') => {\n e.stopPropagation();\n isDraggingRef.current = true;\n dragTypeRef.current = type;\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n safePlaySound(host, SOUND_IDS.click, { target: `${type}-periodogram`, action: 'pointer-down' });\n };\n\n const handlePointerMove = (e: React.PointerEvent, type: 'observed' | 'theory', historyData: number[], maxValue: number) => {\n if (!isDraggingRef.current || dragTypeRef.current !== type) return;\n e.stopPropagation();\n\n // Calculate which bar index we're over\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const x = e.clientX - rect.left;\n const barIndex = Math.floor((x / rect.width) * bufferSize);\n\n if (barIndex >= 0 && barIndex < bufferSize) {\n const val = historyData[barIndex];\n const isUnfastened = type === 'observed' ? unfastenedObserved.has(barIndex) : unfastenedTheory.has(barIndex);\n if (val >= 0 && !isUnfastened) {\n handleBarClick(barIndex, val, type, maxValue);\n }\n }\n };\n\n const handlePointerUp = (e: React.PointerEvent) => {\n e.stopPropagation();\n isDraggingRef.current = false;\n dragTypeRef.current = null;\n };\n\n // Calculate bar dimensions for flying animation\n const getBarDimensions = (index: number, value: number, type: 'observed' | 'theory', maxValue: number) => {\n const screenWidth = window.innerWidth;\n // const screenHeight = window.innerHeight;\n\n // Starting X position: (index / bufferSize) * screenWidth\n const startLeft = (index / bufferSize) * screenWidth;\n\n // Bar width\n const barWidth = screenWidth / bufferSize;\n\n // Bar height based on value\n const barHeight = Math.max(2, (value / maxValue) * 80);\n\n // Starting position from BOTTOM of viewport\n // Observed histogram: 100px container at very bottom with 20px padding\n // Theory histogram: 100px container above observed with 5px padding\n // Bars are aligned to bottom of their containers\n const observedBottom = 25; // within observed container\n const theoryBottom = 110; // within theory container (100px + some padding)\n const startBottom = type === 'observed' ? observedBottom : theoryBottom;\n\n // Bin index using the centered distribution mapping\n const binIndex = valueToBinIndex(value);\n\n // Target X position: place at the bin's visual position in the distribution histogram\n // The histogram spans the full width with distributionBins bins\n // Account for padding (20px on each side)\n const histogramPadding = 20;\n const histogramWidth = screenWidth - (2 * histogramPadding);\n const targetLeft = histogramPadding + ((binIndex + 0.5) / distributionBins) * histogramWidth;\n\n // Target Y position (from TOP of viewport) - aim for distribution area\n const targetTop = 150;\n\n return { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop, binIndex };\n };\n\n // Handle clicking on a bar to unfasten it\n const handleBarClick = (index: number, value: number, type: 'observed' | 'theory', maxValue: number) => {\n if (value < 0) return; // Don't unfasten empty slots\n\n const now = Date.now();\n if (now - lastBarSoundAtRef.current >= 45) {\n lastBarSoundAtRef.current = now;\n safePlaySound(host, SOUND_IDS.computeStep, { target: `${type}-periodogram`, value });\n }\n\n const { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop } = getBarDimensions(index, value, type, maxValue);\n\n // Create flying bar\n const newBar: FlyingBar = {\n id: flyingBarIdRef.current++,\n value,\n startLeft,\n startBottom,\n barHeight,\n barWidth,\n targetLeft,\n targetTop,\n color: type === 'observed' ? lightlanePalette.solid : poissonPalette.solid,\n type\n };\n\n setFlyingBars(prev => [...prev, newBar]);\n\n // Mark bar as unfastened\n if (type === 'observed') {\n setUnfastenedObserved(prev => new Set(prev).add(index));\n // Update distribution using centered binning\n setDistributionObserved(prev => {\n const newDist = [...prev];\n const binIdx = valueToBinIndex(value);\n newDist[binIdx]++;\n return newDist;\n });\n } else {\n setUnfastenedTheory(prev => new Set(prev).add(index));\n // Update distribution using centered binning\n setDistributionTheory(prev => {\n const newDist = [...prev];\n const binIdx = valueToBinIndex(value);\n newDist[binIdx]++;\n return newDist;\n });\n }\n };\n\n // Auto-accumulate entire row when buffer fills\n const autoAccumulateRow = (historyData: number[], theoryData: number[], maxValue: number) => {\n const newFlyingBars: FlyingBar[] = [];\n const newDistObserved = [...distributionObserved];\n const newDistTheory = [...distributionTheory];\n\n // Process observed bars\n historyData.forEach((val, i) => {\n if (val >= 0) {\n const { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop, binIndex } = getBarDimensions(i, val, 'observed', maxValue);\n newFlyingBars.push({\n id: flyingBarIdRef.current++,\n value: val,\n startLeft,\n startBottom,\n barHeight,\n barWidth,\n targetLeft,\n targetTop,\n color: lightlanePalette.solid,\n type: 'observed'\n });\n newDistObserved[binIndex]++;\n }\n });\n\n // Process theory bars\n theoryData.forEach((val, i) => {\n if (val >= 0) {\n const { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop, binIndex } = getBarDimensions(i, val, 'theory', maxValue);\n newFlyingBars.push({\n id: flyingBarIdRef.current++,\n value: val,\n startLeft,\n startBottom,\n barHeight,\n barWidth,\n targetLeft,\n targetTop,\n color: poissonPalette.solid,\n type: 'theory'\n });\n newDistTheory[binIndex]++;\n }\n });\n\n setFlyingBars(prev => [...prev, ...newFlyingBars]);\n setDistributionObserved(newDistObserved);\n setDistributionTheory(newDistTheory);\n };\n\n // Clean up flying bars after animation completes\n useEffect(() => {\n if (flyingBars.length > 0) {\n const timer = setTimeout(() => {\n setFlyingBars([]);\n }, 1300); // Clear after animation duration (1.2s) + buffer\n return () => clearTimeout(timer);\n }\n }, [flyingBars.length]); // Only trigger on length change to avoid infinite loops\n\n // Reset unfastened state when buffer resets\n const prevIndexRef = useRef(0);\n useEffect(() => {\n if (currentIndexRef.current < prevIndexRef.current) {\n // Buffer was reset\n setUnfastenedObserved(new Set());\n setUnfastenedTheory(new Set());\n }\n prevIndexRef.current = currentIndexRef.current;\n });\n useEffect(() => {\n const wasPaused = pausedRef.current;\n pausedRef.current = paused;\n if (!paused || wasPaused) return;\n\n const flushed = simulator.flushPartialBin();\n if (flushed) {\n ingestBins([flushed], flushed.overlaps);\n }\n }, [paused, simulator]);\n\n useFrame((_, delta) => {\n if (paused) return;\n const step = simulator.simulate(delta * speedup);\n\n if (step.subBinEvents > 0) {\n setStats(prev => ({ ...prev, overlaps: step.lastLaneCount }));\n }\n\n ingestBins(step.bins, step.lastLaneCount);\n });\n\n // Calculate max ignoring -1 placeholders\n const validValues = history.filter(v => v >= 0);\n const validValuesTheory = historyTheory.filter(v => v >= 0);\n const maxValLightlane = Math.max(10, Math.max(0, ...validValues));\n const maxValPoisson = Math.max(10, Math.max(0, ...validValuesTheory));\n // Distribution max for scaling\n const maxDistribution = Math.max(1, ...distributionObserved, ...distributionTheory);\n const observedVariance = summary.n > 1 ? summary.m2Obs / (summary.n - 1) : 0;\n const isotropicVariance = summary.n > 1 ? summary.m2Iso / (summary.n - 1) : 0;\n const meanRatio = summary.meanIso > 0 ? summary.meanObs / summary.meanIso : 0;\n const varianceRatio = isotropicVariance > 0 ? observedVariance / isotropicVariance : 0;\n const fanoObserved = summary.meanObs > 0 ? observedVariance / summary.meanObs : 0;\n const fanoIsotropic = summary.meanIso > 0 ? isotropicVariance / summary.meanIso : 0;\n const laneCount = simulator.getLaneCount();\n const lcIsoTarget = laneCount > 0 && K > 0 ? (laneCount * lambdaMean) / K : 0;\n const renderNumericInline = showNumericDiagnostics && !compactNumericDiagnostics;\n const showPoissonView = sceneView !== 'lightlane';\n const showLightlaneView = sceneView !== 'poisson';\n const visibleFlyingBars = flyingBars.filter((bar) => (\n (bar.type === 'theory' && showPoissonView) || (bar.type === 'observed' && showLightlaneView)\n ));\n const distributionTitle = sceneView === 'poisson'\n ? 'Shot Noise Distribution'\n : sceneView === 'lightlane'\n ? 'Shot Noise + Lightlane'\n : 'Head to Head';\n\n const metricCardBase: React.CSSProperties = {\n background: 'rgba(255,255,255,0.04)',\n border: '1px solid var(--terminal-panel-border)',\n borderRadius: '6px',\n padding: '6px 8px',\n fontFamily: uiFont\n };\n\n const numericCards = (\n
\n
\n
Samples
\n
{summary.n}
\n
\n
\n
Mean Ratio (Lightlane/Poisson)
\n
{summary.n > 0 ? meanRatio.toFixed(3) : 'n/a'}
\n
\n
\n
Var Ratio (Lightlane/Poisson)
\n
1.1 ? lightlanePalette.light : poissonPalette.light }}>\n {summary.n > 1 ? varianceRatio.toFixed(3) : 'n/a'}\n
\n
\n
\n
Fano Lightlane
\n
\n {summary.n > 1 ? fanoObserved.toFixed(3) : 'n/a'}\n
\n
\n
\n
Fano Poisson
\n
\n {summary.n > 1 ? fanoIsotropic.toFixed(3) : 'n/a'}\n
\n
\n
\n
Fano Ratio (Lightlane/Poisson)
\n
0 && fanoObserved / fanoIsotropic > 1.05 ? lightlanePalette.light : terminalGreenSoft }}>\n {summary.n > 1 && fanoIsotropic > 0 ? (fanoObserved / fanoIsotropic).toFixed(3) : 'n/a'}\n
\n
\n
\n );\n\n const numericContext = (\n
\n LC(now): {stats.overlaps}\n LC(bin avg): {stats.binOverlapsMean.toFixed(2)}\n LC iso target: {Number.isFinite(lcIsoTarget) ? lcIsoTarget.toFixed(2) : 'n/a'}\n E[Lightlane|bin]: {stats.currentExpectedLightlane.toFixed(2)}\n Lightlane(last): {typeof stats.current === 'number' ? Number(stats.current).toFixed(2) : stats.current}\n Lanes: {laneCount}\n Mode: {observationMode === 'randomSphere' ? 'Random Sphere' : 'Orbit'}\n theta drift: {thetaDrift.toFixed(3)}\n theta jitter: {thetaJitter.toFixed(3)}\n phi jitter: {phiJitter.toFixed(3)}\n
\n );\n\n return (\n <>\n {/* Flying bars animation */}\n {!hideFlyingBars && (\n \n \n \n )}\n\n {/* Distribution Histogram at Top */}\n \n
\n {distributionTitle}\n \n (λ = {lambdaMean.toFixed(1)}, σ = {lambdaStdDev.toFixed(1)})\n \n
\n
\n {/* Y-axis label */}\n
\n ← Frequency (how many)\n
\n
\n {distributionObserved.map((count, i) => {\n const theoryCount = distributionTheory[i];\n const obsHeight = (count / maxDistribution) * 100;\n const theoryHeight = (theoryCount / maxDistribution) * 100;\n\n return (\n
\n
\n {showPoissonView && (\n
0 ? '2px' : '0',\n transition: 'height 0.3s ease',\n boxShadow: theoryCount > 0 ? `0 0 5px ${poissonPalette.glow}` : 'none',\n position: 'relative'\n }}>\n {theoryCount > 0 && (\n
\n {theoryCount}\n
\n )}\n
\n )}\n {showLightlaneView && (\n
0 ? '2px' : '0',\n transition: 'height 0.3s ease',\n boxShadow: count > 0 ? `0 0 5px ${lightlanePalette.glow}` : 'none',\n position: 'relative'\n }}>\n {count > 0 && (\n
\n {count}\n
\n )}\n
\n )}\n
\n {/* Bin label (photon count value - center of bin) */}\n
\n {binIndexToValue(i).toFixed(0)}\n
\n
\n );\n })}\n
\n {/* X-axis label */}\n
\n Photon Count Value →\n
\n
\n {showPoissonView && (\n
\n
\n Theory (Poisson)\n
\n )}\n {showLightlaneView && (\n
\n
\n Observed (Lightlanes)\n
\n )}\n
\n {renderNumericInline && numericCards}\n {renderNumericInline && numericContext}\n
\n \n\n {showNumericDiagnostics && compactNumericDiagnostics && (\n \n
\n
\n Diagnostics\n
\n {numericCards}\n {numericContext}\n
\n \n )}\n\n {/* Periodogram Histograms at Bottom of Screen */}\n \n {showPoissonView && (\n handlePointerDown(e, 'theory')}\n onPointerMove={(e) => handlePointerMove(e, 'theory', historyTheory, maxValPoisson)}\n onPointerUp={handlePointerUp}\n onPointerLeave={handlePointerUp}\n style={{\n width: '100%',\n height: '100px',\n background: `linear-gradient(to top, ${poissonPalette.panel}, transparent)`,\n display: 'flex',\n alignItems: 'flex-end',\n padding: showLightlaneView ? '0 20px 5px 20px' : '0 20px 20px 20px',\n gap: '2px',\n position: 'relative',\n borderBottom: showLightlaneView ? '1px solid #555' : 'none',\n pointerEvents: 'auto',\n touchAction: 'none',\n cursor: 'crosshair'\n }}\n >\n
\n THEORY (Poisson) - Swipe or click to count\n
\n {historyTheory.map((val, i) => {\n const isUnfastened = unfastenedTheory.has(i);\n return (\n = 0 && !isUnfastened ? 'clickable-bar' : ''}\n style={{\n flex: 1,\n height: val >= 0 && !isUnfastened ? `${(val / maxValPoisson) * 100}%` : '0',\n background: val === 0 ? 'rgba(255,255,255,0.1)' : poissonPalette.solid,\n color: poissonPalette.solid,\n minHeight: val >= 0 && !isUnfastened ? '1px' : '0',\n transition: 'all 0.3s ease',\n opacity: isUnfastened ? 0 : 0.8,\n borderRadius: '2px 2px 0 0',\n transform: isUnfastened ? 'scale(0)' : 'scale(1)',\n pointerEvents: 'none',\n }}\n />\n );\n })}\n
\n Max: {maxValPoisson}\n
\n
\n )}\n\n {showLightlaneView && (\n handlePointerDown(e, 'observed')}\n onPointerMove={(e) => handlePointerMove(e, 'observed', history, maxValLightlane)}\n onPointerUp={handlePointerUp}\n onPointerLeave={handlePointerUp}\n style={{\n width: '100%',\n height: '100px',\n background: 'linear-gradient(to top, rgba(0,0,0,0.8), transparent)',\n display: 'flex',\n alignItems: 'flex-end',\n padding: '0 20px 20px 20px',\n gap: '2px',\n position: 'relative',\n pointerEvents: 'auto',\n touchAction: 'none',\n cursor: 'crosshair'\n }}\n >\n
\n OBSERVED (Lightlanes) - Swipe or click to count\n
\n {history.map((val, i) => {\n const isUnfastened = unfastenedObserved.has(i);\n return (\n = 0 && !isUnfastened ? 'clickable-bar' : ''}\n style={{\n flex: 1,\n height: val >= 0 && !isUnfastened ? `${(val / maxValLightlane) * 100}%` : '0',\n background: val === 0 ? 'rgba(255,255,255,0.1)' : (val > 0 ? lightlanePalette.solid : 'transparent'),\n color: lightlanePalette.solid,\n minHeight: val >= 0 && !isUnfastened ? '2px' : '0',\n transition: 'all 0.3s ease',\n borderTop: val >= 0 && !isUnfastened ? `2px solid ${lightlanePalette.light}` : 'none',\n opacity: isUnfastened ? 0 : 0.8,\n position: 'relative',\n borderRadius: '2px 2px 0 0',\n transform: isUnfastened ? 'scale(0)' : 'scale(1)',\n pointerEvents: 'none',\n }}\n >\n {(i + 1) % 5 === 0 && !isUnfastened && (\n
\n {i + 1}\n
\n )}\n
\n );\n })}\n
\n Max: {maxValLightlane}\n
\n
\n )}\n \n \n );\n}\n","\nexport type SceneViewMode = 'both' | 'poisson' | 'lightlane';\n\nexport interface LightlaneProps {\n complexity?: number;\n radius?: number;\n distance?: number;\n chandraDistance?: number;\n showAxes?: boolean;\n lightlanes?: boolean;\n allSectors?: boolean;\n cumulative?: boolean;\n phi?: number;\n theta?: number;\n observationMode?: 'orbit' | 'randomSphere';\n orbitSpeed?: number;\n thetaDrift?: number;\n thetaJitter?: number;\n phiJitter?: number;\n speedup?: number;\n K?: number;\n usePoisson?: boolean;\n sceneView?: SceneViewMode;\n hideScenePresentation?: boolean;\n hideFlyingBars?: boolean;\n hideDataBoxes?: boolean;\n}\n\nexport const defaultProps: Required = {\n complexity: 1,\n radius: 2,\n distance: 5,\n chandraDistance: 6,\n showAxes: false, // Cleaner look for challenge\n lightlanes: true, // Always show lightlanes\n allSectors: true,\n cumulative: false,\n phi: 0,\n theta: Math.PI / 2,\n observationMode: 'orbit',\n orbitSpeed: 0.2,\n thetaDrift: 0,\n thetaJitter: 0,\n phiJitter: 0,\n speedup: 1,\n K: 1000,\n usePoisson: true,\n sceneView: 'both',\n hideScenePresentation: false,\n hideFlyingBars: false,\n hideDataBoxes: false\n};\n\nexport interface GlitchComponentConfig {\n id: string;\n name: string;\n version: string;\n params: Record;\n}\n\nexport interface GlitchHostBridge {\n playSound?: (id: string, payload?: Record) => void;\n stopSound?: (id: string, payload?: Record) => void;\n emit?: (type: string, payload?: unknown) => void;\n}\n\nexport interface GlitchTheme {\n primary: string; // #6366f1\n accent: string; // #22d3ee\n bg: string; // #0a0a0f\n bgSecondary: string; // #12121a\n text: string; // #e8e8ec\n textMuted: string; // #9999a8\n border: string; // #2a2a3a\n}\n\nexport interface GlitchComponentResult {\n success: boolean;\n score?: number;\n data?: unknown;\n error?: string;\n}\n\nexport interface GlitchComponentProps {\n config: GlitchComponentConfig;\n onComplete: (result: GlitchComponentResult) => void;\n onProgress?: (percent: number) => void;\n theme?: GlitchTheme;\n className?: string;\n host?: GlitchHostBridge;\n}\n\nexport interface ParamSchema {\n [key: string]: {\n type: 'number' | 'string' | 'boolean' | 'color' | 'select' | 'range';\n label?: string;\n description?: string;\n default: unknown;\n options?: { value: string | number; label: string }[];\n min?: number;\n max?: number;\n step?: number;\n };\n}\n\nexport interface GlitchComponentMetadata {\n name: string;\n displayName: string;\n version: string;\n paramSchema: ParamSchema;\n defaultParams: Record;\n}\n","import { useEffect, useRef, useState } from 'react'\nimport { useFrame } from '@react-three/fiber'\nimport { Grid, Html } from '@react-three/drei'\nimport { DiophantineVectors } from './components/DiophantineVectors'\nimport { FanoSweepPanel } from './components/FanoSweepPanel'\nimport { PoissonShell } from './components/PoissonShell'\nimport { PulsingSphere } from './components/PulsingSphere'\nimport { OrbitingObject } from './components/OrbitingObject'\nimport { SamplingSystem } from './components/SamplingSystem'\nimport { SOUND_IDS, safePlaySound } from './hostBridge'\nimport { type GlitchComponentProps, type LightlaneProps, type SceneViewMode, defaultProps as internalDefaults } from './types'\n\ntype ComponentDevUiOverrides = {\n showNumericDiagnostics?: boolean;\n compactNumericDiagnostics?: boolean;\n onOpenHarness?: () => void;\n onSetParam?: (name: 'complexity' | 'speedup', value: number) => void;\n maxComplexity?: number;\n maxSpeedup?: number;\n};\n\ntype ComponentProps = GlitchComponentProps & {\n devUi?: ComponentDevUiOverrides;\n};\n\nexport default function Component(props: ComponentProps) {\n const host = props.host;\n const compactNumericDiagnostics = props.devUi?.compactNumericDiagnostics ?? false;\n const maxComplexity = props.devUi?.maxComplexity ?? 20;\n const maxSpeedup = props.devUi?.maxSpeedup ?? 240;\n const bottomMenuHeight = 74;\n const cycleLevelCount = 20;\n\n // Extract params from config\n const params = props.config?.params || {};\n\n // Merge props with defaults, casting params to LightlaneProps\n const {\n complexity,\n radius,\n distance,\n chandraDistance,\n showAxes,\n lightlanes,\n allSectors,\n cumulative,\n phi,\n theta,\n observationMode,\n orbitSpeed,\n thetaDrift,\n thetaJitter,\n phiJitter,\n speedup,\n K,\n usePoisson,\n sceneView: configuredSceneView,\n hideScenePresentation,\n hideFlyingBars,\n hideDataBoxes\n } = { ...internalDefaults, ...params } as Required;\n const showNumericDiagnostics = !hideDataBoxes;\n\n // Track global orbit time to ensure continuity\n const orbitTimeRef = useRef(0);\n const simTimeRef = useRef(0);\n const [paused, setPaused] = useState(false);\n const [page, setPage] = useState<'scene' | 'fano'>('scene');\n const [sceneView, setSceneView] = useState(configuredSceneView);\n const [effectiveComplexity, setEffectiveComplexity] = useState(complexity);\n const [effectiveSpeedup, setEffectiveSpeedup] = useState(speedup);\n const [settingFlash, setSettingFlash] = useState(null);\n const settingFlashTimerRef = useRef | null>(null);\n\n useEffect(() => {\n setSceneView(configuredSceneView);\n }, [configuredSceneView]);\n\n useEffect(() => {\n setEffectiveComplexity(complexity);\n }, [complexity]);\n\n useEffect(() => {\n setEffectiveSpeedup(speedup);\n }, [speedup]);\n\n const hideFlyingBarsAtHighSpeed = effectiveSpeedup > 20;\n const showPoissonView = sceneView !== 'lightlane';\n const showLightlaneView = sceneView !== 'poisson';\n const isComplexityEnabled = page === 'scene' && sceneView !== 'poisson';\n\n const getModeLabel = (mode: SceneViewMode) => {\n if (mode === 'poisson') return 'Poisson';\n if (mode === 'lightlane') return 'Lightlane';\n return 'Both';\n };\n\n const playUiHover = () => {\n safePlaySound(host, SOUND_IDS.hover, { page, sceneView });\n };\n\n const playUiClick = (target: string, payload?: Record) => {\n safePlaySound(host, SOUND_IDS.click, { page, sceneView, target, ...payload });\n };\n\n const flashSetting = (message: string) => {\n setSettingFlash(message);\n if (settingFlashTimerRef.current) clearTimeout(settingFlashTimerRef.current);\n settingFlashTimerRef.current = setTimeout(() => {\n setSettingFlash(null);\n settingFlashTimerRef.current = null;\n }, 1500);\n };\n\n const getCycleLevels = (maxValue: number) => {\n if (cycleLevelCount <= 1) return [maxValue];\n\n const interpolatedLevels = Array.from({ length: cycleLevelCount }, (_, index) => {\n if (index === 0) return 1;\n if (index === cycleLevelCount - 1) return maxValue;\n return Math.round(1 + ((maxValue - 1) * index) / (cycleLevelCount - 1));\n });\n\n return Array.from(new Set(interpolatedLevels)).sort((a, b) => a - b);\n };\n\n const getNextCycledValue = (current: number, maxValue: number) => {\n const levels = getCycleLevels(maxValue);\n return levels.find((level) => current < level) ?? levels[levels.length - 1];\n };\n\n const getPreviousCycledValue = (current: number, maxValue: number) => {\n const levels = getCycleLevels(maxValue);\n for (let index = levels.length - 1; index >= 0; index -= 1) {\n if (current > levels[index]) return levels[index];\n }\n return levels[0];\n };\n\n const getCycleLevelIndex = (current: number, maxValue: number) => {\n const levels = getCycleLevels(maxValue);\n const index = levels.findIndex((level) => current <= level);\n return index >= 0 ? index : levels.length - 1;\n };\n\n const complexityLevel = getCycleLevelIndex(effectiveComplexity, maxComplexity);\n const turboLevel = getCycleLevelIndex(effectiveSpeedup, maxSpeedup);\n const complexityFill = `${((complexityLevel + 1) / cycleLevelCount) * 100}%`;\n const turboFill = `${((turboLevel + 1) / cycleLevelCount) * 100}%`;\n const canDecreaseComplexity = isComplexityEnabled && effectiveComplexity > getCycleLevels(maxComplexity)[0];\n const canIncreaseComplexity = isComplexityEnabled && effectiveComplexity < getCycleLevels(maxComplexity).at(-1)!;\n const canDecreaseSpeedup = effectiveSpeedup > getCycleLevels(maxSpeedup)[0];\n const canIncreaseSpeedup = effectiveSpeedup < getCycleLevels(maxSpeedup).at(-1)!;\n\n const stepComplexity = (direction: 'down' | 'up') => {\n if (!isComplexityEnabled) return;\n const next = direction === 'up'\n ? getNextCycledValue(effectiveComplexity, maxComplexity)\n : getPreviousCycledValue(effectiveComplexity, maxComplexity);\n if (next === effectiveComplexity) return;\n playUiClick('complexity', { direction, value: next });\n setEffectiveComplexity(next);\n props.devUi?.onSetParam?.('complexity', next);\n flashSetting(`Complexity ${next}`);\n };\n\n const stepSpeedup = (direction: 'down' | 'up') => {\n const next = direction === 'up'\n ? getNextCycledValue(effectiveSpeedup, maxSpeedup)\n : getPreviousCycledValue(effectiveSpeedup, maxSpeedup);\n if (next === effectiveSpeedup) return;\n playUiClick('turbo', { direction, value: next });\n setEffectiveSpeedup(next);\n props.devUi?.onSetParam?.('speedup', next);\n flashSetting(`Turbo ${next}x`);\n };\n\n const cycleMode = () => {\n const modes: SceneViewMode[] = ['poisson', 'lightlane', 'both'];\n const currentIndex = modes.indexOf(sceneView);\n const nextMode = modes[(currentIndex + 1) % modes.length];\n playUiClick('mode', { value: nextMode });\n setSceneView(nextMode);\n flashSetting(`Mode ${getModeLabel(nextMode)}`);\n };\n\n const toggleFanoPage = () => {\n playUiClick('fano-page', { value: page === 'scene' ? 'fano' : 'scene' });\n setPage((prev) => (prev === 'scene' ? 'fano' : 'scene'));\n };\n\n useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.code !== 'Space' || event.repeat) return;\n\n const target = event.target as HTMLElement | null;\n const tag = target?.tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || target?.isContentEditable) return;\n\n event.preventDefault();\n setPaused(prev => !prev);\n };\n\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, []);\n\n useEffect(() => () => {\n if (settingFlashTimerRef.current) clearTimeout(settingFlashTimerRef.current);\n }, []);\n\n useFrame((_, delta) => {\n if (paused || page === 'fano') return;\n // Accumulate orbit time continuously based on current speed and speedup\n orbitTimeRef.current += delta * orbitSpeed * effectiveSpeedup;\n simTimeRef.current += delta * effectiveSpeedup;\n });\n\n // Keep the visual camera model aligned with the sampling engine when the\n // simulator is recreated/reset by configuration changes (e.g. complexity).\n useEffect(() => {\n orbitTimeRef.current = 0;\n simTimeRef.current = 0;\n }, [\n effectiveComplexity,\n radius,\n distance,\n chandraDistance,\n phi,\n theta,\n observationMode,\n orbitSpeed,\n thetaDrift,\n thetaJitter,\n phiJitter,\n effectiveSpeedup,\n K,\n allSectors,\n cumulative,\n usePoisson,\n ]);\n\n return (\n <>\n \n
\n {\n playUiClick('advanced');\n props.devUi?.onOpenHarness?.();\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: 'rgba(7,19,11,0.86)',\n color: 'var(--terminal-green-soft)',\n borderRadius: 10,\n padding: '10px 12px',\n fontSize: 12,\n fontWeight: 400,\n letterSpacing: '0.08em',\n fontFamily: 'var(--font-headline)',\n textTransform: 'uppercase',\n cursor: 'pointer',\n boxShadow: '0 8px 24px rgba(0,0,0,0.25)',\n }}\n >\n Advanced\n \n
\n \n\n {/* Lighting */}\n \n \n \n\n {page === 'scene' ? (\n <>\n {/* Main content */}\n {!hideScenePresentation && showPoissonView && }\n\n {!hideScenePresentation && showLightlaneView && (\n \n )}\n\n {!hideScenePresentation && }\n\n \n\n \n\n {paused && (\n \n \n \n \n \n \n )}\n\n {/* Helpers */}\n {showAxes && }\n \n \n ) : (\n setPage('scene')}\n host={host}\n />\n )}\n\n \n {settingFlash && (\n \n {settingFlash}\n
\n )}\n \n \n \n \n \n {Array.from({ length: cycleLevelCount }).map((_, index) => (\n \n ))}\n
\n \n Complexity {complexityLevel + 1}/{cycleLevelCount}\n
\n
\n
\n \n \n \n \n \n {Array.from({ length: cycleLevelCount }).map((_, index) => (\n \n ))}\n
\n \n Turbo {turboLevel + 1}/{cycleLevelCount}\n
\n
\n
\n \n {[\n {\n label: 'Complexity',\n kind: 'adjust' as const,\n active: false,\n disabled: !isComplexityEnabled,\n accent: 'rgba(245,158,11,0.2)',\n sublabel: `${effectiveComplexity} • ${complexityLevel + 1}/${cycleLevelCount}`,\n meterColor: 'linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))',\n meterSide: 'left' as const,\n meterFill: complexityFill,\n onDecrease: () => stepComplexity('down'),\n onIncrease: () => stepComplexity('up'),\n canDecrease: canDecreaseComplexity,\n canIncrease: canIncreaseComplexity,\n },\n {\n label: 'Mode',\n kind: 'action' as const,\n onClick: cycleMode,\n active: false,\n accent: 'rgba(59,130,246,0.18)',\n sublabel: getModeLabel(sceneView)\n },\n {\n label: 'Fano Sweep',\n kind: 'action' as const,\n onClick: toggleFanoPage,\n active: page === 'fano',\n accent: 'rgba(59,130,246,0.22)',\n sublabel: page === 'fano' ? 'Open' : 'Scene'\n },\n {\n label: 'Turbo',\n kind: 'adjust' as const,\n active: false,\n accent: 'rgba(34,197,94,0.2)',\n sublabel: `${effectiveSpeedup}x • ${turboLevel + 1}/${cycleLevelCount}`,\n meterColor: 'linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))',\n meterSide: 'right' as const,\n meterFill: turboFill,\n onDecrease: () => stepSpeedup('down'),\n onIncrease: () => stepSpeedup('up'),\n canDecrease: canDecreaseSpeedup,\n canIncrease: canIncreaseSpeedup,\n }\n ].map((item) => (\n item.kind === 'adjust' ? (\n \n {'meterColor' in item && (\n <>\n \n \n \n )}\n \n {item.label}\n \n \n {item.sublabel}\n \n
\n \n -\n \n \n +\n \n
\n
\n ) : (\n \n \n {item.label}\n \n \n {item.sublabel}\n \n \n )\n ))}\n
\n \n\n \n \n )\n}\n","import Component from './Component';\nimport { type GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'lightlane',\n displayName: 'Lightlane Challenge',\n version: '1.1.0',\n paramSchema: {\n hideScenePresentation: { type: 'boolean', label: 'Hide Sphere + Lightlanes', default: false },\n hideFlyingBars: { type: 'boolean', label: 'Hide Flying Bars', default: false },\n hideDataBoxes: { type: 'boolean', label: 'Hide Data Boxes', default: false },\n complexity: { type: 'range', label: 'Complexity', default: 5, min: 1, max: 20, step: 1 },\n radius: { type: 'range', label: 'Distance to star', default: 2, min: 0.1, max: 5, step: 0.1 },\n chandraDistance: { type: 'range', label: 'Chandra Camera Distance', default: 6, min: 5, max: 30, step: 0.5 },\n observationMode: {\n type: 'select',\n label: 'Observation Mode',\n default: 'randomSphere',\n options: [\n { value: 'orbit', label: 'Orbit' },\n { value: 'randomSphere', label: 'Random Sphere' }\n ]\n },\n sceneView: {\n type: 'select',\n label: 'Scene View',\n default: 'both',\n options: [\n { value: 'both', label: 'Both' },\n { value: 'poisson', label: 'Poisson' },\n { value: 'lightlane', label: 'Lightlane' }\n ]\n },\n orbitSpeed: { type: 'range', label: 'Orbit Speed', default: 0.2, min: 0, max: 2, step: 0.01 },\n thetaDrift: { type: 'range', label: 'Theta Drift', default: 0, min: -1, max: 1, step: 0.01 },\n thetaJitter: { type: 'range', label: 'Theta Jitter', default: 0, min: 0, max: 0.25, step: 0.005 },\n phiJitter: { type: 'range', label: 'Phi Jitter', default: 0, min: 0, max: 0.5, step: 0.01 },\n speedup: { type: 'range', label: 'Speedup', default: 1, min: 1, max: 240, step: 1 }\n },\n defaultParams: {\n complexity: 5,\n radius: 2,\n orbitSpeed: 0.2,\n thetaDrift: 0,\n thetaJitter: 0,\n phiJitter: 0,\n chandraDistance: 6,\n observationMode: 'randomSphere',\n sceneView: 'both',\n speedup: 1,\n // Internal defaults will handle the rest\n distance: 5,\n showAxes: false,\n lightlanes: true,\n allSectors: true,\n cumulative: false,\n phi: 0,\n theta: Math.PI / 2,\n K: 1000,\n usePoisson: true,\n hideScenePresentation: false,\n hideFlyingBars: false,\n hideDataBoxes: false\n }\n};\n\nexport type { GlitchComponentProps, GlitchComponentConfig, GlitchComponentResult, GlitchHostBridge } from './types';\n"],"names":["VectorArrow","vector","origin","color","dir","len","position","useMemo","start","THREE","end","arrowHelper","jsx","getVectors","complexity","allSectors","vectors","x","y","z","xSigns","ySigns","zSigns","sx","sy","sz","LightlaneCylinder","radius","distance","quaternion","v","up","jsxs","DiophantineVectors","lightlanes","cumulative","vectorData","data","c","result","getColor","maxC","item","i","HOST_SOUND_EVENT","HOST_STOP_SOUND_EVENT","SOUND_IDS","dispatchWindowEvent","type","detail","safePlaySound","host","id","payload","safeStopSound","EPS","createRng","seed","a","t","samplePoisson","lambda","rand","L","k","p","u1","u2","toXYZ","norm3","wrapAngle","angle","twoPi","randomSphereAngles","u","phi","reflectPolarTheta","theta","sampleNormal","vecOnSphereFromAngles","D","sinT","getDiophantineVectors","buildLaneEndpointsOnShell","raw","out","n","countLaneOverlapsOnSegments","lanes","satPos","laneRadius","Px","Py","Pz","r2","count","Bx","By","Bz","b2","Cx","Cy","Cz","dx","dy","dz","countLaneOverlapsOnShell","dotThreshold","isotropicCoverageProbability","lane_radius","isotropicCoverageProbabilitySegment","lane_length","dMin","dJoin","c0","lambdaIsotropic","flux","dt","lambdaIsotropicSegment","lambdaIsotropicForGeometry","hitTestModel","validateConfig","config","bin_size","sub_bin_sampling","thetaDrift","thetaJitter","phiJitter","observationMode","createSamplingSimulation","cfg","laneSegments","lightlaneRand","isotropicRand","pathRand","subBinSize","lambdaIsoSubBin","timeInBin","timeInSubBin","phase","thetaNow","elapsed","accumulatedLightlane","accumulatedIsotropic","expectedLightlaneThisBin","processedSubBinsInCurrentBin","lastLaneCount","overlapSumThisBin","sampleCount","currentSatPos","sampleTheta","samplePhi","processSubBin","ang","laneCount","N","lam","finalizeBin","effectiveBinSize","lamIso","bin","remaining","subBinEvents","bins","untilSub","untilBin","step","updateMoments","m","delta","mean","m2","emptyMoments","sampleFanoPoint","samplesPerPoint","runsPerPoint","binSize","subBinSampling","props","blue","yellow","run","sim","varBlue","varYellow","fanoBlue","fanoYellow","fitPowerLaw","points","minComplexity","usable","sxx","sxy","denom","slope","intercept","fitPowerLawWithFloor","minY","maxB","best","steps","B","shifted","A","alpha","score","pred","err","fitPowerXY","samples","s","estimateComplexityFromLaneCount","targetLaneCount","sorted","b","byLane","first","last","extrapolated","linePath","getY","xToPx","yToPx","formatYAxisTick","value","buildLogTicks","min","max","ticks","logMin","logMax","_","FanoSweepPanel","maxComplexity","setMaxComplexity","useState","setSamplesPerPoint","setRunsPerPoint","setBinSize","setSubBinSampling","setObservationMode","targetExcess","setTargetExcess","fitStartComplexity","setFitStartComplexity","runId","setRunId","setPoints","progress","setProgress","running","setRunning","wasRunningRef","useRef","progressStepRef","playUiHover","playUiClick","target","useEffect","cancelled","nextPoints","point","resolve","wasRunning","nextProgressStep","fit","floorFit","indistinguishableEstimate","effectiveTarget","effectiveA","effectiveAlpha","requiredLaneCount","measuredCrossing","complexityEstimate","plot","margin","innerW","innerH","maxX","positiveYs","rawYMin","rawYMax","yMin","yMax","safeY","ly","yTicks","bluePath","yellowPath","latest","Html","prev","e","py","px","fitPath","Fragment","sparkleColor","Color","createSparkleField","positions","colors","sparklePoints","shellRadius","index","radial","offset","PoissonShell","sparkleRef","sparkleCount","useFrame","clock","sparkleCloud","colorAttribute","time","colorArray","pulse","intensity","PulsingSphere","paused","materialRef","state","OrbitingObject","orbitTime","simTime","groupRef","currentPhi","currentTheta","poissonPalette","lightlanePalette","headlineFont","uiFont","terminalGreen","terminalGreenSoft","terminalGreenMuted","FlyingBars","bars","screenHeight","bar","startTop","deltaX","deltaY","createEmptyMoments","observed","isotropic","nextN","deltaObs","meanObs","m2Obs","deltaIso","meanIso","m2Iso","SamplingSystem","K","orbitRadius","orbitVelocity","usePoisson","speedup","sceneView","bottomInset","showNumericDiagnostics","compactNumericDiagnostics","centerDistribution","hideFlyingBars","stats","setStats","subBinSamples","simulator","bufferSize","historyRef","historyTheoryRef","currentIndexRef","history","setHistory","historyTheory","setHistoryTheory","lambdaMean","lambdaStdDev","distributionBinsContinuous","binRangeHalf","binMin","binMax","useDiscreteCountBins","discreteBinMin","discreteBinMax","distributionBins","binWidth","valueToBinIndex","binIndexToValue","distributionObserved","setDistributionObserved","distributionTheory","setDistributionTheory","unfastenedObserved","setUnfastenedObserved","unfastenedTheory","setUnfastenedTheory","flyingBars","setFlyingBars","flyingBarIdRef","summaryRef","summary","setSummary","pausedRef","lastBarSoundAtRef","ingestBins","totalObservedAdded","lastObserved","lastTheory","lastBinOverlapsMean","lastExpectedLightlane","nextSummary","observedTheory","currentMaxVal","autoAccumulateRow","isDraggingRef","dragTypeRef","handlePointerDown","handlePointerMove","historyData","maxValue","rect","barIndex","val","isUnfastened","handleBarClick","handlePointerUp","getBarDimensions","screenWidth","startLeft","barWidth","barHeight","startBottom","binIndex","histogramPadding","histogramWidth","targetLeft","now","targetTop","newBar","newDist","binIdx","theoryData","newFlyingBars","newDistObserved","newDistTheory","timer","prevIndexRef","wasPaused","flushed","validValues","validValuesTheory","maxValLightlane","maxValPoisson","maxDistribution","observedVariance","isotropicVariance","meanRatio","varianceRatio","fanoObserved","fanoIsotropic","lcIsoTarget","renderNumericInline","showPoissonView","showLightlaneView","visibleFlyingBars","distributionTitle","metricCardBase","numericCards","numericContext","theoryCount","obsHeight","theoryHeight","defaultProps","Component","maxSpeedup","bottomMenuHeight","cycleLevelCount","params","chandraDistance","showAxes","orbitSpeed","configuredSceneView","hideScenePresentation","hideDataBoxes","internalDefaults","orbitTimeRef","simTimeRef","setPaused","page","setPage","setSceneView","effectiveComplexity","setEffectiveComplexity","effectiveSpeedup","setEffectiveSpeedup","settingFlash","setSettingFlash","settingFlashTimerRef","hideFlyingBarsAtHighSpeed","isComplexityEnabled","getModeLabel","mode","flashSetting","message","getCycleLevels","interpolatedLevels","getNextCycledValue","current","levels","level","getPreviousCycledValue","getCycleLevelIndex","complexityLevel","turboLevel","complexityFill","turboFill","canDecreaseComplexity","canIncreaseComplexity","canDecreaseSpeedup","canIncreaseSpeedup","stepComplexity","direction","next","stepSpeedup","cycleMode","modes","currentIndex","nextMode","toggleFanoPage","onKeyDown","event","tag","Grid","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vendor/glitch/glitch_lightlane/presets.d.ts b/dist/vendor/glitch/glitch_lightlane/presets.d.ts new file mode 100644 index 0000000..5e71c13 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/presets.d.ts @@ -0,0 +1,94 @@ +export interface Config { + complexity: number; + radius: number; + distance: number; + lightlanes: boolean; + allSectors: boolean; + cumulative: boolean; + phi: number; + theta: number; + orbitSpeed?: number; + usePoisson?: boolean; +} +export interface Preset { + name: string; + description: string; + duration: number; + start: Config; + end: Config; +} +export declare const presets: Preset[]; +export declare const namedPresets: { + "Iso: High Complexity": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Iso: Fast Orbit": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Iso: Optimal": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Aniso: Low Complexity": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Aniso: Slow Speed": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Aniso: High Distance": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; +}; diff --git a/dist/vendor/glitch/glitch_lightlane/types.d.ts b/dist/vendor/glitch/glitch_lightlane/types.d.ts new file mode 100644 index 0000000..114197e --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/types.d.ts @@ -0,0 +1,82 @@ +export type SceneViewMode = 'both' | 'poisson' | 'lightlane'; +export interface LightlaneProps { + complexity?: number; + radius?: number; + distance?: number; + chandraDistance?: number; + showAxes?: boolean; + lightlanes?: boolean; + allSectors?: boolean; + cumulative?: boolean; + phi?: number; + theta?: number; + observationMode?: 'orbit' | 'randomSphere'; + orbitSpeed?: number; + thetaDrift?: number; + thetaJitter?: number; + phiJitter?: number; + speedup?: number; + K?: number; + usePoisson?: boolean; + sceneView?: SceneViewMode; + hideScenePresentation?: boolean; + hideFlyingBars?: boolean; + hideDataBoxes?: boolean; +} +export declare const defaultProps: Required; +export interface GlitchComponentConfig { + id: string; + name: string; + version: string; + params: Record; +} +export interface GlitchHostBridge { + playSound?: (id: string, payload?: Record) => void; + stopSound?: (id: string, payload?: Record) => void; + emit?: (type: string, payload?: unknown) => void; +} +export interface GlitchTheme { + primary: string; + accent: string; + bg: string; + bgSecondary: string; + text: string; + textMuted: string; + border: string; +} +export interface GlitchComponentResult { + success: boolean; + score?: number; + data?: unknown; + error?: string; +} +export interface GlitchComponentProps { + config: GlitchComponentConfig; + onComplete: (result: GlitchComponentResult) => void; + onProgress?: (percent: number) => void; + theme?: GlitchTheme; + className?: string; + host?: GlitchHostBridge; +} +export interface ParamSchema { + [key: string]: { + type: 'number' | 'string' | 'boolean' | 'color' | 'select' | 'range'; + label?: string; + description?: string; + default: unknown; + options?: { + value: string | number; + label: string; + }[]; + min?: number; + max?: number; + step?: number; + }; +} +export interface GlitchComponentMetadata { + name: string; + displayName: string; + version: string; + paramSchema: ParamSchema; + defaultParams: Record; +} diff --git a/dist/vendor/glitch/glitch_lightlane/vectors.d.ts b/dist/vendor/glitch/glitch_lightlane/vectors.d.ts new file mode 100644 index 0000000..15013f8 --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/vectors.d.ts @@ -0,0 +1,2 @@ +export type Vector3Tuple = [number, number, number]; +export declare function getVectors(complexity: number, allSectors?: boolean): Vector3Tuple[]; diff --git a/dist/vendor/glitch/glitch_lightlane/vite.svg b/dist/vendor/glitch/glitch_lightlane/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/dist/vendor/glitch/glitch_lightlane/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/vendor/glitch/glitch_migration_paradox/glitch.manifest.json b/dist/vendor/glitch/glitch_migration_paradox/glitch.manifest.json new file mode 100644 index 0000000..755f96e --- /dev/null +++ b/dist/vendor/glitch/glitch_migration_paradox/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "migration-paradox", + "displayName": "The Migration Paradox", + "version": "1.0.0", + "folderName": "glitch_migration_paradox", + "packageName": "migration-paradox", + "entry": "dist/migration-paradox.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "paradox", + "narrative" + ] +} diff --git a/dist/vendor/glitch/glitch_migration_paradox/migration-paradox.js b/dist/vendor/glitch/glitch_migration_paradox/migration-paradox.js new file mode 100644 index 0000000..e8de3a7 --- /dev/null +++ b/dist/vendor/glitch/glitch_migration_paradox/migration-paradox.js @@ -0,0 +1,422 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._container_166qm_3{--component-font-main: var(--font-main, system-ui, sans-serif);--component-font-display: var(--font-display, var(--component-font-main));--component-font-mono: var(--font-mono, monospace);background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:var(--component-font-main);line-height:1.6;max-width:640px;margin:0 auto;padding:1rem}._container_166qm_3 *,._container_166qm_3 *:before,._container_166qm_3 *:after{box-sizing:inherit}._panel_166qm_21{animation:_fadeIn_166qm_1 .3s ease;background:var(--gc-bg-secondary, #12121a);border:4px solid var(--gc-border, #2a2a3a);border-radius:4px;box-shadow:0 0 0 2px var(--gc-bg, #0a0a0f),0 0 20px #6366f126,inset 0 0 60px #00000080}@keyframes _fadeIn_166qm_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}._imageFrame_166qm_38{width:100%;min-height:100%;object-fit:contain;aspect-ratio:16 / 9;background:#000;border-bottom:4px solid var(--gc-border, #2a2a3a);overflow:hidden;position:relative}._imageFrame_166qm_38:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(0deg,rgba(0,0,0,.4) 0%,transparent 20%,transparent 80%,rgba(0,0,0,.2) 100%);pointer-events:none}._sceneImage_166qm_63{width:100%;height:100%;object-fit:contain;image-rendering:auto}._sceneFallback_166qm_70{--scene-accent: var(--gc-primary, #6366f1);--scene-glow: rgb(99 102 241 / 26%);--scene-panel: rgb(8 10 20 / 92%);position:relative;display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:1rem;background:radial-gradient(circle at 20% 18%,var(--scene-glow),transparent 34%),linear-gradient(145deg,rgb(8 10 20 / 96%),rgb(5 6 12 / 96%));overflow:hidden}._sceneFallback_166qm_70[data-tone=danger]{--scene-accent: #ef4444;--scene-glow: rgb(239 68 68 / 22%)}._sceneFallback_166qm_70[data-tone=accent]{--scene-accent: var(--gc-accent, #22d3ee);--scene-glow: rgb(34 211 238 / 20%)}._sceneFallback_166qm_70[data-tone=success]{--scene-accent: #22c55e;--scene-glow: rgb(34 197 94 / 20%)}._sceneFallbackGlow_166qm_102{position:absolute;inset:12% auto auto 8%;width:40%;aspect-ratio:1;border-radius:999px;background:radial-gradient(circle,var(--scene-glow),transparent 70%);filter:blur(8px);pointer-events:none}._sceneFallbackHud_166qm_113{position:relative;display:flex;justify-content:space-between;gap:.75rem;align-items:center;z-index:1}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{border:1px solid color-mix(in srgb,var(--scene-accent) 55%,transparent);background:color-mix(in srgb,var(--scene-panel) 88%,transparent);color:color-mix(in srgb,var(--scene-accent) 86%,white);padding:.35rem .55rem;text-transform:uppercase;letter-spacing:.14em;font-family:var(--component-font-mono);font-size:.66rem}._sceneFallbackSignal_166qm_123{opacity:.85}._sceneFallbackCopy_166qm_138{position:relative;z-index:1;display:grid;gap:.45rem;max-width:28rem}._sceneFallbackKicker_166qm_146{margin:0;color:color-mix(in srgb,var(--scene-accent) 78%,white);font-family:var(--component-font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}._sceneFallbackTitle_166qm_155{margin:0;color:#fff;font-family:var(--component-font-display);font-size:clamp(1.3rem,2.8vw,2rem);line-height:1.05;text-transform:uppercase}._sceneFallbackDetail_166qm_164{margin:0;color:#e8e8ecc2;font-size:.88rem;max-width:32ch}._sceneFallbackBars_166qm_171{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;align-items:end}._sceneFallbackBars_166qm_171 span{height:.35rem;border-radius:999px;background:linear-gradient(90deg,var(--scene-accent),color-mix(in srgb,var(--scene-accent) 18%,transparent));opacity:.9}._sceneFallbackBars_166qm_171 span:nth-child(2){width:82%}._sceneFallbackBars_166qm_171 span:nth-child(3){width:64%}._dialogueBox_166qm_196{padding:1.5rem;position:relative}._dialogueBox_166qm_196:before{content:"";position:absolute;top:0;left:1rem;right:1rem;height:1px;background:linear-gradient(90deg,transparent,var(--gc-primary, #6366f1) 20%,var(--gc-primary, #6366f1) 80%,transparent)}._dialogueHeader_166qm_217{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}._title_166qm_224{color:var(--gc-primary, #6366f1);font-family:var(--component-font-display);margin:0;font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 10px rgba(99,102,241,.5)}._loopBadge_166qm_235{background:rgba(239,68,68,.2);color:#ef4444;padding:.25rem .75rem;border:2px solid #ef4444;border-radius:2px;font-family:var(--component-font-mono);font-size:.75rem;font-weight:700;letter-spacing:.1em;animation:_loopPulse_166qm_1 1.5s ease-in-out infinite}@keyframes _loopPulse_166qm_1{0%,to{opacity:1}50%{opacity:.6}}._description_166qm_253{color:var(--gc-text-muted, #9999a8);margin:0 0 1.25rem;font-size:.95rem;line-height:1.7}._actionButton_166qm_261{background:linear-gradient(180deg,#4f46e5 0%,#3730a3 100%);color:#fff;border:2px solid #6366f1;padding:.875rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #1e1b4b,0 6px 10px #0000004d;position:relative;top:0}._actionButton_166qm_261:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #1e1b4b,0 8px 15px #0000004d}._actionButton_166qm_261:active{top:4px;box-shadow:0 0 #1e1b4b,0 2px 5px #0000004d}._choices_166qm_296{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}._choiceButton_166qm_303{background:var(--gc-bg, #0a0a0f);border:2px solid var(--gc-border, #2a2a3a);padding:1rem;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;gap:1rem;position:relative;overflow:hidden}._choiceButton_166qm_303:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gc-primary, #6366f1);opacity:0;transition:opacity .15s ease}._choiceButton_166qm_303:hover{border-color:var(--gc-primary, #6366f1);background:rgba(99,102,241,.08)}._choiceButton_166qm_303:hover:before{opacity:1}._choiceKey_166qm_337{width:2.5rem;height:2.5rem;background:linear-gradient(180deg,#374151 0%,#1f2937 100%);border:2px solid #4b5563;border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--component-font-mono);font-size:1.25rem;font-weight:700;color:#e5e7eb;flex-shrink:0;box-shadow:0 3px #111827,inset 0 1px #ffffff1a;text-shadow:0 1px 2px rgba(0,0,0,.5)}._choiceButton_166qm_303:hover ._choiceKey_166qm_337{background:linear-gradient(180deg,#4f46e5 0%,#3730a3 100%);border-color:#6366f1;box-shadow:0 3px #1e1b4b,inset 0 1px #ffffff26,0 0 10px #6366f14d}._choiceContent_166qm_366{display:flex;flex-direction:column;gap:.25rem;text-align:left}._choiceTitle_166qm_373{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-weight:700;font-size:1rem}._choiceDesc_166qm_380{color:var(--gc-text-muted, #9999a8);font-size:.8rem;font-style:italic}._rejection_166qm_387{background:rgba(239,68,68,.08);border:2px solid rgba(239,68,68,.4);padding:1.25rem;margin-bottom:1.25rem;position:relative}._rejectionBadge_166qm_395{display:inline-block;background:#dc2626;color:#fff;padding:.25rem .75rem;font-family:var(--component-font-mono);font-size:.8rem;font-weight:700;letter-spacing:.15em;margin-bottom:1rem;animation:_shake_166qm_1 .5s ease-in-out}@keyframes _shake_166qm_1{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}._quote_166qm_416{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-size:1.1rem;font-weight:700;margin:0 0 .75rem;padding-left:1rem;border-left:3px solid #ef4444}._explanation_166qm_426{color:var(--gc-text-muted, #9999a8);margin:0;font-size:.9rem;padding-left:1rem;border-left:3px solid transparent}._insightButton_166qm_435{background:transparent;border:2px dashed var(--gc-accent, #22d3ee);color:var(--gc-accent, #22d3ee);padding:.75rem 1rem;font-family:var(--component-font-display);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:1rem;width:100%;animation:_glowPulse_166qm_1 2s ease-in-out infinite}@keyframes _glowPulse_166qm_1{0%,to{box-shadow:0 0 5px #22d3ee4d}50%{box-shadow:0 0 15px #22d3ee80}}._insightButton_166qm_435:hover{background:rgba(34,211,238,.1);border-style:solid}._insight_166qm_435{text-align:center}._insightTitle_166qm_465{color:var(--gc-accent, #22d3ee);margin:0 0 1.5rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-shadow:0 0 15px rgba(34,211,238,.5)}._paradoxDiagram_166qm_474{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1.5rem;padding:1rem;background:rgba(0,0,0,.4);border:1px solid var(--gc-border, #2a2a3a)}._paradoxNode_166qm_486{background:var(--gc-bg, #0a0a0f);border:1px solid var(--gc-border, #2a2a3a);padding:.4rem .6rem;font-family:var(--component-font-mono);font-size:.7rem;color:var(--gc-text-muted, #9999a8)}._paradoxArrow_166qm_495{color:var(--gc-primary, #6366f1);font-size:1rem;font-weight:700}._paradoxLoop_166qm_501{color:var(--gc-accent, #22d3ee);font-size:1.5rem;margin-left:.5rem;animation:_spin_166qm_1 3s linear infinite}@keyframes _spin_166qm_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._insightText_166qm_513{color:var(--gc-text, #e8e8ec);margin:0 0 1rem;font-size:.9rem;line-height:1.7;text-align:left}._insightText_166qm_513:last-of-type{margin-bottom:0}._insightText_166qm_513 strong{color:var(--gc-accent, #22d3ee)}._completeButton_166qm_530{background:linear-gradient(180deg,#059669 0%,#047857 100%);color:#fff;border:2px solid #10b981;padding:1rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;margin-top:1.5rem;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #064e3b,0 6px 10px #0000004d;position:relative;top:0}._completeButton_166qm_530:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #064e3b,0 8px 15px #0000004d}._completeButton_166qm_530:active{top:4px;box-shadow:0 0 #064e3b,0 2px 5px #0000004d}._successBox_166qm_566{text-align:center}._successTitle_166qm_570{color:#22c55e;margin:0 0 1rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 15px rgba(34,197,94,.5)}._stats_166qm_581{color:var(--gc-text-muted, #9999a8);margin:0 0 1.5rem;font-size:.9rem}._scoreDisplay_166qm_587{background:rgba(0,0,0,.4);border:2px solid var(--gc-accent, #22d3ee);padding:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}._scoreLabel_166qm_597{color:var(--gc-text-muted, #9999a8);font-family:var(--component-font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.2em}._scoreValue_166qm_605{color:var(--gc-accent, #22d3ee);font-size:3rem;font-weight:700;text-shadow:0 0 20px rgba(34,211,238,.5)}@media (max-width: 480px){._container_166qm_3{padding:.5rem}._dialogueBox_166qm_196{padding:1rem}._title_166qm_224{font-size:1.1rem}._choiceKey_166qm_337{width:2rem;height:2rem;font-size:1rem}._paradoxDiagram_166qm_474{gap:.25rem;padding:.75rem}._paradoxNode_166qm_486{font-size:.6rem;padding:.3rem .5rem}._sceneFallback_166qm_70{padding:.85rem}._sceneFallbackHud_166qm_113{gap:.5rem}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{font-size:.58rem;padding:.3rem .45rem}._sceneFallbackTitle_166qm_155{font-size:1.1rem}._sceneFallbackDetail_166qm_164{font-size:.78rem}}')),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})(); +import { jsxs as t, jsx as a } from "react/jsx-runtime"; +import { useState as b, useMemo as I, useCallback as d } from "react"; +const K = "_container_166qm_3", O = "_panel_166qm_21", V = "_fadeIn_166qm_1", $ = "_imageFrame_166qm_38", G = "_sceneImage_166qm_63", W = "_sceneFallback_166qm_70", J = "_sceneFallbackGlow_166qm_102", z = "_sceneFallbackHud_166qm_113", Q = "_sceneFallbackBadge_166qm_122", X = "_sceneFallbackSignal_166qm_123", Z = "_sceneFallbackCopy_166qm_138", P = "_sceneFallbackKicker_166qm_146", ee = "_sceneFallbackTitle_166qm_155", ae = "_sceneFallbackDetail_166qm_164", te = "_sceneFallbackBars_166qm_171", ne = "_dialogueBox_166qm_196", se = "_dialogueHeader_166qm_217", ce = "_title_166qm_224", oe = "_loopBadge_166qm_235", ie = "_loopPulse_166qm_1", le = "_description_166qm_253", re = "_actionButton_166qm_261", de = "_choices_166qm_296", me = "_choiceButton_166qm_303", he = "_choiceKey_166qm_337", pe = "_choiceContent_166qm_366", ue = "_choiceTitle_166qm_373", ge = "_choiceDesc_166qm_380", _e = "_rejection_166qm_387", Ne = "_rejectionBadge_166qm_395", be = "_shake_166qm_1", ke = "_quote_166qm_416", xe = "_explanation_166qm_426", ye = "_insightButton_166qm_435", Be = "_glowPulse_166qm_1", ve = "_insight_166qm_435", qe = "_insightTitle_166qm_465", Ce = "_paradoxDiagram_166qm_474", Te = "_paradoxNode_166qm_486", Fe = "_paradoxArrow_166qm_495", fe = "_paradoxLoop_166qm_501", we = "_spin_166qm_1", Ae = "_insightText_166qm_513", Ie = "_completeButton_166qm_530", Ee = "_successBox_166qm_566", Se = "_successTitle_166qm_570", je = "_stats_166qm_581", De = "_scoreDisplay_166qm_587", Me = "_scoreLabel_166qm_597", Le = "_scoreValue_166qm_605", e = { + container: K, + panel: O, + fadeIn: V, + imageFrame: $, + sceneImage: G, + sceneFallback: W, + sceneFallbackGlow: J, + sceneFallbackHud: z, + sceneFallbackBadge: Q, + sceneFallbackSignal: X, + sceneFallbackCopy: Z, + sceneFallbackKicker: P, + sceneFallbackTitle: ee, + sceneFallbackDetail: ae, + sceneFallbackBars: te, + dialogueBox: ne, + dialogueHeader: se, + title: ce, + loopBadge: oe, + loopPulse: ie, + description: le, + actionButton: re, + choices: de, + choiceButton: me, + choiceKey: he, + choiceContent: pe, + choiceTitle: ue, + choiceDesc: ge, + rejection: _e, + rejectionBadge: Ne, + shake: be, + quote: ke, + explanation: xe, + insightButton: ye, + glowPulse: Be, + insight: ve, + insightTitle: qe, + paradoxDiagram: Ce, + paradoxNode: Te, + paradoxArrow: Fe, + paradoxLoop: fe, + spin: we, + insightText: Ae, + completeButton: Ie, + successBox: Ee, + successTitle: Se, + stats: je, + scoreDisplay: De, + scoreLabel: Me, + scoreValue: Le +}, E = "/glitch/migration-paradox", Re = 2, He = 1, _ = { + presenting: { + badge: "Migration Briefing", + title: "Stakeholders Await Your Plan", + copy: "Frame the migration as progress without triggering fear.", + detail: "You need a strategy that creates momentum before the paradox closes in.", + tone: "primary" + }, + "rejection-value": { + badge: "Stakeholder Response", + title: "Too Much Change", + copy: "Your pitch sounded valuable, but it also sounded dangerous.", + detail: "They want new capability only if nothing important feels different.", + tone: "danger" + }, + "rejection-same": { + badge: "Stakeholder Response", + title: "Too Little Value", + copy: "Your pitch sounded safe, but it also sounded pointless.", + detail: "They want risk contained, but they still expect the migration to matter.", + tone: "danger" + }, + awareness: { + badge: "Pattern Detected", + title: "Expose The Contradiction", + copy: "Show how value and continuity need different phases, not one impossible promise.", + detail: "Explore, preserve, and then innovate.", + tone: "accent" + }, + complete: { + badge: "Challenge Complete", + title: "Paradox Resolved", + copy: "You reframed the migration into a sequence stakeholders can accept.", + detail: "Value and stability can coexist when delivery is phased.", + tone: "success" + } +}; +function Ue(o) { + if (typeof o != "string") + return E; + const i = o.trim(); + return i ? i.replace(/\/+$/, "") : E; +} +function y(o, i) { + return `${o}/${i}`; +} +function S(o, i) { + const n = o === "A" ? Re : He, s = Math.floor(Math.random() * n) + 1; + return y(i, `rejection${o}_${s}.png`); +} +function N({ + src: o, + alt: i, + fallback: n, + onImageError: s +}) { + return /* @__PURE__ */ a("div", { className: e.imageFrame, children: o ? /* @__PURE__ */ a( + "img", + { + src: o, + alt: i, + className: e.sceneImage, + onError: () => s(o) + } + ) : /* @__PURE__ */ t( + "div", + { + className: e.sceneFallback, + "data-tone": n.tone, + role: "img", + "aria-label": i, + children: [ + /* @__PURE__ */ a("div", { className: e.sceneFallbackGlow }), + /* @__PURE__ */ t("div", { className: e.sceneFallbackHud, children: [ + /* @__PURE__ */ a("span", { className: e.sceneFallbackBadge, children: n.badge }), + /* @__PURE__ */ a("span", { className: e.sceneFallbackSignal, children: "GLITCH SIM" }) + ] }), + /* @__PURE__ */ t("div", { className: e.sceneFallbackCopy, children: [ + /* @__PURE__ */ a("p", { className: e.sceneFallbackKicker, children: n.copy }), + /* @__PURE__ */ a("h3", { className: e.sceneFallbackTitle, children: n.title }), + /* @__PURE__ */ a("p", { className: e.sceneFallbackDetail, children: n.detail }) + ] }), + /* @__PURE__ */ t("div", { className: e.sceneFallbackBars, "aria-hidden": "true", children: [ + /* @__PURE__ */ a("span", {}), + /* @__PURE__ */ a("span", {}), + /* @__PURE__ */ a("span", {}) + ] }) + ] + } + ) }); +} +function Oe({ + config: o, + onComplete: i, + onProgress: n, + theme: s, + className: j +}) { + const k = (o == null ? void 0 : o.params) ?? {}, [h, p] = b("intro"), [l, T] = b({ + loopCount: 0, + valueAttempts: 0, + sameAttempts: 0 + }), [B, D] = b(!1), [F, f] = b(""), [w, M] = b({}), r = I( + () => Ue(k.assetBaseUrl ?? k.imageBaseUrl), + [k.assetBaseUrl, k.imageBaseUrl] + ), x = I(() => ({ + presenting: y(r, "presenting.png"), + insight: y(r, "insight.png"), + complete: y(r, "complete.png") + }), [r]), L = { + "--gc-primary": (s == null ? void 0 : s.primary) || "#6366f1", + "--gc-accent": (s == null ? void 0 : s.accent) || "#22d3ee", + "--gc-bg": (s == null ? void 0 : s.bg) || "#0a0a0f", + "--gc-bg-secondary": (s == null ? void 0 : s.bgSecondary) || "#12121a", + "--gc-text": (s == null ? void 0 : s.text) || "#e8e8ec", + "--gc-text-muted": (s == null ? void 0 : s.textMuted) || "#9999a8", + "--gc-border": (s == null ? void 0 : s.border) || "#2a2a3a" + }, m = l.valueAttempts + l.sameAttempts, v = m >= 4, u = d((c) => w[c] ? void 0 : c, [w]), g = d((c) => { + M((C) => C[c] ? C : { ...C, [c]: !0 }); + }, []), R = d(() => { + p("choice"), n == null || n(10); + }, [n]), H = d(() => { + f(S("A", r)), T((c) => ({ + ...c, + valueAttempts: c.valueAttempts + 1, + loopCount: c.loopCount + (c.sameAttempts > c.valueAttempts ? 0.5 : 0) + })), p("rejection-value"), n == null || n(Math.min(30 + m * 10, 80)); + }, [r, m, n]), U = d(() => { + f(S("B", r)), T((c) => ({ + ...c, + sameAttempts: c.sameAttempts + 1, + loopCount: c.loopCount + (c.valueAttempts > c.sameAttempts ? 0.5 : 0) + })), p("rejection-same"), n == null || n(Math.min(30 + m * 10, 80)); + }, [r, m, n]), A = d(() => { + p("choice"); + }, []), q = d(() => { + D(!0), p("awareness"), n == null || n(90); + }, [n]), Y = d(() => { + p("complete"), n == null || n(100), i({ + success: !0, + score: 100, + data: { + loopsBeforeInsight: Math.floor(l.loopCount), + totalAttempts: m, + valueAttempts: l.valueAttempts, + sameAttempts: l.sameAttempts + }, + rewards: { + paradoxes: [{ + id: "migration-paradox", + name: "The Migration Paradox", + description: "Stakeholders simultaneously demand that a migration adds value AND changes nothing.", + rarity: "uncommon" + }] + } + }); + }, [i, n, l, m]); + return /* @__PURE__ */ t("div", { className: `${e.container} ${j || ""}`, style: L, children: [ + h === "intro" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.presenting), + alt: "Presenting to stakeholders", + fallback: _.presenting, + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ a("h2", { className: e.title, children: "The Migration Paradox" }), + /* @__PURE__ */ a("p", { className: e.description, children: "You've been tasked with migrating the core system. Your stakeholders are waiting for your strategy." }), + /* @__PURE__ */ a("button", { className: e.actionButton, onClick: R, children: "▶ Present Your Strategy" }) + ] }) + ] }), + h === "choice" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.presenting), + alt: "Presenting options", + fallback: _.presenting, + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.dialogueHeader, children: [ + /* @__PURE__ */ a("h2", { className: e.title, children: "Choose Your Approach" }), + l.loopCount > 0 && /* @__PURE__ */ t("span", { className: e.loopBadge, children: [ + "LOOP ", + Math.floor(l.loopCount) + 1 + ] }) + ] }), + /* @__PURE__ */ a("p", { className: e.description, children: "How will you pitch the migration project?" }), + /* @__PURE__ */ t("div", { className: e.choices, children: [ + /* @__PURE__ */ t( + "button", + { + className: e.choiceButton, + onClick: H, + children: [ + /* @__PURE__ */ a("span", { className: e.choiceKey, children: "A" }), + /* @__PURE__ */ t("span", { className: e.choiceContent, children: [ + /* @__PURE__ */ a("span", { className: e.choiceTitle, children: "Emphasize Change" }), + /* @__PURE__ */ a("span", { className: e.choiceDesc, children: '"The new system will add value and enable new capabilities"' }) + ] }) + ] + } + ), + /* @__PURE__ */ t( + "button", + { + className: e.choiceButton, + onClick: U, + children: [ + /* @__PURE__ */ a("span", { className: e.choiceKey, children: "B" }), + /* @__PURE__ */ t("span", { className: e.choiceContent, children: [ + /* @__PURE__ */ a("span", { className: e.choiceTitle, children: "Emphasize No Change" }), + /* @__PURE__ */ a("span", { className: e.choiceDesc, children: '"Everything will work exactly the same as before"' }) + ] }) + ] + } + ) + ] }), + v && !B && /* @__PURE__ */ a( + "button", + { + className: e.insightButton, + onClick: q, + children: "✦ Wait... I see the pattern" + } + ) + ] }) + ] }), + h === "rejection-value" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(F), + alt: "Stakeholder rejection", + fallback: _["rejection-value"], + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.rejection, children: [ + /* @__PURE__ */ a("span", { className: e.rejectionBadge, children: "✗ REJECTED" }), + /* @__PURE__ */ a("p", { className: e.quote, children: '"Are you insane? This will break everything!"' }), + /* @__PURE__ */ a("p", { className: e.explanation, children: `"If you want to change the core system, you need to make absolutely sure that everything works exactly the same. We can't risk any disruption."` }) + ] }), + /* @__PURE__ */ a("button", { className: e.actionButton, onClick: A, children: "▶ Try a Different Approach" }), + v && !B && /* @__PURE__ */ a( + "button", + { + className: e.insightButton, + onClick: q, + children: "✦ Wait... I see the pattern" + } + ) + ] }) + ] }), + h === "rejection-same" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(F), + alt: "Stakeholder rejection", + fallback: _["rejection-same"], + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.rejection, children: [ + /* @__PURE__ */ a("span", { className: e.rejectionBadge, children: "✗ REJECTED" }), + /* @__PURE__ */ a("p", { className: e.quote, children: '"This is insane. Why would we do this?"' }), + /* @__PURE__ */ a("p", { className: e.explanation, children: `"If everything is going to stay exactly the same, why would we spend all this time and money replacing the core system? What's the point?"` }) + ] }), + /* @__PURE__ */ a("button", { className: e.actionButton, onClick: A, children: "▶ Try a Different Approach" }), + v && !B && /* @__PURE__ */ a( + "button", + { + className: e.insightButton, + onClick: q, + children: "✦ Wait... I see the pattern" + } + ) + ] }) + ] }), + h === "awareness" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.insight), + alt: "Insight moment", + fallback: _.awareness, + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.insight, children: [ + /* @__PURE__ */ a("h2", { className: e.insightTitle, children: "★ The Paradox Revealed ★" }), + /* @__PURE__ */ t("p", { className: e.insightText, children: [ + "You've discovered the ", + /* @__PURE__ */ a("strong", { children: "Migration Paradox" }), + ": stakeholders demand that you change things - to give value. But also that nothing changes, to contain risk." + ] }), + /* @__PURE__ */ t("p", { className: e.insightText, children: [ + "The solution is ", + /* @__PURE__ */ a("strong", { children: "phased delivery" }), + ". First, prove business case. Then prove you can preserve existing functionality. Then introduce new capabilities." + ] }), + /* @__PURE__ */ t("div", { className: e.paradoxDiagram, children: [ + /* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Explore"' }), + /* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }), + /* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Preserve"' }), + /* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }), + /* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Innovate"' }), + /* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }) + ] }) + ] }), + /* @__PURE__ */ a("button", { className: e.completeButton, onClick: Y, children: "▶ Complete Challenge" }) + ] }) + ] }), + h === "complete" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.complete), + alt: "Challenge complete", + fallback: _.complete, + onImageError: g + } + ), + /* @__PURE__ */ a("div", { className: e.dialogueBox, children: /* @__PURE__ */ t("div", { className: e.successBox, children: [ + /* @__PURE__ */ a("h2", { className: e.successTitle, children: "★ CHALLENGE COMPLETE ★" }), + /* @__PURE__ */ t("p", { className: e.stats, children: [ + "You experienced ", + Math.floor(l.loopCount), + " loop(s) before seeing the pattern." + ] }), + /* @__PURE__ */ t("div", { className: e.scoreDisplay, children: [ + /* @__PURE__ */ a("span", { className: e.scoreLabel, children: "SCORE" }), + /* @__PURE__ */ a("span", { className: e.scoreValue, children: "100" }) + ] }) + ] }) }) + ] }) + ] }); +} +const Ve = { + name: "migration-paradox", + displayName: "The Migration Paradox", + version: "1.0.0", + paramSchema: { + assetBaseUrl: { + type: "string", + label: "Asset Base URL", + description: "Shared CDN or public folder containing presenting.png, insight.png, complete.png, rejectionA_1.png, rejectionA_2.png, and rejectionB_1.png.", + default: "/glitch/migration-paradox" + } + }, + defaultParams: { + assetBaseUrl: "/glitch/migration-paradox" + } +}; +export { + Oe as default, + Ve as metadata +}; +//# sourceMappingURL=migration-paradox.js.map diff --git a/dist/vendor/glitch/glitch_migration_paradox/migration-paradox.js.map b/dist/vendor/glitch/glitch_migration_paradox/migration-paradox.js.map new file mode 100644 index 0000000..9a7c8da --- /dev/null +++ b/dist/vendor/glitch/glitch_migration_paradox/migration-paradox.js.map @@ -0,0 +1 @@ +{"version":3,"file":"migration-paradox.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport styles from './styles.module.css';\nimport type { GlitchComponentProps } from './types';\n\ntype Phase = 'intro' | 'choice' | 'rejection-value' | 'rejection-same' | 'awareness' | 'complete';\ntype SceneTone = 'primary' | 'danger' | 'accent' | 'success';\n\ninterface LoopState {\n loopCount: number;\n valueAttempts: number;\n sameAttempts: number;\n}\n\ninterface SceneFallback {\n badge: string;\n title: string;\n copy: string;\n detail: string;\n tone: SceneTone;\n}\n\nconst DEFAULT_ASSET_BASE = '/glitch/migration-paradox';\nconst REJECTION_A_COUNT = 2; // Number of rejectionA_X.png variants (1 to X)\nconst REJECTION_B_COUNT = 1; // Number of rejectionB_X.png variants (1 to X)\nconst SCENE_FALLBACKS: Record<'presenting' | 'rejection-value' | 'rejection-same' | 'awareness' | 'complete', SceneFallback> = {\n presenting: {\n badge: 'Migration Briefing',\n title: 'Stakeholders Await Your Plan',\n copy: 'Frame the migration as progress without triggering fear.',\n detail: 'You need a strategy that creates momentum before the paradox closes in.',\n tone: 'primary'\n },\n 'rejection-value': {\n badge: 'Stakeholder Response',\n title: 'Too Much Change',\n copy: 'Your pitch sounded valuable, but it also sounded dangerous.',\n detail: 'They want new capability only if nothing important feels different.',\n tone: 'danger'\n },\n 'rejection-same': {\n badge: 'Stakeholder Response',\n title: 'Too Little Value',\n copy: 'Your pitch sounded safe, but it also sounded pointless.',\n detail: 'They want risk contained, but they still expect the migration to matter.',\n tone: 'danger'\n },\n awareness: {\n badge: 'Pattern Detected',\n title: 'Expose The Contradiction',\n copy: 'Show how value and continuity need different phases, not one impossible promise.',\n detail: 'Explore, preserve, and then innovate.',\n tone: 'accent'\n },\n complete: {\n badge: 'Challenge Complete',\n title: 'Paradox Resolved',\n copy: 'You reframed the migration into a sequence stakeholders can accept.',\n detail: 'Value and stability can coexist when delivery is phased.',\n tone: 'success'\n }\n};\n\nfunction normalizeAssetBase(candidate: unknown): string {\n if (typeof candidate !== 'string') {\n return DEFAULT_ASSET_BASE;\n }\n\n const trimmed = candidate.trim();\n if (!trimmed) {\n return DEFAULT_ASSET_BASE;\n }\n\n return trimmed.replace(/\\/+$/, '');\n}\n\nfunction buildAssetUrl(base: string, assetName: string): string {\n return `${base}/${assetName}`;\n}\n\nfunction getRandomRejectionImage(choice: 'A' | 'B', assetBase: string): string {\n const count = choice === 'A' ? REJECTION_A_COUNT : REJECTION_B_COUNT;\n const index = Math.floor(Math.random() * count) + 1;\n return buildAssetUrl(assetBase, `rejection${choice}_${index}.png`);\n}\n\nfunction SceneMedia({\n src,\n alt,\n fallback,\n onImageError\n}: {\n src?: string;\n alt: string;\n fallback: SceneFallback;\n onImageError: (src: string) => void;\n}) {\n return (\n
\n {src ? (\n onImageError(src)}\n />\n ) : (\n \n
\n
\n {fallback.badge}\n GLITCH SIM\n
\n
\n

{fallback.copy}

\n

{fallback.title}

\n

{fallback.detail}

\n
\n
\n \n \n \n
\n
\n )}\n
\n );\n}\n\nexport default function MigrationParadox({\n config: _config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const params = _config?.params ?? {};\n const [phase, setPhase] = useState('intro');\n const [loopState, setLoopState] = useState({\n loopCount: 0,\n valueAttempts: 0,\n sameAttempts: 0\n });\n const [showInsight, setShowInsight] = useState(false);\n const [currentRejectionImage, setCurrentRejectionImage] = useState('');\n const [failedImages, setFailedImages] = useState>({});\n\n const assetBase = useMemo(\n () => normalizeAssetBase(params.assetBaseUrl ?? params.imageBaseUrl),\n [params.assetBaseUrl, params.imageBaseUrl]\n );\n\n const images = useMemo(() => ({\n presenting: buildAssetUrl(assetBase, 'presenting.png'),\n insight: buildAssetUrl(assetBase, 'insight.png'),\n complete: buildAssetUrl(assetBase, 'complete.png')\n }), [assetBase]);\n\n const cssVars = {\n '--gc-primary': theme?.primary || '#6366f1',\n '--gc-accent': theme?.accent || '#22d3ee',\n '--gc-bg': theme?.bg || '#0a0a0f',\n '--gc-bg-secondary': theme?.bgSecondary || '#12121a',\n '--gc-text': theme?.text || '#e8e8ec',\n '--gc-text-muted': theme?.textMuted || '#9999a8',\n '--gc-border': theme?.border || '#2a2a3a',\n } as React.CSSProperties;\n\n const totalAttempts = loopState.valueAttempts + loopState.sameAttempts;\n const canSeeInsight = totalAttempts >= 4;\n const getSceneImage = useCallback((src: string) => (\n failedImages[src] ? undefined : src\n ), [failedImages]);\n const handleImageError = useCallback((src: string) => {\n setFailedImages(prev => (\n prev[src] ? prev : { ...prev, [src]: true }\n ));\n }, []);\n\n const handleStart = useCallback(() => {\n setPhase('choice');\n onProgress?.(10);\n }, [onProgress]);\n\n const handleChooseValue = useCallback(() => {\n setCurrentRejectionImage(getRandomRejectionImage('A', assetBase));\n setLoopState(prev => ({\n ...prev,\n valueAttempts: prev.valueAttempts + 1,\n loopCount: prev.loopCount + (prev.sameAttempts > prev.valueAttempts ? 0.5 : 0)\n }));\n setPhase('rejection-value');\n onProgress?.(Math.min(30 + totalAttempts * 10, 80));\n }, [assetBase, totalAttempts, onProgress]);\n\n const handleChooseSame = useCallback(() => {\n setCurrentRejectionImage(getRandomRejectionImage('B', assetBase));\n setLoopState(prev => ({\n ...prev,\n sameAttempts: prev.sameAttempts + 1,\n loopCount: prev.loopCount + (prev.valueAttempts > prev.sameAttempts ? 0.5 : 0)\n }));\n setPhase('rejection-same');\n onProgress?.(Math.min(30 + totalAttempts * 10, 80));\n }, [assetBase, totalAttempts, onProgress]);\n\n const handleTryAgain = useCallback(() => {\n setPhase('choice');\n }, []);\n\n const handleSeeInsight = useCallback(() => {\n setShowInsight(true);\n setPhase('awareness');\n onProgress?.(90);\n }, [onProgress]);\n\n const handleComplete = useCallback(() => {\n setPhase('complete');\n onProgress?.(100);\n onComplete({\n success: true,\n score: 100,\n data: {\n loopsBeforeInsight: Math.floor(loopState.loopCount),\n totalAttempts,\n valueAttempts: loopState.valueAttempts,\n sameAttempts: loopState.sameAttempts\n },\n rewards: {\n paradoxes: [{\n id: 'migration-paradox',\n name: 'The Migration Paradox',\n description: 'Stakeholders simultaneously demand that a migration adds value AND changes nothing.',\n rarity: 'uncommon'\n }]\n }\n });\n }, [onComplete, onProgress, loopState, totalAttempts]);\n\n return (\n
\n {phase === 'intro' && (\n
\n \n
\n

The Migration Paradox

\n

\n You've been tasked with migrating the core system.\n Your stakeholders are waiting for your strategy.\n

\n \n
\n
\n )}\n\n {phase === 'choice' && (\n
\n \n
\n
\n

Choose Your Approach

\n {loopState.loopCount > 0 && (\n \n LOOP {Math.floor(loopState.loopCount) + 1}\n \n )}\n
\n

\n How will you pitch the migration project?\n

\n
\n \n A\n \n Emphasize Change\n \n \"The new system will add value and enable new capabilities\"\n \n \n \n \n B\n \n Emphasize No Change\n \n \"Everything will work exactly the same as before\"\n \n \n \n
\n {canSeeInsight && !showInsight && (\n \n ✦ Wait... I see the pattern\n \n )}\n
\n
\n )}\n\n {phase === 'rejection-value' && (\n
\n \n
\n
\n ✗ REJECTED\n

\n \"Are you insane? This will break everything!\"\n

\n

\n \"If you want to change the core system, you need to make absolutely\n sure that everything works exactly the same. We can't risk any disruption.\"\n

\n
\n \n {canSeeInsight && !showInsight && (\n \n ✦ Wait... I see the pattern\n \n )}\n
\n
\n )}\n\n {phase === 'rejection-same' && (\n
\n \n
\n
\n ✗ REJECTED\n

\n \"This is insane. Why would we do this?\"\n

\n

\n \"If everything is going to stay exactly the same, why would we spend\n all this time and money replacing the core system? What's the point?\"\n

\n
\n \n {canSeeInsight && !showInsight && (\n \n ✦ Wait... I see the pattern\n \n )}\n
\n
\n )}\n\n {phase === 'awareness' && (\n
\n \n
\n
\n

★ The Paradox Revealed ★

\n \n

\n You've discovered the Migration Paradox: stakeholders\n demand that you change things - to give value. But also that nothing changes, to contain risk.\n

\n

\n The solution is phased delivery. First, prove business case. Then \n prove you can preserve existing functionality. Then introduce new\n capabilities.\n

\n
\n
\"Explore\"
\n
\n
\"Preserve\"
\n
\n
\"Innovate\"
\n
\n
\n
\n \n
\n
\n )}\n\n {phase === 'complete' && (\n
\n \n
\n
\n

★ CHALLENGE COMPLETE ★

\n

\n You experienced {Math.floor(loopState.loopCount)} loop(s) before seeing the pattern.\n

\n
\n SCORE\n 100\n
\n
\n
\n
\n )}\n
\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'migration-paradox',\n displayName: 'The Migration Paradox',\n version: '1.0.0',\n paramSchema: {\n assetBaseUrl: {\n type: 'string',\n label: 'Asset Base URL',\n description: 'Shared CDN or public folder containing presenting.png, insight.png, complete.png, rejectionA_1.png, rejectionA_2.png, and rejectionB_1.png.',\n default: '/glitch/migration-paradox'\n }\n },\n defaultParams: {\n assetBaseUrl: '/glitch/migration-paradox'\n }\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult\n} from './types';\n"],"names":["DEFAULT_ASSET_BASE","REJECTION_A_COUNT","REJECTION_B_COUNT","SCENE_FALLBACKS","normalizeAssetBase","candidate","trimmed","buildAssetUrl","base","assetName","getRandomRejectionImage","choice","assetBase","count","index","SceneMedia","src","alt","fallback","onImageError","jsx","styles","jsxs","MigrationParadox","_config","onComplete","onProgress","theme","className","params","phase","setPhase","useState","loopState","setLoopState","showInsight","setShowInsight","currentRejectionImage","setCurrentRejectionImage","failedImages","setFailedImages","useMemo","images","cssVars","totalAttempts","canSeeInsight","getSceneImage","useCallback","handleImageError","prev","handleStart","handleChooseValue","handleChooseSame","handleTryAgain","handleSeeInsight","handleComplete","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vendor/glitch/glitch_onboarding/glitch.manifest.json b/dist/vendor/glitch/glitch_onboarding/glitch.manifest.json new file mode 100644 index 0000000..7685d65 --- /dev/null +++ b/dist/vendor/glitch/glitch_onboarding/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "onboarding", + "displayName": "Glitch University Onboarding", + "version": "1.0.0", + "folderName": "glitch_onboarding", + "packageName": "@glitch-components/onboarding", + "entry": "dist/onboarding.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "onboarding", + "narrative" + ] +} diff --git a/dist/vendor/glitch/glitch_onboarding/onboarding.js b/dist/vendor/glitch/glitch_onboarding/onboarding.js new file mode 100644 index 0000000..9c3499a --- /dev/null +++ b/dist/vendor/glitch/glitch_onboarding/onboarding.js @@ -0,0 +1,847 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._container_18jex_3{width:100%;height:100vh;background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden}._grid_18jex_18{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(99,102,241,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.03) 1px,transparent 1px);background-size:40px 40px;opacity:.5;animation:_gridPulse_18jex_1 4s ease-in-out infinite}@keyframes _gridPulse_18jex_1{0%,to{opacity:.3}50%{opacity:.6}}._textBlock_18jex_34{max-width:600px;text-align:center;z-index:10;padding:2rem}._mainText_18jex_41{font-size:1.25rem;line-height:1.8;color:var(--gc-text, #e8e8ec);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards}._mainText_18jex_41._delayed_18jex_50{animation-delay:2s}._questionText_18jex_54{font-size:1.1rem;color:var(--gc-textMuted, #9999a8);font-style:italic;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:3.5s}._sphere_18jex_63{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(99,102,241,.3),rgba(34,211,238,.1) 50%,transparent 70%);border:1px solid rgba(99,102,241,.3);margin:2rem auto;position:relative;animation:_sphereFloat_18jex_1 3s ease-in-out infinite}@keyframes _sphereFloat_18jex_1{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}._sphere_18jex_63._glitching_18jex_82{animation:_sphereGlitch_18jex_1 .15s steps(2) forwards}@keyframes _sphereGlitch_18jex_1{0%{border-radius:50%;filter:none}25%{border-radius:10%;filter:hue-rotate(90deg);transform:scale(1.1) skew(5deg)}50%{border-radius:5%;filter:hue-rotate(180deg) saturate(2);transform:scale(.9) skew(-5deg)}75%{border-radius:20%;filter:hue-rotate(270deg);transform:scale(1.05)}to{border-radius:50%;filter:none;transform:scale(1)}}._voxelOverlay_18jex_113{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(6,1fr);opacity:0}._voxelOverlay_18jex_113._visible_18jex_122{opacity:1;animation:_voxelFlash_18jex_1 .15s steps(1) forwards}._voxel_18jex_113{background:var(--gc-primary, #6366f1);opacity:.8}@keyframes _voxelFlash_18jex_1{0%{opacity:1}to{opacity:0}}._rebelText_18jex_137{font-size:.95rem;color:var(--gc-accent, #22d3ee);margin-top:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:5s}._enterButton_18jex_146{margin-top:3rem;padding:1rem 2.5rem;background:transparent;border:1px solid var(--gc-primary, #6366f1);color:var(--gc-primary, #6366f1);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:6.5s;transition:all .3s ease}._enterButton_18jex_146:hover{background:var(--gc-primary, #6366f1);color:var(--gc-bg, #0a0a0f);box-shadow:0 0 20px #6366f166}._migrationContent_18jex_168{max-width:650px;text-align:center;z-index:10;padding:2rem}._tagline_18jex_175{font-size:1.4rem;color:var(--gc-accent, #22d3ee);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._notList_18jex_183{list-style:none;padding:0;margin:0 0 2rem;text-align:left}._notItem_18jex_190{font-size:1rem;color:var(--gc-textMuted, #9999a8);padding:.5rem 0 .5rem 2rem;position:relative;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._notItem_18jex_190:before{content:"×";position:absolute;left:0;color:#ef4444b3;font-weight:700}._notItem_18jex_190:nth-child(1){animation-delay:.5s}._notItem_18jex_190:nth-child(2){animation-delay:.8s}._notItem_18jex_190:nth-child(3){animation-delay:1.1s}._isText_18jex_212{font-size:1.1rem;color:var(--gc-text, #e8e8ec);margin:2rem 0;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1.8s}._ruleBox_18jex_221{border:1px solid var(--gc-border, #2a2a3a);padding:1.5rem;margin:2rem 0;text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:2.5s}._ruleTitle_18jex_231{font-size:.85rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem;letter-spacing:.1em}._ruleContent_18jex_238{font-size:1rem;color:var(--gc-text, #e8e8ec);line-height:1.6}._continueButton_18jex_244{margin-top:2rem;padding:.8rem 2rem;background:transparent;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-textMuted, #9999a8);font-family:Courier New,monospace;font-size:.9rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards;animation-delay:3.2s;transition:all .3s ease}._continueButton_18jex_244:hover{border-color:var(--gc-primary, #6366f1);color:var(--gc-text, #e8e8ec)}._agreementContent_18jex_265{max-width:550px;text-align:center;z-index:10;padding:2rem}._agreementTitle_18jex_272{font-size:1.2rem;color:var(--gc-textMuted, #9999a8);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._pledgeText_18jex_280{font-size:1.5rem;color:var(--gc-text, #e8e8ec);font-style:italic;margin:2rem 0;padding:1.5rem;border-left:2px solid var(--gc-primary, #6366f1);text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:.5s}._signatureArea_18jex_293{margin:3rem 0;position:relative;height:120px;display:flex;align-items:center;justify-content:center}._paper_18jex_302{width:200px;height:100px;background:#ffffff08;border:1px solid var(--gc-border, #2a2a3a);position:relative;display:flex;align-items:center;justify-content:center}._signatureMark_18jex_313{font-size:4rem;color:var(--gc-primary, #6366f1);opacity:0;transform:scale(0)}._signatureMark_18jex_313._visible_18jex_122{animation:_drawX_18jex_1 .8s ease forwards}@keyframes _drawX_18jex_1{0%{opacity:0;transform:scale(0) rotate(-45deg)}50%{opacity:1;transform:scale(1.2) rotate(0)}to{opacity:1;transform:scale(1) rotate(0)}}._pencil_18jex_339{position:absolute;font-size:2rem;opacity:0;transform:translate(80px,-60px) rotate(-45deg)}._pencil_18jex_339._animating_18jex_346{animation:_pencilDraw_18jex_1 .8s ease forwards}@keyframes _pencilDraw_18jex_1{0%{opacity:1;transform:translate(80px,-60px) rotate(-45deg)}50%{opacity:1;transform:translate(0) rotate(-45deg)}to{opacity:0;transform:translate(-80px,60px) rotate(-45deg)}}._signButton_18jex_365{padding:1rem 2.5rem;background:var(--gc-primary, #6366f1);border:none;color:var(--gc-bg, #0a0a0f);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1s}._signButton_18jex_365:hover{box-shadow:0 0 25px #6366f180;transform:translateY(-2px)}._signButton_18jex_365:disabled{opacity:.5;cursor:not-allowed}._navigationContent_18jex_390{max-width:600px;text-align:center;z-index:10;padding:2rem}._welcomeText_18jex_397{font-size:1rem;color:var(--gc-textMuted, #9999a8);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._choiceButtons_18jex_405{display:flex;flex-direction:column;gap:1.5rem}._choiceButton_18jex_405{padding:1.5rem 2rem;background:#6366f10d;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;text-align:left;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._choiceButton_18jex_405:nth-child(1){animation-delay:.5s}._choiceButton_18jex_405:nth-child(2){animation-delay:.8s}._choiceButton_18jex_405:hover{border-color:var(--gc-primary, #6366f1);background:#6366f11a;transform:translate(5px)}._choiceTitle_18jex_434{font-size:1.1rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem}._choiceDesc_18jex_440{font-size:.85rem;color:var(--gc-textMuted, #9999a8)}._arrow_18jex_445{float:right;color:var(--gc-primary, #6366f1)}@keyframes _fadeInUp_18jex_1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}._screenFadeIn_18jex_463{animation:_screenEnter_18jex_1 .6s ease forwards}@keyframes _screenEnter_18jex_1{0%{opacity:0}to{opacity:1}}')),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})(); +import Be, { useState as q, useEffect as Ae, useCallback as Ie } from "react"; +var ie = { exports: {} }, Y = {}; +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var De; +function _r() { + if (De) return Y; + De = 1; + var A = Be, y = Symbol.for("react.element"), m = Symbol.for("react.fragment"), R = Object.prototype.hasOwnProperty, b = A.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, C = { key: !0, ref: !0, __self: !0, __source: !0 }; + function O(T, d, S) { + var v, j = {}, p = null, I = null; + S !== void 0 && (p = "" + S), d.key !== void 0 && (p = "" + d.key), d.ref !== void 0 && (I = d.ref); + for (v in d) R.call(d, v) && !C.hasOwnProperty(v) && (j[v] = d[v]); + if (T && T.defaultProps) for (v in d = T.defaultProps, d) j[v] === void 0 && (j[v] = d[v]); + return { $$typeof: y, type: T, key: p, ref: I, props: j, _owner: b.current }; + } + return Y.Fragment = m, Y.jsx = O, Y.jsxs = O, Y; +} +var L = {}; +/** + * @license React + * react-jsx-runtime.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var Fe; +function gr() { + return Fe || (Fe = 1, process.env.NODE_ENV !== "production" && function() { + var A = Be, y = Symbol.for("react.element"), m = Symbol.for("react.portal"), R = Symbol.for("react.fragment"), b = Symbol.for("react.strict_mode"), C = Symbol.for("react.profiler"), O = Symbol.for("react.provider"), T = Symbol.for("react.context"), d = Symbol.for("react.forward_ref"), S = Symbol.for("react.suspense"), v = Symbol.for("react.suspense_list"), j = Symbol.for("react.memo"), p = Symbol.for("react.lazy"), I = Symbol.for("react.offscreen"), B = Symbol.iterator, oe = "@@iterator"; + function se(e) { + if (e === null || typeof e != "object") + return null; + var r = B && e[B] || e[oe]; + return typeof r == "function" ? r : null; + } + var k = A.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + function _(e) { + { + for (var r = arguments.length, t = new Array(r > 1 ? r - 1 : 0), i = 1; i < r; i++) + t[i - 1] = arguments[i]; + K("error", e, t); + } + } + function K(e, r, t) { + { + var i = k.ReactDebugCurrentFrame, c = i.getStackAddendum(); + c !== "" && (r += "%s", t = t.concat([c])); + var l = t.map(function(s) { + return String(s); + }); + l.unshift("Warning: " + r), Function.prototype.apply.call(console[e], console, l); + } + } + var E = !1, $ = !1, z = !1, X = !1, $e = !1, ce; + ce = Symbol.for("react.module.reference"); + function Me(e) { + return !!(typeof e == "string" || typeof e == "function" || e === R || e === C || $e || e === b || e === S || e === v || X || e === I || E || $ || z || typeof e == "object" && e !== null && (e.$$typeof === p || e.$$typeof === j || e.$$typeof === O || e.$$typeof === T || e.$$typeof === d || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + e.$$typeof === ce || e.getModuleId !== void 0)); + } + function We(e, r, t) { + var i = e.displayName; + if (i) + return i; + var c = r.displayName || r.name || ""; + return c !== "" ? t + "(" + c + ")" : t; + } + function le(e) { + return e.displayName || "Context"; + } + function w(e) { + if (e == null) + return null; + if (typeof e.tag == "number" && _("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof e == "function") + return e.displayName || e.name || null; + if (typeof e == "string") + return e; + switch (e) { + case R: + return "Fragment"; + case m: + return "Portal"; + case C: + return "Profiler"; + case b: + return "StrictMode"; + case S: + return "Suspense"; + case v: + return "SuspenseList"; + } + if (typeof e == "object") + switch (e.$$typeof) { + case T: + var r = e; + return le(r) + ".Consumer"; + case O: + var t = e; + return le(t._context) + ".Provider"; + case d: + return We(e, e.render, "ForwardRef"); + case j: + var i = e.displayName || null; + return i !== null ? i : w(e.type) || "Memo"; + case p: { + var c = e, l = c._payload, s = c._init; + try { + return w(s(l)); + } catch { + return null; + } + } + } + return null; + } + var N = Object.assign, M = 0, ue, fe, de, ve, _e, ge, he; + function me() { + } + me.__reactDisabledLog = !0; + function Ye() { + { + if (M === 0) { + ue = console.log, fe = console.info, de = console.warn, ve = console.error, _e = console.group, ge = console.groupCollapsed, he = console.groupEnd; + var e = { + configurable: !0, + enumerable: !0, + value: me, + writable: !0 + }; + Object.defineProperties(console, { + info: e, + log: e, + warn: e, + error: e, + group: e, + groupCollapsed: e, + groupEnd: e + }); + } + M++; + } + } + function Le() { + { + if (M--, M === 0) { + var e = { + configurable: !0, + enumerable: !0, + writable: !0 + }; + Object.defineProperties(console, { + log: N({}, e, { + value: ue + }), + info: N({}, e, { + value: fe + }), + warn: N({}, e, { + value: de + }), + error: N({}, e, { + value: ve + }), + group: N({}, e, { + value: _e + }), + groupCollapsed: N({}, e, { + value: ge + }), + groupEnd: N({}, e, { + value: he + }) + }); + } + M < 0 && _("disabledDepth fell below zero. This is a bug in React. Please file an issue."); + } + } + var H = k.ReactCurrentDispatcher, Z; + function U(e, r, t) { + { + if (Z === void 0) + try { + throw Error(); + } catch (c) { + var i = c.stack.trim().match(/\n( *(at )?)/); + Z = i && i[1] || ""; + } + return ` +` + Z + e; + } + } + var Q = !1, V; + { + var Ue = typeof WeakMap == "function" ? WeakMap : Map; + V = new Ue(); + } + function pe(e, r) { + if (!e || Q) + return ""; + { + var t = V.get(e); + if (t !== void 0) + return t; + } + var i; + Q = !0; + var c = Error.prepareStackTrace; + Error.prepareStackTrace = void 0; + var l; + l = H.current, H.current = null, Ye(); + try { + if (r) { + var s = function() { + throw Error(); + }; + if (Object.defineProperty(s.prototype, "props", { + set: function() { + throw Error(); + } + }), typeof Reflect == "object" && Reflect.construct) { + try { + Reflect.construct(s, []); + } catch (h) { + i = h; + } + Reflect.construct(e, [], s); + } else { + try { + s.call(); + } catch (h) { + i = h; + } + e.call(s.prototype); + } + } else { + try { + throw Error(); + } catch (h) { + i = h; + } + e(); + } + } catch (h) { + if (h && i && typeof h.stack == "string") { + for (var o = h.stack.split(` +`), g = i.stack.split(` +`), u = o.length - 1, f = g.length - 1; u >= 1 && f >= 0 && o[u] !== g[f]; ) + f--; + for (; u >= 1 && f >= 0; u--, f--) + if (o[u] !== g[f]) { + if (u !== 1 || f !== 1) + do + if (u--, f--, f < 0 || o[u] !== g[f]) { + var x = ` +` + o[u].replace(" at new ", " at "); + return e.displayName && x.includes("") && (x = x.replace("", e.displayName)), typeof e == "function" && V.set(e, x), x; + } + while (u >= 1 && f >= 0); + break; + } + } + } finally { + Q = !1, H.current = l, Le(), Error.prepareStackTrace = c; + } + var F = e ? e.displayName || e.name : "", P = F ? U(F) : ""; + return typeof e == "function" && V.set(e, P), P; + } + function Ve(e, r, t) { + return pe(e, !1); + } + function Ge(e) { + var r = e.prototype; + return !!(r && r.isReactComponent); + } + function G(e, r, t) { + if (e == null) + return ""; + if (typeof e == "function") + return pe(e, Ge(e)); + if (typeof e == "string") + return U(e); + switch (e) { + case S: + return U("Suspense"); + case v: + return U("SuspenseList"); + } + if (typeof e == "object") + switch (e.$$typeof) { + case d: + return Ve(e.render); + case j: + return G(e.type, r, t); + case p: { + var i = e, c = i._payload, l = i._init; + try { + return G(l(c), r, t); + } catch { + } + } + } + return ""; + } + var W = Object.prototype.hasOwnProperty, xe = {}, je = k.ReactDebugCurrentFrame; + function J(e) { + if (e) { + var r = e._owner, t = G(e.type, e._source, r ? r.type : null); + je.setExtraStackFrame(t); + } else + je.setExtraStackFrame(null); + } + function Je(e, r, t, i, c) { + { + var l = Function.call.bind(W); + for (var s in e) + if (l(e, s)) { + var o = void 0; + try { + if (typeof e[s] != "function") { + var g = Error((i || "React class") + ": " + t + " type `" + s + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof e[s] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."); + throw g.name = "Invariant Violation", g; + } + o = e[s](r, s, i, t, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); + } catch (u) { + o = u; + } + o && !(o instanceof Error) && (J(c), _("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", i || "React class", t, s, typeof o), J(null)), o instanceof Error && !(o.message in xe) && (xe[o.message] = !0, J(c), _("Failed %s type: %s", t, o.message), J(null)); + } + } + } + var qe = Array.isArray; + function ee(e) { + return qe(e); + } + function Ke(e) { + { + var r = typeof Symbol == "function" && Symbol.toStringTag, t = r && e[Symbol.toStringTag] || e.constructor.name || "Object"; + return t; + } + } + function ze(e) { + try { + return ye(e), !1; + } catch { + return !0; + } + } + function ye(e) { + return "" + e; + } + function be(e) { + if (ze(e)) + return _("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Ke(e)), ye(e); + } + var Te = k.ReactCurrentOwner, Xe = { + key: !0, + ref: !0, + __self: !0, + __source: !0 + }, Ee, Re; + function He(e) { + if (W.call(e, "ref")) { + var r = Object.getOwnPropertyDescriptor(e, "ref").get; + if (r && r.isReactWarning) + return !1; + } + return e.ref !== void 0; + } + function Ze(e) { + if (W.call(e, "key")) { + var r = Object.getOwnPropertyDescriptor(e, "key").get; + if (r && r.isReactWarning) + return !1; + } + return e.key !== void 0; + } + function Qe(e, r) { + typeof e.ref == "string" && Te.current; + } + function er(e, r) { + { + var t = function() { + Ee || (Ee = !0, _("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", r)); + }; + t.isReactWarning = !0, Object.defineProperty(e, "key", { + get: t, + configurable: !0 + }); + } + } + function rr(e, r) { + { + var t = function() { + Re || (Re = !0, _("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", r)); + }; + t.isReactWarning = !0, Object.defineProperty(e, "ref", { + get: t, + configurable: !0 + }); + } + } + var tr = function(e, r, t, i, c, l, s) { + var o = { + // This tag allows us to uniquely identify this as a React Element + $$typeof: y, + // Built-in properties that belong on the element + type: e, + key: r, + ref: t, + props: s, + // Record the component responsible for creating this element. + _owner: l + }; + return o._store = {}, Object.defineProperty(o._store, "validated", { + configurable: !1, + enumerable: !1, + writable: !0, + value: !1 + }), Object.defineProperty(o, "_self", { + configurable: !1, + enumerable: !1, + writable: !1, + value: i + }), Object.defineProperty(o, "_source", { + configurable: !1, + enumerable: !1, + writable: !1, + value: c + }), Object.freeze && (Object.freeze(o.props), Object.freeze(o)), o; + }; + function nr(e, r, t, i, c) { + { + var l, s = {}, o = null, g = null; + t !== void 0 && (be(t), o = "" + t), Ze(r) && (be(r.key), o = "" + r.key), He(r) && (g = r.ref, Qe(r, c)); + for (l in r) + W.call(r, l) && !Xe.hasOwnProperty(l) && (s[l] = r[l]); + if (e && e.defaultProps) { + var u = e.defaultProps; + for (l in u) + s[l] === void 0 && (s[l] = u[l]); + } + if (o || g) { + var f = typeof e == "function" ? e.displayName || e.name || "Unknown" : e; + o && er(s, f), g && rr(s, f); + } + return tr(e, o, g, c, i, Te.current, s); + } + } + var re = k.ReactCurrentOwner, Ce = k.ReactDebugCurrentFrame; + function D(e) { + if (e) { + var r = e._owner, t = G(e.type, e._source, r ? r.type : null); + Ce.setExtraStackFrame(t); + } else + Ce.setExtraStackFrame(null); + } + var te; + te = !1; + function ne(e) { + return typeof e == "object" && e !== null && e.$$typeof === y; + } + function Oe() { + { + if (re.current) { + var e = w(re.current.type); + if (e) + return ` + +Check the render method of \`` + e + "`."; + } + return ""; + } + } + function ar(e) { + return ""; + } + var Se = {}; + function ir(e) { + { + var r = Oe(); + if (!r) { + var t = typeof e == "string" ? e : e.displayName || e.name; + t && (r = ` + +Check the top-level render call using <` + t + ">."); + } + return r; + } + } + function we(e, r) { + { + if (!e._store || e._store.validated || e.key != null) + return; + e._store.validated = !0; + var t = ir(r); + if (Se[t]) + return; + Se[t] = !0; + var i = ""; + e && e._owner && e._owner !== re.current && (i = " It was passed a child from " + w(e._owner.type) + "."), D(e), _('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', t, i), D(null); + } + } + function ke(e, r) { + { + if (typeof e != "object") + return; + if (ee(e)) + for (var t = 0; t < e.length; t++) { + var i = e[t]; + ne(i) && we(i, r); + } + else if (ne(e)) + e._store && (e._store.validated = !0); + else if (e) { + var c = se(e); + if (typeof c == "function" && c !== e.entries) + for (var l = c.call(e), s; !(s = l.next()).done; ) + ne(s.value) && we(s.value, r); + } + } + } + function or(e) { + { + var r = e.type; + if (r == null || typeof r == "string") + return; + var t; + if (typeof r == "function") + t = r.propTypes; + else if (typeof r == "object" && (r.$$typeof === d || // Note: Memo only checks outer props here. + // Inner props are checked in the reconciler. + r.$$typeof === j)) + t = r.propTypes; + else + return; + if (t) { + var i = w(r); + Je(t, e.props, "prop", i, e); + } else if (r.PropTypes !== void 0 && !te) { + te = !0; + var c = w(r); + _("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", c || "Unknown"); + } + typeof r.getDefaultProps == "function" && !r.getDefaultProps.isReactClassApproved && _("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead."); + } + } + function sr(e) { + { + for (var r = Object.keys(e.props), t = 0; t < r.length; t++) { + var i = r[t]; + if (i !== "children" && i !== "key") { + D(e), _("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", i), D(null); + break; + } + } + e.ref !== null && (D(e), _("Invalid attribute `ref` supplied to `React.Fragment`."), D(null)); + } + } + var Ne = {}; + function Pe(e, r, t, i, c, l) { + { + var s = Me(e); + if (!s) { + var o = ""; + (e === void 0 || typeof e == "object" && e !== null && Object.keys(e).length === 0) && (o += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."); + var g = ar(); + g ? o += g : o += Oe(); + var u; + e === null ? u = "null" : ee(e) ? u = "array" : e !== void 0 && e.$$typeof === y ? (u = "<" + (w(e.type) || "Unknown") + " />", o = " Did you accidentally export a JSX literal instead of a component?") : u = typeof e, _("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", u, o); + } + var f = nr(e, r, t, c, l); + if (f == null) + return f; + if (s) { + var x = r.children; + if (x !== void 0) + if (i) + if (ee(x)) { + for (var F = 0; F < x.length; F++) + ke(x[F], e); + Object.freeze && Object.freeze(x); + } else + _("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."); + else + ke(x, e); + } + if (W.call(r, "key")) { + var P = w(e), h = Object.keys(r).filter(function(vr) { + return vr !== "key"; + }), ae = h.length > 0 ? "{key: someKey, " + h.join(": ..., ") + ": ...}" : "{key: someKey}"; + if (!Ne[P + ae]) { + var dr = h.length > 0 ? "{" + h.join(": ..., ") + ": ...}" : "{}"; + _(`A props object containing a "key" prop is being spread into JSX: + let props = %s; + <%s {...props} /> +React keys must be passed directly to JSX without using spread: + let props = %s; + <%s key={someKey} {...props} />`, ae, P, dr, P), Ne[P + ae] = !0; + } + } + return e === R ? sr(f) : or(f), f; + } + } + function cr(e, r, t) { + return Pe(e, r, t, !0); + } + function lr(e, r, t) { + return Pe(e, r, t, !1); + } + var ur = lr, fr = cr; + L.Fragment = R, L.jsx = ur, L.jsxs = fr; + }()), L; +} +process.env.NODE_ENV === "production" ? ie.exports = _r() : ie.exports = gr(); +var a = ie.exports; +const hr = "_container_18jex_3", mr = "_grid_18jex_18", pr = "_textBlock_18jex_34", xr = "_mainText_18jex_41", jr = "_delayed_18jex_50", yr = "_sphere_18jex_63", br = "_glitching_18jex_82", Tr = "_voxelOverlay_18jex_113", Er = "_visible_18jex_122", Rr = "_voxel_18jex_113", Cr = "_rebelText_18jex_137", Or = "_enterButton_18jex_146", Sr = "_migrationContent_18jex_168", wr = "_tagline_18jex_175", kr = "_notList_18jex_183", Nr = "_notItem_18jex_190", Pr = "_isText_18jex_212", Ar = "_ruleBox_18jex_221", Ir = "_ruleTitle_18jex_231", Dr = "_ruleContent_18jex_238", Fr = "_continueButton_18jex_244", Br = "_agreementContent_18jex_265", $r = "_agreementTitle_18jex_272", Mr = "_pledgeText_18jex_280", Wr = "_signatureArea_18jex_293", Yr = "_paper_18jex_302", Lr = "_signatureMark_18jex_313", Ur = "_pencil_18jex_339", Vr = "_animating_18jex_346", Gr = "_signButton_18jex_365", Jr = "_navigationContent_18jex_390", qr = "_welcomeText_18jex_397", Kr = "_choiceButtons_18jex_405", zr = "_choiceButton_18jex_405", Xr = "_choiceTitle_18jex_434", Hr = "_choiceDesc_18jex_440", Zr = "_arrow_18jex_445", Qr = "_screenFadeIn_18jex_463", n = { + container: hr, + grid: mr, + textBlock: pr, + mainText: xr, + delayed: jr, + sphere: yr, + glitching: br, + voxelOverlay: Tr, + visible: Er, + voxel: Rr, + rebelText: Cr, + enterButton: Or, + migrationContent: Sr, + tagline: wr, + notList: kr, + notItem: Nr, + isText: Pr, + ruleBox: Ar, + ruleTitle: Ir, + ruleContent: Dr, + continueButton: Fr, + agreementContent: Br, + agreementTitle: $r, + pledgeText: Mr, + signatureArea: Wr, + paper: Yr, + signatureMark: Lr, + pencil: Ur, + animating: Vr, + signButton: Gr, + navigationContent: Jr, + welcomeText: qr, + choiceButtons: Kr, + choiceButton: zr, + choiceTitle: Xr, + choiceDesc: Hr, + arrow: Zr, + screenFadeIn: Qr +}; +function rt({ + onComplete: A, + onProgress: y, + theme: m, + className: R +}) { + const [b, C] = q("disorientation"), [O, T] = q(!1), [d, S] = q(!1), [v, j] = q(!1), p = m ? { + "--gc-primary": m.primary, + "--gc-accent": m.accent, + "--gc-bg": m.bg, + "--gc-bgSecondary": m.bgSecondary, + "--gc-text": m.text, + "--gc-textMuted": m.textMuted, + "--gc-border": m.border + } : {}; + Ae(() => { + const E = { + disorientation: 25, + migration: 50, + agreement: 75, + navigation: 100 + }; + y == null || y(E[b]); + }, [b, y]), Ae(() => { + if (b !== "disorientation") return; + const E = () => { + T(!0), setTimeout(() => T(!1), 150); + }, $ = setTimeout(E, 4e3), z = setInterval(() => { + const X = Math.random() * 3e3 + 3e3; + setTimeout(E, X); + }, 6e3); + return () => { + clearTimeout($), clearInterval(z); + }; + }, [b]); + const I = Ie(() => { + S(!0), setTimeout(() => { + j(!0), setTimeout(() => { + C("navigation"); + }, 1e3); + }, 800); + }, []), B = Ie((E) => { + A({ + success: !0, + data: { + choice: E, + agreedToTerms: !0 + }, + rewards: { + achievements: ["onboarding_complete"], + unlocks: E === "lesson" ? ["tech_tree"] : ["character_builder"] + } + }); + }, [A]), K = { + disorientation: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.textBlock, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.mainText, children: "You are standing on a smooth sphere. It looks continuous. It feels continuous." }), + /* @__PURE__ */ a.jsx("div", { className: n.sphere + (O ? ` ${n.glitching}` : ""), children: /* @__PURE__ */ a.jsx("div", { className: n.voxelOverlay + (O ? ` ${n.visible}` : ""), children: Array.from({ length: 36 }).map((E, $) => /* @__PURE__ */ a.jsx("div", { className: n.voxel, style: { + opacity: Math.random() > 0.5 ? 0.8 : 0 + } }, $)) }) }), + /* @__PURE__ */ a.jsx("p", { className: `${n.mainText} ${n.delayed}`, children: "But what if it isn't?" }), + /* @__PURE__ */ a.jsxs("p", { className: n.rebelText, children: [ + "Most people assume the universe is continuous.", + /* @__PURE__ */ a.jsx("br", {}), + "We're not most people." + ] }), + /* @__PURE__ */ a.jsx( + "button", + { + className: n.enterButton, + onClick: () => C("migration"), + children: "Enter the Glitch" + } + ) + ] }) + ] }), + migration: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.migrationContent, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.tagline, children: "A migration project for physics. That might fail. Or not." }), + /* @__PURE__ */ a.jsxs("ul", { className: n.notList, children: [ + /* @__PURE__ */ a.jsx("li", { className: n.notItem, children: "This is not a fringe physics forum." }), + /* @__PURE__ */ a.jsx("li", { className: n.notItem, children: "This is not an online RPG." }), + /* @__PURE__ */ a.jsx("li", { className: n.notItem, children: "This is not a lecture series in philosophy, physics and computer science." }) + ] }), + /* @__PURE__ */ a.jsx("p", { className: n.isText, children: "It's all of those things." }), + /* @__PURE__ */ a.jsxs("div", { className: n.ruleBox, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.ruleTitle, children: "RULE 1" }), + /* @__PURE__ */ a.jsxs("div", { className: n.ruleContent, children: [ + "Nothing is obvious. Show it.", + /* @__PURE__ */ a.jsx("br", {}), + "Predictions matter more than opinions." + ] }) + ] }), + /* @__PURE__ */ a.jsx( + "button", + { + className: n.continueButton, + onClick: () => C("agreement"), + children: "Continue →" + } + ) + ] }) + ] }), + agreement: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.agreementContent, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.agreementTitle, children: "Make your mark and sign here" }), + /* @__PURE__ */ a.jsx("div", { className: n.pledgeText, children: '"I agree to test ideas against reality"' }), + /* @__PURE__ */ a.jsxs("div", { className: n.signatureArea, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.paper, children: /* @__PURE__ */ a.jsx("span", { className: n.signatureMark + (v ? ` ${n.visible}` : ""), children: "✕" }) }), + /* @__PURE__ */ a.jsx("span", { className: n.pencil + (d ? ` ${n.animating}` : ""), children: "✏️" }) + ] }), + !v && /* @__PURE__ */ a.jsx( + "button", + { + className: n.signButton, + onClick: I, + disabled: d, + children: "Sign" + } + ) + ] }) + ] }), + navigation: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.navigationContent, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.welcomeText, children: "Welcome to the Glitch. What would you like to do?" }), + /* @__PURE__ */ a.jsxs("div", { className: n.choiceButtons, children: [ + /* @__PURE__ */ a.jsxs( + "button", + { + className: n.choiceButton, + onClick: () => B("lesson"), + children: [ + /* @__PURE__ */ a.jsxs("div", { className: n.choiceTitle, children: [ + "Take me to the first lesson ", + /* @__PURE__ */ a.jsx("span", { className: n.arrow, children: "→" }) + ] }), + /* @__PURE__ */ a.jsx("div", { className: n.choiceDesc, children: "Opens the tech tree and begins your journey" }) + ] + } + ), + /* @__PURE__ */ a.jsxs( + "button", + { + className: n.choiceButton, + onClick: () => B("character"), + children: [ + /* @__PURE__ */ a.jsxs("div", { className: n.choiceTitle, children: [ + "Build my character first ", + /* @__PURE__ */ a.jsx("span", { className: n.arrow, children: "→" }) + ] }), + /* @__PURE__ */ a.jsx("div", { className: n.choiceDesc, children: "Customize your presence in the Glitch" }) + ] + } + ) + ] }) + ] }) + ] }) + }; + return /* @__PURE__ */ a.jsx("div", { className: R, children: K[b]() }); +} +const tt = { + name: "onboarding", + version: "1.0.0", + displayName: "Glitch University Onboarding", + description: "Multi-screen onboarding experience introducing users to the Glitch universe", + author: "Glitch.university", + paramSchema: {}, + tags: ["onboarding", "intro", "welcome"] +}; +export { + rt as OnboardingComponent, + rt as default, + tt as metadata +}; +//# sourceMappingURL=onboarding.js.map diff --git a/dist/vendor/glitch/glitch_onboarding/onboarding.js.map b/dist/vendor/glitch/glitch_onboarding/onboarding.js.map new file mode 100644 index 0000000..b9d5e06 --- /dev/null +++ b/dist/vendor/glitch/glitch_onboarding/onboarding.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onboarding.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/OnboardingComponent.tsx","../src/index.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie.
\n // or
). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n //
, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n {\n if (hasOwnProperty.call(props, 'key')) {\n var componentName = getComponentNameFromType(type);\n var keys = Object.keys(props).filter(function (k) {\n return k !== 'key';\n });\n var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n error('A props object containing a \"key\" prop is being spread into JSX:\\n' + ' let props = %s;\\n' + ' <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + ' let props = %s;\\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n didWarnAboutKeySpread[componentName + beforeExample] = true;\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport type { GlitchComponentProps, OnboardingScreen } from './types'\nimport styles from './styles.module.css'\n\nexport function OnboardingComponent({\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const [currentScreen, setCurrentScreen] = useState('disorientation')\n const [sphereGlitching, setSphereGlitching] = useState(false)\n const [signatureAnimating, setSignatureAnimating] = useState(false)\n const [hasAgreed, setHasAgreed] = useState(false)\n\n // Apply theme as CSS variables\n const themeStyle = theme ? {\n '--gc-primary': theme.primary,\n '--gc-accent': theme.accent,\n '--gc-bg': theme.bg,\n '--gc-bgSecondary': theme.bgSecondary,\n '--gc-text': theme.text,\n '--gc-textMuted': theme.textMuted,\n '--gc-border': theme.border,\n } as React.CSSProperties : {}\n\n // Progress tracking\n useEffect(() => {\n const progressMap: Record = {\n disorientation: 25,\n migration: 50,\n agreement: 75,\n navigation: 100\n }\n onProgress?.(progressMap[currentScreen])\n }, [currentScreen, onProgress])\n\n // Sphere glitch effect on Screen 1\n useEffect(() => {\n if (currentScreen !== 'disorientation') return\n\n const triggerGlitch = () => {\n setSphereGlitching(true)\n setTimeout(() => setSphereGlitching(false), 150)\n }\n\n // First glitch after 4 seconds\n const initialTimeout = setTimeout(triggerGlitch, 4000)\n\n // Random glitches every 3-6 seconds\n const interval = setInterval(() => {\n const delay = Math.random() * 3000 + 3000\n setTimeout(triggerGlitch, delay)\n }, 6000)\n\n return () => {\n clearTimeout(initialTimeout)\n clearInterval(interval)\n }\n }, [currentScreen])\n\n const handleSign = useCallback(() => {\n setSignatureAnimating(true)\n setTimeout(() => {\n setHasAgreed(true)\n setTimeout(() => {\n setCurrentScreen('navigation')\n }, 1000)\n }, 800)\n }, [])\n\n const handleComplete = useCallback((choice: 'lesson' | 'character') => {\n onComplete({\n success: true,\n data: {\n choice,\n agreedToTerms: true\n },\n rewards: {\n achievements: ['onboarding_complete'],\n unlocks: choice === 'lesson' ? ['tech_tree'] : ['character_builder']\n }\n })\n }, [onComplete])\n\n // Screen 1: The Disorientation\n const renderDisorientation = () => (\n
\n
\n\n
\n

\n You are standing on a smooth sphere. It looks continuous. It feels continuous.\n

\n\n
\n
\n {Array.from({ length: 36 }).map((_, i) => (\n
0.5 ? 0.8 : 0\n }} />\n ))}\n
\n
\n\n

\n But what if it isn't?\n

\n\n

\n Most people assume the universe is continuous.
\n We're not most people.\n

\n\n setCurrentScreen('migration')}\n >\n Enter the Glitch\n \n
\n
\n )\n\n // Screen 2: Migration Description\n const renderMigration = () => (\n
\n
\n\n
\n

\n A migration project for physics. That might fail. Or not.\n

\n\n
    \n
  • This is not a fringe physics forum.
  • \n
  • This is not an online RPG.
  • \n
  • This is not a lecture series in philosophy, physics and computer science.
  • \n
\n\n

\n It's all of those things.\n

\n\n
\n
RULE 1
\n
\n Nothing is obvious. Show it.
\n Predictions matter more than opinions.\n
\n
\n\n setCurrentScreen('agreement')}\n >\n Continue →\n \n
\n
\n )\n\n // Screen 3: Agreement\n const renderAgreement = () => (\n
\n
\n\n
\n

\n Make your mark and sign here\n

\n\n
\n \"I agree to test ideas against reality\"\n
\n\n
\n
\n \n ✕\n \n
\n \n ✏️\n \n
\n\n {!hasAgreed && (\n \n Sign\n \n )}\n
\n
\n )\n\n // Screen 4: Navigation\n const renderNavigation = () => (\n
\n
\n\n
\n

\n Welcome to the Glitch. What would you like to do?\n

\n\n
\n handleComplete('lesson')}\n >\n
\n Take me to the first lesson \n
\n
\n Opens the tech tree and begins your journey\n
\n \n\n handleComplete('character')}\n >\n
\n Build my character first \n
\n
\n Customize your presence in the Glitch\n
\n \n
\n
\n
\n )\n\n // Render current screen\n const screenRenderers: Record JSX.Element> = {\n disorientation: renderDisorientation,\n migration: renderMigration,\n agreement: renderAgreement,\n navigation: renderNavigation\n }\n\n return (\n
\n {screenRenderers[currentScreen]()}\n
\n )\n}\n","import { OnboardingComponent } from './OnboardingComponent'\nimport type { GlitchComponentProps, GlitchComponentResult } from './types'\n\nexport { OnboardingComponent }\nexport type { GlitchComponentProps, GlitchComponentResult }\n\nexport const metadata = {\n name: 'onboarding',\n version: '1.0.0',\n displayName: 'Glitch University Onboarding',\n description: 'Multi-screen onboarding experience introducing users to the Glitch universe',\n author: 'Glitch.university',\n paramSchema: {},\n tags: ['onboarding', 'intro', 'welcome']\n}\n\nexport default OnboardingComponent\n"],"names":["f","require$$0","k","l","m","n","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min","React","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","args","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","props","reenableLogs","ReactCurrentDispatcher","prefix","describeBuiltInComponentFrame","name","source","ownerFn","x","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","Component","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","value","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","key","ref","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","didWarnAboutKeySpread","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","children","beforeExample","afterExample","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","require$$1","OnboardingComponent","onComplete","onProgress","theme","className","currentScreen","setCurrentScreen","useState","sphereGlitching","setSphereGlitching","signatureAnimating","setSignatureAnimating","hasAgreed","setHasAgreed","themeStyle","useEffect","progressMap","triggerGlitch","initialTimeout","interval","delay","handleSign","useCallback","handleComplete","choice","screenRenderers","styles","_","metadata"],"mappings":";;;;;;;;;;;;;;;AASa,MAAIA,IAAEC,IAAiBC,IAAE,OAAO,IAAI,eAAe,GAAEC,IAAE,OAAO,IAAI,gBAAgB,GAAEC,IAAE,OAAO,UAAU,gBAAeC,IAAEL,EAAE,mDAAmD,mBAAkBM,IAAE,EAAC,KAAI,IAAG,KAAI,IAAG,QAAO,IAAG,UAAS,GAAE;AAClP,WAASC,EAAEC,GAAEC,GAAEC,GAAE;AAAC,QAAIC,GAAEC,IAAE,CAAA,GAAGC,IAAE,MAAKC,IAAE;AAAK,IAASJ,MAAT,WAAaG,IAAE,KAAGH,IAAYD,EAAE,QAAX,WAAiBI,IAAE,KAAGJ,EAAE,MAAcA,EAAE,QAAX,WAAiBK,IAAEL,EAAE;AAAK,SAAIE,KAAKF,EAAE,CAAAL,EAAE,KAAKK,GAAEE,CAAC,KAAG,CAACL,EAAE,eAAeK,CAAC,MAAIC,EAAED,CAAC,IAAEF,EAAEE,CAAC;AAAG,QAAGH,KAAGA,EAAE,aAAa,MAAIG,KAAKF,IAAED,EAAE,cAAaC,EAAE,CAASG,EAAED,CAAC,MAAZ,WAAgBC,EAAED,CAAC,IAAEF,EAAEE,CAAC;AAAG,WAAM,EAAC,UAAST,GAAE,MAAKM,GAAE,KAAIK,GAAE,KAAIC,GAAE,OAAMF,GAAE,QAAOP,EAAE,QAAO;AAAA,EAAC;AAAC,SAAAU,aAAiBZ,GAAEY,EAAA,MAAYR,GAAEQ,EAAA,OAAaR;;;;;;;;;;;;;;wBCEtW,QAAQ,IAAI,aAAa,gBAC1B,WAAW;AAGd,QAAIS,IAAQf,IAMRgB,IAAqB,OAAO,IAAI,eAAe,GAC/CC,IAAoB,OAAO,IAAI,cAAc,GAC7CC,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAAyB,OAAO,IAAI,mBAAmB,GACvDC,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAAqB,OAAO,IAAI,eAAe,GAC/CC,IAAyB,OAAO,IAAI,mBAAmB,GACvDC,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAA2B,OAAO,IAAI,qBAAqB,GAC3DC,IAAkB,OAAO,IAAI,YAAY,GACzCC,IAAkB,OAAO,IAAI,YAAY,GACzCC,IAAuB,OAAO,IAAI,iBAAiB,GACnDC,IAAwB,OAAO,UAC/BC,KAAuB;AAC3B,aAASC,GAAcC,GAAe;AACpC,UAAIA,MAAkB,QAAQ,OAAOA,KAAkB;AACrD,eAAO;AAGT,UAAIC,IAAgBJ,KAAyBG,EAAcH,CAAqB,KAAKG,EAAcF,EAAoB;AAEvH,aAAI,OAAOG,KAAkB,aACpBA,IAGF;AAAA,IACT;AAEA,QAAIC,IAAuBnB,EAAM;AAEjC,aAASoB,EAAMC,GAAQ;AAEnB;AACE,iBAASC,IAAQ,UAAU,QAAQC,IAAO,IAAI,MAAMD,IAAQ,IAAIA,IAAQ,IAAI,CAAC,GAAGE,IAAQ,GAAGA,IAAQF,GAAOE;AACxG,UAAAD,EAAKC,IAAQ,CAAC,IAAI,UAAUA,CAAK;AAGnC,QAAAC,EAAa,SAASJ,GAAQE,CAAI;AAAA,MACxC;AAAA,IAEA;AAEA,aAASE,EAAaC,GAAOL,GAAQE,GAAM;AAGzC;AACE,YAAII,IAAyBR,EAAqB,wBAC9CS,IAAQD,EAAuB,iBAAgB;AAEnD,QAAIC,MAAU,OACZP,KAAU,MACVE,IAAOA,EAAK,OAAO,CAACK,CAAK,CAAC;AAI5B,YAAIC,IAAiBN,EAAK,IAAI,SAAUO,GAAM;AAC5C,iBAAO,OAAOA,CAAI;AAAA,QACxB,CAAK;AAED,QAAAD,EAAe,QAAQ,cAAcR,CAAM,GAI3C,SAAS,UAAU,MAAM,KAAK,QAAQK,CAAK,GAAG,SAASG,CAAc;AAAA,MACzE;AAAA,IACA;AAIA,QAAIE,IAAiB,IACjBC,IAAqB,IACrBC,IAA0B,IAE1BC,IAAqB,IAIrBC,KAAqB,IAErBC;AAGF,IAAAA,KAAyB,OAAO,IAAI,wBAAwB;AAG9D,aAASC,GAAmBC,GAAM;AAUhC,aATI,UAAOA,KAAS,YAAY,OAAOA,KAAS,cAK5CA,MAASnC,KAAuBmC,MAASjC,KAAuB8B,MAAuBG,MAASlC,KAA0BkC,MAAS7B,KAAuB6B,MAAS5B,KAA4BwB,KAAuBI,MAASzB,KAAwBkB,KAAmBC,KAAuBC,KAIjS,OAAOK,KAAS,YAAYA,MAAS,SACnCA,EAAK,aAAa1B,KAAmB0B,EAAK,aAAa3B,KAAmB2B,EAAK,aAAahC,KAAuBgC,EAAK,aAAa/B,KAAsB+B,EAAK,aAAa9B;AAAA;AAAA;AAAA;AAAA,MAIjL8B,EAAK,aAAaF,MAA0BE,EAAK,gBAAgB;AAAA,IAMrE;AAEA,aAASC,GAAeC,GAAWC,GAAWC,GAAa;AACzD,UAAIC,IAAcH,EAAU;AAE5B,UAAIG;AACF,eAAOA;AAGT,UAAIC,IAAeH,EAAU,eAAeA,EAAU,QAAQ;AAC9D,aAAOG,MAAiB,KAAKF,IAAc,MAAME,IAAe,MAAMF;AAAA,IACxE;AAGA,aAASG,GAAeP,GAAM;AAC5B,aAAOA,EAAK,eAAe;AAAA,IAC7B;AAGA,aAASQ,EAAyBR,GAAM;AACtC,UAAIA,KAAQ;AAEV,eAAO;AAST,UALM,OAAOA,EAAK,OAAQ,YACtBlB,EAAM,mHAAwH,GAI9H,OAAOkB,KAAS;AAClB,eAAOA,EAAK,eAAeA,EAAK,QAAQ;AAG1C,UAAI,OAAOA,KAAS;AAClB,eAAOA;AAGT,cAAQA,GAAI;AAAA,QACV,KAAKnC;AACH,iBAAO;AAAA,QAET,KAAKD;AACH,iBAAO;AAAA,QAET,KAAKG;AACH,iBAAO;AAAA,QAET,KAAKD;AACH,iBAAO;AAAA,QAET,KAAKK;AACH,iBAAO;AAAA,QAET,KAAKC;AACH,iBAAO;AAAA;AAIX,UAAI,OAAO4B,KAAS;AAClB,gBAAQA,EAAK,UAAQ;AAAA,UACnB,KAAK/B;AACH,gBAAIwC,IAAUT;AACd,mBAAOO,GAAeE,CAAO,IAAI;AAAA,UAEnC,KAAKzC;AACH,gBAAI0C,IAAWV;AACf,mBAAOO,GAAeG,EAAS,QAAQ,IAAI;AAAA,UAE7C,KAAKxC;AACH,mBAAO+B,GAAeD,GAAMA,EAAK,QAAQ,YAAY;AAAA,UAEvD,KAAK3B;AACH,gBAAIsC,IAAYX,EAAK,eAAe;AAEpC,mBAAIW,MAAc,OACTA,IAGFH,EAAyBR,EAAK,IAAI,KAAK;AAAA,UAEhD,KAAK1B,GACH;AACE,gBAAIsC,IAAgBZ,GAChBa,IAAUD,EAAc,UACxBE,IAAOF,EAAc;AAEzB,gBAAI;AACF,qBAAOJ,EAAyBM,EAAKD,CAAO,CAAC;AAAA,YACzD,QAAsB;AACV,qBAAO;AAAA,YACnB;AAAA,UACA;AAAA;AAME,aAAO;AAAA,IACT;AAEA,QAAIE,IAAS,OAAO,QAMhBC,IAAgB,GAChBC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC;AAEJ,aAASC,KAAc;AAAA,IAAA;AAEvB,IAAAA,GAAY,qBAAqB;AACjC,aAASC,KAAc;AACrB;AACE,YAAIT,MAAkB,GAAG;AAEvB,UAAAC,KAAU,QAAQ,KAClBC,KAAW,QAAQ,MACnBC,KAAW,QAAQ,MACnBC,KAAY,QAAQ,OACpBC,KAAY,QAAQ,OACpBC,KAAqB,QAAQ,gBAC7BC,KAAe,QAAQ;AAEvB,cAAIG,IAAQ;AAAA,YACV,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,OAAOF;AAAA,YACP,UAAU;AAAA,UAClB;AAEM,iBAAO,iBAAiB,SAAS;AAAA,YAC/B,MAAME;AAAA,YACN,KAAKA;AAAA,YACL,MAAMA;AAAA,YACN,OAAOA;AAAA,YACP,OAAOA;AAAA,YACP,gBAAgBA;AAAA,YAChB,UAAUA;AAAA,UAClB,CAAO;AAAA,QAEP;AAEI,QAAAV;AAAA,MACJ;AAAA,IACA;AACA,aAASW,KAAe;AACtB;AAGE,YAFAX,KAEIA,MAAkB,GAAG;AAEvB,cAAIU,IAAQ;AAAA,YACV,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,UAAU;AAAA,UAClB;AAEM,iBAAO,iBAAiB,SAAS;AAAA,YAC/B,KAAKX,EAAO,CAAA,GAAIW,GAAO;AAAA,cACrB,OAAOT;AAAA,YACjB,CAAS;AAAA,YACD,MAAMF,EAAO,CAAA,GAAIW,GAAO;AAAA,cACtB,OAAOR;AAAA,YACjB,CAAS;AAAA,YACD,MAAMH,EAAO,CAAA,GAAIW,GAAO;AAAA,cACtB,OAAOP;AAAA,YACjB,CAAS;AAAA,YACD,OAAOJ,EAAO,CAAA,GAAIW,GAAO;AAAA,cACvB,OAAON;AAAA,YACjB,CAAS;AAAA,YACD,OAAOL,EAAO,CAAA,GAAIW,GAAO;AAAA,cACvB,OAAOL;AAAA,YACjB,CAAS;AAAA,YACD,gBAAgBN,EAAO,CAAA,GAAIW,GAAO;AAAA,cAChC,OAAOJ;AAAA,YACjB,CAAS;AAAA,YACD,UAAUP,EAAO,CAAA,GAAIW,GAAO;AAAA,cAC1B,OAAOH;AAAA,YACjB,CAAS;AAAA,UACT,CAAO;AAAA,QAEP;AAEI,QAAIP,IAAgB,KAClBlC,EAAM,8EAAmF;AAAA,MAE/F;AAAA,IACA;AAEA,QAAI8C,IAAyB/C,EAAqB,wBAC9CgD;AACJ,aAASC,EAA8BC,GAAMC,GAAQC,GAAS;AAC5D;AACE,YAAIJ,MAAW;AAEb,cAAI;AACF,kBAAM,MAAK;AAAA,UACnB,SAAeK,GAAG;AACV,gBAAIC,IAAQD,EAAE,MAAM,KAAI,EAAG,MAAM,cAAc;AAC/C,YAAAL,IAASM,KAASA,EAAM,CAAC,KAAK;AAAA,UACtC;AAII,eAAO;AAAA,IAAON,IAASE;AAAA,MAC3B;AAAA,IACA;AACA,QAAIK,IAAU,IACVC;AAEJ;AACE,UAAIC,KAAkB,OAAO,WAAY,aAAa,UAAU;AAChE,MAAAD,IAAsB,IAAIC,GAAe;AAAA,IAC3C;AAEA,aAASC,GAA6BC,GAAIC,GAAW;AAEnD,UAAK,CAACD,KAAMJ;AACV,eAAO;AAGT;AACE,YAAIM,IAAQL,EAAoB,IAAIG,CAAE;AAEtC,YAAIE,MAAU;AACZ,iBAAOA;AAAA,MAEb;AAEE,UAAIC;AACJ,MAAAP,IAAU;AACV,UAAIQ,IAA4B,MAAM;AAEtC,YAAM,oBAAoB;AAC1B,UAAIC;AAGF,MAAAA,IAAqBjB,EAAuB,SAG5CA,EAAuB,UAAU,MACjCH,GAAW;AAGb,UAAI;AAEF,YAAIgB,GAAW;AAEb,cAAIK,IAAO,WAAY;AACrB,kBAAM,MAAK;AAAA,UACnB;AAWM,cARA,OAAO,eAAeA,EAAK,WAAW,SAAS;AAAA,YAC7C,KAAK,WAAY;AAGf,oBAAM,MAAK;AAAA,YACrB;AAAA,UACA,CAAO,GAEG,OAAO,WAAY,YAAY,QAAQ,WAAW;AAGpD,gBAAI;AACF,sBAAQ,UAAUA,GAAM,EAAE;AAAA,YACpC,SAAiBZ,GAAG;AACV,cAAAS,IAAUT;AAAA,YACpB;AAEQ,oBAAQ,UAAUM,GAAI,CAAA,GAAIM,CAAI;AAAA,UACtC,OAAa;AACL,gBAAI;AACF,cAAAA,EAAK,KAAI;AAAA,YACnB,SAAiBZ,GAAG;AACV,cAAAS,IAAUT;AAAA,YACpB;AAEQ,YAAAM,EAAG,KAAKM,EAAK,SAAS;AAAA,UAC9B;AAAA,QACA,OAAW;AACL,cAAI;AACF,kBAAM,MAAK;AAAA,UACnB,SAAeZ,GAAG;AACV,YAAAS,IAAUT;AAAA,UAClB;AAEM,UAAAM,EAAE;AAAA,QACR;AAAA,MACA,SAAWO,GAAQ;AAEf,YAAIA,KAAUJ,KAAW,OAAOI,EAAO,SAAU,UAAU;AAQzD,mBALIC,IAAcD,EAAO,MAAM,MAAM;AAAA,CAAI,GACrCE,IAAeN,EAAQ,MAAM,MAAM;AAAA,CAAI,GACvCO,IAAIF,EAAY,SAAS,GACzB9F,IAAI+F,EAAa,SAAS,GAEvBC,KAAK,KAAKhG,KAAK,KAAK8F,EAAYE,CAAC,MAAMD,EAAa/F,CAAC;AAO1D,YAAAA;AAGF,iBAAOgG,KAAK,KAAKhG,KAAK,GAAGgG,KAAKhG;AAG5B,gBAAI8F,EAAYE,CAAC,MAAMD,EAAa/F,CAAC,GAAG;AAMtC,kBAAIgG,MAAM,KAAKhG,MAAM;AACnB;AAKE,sBAJAgG,KACAhG,KAGIA,IAAI,KAAK8F,EAAYE,CAAC,MAAMD,EAAa/F,CAAC,GAAG;AAE/C,wBAAIiG,IAAS;AAAA,IAAOH,EAAYE,CAAC,EAAE,QAAQ,YAAY,MAAM;AAK7D,2BAAIV,EAAG,eAAeW,EAAO,SAAS,aAAa,MACjDA,IAASA,EAAO,QAAQ,eAAeX,EAAG,WAAW,IAIjD,OAAOA,KAAO,cAChBH,EAAoB,IAAIG,GAAIW,CAAM,GAK/BA;AAAA,kBACvB;AAAA,uBACqBD,KAAK,KAAKhG,KAAK;AAG1B;AAAA,YACV;AAAA,QAEA;AAAA,MACA,UAAG;AACC,QAAAkF,IAAU,IAGRR,EAAuB,UAAUiB,GACjClB,GAAY,GAGd,MAAM,oBAAoBiB;AAAA,MAC9B;AAGE,UAAIb,IAAOS,IAAKA,EAAG,eAAeA,EAAG,OAAO,IACxCY,IAAiBrB,IAAOD,EAA8BC,CAAI,IAAI;AAGhE,aAAI,OAAOS,KAAO,cAChBH,EAAoB,IAAIG,GAAIY,CAAc,GAIvCA;AAAA,IACT;AACA,aAASC,GAA+Bb,GAAIR,GAAQC,GAAS;AAEzD,aAAOM,GAA6BC,GAAI,EAAK;AAAA,IAEjD;AAEA,aAASc,GAAgBC,GAAW;AAClC,UAAIC,IAAYD,EAAU;AAC1B,aAAO,CAAC,EAAEC,KAAaA,EAAU;AAAA,IACnC;AAEA,aAASC,EAAqCzD,GAAMgC,GAAQC,GAAS;AAEnE,UAAIjC,KAAQ;AACV,eAAO;AAGT,UAAI,OAAOA,KAAS;AAEhB,eAAOuC,GAA6BvC,GAAMsD,GAAgBtD,CAAI,CAAC;AAInE,UAAI,OAAOA,KAAS;AAClB,eAAO8B,EAA8B9B,CAAI;AAG3C,cAAQA,GAAI;AAAA,QACV,KAAK7B;AACH,iBAAO2D,EAA8B,UAAU;AAAA,QAEjD,KAAK1D;AACH,iBAAO0D,EAA8B,cAAc;AAAA;AAGvD,UAAI,OAAO9B,KAAS;AAClB,gBAAQA,EAAK,UAAQ;AAAA,UACnB,KAAK9B;AACH,mBAAOmF,GAA+BrD,EAAK,MAAM;AAAA,UAEnD,KAAK3B;AAEH,mBAAOoF,EAAqCzD,EAAK,MAAMgC,GAAQC,CAAO;AAAA,UAExE,KAAK3D,GACH;AACE,gBAAIsC,IAAgBZ,GAChBa,IAAUD,EAAc,UACxBE,IAAOF,EAAc;AAEzB,gBAAI;AAEF,qBAAO6C,EAAqC3C,EAAKD,CAAO,GAAGmB,GAAQC,CAAO;AAAA,YACtF,QAAsB;AAAA,YAAA;AAAA,UACtB;AAAA;AAIE,aAAO;AAAA,IACT;AAEA,QAAIyB,IAAiB,OAAO,UAAU,gBAElCC,KAAqB,CAAA,GACrBtE,KAAyBR,EAAqB;AAElD,aAAS+E,EAA8BC,GAAS;AAE5C,UAAIA,GAAS;AACX,YAAIC,IAAQD,EAAQ,QAChBvE,IAAQmE,EAAqCI,EAAQ,MAAMA,EAAQ,SAASC,IAAQA,EAAM,OAAO,IAAI;AACzG,QAAAzE,GAAuB,mBAAmBC,CAAK;AAAA,MACrD;AACM,QAAAD,GAAuB,mBAAmB,IAAI;AAAA,IAGpD;AAEA,aAAS0E,GAAeC,GAAWC,GAAQC,GAAUC,GAAeN,GAAS;AAC3E;AAEE,YAAIO,IAAM,SAAS,KAAK,KAAKV,CAAc;AAE3C,iBAASW,KAAgBL;AACvB,cAAII,EAAIJ,GAAWK,CAAY,GAAG;AAChC,gBAAIC,IAAU;AAId,gBAAI;AAGF,kBAAI,OAAON,EAAUK,CAAY,KAAM,YAAY;AAEjD,oBAAIE,IAAM,OAAOJ,KAAiB,iBAAiB,OAAOD,IAAW,YAAYG,IAAe,+FAAoG,OAAOL,EAAUK,CAAY,IAAI,iGAAsG;AAC3U,sBAAAE,EAAI,OAAO,uBACLA;AAAA,cAClB;AAEU,cAAAD,IAAUN,EAAUK,CAAY,EAAEJ,GAAQI,GAAcF,GAAeD,GAAU,MAAM,8CAA8C;AAAA,YAC/I,SAAiBM,GAAI;AACX,cAAAF,IAAUE;AAAA,YACpB;AAEQ,YAAIF,KAAW,EAAEA,aAAmB,WAClCV,EAA8BC,CAAO,GAErC/E,EAAM,4RAAqTqF,KAAiB,eAAeD,GAAUG,GAAc,OAAOC,CAAO,GAEjYV,EAA8B,IAAI,IAGhCU,aAAmB,SAAS,EAAEA,EAAQ,WAAWX,QAGnDA,GAAmBW,EAAQ,OAAO,IAAI,IACtCV,EAA8BC,CAAO,GAErC/E,EAAM,sBAAsBoF,GAAUI,EAAQ,OAAO,GAErDV,EAA8B,IAAI;AAAA,UAE5C;AAAA,MAEA;AAAA,IACA;AAEA,QAAIa,KAAc,MAAM;AAExB,aAASC,GAAQvH,GAAG;AAClB,aAAOsH,GAAYtH,CAAC;AAAA,IACtB;AAYA,aAASwH,GAASC,GAAO;AACvB;AAEE,YAAIC,IAAiB,OAAO,UAAW,cAAc,OAAO,aACxD7E,IAAO6E,KAAkBD,EAAM,OAAO,WAAW,KAAKA,EAAM,YAAY,QAAQ;AACpF,eAAO5E;AAAA,MACX;AAAA,IACA;AAGA,aAAS8E,GAAkBF,GAAO;AAE9B,UAAI;AACF,eAAAG,GAAmBH,CAAK,GACjB;AAAA,MACb,QAAgB;AACV,eAAO;AAAA,MACb;AAAA,IAEA;AAEA,aAASG,GAAmBH,GAAO;AAwBjC,aAAO,KAAKA;AAAA,IACd;AACA,aAASI,GAAuBJ,GAAO;AAEnC,UAAIE,GAAkBF,CAAK;AACzB,eAAA9F,EAAM,mHAAwH6F,GAASC,CAAK,CAAC,GAEtIG,GAAmBH,CAAK;AAAA,IAGrC;AAEA,QAAIK,KAAoBpG,EAAqB,mBACzCqG,KAAiB;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,GACIC,IACAC;AAOJ,aAASC,GAAYC,GAAQ;AAEzB,UAAI5B,EAAe,KAAK4B,GAAQ,KAAK,GAAG;AACtC,YAAIC,IAAS,OAAO,yBAAyBD,GAAQ,KAAK,EAAE;AAE5D,YAAIC,KAAUA,EAAO;AACnB,iBAAO;AAAA,MAEf;AAGE,aAAOD,EAAO,QAAQ;AAAA,IACxB;AAEA,aAASE,GAAYF,GAAQ;AAEzB,UAAI5B,EAAe,KAAK4B,GAAQ,KAAK,GAAG;AACtC,YAAIC,IAAS,OAAO,yBAAyBD,GAAQ,KAAK,EAAE;AAE5D,YAAIC,KAAUA,EAAO;AACnB,iBAAO;AAAA,MAEf;AAGE,aAAOD,EAAO,QAAQ;AAAA,IACxB;AAEA,aAASG,GAAqCH,GAAQI,GAAM;AAExD,MAAI,OAAOJ,EAAO,OAAQ,YAAYL,GAAkB;AAAA,IAU5D;AAEA,aAASU,GAA2BjE,GAAOrB,GAAa;AACtD;AACE,YAAIuF,IAAwB,WAAY;AACtC,UAAKT,OACHA,KAA6B,IAE7BrG,EAAM,6OAA4PuB,CAAW;AAAA,QAErR;AAEI,QAAAuF,EAAsB,iBAAiB,IACvC,OAAO,eAAelE,GAAO,OAAO;AAAA,UAClC,KAAKkE;AAAA,UACL,cAAc;AAAA,QACpB,CAAK;AAAA,MACL;AAAA,IACA;AAEA,aAASC,GAA2BnE,GAAOrB,GAAa;AACtD;AACE,YAAIyF,IAAwB,WAAY;AACtC,UAAKV,OACHA,KAA6B,IAE7BtG,EAAM,6OAA4PuB,CAAW;AAAA,QAErR;AAEI,QAAAyF,EAAsB,iBAAiB,IACvC,OAAO,eAAepE,GAAO,OAAO;AAAA,UAClC,KAAKoE;AAAA,UACL,cAAc;AAAA,QACpB,CAAK;AAAA,MACL;AAAA,IACA;AAuBA,QAAIC,KAAe,SAAU/F,GAAMgG,GAAKC,GAAKP,GAAM1D,GAAQ8B,GAAOpC,GAAO;AACvE,UAAImC,IAAU;AAAA;AAAA,QAEZ,UAAUlG;AAAA;AAAA,QAEV,MAAMqC;AAAA,QACN,KAAKgG;AAAA,QACL,KAAKC;AAAA,QACL,OAAOvE;AAAA;AAAA,QAEP,QAAQoC;AAAA,MACZ;AAOI,aAAAD,EAAQ,SAAS,IAKjB,OAAO,eAAeA,EAAQ,QAAQ,aAAa;AAAA,QACjD,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,MACb,CAAK,GAED,OAAO,eAAeA,GAAS,SAAS;AAAA,QACtC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO6B;AAAA,MACb,CAAK,GAGD,OAAO,eAAe7B,GAAS,WAAW;AAAA,QACxC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO7B;AAAA,MACb,CAAK,GAEG,OAAO,WACT,OAAO,OAAO6B,EAAQ,KAAK,GAC3B,OAAO,OAAOA,CAAO,IAIlBA;AAAA,IACT;AAQA,aAASqC,GAAOlG,GAAMsF,GAAQa,GAAUnE,GAAQ0D,GAAM;AACpD;AACE,YAAIU,GAEA1E,IAAQ,CAAA,GACRsE,IAAM,MACNC,IAAM;AAOV,QAAIE,MAAa,WAEbnB,GAAuBmB,CAAQ,GAGjCH,IAAM,KAAKG,IAGTX,GAAYF,CAAM,MAElBN,GAAuBM,EAAO,GAAG,GAGnCU,IAAM,KAAKV,EAAO,MAGhBD,GAAYC,CAAM,MACpBW,IAAMX,EAAO,KACbG,GAAqCH,GAAQI,CAAI;AAInD,aAAKU,KAAYd;AACf,UAAI5B,EAAe,KAAK4B,GAAQc,CAAQ,KAAK,CAAClB,GAAe,eAAekB,CAAQ,MAClF1E,EAAM0E,CAAQ,IAAId,EAAOc,CAAQ;AAKrC,YAAIpG,KAAQA,EAAK,cAAc;AAC7B,cAAIqG,IAAerG,EAAK;AAExB,eAAKoG,KAAYC;AACf,YAAI3E,EAAM0E,CAAQ,MAAM,WACtB1E,EAAM0E,CAAQ,IAAIC,EAAaD,CAAQ;AAAA,QAGjD;AAEI,YAAIJ,KAAOC,GAAK;AACd,cAAI5F,IAAc,OAAOL,KAAS,aAAaA,EAAK,eAAeA,EAAK,QAAQ,YAAYA;AAE5F,UAAIgG,KACFL,GAA2BjE,GAAOrB,CAAW,GAG3C4F,KACFJ,GAA2BnE,GAAOrB,CAAW;AAAA,QAErD;AAEI,eAAO0F,GAAa/F,GAAMgG,GAAKC,GAAKP,GAAM1D,GAAQiD,GAAkB,SAASvD,CAAK;AAAA,MACtF;AAAA,IACA;AAEA,QAAI4E,KAAsBzH,EAAqB,mBAC3C0H,KAA2B1H,EAAqB;AAEpD,aAAS2H,EAAgC3C,GAAS;AAE9C,UAAIA,GAAS;AACX,YAAIC,IAAQD,EAAQ,QAChBvE,IAAQmE,EAAqCI,EAAQ,MAAMA,EAAQ,SAASC,IAAQA,EAAM,OAAO,IAAI;AACzG,QAAAyC,GAAyB,mBAAmBjH,CAAK;AAAA,MACvD;AACM,QAAAiH,GAAyB,mBAAmB,IAAI;AAAA,IAGtD;AAEA,QAAIE;AAGF,IAAAA,KAAgC;AAWlC,aAASC,GAAeC,GAAQ;AAE5B,aAAO,OAAOA,KAAW,YAAYA,MAAW,QAAQA,EAAO,aAAahJ;AAAA,IAEhF;AAEA,aAASiJ,KAA8B;AACrC;AACE,YAAIN,GAAoB,SAAS;AAC/B,cAAIvE,IAAOvB,EAAyB8F,GAAoB,QAAQ,IAAI;AAEpE,cAAIvE;AACF,mBAAO;AAAA;AAAA,iCAAqCA,IAAO;AAAA,QAE3D;AAEI,eAAO;AAAA,MACX;AAAA,IACA;AAEA,aAAS8E,GAA2B7E,GAAQ;AAQxC,aAAO;AAAA,IAEX;AAQA,QAAI8E,KAAwB,CAAA;AAE5B,aAASC,GAA6BC,GAAY;AAChD;AACE,YAAIC,IAAOL,GAA2B;AAEtC,YAAI,CAACK,GAAM;AACT,cAAIC,IAAa,OAAOF,KAAe,WAAWA,IAAaA,EAAW,eAAeA,EAAW;AAEpG,UAAIE,MACFD,IAAO;AAAA;AAAA,2CAAgDC,IAAa;AAAA,QAE5E;AAEI,eAAOD;AAAA,MACX;AAAA,IACA;AAcA,aAASE,GAAoBtD,GAASmD,GAAY;AAChD;AACE,YAAI,CAACnD,EAAQ,UAAUA,EAAQ,OAAO,aAAaA,EAAQ,OAAO;AAChE;AAGF,QAAAA,EAAQ,OAAO,YAAY;AAC3B,YAAIuD,IAA4BL,GAA6BC,CAAU;AAEvE,YAAIF,GAAsBM,CAAyB;AACjD;AAGF,QAAAN,GAAsBM,CAAyB,IAAI;AAInD,YAAIC,IAAa;AAEjB,QAAIxD,KAAWA,EAAQ,UAAUA,EAAQ,WAAWyC,GAAoB,YAEtEe,IAAa,iCAAiC7G,EAAyBqD,EAAQ,OAAO,IAAI,IAAI,MAGhG2C,EAAgC3C,CAAO,GAEvC/E,EAAM,6HAAkIsI,GAA2BC,CAAU,GAE7Kb,EAAgC,IAAI;AAAA,MACxC;AAAA,IACA;AAYA,aAASc,GAAkBC,GAAMP,GAAY;AAC3C;AACE,YAAI,OAAOO,KAAS;AAClB;AAGF,YAAI7C,GAAQ6C,CAAI;AACd,mBAASC,IAAI,GAAGA,IAAID,EAAK,QAAQC,KAAK;AACpC,gBAAIC,IAAQF,EAAKC,CAAC;AAElB,YAAId,GAAee,CAAK,KACtBN,GAAoBM,GAAOT,CAAU;AAAA,UAE/C;AAAA,iBACeN,GAAea,CAAI;AAE5B,UAAIA,EAAK,WACPA,EAAK,OAAO,YAAY;AAAA,iBAEjBA,GAAM;AACf,cAAIG,IAAahJ,GAAc6I,CAAI;AAEnC,cAAI,OAAOG,KAAe,cAGpBA,MAAeH,EAAK;AAItB,qBAHII,IAAWD,EAAW,KAAKH,CAAI,GAC/BK,GAEG,EAAEA,IAAOD,EAAS,KAAI,GAAI;AAC/B,cAAIjB,GAAekB,EAAK,KAAK,KAC3BT,GAAoBS,EAAK,OAAOZ,CAAU;AAAA,QAKxD;AAAA,MACA;AAAA,IACA;AASA,aAASa,GAAkBhE,GAAS;AAClC;AACE,YAAI7D,IAAO6D,EAAQ;AAEnB,YAAI7D,KAAS,QAA8B,OAAOA,KAAS;AACzD;AAGF,YAAI8H;AAEJ,YAAI,OAAO9H,KAAS;AAClB,UAAA8H,IAAY9H,EAAK;AAAA,iBACR,OAAOA,KAAS,aAAaA,EAAK,aAAa9B;AAAA;AAAA,QAE1D8B,EAAK,aAAa3B;AAChB,UAAAyJ,IAAY9H,EAAK;AAAA;AAEjB;AAGF,YAAI8H,GAAW;AAEb,cAAI/F,IAAOvB,EAAyBR,CAAI;AACxC,UAAA+D,GAAe+D,GAAWjE,EAAQ,OAAO,QAAQ9B,GAAM8B,CAAO;AAAA,QACpE,WAAe7D,EAAK,cAAc,UAAa,CAACyG,IAA+B;AACzE,UAAAA,KAAgC;AAEhC,cAAIsB,IAAQvH,EAAyBR,CAAI;AAEzC,UAAAlB,EAAM,uGAAuGiJ,KAAS,SAAS;AAAA,QACrI;AAEI,QAAI,OAAO/H,EAAK,mBAAoB,cAAc,CAACA,EAAK,gBAAgB,wBACtElB,EAAM,4HAAiI;AAAA,MAE7I;AAAA,IACA;AAOA,aAASkJ,GAAsBC,GAAU;AACvC;AAGE,iBAFIC,IAAO,OAAO,KAAKD,EAAS,KAAK,GAE5BT,IAAI,GAAGA,IAAIU,EAAK,QAAQV,KAAK;AACpC,cAAIxB,IAAMkC,EAAKV,CAAC;AAEhB,cAAIxB,MAAQ,cAAcA,MAAQ,OAAO;AACvC,YAAAQ,EAAgCyB,CAAQ,GAExCnJ,EAAM,4GAAiHkH,CAAG,GAE1HQ,EAAgC,IAAI;AACpC;AAAA,UACR;AAAA,QACA;AAEI,QAAIyB,EAAS,QAAQ,SACnBzB,EAAgCyB,CAAQ,GAExCnJ,EAAM,uDAAuD,GAE7D0H,EAAgC,IAAI;AAAA,MAE1C;AAAA,IACA;AAEA,QAAI2B,KAAwB,CAAA;AAC5B,aAASC,GAAkBpI,GAAM0B,GAAOsE,GAAKqC,GAAkBrG,GAAQ0D,GAAM;AAC3E;AACE,YAAI4C,IAAYvI,GAAmBC,CAAI;AAGvC,YAAI,CAACsI,GAAW;AACd,cAAIrB,IAAO;AAEX,WAAIjH,MAAS,UAAa,OAAOA,KAAS,YAAYA,MAAS,QAAQ,OAAO,KAAKA,CAAI,EAAE,WAAW,OAClGiH,KAAQ;AAGV,cAAIsB,IAAa1B,GAAiC;AAElD,UAAI0B,IACFtB,KAAQsB,IAERtB,KAAQL,GAA2B;AAGrC,cAAI4B;AAEJ,UAAIxI,MAAS,OACXwI,IAAa,SACJ9D,GAAQ1E,CAAI,IACrBwI,IAAa,UACJxI,MAAS,UAAaA,EAAK,aAAarC,KACjD6K,IAAa,OAAOhI,EAAyBR,EAAK,IAAI,KAAK,aAAa,OACxEiH,IAAO,wEAEPuB,IAAa,OAAOxI,GAGtBlB,EAAM,2IAAqJ0J,GAAYvB,CAAI;AAAA,QACjL;AAEI,YAAIpD,IAAUqC,GAAOlG,GAAM0B,GAAOsE,GAAKhE,GAAQ0D,CAAI;AAGnD,YAAI7B,KAAW;AACb,iBAAOA;AAQT,YAAIyE,GAAW;AACb,cAAIG,IAAW/G,EAAM;AAErB,cAAI+G,MAAa;AACf,gBAAIJ;AACF,kBAAI3D,GAAQ+D,CAAQ,GAAG;AACrB,yBAASjB,IAAI,GAAGA,IAAIiB,EAAS,QAAQjB;AACnC,kBAAAF,GAAkBmB,EAASjB,CAAC,GAAGxH,CAAI;AAGrC,gBAAI,OAAO,UACT,OAAO,OAAOyI,CAAQ;AAAA,cAEpC;AACY,gBAAA3J,EAAM,sJAAgK;AAAA;AAGxK,cAAAwI,GAAkBmB,GAAUzI,CAAI;AAAA,QAG1C;AAGM,YAAI0D,EAAe,KAAKhC,GAAO,KAAK,GAAG;AACrC,cAAIyC,IAAgB3D,EAAyBR,CAAI,GAC7CkI,IAAO,OAAO,KAAKxG,CAAK,EAAE,OAAO,SAAU9E,IAAG;AAChD,mBAAOA,OAAM;AAAA,UACvB,CAAS,GACG8L,KAAgBR,EAAK,SAAS,IAAI,oBAAoBA,EAAK,KAAK,SAAS,IAAI,WAAW;AAE5F,cAAI,CAACC,GAAsBhE,IAAgBuE,EAAa,GAAG;AACzD,gBAAIC,KAAeT,EAAK,SAAS,IAAI,MAAMA,EAAK,KAAK,SAAS,IAAI,WAAW;AAE7E,YAAApJ,EAAM;AAAA;AAAA;AAAA;AAAA;AAAA,oCAA4P4J,IAAevE,GAAewE,IAAcxE,CAAa,GAE3TgE,GAAsBhE,IAAgBuE,EAAa,IAAI;AAAA,UACjE;AAAA,QACA;AAGI,eAAI1I,MAASnC,IACXmK,GAAsBnE,CAAO,IAE7BgE,GAAkBhE,CAAO,GAGpBA;AAAA,MACX;AAAA,IACA;AAKA,aAAS+E,GAAwB5I,GAAM0B,GAAOsE,GAAK;AAE/C,aAAOoC,GAAkBpI,GAAM0B,GAAOsE,GAAK,EAAI;AAAA,IAEnD;AACA,aAAS6C,GAAyB7I,GAAM0B,GAAOsE,GAAK;AAEhD,aAAOoC,GAAkBpI,GAAM0B,GAAOsE,GAAK,EAAK;AAAA,IAEpD;AAEA,QAAI8C,KAAOD,IAGPE,KAAQH;AAEZ,IAAAI,EAAA,WAAmBnL,GACnBmL,EAAA,MAAcF,IACdE,EAAA,OAAeD;AAAA,EACf,EAAG;;ACjzCC,QAAQ,IAAI,aAAa,eAC3BE,GAAA,UAAiBtM,GAAA,IAEjBsM,GAAA,UAAiBC,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDZ,SAASC,GAAoB;AAAA,EAClC,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AACF,GAAyB;AACvB,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAA2B,gBAAgB,GAC/E,CAACC,GAAiBC,CAAkB,IAAIF,EAAS,EAAK,GACtD,CAACG,GAAoBC,CAAqB,IAAIJ,EAAS,EAAK,GAC5D,CAACK,GAAWC,CAAY,IAAIN,EAAS,EAAK,GAG1CO,IAAaX,IAAQ;AAAA,IACzB,gBAAgBA,EAAM;AAAA,IACtB,eAAeA,EAAM;AAAA,IACrB,WAAWA,EAAM;AAAA,IACjB,oBAAoBA,EAAM;AAAA,IAC1B,aAAaA,EAAM;AAAA,IACnB,kBAAkBA,EAAM;AAAA,IACxB,eAAeA,EAAM;AAAA,EAAA,IACI,CAAA;AAG3B,EAAAY,GAAU,MAAM;AACd,UAAMC,IAAgD;AAAA,MACpD,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,WAAW;AAAA,MACX,YAAY;AAAA,IAAA;AAEd,IAAAd,KAAA,QAAAA,EAAac,EAAYX,CAAa;AAAA,EACxC,GAAG,CAACA,GAAeH,CAAU,CAAC,GAG9Ba,GAAU,MAAM;AACd,QAAIV,MAAkB,iBAAkB;AAExC,UAAMY,IAAgB,MAAM;AAC1B,MAAAR,EAAmB,EAAI,GACvB,WAAW,MAAMA,EAAmB,EAAK,GAAG,GAAG;AAAA,IACjD,GAGMS,IAAiB,WAAWD,GAAe,GAAI,GAG/CE,IAAW,YAAY,MAAM;AACjC,YAAMC,IAAQ,KAAK,OAAA,IAAW,MAAO;AACrC,iBAAWH,GAAeG,CAAK;AAAA,IACjC,GAAG,GAAI;AAEP,WAAO,MAAM;AACX,mBAAaF,CAAc,GAC3B,cAAcC,CAAQ;AAAA,IACxB;AAAA,EACF,GAAG,CAACd,CAAa,CAAC;AAElB,QAAMgB,IAAaC,GAAY,MAAM;AACnC,IAAAX,EAAsB,EAAI,GAC1B,WAAW,MAAM;AACf,MAAAE,EAAa,EAAI,GACjB,WAAW,MAAM;AACf,QAAAP,EAAiB,YAAY;AAAA,MAC/B,GAAG,GAAI;AAAA,IACT,GAAG,GAAG;AAAA,EACR,GAAG,CAAA,CAAE,GAECiB,IAAiBD,GAAY,CAACE,MAAmC;AACrE,IAAAvB,EAAW;AAAA,MACT,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,QAAAuB;AAAA,QACA,eAAe;AAAA,MAAA;AAAA,MAEjB,SAAS;AAAA,QACP,cAAc,CAAC,qBAAqB;AAAA,QACpC,SAASA,MAAW,WAAW,CAAC,WAAW,IAAI,CAAC,mBAAmB;AAAA,MAAA;AAAA,IACrE,CACD;AAAA,EACH,GAAG,CAACvB,CAAU,CAAC,GA6JTwB,IAA+D;AAAA,IACnE,gBA3J2B,MAC3B7B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW,GAAG8B,EAAO,SAAS,IAAIA,EAAO,YAAY,IAAI,OAAOZ,GACnE,UAAA;AAAA,MAAAnB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW+B,EAAO,KAAA,CAAM;AAAA,MAE7B9B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW8B,EAAO,WACrB,UAAA;AAAA,QAAA/B,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAW+B,EAAO,UAAU,UAAA,kFAE/B;AAAA,8BAEC,OAAA,EAAI,WAAWA,EAAO,UAAUlB,IAAkB,IAAIkB,EAAO,SAAS,KAAK,KAC1E,UAAA/B,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW+B,EAAO,gBAAgBlB,IAAkB,IAAIkB,EAAO,OAAO,KAAK,KAC7E,UAAA,MAAM,KAAK,EAAE,QAAQ,IAAI,EAAE,IAAI,CAACC,GAAGtD,MAClCsB,gBAAAA,MAAC,SAAY,WAAW+B,EAAO,OAAO,OAAO;AAAA,UAC3C,SAAS,KAAK,WAAW,MAAM,MAAM;AAAA,QAAA,EACvC,GAFUrD,CAEP,CACJ,EAAA,CACH,GACF;AAAA,QAEAsB,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAW,GAAG+B,EAAO,QAAQ,IAAIA,EAAO,OAAO,IAAI,UAAA,wBAAA,CAEtD;AAAA,QAEA9B,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW8B,EAAO,WAAW,UAAA;AAAA,UAAA;AAAA,gCACiB,MAAA,EAAG;AAAA,UAAE;AAAA,QAAA,GAEtD;AAAA,QAEA/B,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW+B,EAAO;AAAA,YAClB,SAAS,MAAMpB,EAAiB,WAAW;AAAA,YAC5C,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,EAAA,CACF;AAAA,IAAA,GACF;AAAA,IAyHA,WArHsB,MACtBV,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW,GAAG8B,EAAO,SAAS,IAAIA,EAAO,YAAY,IAAI,OAAOZ,GACnE,UAAA;AAAA,MAAAnB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW+B,EAAO,KAAA,CAAM;AAAA,MAE7B9B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW8B,EAAO,kBACrB,UAAA;AAAA,QAAA/B,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAW+B,EAAO,SAAS,UAAA,6DAE9B;AAAA,QAEA9B,gBAAAA,EAAAA,KAAC,MAAA,EAAG,WAAW8B,EAAO,SACpB,UAAA;AAAA,UAAA/B,gBAAAA,EAAAA,IAAC,MAAA,EAAG,WAAW+B,EAAO,SAAS,UAAA,uCAAmC;AAAA,UAClE/B,gBAAAA,EAAAA,IAAC,MAAA,EAAG,WAAW+B,EAAO,SAAS,UAAA,8BAA0B;AAAA,UACzD/B,gBAAAA,EAAAA,IAAC,MAAA,EAAG,WAAW+B,EAAO,SAAS,UAAA,4EAAA,CAAyE;AAAA,QAAA,GAC1G;AAAA,QAEA/B,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAW+B,EAAO,QAAQ,UAAA,6BAE7B;AAAA,QAEA9B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW8B,EAAO,SACrB,UAAA;AAAA,UAAA/B,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW+B,EAAO,WAAW,UAAA,UAAM;AAAA,UACxC9B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW8B,EAAO,aAAa,UAAA;AAAA,YAAA;AAAA,kCACL,MAAA,EAAG;AAAA,YAAE;AAAA,UAAA,EAAA,CAEpC;AAAA,QAAA,GACF;AAAA,QAEA/B,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW+B,EAAO;AAAA,YAClB,SAAS,MAAMpB,EAAiB,WAAW;AAAA,YAC5C,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,EAAA,CACF;AAAA,IAAA,GACF;AAAA,IAoFA,WAhFsB,MACtBV,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW,GAAG8B,EAAO,SAAS,IAAIA,EAAO,YAAY,IAAI,OAAOZ,GACnE,UAAA;AAAA,MAAAnB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW+B,EAAO,KAAA,CAAM;AAAA,MAE7B9B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW8B,EAAO,kBACrB,UAAA;AAAA,QAAA/B,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAW+B,EAAO,gBAAgB,UAAA,gCAErC;AAAA,QAEA/B,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW+B,EAAO,YAAY,UAAA,2CAEnC;AAAA,QAEA9B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW8B,EAAO,eACrB,UAAA;AAAA,UAAA/B,gBAAAA,EAAAA,IAAC,SAAI,WAAW+B,EAAO,OACrB,UAAA/B,gBAAAA,MAAC,UAAK,WAAW+B,EAAO,iBAAiBd,IAAY,IAAIc,EAAO,OAAO,KAAK,KAAK,eAEjF,GACF;AAAA,UACA/B,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAW+B,EAAO,UAAUhB,IAAqB,IAAIgB,EAAO,SAAS,KAAK,KAAK,UAAA,KAAA,CAErF;AAAA,QAAA,GACF;AAAA,QAEC,CAACd,KACAjB,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW+B,EAAO;AAAA,YAClB,SAASL;AAAA,YACT,UAAUX;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,EAAA,CAEJ;AAAA,IAAA,GACF;AAAA,IA+CA,YA3CuB,MACvBd,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW,GAAG8B,EAAO,SAAS,IAAIA,EAAO,YAAY,IAAI,OAAOZ,GACnE,UAAA;AAAA,MAAAnB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW+B,EAAO,KAAA,CAAM;AAAA,MAE7B9B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW8B,EAAO,mBACrB,UAAA;AAAA,QAAA/B,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAW+B,EAAO,aAAa,UAAA,qDAElC;AAAA,QAEA9B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW8B,EAAO,eACrB,UAAA;AAAA,UAAA9B,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW8B,EAAO;AAAA,cAClB,SAAS,MAAMH,EAAe,QAAQ;AAAA,cAEtC,UAAA;AAAA,gBAAA3B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW8B,EAAO,aAAa,UAAA;AAAA,kBAAA;AAAA,kBACN/B,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAW+B,EAAO,OAAO,UAAA,IAAA,CAAC;AAAA,gBAAA,GAC9D;AAAA,gBACA/B,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW+B,EAAO,YAAY,UAAA,8CAAA,CAEnC;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGF9B,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW8B,EAAO;AAAA,cAClB,SAAS,MAAMH,EAAe,WAAW;AAAA,cAEzC,UAAA;AAAA,gBAAA3B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAW8B,EAAO,aAAa,UAAA;AAAA,kBAAA;AAAA,kBACT/B,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAW+B,EAAO,OAAO,UAAA,IAAA,CAAC;AAAA,gBAAA,GAC3D;AAAA,gBACA/B,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW+B,EAAO,YAAY,UAAA,wCAAA,CAEnC;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACF,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,GACF;AAAA,EAQY;AAGd,+BACG,OAAA,EAAI,WAAAtB,GACF,UAAAqB,EAAgBpB,CAAa,KAChC;AAEJ;ACtPO,MAAMuB,KAAW;AAAA,EACtB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,aAAa,CAAA;AAAA,EACb,MAAM,CAAC,cAAc,SAAS,SAAS;AACzC;","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/vendor/glitch/glitch_onboarding2/glitch.manifest.json b/dist/vendor/glitch/glitch_onboarding2/glitch.manifest.json new file mode 100644 index 0000000..bbcbe10 --- /dev/null +++ b/dist/vendor/glitch/glitch_onboarding2/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "onboarding2", + "displayName": "Facility Slideshow", + "version": "1.0.0", + "folderName": "glitch_onboarding2", + "packageName": "@glitch-components/onboarding2", + "entry": "dist/onboarding2.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "onboarding", + "slideshow" + ] +} diff --git a/dist/vendor/glitch/glitch_onboarding2/onboarding2.js b/dist/vendor/glitch/glitch_onboarding2/onboarding2.js new file mode 100644 index 0000000..d254f0b --- /dev/null +++ b/dist/vendor/glitch/glitch_onboarding2/onboarding2.js @@ -0,0 +1,212 @@ +(function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode('._wrapper_61dhl_1{--gc-bg: var(--color-bg, #0a0a0f);--gc-bg-secondary: var(--color-bg-secondary, #12121a);--gc-text: var(--color-text, #e8e8ec);--gc-text-muted: var(--color-text-muted, #9999a8);--gc-primary: var(--color-primary, #6366f1);--gc-accent: var(--color-accent, #22d3ee);--gc-border: var(--color-border, #2a2a3a);--gc-font-main: var(--font-main, "Iceland", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-display: var(--font-display, "Russo One", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-text: "VT323", var(--font-mono, monospace);width:100%}._frame_61dhl_15{position:relative;width:100%;height:100dvh;min-height:100vh;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border) 60%,transparent);color:var(--gc-text);font-family:var(--gc-font-text);background:radial-gradient(circle at 18% 14%,color-mix(in srgb,var(--gc-accent) 18%,transparent),transparent 35%),radial-gradient(circle at 88% 2%,color-mix(in srgb,var(--gc-primary) 22%,transparent),transparent 30%),linear-gradient(165deg,var(--gc-bg),var(--gc-bg-secondary))}._scan_61dhl_30{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.18;mix-blend-mode:screen;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.1) 0,rgba(255,255,255,.1) 1px,transparent 1px,transparent 3px);animation:_scanDrift_61dhl_1 8s linear infinite}._stack_61dhl_47{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:22px 16px 18px}._meta_61dhl_57{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gc-text-muted);font-family:var(--gc-font-main)}._progressTrack_61dhl_68{margin-top:8px;width:100%;height:3px;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--gc-accent) 20%,transparent)}._progressFill_61dhl_77{height:100%;transition:width .24s ease;background:linear-gradient(90deg,var(--gc-accent),color-mix(in srgb,var(--gc-primary) 45%,var(--gc-accent)))}._slide_61dhl_87{flex:1;display:flex;flex-direction:column;justify-content:center;gap:20px}._title_61dhl_95{margin:0;width:fit-content;font-family:var(--gc-font-display);text-transform:uppercase;letter-spacing:.02em;line-height:1.04;font-size:clamp(28px,8.5vw,46px)}._rgbGlitch_61dhl_105{position:relative;display:inline-block}._rgbBase_61dhl_110{position:relative;z-index:1;color:color-mix(in srgb,var(--gc-text) 38%,#000)}._rgbLayer_61dhl_116{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;opacity:.2}._layerR_61dhl_124{color:#ff3737bf;animation:_layerRShift_61dhl_1 2.4s infinite steps(2,end)}._layerG_61dhl_129{color:#37ff5fbf;animation:_layerGShift_61dhl_1 2.1s infinite steps(2,end)}._layerB_61dhl_134{color:#4182ffbf;animation:_layerBShift_61dhl_1 2.7s infinite steps(2,end)}._content_61dhl_139{display:flex;flex-direction:column;gap:10px;font-family:var(--gc-font-text);font-size:clamp(16px,4.2vw,22px);line-height:1.45}._line_61dhl_148{margin:0;color:var(--gc-text)}._spacer_61dhl_153{margin:0;min-height:.6em}._list_61dhl_158{margin:3px 0 0;padding-left:1.1em;display:flex;flex-direction:column;gap:7px}._warning_61dhl_166{list-style:none;padding-left:0}._warning_61dhl_166 li:before{content:"- ";color:var(--gc-accent)}._cta_61dhl_176{margin-top:10px;width:fit-content;border:1px solid var(--gc-accent);background:color-mix(in srgb,var(--gc-accent) 8%,transparent);color:var(--gc-accent);font:inherit;letter-spacing:.06em;text-transform:uppercase;padding:10px 14px;cursor:pointer;font-family:var(--gc-font-main);transition:transform .14s ease,background-color .14s ease}._cta_61dhl_176:active{transform:scale(.98)}._controls_61dhl_195{display:grid;grid-template-columns:1fr 1fr;gap:8px}._navButton_61dhl_201{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:color-mix(in srgb,var(--gc-bg-secondary) 75%,transparent);color:var(--gc-text);font:inherit;text-transform:uppercase;letter-spacing:.08em;padding:10px 12px;cursor:pointer;font-family:var(--gc-font-main)}._navButton_61dhl_201:disabled{opacity:.45;cursor:not-allowed}@keyframes _layerRShift_61dhl_1{0%,81%,to{transform:translate(0)}84%{transform:translate(-4px,2px)}88%{transform:translate(4px,-2px)}92%{transform:translate(2px)}96%{transform:translate(-2px,2px)}}@keyframes _layerGShift_61dhl_1{0%,79%,to{transform:translate(0)}83%{transform:translate(2px,-2px)}87%{transform:translate(-2px,4px)}91%{transform:translateY(-2px)}95%{transform:translate(2px)}}@keyframes _layerBShift_61dhl_1{0%,82%,to{transform:translate(0)}86%{transform:translate(4px)}90%{transform:translate(-4px,-2px)}94%{transform:translate(2px,2px)}98%{transform:translate(-2px)}}@keyframes _scanDrift_61dhl_1{0%{transform:translateY(-10px)}to{transform:translateY(10px)}}@media (min-width: 600px){._frame_61dhl_15{max-width:420px;margin:0 auto}}')),document.head.appendChild(t)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); +import { jsx as t, jsxs as c } from "react/jsx-runtime"; +import { useState as x, useRef as B, useMemo as $, useEffect as G, useCallback as u } from "react"; +const L = "_wrapper_61dhl_1", E = "_frame_61dhl_15", F = "_scan_61dhl_30", C = "_stack_61dhl_47", R = "_meta_61dhl_57", Y = "_progressTrack_61dhl_68", I = "_progressFill_61dhl_77", W = "_slide_61dhl_87", M = "_title_61dhl_95", A = "_rgbGlitch_61dhl_105", D = "_rgbBase_61dhl_110", H = "_rgbLayer_61dhl_116", P = "_layerR_61dhl_124", j = "_layerG_61dhl_129", O = "_layerB_61dhl_134", q = "_content_61dhl_139", U = "_line_61dhl_148", z = "_spacer_61dhl_153", J = "_list_61dhl_158", K = "_warning_61dhl_166", Q = "_cta_61dhl_176", V = "_controls_61dhl_195", X = "_navButton_61dhl_201", e = { + wrapper: L, + frame: E, + scan: F, + stack: C, + meta: R, + progressTrack: Y, + progressFill: I, + slide: W, + title: M, + rgbGlitch: A, + rgbBase: D, + rgbLayer: H, + layerR: P, + layerG: j, + layerB: O, + content: q, + line: U, + spacer: z, + list: J, + warning: K, + cta: Q, + controls: V, + navButton: X +}, Z = 40, i = [ + { + title: "The Premise", + lines: [ + "This facility tests foundational assumptions.", + "", + "Not interpretations.", + "Assumptions." + ] + }, + { + title: "The method", + lines: [ + "This is math and philosophy.", + "Make assumption.", + "Pretend it's true.", + "Where does that lead?" + ] + }, + { + title: "The law", + lines: [ + "We make predictions.", + "If they fail, the idea fails." + ] + }, + { + title: "The way", + lines: ["You will:"], + bullets: [ + "Pass challenges", + "Collect paradoxes", + "Examine anomalies", + "Learn to think sharply" + ] + }, + { + title: "Warning", + lines: ["You may feel:"], + bullets: [ + "This is not a game!", + "Temporary confusion", + "The urge to defend existing physics!" + ], + bulletStyle: "warning", + after: "Good. This is not for everyone." + }, + { + title: "How This Works", + lines: [ + "Watch a short module", + "Pass the glitch gate", + "Unlock the next tech", + "That's it. For now." + ] + }, + { + title: "Proceed", + lines: [ + "You may proceed as an investigator.", + "Begin at the intersection", + "Get briefed" + ], + cta: "[ ENTER FACILITY ]" + } +]; +function ae({ + config: _, + onComplete: p, + onProgress: d, + theme: r, + className: m +}) { + const [n, g] = x(0), o = B(null), f = $(() => r ? { + "--gc-primary": r.primary, + "--gc-accent": r.accent, + "--gc-bg": r.bg, + "--gc-bg-secondary": r.bgSecondary, + "--gc-text": r.text, + "--gc-text-muted": r.textMuted, + "--gc-border": r.border + } : {}, [r]); + G(() => { + const a = (n + 1) / i.length * 100; + d == null || d(Math.round(a)); + }, [n, d]); + const h = u((a) => { + if (a > 0 && n === i.length - 1) { + g(0); + return; + } + const l = n + a; + l < 0 || l >= i.length || g(l); + }, [n]), N = u((a) => { + var l; + o.current = ((l = a.changedTouches[0]) == null ? void 0 : l.clientY) ?? null; + }, []), T = u((a) => { + var b; + if (o.current == null) return; + const l = ((b = a.changedTouches[0]) == null ? void 0 : b.clientY) ?? o.current, y = o.current - l; + Math.abs(y) > Z && h(y > 0 ? 1 : -1), o.current = null; + }, [h]), w = u(() => { + p({ + success: !0, + score: 100, + data: { + sequence: "facility-slideshow", + configId: _.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString() + } + }); + }, [_.id, p]), s = i[n], v = n === i.length - 1, S = (n + 1) / i.length * 100, k = m ? `${e.wrapper} ${m}` : e.wrapper; + return /* @__PURE__ */ t("div", { className: k, style: f, children: /* @__PURE__ */ c( + "section", + { + className: e.frame, + "aria-label": "Facility onboarding slideshow", + onTouchStart: N, + onTouchEnd: T, + children: [ + /* @__PURE__ */ t("div", { className: e.scan, "aria-hidden": "true" }), + /* @__PURE__ */ c("div", { className: e.stack, children: [ + /* @__PURE__ */ c("header", { children: [ + /* @__PURE__ */ c("div", { className: e.meta, children: [ + /* @__PURE__ */ t("span", { children: "Glitch Facility" }), + /* @__PURE__ */ c("span", { children: [ + n + 1, + " / ", + i.length + ] }) + ] }), + /* @__PURE__ */ t("div", { className: e.progressTrack, children: /* @__PURE__ */ t("div", { className: e.progressFill, style: { width: `${S}%` } }) }) + ] }), + /* @__PURE__ */ c("article", { className: e.slide, "aria-live": "polite", children: [ + /* @__PURE__ */ t("h2", { className: e.title, children: /* @__PURE__ */ c("span", { className: e.rgbGlitch, children: [ + /* @__PURE__ */ t("span", { className: e.rgbBase, children: s.title }), + /* @__PURE__ */ t("span", { className: `${e.rgbLayer} ${e.layerR}`, "aria-hidden": "true", children: s.title }), + /* @__PURE__ */ t("span", { className: `${e.rgbLayer} ${e.layerG}`, "aria-hidden": "true", children: s.title }), + /* @__PURE__ */ t("span", { className: `${e.rgbLayer} ${e.layerB}`, "aria-hidden": "true", children: s.title }) + ] }) }), + /* @__PURE__ */ c("div", { className: e.content, children: [ + s.lines.map((a, l) => a === "" ? /* @__PURE__ */ t("p", { className: e.spacer, "aria-hidden": "true" }, `line-${l}`) : /* @__PURE__ */ t("p", { className: e.line, children: a }, `line-${l}`)), + s.bullets && /* @__PURE__ */ t("ul", { className: `${e.list} ${s.bulletStyle === "warning" ? e.warning : ""}`, children: s.bullets.map((a) => /* @__PURE__ */ t("li", { children: a }, a)) }), + s.after && /* @__PURE__ */ t("p", { className: e.line, children: s.after }), + s.cta && /* @__PURE__ */ t("button", { type: "button", className: e.cta, onClick: w, children: s.cta }) + ] }) + ] }), + /* @__PURE__ */ c("nav", { className: e.controls, "aria-label": "Slideshow controls", children: [ + /* @__PURE__ */ t( + "button", + { + type: "button", + className: e.navButton, + onClick: () => h(-1), + disabled: n === 0, + children: "Previous" + } + ), + /* @__PURE__ */ t( + "button", + { + type: "button", + className: e.navButton, + onClick: () => h(1), + children: v ? "Restart" : "Next" + } + ) + ] }) + ] }) + ] + } + ) }); +} +const se = { + name: "onboarding2", + displayName: "Facility Slideshow", + version: "1.0.0", + paramSchema: {}, + defaultParams: {} +}; +export { + ae as default, + se as metadata +}; +//# sourceMappingURL=onboarding2.js.map diff --git a/dist/vendor/glitch/glitch_onboarding2/onboarding2.js.map b/dist/vendor/glitch/glitch_onboarding2/onboarding2.js.map new file mode 100644 index 0000000..e9f29bc --- /dev/null +++ b/dist/vendor/glitch/glitch_onboarding2/onboarding2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onboarding2.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { CSSProperties, TouchEvent } from 'react'\nimport type { GlitchComponentProps, SlideData } from './types'\nimport styles from './styles.module.css'\n\nconst SWIPE_THRESHOLD = 40\n\nconst SLIDES: SlideData[] = [\n {\n title: 'The Premise',\n lines: [\n 'This facility tests foundational assumptions.',\n '',\n 'Not interpretations.',\n 'Assumptions.'\n ]\n },\n {\n title: 'The method',\n lines: [\n 'This is math and philosophy.',\n 'Make assumption.',\n \"Pretend it's true.\",\n 'Where does that lead?'\n ]\n },\n {\n title: 'The law',\n lines: [\n 'We make predictions.',\n 'If they fail, the idea fails.'\n ]\n },\n {\n title: 'The way',\n lines: ['You will:'],\n bullets: [\n 'Pass challenges',\n 'Collect paradoxes',\n 'Examine anomalies',\n 'Learn to think sharply'\n ]\n },\n {\n title: 'Warning',\n lines: ['You may feel:'],\n bullets: [\n 'This is not a game!',\n 'Temporary confusion',\n 'The urge to defend existing physics!'\n ],\n bulletStyle: 'warning',\n after: 'Good. This is not for everyone.'\n },\n {\n title: 'How This Works',\n lines: [\n 'Watch a short module',\n 'Pass the glitch gate',\n 'Unlock the next tech',\n \"That's it. For now.\",\n ],\n },\n {\n title: 'Proceed',\n lines: [\n 'You may proceed as an investigator.',\n 'Begin at the intersection',\n 'Get briefed',\n ],\n cta: '[ ENTER FACILITY ]'\n }\n]\n\nexport default function Component({\n config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const [index, setIndex] = useState(0)\n const touchStartY = useRef(null)\n\n const themeStyle = useMemo(() => {\n if (!theme) return {}\n\n return {\n '--gc-primary': theme.primary,\n '--gc-accent': theme.accent,\n '--gc-bg': theme.bg,\n '--gc-bg-secondary': theme.bgSecondary,\n '--gc-text': theme.text,\n '--gc-text-muted': theme.textMuted,\n '--gc-border': theme.border\n } as CSSProperties\n }, [theme])\n\n useEffect(() => {\n const percent = ((index + 1) / SLIDES.length) * 100\n onProgress?.(Math.round(percent))\n }, [index, onProgress])\n\n const move = useCallback((direction: -1 | 1) => {\n if (direction > 0 && index === SLIDES.length - 1) {\n setIndex(0)\n return\n }\n\n const next = index + direction\n if (next < 0 || next >= SLIDES.length) return\n setIndex(next)\n }, [index])\n\n const handleTouchStart = useCallback((event: TouchEvent) => {\n touchStartY.current = event.changedTouches[0]?.clientY ?? null\n }, [])\n\n const handleTouchEnd = useCallback((event: TouchEvent) => {\n if (touchStartY.current == null) return\n\n const endY = event.changedTouches[0]?.clientY ?? touchStartY.current\n const delta = touchStartY.current - endY\n\n if (Math.abs(delta) > SWIPE_THRESHOLD) {\n move(delta > 0 ? 1 : -1)\n }\n\n touchStartY.current = null\n }, [move])\n\n const handleComplete = useCallback(() => {\n onComplete({\n success: true,\n score: 100,\n data: {\n sequence: 'facility-slideshow',\n configId: config.id,\n completedAt: new Date().toISOString()\n }\n })\n }, [config.id, onComplete])\n\n const slide = SLIDES[index]\n const isLastSlide = index === SLIDES.length - 1\n const progress = ((index + 1) / SLIDES.length) * 100\n const rootClassName = className ? `${styles.wrapper} ${className}` : styles.wrapper\n\n return (\n
\n \n \n )\n}\n","import Component from './Component'\nimport type { GlitchComponentMetadata } from './types'\n\nexport default Component\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'onboarding2',\n displayName: 'Facility Slideshow',\n version: '1.0.0',\n paramSchema: {},\n defaultParams: {}\n}\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n GlitchTheme,\n GlitchComponentMetadata,\n SlideData\n} from './types'\n"],"names":["SWIPE_THRESHOLD","SLIDES","Component","config","onComplete","onProgress","theme","className","index","setIndex","useState","touchStartY","useRef","themeStyle","useMemo","useEffect","percent","move","useCallback","direction","next","handleTouchStart","event","_a","handleTouchEnd","endY","delta","handleComplete","slide","isLastSlide","progress","rootClassName","styles","jsx","jsxs","line","lineIndex","item","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vendor/glitch/glitch_sphere_paradox/glitch.manifest.json b/dist/vendor/glitch/glitch_sphere_paradox/glitch.manifest.json new file mode 100644 index 0000000..503f205 --- /dev/null +++ b/dist/vendor/glitch/glitch_sphere_paradox/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "sphere-paradox", + "displayName": "Create a Perfect Sphere", + "version": "1.0.0", + "folderName": "glitch_sphere_paradox", + "packageName": "sphere-paradox", + "entry": "dist/sphere-paradox.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "3d", + "paradox" + ] +} diff --git a/dist/vendor/glitch/glitch_sphere_paradox/sphere-paradox.js b/dist/vendor/glitch/glitch_sphere_paradox/sphere-paradox.js new file mode 100644 index 0000000..c3ecc55 --- /dev/null +++ b/dist/vendor/glitch/glitch_sphere_paradox/sphere-paradox.js @@ -0,0 +1,352 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._container_101xd_1{background:radial-gradient(circle at top,rgba(99,102,241,.14),transparent 48%),linear-gradient(180deg,var(--gc-bg-secondary, #12121a),var(--gc-bg, #0a0a0f));color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:Russo One,system-ui,-apple-system,sans-serif;line-height:1.5;width:100%;min-height:100%}._container_101xd_1,._container_101xd_1 *,._container_101xd_1 *:before,._container_101xd_1 *:after{box-sizing:inherit}._frame_101xd_20{width:100%;aspect-ratio:16 / 9;padding:var(--frame-pad, 1rem)}._squareLayout_101xd_26{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:var(--panel-gap, 1rem)}._squarePanel_101xd_35{position:relative;flex:0 0 auto;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent);border-radius:28px;box-shadow:0 28px 70px #00000040}._viewportPanel_101xd_44{background:radial-gradient(circle at 50% 18%,rgba(34,211,238,.2),transparent 32%),linear-gradient(160deg,rgba(18,18,26,.95),rgba(10,10,15,.98))}._contentPanel_101xd_50{background:linear-gradient(180deg,rgba(18,18,26,.96),rgba(10,10,15,.98)),var(--gc-bg, #0a0a0f)}._panelBody_101xd_56{width:100%;height:100%;padding:clamp(1rem,3vw,2rem);display:flex;flex-direction:column;justify-content:center;gap:1rem}._copy_101xd_66{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.15rem);line-height:1.65}._muted_101xd_73{color:var(--gc-text-muted, #9999a8)}._badge_101xd_77{align-self:flex-start;padding:.35rem .7rem;border-radius:999px;background:rgba(99,102,241,.14);color:var(--gc-primary, #6366f1);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}._startButton_101xd_88,._choiceButton_101xd_89,._completeButton_101xd_90{border:none;border-radius:14px;padding:.95rem 1.2rem;font:inherit;color:#fff;cursor:pointer;transition:transform .18s ease,filter .18s ease,border-color .18s ease,background .18s ease}._startButton_101xd_88:hover,._choiceButton_101xd_89:hover,._completeButton_101xd_90:hover{transform:translateY(-1px);filter:brightness(1.06)}._startButton_101xd_88,._completeButton_101xd_90{background:linear-gradient(135deg,var(--gc-primary, #6366f1),var(--gc-accent, #22d3ee))}._sliderSection_101xd_112{display:flex;flex-direction:column;gap:.8rem}._sliderHeader_101xd_118{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}._sliderLabel_101xd_125{color:var(--gc-text-muted, #9999a8);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}._sliderValue_101xd_132{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(1.2rem,2.4vw,1.8rem)}._valueInfinity_101xd_138{color:#ef4444}._slider_101xd_112{width:100%;height:12px;border-radius:999px;background:rgba(255,255,255,.08);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}._slider_101xd_112::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:26px;height:26px;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._slider_101xd_112::-moz-range-thumb{width:26px;height:26px;border:0;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._sliderInfinity_101xd_170{background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(239,68,68,.7))}._sliderInfinity_101xd_170::-webkit-slider-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderInfinity_101xd_170::-moz-range-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderHint_101xd_184{color:var(--gc-text-muted, #9999a8);font-size:.85rem}._statsOverlay_101xd_189{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:space-between;gap:.75rem;pointer-events:none}._stat_101xd_189{min-width:0;padding:.7rem .85rem;border-radius:16px;background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._statLabel_101xd_208{display:block;margin-bottom:.2rem;color:var(--gc-text-muted, #9999a8);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}._statValue_101xd_217{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(.95rem,1.8vw,1.15rem)}._statInfinity_101xd_223{color:#ef4444}._warning_101xd_227{display:flex;flex-direction:column;gap:1rem}._warningText_101xd_233,._warningQuestion_101xd_234{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.1rem);line-height:1.65}._warningQuestion_101xd_234{color:#ef4444}._warningChoices_101xd_245{display:flex;flex-direction:column;gap:.85rem}._choiceButton_101xd_89{text-align:left;background:rgba(255,255,255,.04);border:1px solid var(--gc-border, #2a2a3a)}._choiceInfinity_101xd_257{border-color:#ef444473}._choiceInfinity_101xd_257:hover{background:rgba(239,68,68,.14)}._choiceFinite_101xd_265{border-color:#22c55e73}._choiceFinite_101xd_265:hover{background:rgba(34,197,94,.14)}._resultStats_101xd_273{padding:1rem 1.1rem;border-radius:20px;background:rgba(255,255,255,.04);border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent)}._resultRow_101xd_280{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;color:var(--gc-text-muted, #9999a8);font-size:.92rem}._resultRow_101xd_280+._resultRow_101xd_280{border-top:1px solid rgba(255,255,255,.08)}._resultRow_101xd_280 span:last-child{font-family:SF Mono,Monaco,Consolas,monospace;font-weight:700}._resultMessage_101xd_298{margin:0;color:var(--gc-text-muted, #9999a8);font-size:clamp(.92rem,1.8vw,1rem);line-height:1.7}._resultMessage_101xd_298 strong{color:var(--gc-text, #e8e8ec)}._resultSuccess_101xd_309{color:#22c55e}._resultAccent_101xd_313{color:var(--gc-accent, #22d3ee)}@media (orientation: portrait),(max-aspect-ratio: 1 / 1){._frame_101xd_20{aspect-ratio:1 / 2}}@media (max-width: 768px){._squarePanel_101xd_35{border-radius:22px}._panelBody_101xd_56{padding:1rem}._statsOverlay_101xd_189{right:.75rem;bottom:.75rem;left:.75rem}._stat_101xd_189{padding:.55rem .7rem}}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); +import { jsx as e, jsxs as a, Fragment as _ } from "react/jsx-runtime"; +import { useState as N, useRef as F, useMemo as q, useEffect as z, useCallback as V } from "react"; +import { Canvas as I, useFrame as Q } from "@react-three/fiber"; +import { OrbitControls as W } from "@react-three/drei"; +import * as te from "three"; +const ne = "_container_101xd_1", ie = "_frame_101xd_20", se = "_squareLayout_101xd_26", ae = "_squarePanel_101xd_35", ce = "_viewportPanel_101xd_44", oe = "_contentPanel_101xd_50", re = "_panelBody_101xd_56", le = "_copy_101xd_66", de = "_muted_101xd_73", ue = "_badge_101xd_77", fe = "_startButton_101xd_88", he = "_choiceButton_101xd_89", me = "_completeButton_101xd_90", pe = "_sliderSection_101xd_112", _e = "_sliderHeader_101xd_118", ye = "_sliderLabel_101xd_125", xe = "_sliderValue_101xd_132", ge = "_valueInfinity_101xd_138", ve = "_slider_101xd_112", be = "_sliderInfinity_101xd_170", Se = "_sliderHint_101xd_184", we = "_statsOverlay_101xd_189", Ne = "_stat_101xd_189", Me = "_statLabel_101xd_208", Ie = "_statValue_101xd_217", $e = "_statInfinity_101xd_223", Re = "_warning_101xd_227", Le = "_warningText_101xd_233", Ce = "_warningQuestion_101xd_234", Be = "_warningChoices_101xd_245", Ve = "_choiceInfinity_101xd_257", ke = "_choiceFinite_101xd_265", qe = "_resultStats_101xd_273", ze = "_resultRow_101xd_280", Ae = "_resultMessage_101xd_298", Fe = "_resultSuccess_101xd_309", He = "_resultAccent_101xd_313", t = { + container: ne, + frame: ie, + squareLayout: se, + squarePanel: ae, + viewportPanel: ce, + contentPanel: oe, + panelBody: re, + copy: le, + muted: de, + badge: ue, + startButton: fe, + choiceButton: he, + completeButton: me, + sliderSection: pe, + sliderHeader: _e, + sliderLabel: ye, + sliderValue: xe, + valueInfinity: ge, + slider: ve, + sliderInfinity: be, + sliderHint: Se, + statsOverlay: we, + stat: Ne, + statLabel: Me, + statValue: Ie, + statInfinity: $e, + warning: Re, + warningText: Le, + warningQuestion: Ce, + warningChoices: Be, + choiceInfinity: Ve, + choiceFinite: ke, + resultStats: qe, + resultRow: ze, + resultMessage: Ae, + resultSuccess: Fe, + resultAccent: He +}, A = 5, y = 41; +function Oe(d) { + const r = Math.min(Math.max(d, A), y); + return r % 2 === 0 ? r + 1 : r; +} +function j(d) { + const r = [], n = d, f = 2 / n; + for (let u = 0; u < n; u++) + for (let m = 0; m < n; m++) + for (let o = 0; o < n; o++) { + const g = -1 + f * (u + 0.5), i = -1 + f * (m + 0.5), x = -1 + f * (o + 0.5), p = Math.sqrt(g * g + i * i + x * x), $ = f * 1.2; + p <= 1 && p > 1 - $ && r.push(g, i, x); + } + return { positions: r, count: r.length / 3 }; +} +function Te({ resolution: d, isInfinity: r }) { + const s = F(null), n = q(() => new te.Object3D(), []), { positions: f, count: u, cubeSize: m } = q(() => { + const i = Math.min(d, y), x = j(i), p = 2 / i * 0.85; + return { + positions: x.positions, + count: x.count, + cubeSize: p + }; + }, [d]); + z(() => { + if (!(!s.current || u === 0)) { + for (let i = 0; i < u; i++) + n.position.set( + f[i * 3], + f[i * 3 + 1], + f[i * 3 + 2] + ), n.scale.setScalar(m), n.updateMatrix(), s.current.setMatrixAt(i, n.matrix); + s.current.instanceMatrix.needsUpdate = !0, s.current.count = u; + } + }, [f, u, m, n]), Q((i) => { + s.current && (s.current.rotation.y = i.clock.elapsedTime * 0.2); + }); + const o = r ? "#ef4444" : "#818cf8"; + return /* @__PURE__ */ a("instancedMesh", { ref: s, args: [void 0, void 0, 1e4], frustumCulled: !1, children: [ + /* @__PURE__ */ e("boxGeometry", { args: [1, 1, 1] }), + /* @__PURE__ */ e( + "meshStandardMaterial", + { + color: o, + emissive: o, + emissiveIntensity: 0.05, + roughness: 0.4, + metalness: 0.3 + } + ) + ] }); +} +function k({ resolution: d, isInfinity: r }) { + return /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("ambientLight", { intensity: 0.3 }), + /* @__PURE__ */ e("directionalLight", { position: [5, 8, 5], intensity: 1.2, castShadow: !0 }), + /* @__PURE__ */ e("directionalLight", { position: [-3, -2, -4], intensity: 0.4, color: "#22d3ee" }), + /* @__PURE__ */ e("pointLight", { position: [0, 5, 0], intensity: 0.5 }), + /* @__PURE__ */ e(Te, { resolution: d, isInfinity: r }), + /* @__PURE__ */ e( + W, + { + enableZoom: !0, + enablePan: !1, + autoRotate: !1, + minDistance: 2, + maxDistance: 6 + } + ) + ] }); +} +function De() { + const d = F(null); + return Q((r) => { + d.current && (d.current.rotation.y = r.clock.elapsedTime * 0.3); + }), /* @__PURE__ */ a("mesh", { ref: d, children: [ + /* @__PURE__ */ e("sphereGeometry", { args: [1, 128, 128] }), + /* @__PURE__ */ e( + "meshStandardMaterial", + { + color: "#22d3ee", + emissive: "#22d3ee", + emissiveIntensity: 0.08, + roughness: 0.15, + metalness: 0.9, + envMapIntensity: 1 + } + ) + ] }); +} +function Ee() { + return /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("ambientLight", { intensity: 0.3 }), + /* @__PURE__ */ e("directionalLight", { position: [5, 8, 5], intensity: 1.5 }), + /* @__PURE__ */ e("directionalLight", { position: [-4, -2, -3], intensity: 0.5, color: "#6366f1" }), + /* @__PURE__ */ e("pointLight", { position: [0, 3, 3], intensity: 0.8, color: "#ffffff" }), + /* @__PURE__ */ e(De, {}), + /* @__PURE__ */ e( + W, + { + enableZoom: !1, + enablePan: !1, + autoRotate: !0, + autoRotateSpeed: 1.5 + } + ) + ] }); +} +function Pe({ + config: d, + onComplete: r, + onProgress: s, + theme: n, + className: f +}) { + const [u, m] = N("exploring"), [o, g] = N(A), [i, x] = N(null), [p, $] = N(!1), H = F(null), [v, K] = N({ + stacked: !1, + panelSize: 320, + gap: 16, + padding: 16 + }), M = o >= y, O = q(() => j(Math.min(o, y)).count, [o]); + z(() => { + const c = H.current; + if (!c || typeof ResizeObserver > "u") + return; + const l = () => { + const { width: h, height: S } = c.getBoundingClientRect(); + if (!h || !S) + return; + const C = S > h, E = Math.min(h, S), w = Math.round(Math.max(12, Math.min(28, E * 0.04))), B = Math.round(Math.max(12, Math.min(22, E * 0.03))), X = C ? h - w * 2 : (h - w * 2 - B) / 2, ee = C ? (S - w * 2 - B) / 2 : S - w * 2; + K({ + stacked: C, + panelSize: Math.max(0, Math.floor(Math.min(X, ee))), + gap: B, + padding: w + }); + }; + l(); + const b = new ResizeObserver(l); + return b.observe(c), () => b.disconnect(); + }, []); + const P = { + "--gc-primary": (n == null ? void 0 : n.primary) || "#6366f1", + "--gc-accent": (n == null ? void 0 : n.accent) || "#22d3ee", + "--gc-bg": (n == null ? void 0 : n.bg) || "#0a0a0f", + "--gc-bg-secondary": (n == null ? void 0 : n.bgSecondary) || "#12121a", + "--gc-text": (n == null ? void 0 : n.text) || "#e8e8ec", + "--gc-text-muted": (n == null ? void 0 : n.textMuted) || "#9999a8", + "--gc-border": (n == null ? void 0 : n.border) || "#2a2a3a", + "--panel-gap": `${v.gap}px`, + "--frame-pad": `${v.padding}px` + }, T = { + width: `${v.panelSize}px`, + height: `${v.panelSize}px` + }; + z(() => { + s == null || s(10); + }, [s]); + const G = V((c) => { + const l = Oe(parseInt(c.target.value, 10)); + g(l); + const b = 10 + l / y * 40; + s == null || s(Math.min(b, 50)), l >= y && !p && (m("warning"), $(!0), s == null || s(70)); + }, [p, s, y]), D = V((c) => { + x(c), m("result"), s == null || s(100); + }, [s]), Z = V(() => { + r({ + success: !0, + score: 100, + data: { + choice: i, + finalResolution: o, + exploredInfinity: p, + completedAt: (/* @__PURE__ */ new Date()).toISOString() + } + }); + }, [i, o, p, r]), U = (c) => c >= y ? "∞" : c.toString(), Y = (c, l) => l ? "∞" : c.toLocaleString(), J = (c, l) => { + if (l) + return "∞"; + const h = c * 80; + return h < 1024 ? `${h} B` : h < 1024 * 1024 ? `${(h / 1024).toFixed(1)} KB` : `${(h / (1024 * 1024)).toFixed(2)} MB`; + }, R = (c, l) => /* @__PURE__ */ a("div", { className: `${t.squarePanel} ${t.viewportPanel}`, style: T, children: [ + c, + /* @__PURE__ */ a("div", { className: t.statsOverlay, children: [ + /* @__PURE__ */ a("div", { className: t.stat, children: [ + /* @__PURE__ */ e("span", { className: t.statLabel, children: "Blocks" }), + /* @__PURE__ */ e("span", { className: `${t.statValue} ${l ? t.statInfinity : ""}`, children: Y(O, l) }) + ] }), + /* @__PURE__ */ a("div", { className: t.stat, children: [ + /* @__PURE__ */ e("span", { className: t.statLabel, children: "Memory" }), + /* @__PURE__ */ e("span", { className: `${t.statValue} ${l ? t.statInfinity : ""}`, children: J(O, l) }) + ] }) + ] }) + ] }), L = (c) => /* @__PURE__ */ e("div", { className: `${t.squarePanel} ${t.contentPanel}`, style: T, children: /* @__PURE__ */ e("div", { className: t.panelBody, children: c }) }); + return /* @__PURE__ */ e("div", { className: `${t.container} ${f || ""}`, style: P, children: /* @__PURE__ */ e("div", { ref: H, className: t.frame, children: /* @__PURE__ */ a( + "div", + { + className: t.squareLayout, + style: { flexDirection: v.stacked ? "column" : "row" }, + children: [ + u === "exploring" && /* @__PURE__ */ a(_, { children: [ + R( + /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: M }) }), + M + ), + L( + /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("div", { className: t.badge, children: "Resolution" }), + /* @__PURE__ */ e("p", { className: `${t.copy} ${t.muted}`, children: "Every step adds more cubes to the shell. Keep sliding until the approximation breaks open." }), + /* @__PURE__ */ a("div", { className: t.sliderSection, children: [ + /* @__PURE__ */ a("div", { className: t.sliderHeader, children: [ + /* @__PURE__ */ e("span", { className: t.sliderLabel, children: "Current Level" }), + /* @__PURE__ */ e("span", { className: `${t.sliderValue} ${M ? t.valueInfinity : ""}`, children: U(o) }) + ] }), + /* @__PURE__ */ e( + "input", + { + type: "range", + min: A, + max: y, + step: "2", + value: o, + onChange: G, + className: `${t.slider} ${M ? t.sliderInfinity : ""}` + } + ), + /* @__PURE__ */ e("div", { className: t.sliderHint, children: "Drag right to approach a perfectly smooth sphere." }) + ] }) + ] }) + ) + ] }), + u === "warning" && /* @__PURE__ */ a(_, { children: [ + R( + /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: !0 }) }), + !0 + ), + L( + /* @__PURE__ */ a("div", { className: t.warning, children: [ + /* @__PURE__ */ e("div", { className: t.badge, children: "Limit Reached" }), + /* @__PURE__ */ e("p", { className: t.warningText, children: "At infinite resolution, the sphere needs infinitely many blocks." }), + /* @__PURE__ */ e("p", { className: t.warningText, children: "Infinitely many blocks means infinite information and unbounded memory." }), + /* @__PURE__ */ e("p", { className: t.warningQuestion, children: "Do you want the perfect sphere anyway?" }), + /* @__PURE__ */ a("div", { className: t.warningChoices, children: [ + /* @__PURE__ */ e( + "button", + { + className: `${t.choiceButton} ${t.choiceInfinity}`, + onClick: () => D("infinity"), + children: "Embrace Infinity" + } + ), + /* @__PURE__ */ e( + "button", + { + className: `${t.choiceButton} ${t.choiceFinite}`, + onClick: () => D("finite"), + children: "Keep It Finite" + } + ) + ] }) + ] }) + ) + ] }), + u === "result" && /* @__PURE__ */ a(_, { children: [ + R( + i === "infinity" ? /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3], fov: 50 }, children: /* @__PURE__ */ e(Ee, {}) }) : /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: !1 }) }), + i === "infinity" + ), + L( + /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("div", { className: t.badge, children: i === "finite" ? "Finite Wins" : "Infinity Chosen" }), + /* @__PURE__ */ a("div", { className: t.resultStats, children: [ + /* @__PURE__ */ a("div", { className: t.resultRow, children: [ + /* @__PURE__ */ e("span", { children: "Memory Required" }), + /* @__PURE__ */ e("span", { className: i === "finite" ? t.resultSuccess : t.resultAccent, children: i === "finite" ? "Finite" : "∞" }) + ] }), + /* @__PURE__ */ a("div", { className: t.resultRow, children: [ + /* @__PURE__ */ e("span", { children: "Simulation Possible" }), + /* @__PURE__ */ e("span", { className: i === "finite" ? t.resultSuccess : t.resultAccent, children: i === "finite" ? "Yes" : "Only in theory" }) + ] }) + ] }), + /* @__PURE__ */ e("p", { className: t.resultMessage, children: i === "finite" ? /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("strong", { children: "Discreteness can be enough." }), + " A finite model never becomes perfect, but it can get close enough to feel continuous." + ] }) : /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("strong", { children: "Perfect smoothness costs infinity." }), + " A mathematically exact sphere cannot be simulated without infinite information." + ] }) }), + /* @__PURE__ */ e("button", { className: t.completeButton, onClick: Z, children: "Complete Challenge" }) + ] }) + ) + ] }) + ] + } + ) }) }); +} +const Ge = { + name: "sphere-paradox", + displayName: "Create a Perfect Sphere", + version: "1.0.0", + paramSchema: {}, + defaultParams: {} +}; +export { + Pe as default, + Ge as metadata +}; +//# sourceMappingURL=sphere-paradox.js.map diff --git a/dist/vendor/glitch/glitch_sphere_paradox/sphere-paradox.js.map b/dist/vendor/glitch/glitch_sphere_paradox/sphere-paradox.js.map new file mode 100644 index 0000000..159cadb --- /dev/null +++ b/dist/vendor/glitch/glitch_sphere_paradox/sphere-paradox.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sphere-paradox.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useState,\n useRef,\n useEffect,\n type CSSProperties,\n type ChangeEvent,\n type ReactNode\n} from 'react';\nimport { Canvas, useFrame } from '@react-three/fiber';\nimport { OrbitControls } from '@react-three/drei';\nimport * as THREE from 'three';\nimport styles from './styles.module.css';\nimport type { GlitchComponentProps } from './types';\n\ninterface VoxelSphereProps {\n resolution: number;\n isInfinity: boolean;\n}\n\nconst minResolution = 5;\nconst maxResolution = 41;\n\nfunction normalizeOddResolution(value: number): number {\n const clamped = Math.min(Math.max(value, minResolution), maxResolution);\n return clamped % 2 === 0 ? clamped + 1 : clamped;\n}\n\n// Generate voxel positions for a solid sphere (filled, not just shell)\nfunction generateVoxelSphere(resolution: number): { positions: number[], count: number } {\n const positions: number[] = [];\n const radius = 1.0;\n\n // Number of voxels along each axis\n const gridSize = resolution;\n const voxelSize = 2 / gridSize;\n\n for (let ix = 0; ix < gridSize; ix++) {\n for (let iy = 0; iy < gridSize; iy++) {\n for (let iz = 0; iz < gridSize; iz++) {\n // Center of this voxel\n const x = -1 + voxelSize * (ix + 0.5);\n const y = -1 + voxelSize * (iy + 0.5);\n const z = -1 + voxelSize * (iz + 0.5);\n\n const dist = Math.sqrt(x * x + y * y + z * z);\n\n // Include voxels on the surface (shell)\n // Shell thickness scales with voxel size\n const shellThickness = voxelSize * 1.2;\n if (dist <= radius && dist > radius - shellThickness) {\n positions.push(x, y, z);\n }\n }\n }\n }\n\n return { positions, count: positions.length / 3 };\n}\n\nfunction VoxelSphere({ resolution, isInfinity }: VoxelSphereProps) {\n const meshRef = useRef(null);\n const dummy = useMemo(() => new THREE.Object3D(), []);\n\n // Generate voxel data\n const { positions, count, cubeSize } = useMemo(() => {\n const effectiveRes = Math.min(resolution, maxResolution);\n const data = generateVoxelSphere(effectiveRes);\n const size = (2 / effectiveRes) * 0.85; // Slightly smaller to show gaps\n return {\n positions: data.positions,\n count: data.count,\n cubeSize: size\n };\n }, [resolution]);\n\n // Update instance matrices when positions change\n useEffect(() => {\n if (!meshRef.current || count === 0) return;\n\n for (let i = 0; i < count; i++) {\n dummy.position.set(\n positions[i * 3],\n positions[i * 3 + 1],\n positions[i * 3 + 2]\n );\n dummy.scale.setScalar(cubeSize);\n dummy.updateMatrix();\n meshRef.current.setMatrixAt(i, dummy.matrix);\n }\n meshRef.current.instanceMatrix.needsUpdate = true;\n meshRef.current.count = count;\n }, [positions, count, cubeSize, dummy]);\n\n // Rotate the sphere\n useFrame((state) => {\n if (meshRef.current) {\n meshRef.current.rotation.y = state.clock.elapsedTime * 0.2;\n }\n });\n\n const color = isInfinity ? '#ef4444' : '#818cf8';\n\n // Use a large initial count to avoid recreating the mesh\n const maxInstances = 10000;\n\n return (\n \n \n \n \n );\n}\n\nfunction Scene({ resolution, isInfinity }: VoxelSphereProps) {\n return (\n <>\n \n \n \n \n \n \n \n );\n}\n\n// Smooth parametric sphere for the \"infinity\" result\nfunction SmoothSphere() {\n const meshRef = useRef(null);\n\n useFrame((state) => {\n if (meshRef.current) {\n meshRef.current.rotation.y = state.clock.elapsedTime * 0.3;\n }\n });\n\n return (\n \n \n \n \n );\n}\n\nfunction SmoothSphereScene() {\n return (\n <>\n \n \n \n \n \n \n \n );\n}\n\ntype Phase = 'exploring' | 'warning' | 'result';\ntype Choice = 'infinity' | 'finite' | null;\n\ninterface LayoutState {\n stacked: boolean;\n panelSize: number;\n gap: number;\n padding: number;\n}\n\nexport default function SphereParadox({\n config: _config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n void _config;\n const [phase, setPhase] = useState('exploring');\n const [resolution, setResolution] = useState(minResolution);\n const [choice, setChoice] = useState(null);\n const [hasSeenWarning, setHasSeenWarning] = useState(false);\n const frameRef = useRef(null);\n const [layout, setLayout] = useState({\n stacked: false,\n panelSize: 320,\n gap: 16,\n padding: 16\n });\n const isAtInfinity = resolution >= maxResolution;\n\n // Calculate actual voxel count\n const voxelCount = useMemo(() => {\n const data = generateVoxelSphere(Math.min(resolution, maxResolution));\n return data.count;\n }, [resolution]);\n\n useEffect(() => {\n const frame = frameRef.current;\n if (!frame || typeof ResizeObserver === 'undefined') return;\n\n const measure = () => {\n const { width, height } = frame.getBoundingClientRect();\n if (!width || !height) return;\n\n const stacked = height > width;\n const minEdge = Math.min(width, height);\n const padding = Math.round(Math.max(12, Math.min(28, minEdge * 0.04)));\n const gap = Math.round(Math.max(12, Math.min(22, minEdge * 0.03)));\n const maxSquareWidth = stacked\n ? width - padding * 2\n : (width - padding * 2 - gap) / 2;\n const maxSquareHeight = stacked\n ? (height - padding * 2 - gap) / 2\n : height - padding * 2;\n\n setLayout({\n stacked,\n panelSize: Math.max(0, Math.floor(Math.min(maxSquareWidth, maxSquareHeight))),\n gap,\n padding\n });\n };\n\n measure();\n\n const observer = new ResizeObserver(measure);\n observer.observe(frame);\n\n return () => observer.disconnect();\n }, []);\n\n const cssVars = {\n '--gc-primary': theme?.primary || '#6366f1',\n '--gc-accent': theme?.accent || '#22d3ee',\n '--gc-bg': theme?.bg || '#0a0a0f',\n '--gc-bg-secondary': theme?.bgSecondary || '#12121a',\n '--gc-text': theme?.text || '#e8e8ec',\n '--gc-text-muted': theme?.textMuted || '#9999a8',\n '--gc-border': theme?.border || '#2a2a3a',\n '--panel-gap': `${layout.gap}px`,\n '--frame-pad': `${layout.padding}px`\n } as CSSProperties;\n\n const squareStyle = {\n width: `${layout.panelSize}px`,\n height: `${layout.panelSize}px`\n } as CSSProperties;\n\n useEffect(() => {\n onProgress?.(10);\n }, [onProgress]);\n\n const handleSliderChange = useCallback((e: ChangeEvent) => {\n const val = normalizeOddResolution(parseInt(e.target.value, 10));\n setResolution(val);\n\n const progress = 10 + (val / maxResolution) * 40;\n onProgress?.(Math.min(progress, 50));\n\n if (val >= maxResolution && !hasSeenWarning) {\n setPhase('warning');\n setHasSeenWarning(true);\n onProgress?.(70);\n }\n }, [hasSeenWarning, onProgress, maxResolution]);\n\n const handleChoice = useCallback((selectedChoice: 'infinity' | 'finite') => {\n setChoice(selectedChoice);\n setPhase('result');\n onProgress?.(100);\n }, [onProgress]);\n\n const handleComplete = useCallback(() => {\n // Both choices succeed - this is an educational step, not a gate\n onComplete({\n success: true,\n score: 100,\n data: {\n choice,\n finalResolution: resolution,\n exploredInfinity: hasSeenWarning,\n completedAt: new Date().toISOString()\n }\n });\n }, [choice, resolution, hasSeenWarning, onComplete]);\n\n const formatResolution = (res: number) => {\n if (res >= maxResolution) return '∞';\n return res.toString();\n };\n\n const formatVoxelCount = (count: number, isInf: boolean) => {\n if (isInf) return '∞';\n return count.toLocaleString();\n };\n\n const formatMemory = (count: number, isInf: boolean) => {\n if (isInf) return '∞';\n const bytesPerVoxel = 80;\n const bytes = count * bytesPerVoxel;\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;\n };\n\n const renderViewportPanel = (scene: ReactNode, isInf: boolean) => (\n
\n {scene}\n
\n
\n Blocks\n \n {formatVoxelCount(voxelCount, isInf)}\n \n
\n
\n Memory\n \n {formatMemory(voxelCount, isInf)}\n \n
\n
\n
\n );\n\n const renderContentPanel = (content: ReactNode) => (\n
\n
{content}
\n
\n );\n\n return (\n
\n
\n \n {phase === 'exploring' && (\n <>\n {renderViewportPanel(\n \n \n ,\n isAtInfinity\n )}\n {renderContentPanel(\n <>\n
Resolution
\n

\n Every step adds more cubes to the shell. Keep sliding until the approximation breaks open.\n

\n\n
\n
\n Current Level\n \n {formatResolution(resolution)}\n \n
\n \n
\n Drag right to approach a perfectly smooth sphere.\n
\n
\n \n )}\n \n )}\n\n {phase === 'warning' && (\n <>\n {renderViewportPanel(\n \n \n ,\n true\n )}\n {renderContentPanel(\n
\n
Limit Reached
\n

\n At infinite resolution, the sphere needs infinitely many blocks.\n

\n

\n Infinitely many blocks means infinite information and unbounded memory.\n

\n

\n Do you want the perfect sphere anyway?\n

\n
\n handleChoice('infinity')}\n >\n Embrace Infinity\n \n handleChoice('finite')}\n >\n Keep It Finite\n \n
\n
\n )}\n \n )}\n\n {phase === 'result' && (\n <>\n {renderViewportPanel(\n choice === 'infinity' ? (\n \n \n \n ) : (\n \n \n \n ),\n choice === 'infinity'\n )}\n {renderContentPanel(\n <>\n
\n {choice === 'finite' ? 'Finite Wins' : 'Infinity Chosen'}\n
\n
\n
\n Memory Required\n \n {choice === 'finite' ? 'Finite' : '∞'}\n \n
\n
\n Simulation Possible\n \n {choice === 'finite' ? 'Yes' : 'Only in theory'}\n \n
\n
\n\n

\n {choice === 'finite' ? (\n <>\n Discreteness can be enough. A finite model never becomes perfect, but it can get close enough to feel continuous.\n \n ) : (\n <>\n Perfect smoothness costs infinity. A mathematically exact sphere cannot be simulated without infinite information.\n \n )}\n

\n\n \n \n )}\n \n )}\n
\n
\n
\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'sphere-paradox',\n displayName: 'Create a Perfect Sphere',\n version: '1.0.0',\n paramSchema: {},\n defaultParams: {}\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult\n} from './types';\n"],"names":["minResolution","maxResolution","normalizeOddResolution","value","clamped","generateVoxelSphere","resolution","positions","gridSize","voxelSize","ix","iy","iz","x","y","z","dist","shellThickness","VoxelSphere","isInfinity","meshRef","useRef","dummy","useMemo","THREE","count","cubeSize","effectiveRes","data","size","useEffect","useFrame","state","color","jsxs","jsx","Scene","Fragment","OrbitControls","SmoothSphere","SmoothSphereScene","SphereParadox","_config","onComplete","onProgress","theme","className","phase","setPhase","useState","setResolution","choice","setChoice","hasSeenWarning","setHasSeenWarning","frameRef","layout","setLayout","isAtInfinity","voxelCount","frame","measure","width","height","stacked","minEdge","padding","gap","maxSquareWidth","maxSquareHeight","observer","cssVars","squareStyle","handleSliderChange","useCallback","e","val","progress","handleChoice","selectedChoice","handleComplete","formatResolution","res","formatVoxelCount","isInf","formatMemory","bytes","renderViewportPanel","scene","styles","renderContentPanel","content","Canvas","metadata"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqBMA,IAAgB,GAChBC,IAAgB;AAEtB,SAASC,GAAuBC,GAAuB;AAC/C,QAAAC,IAAU,KAAK,IAAI,KAAK,IAAID,GAAOH,CAAa,GAAGC,CAAa;AACtE,SAAOG,IAAU,MAAM,IAAIA,IAAU,IAAIA;AAC3C;AAGA,SAASC,EAAoBC,GAA4D;AACvF,QAAMC,IAAsB,CAAA,GAItBC,IAAWF,GACXG,IAAY,IAAID;AAEtB,WAASE,IAAK,GAAGA,IAAKF,GAAUE;AAC9B,aAASC,IAAK,GAAGA,IAAKH,GAAUG;AAC9B,eAASC,IAAK,GAAGA,IAAKJ,GAAUI,KAAM;AAE9B,cAAAC,IAAI,KAAKJ,KAAaC,IAAK,MAC3BI,IAAI,KAAKL,KAAaE,IAAK,MAC3BI,IAAI,KAAKN,KAAaG,IAAK,MAE3BI,IAAO,KAAK,KAAKH,IAAIA,IAAIC,IAAIA,IAAIC,IAAIA,CAAC,GAItCE,IAAiBR,IAAY;AACnC,QAAIO,KAAQ,KAAUA,IAAO,IAASC,KAC1BV,EAAA,KAAKM,GAAGC,GAAGC,CAAC;AAAA,MAE1B;AAIJ,SAAO,EAAE,WAAAR,GAAW,OAAOA,EAAU,SAAS,EAAE;AAClD;AAEA,SAASW,GAAY,EAAE,YAAAZ,GAAY,YAAAa,KAAgC;AAC3D,QAAAC,IAAUC,EAA4B,IAAI,GAC1CC,IAAQC,EAAQ,MAAM,IAAIC,GAAM,SAAS,GAAG,CAAA,CAAE,GAG9C,EAAE,WAAAjB,GAAW,OAAAkB,GAAO,UAAAC,EAAS,IAAIH,EAAQ,MAAM;AACnD,UAAMI,IAAe,KAAK,IAAIrB,GAAYL,CAAa,GACjD2B,IAAOvB,EAAoBsB,CAAY,GACvCE,IAAQ,IAAIF,IAAgB;AAC3B,WAAA;AAAA,MACL,WAAWC,EAAK;AAAA,MAChB,OAAOA,EAAK;AAAA,MACZ,UAAUC;AAAA,IAAA;AAAA,EACZ,GACC,CAACvB,CAAU,CAAC;AAGf,EAAAwB,EAAU,MAAM;AACV,QAAA,GAACV,EAAQ,WAAWK,MAAU,IAElC;AAAA,eAAS,IAAI,GAAG,IAAIA,GAAO;AACzB,QAAAH,EAAM,SAAS;AAAA,UACbf,EAAU,IAAI,CAAC;AAAA,UACfA,EAAU,IAAI,IAAI,CAAC;AAAA,UACnBA,EAAU,IAAI,IAAI,CAAC;AAAA,QAAA,GAEfe,EAAA,MAAM,UAAUI,CAAQ,GAC9BJ,EAAM,aAAa,GACnBF,EAAQ,QAAQ,YAAY,GAAGE,EAAM,MAAM;AAErC,MAAAF,EAAA,QAAQ,eAAe,cAAc,IAC7CA,EAAQ,QAAQ,QAAQK;AAAA;AAAA,KACvB,CAAClB,GAAWkB,GAAOC,GAAUJ,CAAK,CAAC,GAGtCS,EAAS,CAACC,MAAU;AAClB,IAAIZ,EAAQ,YACVA,EAAQ,QAAQ,SAAS,IAAIY,EAAM,MAAM,cAAc;AAAA,EACzD,CACD;AAEK,QAAAC,IAAQd,IAAa,YAAY;AAMrC,SAAA,gBAAAe,EAAC,iBAAc,EAAA,KAAKd,GAAS,MAAM,CAAC,QAAW,QAH5B,GAGmD,GAAG,eAAe,IACtF,UAAA;AAAA,IAAA,gBAAAe,EAAC,iBAAY,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG;AAAA,IAC9B,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAAF;AAAA,QACA,UAAUA;AAAA,QACV,mBAAmB;AAAA,QACnB,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,SAASG,EAAM,EAAE,YAAA9B,GAAY,YAAAa,KAAgC;AAC3D,SAEI,gBAAAe,EAAAG,GAAA,EAAA,UAAA;AAAA,IAAC,gBAAAF,EAAA,gBAAA,EAAa,WAAW,IAAK,CAAA;AAAA,IAC9B,gBAAAA,EAAC,oBAAiB,EAAA,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,WAAW,KAAK,YAAU,GAAC,CAAA;AAAA,IAClE,gBAAAA,EAAC,oBAAiB,EAAA,UAAU,CAAC,IAAI,IAAI,EAAE,GAAG,WAAW,KAAK,OAAM,UAAU,CAAA;AAAA,IAC1E,gBAAAA,EAAC,gBAAW,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,WAAW,KAAK;AAAA,IACjD,gBAAAA,EAACjB,IAAY,EAAA,YAAAZ,GAAwB,YAAAa,EAAwB,CAAA;AAAA,IAC7D,gBAAAgB;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,EACF,EAAA,CAAA;AAEJ;AAGA,SAASC,KAAe;AAChB,QAAAnB,IAAUC,EAAmB,IAAI;AAEvC,SAAAU,EAAS,CAACC,MAAU;AAClB,IAAIZ,EAAQ,YACVA,EAAQ,QAAQ,SAAS,IAAIY,EAAM,MAAM,cAAc;AAAA,EACzD,CACD,GAGC,gBAAAE,EAAC,QAAK,EAAA,KAAKd,GACT,UAAA;AAAA,IAAA,gBAAAe,EAAC,oBAAe,MAAM,CAAC,GAAG,KAAK,GAAG,GAAG;AAAA,IACrC,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,UAAS;AAAA,QACT,mBAAmB;AAAA,QACnB,WAAW;AAAA,QACX,WAAW;AAAA,QACX,iBAAiB;AAAA,MAAA;AAAA,IACnB;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,SAASK,KAAoB;AAC3B,SAEI,gBAAAN,EAAAG,GAAA,EAAA,UAAA;AAAA,IAAC,gBAAAF,EAAA,gBAAA,EAAa,WAAW,IAAK,CAAA;AAAA,IAC9B,gBAAAA,EAAC,sBAAiB,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,WAAW,KAAK;AAAA,IACvD,gBAAAA,EAAC,oBAAiB,EAAA,UAAU,CAAC,IAAI,IAAI,EAAE,GAAG,WAAW,KAAK,OAAM,UAAU,CAAA;AAAA,IAC1E,gBAAAA,EAAC,cAAW,EAAA,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,WAAW,KAAK,OAAM,UAAU,CAAA;AAAA,sBAChEI,IAAa,EAAA;AAAA,IACd,gBAAAJ;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,iBAAiB;AAAA,MAAA;AAAA,IACnB;AAAA,EACF,EAAA,CAAA;AAEJ;AAYA,SAAwBG,GAAc;AAAA,EACpC,QAAQC;AAAA,EACR,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AACF,GAAyB;AAEvB,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAgB,WAAW,GAC/C,CAAC3C,GAAY4C,CAAa,IAAID,EAASjD,CAAa,GACpD,CAACmD,GAAQC,CAAS,IAAIH,EAAiB,IAAI,GAC3C,CAACI,GAAgBC,CAAiB,IAAIL,EAAS,EAAK,GACpDM,IAAWlC,EAAuB,IAAI,GACtC,CAACmC,GAAQC,CAAS,IAAIR,EAAsB;AAAA,IAChD,SAAS;AAAA,IACT,WAAW;AAAA,IACX,KAAK;AAAA,IACL,SAAS;AAAA,EAAA,CACV,GACKS,IAAepD,KAAcL,GAG7B0D,IAAapC,EAAQ,MACZlB,EAAoB,KAAK,IAAIC,GAAYL,CAAa,CAAC,EACxD,OACX,CAACK,CAAU,CAAC;AAEf,EAAAwB,EAAU,MAAM;AACd,UAAM8B,IAAQL,EAAS;AACnB,QAAA,CAACK,KAAS,OAAO,iBAAmB;AAAa;AAErD,UAAMC,IAAU,MAAM;AACpB,YAAM,EAAE,OAAAC,GAAO,QAAAC,EAAO,IAAIH,EAAM,sBAAsB;AAClD,UAAA,CAACE,KAAS,CAACC;AAAQ;AAEvB,YAAMC,IAAUD,IAASD,GACnBG,IAAU,KAAK,IAAIH,GAAOC,CAAM,GAChCG,IAAU,KAAK,MAAM,KAAK,IAAI,IAAI,KAAK,IAAI,IAAID,IAAU,IAAI,CAAC,CAAC,GAC/DE,IAAM,KAAK,MAAM,KAAK,IAAI,IAAI,KAAK,IAAI,IAAIF,IAAU,IAAI,CAAC,CAAC,GAC3DG,IAAiBJ,IACnBF,IAAQI,IAAU,KACjBJ,IAAQI,IAAU,IAAIC,KAAO,GAC5BE,KAAkBL,KACnBD,IAASG,IAAU,IAAIC,KAAO,IAC/BJ,IAASG,IAAU;AAEb,MAAAT,EAAA;AAAA,QACR,SAAAO;AAAA,QACA,WAAW,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,IAAII,GAAgBC,EAAe,CAAC,CAAC;AAAA,QAC5E,KAAAF;AAAA,QACA,SAAAD;AAAA,MAAA,CACD;AAAA,IAAA;AAGK,IAAAL;AAEF,UAAAS,IAAW,IAAI,eAAeT,CAAO;AAC3C,WAAAS,EAAS,QAAQV,CAAK,GAEf,MAAMU,EAAS;EACxB,GAAG,CAAE,CAAA;AAEL,QAAMC,IAAU;AAAA,IACd,iBAAgB1B,KAAA,gBAAAA,EAAO,YAAW;AAAA,IAClC,gBAAeA,KAAA,gBAAAA,EAAO,WAAU;AAAA,IAChC,YAAWA,KAAA,gBAAAA,EAAO,OAAM;AAAA,IACxB,sBAAqBA,KAAA,gBAAAA,EAAO,gBAAe;AAAA,IAC3C,cAAaA,KAAA,gBAAAA,EAAO,SAAQ;AAAA,IAC5B,oBAAmBA,KAAA,gBAAAA,EAAO,cAAa;AAAA,IACvC,gBAAeA,KAAA,gBAAAA,EAAO,WAAU;AAAA,IAChC,eAAe,GAAGW,EAAO,GAAG;AAAA,IAC5B,eAAe,GAAGA,EAAO,OAAO;AAAA,EAAA,GAG5BgB,IAAc;AAAA,IAClB,OAAO,GAAGhB,EAAO,SAAS;AAAA,IAC1B,QAAQ,GAAGA,EAAO,SAAS;AAAA,EAAA;AAG7B,EAAA1B,EAAU,MAAM;AACd,IAAAc,KAAA,QAAAA,EAAa;AAAA,EAAE,GACd,CAACA,CAAU,CAAC;AAET,QAAA6B,IAAqBC,EAAY,CAACC,MAAqC;AAC3E,UAAMC,IAAM1E,GAAuB,SAASyE,EAAE,OAAO,OAAO,EAAE,CAAC;AAC/D,IAAAzB,EAAc0B,CAAG;AAEX,UAAAC,IAAW,KAAMD,IAAM3E,IAAiB;AAC9C,IAAA2C,KAAA,QAAAA,EAAa,KAAK,IAAIiC,GAAU,EAAE,IAE9BD,KAAO3E,KAAiB,CAACoD,MAC3BL,EAAS,SAAS,GAClBM,EAAkB,EAAI,GACtBV,KAAA,QAAAA,EAAa;AAAA,EAEd,GAAA,CAACS,GAAgBT,GAAY3C,CAAa,CAAC,GAExC6E,IAAeJ,EAAY,CAACK,MAA0C;AAC1E,IAAA3B,EAAU2B,CAAc,GACxB/B,EAAS,QAAQ,GACjBJ,KAAA,QAAAA,EAAa;AAAA,EAAG,GACf,CAACA,CAAU,CAAC,GAEToC,IAAiBN,EAAY,MAAM;AAE5B,IAAA/B,EAAA;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,QACJ,QAAAQ;AAAA,QACA,iBAAiB7C;AAAA,QACjB,kBAAkB+C;AAAA,QAClB,cAAa,oBAAI,KAAK,GAAE,YAAY;AAAA,MACtC;AAAA,IAAA,CACD;AAAA,KACA,CAACF,GAAQ7C,GAAY+C,GAAgBV,CAAU,CAAC,GAE7CsC,IAAmB,CAACC,MACpBA,KAAOjF,IAAsB,MAC1BiF,EAAI,YAGPC,IAAmB,CAAC1D,GAAe2D,MACnCA,IAAc,MACX3D,EAAM,kBAGT4D,IAAe,CAAC5D,GAAe2D,MAAmB;AAClD,QAAAA;AAAc,aAAA;AAElB,UAAME,IAAQ7D,IADQ;AAEtB,WAAI6D,IAAQ,OAAa,GAAGA,CAAK,OAC7BA,IAAQ,OAAO,OAAa,IAAIA,IAAQ,MAAM,QAAQ,CAAC,CAAC,QACrD,IAAIA,KAAS,OAAO,OAAO,QAAQ,CAAC,CAAC;AAAA,EAAA,GAGxCC,IAAsB,CAACC,GAAkBJ,wBAC5C,OAAI,EAAA,WAAW,GAAGK,EAAO,WAAW,IAAIA,EAAO,aAAa,IAAI,OAAOjB,GACrE,UAAA;AAAA,IAAAgB;AAAA,IACA,gBAAAtD,EAAA,OAAA,EAAI,WAAWuD,EAAO,cACrB,UAAA;AAAA,MAAC,gBAAAvD,EAAA,OAAA,EAAI,WAAWuD,EAAO,MACrB,UAAA;AAAA,QAAA,gBAAAtD,EAAC,QAAK,EAAA,WAAWsD,EAAO,WAAW,UAAM,UAAA;AAAA,QACxC,gBAAAtD,EAAA,QAAA,EAAK,WAAW,GAAGsD,EAAO,SAAS,IAAIL,IAAQK,EAAO,eAAe,EAAE,IACrE,UAAiBN,EAAAxB,GAAYyB,CAAK,GACrC;AAAA,MAAA,GACF;AAAA,MACC,gBAAAlD,EAAA,OAAA,EAAI,WAAWuD,EAAO,MACrB,UAAA;AAAA,QAAA,gBAAAtD,EAAC,QAAK,EAAA,WAAWsD,EAAO,WAAW,UAAM,UAAA;AAAA,QACxC,gBAAAtD,EAAA,QAAA,EAAK,WAAW,GAAGsD,EAAO,SAAS,IAAIL,IAAQK,EAAO,eAAe,EAAE,IACrE,UAAaJ,EAAA1B,GAAYyB,CAAK,GACjC;AAAA,MAAA,GACF;AAAA,IAAA,GACF;AAAA,EACF,EAAA,CAAA,GAGIM,IAAqB,CAACC,MAC1B,gBAAAxD,EAAC,SAAI,WAAW,GAAGsD,EAAO,WAAW,IAAIA,EAAO,YAAY,IAAI,OAAOjB,GACrE,UAAA,gBAAArC,EAAC,SAAI,WAAWsD,EAAO,WAAY,UAAAE,EAAQ,CAAA,EAC7C,CAAA;AAGF,2BACG,OAAI,EAAA,WAAW,GAAGF,EAAO,SAAS,IAAI3C,KAAa,EAAE,IAAI,OAAOyB,GAC/D,UAAC,gBAAApC,EAAA,OAAA,EAAI,KAAKoB,GAAU,WAAWkC,EAAO,OACpC,UAAA,gBAAAvD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWuD,EAAO;AAAA,MAClB,OAAO,EAAE,eAAejC,EAAO,UAAU,WAAW,MAAM;AAAA,MAE7D,UAAA;AAAA,QAAAT,MAAU,eAEN,gBAAAb,EAAAG,GAAA,EAAA,UAAA;AAAA,UAAAkD;AAAA,8BACEK,GAAO,EAAA,QAAQ,EAAE,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,MAC5C,UAAA,gBAAAzD,EAACC,KAAM,YAAA9B,GAAwB,YAAYoD,EAAc,CAAA,GAC3D;AAAA,YACAA;AAAA,UACF;AAAA,UACCgC;AAAA,YAEG,gBAAAxD,EAAAG,GAAA,EAAA,UAAA;AAAA,cAAA,gBAAAF,EAAC,OAAI,EAAA,WAAWsD,EAAO,OAAO,UAAU,cAAA;AAAA,cACxC,gBAAAtD,EAAC,KAAE,EAAA,WAAW,GAAGsD,EAAO,IAAI,IAAIA,EAAO,KAAK,IAAI,UAEhD,6FAAA,CAAA;AAAA,cAEC,gBAAAvD,EAAA,OAAA,EAAI,WAAWuD,EAAO,eACrB,UAAA;AAAA,gBAAC,gBAAAvD,EAAA,OAAA,EAAI,WAAWuD,EAAO,cACrB,UAAA;AAAA,kBAAA,gBAAAtD,EAAC,QAAK,EAAA,WAAWsD,EAAO,aAAa,UAAa,iBAAA;AAAA,kBACjD,gBAAAtD,EAAA,QAAA,EAAK,WAAW,GAAGsD,EAAO,WAAW,IAAI/B,IAAe+B,EAAO,gBAAgB,EAAE,IAC/E,UAAAR,EAAiB3E,CAAU,GAC9B;AAAA,gBAAA,GACF;AAAA,gBACA,gBAAA6B;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,KAAKnC;AAAA,oBACL,KAAKC;AAAA,oBACL,MAAK;AAAA,oBACL,OAAOK;AAAA,oBACP,UAAUmE;AAAA,oBACV,WAAW,GAAGgB,EAAO,MAAM,IAAI/B,IAAe+B,EAAO,iBAAiB,EAAE;AAAA,kBAAA;AAAA,gBAC1E;AAAA,gBACC,gBAAAtD,EAAA,OAAA,EAAI,WAAWsD,EAAO,YAAY,UAEnC,qDAAA;AAAA,cAAA,GACF;AAAA,YAAA,GACF;AAAA,UACF;AAAA,QAAA,GACF;AAAA,QAGD1C,MAAU,aAEN,gBAAAb,EAAAG,GAAA,EAAA,UAAA;AAAA,UAAAkD;AAAA,8BACEK,GAAO,EAAA,QAAQ,EAAE,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,MAC5C,UAAA,gBAAAzD,EAACC,KAAM,YAAA9B,GAAwB,YAAY,GAAM,CAAA,GACnD;AAAA,YACA;AAAA,UACF;AAAA,UACCoF;AAAA,YACE,gBAAAxD,EAAA,OAAA,EAAI,WAAWuD,EAAO,SACrB,UAAA;AAAA,cAAA,gBAAAtD,EAAC,OAAI,EAAA,WAAWsD,EAAO,OAAO,UAAa,iBAAA;AAAA,cAC1C,gBAAAtD,EAAA,KAAA,EAAE,WAAWsD,EAAO,aAAa,UAElC,oEAAA;AAAA,cACC,gBAAAtD,EAAA,KAAA,EAAE,WAAWsD,EAAO,aAAa,UAElC,2EAAA;AAAA,cACC,gBAAAtD,EAAA,KAAA,EAAE,WAAWsD,EAAO,iBAAiB,UAEtC,0CAAA;AAAA,cACC,gBAAAvD,EAAA,OAAA,EAAI,WAAWuD,EAAO,gBACrB,UAAA;AAAA,gBAAA,gBAAAtD;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAW,GAAGsD,EAAO,YAAY,IAAIA,EAAO,cAAc;AAAA,oBAC1D,SAAS,MAAMX,EAAa,UAAU;AAAA,oBACvC,UAAA;AAAA,kBAAA;AAAA,gBAED;AAAA,gBACA,gBAAA3C;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAW,GAAGsD,EAAO,YAAY,IAAIA,EAAO,YAAY;AAAA,oBACxD,SAAS,MAAMX,EAAa,QAAQ;AAAA,oBACrC,UAAA;AAAA,kBAAA;AAAA,gBAED;AAAA,cAAA,GACF;AAAA,YAAA,GACF;AAAA,UACF;AAAA,QAAA,GACF;AAAA,QAGD/B,MAAU,YAEN,gBAAAb,EAAAG,GAAA,EAAA,UAAA;AAAA,UAAAkD;AAAA,YACCpC,MAAW,aACT,gBAAAhB,EAACyD,GAAO,EAAA,QAAQ,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,MAC1C,4BAACpD,IAAkB,CAAA,CAAA,GACrB,IAEA,gBAAAL,EAACyD,KAAO,QAAQ,EAAE,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,MAC5C,UAAA,gBAAAzD,EAACC,KAAM,YAAA9B,GAAwB,YAAY,GAAO,CAAA,GACpD;AAAA,YAEF6C,MAAW;AAAA,UACb;AAAA,UACCuC;AAAA,YAEG,gBAAAxD,EAAAG,GAAA,EAAA,UAAA;AAAA,cAAA,gBAAAF,EAAC,SAAI,WAAWsD,EAAO,OACpB,UAAWtC,MAAA,WAAW,gBAAgB,kBACzC,CAAA;AAAA,cACC,gBAAAjB,EAAA,OAAA,EAAI,WAAWuD,EAAO,aACrB,UAAA;AAAA,gBAAC,gBAAAvD,EAAA,OAAA,EAAI,WAAWuD,EAAO,WACrB,UAAA;AAAA,kBAAA,gBAAAtD,EAAC,UAAK,UAAe,kBAAA,CAAA;AAAA,kBACpB,gBAAAA,EAAA,QAAA,EAAK,WAAWgB,MAAW,WAAWsC,EAAO,gBAAgBA,EAAO,cAClE,UAAAtC,MAAW,WAAW,WAAW,KACpC;AAAA,gBAAA,GACF;AAAA,gBACC,gBAAAjB,EAAA,OAAA,EAAI,WAAWuD,EAAO,WACrB,UAAA;AAAA,kBAAA,gBAAAtD,EAAC,UAAK,UAAmB,sBAAA,CAAA;AAAA,kBACxB,gBAAAA,EAAA,QAAA,EAAK,WAAWgB,MAAW,WAAWsC,EAAO,gBAAgBA,EAAO,cAClE,UAAAtC,MAAW,WAAW,QAAQ,kBACjC;AAAA,gBAAA,GACF;AAAA,cAAA,GACF;AAAA,gCAEC,KAAE,EAAA,WAAWsC,EAAO,eAClB,UAAAtC,MAAW,WAER,gBAAAjB,EAAAG,GAAA,EAAA,UAAA;AAAA,gBAAA,gBAAAF,EAAC,YAAO,UAA2B,8BAAA,CAAA;AAAA,gBAAS;AAAA,cAAA,EAAA,CAC9C,IAGE,gBAAAD,EAAAG,GAAA,EAAA,UAAA;AAAA,gBAAA,gBAAAF,EAAC,YAAO,UAAkC,qCAAA,CAAA;AAAA,gBAAS;AAAA,cAAA,EAAA,CACrD,EAEJ,CAAA;AAAA,gCAEC,UAAO,EAAA,WAAWsD,EAAO,gBAAgB,SAAST,GAAgB,UAEnE,sBAAA;AAAA,YAAA,GACF;AAAA,UACF;AAAA,QAAA,GACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,EAGF,CAAA,EACF,CAAA;AAEJ;AC7eO,MAAMa,KAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AAAA,EACT,aAAa,CAAC;AAAA,EACd,eAAe,CAAC;AAClB;"} \ No newline at end of file diff --git a/dist/vendor/glitch/glitch_voxel_universe/glitch.manifest.json b/dist/vendor/glitch/glitch_voxel_universe/glitch.manifest.json new file mode 100644 index 0000000..978bde3 --- /dev/null +++ b/dist/vendor/glitch/glitch_voxel_universe/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "voxel-universe", + "displayName": "Voxel Universe", + "version": "1.0.0", + "folderName": "glitch_voxel_universe", + "packageName": "@glitch-components/voxel-universe", + "entry": "dist/voxel_universe.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "voxel", + "geometry" + ] +} diff --git a/dist/vendor/glitch/glitch_voxel_universe/host.js b/dist/vendor/glitch/glitch_voxel_universe/host.js new file mode 100644 index 0000000..434595e --- /dev/null +++ b/dist/vendor/glitch/glitch_voxel_universe/host.js @@ -0,0 +1,29 @@ +import React from "react"; +import { createRoot } from "react-dom/client"; +import VoxelUniverse, { metadata } from "./voxel_universe.js"; + +const rootElement = document.getElementById("root"); + +if (rootElement) { + createRoot(rootElement).render( + React.createElement(VoxelUniverse, { + config: { + id: "voxel-universe-hosted", + name: metadata?.name ?? "voxel_universe", + version: metadata?.version ?? "1.0.0", + params: metadata?.defaultParams ?? {} + }, + theme: { + primary: "#45c4b0", + accent: "#ff7a59", + bg: "#0d1117", + bgSecondary: "#182237", + text: "#f1f4ef", + textMuted: "#b6c0d4", + border: "#34516f" + }, + onProgress: () => {}, + onComplete: () => {} + }) + ); +} diff --git a/dist/vendor/glitch/glitch_voxel_universe/index.html b/dist/vendor/glitch/glitch_voxel_universe/index.html new file mode 100644 index 0000000..0db95d2 --- /dev/null +++ b/dist/vendor/glitch/glitch_voxel_universe/index.html @@ -0,0 +1,34 @@ + + + + + + Voxel Universe + + + + +
+ + + diff --git a/dist/vendor/glitch/glitch_voxel_universe/voxel_universe.js b/dist/vendor/glitch/glitch_voxel_universe/voxel_universe.js new file mode 100644 index 0000000..cf33839 --- /dev/null +++ b/dist/vendor/glitch/glitch_voxel_universe/voxel_universe.js @@ -0,0 +1,14400 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._wrapper_1xs2z_1{--gc-paper: #f2f0ea;box-sizing:border-box;width:100%;height:100%;min-height:100%;margin:0;padding:0;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:24px;background:radial-gradient(circle at 12% 8%,color-mix(in srgb,var(--gc-primary, #45c4b0) 16%,transparent),transparent 34%),radial-gradient(circle at 88% 10%,color-mix(in srgb,var(--gc-accent, #ff7a59) 14%,transparent),transparent 28%),linear-gradient(160deg,var(--gc-bg, #0d1117),var(--gc-bg-secondary, #182237));color:var(--gc-text, #f1f4ef);box-shadow:0 24px 64px #00000047;display:grid;place-items:center}._wrapper_1xs2z_1,._wrapper_1xs2z_1 *,._wrapper_1xs2z_1 *:before,._wrapper_1xs2z_1 *:after{box-sizing:inherit}._canvasShell_1xs2z_28{position:relative;overflow:hidden;flex:none;border:1px solid rgb(0 0 0 / 22%);background:var(--gc-paper, #f2f0ea);box-shadow:inset 0 0 0 1px #ffffff1f}._canvas_1xs2z_28{width:100%;height:100%}._canvas_1xs2z_28 canvas{display:block;width:100%;height:100%}._viewportLabels_1xs2z_48{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));pointer-events:none}._viewportLabels_1xs2z_48[data-layout=portrait]{grid-template-columns:1fr;grid-template-rows:repeat(2,minmax(0,1fr))}._splitLabel_1xs2z_61{display:grid;place-items:center;color:#111827d1;font-size:clamp(1.15rem,2.7vw,2.1rem);font-weight:700;font-family:IBM Plex Sans Condensed,Avenir Next Condensed,sans-serif;text-transform:uppercase;letter-spacing:.34em;text-shadow:0 2px 12px rgb(255 255 255 / 42%)}._controlOverlay_1xs2z_73{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:center;pointer-events:none}._resolutionCard_1xs2z_83{pointer-events:auto;display:flex;align-items:center;justify-content:center;width:min(100%,26rem);padding:.75rem .9rem;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:16px;background:#070f199e;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 30px #0000002e}._resolutionControl_1xs2z_97{display:flex;align-items:center;gap:.85rem;width:100%;min-width:0}._slider_1xs2z_105{width:100%;accent-color:var(--gc-primary, #45c4b0);cursor:pointer}._sliderValue_1xs2z_111{min-width:3.75rem;text-align:right;font-family:IBM Plex Mono,JetBrains Mono,monospace;font-size:.95rem}@media (max-width: 900px){._resolutionControl_1xs2z_97{min-width:0}}@media (max-width: 720px){._wrapper_1xs2z_1{padding:0}._splitLabel_1xs2z_61{font-size:clamp(.95rem,5vw,1.4rem);letter-spacing:.24em}._controlOverlay_1xs2z_73{right:0rem;bottom:0rem;left:0rem}}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); +import { jsx as pn, jsxs as yi } from "react/jsx-runtime"; +import { useState as Ms, useRef as dr, useEffect as ai, useMemo as fr } from "react"; +/** + * @license + * Copyright 2010-2023 Three.js Authors + * SPDX-License-Identifier: MIT + */ +const ss = "160", Ln = { ROTATE: 0, DOLLY: 1, PAN: 2 }, Pn = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 }, Yo = 0, Ss = 1, jo = 2, so = 1, ao = 2, jt = 3, un = 0, Mt = 1, Kt = 2, on = 0, $n = 1, Es = 2, ys = 3, Ts = 4, Ko = 5, Mn = 100, Zo = 101, $o = 102, bs = 103, As = 104, Jo = 200, Qo = 201, el = 202, tl = 203, Kr = 204, Zr = 205, nl = 206, il = 207, rl = 208, sl = 209, al = 210, ol = 211, ll = 212, cl = 213, ul = 214, hl = 0, dl = 1, fl = 2, $i = 3, pl = 4, ml = 5, _l = 6, gl = 7, oo = 0, vl = 1, xl = 2, ln = 0, Ml = 1, Sl = 2, El = 3, yl = 4, Tl = 5, bl = 6, lo = 300, Qn = 301, ei = 302, $r = 303, Jr = 304, rr = 306, Qr = 1e3, Nt = 1001, es = 1002, gt = 1003, ws = 1004, pr = 1005, Rt = 1006, Al = 1007, _i = 1008, cn = 1009, wl = 1010, Rl = 1011, as = 1012, co = 1013, sn = 1014, an = 1015, gi = 1016, uo = 1017, ho = 1018, En = 1020, Cl = 1021, Ft = 1023, Ll = 1024, Pl = 1025, yn = 1026, ti = 1027, Dl = 1028, fo = 1029, Ul = 1030, po = 1031, mo = 1033, mr = 33776, _r = 33777, gr = 33778, vr = 33779, Rs = 35840, Cs = 35841, Ls = 35842, Ps = 35843, _o = 36196, Ds = 37492, Us = 37496, Is = 37808, Ns = 37809, Fs = 37810, Os = 37811, Bs = 37812, zs = 37813, Gs = 37814, Hs = 37815, Vs = 37816, ks = 37817, Ws = 37818, Xs = 37819, qs = 37820, Ys = 37821, xr = 36492, js = 36494, Ks = 36495, Il = 36283, Zs = 36284, $s = 36285, Js = 36286, go = 3e3, Tn = 3001, Nl = 3200, Fl = 3201, vo = 0, Ol = 1, Ct = "", ht = "srgb", $t = "srgb-linear", os = "display-p3", sr = "display-p3-linear", Ji = "linear", Ze = "srgb", Qi = "rec709", er = "p3", Dn = 7680, Qs = 519, Bl = 512, zl = 513, Gl = 514, xo = 515, Hl = 516, Vl = 517, kl = 518, Wl = 519, ea = 35044, ta = "300 es", ts = 1035, Zt = 2e3, tr = 2001; +class Rn { + addEventListener(e, t) { + this._listeners === void 0 && (this._listeners = {}); + const n = this._listeners; + n[e] === void 0 && (n[e] = []), n[e].indexOf(t) === -1 && n[e].push(t); + } + hasEventListener(e, t) { + if (this._listeners === void 0) return !1; + const n = this._listeners; + return n[e] !== void 0 && n[e].indexOf(t) !== -1; + } + removeEventListener(e, t) { + if (this._listeners === void 0) return; + const r = this._listeners[e]; + if (r !== void 0) { + const s = r.indexOf(t); + s !== -1 && r.splice(s, 1); + } + } + dispatchEvent(e) { + if (this._listeners === void 0) return; + const n = this._listeners[e.type]; + if (n !== void 0) { + e.target = this; + const r = n.slice(0); + for (let s = 0, o = r.length; s < o; s++) + r[s].call(this, e); + e.target = null; + } + } +} +const pt = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4a", "4b", "4c", "4d", "4e", "4f", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5a", "5b", "5c", "5d", "5e", "5f", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a", "6b", "6c", "6d", "6e", "6f", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c", "7d", "7e", "7f", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e", "8f", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "da", "db", "dc", "dd", "de", "df", "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "ea", "eb", "ec", "ed", "ee", "ef", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff"], Ki = Math.PI / 180, ns = 180 / Math.PI; +function vi() { + const i = Math.random() * 4294967295 | 0, e = Math.random() * 4294967295 | 0, t = Math.random() * 4294967295 | 0, n = Math.random() * 4294967295 | 0; + return (pt[i & 255] + pt[i >> 8 & 255] + pt[i >> 16 & 255] + pt[i >> 24 & 255] + "-" + pt[e & 255] + pt[e >> 8 & 255] + "-" + pt[e >> 16 & 15 | 64] + pt[e >> 24 & 255] + "-" + pt[t & 63 | 128] + pt[t >> 8 & 255] + "-" + pt[t >> 16 & 255] + pt[t >> 24 & 255] + pt[n & 255] + pt[n >> 8 & 255] + pt[n >> 16 & 255] + pt[n >> 24 & 255]).toLowerCase(); +} +function vt(i, e, t) { + return Math.max(e, Math.min(t, i)); +} +function Xl(i, e) { + return (i % e + e) % e; +} +function Mr(i, e, t) { + return (1 - t) * i + t * e; +} +function na(i) { + return (i & i - 1) === 0 && i !== 0; +} +function is(i) { + return Math.pow(2, Math.floor(Math.log(i) / Math.LN2)); +} +function oi(i, e) { + switch (e.constructor) { + case Float32Array: + return i; + case Uint32Array: + return i / 4294967295; + case Uint16Array: + return i / 65535; + case Uint8Array: + return i / 255; + case Int32Array: + return Math.max(i / 2147483647, -1); + case Int16Array: + return Math.max(i / 32767, -1); + case Int8Array: + return Math.max(i / 127, -1); + default: + throw new Error("Invalid component type."); + } +} +function xt(i, e) { + switch (e.constructor) { + case Float32Array: + return i; + case Uint32Array: + return Math.round(i * 4294967295); + case Uint16Array: + return Math.round(i * 65535); + case Uint8Array: + return Math.round(i * 255); + case Int32Array: + return Math.round(i * 2147483647); + case Int16Array: + return Math.round(i * 32767); + case Int8Array: + return Math.round(i * 127); + default: + throw new Error("Invalid component type."); + } +} +const ql = { + DEG2RAD: Ki +}; +class Ie { + constructor(e = 0, t = 0) { + Ie.prototype.isVector2 = !0, this.x = e, this.y = t; + } + get width() { + return this.x; + } + set width(e) { + this.x = e; + } + get height() { + return this.y; + } + set height(e) { + this.y = e; + } + set(e, t) { + return this.x = e, this.y = t, this; + } + setScalar(e) { + return this.x = e, this.y = e, this; + } + setX(e) { + return this.x = e, this; + } + setY(e) { + return this.y = e, this; + } + setComponent(e, t) { + switch (e) { + case 0: + this.x = t; + break; + case 1: + this.y = t; + break; + default: + throw new Error("index is out of range: " + e); + } + return this; + } + getComponent(e) { + switch (e) { + case 0: + return this.x; + case 1: + return this.y; + default: + throw new Error("index is out of range: " + e); + } + } + clone() { + return new this.constructor(this.x, this.y); + } + copy(e) { + return this.x = e.x, this.y = e.y, this; + } + add(e) { + return this.x += e.x, this.y += e.y, this; + } + addScalar(e) { + return this.x += e, this.y += e, this; + } + addVectors(e, t) { + return this.x = e.x + t.x, this.y = e.y + t.y, this; + } + addScaledVector(e, t) { + return this.x += e.x * t, this.y += e.y * t, this; + } + sub(e) { + return this.x -= e.x, this.y -= e.y, this; + } + subScalar(e) { + return this.x -= e, this.y -= e, this; + } + subVectors(e, t) { + return this.x = e.x - t.x, this.y = e.y - t.y, this; + } + multiply(e) { + return this.x *= e.x, this.y *= e.y, this; + } + multiplyScalar(e) { + return this.x *= e, this.y *= e, this; + } + divide(e) { + return this.x /= e.x, this.y /= e.y, this; + } + divideScalar(e) { + return this.multiplyScalar(1 / e); + } + applyMatrix3(e) { + const t = this.x, n = this.y, r = e.elements; + return this.x = r[0] * t + r[3] * n + r[6], this.y = r[1] * t + r[4] * n + r[7], this; + } + min(e) { + return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this; + } + max(e) { + return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this; + } + clamp(e, t) { + return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this; + } + clampScalar(e, t) { + return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this; + } + clampLength(e, t) { + const n = this.length(); + return this.divideScalar(n || 1).multiplyScalar(Math.max(e, Math.min(t, n))); + } + floor() { + return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this; + } + ceil() { + return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this; + } + round() { + return this.x = Math.round(this.x), this.y = Math.round(this.y), this; + } + roundToZero() { + return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this; + } + negate() { + return this.x = -this.x, this.y = -this.y, this; + } + dot(e) { + return this.x * e.x + this.y * e.y; + } + cross(e) { + return this.x * e.y - this.y * e.x; + } + lengthSq() { + return this.x * this.x + this.y * this.y; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + angle() { + return Math.atan2(-this.y, -this.x) + Math.PI; + } + angleTo(e) { + const t = Math.sqrt(this.lengthSq() * e.lengthSq()); + if (t === 0) return Math.PI / 2; + const n = this.dot(e) / t; + return Math.acos(vt(n, -1, 1)); + } + distanceTo(e) { + return Math.sqrt(this.distanceToSquared(e)); + } + distanceToSquared(e) { + const t = this.x - e.x, n = this.y - e.y; + return t * t + n * n; + } + manhattanDistanceTo(e) { + return Math.abs(this.x - e.x) + Math.abs(this.y - e.y); + } + setLength(e) { + return this.normalize().multiplyScalar(e); + } + lerp(e, t) { + return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this; + } + lerpVectors(e, t, n) { + return this.x = e.x + (t.x - e.x) * n, this.y = e.y + (t.y - e.y) * n, this; + } + equals(e) { + return e.x === this.x && e.y === this.y; + } + fromArray(e, t = 0) { + return this.x = e[t], this.y = e[t + 1], this; + } + toArray(e = [], t = 0) { + return e[t] = this.x, e[t + 1] = this.y, e; + } + fromBufferAttribute(e, t) { + return this.x = e.getX(t), this.y = e.getY(t), this; + } + rotateAround(e, t) { + const n = Math.cos(t), r = Math.sin(t), s = this.x - e.x, o = this.y - e.y; + return this.x = s * n - o * r + e.x, this.y = s * r + o * n + e.y, this; + } + random() { + return this.x = Math.random(), this.y = Math.random(), this; + } + *[Symbol.iterator]() { + yield this.x, yield this.y; + } +} +class Ve { + constructor(e, t, n, r, s, o, a, l, c) { + Ve.prototype.isMatrix3 = !0, this.elements = [ + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1 + ], e !== void 0 && this.set(e, t, n, r, s, o, a, l, c); + } + set(e, t, n, r, s, o, a, l, c) { + const h = this.elements; + return h[0] = e, h[1] = r, h[2] = a, h[3] = t, h[4] = s, h[5] = l, h[6] = n, h[7] = o, h[8] = c, this; + } + identity() { + return this.set( + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1 + ), this; + } + copy(e) { + const t = this.elements, n = e.elements; + return t[0] = n[0], t[1] = n[1], t[2] = n[2], t[3] = n[3], t[4] = n[4], t[5] = n[5], t[6] = n[6], t[7] = n[7], t[8] = n[8], this; + } + extractBasis(e, t, n) { + return e.setFromMatrix3Column(this, 0), t.setFromMatrix3Column(this, 1), n.setFromMatrix3Column(this, 2), this; + } + setFromMatrix4(e) { + const t = e.elements; + return this.set( + t[0], + t[4], + t[8], + t[1], + t[5], + t[9], + t[2], + t[6], + t[10] + ), this; + } + multiply(e) { + return this.multiplyMatrices(this, e); + } + premultiply(e) { + return this.multiplyMatrices(e, this); + } + multiplyMatrices(e, t) { + const n = e.elements, r = t.elements, s = this.elements, o = n[0], a = n[3], l = n[6], c = n[1], h = n[4], d = n[7], p = n[2], m = n[5], g = n[8], v = r[0], f = r[3], u = r[6], b = r[1], S = r[4], R = r[7], D = r[2], C = r[5], A = r[8]; + return s[0] = o * v + a * b + l * D, s[3] = o * f + a * S + l * C, s[6] = o * u + a * R + l * A, s[1] = c * v + h * b + d * D, s[4] = c * f + h * S + d * C, s[7] = c * u + h * R + d * A, s[2] = p * v + m * b + g * D, s[5] = p * f + m * S + g * C, s[8] = p * u + m * R + g * A, this; + } + multiplyScalar(e) { + const t = this.elements; + return t[0] *= e, t[3] *= e, t[6] *= e, t[1] *= e, t[4] *= e, t[7] *= e, t[2] *= e, t[5] *= e, t[8] *= e, this; + } + determinant() { + const e = this.elements, t = e[0], n = e[1], r = e[2], s = e[3], o = e[4], a = e[5], l = e[6], c = e[7], h = e[8]; + return t * o * h - t * a * c - n * s * h + n * a * l + r * s * c - r * o * l; + } + invert() { + const e = this.elements, t = e[0], n = e[1], r = e[2], s = e[3], o = e[4], a = e[5], l = e[6], c = e[7], h = e[8], d = h * o - a * c, p = a * l - h * s, m = c * s - o * l, g = t * d + n * p + r * m; + if (g === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0); + const v = 1 / g; + return e[0] = d * v, e[1] = (r * c - h * n) * v, e[2] = (a * n - r * o) * v, e[3] = p * v, e[4] = (h * t - r * l) * v, e[5] = (r * s - a * t) * v, e[6] = m * v, e[7] = (n * l - c * t) * v, e[8] = (o * t - n * s) * v, this; + } + transpose() { + let e; + const t = this.elements; + return e = t[1], t[1] = t[3], t[3] = e, e = t[2], t[2] = t[6], t[6] = e, e = t[5], t[5] = t[7], t[7] = e, this; + } + getNormalMatrix(e) { + return this.setFromMatrix4(e).invert().transpose(); + } + transposeIntoArray(e) { + const t = this.elements; + return e[0] = t[0], e[1] = t[3], e[2] = t[6], e[3] = t[1], e[4] = t[4], e[5] = t[7], e[6] = t[2], e[7] = t[5], e[8] = t[8], this; + } + setUvTransform(e, t, n, r, s, o, a) { + const l = Math.cos(s), c = Math.sin(s); + return this.set( + n * l, + n * c, + -n * (l * o + c * a) + o + e, + -r * c, + r * l, + -r * (-c * o + l * a) + a + t, + 0, + 0, + 1 + ), this; + } + // + scale(e, t) { + return this.premultiply(Sr.makeScale(e, t)), this; + } + rotate(e) { + return this.premultiply(Sr.makeRotation(-e)), this; + } + translate(e, t) { + return this.premultiply(Sr.makeTranslation(e, t)), this; + } + // for 2D Transforms + makeTranslation(e, t) { + return e.isVector2 ? this.set( + 1, + 0, + e.x, + 0, + 1, + e.y, + 0, + 0, + 1 + ) : this.set( + 1, + 0, + e, + 0, + 1, + t, + 0, + 0, + 1 + ), this; + } + makeRotation(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + t, + -n, + 0, + n, + t, + 0, + 0, + 0, + 1 + ), this; + } + makeScale(e, t) { + return this.set( + e, + 0, + 0, + 0, + t, + 0, + 0, + 0, + 1 + ), this; + } + // + equals(e) { + const t = this.elements, n = e.elements; + for (let r = 0; r < 9; r++) + if (t[r] !== n[r]) return !1; + return !0; + } + fromArray(e, t = 0) { + for (let n = 0; n < 9; n++) + this.elements[n] = e[n + t]; + return this; + } + toArray(e = [], t = 0) { + const n = this.elements; + return e[t] = n[0], e[t + 1] = n[1], e[t + 2] = n[2], e[t + 3] = n[3], e[t + 4] = n[4], e[t + 5] = n[5], e[t + 6] = n[6], e[t + 7] = n[7], e[t + 8] = n[8], e; + } + clone() { + return new this.constructor().fromArray(this.elements); + } +} +const Sr = /* @__PURE__ */ new Ve(); +function Mo(i) { + for (let e = i.length - 1; e >= 0; --e) + if (i[e] >= 65535) return !0; + return !1; +} +function nr(i) { + return document.createElementNS("http://www.w3.org/1999/xhtml", i); +} +function Yl() { + const i = nr("canvas"); + return i.style.display = "block", i; +} +const ia = {}; +function mi(i) { + i in ia || (ia[i] = !0, console.warn(i)); +} +const ra = /* @__PURE__ */ new Ve().set( + 0.8224621, + 0.177538, + 0, + 0.0331941, + 0.9668058, + 0, + 0.0170827, + 0.0723974, + 0.9105199 +), sa = /* @__PURE__ */ new Ve().set( + 1.2249401, + -0.2249404, + 0, + -0.0420569, + 1.0420571, + 0, + -0.0196376, + -0.0786361, + 1.0982735 +), Ti = { + [$t]: { + transfer: Ji, + primaries: Qi, + toReference: (i) => i, + fromReference: (i) => i + }, + [ht]: { + transfer: Ze, + primaries: Qi, + toReference: (i) => i.convertSRGBToLinear(), + fromReference: (i) => i.convertLinearToSRGB() + }, + [sr]: { + transfer: Ji, + primaries: er, + toReference: (i) => i.applyMatrix3(sa), + fromReference: (i) => i.applyMatrix3(ra) + }, + [os]: { + transfer: Ze, + primaries: er, + toReference: (i) => i.convertSRGBToLinear().applyMatrix3(sa), + fromReference: (i) => i.applyMatrix3(ra).convertLinearToSRGB() + } +}, jl = /* @__PURE__ */ new Set([$t, sr]), Ke = { + enabled: !0, + _workingColorSpace: $t, + get workingColorSpace() { + return this._workingColorSpace; + }, + set workingColorSpace(i) { + if (!jl.has(i)) + throw new Error(`Unsupported working color space, "${i}".`); + this._workingColorSpace = i; + }, + convert: function(i, e, t) { + if (this.enabled === !1 || e === t || !e || !t) + return i; + const n = Ti[e].toReference, r = Ti[t].fromReference; + return r(n(i)); + }, + fromWorkingColorSpace: function(i, e) { + return this.convert(i, this._workingColorSpace, e); + }, + toWorkingColorSpace: function(i, e) { + return this.convert(i, e, this._workingColorSpace); + }, + getPrimaries: function(i) { + return Ti[i].primaries; + }, + getTransfer: function(i) { + return i === Ct ? Ji : Ti[i].transfer; + } +}; +function Jn(i) { + return i < 0.04045 ? i * 0.0773993808 : Math.pow(i * 0.9478672986 + 0.0521327014, 2.4); +} +function Er(i) { + return i < 31308e-7 ? i * 12.92 : 1.055 * Math.pow(i, 0.41666) - 0.055; +} +let Un; +class So { + static getDataURL(e) { + if (/^data:/i.test(e.src) || typeof HTMLCanvasElement > "u") + return e.src; + let t; + if (e instanceof HTMLCanvasElement) + t = e; + else { + Un === void 0 && (Un = nr("canvas")), Un.width = e.width, Un.height = e.height; + const n = Un.getContext("2d"); + e instanceof ImageData ? n.putImageData(e, 0, 0) : n.drawImage(e, 0, 0, e.width, e.height), t = Un; + } + return t.width > 2048 || t.height > 2048 ? (console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons", e), t.toDataURL("image/jpeg", 0.6)) : t.toDataURL("image/png"); + } + static sRGBToLinear(e) { + if (typeof HTMLImageElement < "u" && e instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && e instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && e instanceof ImageBitmap) { + const t = nr("canvas"); + t.width = e.width, t.height = e.height; + const n = t.getContext("2d"); + n.drawImage(e, 0, 0, e.width, e.height); + const r = n.getImageData(0, 0, e.width, e.height), s = r.data; + for (let o = 0; o < s.length; o++) + s[o] = Jn(s[o] / 255) * 255; + return n.putImageData(r, 0, 0), t; + } else if (e.data) { + const t = e.data.slice(0); + for (let n = 0; n < t.length; n++) + t instanceof Uint8Array || t instanceof Uint8ClampedArray ? t[n] = Math.floor(Jn(t[n] / 255) * 255) : t[n] = Jn(t[n]); + return { + data: t, + width: e.width, + height: e.height + }; + } else + return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."), e; + } +} +let Kl = 0; +class Eo { + constructor(e = null) { + this.isSource = !0, Object.defineProperty(this, "id", { value: Kl++ }), this.uuid = vi(), this.data = e, this.version = 0; + } + set needsUpdate(e) { + e === !0 && this.version++; + } + toJSON(e) { + const t = e === void 0 || typeof e == "string"; + if (!t && e.images[this.uuid] !== void 0) + return e.images[this.uuid]; + const n = { + uuid: this.uuid, + url: "" + }, r = this.data; + if (r !== null) { + let s; + if (Array.isArray(r)) { + s = []; + for (let o = 0, a = r.length; o < a; o++) + r[o].isDataTexture ? s.push(yr(r[o].image)) : s.push(yr(r[o])); + } else + s = yr(r); + n.url = s; + } + return t || (e.images[this.uuid] = n), n; + } +} +function yr(i) { + return typeof HTMLImageElement < "u" && i instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && i instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && i instanceof ImageBitmap ? So.getDataURL(i) : i.data ? { + data: Array.from(i.data), + width: i.width, + height: i.height, + type: i.data.constructor.name + } : (console.warn("THREE.Texture: Unable to serialize Texture."), {}); +} +let Zl = 0; +class bt extends Rn { + constructor(e = bt.DEFAULT_IMAGE, t = bt.DEFAULT_MAPPING, n = Nt, r = Nt, s = Rt, o = _i, a = Ft, l = cn, c = bt.DEFAULT_ANISOTROPY, h = Ct) { + super(), this.isTexture = !0, Object.defineProperty(this, "id", { value: Zl++ }), this.uuid = vi(), this.name = "", this.source = new Eo(e), this.mipmaps = [], this.mapping = t, this.channel = 0, this.wrapS = n, this.wrapT = r, this.magFilter = s, this.minFilter = o, this.anisotropy = c, this.format = a, this.internalFormat = null, this.type = l, this.offset = new Ie(0, 0), this.repeat = new Ie(1, 1), this.center = new Ie(0, 0), this.rotation = 0, this.matrixAutoUpdate = !0, this.matrix = new Ve(), this.generateMipmaps = !0, this.premultiplyAlpha = !1, this.flipY = !0, this.unpackAlignment = 4, typeof h == "string" ? this.colorSpace = h : (mi("THREE.Texture: Property .encoding has been replaced by .colorSpace."), this.colorSpace = h === Tn ? ht : Ct), this.userData = {}, this.version = 0, this.onUpdate = null, this.isRenderTargetTexture = !1, this.needsPMREMUpdate = !1; + } + get image() { + return this.source.data; + } + set image(e = null) { + this.source.data = e; + } + updateMatrix() { + this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y); + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + return this.name = e.name, this.source = e.source, this.mipmaps = e.mipmaps.slice(0), this.mapping = e.mapping, this.channel = e.channel, this.wrapS = e.wrapS, this.wrapT = e.wrapT, this.magFilter = e.magFilter, this.minFilter = e.minFilter, this.anisotropy = e.anisotropy, this.format = e.format, this.internalFormat = e.internalFormat, this.type = e.type, this.offset.copy(e.offset), this.repeat.copy(e.repeat), this.center.copy(e.center), this.rotation = e.rotation, this.matrixAutoUpdate = e.matrixAutoUpdate, this.matrix.copy(e.matrix), this.generateMipmaps = e.generateMipmaps, this.premultiplyAlpha = e.premultiplyAlpha, this.flipY = e.flipY, this.unpackAlignment = e.unpackAlignment, this.colorSpace = e.colorSpace, this.userData = JSON.parse(JSON.stringify(e.userData)), this.needsUpdate = !0, this; + } + toJSON(e) { + const t = e === void 0 || typeof e == "string"; + if (!t && e.textures[this.uuid] !== void 0) + return e.textures[this.uuid]; + const n = { + metadata: { + version: 4.6, + type: "Texture", + generator: "Texture.toJSON" + }, + uuid: this.uuid, + name: this.name, + image: this.source.toJSON(e).uuid, + mapping: this.mapping, + channel: this.channel, + repeat: [this.repeat.x, this.repeat.y], + offset: [this.offset.x, this.offset.y], + center: [this.center.x, this.center.y], + rotation: this.rotation, + wrap: [this.wrapS, this.wrapT], + format: this.format, + internalFormat: this.internalFormat, + type: this.type, + colorSpace: this.colorSpace, + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + flipY: this.flipY, + generateMipmaps: this.generateMipmaps, + premultiplyAlpha: this.premultiplyAlpha, + unpackAlignment: this.unpackAlignment + }; + return Object.keys(this.userData).length > 0 && (n.userData = this.userData), t || (e.textures[this.uuid] = n), n; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } + transformUv(e) { + if (this.mapping !== lo) return e; + if (e.applyMatrix3(this.matrix), e.x < 0 || e.x > 1) + switch (this.wrapS) { + case Qr: + e.x = e.x - Math.floor(e.x); + break; + case Nt: + e.x = e.x < 0 ? 0 : 1; + break; + case es: + Math.abs(Math.floor(e.x) % 2) === 1 ? e.x = Math.ceil(e.x) - e.x : e.x = e.x - Math.floor(e.x); + break; + } + if (e.y < 0 || e.y > 1) + switch (this.wrapT) { + case Qr: + e.y = e.y - Math.floor(e.y); + break; + case Nt: + e.y = e.y < 0 ? 0 : 1; + break; + case es: + Math.abs(Math.floor(e.y) % 2) === 1 ? e.y = Math.ceil(e.y) - e.y : e.y = e.y - Math.floor(e.y); + break; + } + return this.flipY && (e.y = 1 - e.y), e; + } + set needsUpdate(e) { + e === !0 && (this.version++, this.source.needsUpdate = !0); + } + get encoding() { + return mi("THREE.Texture: Property .encoding has been replaced by .colorSpace."), this.colorSpace === ht ? Tn : go; + } + set encoding(e) { + mi("THREE.Texture: Property .encoding has been replaced by .colorSpace."), this.colorSpace = e === Tn ? ht : Ct; + } +} +bt.DEFAULT_IMAGE = null; +bt.DEFAULT_MAPPING = lo; +bt.DEFAULT_ANISOTROPY = 1; +class $e { + constructor(e = 0, t = 0, n = 0, r = 1) { + $e.prototype.isVector4 = !0, this.x = e, this.y = t, this.z = n, this.w = r; + } + get width() { + return this.z; + } + set width(e) { + this.z = e; + } + get height() { + return this.w; + } + set height(e) { + this.w = e; + } + set(e, t, n, r) { + return this.x = e, this.y = t, this.z = n, this.w = r, this; + } + setScalar(e) { + return this.x = e, this.y = e, this.z = e, this.w = e, this; + } + setX(e) { + return this.x = e, this; + } + setY(e) { + return this.y = e, this; + } + setZ(e) { + return this.z = e, this; + } + setW(e) { + return this.w = e, this; + } + setComponent(e, t) { + switch (e) { + case 0: + this.x = t; + break; + case 1: + this.y = t; + break; + case 2: + this.z = t; + break; + case 3: + this.w = t; + break; + default: + throw new Error("index is out of range: " + e); + } + return this; + } + getComponent(e) { + switch (e) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + case 3: + return this.w; + default: + throw new Error("index is out of range: " + e); + } + } + clone() { + return new this.constructor(this.x, this.y, this.z, this.w); + } + copy(e) { + return this.x = e.x, this.y = e.y, this.z = e.z, this.w = e.w !== void 0 ? e.w : 1, this; + } + add(e) { + return this.x += e.x, this.y += e.y, this.z += e.z, this.w += e.w, this; + } + addScalar(e) { + return this.x += e, this.y += e, this.z += e, this.w += e, this; + } + addVectors(e, t) { + return this.x = e.x + t.x, this.y = e.y + t.y, this.z = e.z + t.z, this.w = e.w + t.w, this; + } + addScaledVector(e, t) { + return this.x += e.x * t, this.y += e.y * t, this.z += e.z * t, this.w += e.w * t, this; + } + sub(e) { + return this.x -= e.x, this.y -= e.y, this.z -= e.z, this.w -= e.w, this; + } + subScalar(e) { + return this.x -= e, this.y -= e, this.z -= e, this.w -= e, this; + } + subVectors(e, t) { + return this.x = e.x - t.x, this.y = e.y - t.y, this.z = e.z - t.z, this.w = e.w - t.w, this; + } + multiply(e) { + return this.x *= e.x, this.y *= e.y, this.z *= e.z, this.w *= e.w, this; + } + multiplyScalar(e) { + return this.x *= e, this.y *= e, this.z *= e, this.w *= e, this; + } + applyMatrix4(e) { + const t = this.x, n = this.y, r = this.z, s = this.w, o = e.elements; + return this.x = o[0] * t + o[4] * n + o[8] * r + o[12] * s, this.y = o[1] * t + o[5] * n + o[9] * r + o[13] * s, this.z = o[2] * t + o[6] * n + o[10] * r + o[14] * s, this.w = o[3] * t + o[7] * n + o[11] * r + o[15] * s, this; + } + divideScalar(e) { + return this.multiplyScalar(1 / e); + } + setAxisAngleFromQuaternion(e) { + this.w = 2 * Math.acos(e.w); + const t = Math.sqrt(1 - e.w * e.w); + return t < 1e-4 ? (this.x = 1, this.y = 0, this.z = 0) : (this.x = e.x / t, this.y = e.y / t, this.z = e.z / t), this; + } + setAxisAngleFromRotationMatrix(e) { + let t, n, r, s; + const l = e.elements, c = l[0], h = l[4], d = l[8], p = l[1], m = l[5], g = l[9], v = l[2], f = l[6], u = l[10]; + if (Math.abs(h - p) < 0.01 && Math.abs(d - v) < 0.01 && Math.abs(g - f) < 0.01) { + if (Math.abs(h + p) < 0.1 && Math.abs(d + v) < 0.1 && Math.abs(g + f) < 0.1 && Math.abs(c + m + u - 3) < 0.1) + return this.set(1, 0, 0, 0), this; + t = Math.PI; + const S = (c + 1) / 2, R = (m + 1) / 2, D = (u + 1) / 2, C = (h + p) / 4, A = (d + v) / 4, W = (g + f) / 4; + return S > R && S > D ? S < 0.01 ? (n = 0, r = 0.707106781, s = 0.707106781) : (n = Math.sqrt(S), r = C / n, s = A / n) : R > D ? R < 0.01 ? (n = 0.707106781, r = 0, s = 0.707106781) : (r = Math.sqrt(R), n = C / r, s = W / r) : D < 0.01 ? (n = 0.707106781, r = 0.707106781, s = 0) : (s = Math.sqrt(D), n = A / s, r = W / s), this.set(n, r, s, t), this; + } + let b = Math.sqrt((f - g) * (f - g) + (d - v) * (d - v) + (p - h) * (p - h)); + return Math.abs(b) < 1e-3 && (b = 1), this.x = (f - g) / b, this.y = (d - v) / b, this.z = (p - h) / b, this.w = Math.acos((c + m + u - 1) / 2), this; + } + min(e) { + return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this.z = Math.min(this.z, e.z), this.w = Math.min(this.w, e.w), this; + } + max(e) { + return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this.z = Math.max(this.z, e.z), this.w = Math.max(this.w, e.w), this; + } + clamp(e, t) { + return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this.z = Math.max(e.z, Math.min(t.z, this.z)), this.w = Math.max(e.w, Math.min(t.w, this.w)), this; + } + clampScalar(e, t) { + return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this.z = Math.max(e, Math.min(t, this.z)), this.w = Math.max(e, Math.min(t, this.w)), this; + } + clampLength(e, t) { + const n = this.length(); + return this.divideScalar(n || 1).multiplyScalar(Math.max(e, Math.min(t, n))); + } + floor() { + return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this.w = Math.floor(this.w), this; + } + ceil() { + return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this.w = Math.ceil(this.w), this; + } + round() { + return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this.w = Math.round(this.w), this; + } + roundToZero() { + return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this.z = Math.trunc(this.z), this.w = Math.trunc(this.w), this; + } + negate() { + return this.x = -this.x, this.y = -this.y, this.z = -this.z, this.w = -this.w, this; + } + dot(e) { + return this.x * e.x + this.y * e.y + this.z * e.z + this.w * e.w; + } + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + setLength(e) { + return this.normalize().multiplyScalar(e); + } + lerp(e, t) { + return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this.z += (e.z - this.z) * t, this.w += (e.w - this.w) * t, this; + } + lerpVectors(e, t, n) { + return this.x = e.x + (t.x - e.x) * n, this.y = e.y + (t.y - e.y) * n, this.z = e.z + (t.z - e.z) * n, this.w = e.w + (t.w - e.w) * n, this; + } + equals(e) { + return e.x === this.x && e.y === this.y && e.z === this.z && e.w === this.w; + } + fromArray(e, t = 0) { + return this.x = e[t], this.y = e[t + 1], this.z = e[t + 2], this.w = e[t + 3], this; + } + toArray(e = [], t = 0) { + return e[t] = this.x, e[t + 1] = this.y, e[t + 2] = this.z, e[t + 3] = this.w, e; + } + fromBufferAttribute(e, t) { + return this.x = e.getX(t), this.y = e.getY(t), this.z = e.getZ(t), this.w = e.getW(t), this; + } + random() { + return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this.w = Math.random(), this; + } + *[Symbol.iterator]() { + yield this.x, yield this.y, yield this.z, yield this.w; + } +} +class $l extends Rn { + constructor(e = 1, t = 1, n = {}) { + super(), this.isRenderTarget = !0, this.width = e, this.height = t, this.depth = 1, this.scissor = new $e(0, 0, e, t), this.scissorTest = !1, this.viewport = new $e(0, 0, e, t); + const r = { width: e, height: t, depth: 1 }; + n.encoding !== void 0 && (mi("THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace."), n.colorSpace = n.encoding === Tn ? ht : Ct), n = Object.assign({ + generateMipmaps: !1, + internalFormat: null, + minFilter: Rt, + depthBuffer: !0, + stencilBuffer: !1, + depthTexture: null, + samples: 0 + }, n), this.texture = new bt(r, n.mapping, n.wrapS, n.wrapT, n.magFilter, n.minFilter, n.format, n.type, n.anisotropy, n.colorSpace), this.texture.isRenderTargetTexture = !0, this.texture.flipY = !1, this.texture.generateMipmaps = n.generateMipmaps, this.texture.internalFormat = n.internalFormat, this.depthBuffer = n.depthBuffer, this.stencilBuffer = n.stencilBuffer, this.depthTexture = n.depthTexture, this.samples = n.samples; + } + setSize(e, t, n = 1) { + (this.width !== e || this.height !== t || this.depth !== n) && (this.width = e, this.height = t, this.depth = n, this.texture.image.width = e, this.texture.image.height = t, this.texture.image.depth = n, this.dispose()), this.viewport.set(0, 0, e, t), this.scissor.set(0, 0, e, t); + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + this.width = e.width, this.height = e.height, this.depth = e.depth, this.scissor.copy(e.scissor), this.scissorTest = e.scissorTest, this.viewport.copy(e.viewport), this.texture = e.texture.clone(), this.texture.isRenderTargetTexture = !0; + const t = Object.assign({}, e.texture.image); + return this.texture.source = new Eo(t), this.depthBuffer = e.depthBuffer, this.stencilBuffer = e.stencilBuffer, e.depthTexture !== null && (this.depthTexture = e.depthTexture.clone()), this.samples = e.samples, this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +} +class bn extends $l { + constructor(e = 1, t = 1, n = {}) { + super(e, t, n), this.isWebGLRenderTarget = !0; + } +} +class yo extends bt { + constructor(e = null, t = 1, n = 1, r = 1) { + super(null), this.isDataArrayTexture = !0, this.image = { data: e, width: t, height: n, depth: r }, this.magFilter = gt, this.minFilter = gt, this.wrapR = Nt, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1; + } +} +class Jl extends bt { + constructor(e = null, t = 1, n = 1, r = 1) { + super(null), this.isData3DTexture = !0, this.image = { data: e, width: t, height: n, depth: r }, this.magFilter = gt, this.minFilter = gt, this.wrapR = Nt, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1; + } +} +class An { + constructor(e = 0, t = 0, n = 0, r = 1) { + this.isQuaternion = !0, this._x = e, this._y = t, this._z = n, this._w = r; + } + static slerpFlat(e, t, n, r, s, o, a) { + let l = n[r + 0], c = n[r + 1], h = n[r + 2], d = n[r + 3]; + const p = s[o + 0], m = s[o + 1], g = s[o + 2], v = s[o + 3]; + if (a === 0) { + e[t + 0] = l, e[t + 1] = c, e[t + 2] = h, e[t + 3] = d; + return; + } + if (a === 1) { + e[t + 0] = p, e[t + 1] = m, e[t + 2] = g, e[t + 3] = v; + return; + } + if (d !== v || l !== p || c !== m || h !== g) { + let f = 1 - a; + const u = l * p + c * m + h * g + d * v, b = u >= 0 ? 1 : -1, S = 1 - u * u; + if (S > Number.EPSILON) { + const D = Math.sqrt(S), C = Math.atan2(D, u * b); + f = Math.sin(f * C) / D, a = Math.sin(a * C) / D; + } + const R = a * b; + if (l = l * f + p * R, c = c * f + m * R, h = h * f + g * R, d = d * f + v * R, f === 1 - a) { + const D = 1 / Math.sqrt(l * l + c * c + h * h + d * d); + l *= D, c *= D, h *= D, d *= D; + } + } + e[t] = l, e[t + 1] = c, e[t + 2] = h, e[t + 3] = d; + } + static multiplyQuaternionsFlat(e, t, n, r, s, o) { + const a = n[r], l = n[r + 1], c = n[r + 2], h = n[r + 3], d = s[o], p = s[o + 1], m = s[o + 2], g = s[o + 3]; + return e[t] = a * g + h * d + l * m - c * p, e[t + 1] = l * g + h * p + c * d - a * m, e[t + 2] = c * g + h * m + a * p - l * d, e[t + 3] = h * g - a * d - l * p - c * m, e; + } + get x() { + return this._x; + } + set x(e) { + this._x = e, this._onChangeCallback(); + } + get y() { + return this._y; + } + set y(e) { + this._y = e, this._onChangeCallback(); + } + get z() { + return this._z; + } + set z(e) { + this._z = e, this._onChangeCallback(); + } + get w() { + return this._w; + } + set w(e) { + this._w = e, this._onChangeCallback(); + } + set(e, t, n, r) { + return this._x = e, this._y = t, this._z = n, this._w = r, this._onChangeCallback(), this; + } + clone() { + return new this.constructor(this._x, this._y, this._z, this._w); + } + copy(e) { + return this._x = e.x, this._y = e.y, this._z = e.z, this._w = e.w, this._onChangeCallback(), this; + } + setFromEuler(e, t = !0) { + const n = e._x, r = e._y, s = e._z, o = e._order, a = Math.cos, l = Math.sin, c = a(n / 2), h = a(r / 2), d = a(s / 2), p = l(n / 2), m = l(r / 2), g = l(s / 2); + switch (o) { + case "XYZ": + this._x = p * h * d + c * m * g, this._y = c * m * d - p * h * g, this._z = c * h * g + p * m * d, this._w = c * h * d - p * m * g; + break; + case "YXZ": + this._x = p * h * d + c * m * g, this._y = c * m * d - p * h * g, this._z = c * h * g - p * m * d, this._w = c * h * d + p * m * g; + break; + case "ZXY": + this._x = p * h * d - c * m * g, this._y = c * m * d + p * h * g, this._z = c * h * g + p * m * d, this._w = c * h * d - p * m * g; + break; + case "ZYX": + this._x = p * h * d - c * m * g, this._y = c * m * d + p * h * g, this._z = c * h * g - p * m * d, this._w = c * h * d + p * m * g; + break; + case "YZX": + this._x = p * h * d + c * m * g, this._y = c * m * d + p * h * g, this._z = c * h * g - p * m * d, this._w = c * h * d - p * m * g; + break; + case "XZY": + this._x = p * h * d - c * m * g, this._y = c * m * d - p * h * g, this._z = c * h * g + p * m * d, this._w = c * h * d + p * m * g; + break; + default: + console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: " + o); + } + return t === !0 && this._onChangeCallback(), this; + } + setFromAxisAngle(e, t) { + const n = t / 2, r = Math.sin(n); + return this._x = e.x * r, this._y = e.y * r, this._z = e.z * r, this._w = Math.cos(n), this._onChangeCallback(), this; + } + setFromRotationMatrix(e) { + const t = e.elements, n = t[0], r = t[4], s = t[8], o = t[1], a = t[5], l = t[9], c = t[2], h = t[6], d = t[10], p = n + a + d; + if (p > 0) { + const m = 0.5 / Math.sqrt(p + 1); + this._w = 0.25 / m, this._x = (h - l) * m, this._y = (s - c) * m, this._z = (o - r) * m; + } else if (n > a && n > d) { + const m = 2 * Math.sqrt(1 + n - a - d); + this._w = (h - l) / m, this._x = 0.25 * m, this._y = (r + o) / m, this._z = (s + c) / m; + } else if (a > d) { + const m = 2 * Math.sqrt(1 + a - n - d); + this._w = (s - c) / m, this._x = (r + o) / m, this._y = 0.25 * m, this._z = (l + h) / m; + } else { + const m = 2 * Math.sqrt(1 + d - n - a); + this._w = (o - r) / m, this._x = (s + c) / m, this._y = (l + h) / m, this._z = 0.25 * m; + } + return this._onChangeCallback(), this; + } + setFromUnitVectors(e, t) { + let n = e.dot(t) + 1; + return n < Number.EPSILON ? (n = 0, Math.abs(e.x) > Math.abs(e.z) ? (this._x = -e.y, this._y = e.x, this._z = 0, this._w = n) : (this._x = 0, this._y = -e.z, this._z = e.y, this._w = n)) : (this._x = e.y * t.z - e.z * t.y, this._y = e.z * t.x - e.x * t.z, this._z = e.x * t.y - e.y * t.x, this._w = n), this.normalize(); + } + angleTo(e) { + return 2 * Math.acos(Math.abs(vt(this.dot(e), -1, 1))); + } + rotateTowards(e, t) { + const n = this.angleTo(e); + if (n === 0) return this; + const r = Math.min(1, t / n); + return this.slerp(e, r), this; + } + identity() { + return this.set(0, 0, 0, 1); + } + invert() { + return this.conjugate(); + } + conjugate() { + return this._x *= -1, this._y *= -1, this._z *= -1, this._onChangeCallback(), this; + } + dot(e) { + return this._x * e._x + this._y * e._y + this._z * e._z + this._w * e._w; + } + lengthSq() { + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + } + length() { + return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w); + } + normalize() { + let e = this.length(); + return e === 0 ? (this._x = 0, this._y = 0, this._z = 0, this._w = 1) : (e = 1 / e, this._x = this._x * e, this._y = this._y * e, this._z = this._z * e, this._w = this._w * e), this._onChangeCallback(), this; + } + multiply(e) { + return this.multiplyQuaternions(this, e); + } + premultiply(e) { + return this.multiplyQuaternions(e, this); + } + multiplyQuaternions(e, t) { + const n = e._x, r = e._y, s = e._z, o = e._w, a = t._x, l = t._y, c = t._z, h = t._w; + return this._x = n * h + o * a + r * c - s * l, this._y = r * h + o * l + s * a - n * c, this._z = s * h + o * c + n * l - r * a, this._w = o * h - n * a - r * l - s * c, this._onChangeCallback(), this; + } + slerp(e, t) { + if (t === 0) return this; + if (t === 1) return this.copy(e); + const n = this._x, r = this._y, s = this._z, o = this._w; + let a = o * e._w + n * e._x + r * e._y + s * e._z; + if (a < 0 ? (this._w = -e._w, this._x = -e._x, this._y = -e._y, this._z = -e._z, a = -a) : this.copy(e), a >= 1) + return this._w = o, this._x = n, this._y = r, this._z = s, this; + const l = 1 - a * a; + if (l <= Number.EPSILON) { + const m = 1 - t; + return this._w = m * o + t * this._w, this._x = m * n + t * this._x, this._y = m * r + t * this._y, this._z = m * s + t * this._z, this.normalize(), this; + } + const c = Math.sqrt(l), h = Math.atan2(c, a), d = Math.sin((1 - t) * h) / c, p = Math.sin(t * h) / c; + return this._w = o * d + this._w * p, this._x = n * d + this._x * p, this._y = r * d + this._y * p, this._z = s * d + this._z * p, this._onChangeCallback(), this; + } + slerpQuaternions(e, t, n) { + return this.copy(e).slerp(t, n); + } + random() { + const e = Math.random(), t = Math.sqrt(1 - e), n = Math.sqrt(e), r = 2 * Math.PI * Math.random(), s = 2 * Math.PI * Math.random(); + return this.set( + t * Math.cos(r), + n * Math.sin(s), + n * Math.cos(s), + t * Math.sin(r) + ); + } + equals(e) { + return e._x === this._x && e._y === this._y && e._z === this._z && e._w === this._w; + } + fromArray(e, t = 0) { + return this._x = e[t], this._y = e[t + 1], this._z = e[t + 2], this._w = e[t + 3], this._onChangeCallback(), this; + } + toArray(e = [], t = 0) { + return e[t] = this._x, e[t + 1] = this._y, e[t + 2] = this._z, e[t + 3] = this._w, e; + } + fromBufferAttribute(e, t) { + return this._x = e.getX(t), this._y = e.getY(t), this._z = e.getZ(t), this._w = e.getW(t), this._onChangeCallback(), this; + } + toJSON() { + return this.toArray(); + } + _onChange(e) { + return this._onChangeCallback = e, this; + } + _onChangeCallback() { + } + *[Symbol.iterator]() { + yield this._x, yield this._y, yield this._z, yield this._w; + } +} +class P { + constructor(e = 0, t = 0, n = 0) { + P.prototype.isVector3 = !0, this.x = e, this.y = t, this.z = n; + } + set(e, t, n) { + return n === void 0 && (n = this.z), this.x = e, this.y = t, this.z = n, this; + } + setScalar(e) { + return this.x = e, this.y = e, this.z = e, this; + } + setX(e) { + return this.x = e, this; + } + setY(e) { + return this.y = e, this; + } + setZ(e) { + return this.z = e, this; + } + setComponent(e, t) { + switch (e) { + case 0: + this.x = t; + break; + case 1: + this.y = t; + break; + case 2: + this.z = t; + break; + default: + throw new Error("index is out of range: " + e); + } + return this; + } + getComponent(e) { + switch (e) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + default: + throw new Error("index is out of range: " + e); + } + } + clone() { + return new this.constructor(this.x, this.y, this.z); + } + copy(e) { + return this.x = e.x, this.y = e.y, this.z = e.z, this; + } + add(e) { + return this.x += e.x, this.y += e.y, this.z += e.z, this; + } + addScalar(e) { + return this.x += e, this.y += e, this.z += e, this; + } + addVectors(e, t) { + return this.x = e.x + t.x, this.y = e.y + t.y, this.z = e.z + t.z, this; + } + addScaledVector(e, t) { + return this.x += e.x * t, this.y += e.y * t, this.z += e.z * t, this; + } + sub(e) { + return this.x -= e.x, this.y -= e.y, this.z -= e.z, this; + } + subScalar(e) { + return this.x -= e, this.y -= e, this.z -= e, this; + } + subVectors(e, t) { + return this.x = e.x - t.x, this.y = e.y - t.y, this.z = e.z - t.z, this; + } + multiply(e) { + return this.x *= e.x, this.y *= e.y, this.z *= e.z, this; + } + multiplyScalar(e) { + return this.x *= e, this.y *= e, this.z *= e, this; + } + multiplyVectors(e, t) { + return this.x = e.x * t.x, this.y = e.y * t.y, this.z = e.z * t.z, this; + } + applyEuler(e) { + return this.applyQuaternion(aa.setFromEuler(e)); + } + applyAxisAngle(e, t) { + return this.applyQuaternion(aa.setFromAxisAngle(e, t)); + } + applyMatrix3(e) { + const t = this.x, n = this.y, r = this.z, s = e.elements; + return this.x = s[0] * t + s[3] * n + s[6] * r, this.y = s[1] * t + s[4] * n + s[7] * r, this.z = s[2] * t + s[5] * n + s[8] * r, this; + } + applyNormalMatrix(e) { + return this.applyMatrix3(e).normalize(); + } + applyMatrix4(e) { + const t = this.x, n = this.y, r = this.z, s = e.elements, o = 1 / (s[3] * t + s[7] * n + s[11] * r + s[15]); + return this.x = (s[0] * t + s[4] * n + s[8] * r + s[12]) * o, this.y = (s[1] * t + s[5] * n + s[9] * r + s[13]) * o, this.z = (s[2] * t + s[6] * n + s[10] * r + s[14]) * o, this; + } + applyQuaternion(e) { + const t = this.x, n = this.y, r = this.z, s = e.x, o = e.y, a = e.z, l = e.w, c = 2 * (o * r - a * n), h = 2 * (a * t - s * r), d = 2 * (s * n - o * t); + return this.x = t + l * c + o * d - a * h, this.y = n + l * h + a * c - s * d, this.z = r + l * d + s * h - o * c, this; + } + project(e) { + return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix); + } + unproject(e) { + return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld); + } + transformDirection(e) { + const t = this.x, n = this.y, r = this.z, s = e.elements; + return this.x = s[0] * t + s[4] * n + s[8] * r, this.y = s[1] * t + s[5] * n + s[9] * r, this.z = s[2] * t + s[6] * n + s[10] * r, this.normalize(); + } + divide(e) { + return this.x /= e.x, this.y /= e.y, this.z /= e.z, this; + } + divideScalar(e) { + return this.multiplyScalar(1 / e); + } + min(e) { + return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this.z = Math.min(this.z, e.z), this; + } + max(e) { + return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this.z = Math.max(this.z, e.z), this; + } + clamp(e, t) { + return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this.z = Math.max(e.z, Math.min(t.z, this.z)), this; + } + clampScalar(e, t) { + return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this.z = Math.max(e, Math.min(t, this.z)), this; + } + clampLength(e, t) { + const n = this.length(); + return this.divideScalar(n || 1).multiplyScalar(Math.max(e, Math.min(t, n))); + } + floor() { + return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this; + } + ceil() { + return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this; + } + round() { + return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this; + } + roundToZero() { + return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this.z = Math.trunc(this.z), this; + } + negate() { + return this.x = -this.x, this.y = -this.y, this.z = -this.z, this; + } + dot(e) { + return this.x * e.x + this.y * e.y + this.z * e.z; + } + // TODO lengthSquared? + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + setLength(e) { + return this.normalize().multiplyScalar(e); + } + lerp(e, t) { + return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this.z += (e.z - this.z) * t, this; + } + lerpVectors(e, t, n) { + return this.x = e.x + (t.x - e.x) * n, this.y = e.y + (t.y - e.y) * n, this.z = e.z + (t.z - e.z) * n, this; + } + cross(e) { + return this.crossVectors(this, e); + } + crossVectors(e, t) { + const n = e.x, r = e.y, s = e.z, o = t.x, a = t.y, l = t.z; + return this.x = r * l - s * a, this.y = s * o - n * l, this.z = n * a - r * o, this; + } + projectOnVector(e) { + const t = e.lengthSq(); + if (t === 0) return this.set(0, 0, 0); + const n = e.dot(this) / t; + return this.copy(e).multiplyScalar(n); + } + projectOnPlane(e) { + return Tr.copy(this).projectOnVector(e), this.sub(Tr); + } + reflect(e) { + return this.sub(Tr.copy(e).multiplyScalar(2 * this.dot(e))); + } + angleTo(e) { + const t = Math.sqrt(this.lengthSq() * e.lengthSq()); + if (t === 0) return Math.PI / 2; + const n = this.dot(e) / t; + return Math.acos(vt(n, -1, 1)); + } + distanceTo(e) { + return Math.sqrt(this.distanceToSquared(e)); + } + distanceToSquared(e) { + const t = this.x - e.x, n = this.y - e.y, r = this.z - e.z; + return t * t + n * n + r * r; + } + manhattanDistanceTo(e) { + return Math.abs(this.x - e.x) + Math.abs(this.y - e.y) + Math.abs(this.z - e.z); + } + setFromSpherical(e) { + return this.setFromSphericalCoords(e.radius, e.phi, e.theta); + } + setFromSphericalCoords(e, t, n) { + const r = Math.sin(t) * e; + return this.x = r * Math.sin(n), this.y = Math.cos(t) * e, this.z = r * Math.cos(n), this; + } + setFromCylindrical(e) { + return this.setFromCylindricalCoords(e.radius, e.theta, e.y); + } + setFromCylindricalCoords(e, t, n) { + return this.x = e * Math.sin(t), this.y = n, this.z = e * Math.cos(t), this; + } + setFromMatrixPosition(e) { + const t = e.elements; + return this.x = t[12], this.y = t[13], this.z = t[14], this; + } + setFromMatrixScale(e) { + const t = this.setFromMatrixColumn(e, 0).length(), n = this.setFromMatrixColumn(e, 1).length(), r = this.setFromMatrixColumn(e, 2).length(); + return this.x = t, this.y = n, this.z = r, this; + } + setFromMatrixColumn(e, t) { + return this.fromArray(e.elements, t * 4); + } + setFromMatrix3Column(e, t) { + return this.fromArray(e.elements, t * 3); + } + setFromEuler(e) { + return this.x = e._x, this.y = e._y, this.z = e._z, this; + } + setFromColor(e) { + return this.x = e.r, this.y = e.g, this.z = e.b, this; + } + equals(e) { + return e.x === this.x && e.y === this.y && e.z === this.z; + } + fromArray(e, t = 0) { + return this.x = e[t], this.y = e[t + 1], this.z = e[t + 2], this; + } + toArray(e = [], t = 0) { + return e[t] = this.x, e[t + 1] = this.y, e[t + 2] = this.z, e; + } + fromBufferAttribute(e, t) { + return this.x = e.getX(t), this.y = e.getY(t), this.z = e.getZ(t), this; + } + random() { + return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this; + } + randomDirection() { + const e = (Math.random() - 0.5) * 2, t = Math.random() * Math.PI * 2, n = Math.sqrt(1 - e ** 2); + return this.x = n * Math.cos(t), this.y = n * Math.sin(t), this.z = e, this; + } + *[Symbol.iterator]() { + yield this.x, yield this.y, yield this.z; + } +} +const Tr = /* @__PURE__ */ new P(), aa = /* @__PURE__ */ new An(); +class Cn { + constructor(e = new P(1 / 0, 1 / 0, 1 / 0), t = new P(-1 / 0, -1 / 0, -1 / 0)) { + this.isBox3 = !0, this.min = e, this.max = t; + } + set(e, t) { + return this.min.copy(e), this.max.copy(t), this; + } + setFromArray(e) { + this.makeEmpty(); + for (let t = 0, n = e.length; t < n; t += 3) + this.expandByPoint(Lt.fromArray(e, t)); + return this; + } + setFromBufferAttribute(e) { + this.makeEmpty(); + for (let t = 0, n = e.count; t < n; t++) + this.expandByPoint(Lt.fromBufferAttribute(e, t)); + return this; + } + setFromPoints(e) { + this.makeEmpty(); + for (let t = 0, n = e.length; t < n; t++) + this.expandByPoint(e[t]); + return this; + } + setFromCenterAndSize(e, t) { + const n = Lt.copy(t).multiplyScalar(0.5); + return this.min.copy(e).sub(n), this.max.copy(e).add(n), this; + } + setFromObject(e, t = !1) { + return this.makeEmpty(), this.expandByObject(e, t); + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + return this.min.copy(e.min), this.max.copy(e.max), this; + } + makeEmpty() { + return this.min.x = this.min.y = this.min.z = 1 / 0, this.max.x = this.max.y = this.max.z = -1 / 0, this; + } + isEmpty() { + return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z; + } + getCenter(e) { + return this.isEmpty() ? e.set(0, 0, 0) : e.addVectors(this.min, this.max).multiplyScalar(0.5); + } + getSize(e) { + return this.isEmpty() ? e.set(0, 0, 0) : e.subVectors(this.max, this.min); + } + expandByPoint(e) { + return this.min.min(e), this.max.max(e), this; + } + expandByVector(e) { + return this.min.sub(e), this.max.add(e), this; + } + expandByScalar(e) { + return this.min.addScalar(-e), this.max.addScalar(e), this; + } + expandByObject(e, t = !1) { + e.updateWorldMatrix(!1, !1); + const n = e.geometry; + if (n !== void 0) { + const s = n.getAttribute("position"); + if (t === !0 && s !== void 0 && e.isInstancedMesh !== !0) + for (let o = 0, a = s.count; o < a; o++) + e.isMesh === !0 ? e.getVertexPosition(o, Lt) : Lt.fromBufferAttribute(s, o), Lt.applyMatrix4(e.matrixWorld), this.expandByPoint(Lt); + else + e.boundingBox !== void 0 ? (e.boundingBox === null && e.computeBoundingBox(), bi.copy(e.boundingBox)) : (n.boundingBox === null && n.computeBoundingBox(), bi.copy(n.boundingBox)), bi.applyMatrix4(e.matrixWorld), this.union(bi); + } + const r = e.children; + for (let s = 0, o = r.length; s < o; s++) + this.expandByObject(r[s], t); + return this; + } + containsPoint(e) { + return !(e.x < this.min.x || e.x > this.max.x || e.y < this.min.y || e.y > this.max.y || e.z < this.min.z || e.z > this.max.z); + } + containsBox(e) { + return this.min.x <= e.min.x && e.max.x <= this.max.x && this.min.y <= e.min.y && e.max.y <= this.max.y && this.min.z <= e.min.z && e.max.z <= this.max.z; + } + getParameter(e, t) { + return t.set( + (e.x - this.min.x) / (this.max.x - this.min.x), + (e.y - this.min.y) / (this.max.y - this.min.y), + (e.z - this.min.z) / (this.max.z - this.min.z) + ); + } + intersectsBox(e) { + return !(e.max.x < this.min.x || e.min.x > this.max.x || e.max.y < this.min.y || e.min.y > this.max.y || e.max.z < this.min.z || e.min.z > this.max.z); + } + intersectsSphere(e) { + return this.clampPoint(e.center, Lt), Lt.distanceToSquared(e.center) <= e.radius * e.radius; + } + intersectsPlane(e) { + let t, n; + return e.normal.x > 0 ? (t = e.normal.x * this.min.x, n = e.normal.x * this.max.x) : (t = e.normal.x * this.max.x, n = e.normal.x * this.min.x), e.normal.y > 0 ? (t += e.normal.y * this.min.y, n += e.normal.y * this.max.y) : (t += e.normal.y * this.max.y, n += e.normal.y * this.min.y), e.normal.z > 0 ? (t += e.normal.z * this.min.z, n += e.normal.z * this.max.z) : (t += e.normal.z * this.max.z, n += e.normal.z * this.min.z), t <= -e.constant && n >= -e.constant; + } + intersectsTriangle(e) { + if (this.isEmpty()) + return !1; + this.getCenter(li), Ai.subVectors(this.max, li), In.subVectors(e.a, li), Nn.subVectors(e.b, li), Fn.subVectors(e.c, li), Jt.subVectors(Nn, In), Qt.subVectors(Fn, Nn), mn.subVectors(In, Fn); + let t = [ + 0, + -Jt.z, + Jt.y, + 0, + -Qt.z, + Qt.y, + 0, + -mn.z, + mn.y, + Jt.z, + 0, + -Jt.x, + Qt.z, + 0, + -Qt.x, + mn.z, + 0, + -mn.x, + -Jt.y, + Jt.x, + 0, + -Qt.y, + Qt.x, + 0, + -mn.y, + mn.x, + 0 + ]; + return !br(t, In, Nn, Fn, Ai) || (t = [1, 0, 0, 0, 1, 0, 0, 0, 1], !br(t, In, Nn, Fn, Ai)) ? !1 : (wi.crossVectors(Jt, Qt), t = [wi.x, wi.y, wi.z], br(t, In, Nn, Fn, Ai)); + } + clampPoint(e, t) { + return t.copy(e).clamp(this.min, this.max); + } + distanceToPoint(e) { + return this.clampPoint(e, Lt).distanceTo(e); + } + getBoundingSphere(e) { + return this.isEmpty() ? e.makeEmpty() : (this.getCenter(e.center), e.radius = this.getSize(Lt).length() * 0.5), e; + } + intersect(e) { + return this.min.max(e.min), this.max.min(e.max), this.isEmpty() && this.makeEmpty(), this; + } + union(e) { + return this.min.min(e.min), this.max.max(e.max), this; + } + applyMatrix4(e) { + return this.isEmpty() ? this : (kt[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(e), kt[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(e), kt[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(e), kt[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(e), kt[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(e), kt[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(e), kt[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(e), kt[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(e), this.setFromPoints(kt), this); + } + translate(e) { + return this.min.add(e), this.max.add(e), this; + } + equals(e) { + return e.min.equals(this.min) && e.max.equals(this.max); + } +} +const kt = [ + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P() +], Lt = /* @__PURE__ */ new P(), bi = /* @__PURE__ */ new Cn(), In = /* @__PURE__ */ new P(), Nn = /* @__PURE__ */ new P(), Fn = /* @__PURE__ */ new P(), Jt = /* @__PURE__ */ new P(), Qt = /* @__PURE__ */ new P(), mn = /* @__PURE__ */ new P(), li = /* @__PURE__ */ new P(), Ai = /* @__PURE__ */ new P(), wi = /* @__PURE__ */ new P(), _n = /* @__PURE__ */ new P(); +function br(i, e, t, n, r) { + for (let s = 0, o = i.length - 3; s <= o; s += 3) { + _n.fromArray(i, s); + const a = r.x * Math.abs(_n.x) + r.y * Math.abs(_n.y) + r.z * Math.abs(_n.z), l = e.dot(_n), c = t.dot(_n), h = n.dot(_n); + if (Math.max(-Math.max(l, c, h), Math.min(l, c, h)) > a) + return !1; + } + return !0; +} +const Ql = /* @__PURE__ */ new Cn(), ci = /* @__PURE__ */ new P(), Ar = /* @__PURE__ */ new P(); +class xi { + constructor(e = new P(), t = -1) { + this.isSphere = !0, this.center = e, this.radius = t; + } + set(e, t) { + return this.center.copy(e), this.radius = t, this; + } + setFromPoints(e, t) { + const n = this.center; + t !== void 0 ? n.copy(t) : Ql.setFromPoints(e).getCenter(n); + let r = 0; + for (let s = 0, o = e.length; s < o; s++) + r = Math.max(r, n.distanceToSquared(e[s])); + return this.radius = Math.sqrt(r), this; + } + copy(e) { + return this.center.copy(e.center), this.radius = e.radius, this; + } + isEmpty() { + return this.radius < 0; + } + makeEmpty() { + return this.center.set(0, 0, 0), this.radius = -1, this; + } + containsPoint(e) { + return e.distanceToSquared(this.center) <= this.radius * this.radius; + } + distanceToPoint(e) { + return e.distanceTo(this.center) - this.radius; + } + intersectsSphere(e) { + const t = this.radius + e.radius; + return e.center.distanceToSquared(this.center) <= t * t; + } + intersectsBox(e) { + return e.intersectsSphere(this); + } + intersectsPlane(e) { + return Math.abs(e.distanceToPoint(this.center)) <= this.radius; + } + clampPoint(e, t) { + const n = this.center.distanceToSquared(e); + return t.copy(e), n > this.radius * this.radius && (t.sub(this.center).normalize(), t.multiplyScalar(this.radius).add(this.center)), t; + } + getBoundingBox(e) { + return this.isEmpty() ? (e.makeEmpty(), e) : (e.set(this.center, this.center), e.expandByScalar(this.radius), e); + } + applyMatrix4(e) { + return this.center.applyMatrix4(e), this.radius = this.radius * e.getMaxScaleOnAxis(), this; + } + translate(e) { + return this.center.add(e), this; + } + expandByPoint(e) { + if (this.isEmpty()) + return this.center.copy(e), this.radius = 0, this; + ci.subVectors(e, this.center); + const t = ci.lengthSq(); + if (t > this.radius * this.radius) { + const n = Math.sqrt(t), r = (n - this.radius) * 0.5; + this.center.addScaledVector(ci, r / n), this.radius += r; + } + return this; + } + union(e) { + return e.isEmpty() ? this : this.isEmpty() ? (this.copy(e), this) : (this.center.equals(e.center) === !0 ? this.radius = Math.max(this.radius, e.radius) : (Ar.subVectors(e.center, this.center).setLength(e.radius), this.expandByPoint(ci.copy(e.center).add(Ar)), this.expandByPoint(ci.copy(e.center).sub(Ar))), this); + } + equals(e) { + return e.center.equals(this.center) && e.radius === this.radius; + } + clone() { + return new this.constructor().copy(this); + } +} +const Wt = /* @__PURE__ */ new P(), wr = /* @__PURE__ */ new P(), Ri = /* @__PURE__ */ new P(), en = /* @__PURE__ */ new P(), Rr = /* @__PURE__ */ new P(), Ci = /* @__PURE__ */ new P(), Cr = /* @__PURE__ */ new P(); +class To { + constructor(e = new P(), t = new P(0, 0, -1)) { + this.origin = e, this.direction = t; + } + set(e, t) { + return this.origin.copy(e), this.direction.copy(t), this; + } + copy(e) { + return this.origin.copy(e.origin), this.direction.copy(e.direction), this; + } + at(e, t) { + return t.copy(this.origin).addScaledVector(this.direction, e); + } + lookAt(e) { + return this.direction.copy(e).sub(this.origin).normalize(), this; + } + recast(e) { + return this.origin.copy(this.at(e, Wt)), this; + } + closestPointToPoint(e, t) { + t.subVectors(e, this.origin); + const n = t.dot(this.direction); + return n < 0 ? t.copy(this.origin) : t.copy(this.origin).addScaledVector(this.direction, n); + } + distanceToPoint(e) { + return Math.sqrt(this.distanceSqToPoint(e)); + } + distanceSqToPoint(e) { + const t = Wt.subVectors(e, this.origin).dot(this.direction); + return t < 0 ? this.origin.distanceToSquared(e) : (Wt.copy(this.origin).addScaledVector(this.direction, t), Wt.distanceToSquared(e)); + } + distanceSqToSegment(e, t, n, r) { + wr.copy(e).add(t).multiplyScalar(0.5), Ri.copy(t).sub(e).normalize(), en.copy(this.origin).sub(wr); + const s = e.distanceTo(t) * 0.5, o = -this.direction.dot(Ri), a = en.dot(this.direction), l = -en.dot(Ri), c = en.lengthSq(), h = Math.abs(1 - o * o); + let d, p, m, g; + if (h > 0) + if (d = o * l - a, p = o * a - l, g = s * h, d >= 0) + if (p >= -g) + if (p <= g) { + const v = 1 / h; + d *= v, p *= v, m = d * (d + o * p + 2 * a) + p * (o * d + p + 2 * l) + c; + } else + p = s, d = Math.max(0, -(o * p + a)), m = -d * d + p * (p + 2 * l) + c; + else + p = -s, d = Math.max(0, -(o * p + a)), m = -d * d + p * (p + 2 * l) + c; + else + p <= -g ? (d = Math.max(0, -(-o * s + a)), p = d > 0 ? -s : Math.min(Math.max(-s, -l), s), m = -d * d + p * (p + 2 * l) + c) : p <= g ? (d = 0, p = Math.min(Math.max(-s, -l), s), m = p * (p + 2 * l) + c) : (d = Math.max(0, -(o * s + a)), p = d > 0 ? s : Math.min(Math.max(-s, -l), s), m = -d * d + p * (p + 2 * l) + c); + else + p = o > 0 ? -s : s, d = Math.max(0, -(o * p + a)), m = -d * d + p * (p + 2 * l) + c; + return n && n.copy(this.origin).addScaledVector(this.direction, d), r && r.copy(wr).addScaledVector(Ri, p), m; + } + intersectSphere(e, t) { + Wt.subVectors(e.center, this.origin); + const n = Wt.dot(this.direction), r = Wt.dot(Wt) - n * n, s = e.radius * e.radius; + if (r > s) return null; + const o = Math.sqrt(s - r), a = n - o, l = n + o; + return l < 0 ? null : a < 0 ? this.at(l, t) : this.at(a, t); + } + intersectsSphere(e) { + return this.distanceSqToPoint(e.center) <= e.radius * e.radius; + } + distanceToPlane(e) { + const t = e.normal.dot(this.direction); + if (t === 0) + return e.distanceToPoint(this.origin) === 0 ? 0 : null; + const n = -(this.origin.dot(e.normal) + e.constant) / t; + return n >= 0 ? n : null; + } + intersectPlane(e, t) { + const n = this.distanceToPlane(e); + return n === null ? null : this.at(n, t); + } + intersectsPlane(e) { + const t = e.distanceToPoint(this.origin); + return t === 0 || e.normal.dot(this.direction) * t < 0; + } + intersectBox(e, t) { + let n, r, s, o, a, l; + const c = 1 / this.direction.x, h = 1 / this.direction.y, d = 1 / this.direction.z, p = this.origin; + return c >= 0 ? (n = (e.min.x - p.x) * c, r = (e.max.x - p.x) * c) : (n = (e.max.x - p.x) * c, r = (e.min.x - p.x) * c), h >= 0 ? (s = (e.min.y - p.y) * h, o = (e.max.y - p.y) * h) : (s = (e.max.y - p.y) * h, o = (e.min.y - p.y) * h), n > o || s > r || ((s > n || isNaN(n)) && (n = s), (o < r || isNaN(r)) && (r = o), d >= 0 ? (a = (e.min.z - p.z) * d, l = (e.max.z - p.z) * d) : (a = (e.max.z - p.z) * d, l = (e.min.z - p.z) * d), n > l || a > r) || ((a > n || n !== n) && (n = a), (l < r || r !== r) && (r = l), r < 0) ? null : this.at(n >= 0 ? n : r, t); + } + intersectsBox(e) { + return this.intersectBox(e, Wt) !== null; + } + intersectTriangle(e, t, n, r, s) { + Rr.subVectors(t, e), Ci.subVectors(n, e), Cr.crossVectors(Rr, Ci); + let o = this.direction.dot(Cr), a; + if (o > 0) { + if (r) return null; + a = 1; + } else if (o < 0) + a = -1, o = -o; + else + return null; + en.subVectors(this.origin, e); + const l = a * this.direction.dot(Ci.crossVectors(en, Ci)); + if (l < 0) + return null; + const c = a * this.direction.dot(Rr.cross(en)); + if (c < 0 || l + c > o) + return null; + const h = -a * en.dot(Cr); + return h < 0 ? null : this.at(h / o, s); + } + applyMatrix4(e) { + return this.origin.applyMatrix4(e), this.direction.transformDirection(e), this; + } + equals(e) { + return e.origin.equals(this.origin) && e.direction.equals(this.direction); + } + clone() { + return new this.constructor().copy(this); + } +} +class Qe { + constructor(e, t, n, r, s, o, a, l, c, h, d, p, m, g, v, f) { + Qe.prototype.isMatrix4 = !0, this.elements = [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ], e !== void 0 && this.set(e, t, n, r, s, o, a, l, c, h, d, p, m, g, v, f); + } + set(e, t, n, r, s, o, a, l, c, h, d, p, m, g, v, f) { + const u = this.elements; + return u[0] = e, u[4] = t, u[8] = n, u[12] = r, u[1] = s, u[5] = o, u[9] = a, u[13] = l, u[2] = c, u[6] = h, u[10] = d, u[14] = p, u[3] = m, u[7] = g, u[11] = v, u[15] = f, this; + } + identity() { + return this.set( + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ), this; + } + clone() { + return new Qe().fromArray(this.elements); + } + copy(e) { + const t = this.elements, n = e.elements; + return t[0] = n[0], t[1] = n[1], t[2] = n[2], t[3] = n[3], t[4] = n[4], t[5] = n[5], t[6] = n[6], t[7] = n[7], t[8] = n[8], t[9] = n[9], t[10] = n[10], t[11] = n[11], t[12] = n[12], t[13] = n[13], t[14] = n[14], t[15] = n[15], this; + } + copyPosition(e) { + const t = this.elements, n = e.elements; + return t[12] = n[12], t[13] = n[13], t[14] = n[14], this; + } + setFromMatrix3(e) { + const t = e.elements; + return this.set( + t[0], + t[3], + t[6], + 0, + t[1], + t[4], + t[7], + 0, + t[2], + t[5], + t[8], + 0, + 0, + 0, + 0, + 1 + ), this; + } + extractBasis(e, t, n) { + return e.setFromMatrixColumn(this, 0), t.setFromMatrixColumn(this, 1), n.setFromMatrixColumn(this, 2), this; + } + makeBasis(e, t, n) { + return this.set( + e.x, + t.x, + n.x, + 0, + e.y, + t.y, + n.y, + 0, + e.z, + t.z, + n.z, + 0, + 0, + 0, + 0, + 1 + ), this; + } + extractRotation(e) { + const t = this.elements, n = e.elements, r = 1 / On.setFromMatrixColumn(e, 0).length(), s = 1 / On.setFromMatrixColumn(e, 1).length(), o = 1 / On.setFromMatrixColumn(e, 2).length(); + return t[0] = n[0] * r, t[1] = n[1] * r, t[2] = n[2] * r, t[3] = 0, t[4] = n[4] * s, t[5] = n[5] * s, t[6] = n[6] * s, t[7] = 0, t[8] = n[8] * o, t[9] = n[9] * o, t[10] = n[10] * o, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, this; + } + makeRotationFromEuler(e) { + const t = this.elements, n = e.x, r = e.y, s = e.z, o = Math.cos(n), a = Math.sin(n), l = Math.cos(r), c = Math.sin(r), h = Math.cos(s), d = Math.sin(s); + if (e.order === "XYZ") { + const p = o * h, m = o * d, g = a * h, v = a * d; + t[0] = l * h, t[4] = -l * d, t[8] = c, t[1] = m + g * c, t[5] = p - v * c, t[9] = -a * l, t[2] = v - p * c, t[6] = g + m * c, t[10] = o * l; + } else if (e.order === "YXZ") { + const p = l * h, m = l * d, g = c * h, v = c * d; + t[0] = p + v * a, t[4] = g * a - m, t[8] = o * c, t[1] = o * d, t[5] = o * h, t[9] = -a, t[2] = m * a - g, t[6] = v + p * a, t[10] = o * l; + } else if (e.order === "ZXY") { + const p = l * h, m = l * d, g = c * h, v = c * d; + t[0] = p - v * a, t[4] = -o * d, t[8] = g + m * a, t[1] = m + g * a, t[5] = o * h, t[9] = v - p * a, t[2] = -o * c, t[6] = a, t[10] = o * l; + } else if (e.order === "ZYX") { + const p = o * h, m = o * d, g = a * h, v = a * d; + t[0] = l * h, t[4] = g * c - m, t[8] = p * c + v, t[1] = l * d, t[5] = v * c + p, t[9] = m * c - g, t[2] = -c, t[6] = a * l, t[10] = o * l; + } else if (e.order === "YZX") { + const p = o * l, m = o * c, g = a * l, v = a * c; + t[0] = l * h, t[4] = v - p * d, t[8] = g * d + m, t[1] = d, t[5] = o * h, t[9] = -a * h, t[2] = -c * h, t[6] = m * d + g, t[10] = p - v * d; + } else if (e.order === "XZY") { + const p = o * l, m = o * c, g = a * l, v = a * c; + t[0] = l * h, t[4] = -d, t[8] = c * h, t[1] = p * d + v, t[5] = o * h, t[9] = m * d - g, t[2] = g * d - m, t[6] = a * h, t[10] = v * d + p; + } + return t[3] = 0, t[7] = 0, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, this; + } + makeRotationFromQuaternion(e) { + return this.compose(ec, e, tc); + } + lookAt(e, t, n) { + const r = this.elements; + return Et.subVectors(e, t), Et.lengthSq() === 0 && (Et.z = 1), Et.normalize(), tn.crossVectors(n, Et), tn.lengthSq() === 0 && (Math.abs(n.z) === 1 ? Et.x += 1e-4 : Et.z += 1e-4, Et.normalize(), tn.crossVectors(n, Et)), tn.normalize(), Li.crossVectors(Et, tn), r[0] = tn.x, r[4] = Li.x, r[8] = Et.x, r[1] = tn.y, r[5] = Li.y, r[9] = Et.y, r[2] = tn.z, r[6] = Li.z, r[10] = Et.z, this; + } + multiply(e) { + return this.multiplyMatrices(this, e); + } + premultiply(e) { + return this.multiplyMatrices(e, this); + } + multiplyMatrices(e, t) { + const n = e.elements, r = t.elements, s = this.elements, o = n[0], a = n[4], l = n[8], c = n[12], h = n[1], d = n[5], p = n[9], m = n[13], g = n[2], v = n[6], f = n[10], u = n[14], b = n[3], S = n[7], R = n[11], D = n[15], C = r[0], A = r[4], W = r[8], x = r[12], y = r[1], z = r[5], Z = r[9], re = r[13], L = r[2], F = r[6], V = r[10], Y = r[14], X = r[3], k = r[7], q = r[11], Q = r[15]; + return s[0] = o * C + a * y + l * L + c * X, s[4] = o * A + a * z + l * F + c * k, s[8] = o * W + a * Z + l * V + c * q, s[12] = o * x + a * re + l * Y + c * Q, s[1] = h * C + d * y + p * L + m * X, s[5] = h * A + d * z + p * F + m * k, s[9] = h * W + d * Z + p * V + m * q, s[13] = h * x + d * re + p * Y + m * Q, s[2] = g * C + v * y + f * L + u * X, s[6] = g * A + v * z + f * F + u * k, s[10] = g * W + v * Z + f * V + u * q, s[14] = g * x + v * re + f * Y + u * Q, s[3] = b * C + S * y + R * L + D * X, s[7] = b * A + S * z + R * F + D * k, s[11] = b * W + S * Z + R * V + D * q, s[15] = b * x + S * re + R * Y + D * Q, this; + } + multiplyScalar(e) { + const t = this.elements; + return t[0] *= e, t[4] *= e, t[8] *= e, t[12] *= e, t[1] *= e, t[5] *= e, t[9] *= e, t[13] *= e, t[2] *= e, t[6] *= e, t[10] *= e, t[14] *= e, t[3] *= e, t[7] *= e, t[11] *= e, t[15] *= e, this; + } + determinant() { + const e = this.elements, t = e[0], n = e[4], r = e[8], s = e[12], o = e[1], a = e[5], l = e[9], c = e[13], h = e[2], d = e[6], p = e[10], m = e[14], g = e[3], v = e[7], f = e[11], u = e[15]; + return g * (+s * l * d - r * c * d - s * a * p + n * c * p + r * a * m - n * l * m) + v * (+t * l * m - t * c * p + s * o * p - r * o * m + r * c * h - s * l * h) + f * (+t * c * d - t * a * m - s * o * d + n * o * m + s * a * h - n * c * h) + u * (-r * a * h - t * l * d + t * a * p + r * o * d - n * o * p + n * l * h); + } + transpose() { + const e = this.elements; + let t; + return t = e[1], e[1] = e[4], e[4] = t, t = e[2], e[2] = e[8], e[8] = t, t = e[6], e[6] = e[9], e[9] = t, t = e[3], e[3] = e[12], e[12] = t, t = e[7], e[7] = e[13], e[13] = t, t = e[11], e[11] = e[14], e[14] = t, this; + } + setPosition(e, t, n) { + const r = this.elements; + return e.isVector3 ? (r[12] = e.x, r[13] = e.y, r[14] = e.z) : (r[12] = e, r[13] = t, r[14] = n), this; + } + invert() { + const e = this.elements, t = e[0], n = e[1], r = e[2], s = e[3], o = e[4], a = e[5], l = e[6], c = e[7], h = e[8], d = e[9], p = e[10], m = e[11], g = e[12], v = e[13], f = e[14], u = e[15], b = d * f * c - v * p * c + v * l * m - a * f * m - d * l * u + a * p * u, S = g * p * c - h * f * c - g * l * m + o * f * m + h * l * u - o * p * u, R = h * v * c - g * d * c + g * a * m - o * v * m - h * a * u + o * d * u, D = g * d * l - h * v * l - g * a * p + o * v * p + h * a * f - o * d * f, C = t * b + n * S + r * R + s * D; + if (C === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + const A = 1 / C; + return e[0] = b * A, e[1] = (v * p * s - d * f * s - v * r * m + n * f * m + d * r * u - n * p * u) * A, e[2] = (a * f * s - v * l * s + v * r * c - n * f * c - a * r * u + n * l * u) * A, e[3] = (d * l * s - a * p * s - d * r * c + n * p * c + a * r * m - n * l * m) * A, e[4] = S * A, e[5] = (h * f * s - g * p * s + g * r * m - t * f * m - h * r * u + t * p * u) * A, e[6] = (g * l * s - o * f * s - g * r * c + t * f * c + o * r * u - t * l * u) * A, e[7] = (o * p * s - h * l * s + h * r * c - t * p * c - o * r * m + t * l * m) * A, e[8] = R * A, e[9] = (g * d * s - h * v * s - g * n * m + t * v * m + h * n * u - t * d * u) * A, e[10] = (o * v * s - g * a * s + g * n * c - t * v * c - o * n * u + t * a * u) * A, e[11] = (h * a * s - o * d * s - h * n * c + t * d * c + o * n * m - t * a * m) * A, e[12] = D * A, e[13] = (h * v * r - g * d * r + g * n * p - t * v * p - h * n * f + t * d * f) * A, e[14] = (g * a * r - o * v * r - g * n * l + t * v * l + o * n * f - t * a * f) * A, e[15] = (o * d * r - h * a * r + h * n * l - t * d * l - o * n * p + t * a * p) * A, this; + } + scale(e) { + const t = this.elements, n = e.x, r = e.y, s = e.z; + return t[0] *= n, t[4] *= r, t[8] *= s, t[1] *= n, t[5] *= r, t[9] *= s, t[2] *= n, t[6] *= r, t[10] *= s, t[3] *= n, t[7] *= r, t[11] *= s, this; + } + getMaxScaleOnAxis() { + const e = this.elements, t = e[0] * e[0] + e[1] * e[1] + e[2] * e[2], n = e[4] * e[4] + e[5] * e[5] + e[6] * e[6], r = e[8] * e[8] + e[9] * e[9] + e[10] * e[10]; + return Math.sqrt(Math.max(t, n, r)); + } + makeTranslation(e, t, n) { + return e.isVector3 ? this.set( + 1, + 0, + 0, + e.x, + 0, + 1, + 0, + e.y, + 0, + 0, + 1, + e.z, + 0, + 0, + 0, + 1 + ) : this.set( + 1, + 0, + 0, + e, + 0, + 1, + 0, + t, + 0, + 0, + 1, + n, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationX(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + 1, + 0, + 0, + 0, + 0, + t, + -n, + 0, + 0, + n, + t, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationY(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + t, + 0, + n, + 0, + 0, + 1, + 0, + 0, + -n, + 0, + t, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationZ(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + t, + -n, + 0, + 0, + n, + t, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationAxis(e, t) { + const n = Math.cos(t), r = Math.sin(t), s = 1 - n, o = e.x, a = e.y, l = e.z, c = s * o, h = s * a; + return this.set( + c * o + n, + c * a - r * l, + c * l + r * a, + 0, + c * a + r * l, + h * a + n, + h * l - r * o, + 0, + c * l - r * a, + h * l + r * o, + s * l * l + n, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeScale(e, t, n) { + return this.set( + e, + 0, + 0, + 0, + 0, + t, + 0, + 0, + 0, + 0, + n, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeShear(e, t, n, r, s, o) { + return this.set( + 1, + n, + s, + 0, + e, + 1, + o, + 0, + t, + r, + 1, + 0, + 0, + 0, + 0, + 1 + ), this; + } + compose(e, t, n) { + const r = this.elements, s = t._x, o = t._y, a = t._z, l = t._w, c = s + s, h = o + o, d = a + a, p = s * c, m = s * h, g = s * d, v = o * h, f = o * d, u = a * d, b = l * c, S = l * h, R = l * d, D = n.x, C = n.y, A = n.z; + return r[0] = (1 - (v + u)) * D, r[1] = (m + R) * D, r[2] = (g - S) * D, r[3] = 0, r[4] = (m - R) * C, r[5] = (1 - (p + u)) * C, r[6] = (f + b) * C, r[7] = 0, r[8] = (g + S) * A, r[9] = (f - b) * A, r[10] = (1 - (p + v)) * A, r[11] = 0, r[12] = e.x, r[13] = e.y, r[14] = e.z, r[15] = 1, this; + } + decompose(e, t, n) { + const r = this.elements; + let s = On.set(r[0], r[1], r[2]).length(); + const o = On.set(r[4], r[5], r[6]).length(), a = On.set(r[8], r[9], r[10]).length(); + this.determinant() < 0 && (s = -s), e.x = r[12], e.y = r[13], e.z = r[14], Pt.copy(this); + const c = 1 / s, h = 1 / o, d = 1 / a; + return Pt.elements[0] *= c, Pt.elements[1] *= c, Pt.elements[2] *= c, Pt.elements[4] *= h, Pt.elements[5] *= h, Pt.elements[6] *= h, Pt.elements[8] *= d, Pt.elements[9] *= d, Pt.elements[10] *= d, t.setFromRotationMatrix(Pt), n.x = s, n.y = o, n.z = a, this; + } + makePerspective(e, t, n, r, s, o, a = Zt) { + const l = this.elements, c = 2 * s / (t - e), h = 2 * s / (n - r), d = (t + e) / (t - e), p = (n + r) / (n - r); + let m, g; + if (a === Zt) + m = -(o + s) / (o - s), g = -2 * o * s / (o - s); + else if (a === tr) + m = -o / (o - s), g = -o * s / (o - s); + else + throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: " + a); + return l[0] = c, l[4] = 0, l[8] = d, l[12] = 0, l[1] = 0, l[5] = h, l[9] = p, l[13] = 0, l[2] = 0, l[6] = 0, l[10] = m, l[14] = g, l[3] = 0, l[7] = 0, l[11] = -1, l[15] = 0, this; + } + makeOrthographic(e, t, n, r, s, o, a = Zt) { + const l = this.elements, c = 1 / (t - e), h = 1 / (n - r), d = 1 / (o - s), p = (t + e) * c, m = (n + r) * h; + let g, v; + if (a === Zt) + g = (o + s) * d, v = -2 * d; + else if (a === tr) + g = s * d, v = -1 * d; + else + throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: " + a); + return l[0] = 2 * c, l[4] = 0, l[8] = 0, l[12] = -p, l[1] = 0, l[5] = 2 * h, l[9] = 0, l[13] = -m, l[2] = 0, l[6] = 0, l[10] = v, l[14] = -g, l[3] = 0, l[7] = 0, l[11] = 0, l[15] = 1, this; + } + equals(e) { + const t = this.elements, n = e.elements; + for (let r = 0; r < 16; r++) + if (t[r] !== n[r]) return !1; + return !0; + } + fromArray(e, t = 0) { + for (let n = 0; n < 16; n++) + this.elements[n] = e[n + t]; + return this; + } + toArray(e = [], t = 0) { + const n = this.elements; + return e[t] = n[0], e[t + 1] = n[1], e[t + 2] = n[2], e[t + 3] = n[3], e[t + 4] = n[4], e[t + 5] = n[5], e[t + 6] = n[6], e[t + 7] = n[7], e[t + 8] = n[8], e[t + 9] = n[9], e[t + 10] = n[10], e[t + 11] = n[11], e[t + 12] = n[12], e[t + 13] = n[13], e[t + 14] = n[14], e[t + 15] = n[15], e; + } +} +const On = /* @__PURE__ */ new P(), Pt = /* @__PURE__ */ new Qe(), ec = /* @__PURE__ */ new P(0, 0, 0), tc = /* @__PURE__ */ new P(1, 1, 1), tn = /* @__PURE__ */ new P(), Li = /* @__PURE__ */ new P(), Et = /* @__PURE__ */ new P(), oa = /* @__PURE__ */ new Qe(), la = /* @__PURE__ */ new An(); +class ar { + constructor(e = 0, t = 0, n = 0, r = ar.DEFAULT_ORDER) { + this.isEuler = !0, this._x = e, this._y = t, this._z = n, this._order = r; + } + get x() { + return this._x; + } + set x(e) { + this._x = e, this._onChangeCallback(); + } + get y() { + return this._y; + } + set y(e) { + this._y = e, this._onChangeCallback(); + } + get z() { + return this._z; + } + set z(e) { + this._z = e, this._onChangeCallback(); + } + get order() { + return this._order; + } + set order(e) { + this._order = e, this._onChangeCallback(); + } + set(e, t, n, r = this._order) { + return this._x = e, this._y = t, this._z = n, this._order = r, this._onChangeCallback(), this; + } + clone() { + return new this.constructor(this._x, this._y, this._z, this._order); + } + copy(e) { + return this._x = e._x, this._y = e._y, this._z = e._z, this._order = e._order, this._onChangeCallback(), this; + } + setFromRotationMatrix(e, t = this._order, n = !0) { + const r = e.elements, s = r[0], o = r[4], a = r[8], l = r[1], c = r[5], h = r[9], d = r[2], p = r[6], m = r[10]; + switch (t) { + case "XYZ": + this._y = Math.asin(vt(a, -1, 1)), Math.abs(a) < 0.9999999 ? (this._x = Math.atan2(-h, m), this._z = Math.atan2(-o, s)) : (this._x = Math.atan2(p, c), this._z = 0); + break; + case "YXZ": + this._x = Math.asin(-vt(h, -1, 1)), Math.abs(h) < 0.9999999 ? (this._y = Math.atan2(a, m), this._z = Math.atan2(l, c)) : (this._y = Math.atan2(-d, s), this._z = 0); + break; + case "ZXY": + this._x = Math.asin(vt(p, -1, 1)), Math.abs(p) < 0.9999999 ? (this._y = Math.atan2(-d, m), this._z = Math.atan2(-o, c)) : (this._y = 0, this._z = Math.atan2(l, s)); + break; + case "ZYX": + this._y = Math.asin(-vt(d, -1, 1)), Math.abs(d) < 0.9999999 ? (this._x = Math.atan2(p, m), this._z = Math.atan2(l, s)) : (this._x = 0, this._z = Math.atan2(-o, c)); + break; + case "YZX": + this._z = Math.asin(vt(l, -1, 1)), Math.abs(l) < 0.9999999 ? (this._x = Math.atan2(-h, c), this._y = Math.atan2(-d, s)) : (this._x = 0, this._y = Math.atan2(a, m)); + break; + case "XZY": + this._z = Math.asin(-vt(o, -1, 1)), Math.abs(o) < 0.9999999 ? (this._x = Math.atan2(p, c), this._y = Math.atan2(a, s)) : (this._x = Math.atan2(-h, m), this._y = 0); + break; + default: + console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: " + t); + } + return this._order = t, n === !0 && this._onChangeCallback(), this; + } + setFromQuaternion(e, t, n) { + return oa.makeRotationFromQuaternion(e), this.setFromRotationMatrix(oa, t, n); + } + setFromVector3(e, t = this._order) { + return this.set(e.x, e.y, e.z, t); + } + reorder(e) { + return la.setFromEuler(this), this.setFromQuaternion(la, e); + } + equals(e) { + return e._x === this._x && e._y === this._y && e._z === this._z && e._order === this._order; + } + fromArray(e) { + return this._x = e[0], this._y = e[1], this._z = e[2], e[3] !== void 0 && (this._order = e[3]), this._onChangeCallback(), this; + } + toArray(e = [], t = 0) { + return e[t] = this._x, e[t + 1] = this._y, e[t + 2] = this._z, e[t + 3] = this._order, e; + } + _onChange(e) { + return this._onChangeCallback = e, this; + } + _onChangeCallback() { + } + *[Symbol.iterator]() { + yield this._x, yield this._y, yield this._z, yield this._order; + } +} +ar.DEFAULT_ORDER = "XYZ"; +class bo { + constructor() { + this.mask = 1; + } + set(e) { + this.mask = (1 << e | 0) >>> 0; + } + enable(e) { + this.mask |= 1 << e | 0; + } + enableAll() { + this.mask = -1; + } + toggle(e) { + this.mask ^= 1 << e | 0; + } + disable(e) { + this.mask &= ~(1 << e | 0); + } + disableAll() { + this.mask = 0; + } + test(e) { + return (this.mask & e.mask) !== 0; + } + isEnabled(e) { + return (this.mask & (1 << e | 0)) !== 0; + } +} +let nc = 0; +const ca = /* @__PURE__ */ new P(), Bn = /* @__PURE__ */ new An(), Xt = /* @__PURE__ */ new Qe(), Pi = /* @__PURE__ */ new P(), ui = /* @__PURE__ */ new P(), ic = /* @__PURE__ */ new P(), rc = /* @__PURE__ */ new An(), ua = /* @__PURE__ */ new P(1, 0, 0), ha = /* @__PURE__ */ new P(0, 1, 0), da = /* @__PURE__ */ new P(0, 0, 1), sc = { type: "added" }, ac = { type: "removed" }; +class dt extends Rn { + constructor() { + super(), this.isObject3D = !0, Object.defineProperty(this, "id", { value: nc++ }), this.uuid = vi(), this.name = "", this.type = "Object3D", this.parent = null, this.children = [], this.up = dt.DEFAULT_UP.clone(); + const e = new P(), t = new ar(), n = new An(), r = new P(1, 1, 1); + function s() { + n.setFromEuler(t, !1); + } + function o() { + t.setFromQuaternion(n, void 0, !1); + } + t._onChange(s), n._onChange(o), Object.defineProperties(this, { + position: { + configurable: !0, + enumerable: !0, + value: e + }, + rotation: { + configurable: !0, + enumerable: !0, + value: t + }, + quaternion: { + configurable: !0, + enumerable: !0, + value: n + }, + scale: { + configurable: !0, + enumerable: !0, + value: r + }, + modelViewMatrix: { + value: new Qe() + }, + normalMatrix: { + value: new Ve() + } + }), this.matrix = new Qe(), this.matrixWorld = new Qe(), this.matrixAutoUpdate = dt.DEFAULT_MATRIX_AUTO_UPDATE, this.matrixWorldAutoUpdate = dt.DEFAULT_MATRIX_WORLD_AUTO_UPDATE, this.matrixWorldNeedsUpdate = !1, this.layers = new bo(), this.visible = !0, this.castShadow = !1, this.receiveShadow = !1, this.frustumCulled = !0, this.renderOrder = 0, this.animations = [], this.userData = {}; + } + onBeforeShadow() { + } + onAfterShadow() { + } + onBeforeRender() { + } + onAfterRender() { + } + applyMatrix4(e) { + this.matrixAutoUpdate && this.updateMatrix(), this.matrix.premultiply(e), this.matrix.decompose(this.position, this.quaternion, this.scale); + } + applyQuaternion(e) { + return this.quaternion.premultiply(e), this; + } + setRotationFromAxisAngle(e, t) { + this.quaternion.setFromAxisAngle(e, t); + } + setRotationFromEuler(e) { + this.quaternion.setFromEuler(e, !0); + } + setRotationFromMatrix(e) { + this.quaternion.setFromRotationMatrix(e); + } + setRotationFromQuaternion(e) { + this.quaternion.copy(e); + } + rotateOnAxis(e, t) { + return Bn.setFromAxisAngle(e, t), this.quaternion.multiply(Bn), this; + } + rotateOnWorldAxis(e, t) { + return Bn.setFromAxisAngle(e, t), this.quaternion.premultiply(Bn), this; + } + rotateX(e) { + return this.rotateOnAxis(ua, e); + } + rotateY(e) { + return this.rotateOnAxis(ha, e); + } + rotateZ(e) { + return this.rotateOnAxis(da, e); + } + translateOnAxis(e, t) { + return ca.copy(e).applyQuaternion(this.quaternion), this.position.add(ca.multiplyScalar(t)), this; + } + translateX(e) { + return this.translateOnAxis(ua, e); + } + translateY(e) { + return this.translateOnAxis(ha, e); + } + translateZ(e) { + return this.translateOnAxis(da, e); + } + localToWorld(e) { + return this.updateWorldMatrix(!0, !1), e.applyMatrix4(this.matrixWorld); + } + worldToLocal(e) { + return this.updateWorldMatrix(!0, !1), e.applyMatrix4(Xt.copy(this.matrixWorld).invert()); + } + lookAt(e, t, n) { + e.isVector3 ? Pi.copy(e) : Pi.set(e, t, n); + const r = this.parent; + this.updateWorldMatrix(!0, !1), ui.setFromMatrixPosition(this.matrixWorld), this.isCamera || this.isLight ? Xt.lookAt(ui, Pi, this.up) : Xt.lookAt(Pi, ui, this.up), this.quaternion.setFromRotationMatrix(Xt), r && (Xt.extractRotation(r.matrixWorld), Bn.setFromRotationMatrix(Xt), this.quaternion.premultiply(Bn.invert())); + } + add(e) { + if (arguments.length > 1) { + for (let t = 0; t < arguments.length; t++) + this.add(arguments[t]); + return this; + } + return e === this ? (console.error("THREE.Object3D.add: object can't be added as a child of itself.", e), this) : (e && e.isObject3D ? (e.parent !== null && e.parent.remove(e), e.parent = this, this.children.push(e), e.dispatchEvent(sc)) : console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.", e), this); + } + remove(e) { + if (arguments.length > 1) { + for (let n = 0; n < arguments.length; n++) + this.remove(arguments[n]); + return this; + } + const t = this.children.indexOf(e); + return t !== -1 && (e.parent = null, this.children.splice(t, 1), e.dispatchEvent(ac)), this; + } + removeFromParent() { + const e = this.parent; + return e !== null && e.remove(this), this; + } + clear() { + return this.remove(...this.children); + } + attach(e) { + return this.updateWorldMatrix(!0, !1), Xt.copy(this.matrixWorld).invert(), e.parent !== null && (e.parent.updateWorldMatrix(!0, !1), Xt.multiply(e.parent.matrixWorld)), e.applyMatrix4(Xt), this.add(e), e.updateWorldMatrix(!1, !0), this; + } + getObjectById(e) { + return this.getObjectByProperty("id", e); + } + getObjectByName(e) { + return this.getObjectByProperty("name", e); + } + getObjectByProperty(e, t) { + if (this[e] === t) return this; + for (let n = 0, r = this.children.length; n < r; n++) { + const o = this.children[n].getObjectByProperty(e, t); + if (o !== void 0) + return o; + } + } + getObjectsByProperty(e, t, n = []) { + this[e] === t && n.push(this); + const r = this.children; + for (let s = 0, o = r.length; s < o; s++) + r[s].getObjectsByProperty(e, t, n); + return n; + } + getWorldPosition(e) { + return this.updateWorldMatrix(!0, !1), e.setFromMatrixPosition(this.matrixWorld); + } + getWorldQuaternion(e) { + return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose(ui, e, ic), e; + } + getWorldScale(e) { + return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose(ui, rc, e), e; + } + getWorldDirection(e) { + this.updateWorldMatrix(!0, !1); + const t = this.matrixWorld.elements; + return e.set(t[8], t[9], t[10]).normalize(); + } + raycast() { + } + traverse(e) { + e(this); + const t = this.children; + for (let n = 0, r = t.length; n < r; n++) + t[n].traverse(e); + } + traverseVisible(e) { + if (this.visible === !1) return; + e(this); + const t = this.children; + for (let n = 0, r = t.length; n < r; n++) + t[n].traverseVisible(e); + } + traverseAncestors(e) { + const t = this.parent; + t !== null && (e(t), t.traverseAncestors(e)); + } + updateMatrix() { + this.matrix.compose(this.position, this.quaternion, this.scale), this.matrixWorldNeedsUpdate = !0; + } + updateMatrixWorld(e) { + this.matrixAutoUpdate && this.updateMatrix(), (this.matrixWorldNeedsUpdate || e) && (this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), this.matrixWorldNeedsUpdate = !1, e = !0); + const t = this.children; + for (let n = 0, r = t.length; n < r; n++) { + const s = t[n]; + (s.matrixWorldAutoUpdate === !0 || e === !0) && s.updateMatrixWorld(e); + } + } + updateWorldMatrix(e, t) { + const n = this.parent; + if (e === !0 && n !== null && n.matrixWorldAutoUpdate === !0 && n.updateWorldMatrix(!0, !1), this.matrixAutoUpdate && this.updateMatrix(), this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), t === !0) { + const r = this.children; + for (let s = 0, o = r.length; s < o; s++) { + const a = r[s]; + a.matrixWorldAutoUpdate === !0 && a.updateWorldMatrix(!1, !0); + } + } + } + toJSON(e) { + const t = e === void 0 || typeof e == "string", n = {}; + t && (e = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {}, + skeletons: {}, + animations: {}, + nodes: {} + }, n.metadata = { + version: 4.6, + type: "Object", + generator: "Object3D.toJSON" + }); + const r = {}; + r.uuid = this.uuid, r.type = this.type, this.name !== "" && (r.name = this.name), this.castShadow === !0 && (r.castShadow = !0), this.receiveShadow === !0 && (r.receiveShadow = !0), this.visible === !1 && (r.visible = !1), this.frustumCulled === !1 && (r.frustumCulled = !1), this.renderOrder !== 0 && (r.renderOrder = this.renderOrder), Object.keys(this.userData).length > 0 && (r.userData = this.userData), r.layers = this.layers.mask, r.matrix = this.matrix.toArray(), r.up = this.up.toArray(), this.matrixAutoUpdate === !1 && (r.matrixAutoUpdate = !1), this.isInstancedMesh && (r.type = "InstancedMesh", r.count = this.count, r.instanceMatrix = this.instanceMatrix.toJSON(), this.instanceColor !== null && (r.instanceColor = this.instanceColor.toJSON())), this.isBatchedMesh && (r.type = "BatchedMesh", r.perObjectFrustumCulled = this.perObjectFrustumCulled, r.sortObjects = this.sortObjects, r.drawRanges = this._drawRanges, r.reservedRanges = this._reservedRanges, r.visibility = this._visibility, r.active = this._active, r.bounds = this._bounds.map((a) => ({ + boxInitialized: a.boxInitialized, + boxMin: a.box.min.toArray(), + boxMax: a.box.max.toArray(), + sphereInitialized: a.sphereInitialized, + sphereRadius: a.sphere.radius, + sphereCenter: a.sphere.center.toArray() + })), r.maxGeometryCount = this._maxGeometryCount, r.maxVertexCount = this._maxVertexCount, r.maxIndexCount = this._maxIndexCount, r.geometryInitialized = this._geometryInitialized, r.geometryCount = this._geometryCount, r.matricesTexture = this._matricesTexture.toJSON(e), this.boundingSphere !== null && (r.boundingSphere = { + center: r.boundingSphere.center.toArray(), + radius: r.boundingSphere.radius + }), this.boundingBox !== null && (r.boundingBox = { + min: r.boundingBox.min.toArray(), + max: r.boundingBox.max.toArray() + })); + function s(a, l) { + return a[l.uuid] === void 0 && (a[l.uuid] = l.toJSON(e)), l.uuid; + } + if (this.isScene) + this.background && (this.background.isColor ? r.background = this.background.toJSON() : this.background.isTexture && (r.background = this.background.toJSON(e).uuid)), this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== !0 && (r.environment = this.environment.toJSON(e).uuid); + else if (this.isMesh || this.isLine || this.isPoints) { + r.geometry = s(e.geometries, this.geometry); + const a = this.geometry.parameters; + if (a !== void 0 && a.shapes !== void 0) { + const l = a.shapes; + if (Array.isArray(l)) + for (let c = 0, h = l.length; c < h; c++) { + const d = l[c]; + s(e.shapes, d); + } + else + s(e.shapes, l); + } + } + if (this.isSkinnedMesh && (r.bindMode = this.bindMode, r.bindMatrix = this.bindMatrix.toArray(), this.skeleton !== void 0 && (s(e.skeletons, this.skeleton), r.skeleton = this.skeleton.uuid)), this.material !== void 0) + if (Array.isArray(this.material)) { + const a = []; + for (let l = 0, c = this.material.length; l < c; l++) + a.push(s(e.materials, this.material[l])); + r.material = a; + } else + r.material = s(e.materials, this.material); + if (this.children.length > 0) { + r.children = []; + for (let a = 0; a < this.children.length; a++) + r.children.push(this.children[a].toJSON(e).object); + } + if (this.animations.length > 0) { + r.animations = []; + for (let a = 0; a < this.animations.length; a++) { + const l = this.animations[a]; + r.animations.push(s(e.animations, l)); + } + } + if (t) { + const a = o(e.geometries), l = o(e.materials), c = o(e.textures), h = o(e.images), d = o(e.shapes), p = o(e.skeletons), m = o(e.animations), g = o(e.nodes); + a.length > 0 && (n.geometries = a), l.length > 0 && (n.materials = l), c.length > 0 && (n.textures = c), h.length > 0 && (n.images = h), d.length > 0 && (n.shapes = d), p.length > 0 && (n.skeletons = p), m.length > 0 && (n.animations = m), g.length > 0 && (n.nodes = g); + } + return n.object = r, n; + function o(a) { + const l = []; + for (const c in a) { + const h = a[c]; + delete h.metadata, l.push(h); + } + return l; + } + } + clone(e) { + return new this.constructor().copy(this, e); + } + copy(e, t = !0) { + if (this.name = e.name, this.up.copy(e.up), this.position.copy(e.position), this.rotation.order = e.rotation.order, this.quaternion.copy(e.quaternion), this.scale.copy(e.scale), this.matrix.copy(e.matrix), this.matrixWorld.copy(e.matrixWorld), this.matrixAutoUpdate = e.matrixAutoUpdate, this.matrixWorldAutoUpdate = e.matrixWorldAutoUpdate, this.matrixWorldNeedsUpdate = e.matrixWorldNeedsUpdate, this.layers.mask = e.layers.mask, this.visible = e.visible, this.castShadow = e.castShadow, this.receiveShadow = e.receiveShadow, this.frustumCulled = e.frustumCulled, this.renderOrder = e.renderOrder, this.animations = e.animations.slice(), this.userData = JSON.parse(JSON.stringify(e.userData)), t === !0) + for (let n = 0; n < e.children.length; n++) { + const r = e.children[n]; + this.add(r.clone()); + } + return this; + } +} +dt.DEFAULT_UP = /* @__PURE__ */ new P(0, 1, 0); +dt.DEFAULT_MATRIX_AUTO_UPDATE = !0; +dt.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = !0; +const Dt = /* @__PURE__ */ new P(), qt = /* @__PURE__ */ new P(), Lr = /* @__PURE__ */ new P(), Yt = /* @__PURE__ */ new P(), zn = /* @__PURE__ */ new P(), Gn = /* @__PURE__ */ new P(), fa = /* @__PURE__ */ new P(), Pr = /* @__PURE__ */ new P(), Dr = /* @__PURE__ */ new P(), Ur = /* @__PURE__ */ new P(); +let Di = !1; +class It { + constructor(e = new P(), t = new P(), n = new P()) { + this.a = e, this.b = t, this.c = n; + } + static getNormal(e, t, n, r) { + r.subVectors(n, t), Dt.subVectors(e, t), r.cross(Dt); + const s = r.lengthSq(); + return s > 0 ? r.multiplyScalar(1 / Math.sqrt(s)) : r.set(0, 0, 0); + } + // static/instance method to calculate barycentric coordinates + // based on: http://www.blackpawn.com/texts/pointinpoly/default.html + static getBarycoord(e, t, n, r, s) { + Dt.subVectors(r, t), qt.subVectors(n, t), Lr.subVectors(e, t); + const o = Dt.dot(Dt), a = Dt.dot(qt), l = Dt.dot(Lr), c = qt.dot(qt), h = qt.dot(Lr), d = o * c - a * a; + if (d === 0) + return s.set(0, 0, 0), null; + const p = 1 / d, m = (c * l - a * h) * p, g = (o * h - a * l) * p; + return s.set(1 - m - g, g, m); + } + static containsPoint(e, t, n, r) { + return this.getBarycoord(e, t, n, r, Yt) === null ? !1 : Yt.x >= 0 && Yt.y >= 0 && Yt.x + Yt.y <= 1; + } + static getUV(e, t, n, r, s, o, a, l) { + return Di === !1 && (console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."), Di = !0), this.getInterpolation(e, t, n, r, s, o, a, l); + } + static getInterpolation(e, t, n, r, s, o, a, l) { + return this.getBarycoord(e, t, n, r, Yt) === null ? (l.x = 0, l.y = 0, "z" in l && (l.z = 0), "w" in l && (l.w = 0), null) : (l.setScalar(0), l.addScaledVector(s, Yt.x), l.addScaledVector(o, Yt.y), l.addScaledVector(a, Yt.z), l); + } + static isFrontFacing(e, t, n, r) { + return Dt.subVectors(n, t), qt.subVectors(e, t), Dt.cross(qt).dot(r) < 0; + } + set(e, t, n) { + return this.a.copy(e), this.b.copy(t), this.c.copy(n), this; + } + setFromPointsAndIndices(e, t, n, r) { + return this.a.copy(e[t]), this.b.copy(e[n]), this.c.copy(e[r]), this; + } + setFromAttributeAndIndices(e, t, n, r) { + return this.a.fromBufferAttribute(e, t), this.b.fromBufferAttribute(e, n), this.c.fromBufferAttribute(e, r), this; + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + return this.a.copy(e.a), this.b.copy(e.b), this.c.copy(e.c), this; + } + getArea() { + return Dt.subVectors(this.c, this.b), qt.subVectors(this.a, this.b), Dt.cross(qt).length() * 0.5; + } + getMidpoint(e) { + return e.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3); + } + getNormal(e) { + return It.getNormal(this.a, this.b, this.c, e); + } + getPlane(e) { + return e.setFromCoplanarPoints(this.a, this.b, this.c); + } + getBarycoord(e, t) { + return It.getBarycoord(e, this.a, this.b, this.c, t); + } + getUV(e, t, n, r, s) { + return Di === !1 && (console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."), Di = !0), It.getInterpolation(e, this.a, this.b, this.c, t, n, r, s); + } + getInterpolation(e, t, n, r, s) { + return It.getInterpolation(e, this.a, this.b, this.c, t, n, r, s); + } + containsPoint(e) { + return It.containsPoint(e, this.a, this.b, this.c); + } + isFrontFacing(e) { + return It.isFrontFacing(this.a, this.b, this.c, e); + } + intersectsBox(e) { + return e.intersectsTriangle(this); + } + closestPointToPoint(e, t) { + const n = this.a, r = this.b, s = this.c; + let o, a; + zn.subVectors(r, n), Gn.subVectors(s, n), Pr.subVectors(e, n); + const l = zn.dot(Pr), c = Gn.dot(Pr); + if (l <= 0 && c <= 0) + return t.copy(n); + Dr.subVectors(e, r); + const h = zn.dot(Dr), d = Gn.dot(Dr); + if (h >= 0 && d <= h) + return t.copy(r); + const p = l * d - h * c; + if (p <= 0 && l >= 0 && h <= 0) + return o = l / (l - h), t.copy(n).addScaledVector(zn, o); + Ur.subVectors(e, s); + const m = zn.dot(Ur), g = Gn.dot(Ur); + if (g >= 0 && m <= g) + return t.copy(s); + const v = m * c - l * g; + if (v <= 0 && c >= 0 && g <= 0) + return a = c / (c - g), t.copy(n).addScaledVector(Gn, a); + const f = h * g - m * d; + if (f <= 0 && d - h >= 0 && m - g >= 0) + return fa.subVectors(s, r), a = (d - h) / (d - h + (m - g)), t.copy(r).addScaledVector(fa, a); + const u = 1 / (f + v + p); + return o = v * u, a = p * u, t.copy(n).addScaledVector(zn, o).addScaledVector(Gn, a); + } + equals(e) { + return e.a.equals(this.a) && e.b.equals(this.b) && e.c.equals(this.c); + } +} +const Ao = { + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + rebeccapurple: 6697881, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 +}, nn = { h: 0, s: 0, l: 0 }, Ui = { h: 0, s: 0, l: 0 }; +function Ir(i, e, t) { + return t < 0 && (t += 1), t > 1 && (t -= 1), t < 1 / 6 ? i + (e - i) * 6 * t : t < 1 / 2 ? e : t < 2 / 3 ? i + (e - i) * 6 * (2 / 3 - t) : i; +} +class Xe { + constructor(e, t, n) { + return this.isColor = !0, this.r = 1, this.g = 1, this.b = 1, this.set(e, t, n); + } + set(e, t, n) { + if (t === void 0 && n === void 0) { + const r = e; + r && r.isColor ? this.copy(r) : typeof r == "number" ? this.setHex(r) : typeof r == "string" && this.setStyle(r); + } else + this.setRGB(e, t, n); + return this; + } + setScalar(e) { + return this.r = e, this.g = e, this.b = e, this; + } + setHex(e, t = ht) { + return e = Math.floor(e), this.r = (e >> 16 & 255) / 255, this.g = (e >> 8 & 255) / 255, this.b = (e & 255) / 255, Ke.toWorkingColorSpace(this, t), this; + } + setRGB(e, t, n, r = Ke.workingColorSpace) { + return this.r = e, this.g = t, this.b = n, Ke.toWorkingColorSpace(this, r), this; + } + setHSL(e, t, n, r = Ke.workingColorSpace) { + if (e = Xl(e, 1), t = vt(t, 0, 1), n = vt(n, 0, 1), t === 0) + this.r = this.g = this.b = n; + else { + const s = n <= 0.5 ? n * (1 + t) : n + t - n * t, o = 2 * n - s; + this.r = Ir(o, s, e + 1 / 3), this.g = Ir(o, s, e), this.b = Ir(o, s, e - 1 / 3); + } + return Ke.toWorkingColorSpace(this, r), this; + } + setStyle(e, t = ht) { + function n(s) { + s !== void 0 && parseFloat(s) < 1 && console.warn("THREE.Color: Alpha component of " + e + " will be ignored."); + } + let r; + if (r = /^(\w+)\(([^\)]*)\)/.exec(e)) { + let s; + const o = r[1], a = r[2]; + switch (o) { + case "rgb": + case "rgba": + if (s = /^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a)) + return n(s[4]), this.setRGB( + Math.min(255, parseInt(s[1], 10)) / 255, + Math.min(255, parseInt(s[2], 10)) / 255, + Math.min(255, parseInt(s[3], 10)) / 255, + t + ); + if (s = /^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a)) + return n(s[4]), this.setRGB( + Math.min(100, parseInt(s[1], 10)) / 100, + Math.min(100, parseInt(s[2], 10)) / 100, + Math.min(100, parseInt(s[3], 10)) / 100, + t + ); + break; + case "hsl": + case "hsla": + if (s = /^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a)) + return n(s[4]), this.setHSL( + parseFloat(s[1]) / 360, + parseFloat(s[2]) / 100, + parseFloat(s[3]) / 100, + t + ); + break; + default: + console.warn("THREE.Color: Unknown color model " + e); + } + } else if (r = /^\#([A-Fa-f\d]+)$/.exec(e)) { + const s = r[1], o = s.length; + if (o === 3) + return this.setRGB( + parseInt(s.charAt(0), 16) / 15, + parseInt(s.charAt(1), 16) / 15, + parseInt(s.charAt(2), 16) / 15, + t + ); + if (o === 6) + return this.setHex(parseInt(s, 16), t); + console.warn("THREE.Color: Invalid hex color " + e); + } else if (e && e.length > 0) + return this.setColorName(e, t); + return this; + } + setColorName(e, t = ht) { + const n = Ao[e.toLowerCase()]; + return n !== void 0 ? this.setHex(n, t) : console.warn("THREE.Color: Unknown color " + e), this; + } + clone() { + return new this.constructor(this.r, this.g, this.b); + } + copy(e) { + return this.r = e.r, this.g = e.g, this.b = e.b, this; + } + copySRGBToLinear(e) { + return this.r = Jn(e.r), this.g = Jn(e.g), this.b = Jn(e.b), this; + } + copyLinearToSRGB(e) { + return this.r = Er(e.r), this.g = Er(e.g), this.b = Er(e.b), this; + } + convertSRGBToLinear() { + return this.copySRGBToLinear(this), this; + } + convertLinearToSRGB() { + return this.copyLinearToSRGB(this), this; + } + getHex(e = ht) { + return Ke.fromWorkingColorSpace(mt.copy(this), e), Math.round(vt(mt.r * 255, 0, 255)) * 65536 + Math.round(vt(mt.g * 255, 0, 255)) * 256 + Math.round(vt(mt.b * 255, 0, 255)); + } + getHexString(e = ht) { + return ("000000" + this.getHex(e).toString(16)).slice(-6); + } + getHSL(e, t = Ke.workingColorSpace) { + Ke.fromWorkingColorSpace(mt.copy(this), t); + const n = mt.r, r = mt.g, s = mt.b, o = Math.max(n, r, s), a = Math.min(n, r, s); + let l, c; + const h = (a + o) / 2; + if (a === o) + l = 0, c = 0; + else { + const d = o - a; + switch (c = h <= 0.5 ? d / (o + a) : d / (2 - o - a), o) { + case n: + l = (r - s) / d + (r < s ? 6 : 0); + break; + case r: + l = (s - n) / d + 2; + break; + case s: + l = (n - r) / d + 4; + break; + } + l /= 6; + } + return e.h = l, e.s = c, e.l = h, e; + } + getRGB(e, t = Ke.workingColorSpace) { + return Ke.fromWorkingColorSpace(mt.copy(this), t), e.r = mt.r, e.g = mt.g, e.b = mt.b, e; + } + getStyle(e = ht) { + Ke.fromWorkingColorSpace(mt.copy(this), e); + const t = mt.r, n = mt.g, r = mt.b; + return e !== ht ? `color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${r.toFixed(3)})` : `rgb(${Math.round(t * 255)},${Math.round(n * 255)},${Math.round(r * 255)})`; + } + offsetHSL(e, t, n) { + return this.getHSL(nn), this.setHSL(nn.h + e, nn.s + t, nn.l + n); + } + add(e) { + return this.r += e.r, this.g += e.g, this.b += e.b, this; + } + addColors(e, t) { + return this.r = e.r + t.r, this.g = e.g + t.g, this.b = e.b + t.b, this; + } + addScalar(e) { + return this.r += e, this.g += e, this.b += e, this; + } + sub(e) { + return this.r = Math.max(0, this.r - e.r), this.g = Math.max(0, this.g - e.g), this.b = Math.max(0, this.b - e.b), this; + } + multiply(e) { + return this.r *= e.r, this.g *= e.g, this.b *= e.b, this; + } + multiplyScalar(e) { + return this.r *= e, this.g *= e, this.b *= e, this; + } + lerp(e, t) { + return this.r += (e.r - this.r) * t, this.g += (e.g - this.g) * t, this.b += (e.b - this.b) * t, this; + } + lerpColors(e, t, n) { + return this.r = e.r + (t.r - e.r) * n, this.g = e.g + (t.g - e.g) * n, this.b = e.b + (t.b - e.b) * n, this; + } + lerpHSL(e, t) { + this.getHSL(nn), e.getHSL(Ui); + const n = Mr(nn.h, Ui.h, t), r = Mr(nn.s, Ui.s, t), s = Mr(nn.l, Ui.l, t); + return this.setHSL(n, r, s), this; + } + setFromVector3(e) { + return this.r = e.x, this.g = e.y, this.b = e.z, this; + } + applyMatrix3(e) { + const t = this.r, n = this.g, r = this.b, s = e.elements; + return this.r = s[0] * t + s[3] * n + s[6] * r, this.g = s[1] * t + s[4] * n + s[7] * r, this.b = s[2] * t + s[5] * n + s[8] * r, this; + } + equals(e) { + return e.r === this.r && e.g === this.g && e.b === this.b; + } + fromArray(e, t = 0) { + return this.r = e[t], this.g = e[t + 1], this.b = e[t + 2], this; + } + toArray(e = [], t = 0) { + return e[t] = this.r, e[t + 1] = this.g, e[t + 2] = this.b, e; + } + fromBufferAttribute(e, t) { + return this.r = e.getX(t), this.g = e.getY(t), this.b = e.getZ(t), this; + } + toJSON() { + return this.getHex(); + } + *[Symbol.iterator]() { + yield this.r, yield this.g, yield this.b; + } +} +const mt = /* @__PURE__ */ new Xe(); +Xe.NAMES = Ao; +let oc = 0; +class Mi extends Rn { + constructor() { + super(), this.isMaterial = !0, Object.defineProperty(this, "id", { value: oc++ }), this.uuid = vi(), this.name = "", this.type = "Material", this.blending = $n, this.side = un, this.vertexColors = !1, this.opacity = 1, this.transparent = !1, this.alphaHash = !1, this.blendSrc = Kr, this.blendDst = Zr, this.blendEquation = Mn, this.blendSrcAlpha = null, this.blendDstAlpha = null, this.blendEquationAlpha = null, this.blendColor = new Xe(0, 0, 0), this.blendAlpha = 0, this.depthFunc = $i, this.depthTest = !0, this.depthWrite = !0, this.stencilWriteMask = 255, this.stencilFunc = Qs, this.stencilRef = 0, this.stencilFuncMask = 255, this.stencilFail = Dn, this.stencilZFail = Dn, this.stencilZPass = Dn, this.stencilWrite = !1, this.clippingPlanes = null, this.clipIntersection = !1, this.clipShadows = !1, this.shadowSide = null, this.colorWrite = !0, this.precision = null, this.polygonOffset = !1, this.polygonOffsetFactor = 0, this.polygonOffsetUnits = 0, this.dithering = !1, this.alphaToCoverage = !1, this.premultipliedAlpha = !1, this.forceSinglePass = !1, this.visible = !0, this.toneMapped = !0, this.userData = {}, this.version = 0, this._alphaTest = 0; + } + get alphaTest() { + return this._alphaTest; + } + set alphaTest(e) { + this._alphaTest > 0 != e > 0 && this.version++, this._alphaTest = e; + } + onBuild() { + } + onBeforeRender() { + } + onBeforeCompile() { + } + customProgramCacheKey() { + return this.onBeforeCompile.toString(); + } + setValues(e) { + if (e !== void 0) + for (const t in e) { + const n = e[t]; + if (n === void 0) { + console.warn(`THREE.Material: parameter '${t}' has value of undefined.`); + continue; + } + const r = this[t]; + if (r === void 0) { + console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`); + continue; + } + r && r.isColor ? r.set(n) : r && r.isVector3 && n && n.isVector3 ? r.copy(n) : this[t] = n; + } + } + toJSON(e) { + const t = e === void 0 || typeof e == "string"; + t && (e = { + textures: {}, + images: {} + }); + const n = { + metadata: { + version: 4.6, + type: "Material", + generator: "Material.toJSON" + } + }; + n.uuid = this.uuid, n.type = this.type, this.name !== "" && (n.name = this.name), this.color && this.color.isColor && (n.color = this.color.getHex()), this.roughness !== void 0 && (n.roughness = this.roughness), this.metalness !== void 0 && (n.metalness = this.metalness), this.sheen !== void 0 && (n.sheen = this.sheen), this.sheenColor && this.sheenColor.isColor && (n.sheenColor = this.sheenColor.getHex()), this.sheenRoughness !== void 0 && (n.sheenRoughness = this.sheenRoughness), this.emissive && this.emissive.isColor && (n.emissive = this.emissive.getHex()), this.emissiveIntensity && this.emissiveIntensity !== 1 && (n.emissiveIntensity = this.emissiveIntensity), this.specular && this.specular.isColor && (n.specular = this.specular.getHex()), this.specularIntensity !== void 0 && (n.specularIntensity = this.specularIntensity), this.specularColor && this.specularColor.isColor && (n.specularColor = this.specularColor.getHex()), this.shininess !== void 0 && (n.shininess = this.shininess), this.clearcoat !== void 0 && (n.clearcoat = this.clearcoat), this.clearcoatRoughness !== void 0 && (n.clearcoatRoughness = this.clearcoatRoughness), this.clearcoatMap && this.clearcoatMap.isTexture && (n.clearcoatMap = this.clearcoatMap.toJSON(e).uuid), this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture && (n.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(e).uuid), this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture && (n.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(e).uuid, n.clearcoatNormalScale = this.clearcoatNormalScale.toArray()), this.iridescence !== void 0 && (n.iridescence = this.iridescence), this.iridescenceIOR !== void 0 && (n.iridescenceIOR = this.iridescenceIOR), this.iridescenceThicknessRange !== void 0 && (n.iridescenceThicknessRange = this.iridescenceThicknessRange), this.iridescenceMap && this.iridescenceMap.isTexture && (n.iridescenceMap = this.iridescenceMap.toJSON(e).uuid), this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture && (n.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON(e).uuid), this.anisotropy !== void 0 && (n.anisotropy = this.anisotropy), this.anisotropyRotation !== void 0 && (n.anisotropyRotation = this.anisotropyRotation), this.anisotropyMap && this.anisotropyMap.isTexture && (n.anisotropyMap = this.anisotropyMap.toJSON(e).uuid), this.map && this.map.isTexture && (n.map = this.map.toJSON(e).uuid), this.matcap && this.matcap.isTexture && (n.matcap = this.matcap.toJSON(e).uuid), this.alphaMap && this.alphaMap.isTexture && (n.alphaMap = this.alphaMap.toJSON(e).uuid), this.lightMap && this.lightMap.isTexture && (n.lightMap = this.lightMap.toJSON(e).uuid, n.lightMapIntensity = this.lightMapIntensity), this.aoMap && this.aoMap.isTexture && (n.aoMap = this.aoMap.toJSON(e).uuid, n.aoMapIntensity = this.aoMapIntensity), this.bumpMap && this.bumpMap.isTexture && (n.bumpMap = this.bumpMap.toJSON(e).uuid, n.bumpScale = this.bumpScale), this.normalMap && this.normalMap.isTexture && (n.normalMap = this.normalMap.toJSON(e).uuid, n.normalMapType = this.normalMapType, n.normalScale = this.normalScale.toArray()), this.displacementMap && this.displacementMap.isTexture && (n.displacementMap = this.displacementMap.toJSON(e).uuid, n.displacementScale = this.displacementScale, n.displacementBias = this.displacementBias), this.roughnessMap && this.roughnessMap.isTexture && (n.roughnessMap = this.roughnessMap.toJSON(e).uuid), this.metalnessMap && this.metalnessMap.isTexture && (n.metalnessMap = this.metalnessMap.toJSON(e).uuid), this.emissiveMap && this.emissiveMap.isTexture && (n.emissiveMap = this.emissiveMap.toJSON(e).uuid), this.specularMap && this.specularMap.isTexture && (n.specularMap = this.specularMap.toJSON(e).uuid), this.specularIntensityMap && this.specularIntensityMap.isTexture && (n.specularIntensityMap = this.specularIntensityMap.toJSON(e).uuid), this.specularColorMap && this.specularColorMap.isTexture && (n.specularColorMap = this.specularColorMap.toJSON(e).uuid), this.envMap && this.envMap.isTexture && (n.envMap = this.envMap.toJSON(e).uuid, this.combine !== void 0 && (n.combine = this.combine)), this.envMapIntensity !== void 0 && (n.envMapIntensity = this.envMapIntensity), this.reflectivity !== void 0 && (n.reflectivity = this.reflectivity), this.refractionRatio !== void 0 && (n.refractionRatio = this.refractionRatio), this.gradientMap && this.gradientMap.isTexture && (n.gradientMap = this.gradientMap.toJSON(e).uuid), this.transmission !== void 0 && (n.transmission = this.transmission), this.transmissionMap && this.transmissionMap.isTexture && (n.transmissionMap = this.transmissionMap.toJSON(e).uuid), this.thickness !== void 0 && (n.thickness = this.thickness), this.thicknessMap && this.thicknessMap.isTexture && (n.thicknessMap = this.thicknessMap.toJSON(e).uuid), this.attenuationDistance !== void 0 && this.attenuationDistance !== 1 / 0 && (n.attenuationDistance = this.attenuationDistance), this.attenuationColor !== void 0 && (n.attenuationColor = this.attenuationColor.getHex()), this.size !== void 0 && (n.size = this.size), this.shadowSide !== null && (n.shadowSide = this.shadowSide), this.sizeAttenuation !== void 0 && (n.sizeAttenuation = this.sizeAttenuation), this.blending !== $n && (n.blending = this.blending), this.side !== un && (n.side = this.side), this.vertexColors === !0 && (n.vertexColors = !0), this.opacity < 1 && (n.opacity = this.opacity), this.transparent === !0 && (n.transparent = !0), this.blendSrc !== Kr && (n.blendSrc = this.blendSrc), this.blendDst !== Zr && (n.blendDst = this.blendDst), this.blendEquation !== Mn && (n.blendEquation = this.blendEquation), this.blendSrcAlpha !== null && (n.blendSrcAlpha = this.blendSrcAlpha), this.blendDstAlpha !== null && (n.blendDstAlpha = this.blendDstAlpha), this.blendEquationAlpha !== null && (n.blendEquationAlpha = this.blendEquationAlpha), this.blendColor && this.blendColor.isColor && (n.blendColor = this.blendColor.getHex()), this.blendAlpha !== 0 && (n.blendAlpha = this.blendAlpha), this.depthFunc !== $i && (n.depthFunc = this.depthFunc), this.depthTest === !1 && (n.depthTest = this.depthTest), this.depthWrite === !1 && (n.depthWrite = this.depthWrite), this.colorWrite === !1 && (n.colorWrite = this.colorWrite), this.stencilWriteMask !== 255 && (n.stencilWriteMask = this.stencilWriteMask), this.stencilFunc !== Qs && (n.stencilFunc = this.stencilFunc), this.stencilRef !== 0 && (n.stencilRef = this.stencilRef), this.stencilFuncMask !== 255 && (n.stencilFuncMask = this.stencilFuncMask), this.stencilFail !== Dn && (n.stencilFail = this.stencilFail), this.stencilZFail !== Dn && (n.stencilZFail = this.stencilZFail), this.stencilZPass !== Dn && (n.stencilZPass = this.stencilZPass), this.stencilWrite === !0 && (n.stencilWrite = this.stencilWrite), this.rotation !== void 0 && this.rotation !== 0 && (n.rotation = this.rotation), this.polygonOffset === !0 && (n.polygonOffset = !0), this.polygonOffsetFactor !== 0 && (n.polygonOffsetFactor = this.polygonOffsetFactor), this.polygonOffsetUnits !== 0 && (n.polygonOffsetUnits = this.polygonOffsetUnits), this.linewidth !== void 0 && this.linewidth !== 1 && (n.linewidth = this.linewidth), this.dashSize !== void 0 && (n.dashSize = this.dashSize), this.gapSize !== void 0 && (n.gapSize = this.gapSize), this.scale !== void 0 && (n.scale = this.scale), this.dithering === !0 && (n.dithering = !0), this.alphaTest > 0 && (n.alphaTest = this.alphaTest), this.alphaHash === !0 && (n.alphaHash = !0), this.alphaToCoverage === !0 && (n.alphaToCoverage = !0), this.premultipliedAlpha === !0 && (n.premultipliedAlpha = !0), this.forceSinglePass === !0 && (n.forceSinglePass = !0), this.wireframe === !0 && (n.wireframe = !0), this.wireframeLinewidth > 1 && (n.wireframeLinewidth = this.wireframeLinewidth), this.wireframeLinecap !== "round" && (n.wireframeLinecap = this.wireframeLinecap), this.wireframeLinejoin !== "round" && (n.wireframeLinejoin = this.wireframeLinejoin), this.flatShading === !0 && (n.flatShading = !0), this.visible === !1 && (n.visible = !1), this.toneMapped === !1 && (n.toneMapped = !1), this.fog === !1 && (n.fog = !1), Object.keys(this.userData).length > 0 && (n.userData = this.userData); + function r(s) { + const o = []; + for (const a in s) { + const l = s[a]; + delete l.metadata, o.push(l); + } + return o; + } + if (t) { + const s = r(e.textures), o = r(e.images); + s.length > 0 && (n.textures = s), o.length > 0 && (n.images = o); + } + return n; + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + this.name = e.name, this.blending = e.blending, this.side = e.side, this.vertexColors = e.vertexColors, this.opacity = e.opacity, this.transparent = e.transparent, this.blendSrc = e.blendSrc, this.blendDst = e.blendDst, this.blendEquation = e.blendEquation, this.blendSrcAlpha = e.blendSrcAlpha, this.blendDstAlpha = e.blendDstAlpha, this.blendEquationAlpha = e.blendEquationAlpha, this.blendColor.copy(e.blendColor), this.blendAlpha = e.blendAlpha, this.depthFunc = e.depthFunc, this.depthTest = e.depthTest, this.depthWrite = e.depthWrite, this.stencilWriteMask = e.stencilWriteMask, this.stencilFunc = e.stencilFunc, this.stencilRef = e.stencilRef, this.stencilFuncMask = e.stencilFuncMask, this.stencilFail = e.stencilFail, this.stencilZFail = e.stencilZFail, this.stencilZPass = e.stencilZPass, this.stencilWrite = e.stencilWrite; + const t = e.clippingPlanes; + let n = null; + if (t !== null) { + const r = t.length; + n = new Array(r); + for (let s = 0; s !== r; ++s) + n[s] = t[s].clone(); + } + return this.clippingPlanes = n, this.clipIntersection = e.clipIntersection, this.clipShadows = e.clipShadows, this.shadowSide = e.shadowSide, this.colorWrite = e.colorWrite, this.precision = e.precision, this.polygonOffset = e.polygonOffset, this.polygonOffsetFactor = e.polygonOffsetFactor, this.polygonOffsetUnits = e.polygonOffsetUnits, this.dithering = e.dithering, this.alphaTest = e.alphaTest, this.alphaHash = e.alphaHash, this.alphaToCoverage = e.alphaToCoverage, this.premultipliedAlpha = e.premultipliedAlpha, this.forceSinglePass = e.forceSinglePass, this.visible = e.visible, this.toneMapped = e.toneMapped, this.userData = JSON.parse(JSON.stringify(e.userData)), this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } + set needsUpdate(e) { + e === !0 && this.version++; + } +} +class ls extends Mi { + constructor(e) { + super(), this.isMeshBasicMaterial = !0, this.type = "MeshBasicMaterial", this.color = new Xe(16777215), this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.specularMap = null, this.alphaMap = null, this.envMap = null, this.combine = oo, this.reflectivity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.fog = !0, this.setValues(e); + } + copy(e) { + return super.copy(e), this.color.copy(e.color), this.map = e.map, this.lightMap = e.lightMap, this.lightMapIntensity = e.lightMapIntensity, this.aoMap = e.aoMap, this.aoMapIntensity = e.aoMapIntensity, this.specularMap = e.specularMap, this.alphaMap = e.alphaMap, this.envMap = e.envMap, this.combine = e.combine, this.reflectivity = e.reflectivity, this.refractionRatio = e.refractionRatio, this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.wireframeLinecap = e.wireframeLinecap, this.wireframeLinejoin = e.wireframeLinejoin, this.fog = e.fog, this; + } +} +const at = /* @__PURE__ */ new P(), Ii = /* @__PURE__ */ new Ie(); +class Bt { + constructor(e, t, n = !1) { + if (Array.isArray(e)) + throw new TypeError("THREE.BufferAttribute: array should be a Typed Array."); + this.isBufferAttribute = !0, this.name = "", this.array = e, this.itemSize = t, this.count = e !== void 0 ? e.length / t : 0, this.normalized = n, this.usage = ea, this._updateRange = { offset: 0, count: -1 }, this.updateRanges = [], this.gpuType = an, this.version = 0; + } + onUploadCallback() { + } + set needsUpdate(e) { + e === !0 && this.version++; + } + get updateRange() { + return console.warn("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."), this._updateRange; + } + setUsage(e) { + return this.usage = e, this; + } + addUpdateRange(e, t) { + this.updateRanges.push({ start: e, count: t }); + } + clearUpdateRanges() { + this.updateRanges.length = 0; + } + copy(e) { + return this.name = e.name, this.array = new e.array.constructor(e.array), this.itemSize = e.itemSize, this.count = e.count, this.normalized = e.normalized, this.usage = e.usage, this.gpuType = e.gpuType, this; + } + copyAt(e, t, n) { + e *= this.itemSize, n *= t.itemSize; + for (let r = 0, s = this.itemSize; r < s; r++) + this.array[e + r] = t.array[n + r]; + return this; + } + copyArray(e) { + return this.array.set(e), this; + } + applyMatrix3(e) { + if (this.itemSize === 2) + for (let t = 0, n = this.count; t < n; t++) + Ii.fromBufferAttribute(this, t), Ii.applyMatrix3(e), this.setXY(t, Ii.x, Ii.y); + else if (this.itemSize === 3) + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.applyMatrix3(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + applyMatrix4(e) { + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.applyMatrix4(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + applyNormalMatrix(e) { + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.applyNormalMatrix(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + transformDirection(e) { + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.transformDirection(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + set(e, t = 0) { + return this.array.set(e, t), this; + } + getComponent(e, t) { + let n = this.array[e * this.itemSize + t]; + return this.normalized && (n = oi(n, this.array)), n; + } + setComponent(e, t, n) { + return this.normalized && (n = xt(n, this.array)), this.array[e * this.itemSize + t] = n, this; + } + getX(e) { + let t = this.array[e * this.itemSize]; + return this.normalized && (t = oi(t, this.array)), t; + } + setX(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize] = t, this; + } + getY(e) { + let t = this.array[e * this.itemSize + 1]; + return this.normalized && (t = oi(t, this.array)), t; + } + setY(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize + 1] = t, this; + } + getZ(e) { + let t = this.array[e * this.itemSize + 2]; + return this.normalized && (t = oi(t, this.array)), t; + } + setZ(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize + 2] = t, this; + } + getW(e) { + let t = this.array[e * this.itemSize + 3]; + return this.normalized && (t = oi(t, this.array)), t; + } + setW(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize + 3] = t, this; + } + setXY(e, t, n) { + return e *= this.itemSize, this.normalized && (t = xt(t, this.array), n = xt(n, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this; + } + setXYZ(e, t, n, r) { + return e *= this.itemSize, this.normalized && (t = xt(t, this.array), n = xt(n, this.array), r = xt(r, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this.array[e + 2] = r, this; + } + setXYZW(e, t, n, r, s) { + return e *= this.itemSize, this.normalized && (t = xt(t, this.array), n = xt(n, this.array), r = xt(r, this.array), s = xt(s, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this.array[e + 2] = r, this.array[e + 3] = s, this; + } + onUpload(e) { + return this.onUploadCallback = e, this; + } + clone() { + return new this.constructor(this.array, this.itemSize).copy(this); + } + toJSON() { + const e = { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: Array.from(this.array), + normalized: this.normalized + }; + return this.name !== "" && (e.name = this.name), this.usage !== ea && (e.usage = this.usage), e; + } +} +class wo extends Bt { + constructor(e, t, n) { + super(new Uint16Array(e), t, n); + } +} +class Ro extends Bt { + constructor(e, t, n) { + super(new Uint32Array(e), t, n); + } +} +class Ht extends Bt { + constructor(e, t, n) { + super(new Float32Array(e), t, n); + } +} +let lc = 0; +const wt = /* @__PURE__ */ new Qe(), Nr = /* @__PURE__ */ new dt(), Hn = /* @__PURE__ */ new P(), yt = /* @__PURE__ */ new Cn(), hi = /* @__PURE__ */ new Cn(), ut = /* @__PURE__ */ new P(); +class hn extends Rn { + constructor() { + super(), this.isBufferGeometry = !0, Object.defineProperty(this, "id", { value: lc++ }), this.uuid = vi(), this.name = "", this.type = "BufferGeometry", this.index = null, this.attributes = {}, this.morphAttributes = {}, this.morphTargetsRelative = !1, this.groups = [], this.boundingBox = null, this.boundingSphere = null, this.drawRange = { start: 0, count: 1 / 0 }, this.userData = {}; + } + getIndex() { + return this.index; + } + setIndex(e) { + return Array.isArray(e) ? this.index = new (Mo(e) ? Ro : wo)(e, 1) : this.index = e, this; + } + getAttribute(e) { + return this.attributes[e]; + } + setAttribute(e, t) { + return this.attributes[e] = t, this; + } + deleteAttribute(e) { + return delete this.attributes[e], this; + } + hasAttribute(e) { + return this.attributes[e] !== void 0; + } + addGroup(e, t, n = 0) { + this.groups.push({ + start: e, + count: t, + materialIndex: n + }); + } + clearGroups() { + this.groups = []; + } + setDrawRange(e, t) { + this.drawRange.start = e, this.drawRange.count = t; + } + applyMatrix4(e) { + const t = this.attributes.position; + t !== void 0 && (t.applyMatrix4(e), t.needsUpdate = !0); + const n = this.attributes.normal; + if (n !== void 0) { + const s = new Ve().getNormalMatrix(e); + n.applyNormalMatrix(s), n.needsUpdate = !0; + } + const r = this.attributes.tangent; + return r !== void 0 && (r.transformDirection(e), r.needsUpdate = !0), this.boundingBox !== null && this.computeBoundingBox(), this.boundingSphere !== null && this.computeBoundingSphere(), this; + } + applyQuaternion(e) { + return wt.makeRotationFromQuaternion(e), this.applyMatrix4(wt), this; + } + rotateX(e) { + return wt.makeRotationX(e), this.applyMatrix4(wt), this; + } + rotateY(e) { + return wt.makeRotationY(e), this.applyMatrix4(wt), this; + } + rotateZ(e) { + return wt.makeRotationZ(e), this.applyMatrix4(wt), this; + } + translate(e, t, n) { + return wt.makeTranslation(e, t, n), this.applyMatrix4(wt), this; + } + scale(e, t, n) { + return wt.makeScale(e, t, n), this.applyMatrix4(wt), this; + } + lookAt(e) { + return Nr.lookAt(e), Nr.updateMatrix(), this.applyMatrix4(Nr.matrix), this; + } + center() { + return this.computeBoundingBox(), this.boundingBox.getCenter(Hn).negate(), this.translate(Hn.x, Hn.y, Hn.z), this; + } + setFromPoints(e) { + const t = []; + for (let n = 0, r = e.length; n < r; n++) { + const s = e[n]; + t.push(s.x, s.y, s.z || 0); + } + return this.setAttribute("position", new Ht(t, 3)), this; + } + computeBoundingBox() { + this.boundingBox === null && (this.boundingBox = new Cn()); + const e = this.attributes.position, t = this.morphAttributes.position; + if (e && e.isGLBufferAttribute) { + console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".', this), this.boundingBox.set( + new P(-1 / 0, -1 / 0, -1 / 0), + new P(1 / 0, 1 / 0, 1 / 0) + ); + return; + } + if (e !== void 0) { + if (this.boundingBox.setFromBufferAttribute(e), t) + for (let n = 0, r = t.length; n < r; n++) { + const s = t[n]; + yt.setFromBufferAttribute(s), this.morphTargetsRelative ? (ut.addVectors(this.boundingBox.min, yt.min), this.boundingBox.expandByPoint(ut), ut.addVectors(this.boundingBox.max, yt.max), this.boundingBox.expandByPoint(ut)) : (this.boundingBox.expandByPoint(yt.min), this.boundingBox.expandByPoint(yt.max)); + } + } else + this.boundingBox.makeEmpty(); + (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) && console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this); + } + computeBoundingSphere() { + this.boundingSphere === null && (this.boundingSphere = new xi()); + const e = this.attributes.position, t = this.morphAttributes.position; + if (e && e.isGLBufferAttribute) { + console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".', this), this.boundingSphere.set(new P(), 1 / 0); + return; + } + if (e) { + const n = this.boundingSphere.center; + if (yt.setFromBufferAttribute(e), t) + for (let s = 0, o = t.length; s < o; s++) { + const a = t[s]; + hi.setFromBufferAttribute(a), this.morphTargetsRelative ? (ut.addVectors(yt.min, hi.min), yt.expandByPoint(ut), ut.addVectors(yt.max, hi.max), yt.expandByPoint(ut)) : (yt.expandByPoint(hi.min), yt.expandByPoint(hi.max)); + } + yt.getCenter(n); + let r = 0; + for (let s = 0, o = e.count; s < o; s++) + ut.fromBufferAttribute(e, s), r = Math.max(r, n.distanceToSquared(ut)); + if (t) + for (let s = 0, o = t.length; s < o; s++) { + const a = t[s], l = this.morphTargetsRelative; + for (let c = 0, h = a.count; c < h; c++) + ut.fromBufferAttribute(a, c), l && (Hn.fromBufferAttribute(e, c), ut.add(Hn)), r = Math.max(r, n.distanceToSquared(ut)); + } + this.boundingSphere.radius = Math.sqrt(r), isNaN(this.boundingSphere.radius) && console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this); + } + } + computeTangents() { + const e = this.index, t = this.attributes; + if (e === null || t.position === void 0 || t.normal === void 0 || t.uv === void 0) { + console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)"); + return; + } + const n = e.array, r = t.position.array, s = t.normal.array, o = t.uv.array, a = r.length / 3; + this.hasAttribute("tangent") === !1 && this.setAttribute("tangent", new Bt(new Float32Array(4 * a), 4)); + const l = this.getAttribute("tangent").array, c = [], h = []; + for (let y = 0; y < a; y++) + c[y] = new P(), h[y] = new P(); + const d = new P(), p = new P(), m = new P(), g = new Ie(), v = new Ie(), f = new Ie(), u = new P(), b = new P(); + function S(y, z, Z) { + d.fromArray(r, y * 3), p.fromArray(r, z * 3), m.fromArray(r, Z * 3), g.fromArray(o, y * 2), v.fromArray(o, z * 2), f.fromArray(o, Z * 2), p.sub(d), m.sub(d), v.sub(g), f.sub(g); + const re = 1 / (v.x * f.y - f.x * v.y); + isFinite(re) && (u.copy(p).multiplyScalar(f.y).addScaledVector(m, -v.y).multiplyScalar(re), b.copy(m).multiplyScalar(v.x).addScaledVector(p, -f.x).multiplyScalar(re), c[y].add(u), c[z].add(u), c[Z].add(u), h[y].add(b), h[z].add(b), h[Z].add(b)); + } + let R = this.groups; + R.length === 0 && (R = [{ + start: 0, + count: n.length + }]); + for (let y = 0, z = R.length; y < z; ++y) { + const Z = R[y], re = Z.start, L = Z.count; + for (let F = re, V = re + L; F < V; F += 3) + S( + n[F + 0], + n[F + 1], + n[F + 2] + ); + } + const D = new P(), C = new P(), A = new P(), W = new P(); + function x(y) { + A.fromArray(s, y * 3), W.copy(A); + const z = c[y]; + D.copy(z), D.sub(A.multiplyScalar(A.dot(z))).normalize(), C.crossVectors(W, z); + const re = C.dot(h[y]) < 0 ? -1 : 1; + l[y * 4] = D.x, l[y * 4 + 1] = D.y, l[y * 4 + 2] = D.z, l[y * 4 + 3] = re; + } + for (let y = 0, z = R.length; y < z; ++y) { + const Z = R[y], re = Z.start, L = Z.count; + for (let F = re, V = re + L; F < V; F += 3) + x(n[F + 0]), x(n[F + 1]), x(n[F + 2]); + } + } + computeVertexNormals() { + const e = this.index, t = this.getAttribute("position"); + if (t !== void 0) { + let n = this.getAttribute("normal"); + if (n === void 0) + n = new Bt(new Float32Array(t.count * 3), 3), this.setAttribute("normal", n); + else + for (let p = 0, m = n.count; p < m; p++) + n.setXYZ(p, 0, 0, 0); + const r = new P(), s = new P(), o = new P(), a = new P(), l = new P(), c = new P(), h = new P(), d = new P(); + if (e) + for (let p = 0, m = e.count; p < m; p += 3) { + const g = e.getX(p + 0), v = e.getX(p + 1), f = e.getX(p + 2); + r.fromBufferAttribute(t, g), s.fromBufferAttribute(t, v), o.fromBufferAttribute(t, f), h.subVectors(o, s), d.subVectors(r, s), h.cross(d), a.fromBufferAttribute(n, g), l.fromBufferAttribute(n, v), c.fromBufferAttribute(n, f), a.add(h), l.add(h), c.add(h), n.setXYZ(g, a.x, a.y, a.z), n.setXYZ(v, l.x, l.y, l.z), n.setXYZ(f, c.x, c.y, c.z); + } + else + for (let p = 0, m = t.count; p < m; p += 3) + r.fromBufferAttribute(t, p + 0), s.fromBufferAttribute(t, p + 1), o.fromBufferAttribute(t, p + 2), h.subVectors(o, s), d.subVectors(r, s), h.cross(d), n.setXYZ(p + 0, h.x, h.y, h.z), n.setXYZ(p + 1, h.x, h.y, h.z), n.setXYZ(p + 2, h.x, h.y, h.z); + this.normalizeNormals(), n.needsUpdate = !0; + } + } + normalizeNormals() { + const e = this.attributes.normal; + for (let t = 0, n = e.count; t < n; t++) + ut.fromBufferAttribute(e, t), ut.normalize(), e.setXYZ(t, ut.x, ut.y, ut.z); + } + toNonIndexed() { + function e(a, l) { + const c = a.array, h = a.itemSize, d = a.normalized, p = new c.constructor(l.length * h); + let m = 0, g = 0; + for (let v = 0, f = l.length; v < f; v++) { + a.isInterleavedBufferAttribute ? m = l[v] * a.data.stride + a.offset : m = l[v] * h; + for (let u = 0; u < h; u++) + p[g++] = c[m++]; + } + return new Bt(p, h, d); + } + if (this.index === null) + return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."), this; + const t = new hn(), n = this.index.array, r = this.attributes; + for (const a in r) { + const l = r[a], c = e(l, n); + t.setAttribute(a, c); + } + const s = this.morphAttributes; + for (const a in s) { + const l = [], c = s[a]; + for (let h = 0, d = c.length; h < d; h++) { + const p = c[h], m = e(p, n); + l.push(m); + } + t.morphAttributes[a] = l; + } + t.morphTargetsRelative = this.morphTargetsRelative; + const o = this.groups; + for (let a = 0, l = o.length; a < l; a++) { + const c = o[a]; + t.addGroup(c.start, c.count, c.materialIndex); + } + return t; + } + toJSON() { + const e = { + metadata: { + version: 4.6, + type: "BufferGeometry", + generator: "BufferGeometry.toJSON" + } + }; + if (e.uuid = this.uuid, e.type = this.type, this.name !== "" && (e.name = this.name), Object.keys(this.userData).length > 0 && (e.userData = this.userData), this.parameters !== void 0) { + const l = this.parameters; + for (const c in l) + l[c] !== void 0 && (e[c] = l[c]); + return e; + } + e.data = { attributes: {} }; + const t = this.index; + t !== null && (e.data.index = { + type: t.array.constructor.name, + array: Array.prototype.slice.call(t.array) + }); + const n = this.attributes; + for (const l in n) { + const c = n[l]; + e.data.attributes[l] = c.toJSON(e.data); + } + const r = {}; + let s = !1; + for (const l in this.morphAttributes) { + const c = this.morphAttributes[l], h = []; + for (let d = 0, p = c.length; d < p; d++) { + const m = c[d]; + h.push(m.toJSON(e.data)); + } + h.length > 0 && (r[l] = h, s = !0); + } + s && (e.data.morphAttributes = r, e.data.morphTargetsRelative = this.morphTargetsRelative); + const o = this.groups; + o.length > 0 && (e.data.groups = JSON.parse(JSON.stringify(o))); + const a = this.boundingSphere; + return a !== null && (e.data.boundingSphere = { + center: a.center.toArray(), + radius: a.radius + }), e; + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + this.index = null, this.attributes = {}, this.morphAttributes = {}, this.groups = [], this.boundingBox = null, this.boundingSphere = null; + const t = {}; + this.name = e.name; + const n = e.index; + n !== null && this.setIndex(n.clone(t)); + const r = e.attributes; + for (const c in r) { + const h = r[c]; + this.setAttribute(c, h.clone(t)); + } + const s = e.morphAttributes; + for (const c in s) { + const h = [], d = s[c]; + for (let p = 0, m = d.length; p < m; p++) + h.push(d[p].clone(t)); + this.morphAttributes[c] = h; + } + this.morphTargetsRelative = e.morphTargetsRelative; + const o = e.groups; + for (let c = 0, h = o.length; c < h; c++) { + const d = o[c]; + this.addGroup(d.start, d.count, d.materialIndex); + } + const a = e.boundingBox; + a !== null && (this.boundingBox = a.clone()); + const l = e.boundingSphere; + return l !== null && (this.boundingSphere = l.clone()), this.drawRange.start = e.drawRange.start, this.drawRange.count = e.drawRange.count, this.userData = e.userData, this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +} +const pa = /* @__PURE__ */ new Qe(), gn = /* @__PURE__ */ new To(), Ni = /* @__PURE__ */ new xi(), ma = /* @__PURE__ */ new P(), Vn = /* @__PURE__ */ new P(), kn = /* @__PURE__ */ new P(), Wn = /* @__PURE__ */ new P(), Fr = /* @__PURE__ */ new P(), Fi = /* @__PURE__ */ new P(), Oi = /* @__PURE__ */ new Ie(), Bi = /* @__PURE__ */ new Ie(), zi = /* @__PURE__ */ new Ie(), _a = /* @__PURE__ */ new P(), ga = /* @__PURE__ */ new P(), va = /* @__PURE__ */ new P(), Gi = /* @__PURE__ */ new P(), Hi = /* @__PURE__ */ new P(); +class Ot extends dt { + constructor(e = new hn(), t = new ls()) { + super(), this.isMesh = !0, this.type = "Mesh", this.geometry = e, this.material = t, this.updateMorphTargets(); + } + copy(e, t) { + return super.copy(e, t), e.morphTargetInfluences !== void 0 && (this.morphTargetInfluences = e.morphTargetInfluences.slice()), e.morphTargetDictionary !== void 0 && (this.morphTargetDictionary = Object.assign({}, e.morphTargetDictionary)), this.material = Array.isArray(e.material) ? e.material.slice() : e.material, this.geometry = e.geometry, this; + } + updateMorphTargets() { + const t = this.geometry.morphAttributes, n = Object.keys(t); + if (n.length > 0) { + const r = t[n[0]]; + if (r !== void 0) { + this.morphTargetInfluences = [], this.morphTargetDictionary = {}; + for (let s = 0, o = r.length; s < o; s++) { + const a = r[s].name || String(s); + this.morphTargetInfluences.push(0), this.morphTargetDictionary[a] = s; + } + } + } + } + getVertexPosition(e, t) { + const n = this.geometry, r = n.attributes.position, s = n.morphAttributes.position, o = n.morphTargetsRelative; + t.fromBufferAttribute(r, e); + const a = this.morphTargetInfluences; + if (s && a) { + Fi.set(0, 0, 0); + for (let l = 0, c = s.length; l < c; l++) { + const h = a[l], d = s[l]; + h !== 0 && (Fr.fromBufferAttribute(d, e), o ? Fi.addScaledVector(Fr, h) : Fi.addScaledVector(Fr.sub(t), h)); + } + t.add(Fi); + } + return t; + } + raycast(e, t) { + const n = this.geometry, r = this.material, s = this.matrixWorld; + r !== void 0 && (n.boundingSphere === null && n.computeBoundingSphere(), Ni.copy(n.boundingSphere), Ni.applyMatrix4(s), gn.copy(e.ray).recast(e.near), !(Ni.containsPoint(gn.origin) === !1 && (gn.intersectSphere(Ni, ma) === null || gn.origin.distanceToSquared(ma) > (e.far - e.near) ** 2)) && (pa.copy(s).invert(), gn.copy(e.ray).applyMatrix4(pa), !(n.boundingBox !== null && gn.intersectsBox(n.boundingBox) === !1) && this._computeIntersections(e, t, gn))); + } + _computeIntersections(e, t, n) { + let r; + const s = this.geometry, o = this.material, a = s.index, l = s.attributes.position, c = s.attributes.uv, h = s.attributes.uv1, d = s.attributes.normal, p = s.groups, m = s.drawRange; + if (a !== null) + if (Array.isArray(o)) + for (let g = 0, v = p.length; g < v; g++) { + const f = p[g], u = o[f.materialIndex], b = Math.max(f.start, m.start), S = Math.min(a.count, Math.min(f.start + f.count, m.start + m.count)); + for (let R = b, D = S; R < D; R += 3) { + const C = a.getX(R), A = a.getX(R + 1), W = a.getX(R + 2); + r = Vi(this, u, e, n, c, h, d, C, A, W), r && (r.faceIndex = Math.floor(R / 3), r.face.materialIndex = f.materialIndex, t.push(r)); + } + } + else { + const g = Math.max(0, m.start), v = Math.min(a.count, m.start + m.count); + for (let f = g, u = v; f < u; f += 3) { + const b = a.getX(f), S = a.getX(f + 1), R = a.getX(f + 2); + r = Vi(this, o, e, n, c, h, d, b, S, R), r && (r.faceIndex = Math.floor(f / 3), t.push(r)); + } + } + else if (l !== void 0) + if (Array.isArray(o)) + for (let g = 0, v = p.length; g < v; g++) { + const f = p[g], u = o[f.materialIndex], b = Math.max(f.start, m.start), S = Math.min(l.count, Math.min(f.start + f.count, m.start + m.count)); + for (let R = b, D = S; R < D; R += 3) { + const C = R, A = R + 1, W = R + 2; + r = Vi(this, u, e, n, c, h, d, C, A, W), r && (r.faceIndex = Math.floor(R / 3), r.face.materialIndex = f.materialIndex, t.push(r)); + } + } + else { + const g = Math.max(0, m.start), v = Math.min(l.count, m.start + m.count); + for (let f = g, u = v; f < u; f += 3) { + const b = f, S = f + 1, R = f + 2; + r = Vi(this, o, e, n, c, h, d, b, S, R), r && (r.faceIndex = Math.floor(f / 3), t.push(r)); + } + } + } +} +function cc(i, e, t, n, r, s, o, a) { + let l; + if (e.side === Mt ? l = n.intersectTriangle(o, s, r, !0, a) : l = n.intersectTriangle(r, s, o, e.side === un, a), l === null) return null; + Hi.copy(a), Hi.applyMatrix4(i.matrixWorld); + const c = t.ray.origin.distanceTo(Hi); + return c < t.near || c > t.far ? null : { + distance: c, + point: Hi.clone(), + object: i + }; +} +function Vi(i, e, t, n, r, s, o, a, l, c) { + i.getVertexPosition(a, Vn), i.getVertexPosition(l, kn), i.getVertexPosition(c, Wn); + const h = cc(i, e, t, n, Vn, kn, Wn, Gi); + if (h) { + r && (Oi.fromBufferAttribute(r, a), Bi.fromBufferAttribute(r, l), zi.fromBufferAttribute(r, c), h.uv = It.getInterpolation(Gi, Vn, kn, Wn, Oi, Bi, zi, new Ie())), s && (Oi.fromBufferAttribute(s, a), Bi.fromBufferAttribute(s, l), zi.fromBufferAttribute(s, c), h.uv1 = It.getInterpolation(Gi, Vn, kn, Wn, Oi, Bi, zi, new Ie()), h.uv2 = h.uv1), o && (_a.fromBufferAttribute(o, a), ga.fromBufferAttribute(o, l), va.fromBufferAttribute(o, c), h.normal = It.getInterpolation(Gi, Vn, kn, Wn, _a, ga, va, new P()), h.normal.dot(n.direction) > 0 && h.normal.multiplyScalar(-1)); + const d = { + a, + b: l, + c, + normal: new P(), + materialIndex: 0 + }; + It.getNormal(Vn, kn, Wn, d.normal), h.face = d; + } + return h; +} +class ii extends hn { + constructor(e = 1, t = 1, n = 1, r = 1, s = 1, o = 1) { + super(), this.type = "BoxGeometry", this.parameters = { + width: e, + height: t, + depth: n, + widthSegments: r, + heightSegments: s, + depthSegments: o + }; + const a = this; + r = Math.floor(r), s = Math.floor(s), o = Math.floor(o); + const l = [], c = [], h = [], d = []; + let p = 0, m = 0; + g("z", "y", "x", -1, -1, n, t, e, o, s, 0), g("z", "y", "x", 1, -1, n, t, -e, o, s, 1), g("x", "z", "y", 1, 1, e, n, t, r, o, 2), g("x", "z", "y", 1, -1, e, n, -t, r, o, 3), g("x", "y", "z", 1, -1, e, t, n, r, s, 4), g("x", "y", "z", -1, -1, e, t, -n, r, s, 5), this.setIndex(l), this.setAttribute("position", new Ht(c, 3)), this.setAttribute("normal", new Ht(h, 3)), this.setAttribute("uv", new Ht(d, 2)); + function g(v, f, u, b, S, R, D, C, A, W, x) { + const y = R / A, z = D / W, Z = R / 2, re = D / 2, L = C / 2, F = A + 1, V = W + 1; + let Y = 0, X = 0; + const k = new P(); + for (let q = 0; q < V; q++) { + const Q = q * z - re; + for (let ce = 0; ce < F; ce++) { + const H = ce * y - Z; + k[v] = H * b, k[f] = Q * S, k[u] = L, c.push(k.x, k.y, k.z), k[v] = 0, k[f] = 0, k[u] = C > 0 ? 1 : -1, h.push(k.x, k.y, k.z), d.push(ce / A), d.push(1 - q / W), Y += 1; + } + } + for (let q = 0; q < W; q++) + for (let Q = 0; Q < A; Q++) { + const ce = p + Q + F * q, H = p + Q + F * (q + 1), j = p + (Q + 1) + F * (q + 1), oe = p + (Q + 1) + F * q; + l.push(ce, H, oe), l.push(H, j, oe), X += 6; + } + a.addGroup(m, X, x), m += X, p += Y; + } + } + copy(e) { + return super.copy(e), this.parameters = Object.assign({}, e.parameters), this; + } + static fromJSON(e) { + return new ii(e.width, e.height, e.depth, e.widthSegments, e.heightSegments, e.depthSegments); + } +} +function ni(i) { + const e = {}; + for (const t in i) { + e[t] = {}; + for (const n in i[t]) { + const r = i[t][n]; + r && (r.isColor || r.isMatrix3 || r.isMatrix4 || r.isVector2 || r.isVector3 || r.isVector4 || r.isTexture || r.isQuaternion) ? r.isRenderTargetTexture ? (console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."), e[t][n] = null) : e[t][n] = r.clone() : Array.isArray(r) ? e[t][n] = r.slice() : e[t][n] = r; + } + } + return e; +} +function _t(i) { + const e = {}; + for (let t = 0; t < i.length; t++) { + const n = ni(i[t]); + for (const r in n) + e[r] = n[r]; + } + return e; +} +function uc(i) { + const e = []; + for (let t = 0; t < i.length; t++) + e.push(i[t].clone()); + return e; +} +function Co(i) { + return i.getRenderTarget() === null ? i.outputColorSpace : Ke.workingColorSpace; +} +const hc = { clone: ni, merge: _t }; +var dc = `void main() { + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); +}`, fc = `void main() { + gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 ); +}`; +class wn extends Mi { + constructor(e) { + super(), this.isShaderMaterial = !0, this.type = "ShaderMaterial", this.defines = {}, this.uniforms = {}, this.uniformsGroups = [], this.vertexShader = dc, this.fragmentShader = fc, this.linewidth = 1, this.wireframe = !1, this.wireframeLinewidth = 1, this.fog = !1, this.lights = !1, this.clipping = !1, this.forceSinglePass = !0, this.extensions = { + derivatives: !1, + // set to use derivatives + fragDepth: !1, + // set to use fragment depth values + drawBuffers: !1, + // set to use draw buffers + shaderTextureLOD: !1, + // set to use shader texture LOD + clipCullDistance: !1 + // set to use vertex shader clipping + }, this.defaultAttributeValues = { + color: [1, 1, 1], + uv: [0, 0], + uv1: [0, 0] + }, this.index0AttributeName = void 0, this.uniformsNeedUpdate = !1, this.glslVersion = null, e !== void 0 && this.setValues(e); + } + copy(e) { + return super.copy(e), this.fragmentShader = e.fragmentShader, this.vertexShader = e.vertexShader, this.uniforms = ni(e.uniforms), this.uniformsGroups = uc(e.uniformsGroups), this.defines = Object.assign({}, e.defines), this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.fog = e.fog, this.lights = e.lights, this.clipping = e.clipping, this.extensions = Object.assign({}, e.extensions), this.glslVersion = e.glslVersion, this; + } + toJSON(e) { + const t = super.toJSON(e); + t.glslVersion = this.glslVersion, t.uniforms = {}; + for (const r in this.uniforms) { + const o = this.uniforms[r].value; + o && o.isTexture ? t.uniforms[r] = { + type: "t", + value: o.toJSON(e).uuid + } : o && o.isColor ? t.uniforms[r] = { + type: "c", + value: o.getHex() + } : o && o.isVector2 ? t.uniforms[r] = { + type: "v2", + value: o.toArray() + } : o && o.isVector3 ? t.uniforms[r] = { + type: "v3", + value: o.toArray() + } : o && o.isVector4 ? t.uniforms[r] = { + type: "v4", + value: o.toArray() + } : o && o.isMatrix3 ? t.uniforms[r] = { + type: "m3", + value: o.toArray() + } : o && o.isMatrix4 ? t.uniforms[r] = { + type: "m4", + value: o.toArray() + } : t.uniforms[r] = { + value: o + }; + } + Object.keys(this.defines).length > 0 && (t.defines = this.defines), t.vertexShader = this.vertexShader, t.fragmentShader = this.fragmentShader, t.lights = this.lights, t.clipping = this.clipping; + const n = {}; + for (const r in this.extensions) + this.extensions[r] === !0 && (n[r] = !0); + return Object.keys(n).length > 0 && (t.extensions = n), t; + } +} +class Lo extends dt { + constructor() { + super(), this.isCamera = !0, this.type = "Camera", this.matrixWorldInverse = new Qe(), this.projectionMatrix = new Qe(), this.projectionMatrixInverse = new Qe(), this.coordinateSystem = Zt; + } + copy(e, t) { + return super.copy(e, t), this.matrixWorldInverse.copy(e.matrixWorldInverse), this.projectionMatrix.copy(e.projectionMatrix), this.projectionMatrixInverse.copy(e.projectionMatrixInverse), this.coordinateSystem = e.coordinateSystem, this; + } + getWorldDirection(e) { + return super.getWorldDirection(e).negate(); + } + updateMatrixWorld(e) { + super.updateMatrixWorld(e), this.matrixWorldInverse.copy(this.matrixWorld).invert(); + } + updateWorldMatrix(e, t) { + super.updateWorldMatrix(e, t), this.matrixWorldInverse.copy(this.matrixWorld).invert(); + } + clone() { + return new this.constructor().copy(this); + } +} +class Tt extends Lo { + constructor(e = 50, t = 1, n = 0.1, r = 2e3) { + super(), this.isPerspectiveCamera = !0, this.type = "PerspectiveCamera", this.fov = e, this.zoom = 1, this.near = n, this.far = r, this.focus = 10, this.aspect = t, this.view = null, this.filmGauge = 35, this.filmOffset = 0, this.updateProjectionMatrix(); + } + copy(e, t) { + return super.copy(e, t), this.fov = e.fov, this.zoom = e.zoom, this.near = e.near, this.far = e.far, this.focus = e.focus, this.aspect = e.aspect, this.view = e.view === null ? null : Object.assign({}, e.view), this.filmGauge = e.filmGauge, this.filmOffset = e.filmOffset, this; + } + /** + * Sets the FOV by focal length in respect to the current .filmGauge. + * + * The default film gauge is 35, so that the focal length can be specified for + * a 35mm (full frame) camera. + * + * Values for focal length and film gauge must have the same unit. + */ + setFocalLength(e) { + const t = 0.5 * this.getFilmHeight() / e; + this.fov = ns * 2 * Math.atan(t), this.updateProjectionMatrix(); + } + /** + * Calculates the focal length from the current .fov and .filmGauge. + */ + getFocalLength() { + const e = Math.tan(Ki * 0.5 * this.fov); + return 0.5 * this.getFilmHeight() / e; + } + getEffectiveFOV() { + return ns * 2 * Math.atan( + Math.tan(Ki * 0.5 * this.fov) / this.zoom + ); + } + getFilmWidth() { + return this.filmGauge * Math.min(this.aspect, 1); + } + getFilmHeight() { + return this.filmGauge / Math.max(this.aspect, 1); + } + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and + * the monitors are in grid like this + * + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + * + * then for each monitor you would call it like this + * + * const w = 1920; + * const h = 1080; + * const fullWidth = w * 3; + * const fullHeight = h * 2; + * + * --A-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * --B-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * --C-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * --D-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * --E-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * --F-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); + * + * Note there is no reason monitors have to be the same size or in a grid. + */ + setViewOffset(e, t, n, r, s, o) { + this.aspect = e / t, this.view === null && (this.view = { + enabled: !0, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }), this.view.enabled = !0, this.view.fullWidth = e, this.view.fullHeight = t, this.view.offsetX = n, this.view.offsetY = r, this.view.width = s, this.view.height = o, this.updateProjectionMatrix(); + } + clearViewOffset() { + this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix(); + } + updateProjectionMatrix() { + const e = this.near; + let t = e * Math.tan(Ki * 0.5 * this.fov) / this.zoom, n = 2 * t, r = this.aspect * n, s = -0.5 * r; + const o = this.view; + if (this.view !== null && this.view.enabled) { + const l = o.fullWidth, c = o.fullHeight; + s += o.offsetX * r / l, t -= o.offsetY * n / c, r *= o.width / l, n *= o.height / c; + } + const a = this.filmOffset; + a !== 0 && (s += e * a / this.getFilmWidth()), this.projectionMatrix.makePerspective(s, s + r, t, t - n, e, this.far, this.coordinateSystem), this.projectionMatrixInverse.copy(this.projectionMatrix).invert(); + } + toJSON(e) { + const t = super.toJSON(e); + return t.object.fov = this.fov, t.object.zoom = this.zoom, t.object.near = this.near, t.object.far = this.far, t.object.focus = this.focus, t.object.aspect = this.aspect, this.view !== null && (t.object.view = Object.assign({}, this.view)), t.object.filmGauge = this.filmGauge, t.object.filmOffset = this.filmOffset, t; + } +} +const Xn = -90, qn = 1; +class pc extends dt { + constructor(e, t, n) { + super(), this.type = "CubeCamera", this.renderTarget = n, this.coordinateSystem = null, this.activeMipmapLevel = 0; + const r = new Tt(Xn, qn, e, t); + r.layers = this.layers, this.add(r); + const s = new Tt(Xn, qn, e, t); + s.layers = this.layers, this.add(s); + const o = new Tt(Xn, qn, e, t); + o.layers = this.layers, this.add(o); + const a = new Tt(Xn, qn, e, t); + a.layers = this.layers, this.add(a); + const l = new Tt(Xn, qn, e, t); + l.layers = this.layers, this.add(l); + const c = new Tt(Xn, qn, e, t); + c.layers = this.layers, this.add(c); + } + updateCoordinateSystem() { + const e = this.coordinateSystem, t = this.children.concat(), [n, r, s, o, a, l] = t; + for (const c of t) this.remove(c); + if (e === Zt) + n.up.set(0, 1, 0), n.lookAt(1, 0, 0), r.up.set(0, 1, 0), r.lookAt(-1, 0, 0), s.up.set(0, 0, -1), s.lookAt(0, 1, 0), o.up.set(0, 0, 1), o.lookAt(0, -1, 0), a.up.set(0, 1, 0), a.lookAt(0, 0, 1), l.up.set(0, 1, 0), l.lookAt(0, 0, -1); + else if (e === tr) + n.up.set(0, -1, 0), n.lookAt(-1, 0, 0), r.up.set(0, -1, 0), r.lookAt(1, 0, 0), s.up.set(0, 0, 1), s.lookAt(0, 1, 0), o.up.set(0, 0, -1), o.lookAt(0, -1, 0), a.up.set(0, -1, 0), a.lookAt(0, 0, 1), l.up.set(0, -1, 0), l.lookAt(0, 0, -1); + else + throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: " + e); + for (const c of t) + this.add(c), c.updateMatrixWorld(); + } + update(e, t) { + this.parent === null && this.updateMatrixWorld(); + const { renderTarget: n, activeMipmapLevel: r } = this; + this.coordinateSystem !== e.coordinateSystem && (this.coordinateSystem = e.coordinateSystem, this.updateCoordinateSystem()); + const [s, o, a, l, c, h] = this.children, d = e.getRenderTarget(), p = e.getActiveCubeFace(), m = e.getActiveMipmapLevel(), g = e.xr.enabled; + e.xr.enabled = !1; + const v = n.texture.generateMipmaps; + n.texture.generateMipmaps = !1, e.setRenderTarget(n, 0, r), e.render(t, s), e.setRenderTarget(n, 1, r), e.render(t, o), e.setRenderTarget(n, 2, r), e.render(t, a), e.setRenderTarget(n, 3, r), e.render(t, l), e.setRenderTarget(n, 4, r), e.render(t, c), n.texture.generateMipmaps = v, e.setRenderTarget(n, 5, r), e.render(t, h), e.setRenderTarget(d, p, m), e.xr.enabled = g, n.texture.needsPMREMUpdate = !0; + } +} +class Po extends bt { + constructor(e, t, n, r, s, o, a, l, c, h) { + e = e !== void 0 ? e : [], t = t !== void 0 ? t : Qn, super(e, t, n, r, s, o, a, l, c, h), this.isCubeTexture = !0, this.flipY = !1; + } + get images() { + return this.image; + } + set images(e) { + this.image = e; + } +} +class mc extends bn { + constructor(e = 1, t = {}) { + super(e, e, t), this.isWebGLCubeRenderTarget = !0; + const n = { width: e, height: e, depth: 1 }, r = [n, n, n, n, n, n]; + t.encoding !== void 0 && (mi("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."), t.colorSpace = t.encoding === Tn ? ht : Ct), this.texture = new Po(r, t.mapping, t.wrapS, t.wrapT, t.magFilter, t.minFilter, t.format, t.type, t.anisotropy, t.colorSpace), this.texture.isRenderTargetTexture = !0, this.texture.generateMipmaps = t.generateMipmaps !== void 0 ? t.generateMipmaps : !1, this.texture.minFilter = t.minFilter !== void 0 ? t.minFilter : Rt; + } + fromEquirectangularTexture(e, t) { + this.texture.type = t.type, this.texture.colorSpace = t.colorSpace, this.texture.generateMipmaps = t.generateMipmaps, this.texture.minFilter = t.minFilter, this.texture.magFilter = t.magFilter; + const n = { + uniforms: { + tEquirect: { value: null } + }, + vertexShader: ( + /* glsl */ + ` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + ` + ), + fragmentShader: ( + /* glsl */ + ` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + ` + ) + }, r = new ii(5, 5, 5), s = new wn({ + name: "CubemapFromEquirect", + uniforms: ni(n.uniforms), + vertexShader: n.vertexShader, + fragmentShader: n.fragmentShader, + side: Mt, + blending: on + }); + s.uniforms.tEquirect.value = t; + const o = new Ot(r, s), a = t.minFilter; + return t.minFilter === _i && (t.minFilter = Rt), new pc(1, 10, this).update(e, o), t.minFilter = a, o.geometry.dispose(), o.material.dispose(), this; + } + clear(e, t, n, r) { + const s = e.getRenderTarget(); + for (let o = 0; o < 6; o++) + e.setRenderTarget(this, o), e.clear(t, n, r); + e.setRenderTarget(s); + } +} +const Or = /* @__PURE__ */ new P(), _c = /* @__PURE__ */ new P(), gc = /* @__PURE__ */ new Ve(); +class rn { + constructor(e = new P(1, 0, 0), t = 0) { + this.isPlane = !0, this.normal = e, this.constant = t; + } + set(e, t) { + return this.normal.copy(e), this.constant = t, this; + } + setComponents(e, t, n, r) { + return this.normal.set(e, t, n), this.constant = r, this; + } + setFromNormalAndCoplanarPoint(e, t) { + return this.normal.copy(e), this.constant = -t.dot(this.normal), this; + } + setFromCoplanarPoints(e, t, n) { + const r = Or.subVectors(n, t).cross(_c.subVectors(e, t)).normalize(); + return this.setFromNormalAndCoplanarPoint(r, e), this; + } + copy(e) { + return this.normal.copy(e.normal), this.constant = e.constant, this; + } + normalize() { + const e = 1 / this.normal.length(); + return this.normal.multiplyScalar(e), this.constant *= e, this; + } + negate() { + return this.constant *= -1, this.normal.negate(), this; + } + distanceToPoint(e) { + return this.normal.dot(e) + this.constant; + } + distanceToSphere(e) { + return this.distanceToPoint(e.center) - e.radius; + } + projectPoint(e, t) { + return t.copy(e).addScaledVector(this.normal, -this.distanceToPoint(e)); + } + intersectLine(e, t) { + const n = e.delta(Or), r = this.normal.dot(n); + if (r === 0) + return this.distanceToPoint(e.start) === 0 ? t.copy(e.start) : null; + const s = -(e.start.dot(this.normal) + this.constant) / r; + return s < 0 || s > 1 ? null : t.copy(e.start).addScaledVector(n, s); + } + intersectsLine(e) { + const t = this.distanceToPoint(e.start), n = this.distanceToPoint(e.end); + return t < 0 && n > 0 || n < 0 && t > 0; + } + intersectsBox(e) { + return e.intersectsPlane(this); + } + intersectsSphere(e) { + return e.intersectsPlane(this); + } + coplanarPoint(e) { + return e.copy(this.normal).multiplyScalar(-this.constant); + } + applyMatrix4(e, t) { + const n = t || gc.getNormalMatrix(e), r = this.coplanarPoint(Or).applyMatrix4(e), s = this.normal.applyMatrix3(n).normalize(); + return this.constant = -r.dot(s), this; + } + translate(e) { + return this.constant -= e.dot(this.normal), this; + } + equals(e) { + return e.normal.equals(this.normal) && e.constant === this.constant; + } + clone() { + return new this.constructor().copy(this); + } +} +const vn = /* @__PURE__ */ new xi(), ki = /* @__PURE__ */ new P(); +class cs { + constructor(e = new rn(), t = new rn(), n = new rn(), r = new rn(), s = new rn(), o = new rn()) { + this.planes = [e, t, n, r, s, o]; + } + set(e, t, n, r, s, o) { + const a = this.planes; + return a[0].copy(e), a[1].copy(t), a[2].copy(n), a[3].copy(r), a[4].copy(s), a[5].copy(o), this; + } + copy(e) { + const t = this.planes; + for (let n = 0; n < 6; n++) + t[n].copy(e.planes[n]); + return this; + } + setFromProjectionMatrix(e, t = Zt) { + const n = this.planes, r = e.elements, s = r[0], o = r[1], a = r[2], l = r[3], c = r[4], h = r[5], d = r[6], p = r[7], m = r[8], g = r[9], v = r[10], f = r[11], u = r[12], b = r[13], S = r[14], R = r[15]; + if (n[0].setComponents(l - s, p - c, f - m, R - u).normalize(), n[1].setComponents(l + s, p + c, f + m, R + u).normalize(), n[2].setComponents(l + o, p + h, f + g, R + b).normalize(), n[3].setComponents(l - o, p - h, f - g, R - b).normalize(), n[4].setComponents(l - a, p - d, f - v, R - S).normalize(), t === Zt) + n[5].setComponents(l + a, p + d, f + v, R + S).normalize(); + else if (t === tr) + n[5].setComponents(a, d, v, S).normalize(); + else + throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: " + t); + return this; + } + intersectsObject(e) { + if (e.boundingSphere !== void 0) + e.boundingSphere === null && e.computeBoundingSphere(), vn.copy(e.boundingSphere).applyMatrix4(e.matrixWorld); + else { + const t = e.geometry; + t.boundingSphere === null && t.computeBoundingSphere(), vn.copy(t.boundingSphere).applyMatrix4(e.matrixWorld); + } + return this.intersectsSphere(vn); + } + intersectsSprite(e) { + return vn.center.set(0, 0, 0), vn.radius = 0.7071067811865476, vn.applyMatrix4(e.matrixWorld), this.intersectsSphere(vn); + } + intersectsSphere(e) { + const t = this.planes, n = e.center, r = -e.radius; + for (let s = 0; s < 6; s++) + if (t[s].distanceToPoint(n) < r) + return !1; + return !0; + } + intersectsBox(e) { + const t = this.planes; + for (let n = 0; n < 6; n++) { + const r = t[n]; + if (ki.x = r.normal.x > 0 ? e.max.x : e.min.x, ki.y = r.normal.y > 0 ? e.max.y : e.min.y, ki.z = r.normal.z > 0 ? e.max.z : e.min.z, r.distanceToPoint(ki) < 0) + return !1; + } + return !0; + } + containsPoint(e) { + const t = this.planes; + for (let n = 0; n < 6; n++) + if (t[n].distanceToPoint(e) < 0) + return !1; + return !0; + } + clone() { + return new this.constructor().copy(this); + } +} +function Do() { + let i = null, e = !1, t = null, n = null; + function r(s, o) { + t(s, o), n = i.requestAnimationFrame(r); + } + return { + start: function() { + e !== !0 && t !== null && (n = i.requestAnimationFrame(r), e = !0); + }, + stop: function() { + i.cancelAnimationFrame(n), e = !1; + }, + setAnimationLoop: function(s) { + t = s; + }, + setContext: function(s) { + i = s; + } + }; +} +function vc(i, e) { + const t = e.isWebGL2, n = /* @__PURE__ */ new WeakMap(); + function r(c, h) { + const d = c.array, p = c.usage, m = d.byteLength, g = i.createBuffer(); + i.bindBuffer(h, g), i.bufferData(h, d, p), c.onUploadCallback(); + let v; + if (d instanceof Float32Array) + v = i.FLOAT; + else if (d instanceof Uint16Array) + if (c.isFloat16BufferAttribute) + if (t) + v = i.HALF_FLOAT; + else + throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2."); + else + v = i.UNSIGNED_SHORT; + else if (d instanceof Int16Array) + v = i.SHORT; + else if (d instanceof Uint32Array) + v = i.UNSIGNED_INT; + else if (d instanceof Int32Array) + v = i.INT; + else if (d instanceof Int8Array) + v = i.BYTE; + else if (d instanceof Uint8Array) + v = i.UNSIGNED_BYTE; + else if (d instanceof Uint8ClampedArray) + v = i.UNSIGNED_BYTE; + else + throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: " + d); + return { + buffer: g, + type: v, + bytesPerElement: d.BYTES_PER_ELEMENT, + version: c.version, + size: m + }; + } + function s(c, h, d) { + const p = h.array, m = h._updateRange, g = h.updateRanges; + if (i.bindBuffer(d, c), m.count === -1 && g.length === 0 && i.bufferSubData(d, 0, p), g.length !== 0) { + for (let v = 0, f = g.length; v < f; v++) { + const u = g[v]; + t ? i.bufferSubData( + d, + u.start * p.BYTES_PER_ELEMENT, + p, + u.start, + u.count + ) : i.bufferSubData( + d, + u.start * p.BYTES_PER_ELEMENT, + p.subarray(u.start, u.start + u.count) + ); + } + h.clearUpdateRanges(); + } + m.count !== -1 && (t ? i.bufferSubData( + d, + m.offset * p.BYTES_PER_ELEMENT, + p, + m.offset, + m.count + ) : i.bufferSubData( + d, + m.offset * p.BYTES_PER_ELEMENT, + p.subarray(m.offset, m.offset + m.count) + ), m.count = -1), h.onUploadCallback(); + } + function o(c) { + return c.isInterleavedBufferAttribute && (c = c.data), n.get(c); + } + function a(c) { + c.isInterleavedBufferAttribute && (c = c.data); + const h = n.get(c); + h && (i.deleteBuffer(h.buffer), n.delete(c)); + } + function l(c, h) { + if (c.isGLBufferAttribute) { + const p = n.get(c); + (!p || p.version < c.version) && n.set(c, { + buffer: c.buffer, + type: c.type, + bytesPerElement: c.elementSize, + version: c.version + }); + return; + } + c.isInterleavedBufferAttribute && (c = c.data); + const d = n.get(c); + if (d === void 0) + n.set(c, r(c, h)); + else if (d.version < c.version) { + if (d.size !== c.array.byteLength) + throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported."); + s(d.buffer, c, h), d.version = c.version; + } + } + return { + get: o, + remove: a, + update: l + }; +} +class us extends hn { + constructor(e = 1, t = 1, n = 1, r = 1) { + super(), this.type = "PlaneGeometry", this.parameters = { + width: e, + height: t, + widthSegments: n, + heightSegments: r + }; + const s = e / 2, o = t / 2, a = Math.floor(n), l = Math.floor(r), c = a + 1, h = l + 1, d = e / a, p = t / l, m = [], g = [], v = [], f = []; + for (let u = 0; u < h; u++) { + const b = u * p - o; + for (let S = 0; S < c; S++) { + const R = S * d - s; + g.push(R, -b, 0), v.push(0, 0, 1), f.push(S / a), f.push(1 - u / l); + } + } + for (let u = 0; u < l; u++) + for (let b = 0; b < a; b++) { + const S = b + c * u, R = b + c * (u + 1), D = b + 1 + c * (u + 1), C = b + 1 + c * u; + m.push(S, R, C), m.push(R, D, C); + } + this.setIndex(m), this.setAttribute("position", new Ht(g, 3)), this.setAttribute("normal", new Ht(v, 3)), this.setAttribute("uv", new Ht(f, 2)); + } + copy(e) { + return super.copy(e), this.parameters = Object.assign({}, e.parameters), this; + } + static fromJSON(e) { + return new us(e.width, e.height, e.widthSegments, e.heightSegments); + } +} +var xc = `#ifdef USE_ALPHAHASH + if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; +#endif`, Mc = `#ifdef USE_ALPHAHASH + const float ALPHA_HASH_SCALE = 0.05; + float hash2D( vec2 value ) { + return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) ); + } + float hash3D( vec3 value ) { + return hash2D( vec2( hash2D( value.xy ), value.z ) ); + } + float getAlphaHashThreshold( vec3 position ) { + float maxDeriv = max( + length( dFdx( position.xyz ) ), + length( dFdy( position.xyz ) ) + ); + float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv ); + vec2 pixScales = vec2( + exp2( floor( log2( pixScale ) ) ), + exp2( ceil( log2( pixScale ) ) ) + ); + vec2 alpha = vec2( + hash3D( floor( pixScales.x * position.xyz ) ), + hash3D( floor( pixScales.y * position.xyz ) ) + ); + float lerpFactor = fract( log2( pixScale ) ); + float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y; + float a = min( lerpFactor, 1.0 - lerpFactor ); + vec3 cases = vec3( + x * x / ( 2.0 * a * ( 1.0 - a ) ), + ( x - 0.5 * a ) / ( 1.0 - a ), + 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) ) + ); + float threshold = ( x < ( 1.0 - a ) ) + ? ( ( x < a ) ? cases.x : cases.y ) + : cases.z; + return clamp( threshold , 1.0e-6, 1.0 ); + } +#endif`, Sc = `#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; +#endif`, Ec = `#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`, yc = `#ifdef USE_ALPHATEST + if ( diffuseColor.a < alphaTest ) discard; +#endif`, Tc = `#ifdef USE_ALPHATEST + uniform float alphaTest; +#endif`, bc = `#ifdef USE_AOMAP + float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; + reflectedLight.indirectDiffuse *= ambientOcclusion; + #if defined( USE_CLEARCOAT ) + clearcoatSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_SHEEN ) + sheenSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) + float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); + reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); + #endif +#endif`, Ac = `#ifdef USE_AOMAP + uniform sampler2D aoMap; + uniform float aoMapIntensity; +#endif`, wc = `#ifdef USE_BATCHING + attribute float batchId; + uniform highp sampler2D batchingTexture; + mat4 getBatchingMatrix( const in float i ) { + int size = textureSize( batchingTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`, Rc = `#ifdef USE_BATCHING + mat4 batchingMatrix = getBatchingMatrix( batchId ); +#endif`, Cc = `vec3 transformed = vec3( position ); +#ifdef USE_ALPHAHASH + vPosition = vec3( position ); +#endif`, Lc = `vec3 objectNormal = vec3( normal ); +#ifdef USE_TANGENT + vec3 objectTangent = vec3( tangent.xyz ); +#endif`, Pc = `float G_BlinnPhong_Implicit( ) { + return 0.25; +} +float D_BlinnPhong( const in float shininess, const in float dotNH ) { + return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); +} +vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( specularColor, 1.0, dotVH ); + float G = G_BlinnPhong_Implicit( ); + float D = D_BlinnPhong( shininess, dotNH ); + return F * ( G * D ); +} // validated`, Dc = `#ifdef USE_IRIDESCENCE + const mat3 XYZ_TO_REC709 = mat3( + 3.2404542, -0.9692660, 0.0556434, + -1.5371385, 1.8760108, -0.2040259, + -0.4985314, 0.0415560, 1.0572252 + ); + vec3 Fresnel0ToIor( vec3 fresnel0 ) { + vec3 sqrtF0 = sqrt( fresnel0 ); + return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 ); + } + vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) ); + } + float IorToFresnel0( float transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor )); + } + vec3 evalSensitivity( float OPD, vec3 shift ) { + float phase = 2.0 * PI * OPD * 1.0e-9; + vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 ); + vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 ); + vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 ); + vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var ); + xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) ); + xyz /= 1.0685e-7; + vec3 rgb = XYZ_TO_REC709 * xyz; + return rgb; + } + vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) { + vec3 I; + float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) ); + float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) ); + float cosTheta2Sq = 1.0 - sinTheta2Sq; + if ( cosTheta2Sq < 0.0 ) { + return vec3( 1.0 ); + } + float cosTheta2 = sqrt( cosTheta2Sq ); + float R0 = IorToFresnel0( iridescenceIOR, outsideIOR ); + float R12 = F_Schlick( R0, 1.0, cosTheta1 ); + float T121 = 1.0 - R12; + float phi12 = 0.0; + if ( iridescenceIOR < outsideIOR ) phi12 = PI; + float phi21 = PI - phi12; + vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR ); + vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 ); + vec3 phi23 = vec3( 0.0 ); + if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI; + if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI; + if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI; + float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2; + vec3 phi = vec3( phi21 ) + phi23; + vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 ); + vec3 r123 = sqrt( R123 ); + vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 ); + vec3 C0 = R12 + Rs; + I = C0; + vec3 Cm = Rs - T121; + for ( int m = 1; m <= 2; ++ m ) { + Cm *= r123; + vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi ); + I += Cm * Sm; + } + return max( I, vec3( 0.0 ) ); + } +#endif`, Uc = `#ifdef USE_BUMPMAP + uniform sampler2D bumpMap; + uniform float bumpScale; + vec2 dHdxy_fwd() { + vec2 dSTdx = dFdx( vBumpMapUv ); + vec2 dSTdy = dFdy( vBumpMapUv ); + float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x; + float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll; + float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll; + return vec2( dBx, dBy ); + } + vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { + vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) ); + vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) ); + vec3 vN = surf_norm; + vec3 R1 = cross( vSigmaY, vN ); + vec3 R2 = cross( vN, vSigmaX ); + float fDet = dot( vSigmaX, R1 ) * faceDirection; + vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); + return normalize( abs( fDet ) * surf_norm - vGrad ); + } +#endif`, Ic = `#if NUM_CLIPPING_PLANES > 0 + vec4 plane; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif +#endif`, Nc = `#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`, Fc = `#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`, Oc = `#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`, Bc = `#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`, zc = `#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`, Gc = `#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + varying vec3 vColor; +#endif`, Hc = `#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif`, Vc = `#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +float luminance( const in vec3 rgb ) { + const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 ); + return dot( weights, rgb ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`, kc = `#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`, Wc = `vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`, Xc = `#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`, qc = `#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`, Yc = `#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`, jc = `#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`, Kc = "gl_FragColor = linearToOutputTexel( gl_FragColor );", Zc = ` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +} +vec4 LinearToLinear( in vec4 value ) { + return value; +} +vec4 LinearTosRGB( in vec4 value ) { + return sRGBTransferOETF( value ); +}`, $c = `#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`, Jc = `#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`, Qc = `#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`, eu = `#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`, tu = `#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`, nu = `#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`, iu = `#ifdef USE_FOG + varying float vFogDepth; +#endif`, ru = `#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`, su = `#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`, au = `#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`, ou = `#ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + reflectedLight.indirectDiffuse += lightMapIrradiance; +#endif`, lu = `#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`, cu = `LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`, uu = `varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`, hu = `uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + #if defined ( LEGACY_LIGHTS ) + if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) { + return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent ); + } + return 1.0; + #else + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; + #endif +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`, du = `#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`, fu = `ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`, pu = `varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`, mu = `BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`, _u = `varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`, gu = `PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`, vu = `struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`, xu = ` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`, Mu = `#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`, Su = `#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`, Eu = `#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`, yu = `#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`, Tu = `#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + varying float vFragDepth; + varying float vIsPerspective; + #else + uniform float logDepthBufFC; + #endif +#endif`, bu = `#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); + #else + if ( isPerspectiveMatrix( projectionMatrix ) ) { + gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0; + gl_Position.z *= gl_Position.w; + } + #endif +#endif`, Au = `#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`, wu = `#ifdef USE_MAP + uniform sampler2D map; +#endif`, Ru = `#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`, Cu = `#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`, Lu = `float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`, Pu = `#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`, Du = `#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`, Uu = `#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } + #else + objectNormal += morphNormal0 * morphTargetInfluences[ 0 ]; + objectNormal += morphNormal1 * morphTargetInfluences[ 1 ]; + objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; + objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; + #endif +#endif`, Iu = `#ifdef USE_MORPHTARGETS + uniform float morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } + #else + #ifndef USE_MORPHNORMALS + uniform float morphTargetInfluences[ 8 ]; + #else + uniform float morphTargetInfluences[ 4 ]; + #endif + #endif +#endif`, Nu = `#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } + #else + transformed += morphTarget0 * morphTargetInfluences[ 0 ]; + transformed += morphTarget1 * morphTargetInfluences[ 1 ]; + transformed += morphTarget2 * morphTargetInfluences[ 2 ]; + transformed += morphTarget3 * morphTargetInfluences[ 3 ]; + #ifndef USE_MORPHNORMALS + transformed += morphTarget4 * morphTargetInfluences[ 4 ]; + transformed += morphTarget5 * morphTargetInfluences[ 5 ]; + transformed += morphTarget6 * morphTargetInfluences[ 6 ]; + transformed += morphTarget7 * morphTargetInfluences[ 7 ]; + #endif + #endif +#endif`, Fu = `float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`, Ou = `#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`, Bu = `#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`, zu = `#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`, Gu = `#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`, Hu = `#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`, Vu = `#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`, ku = `#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`, Wu = `#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`, Xu = `#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`, qu = `#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`, Yu = `vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; +const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); +const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); +const float ShiftRight8 = 1. / 256.; +vec4 packDepthToRGBA( const in float v ) { + vec4 r = vec4( fract( v * PackFactors ), v ); + r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors ); +} +vec2 packDepthToRG( in highp float v ) { + return packDepthToRGBA( v ).yx; +} +float unpackRGToDepth( const in highp vec2 v ) { + return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) ); +} +vec4 pack2HalfToRGBA( vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`, ju = `#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`, Ku = `vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`, Zu = `#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`, $u = `#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`, Ju = `float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`, Qu = `#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`, eh = `#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return shadow; + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + vec3 lightToPosition = shadowCoord.xyz; + float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + return ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } +#endif`, th = `#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`, nh = `#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`, ih = `float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`, rh = `#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`, sh = `#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`, ah = `#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`, oh = `#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`, lh = `float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`, ch = `#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`, uh = `#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`, hh = `#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 OptimizedCineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color *= toneMappingExposure; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + return color; +} +vec3 CustomToneMapping( vec3 color ) { return color; }`, dh = `#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`, fh = `#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + vec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`, ph = `#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`, mh = `#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`, _h = `#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`, gh = `#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`; +const vh = `varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`, xh = `uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`, Mh = `varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`, Sh = `#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`, Eh = `varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`, yh = `uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`, Th = `#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`, bh = `#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + vec4 diffuseColor = vec4( 1.0 ); + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #endif +}`, Ah = `#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`, wh = `#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + #include + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`, Rh = `varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`, Ch = `uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`, Lh = `uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`, Ph = `uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`, Dh = `#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`, Uh = `uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`, Ih = `#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`, Nh = `#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`, Fh = `#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`, Oh = `#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`, Bh = `#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`, zh = `#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), opacity ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`, Gh = `#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`, Hh = `#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`, Vh = `#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`, kh = `#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`, Wh = `#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`, Xh = `#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`, qh = `uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`, Yh = `uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`, jh = `#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`, Kh = `uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`, Zh = `uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`, $h = `uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`, Be = { + alphahash_fragment: xc, + alphahash_pars_fragment: Mc, + alphamap_fragment: Sc, + alphamap_pars_fragment: Ec, + alphatest_fragment: yc, + alphatest_pars_fragment: Tc, + aomap_fragment: bc, + aomap_pars_fragment: Ac, + batching_pars_vertex: wc, + batching_vertex: Rc, + begin_vertex: Cc, + beginnormal_vertex: Lc, + bsdfs: Pc, + iridescence_fragment: Dc, + bumpmap_pars_fragment: Uc, + clipping_planes_fragment: Ic, + clipping_planes_pars_fragment: Nc, + clipping_planes_pars_vertex: Fc, + clipping_planes_vertex: Oc, + color_fragment: Bc, + color_pars_fragment: zc, + color_pars_vertex: Gc, + color_vertex: Hc, + common: Vc, + cube_uv_reflection_fragment: kc, + defaultnormal_vertex: Wc, + displacementmap_pars_vertex: Xc, + displacementmap_vertex: qc, + emissivemap_fragment: Yc, + emissivemap_pars_fragment: jc, + colorspace_fragment: Kc, + colorspace_pars_fragment: Zc, + envmap_fragment: $c, + envmap_common_pars_fragment: Jc, + envmap_pars_fragment: Qc, + envmap_pars_vertex: eu, + envmap_physical_pars_fragment: du, + envmap_vertex: tu, + fog_vertex: nu, + fog_pars_vertex: iu, + fog_fragment: ru, + fog_pars_fragment: su, + gradientmap_pars_fragment: au, + lightmap_fragment: ou, + lightmap_pars_fragment: lu, + lights_lambert_fragment: cu, + lights_lambert_pars_fragment: uu, + lights_pars_begin: hu, + lights_toon_fragment: fu, + lights_toon_pars_fragment: pu, + lights_phong_fragment: mu, + lights_phong_pars_fragment: _u, + lights_physical_fragment: gu, + lights_physical_pars_fragment: vu, + lights_fragment_begin: xu, + lights_fragment_maps: Mu, + lights_fragment_end: Su, + logdepthbuf_fragment: Eu, + logdepthbuf_pars_fragment: yu, + logdepthbuf_pars_vertex: Tu, + logdepthbuf_vertex: bu, + map_fragment: Au, + map_pars_fragment: wu, + map_particle_fragment: Ru, + map_particle_pars_fragment: Cu, + metalnessmap_fragment: Lu, + metalnessmap_pars_fragment: Pu, + morphcolor_vertex: Du, + morphnormal_vertex: Uu, + morphtarget_pars_vertex: Iu, + morphtarget_vertex: Nu, + normal_fragment_begin: Fu, + normal_fragment_maps: Ou, + normal_pars_fragment: Bu, + normal_pars_vertex: zu, + normal_vertex: Gu, + normalmap_pars_fragment: Hu, + clearcoat_normal_fragment_begin: Vu, + clearcoat_normal_fragment_maps: ku, + clearcoat_pars_fragment: Wu, + iridescence_pars_fragment: Xu, + opaque_fragment: qu, + packing: Yu, + premultiplied_alpha_fragment: ju, + project_vertex: Ku, + dithering_fragment: Zu, + dithering_pars_fragment: $u, + roughnessmap_fragment: Ju, + roughnessmap_pars_fragment: Qu, + shadowmap_pars_fragment: eh, + shadowmap_pars_vertex: th, + shadowmap_vertex: nh, + shadowmask_pars_fragment: ih, + skinbase_vertex: rh, + skinning_pars_vertex: sh, + skinning_vertex: ah, + skinnormal_vertex: oh, + specularmap_fragment: lh, + specularmap_pars_fragment: ch, + tonemapping_fragment: uh, + tonemapping_pars_fragment: hh, + transmission_fragment: dh, + transmission_pars_fragment: fh, + uv_pars_fragment: ph, + uv_pars_vertex: mh, + uv_vertex: _h, + worldpos_vertex: gh, + background_vert: vh, + background_frag: xh, + backgroundCube_vert: Mh, + backgroundCube_frag: Sh, + cube_vert: Eh, + cube_frag: yh, + depth_vert: Th, + depth_frag: bh, + distanceRGBA_vert: Ah, + distanceRGBA_frag: wh, + equirect_vert: Rh, + equirect_frag: Ch, + linedashed_vert: Lh, + linedashed_frag: Ph, + meshbasic_vert: Dh, + meshbasic_frag: Uh, + meshlambert_vert: Ih, + meshlambert_frag: Nh, + meshmatcap_vert: Fh, + meshmatcap_frag: Oh, + meshnormal_vert: Bh, + meshnormal_frag: zh, + meshphong_vert: Gh, + meshphong_frag: Hh, + meshphysical_vert: Vh, + meshphysical_frag: kh, + meshtoon_vert: Wh, + meshtoon_frag: Xh, + points_vert: qh, + points_frag: Yh, + shadow_vert: jh, + shadow_frag: Kh, + sprite_vert: Zh, + sprite_frag: $h +}, se = { + common: { + diffuse: { value: /* @__PURE__ */ new Xe(16777215) }, + opacity: { value: 1 }, + map: { value: null }, + mapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaTest: { value: 0 } + }, + specularmap: { + specularMap: { value: null }, + specularMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + envmap: { + envMap: { value: null }, + flipEnvMap: { value: -1 }, + reflectivity: { value: 1 }, + // basic, lambert, phong + ior: { value: 1.5 }, + // physical + refractionRatio: { value: 0.98 } + // basic, lambert, phong + }, + aomap: { + aoMap: { value: null }, + aoMapIntensity: { value: 1 }, + aoMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + lightmap: { + lightMap: { value: null }, + lightMapIntensity: { value: 1 }, + lightMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + bumpmap: { + bumpMap: { value: null }, + bumpMapTransform: { value: /* @__PURE__ */ new Ve() }, + bumpScale: { value: 1 } + }, + normalmap: { + normalMap: { value: null }, + normalMapTransform: { value: /* @__PURE__ */ new Ve() }, + normalScale: { value: /* @__PURE__ */ new Ie(1, 1) } + }, + displacementmap: { + displacementMap: { value: null }, + displacementMapTransform: { value: /* @__PURE__ */ new Ve() }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 } + }, + emissivemap: { + emissiveMap: { value: null }, + emissiveMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + metalnessmap: { + metalnessMap: { value: null }, + metalnessMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + roughnessmap: { + roughnessMap: { value: null }, + roughnessMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + gradientmap: { + gradientMap: { value: null } + }, + fog: { + fogDensity: { value: 25e-5 }, + fogNear: { value: 1 }, + fogFar: { value: 2e3 }, + fogColor: { value: /* @__PURE__ */ new Xe(16777215) } + }, + lights: { + ambientLightColor: { value: [] }, + lightProbe: { value: [] }, + directionalLights: { value: [], properties: { + direction: {}, + color: {} + } }, + directionalLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + directionalShadowMap: { value: [] }, + directionalShadowMatrix: { value: [] }, + spotLights: { value: [], properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {} + } }, + spotLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + spotLightMap: { value: [] }, + spotShadowMap: { value: [] }, + spotLightMatrix: { value: [] }, + pointLights: { value: [], properties: { + color: {}, + position: {}, + decay: {}, + distance: {} + } }, + pointLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {} + } }, + pointShadowMap: { value: [] }, + pointShadowMatrix: { value: [] }, + hemisphereLights: { value: [], properties: { + direction: {}, + skyColor: {}, + groundColor: {} + } }, + // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src + rectAreaLights: { value: [], properties: { + color: {}, + position: {}, + width: {}, + height: {} + } }, + ltc_1: { value: null }, + ltc_2: { value: null } + }, + points: { + diffuse: { value: /* @__PURE__ */ new Xe(16777215) }, + opacity: { value: 1 }, + size: { value: 1 }, + scale: { value: 1 }, + map: { value: null }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaTest: { value: 0 }, + uvTransform: { value: /* @__PURE__ */ new Ve() } + }, + sprite: { + diffuse: { value: /* @__PURE__ */ new Xe(16777215) }, + opacity: { value: 1 }, + center: { value: /* @__PURE__ */ new Ie(0.5, 0.5) }, + rotation: { value: 0 }, + map: { value: null }, + mapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaTest: { value: 0 } + } +}, Gt = { + basic: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.specularmap, + se.envmap, + se.aomap, + se.lightmap, + se.fog + ]), + vertexShader: Be.meshbasic_vert, + fragmentShader: Be.meshbasic_frag + }, + lambert: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.specularmap, + se.envmap, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) } + } + ]), + vertexShader: Be.meshlambert_vert, + fragmentShader: Be.meshlambert_frag + }, + phong: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.specularmap, + se.envmap, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) }, + specular: { value: /* @__PURE__ */ new Xe(1118481) }, + shininess: { value: 30 } + } + ]), + vertexShader: Be.meshphong_vert, + fragmentShader: Be.meshphong_frag + }, + standard: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.envmap, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.roughnessmap, + se.metalnessmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) }, + roughness: { value: 1 }, + metalness: { value: 0 }, + envMapIntensity: { value: 1 } + // temporary + } + ]), + vertexShader: Be.meshphysical_vert, + fragmentShader: Be.meshphysical_frag + }, + toon: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.gradientmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) } + } + ]), + vertexShader: Be.meshtoon_vert, + fragmentShader: Be.meshtoon_frag + }, + matcap: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.fog, + { + matcap: { value: null } + } + ]), + vertexShader: Be.meshmatcap_vert, + fragmentShader: Be.meshmatcap_frag + }, + points: { + uniforms: /* @__PURE__ */ _t([ + se.points, + se.fog + ]), + vertexShader: Be.points_vert, + fragmentShader: Be.points_frag + }, + dashed: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.fog, + { + scale: { value: 1 }, + dashSize: { value: 1 }, + totalSize: { value: 2 } + } + ]), + vertexShader: Be.linedashed_vert, + fragmentShader: Be.linedashed_frag + }, + depth: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.displacementmap + ]), + vertexShader: Be.depth_vert, + fragmentShader: Be.depth_frag + }, + normal: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.bumpmap, + se.normalmap, + se.displacementmap, + { + opacity: { value: 1 } + } + ]), + vertexShader: Be.meshnormal_vert, + fragmentShader: Be.meshnormal_frag + }, + sprite: { + uniforms: /* @__PURE__ */ _t([ + se.sprite, + se.fog + ]), + vertexShader: Be.sprite_vert, + fragmentShader: Be.sprite_frag + }, + background: { + uniforms: { + uvTransform: { value: /* @__PURE__ */ new Ve() }, + t2D: { value: null }, + backgroundIntensity: { value: 1 } + }, + vertexShader: Be.background_vert, + fragmentShader: Be.background_frag + }, + backgroundCube: { + uniforms: { + envMap: { value: null }, + flipEnvMap: { value: -1 }, + backgroundBlurriness: { value: 0 }, + backgroundIntensity: { value: 1 } + }, + vertexShader: Be.backgroundCube_vert, + fragmentShader: Be.backgroundCube_frag + }, + cube: { + uniforms: { + tCube: { value: null }, + tFlip: { value: -1 }, + opacity: { value: 1 } + }, + vertexShader: Be.cube_vert, + fragmentShader: Be.cube_frag + }, + equirect: { + uniforms: { + tEquirect: { value: null } + }, + vertexShader: Be.equirect_vert, + fragmentShader: Be.equirect_frag + }, + distanceRGBA: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.displacementmap, + { + referencePosition: { value: /* @__PURE__ */ new P() }, + nearDistance: { value: 1 }, + farDistance: { value: 1e3 } + } + ]), + vertexShader: Be.distanceRGBA_vert, + fragmentShader: Be.distanceRGBA_frag + }, + shadow: { + uniforms: /* @__PURE__ */ _t([ + se.lights, + se.fog, + { + color: { value: /* @__PURE__ */ new Xe(0) }, + opacity: { value: 1 } + } + ]), + vertexShader: Be.shadow_vert, + fragmentShader: Be.shadow_frag + } +}; +Gt.physical = { + uniforms: /* @__PURE__ */ _t([ + Gt.standard.uniforms, + { + clearcoat: { value: 0 }, + clearcoatMap: { value: null }, + clearcoatMapTransform: { value: /* @__PURE__ */ new Ve() }, + clearcoatNormalMap: { value: null }, + clearcoatNormalMapTransform: { value: /* @__PURE__ */ new Ve() }, + clearcoatNormalScale: { value: /* @__PURE__ */ new Ie(1, 1) }, + clearcoatRoughness: { value: 0 }, + clearcoatRoughnessMap: { value: null }, + clearcoatRoughnessMapTransform: { value: /* @__PURE__ */ new Ve() }, + iridescence: { value: 0 }, + iridescenceMap: { value: null }, + iridescenceMapTransform: { value: /* @__PURE__ */ new Ve() }, + iridescenceIOR: { value: 1.3 }, + iridescenceThicknessMinimum: { value: 100 }, + iridescenceThicknessMaximum: { value: 400 }, + iridescenceThicknessMap: { value: null }, + iridescenceThicknessMapTransform: { value: /* @__PURE__ */ new Ve() }, + sheen: { value: 0 }, + sheenColor: { value: /* @__PURE__ */ new Xe(0) }, + sheenColorMap: { value: null }, + sheenColorMapTransform: { value: /* @__PURE__ */ new Ve() }, + sheenRoughness: { value: 1 }, + sheenRoughnessMap: { value: null }, + sheenRoughnessMapTransform: { value: /* @__PURE__ */ new Ve() }, + transmission: { value: 0 }, + transmissionMap: { value: null }, + transmissionMapTransform: { value: /* @__PURE__ */ new Ve() }, + transmissionSamplerSize: { value: /* @__PURE__ */ new Ie() }, + transmissionSamplerMap: { value: null }, + thickness: { value: 0 }, + thicknessMap: { value: null }, + thicknessMapTransform: { value: /* @__PURE__ */ new Ve() }, + attenuationDistance: { value: 0 }, + attenuationColor: { value: /* @__PURE__ */ new Xe(0) }, + specularColor: { value: /* @__PURE__ */ new Xe(1, 1, 1) }, + specularColorMap: { value: null }, + specularColorMapTransform: { value: /* @__PURE__ */ new Ve() }, + specularIntensity: { value: 1 }, + specularIntensityMap: { value: null }, + specularIntensityMapTransform: { value: /* @__PURE__ */ new Ve() }, + anisotropyVector: { value: /* @__PURE__ */ new Ie() }, + anisotropyMap: { value: null }, + anisotropyMapTransform: { value: /* @__PURE__ */ new Ve() } + } + ]), + vertexShader: Be.meshphysical_vert, + fragmentShader: Be.meshphysical_frag +}; +const Wi = { r: 0, b: 0, g: 0 }; +function Jh(i, e, t, n, r, s, o) { + const a = new Xe(0); + let l = s === !0 ? 0 : 1, c, h, d = null, p = 0, m = null; + function g(f, u) { + let b = !1, S = u.isScene === !0 ? u.background : null; + S && S.isTexture && (S = (u.backgroundBlurriness > 0 ? t : e).get(S)), S === null ? v(a, l) : S && S.isColor && (v(S, 1), b = !0); + const R = i.xr.getEnvironmentBlendMode(); + R === "additive" ? n.buffers.color.setClear(0, 0, 0, 1, o) : R === "alpha-blend" && n.buffers.color.setClear(0, 0, 0, 0, o), (i.autoClear || b) && i.clear(i.autoClearColor, i.autoClearDepth, i.autoClearStencil), S && (S.isCubeTexture || S.mapping === rr) ? (h === void 0 && (h = new Ot( + new ii(1, 1, 1), + new wn({ + name: "BackgroundCubeMaterial", + uniforms: ni(Gt.backgroundCube.uniforms), + vertexShader: Gt.backgroundCube.vertexShader, + fragmentShader: Gt.backgroundCube.fragmentShader, + side: Mt, + depthTest: !1, + depthWrite: !1, + fog: !1 + }) + ), h.geometry.deleteAttribute("normal"), h.geometry.deleteAttribute("uv"), h.onBeforeRender = function(D, C, A) { + this.matrixWorld.copyPosition(A.matrixWorld); + }, Object.defineProperty(h.material, "envMap", { + get: function() { + return this.uniforms.envMap.value; + } + }), r.update(h)), h.material.uniforms.envMap.value = S, h.material.uniforms.flipEnvMap.value = S.isCubeTexture && S.isRenderTargetTexture === !1 ? -1 : 1, h.material.uniforms.backgroundBlurriness.value = u.backgroundBlurriness, h.material.uniforms.backgroundIntensity.value = u.backgroundIntensity, h.material.toneMapped = Ke.getTransfer(S.colorSpace) !== Ze, (d !== S || p !== S.version || m !== i.toneMapping) && (h.material.needsUpdate = !0, d = S, p = S.version, m = i.toneMapping), h.layers.enableAll(), f.unshift(h, h.geometry, h.material, 0, 0, null)) : S && S.isTexture && (c === void 0 && (c = new Ot( + new us(2, 2), + new wn({ + name: "BackgroundMaterial", + uniforms: ni(Gt.background.uniforms), + vertexShader: Gt.background.vertexShader, + fragmentShader: Gt.background.fragmentShader, + side: un, + depthTest: !1, + depthWrite: !1, + fog: !1 + }) + ), c.geometry.deleteAttribute("normal"), Object.defineProperty(c.material, "map", { + get: function() { + return this.uniforms.t2D.value; + } + }), r.update(c)), c.material.uniforms.t2D.value = S, c.material.uniforms.backgroundIntensity.value = u.backgroundIntensity, c.material.toneMapped = Ke.getTransfer(S.colorSpace) !== Ze, S.matrixAutoUpdate === !0 && S.updateMatrix(), c.material.uniforms.uvTransform.value.copy(S.matrix), (d !== S || p !== S.version || m !== i.toneMapping) && (c.material.needsUpdate = !0, d = S, p = S.version, m = i.toneMapping), c.layers.enableAll(), f.unshift(c, c.geometry, c.material, 0, 0, null)); + } + function v(f, u) { + f.getRGB(Wi, Co(i)), n.buffers.color.setClear(Wi.r, Wi.g, Wi.b, u, o); + } + return { + getClearColor: function() { + return a; + }, + setClearColor: function(f, u = 1) { + a.set(f), l = u, v(a, l); + }, + getClearAlpha: function() { + return l; + }, + setClearAlpha: function(f) { + l = f, v(a, l); + }, + render: g + }; +} +function Qh(i, e, t, n) { + const r = i.getParameter(i.MAX_VERTEX_ATTRIBS), s = n.isWebGL2 ? null : e.get("OES_vertex_array_object"), o = n.isWebGL2 || s !== null, a = {}, l = f(null); + let c = l, h = !1; + function d(L, F, V, Y, X) { + let k = !1; + if (o) { + const q = v(Y, V, F); + c !== q && (c = q, m(c.object)), k = u(L, Y, V, X), k && b(L, Y, V, X); + } else { + const q = F.wireframe === !0; + (c.geometry !== Y.id || c.program !== V.id || c.wireframe !== q) && (c.geometry = Y.id, c.program = V.id, c.wireframe = q, k = !0); + } + X !== null && t.update(X, i.ELEMENT_ARRAY_BUFFER), (k || h) && (h = !1, W(L, F, V, Y), X !== null && i.bindBuffer(i.ELEMENT_ARRAY_BUFFER, t.get(X).buffer)); + } + function p() { + return n.isWebGL2 ? i.createVertexArray() : s.createVertexArrayOES(); + } + function m(L) { + return n.isWebGL2 ? i.bindVertexArray(L) : s.bindVertexArrayOES(L); + } + function g(L) { + return n.isWebGL2 ? i.deleteVertexArray(L) : s.deleteVertexArrayOES(L); + } + function v(L, F, V) { + const Y = V.wireframe === !0; + let X = a[L.id]; + X === void 0 && (X = {}, a[L.id] = X); + let k = X[F.id]; + k === void 0 && (k = {}, X[F.id] = k); + let q = k[Y]; + return q === void 0 && (q = f(p()), k[Y] = q), q; + } + function f(L) { + const F = [], V = [], Y = []; + for (let X = 0; X < r; X++) + F[X] = 0, V[X] = 0, Y[X] = 0; + return { + // for backward compatibility on non-VAO support browser + geometry: null, + program: null, + wireframe: !1, + newAttributes: F, + enabledAttributes: V, + attributeDivisors: Y, + object: L, + attributes: {}, + index: null + }; + } + function u(L, F, V, Y) { + const X = c.attributes, k = F.attributes; + let q = 0; + const Q = V.getAttributes(); + for (const ce in Q) + if (Q[ce].location >= 0) { + const j = X[ce]; + let oe = k[ce]; + if (oe === void 0 && (ce === "instanceMatrix" && L.instanceMatrix && (oe = L.instanceMatrix), ce === "instanceColor" && L.instanceColor && (oe = L.instanceColor)), j === void 0 || j.attribute !== oe || oe && j.data !== oe.data) return !0; + q++; + } + return c.attributesNum !== q || c.index !== Y; + } + function b(L, F, V, Y) { + const X = {}, k = F.attributes; + let q = 0; + const Q = V.getAttributes(); + for (const ce in Q) + if (Q[ce].location >= 0) { + let j = k[ce]; + j === void 0 && (ce === "instanceMatrix" && L.instanceMatrix && (j = L.instanceMatrix), ce === "instanceColor" && L.instanceColor && (j = L.instanceColor)); + const oe = {}; + oe.attribute = j, j && j.data && (oe.data = j.data), X[ce] = oe, q++; + } + c.attributes = X, c.attributesNum = q, c.index = Y; + } + function S() { + const L = c.newAttributes; + for (let F = 0, V = L.length; F < V; F++) + L[F] = 0; + } + function R(L) { + D(L, 0); + } + function D(L, F) { + const V = c.newAttributes, Y = c.enabledAttributes, X = c.attributeDivisors; + V[L] = 1, Y[L] === 0 && (i.enableVertexAttribArray(L), Y[L] = 1), X[L] !== F && ((n.isWebGL2 ? i : e.get("ANGLE_instanced_arrays"))[n.isWebGL2 ? "vertexAttribDivisor" : "vertexAttribDivisorANGLE"](L, F), X[L] = F); + } + function C() { + const L = c.newAttributes, F = c.enabledAttributes; + for (let V = 0, Y = F.length; V < Y; V++) + F[V] !== L[V] && (i.disableVertexAttribArray(V), F[V] = 0); + } + function A(L, F, V, Y, X, k, q) { + q === !0 ? i.vertexAttribIPointer(L, F, V, X, k) : i.vertexAttribPointer(L, F, V, Y, X, k); + } + function W(L, F, V, Y) { + if (n.isWebGL2 === !1 && (L.isInstancedMesh || Y.isInstancedBufferGeometry) && e.get("ANGLE_instanced_arrays") === null) + return; + S(); + const X = Y.attributes, k = V.getAttributes(), q = F.defaultAttributeValues; + for (const Q in k) { + const ce = k[Q]; + if (ce.location >= 0) { + let H = X[Q]; + if (H === void 0 && (Q === "instanceMatrix" && L.instanceMatrix && (H = L.instanceMatrix), Q === "instanceColor" && L.instanceColor && (H = L.instanceColor)), H !== void 0) { + const j = H.normalized, oe = H.itemSize, ve = t.get(H); + if (ve === void 0) continue; + const _e = ve.buffer, we = ve.type, Ae = ve.bytesPerElement, ge = n.isWebGL2 === !0 && (we === i.INT || we === i.UNSIGNED_INT || H.gpuType === co); + if (H.isInterleavedBufferAttribute) { + const Pe = H.data, N = Pe.stride, rt = H.offset; + if (Pe.isInstancedInterleavedBuffer) { + for (let Me = 0; Me < ce.locationSize; Me++) + D(ce.location + Me, Pe.meshPerAttribute); + L.isInstancedMesh !== !0 && Y._maxInstanceCount === void 0 && (Y._maxInstanceCount = Pe.meshPerAttribute * Pe.count); + } else + for (let Me = 0; Me < ce.locationSize; Me++) + R(ce.location + Me); + i.bindBuffer(i.ARRAY_BUFFER, _e); + for (let Me = 0; Me < ce.locationSize; Me++) + A( + ce.location + Me, + oe / ce.locationSize, + we, + j, + N * Ae, + (rt + oe / ce.locationSize * Me) * Ae, + ge + ); + } else { + if (H.isInstancedBufferAttribute) { + for (let Pe = 0; Pe < ce.locationSize; Pe++) + D(ce.location + Pe, H.meshPerAttribute); + L.isInstancedMesh !== !0 && Y._maxInstanceCount === void 0 && (Y._maxInstanceCount = H.meshPerAttribute * H.count); + } else + for (let Pe = 0; Pe < ce.locationSize; Pe++) + R(ce.location + Pe); + i.bindBuffer(i.ARRAY_BUFFER, _e); + for (let Pe = 0; Pe < ce.locationSize; Pe++) + A( + ce.location + Pe, + oe / ce.locationSize, + we, + j, + oe * Ae, + oe / ce.locationSize * Pe * Ae, + ge + ); + } + } else if (q !== void 0) { + const j = q[Q]; + if (j !== void 0) + switch (j.length) { + case 2: + i.vertexAttrib2fv(ce.location, j); + break; + case 3: + i.vertexAttrib3fv(ce.location, j); + break; + case 4: + i.vertexAttrib4fv(ce.location, j); + break; + default: + i.vertexAttrib1fv(ce.location, j); + } + } + } + } + C(); + } + function x() { + Z(); + for (const L in a) { + const F = a[L]; + for (const V in F) { + const Y = F[V]; + for (const X in Y) + g(Y[X].object), delete Y[X]; + delete F[V]; + } + delete a[L]; + } + } + function y(L) { + if (a[L.id] === void 0) return; + const F = a[L.id]; + for (const V in F) { + const Y = F[V]; + for (const X in Y) + g(Y[X].object), delete Y[X]; + delete F[V]; + } + delete a[L.id]; + } + function z(L) { + for (const F in a) { + const V = a[F]; + if (V[L.id] === void 0) continue; + const Y = V[L.id]; + for (const X in Y) + g(Y[X].object), delete Y[X]; + delete V[L.id]; + } + } + function Z() { + re(), h = !0, c !== l && (c = l, m(c.object)); + } + function re() { + l.geometry = null, l.program = null, l.wireframe = !1; + } + return { + setup: d, + reset: Z, + resetDefaultState: re, + dispose: x, + releaseStatesOfGeometry: y, + releaseStatesOfProgram: z, + initAttributes: S, + enableAttribute: R, + disableUnusedAttributes: C + }; +} +function ed(i, e, t, n) { + const r = n.isWebGL2; + let s; + function o(h) { + s = h; + } + function a(h, d) { + i.drawArrays(s, h, d), t.update(d, s, 1); + } + function l(h, d, p) { + if (p === 0) return; + let m, g; + if (r) + m = i, g = "drawArraysInstanced"; + else if (m = e.get("ANGLE_instanced_arrays"), g = "drawArraysInstancedANGLE", m === null) { + console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."); + return; + } + m[g](s, h, d, p), t.update(d, s, p); + } + function c(h, d, p) { + if (p === 0) return; + const m = e.get("WEBGL_multi_draw"); + if (m === null) + for (let g = 0; g < p; g++) + this.render(h[g], d[g]); + else { + m.multiDrawArraysWEBGL(s, h, 0, d, 0, p); + let g = 0; + for (let v = 0; v < p; v++) + g += d[v]; + t.update(g, s, 1); + } + } + this.setMode = o, this.render = a, this.renderInstances = l, this.renderMultiDraw = c; +} +function td(i, e, t) { + let n; + function r() { + if (n !== void 0) return n; + if (e.has("EXT_texture_filter_anisotropic") === !0) { + const A = e.get("EXT_texture_filter_anisotropic"); + n = i.getParameter(A.MAX_TEXTURE_MAX_ANISOTROPY_EXT); + } else + n = 0; + return n; + } + function s(A) { + if (A === "highp") { + if (i.getShaderPrecisionFormat(i.VERTEX_SHADER, i.HIGH_FLOAT).precision > 0 && i.getShaderPrecisionFormat(i.FRAGMENT_SHADER, i.HIGH_FLOAT).precision > 0) + return "highp"; + A = "mediump"; + } + return A === "mediump" && i.getShaderPrecisionFormat(i.VERTEX_SHADER, i.MEDIUM_FLOAT).precision > 0 && i.getShaderPrecisionFormat(i.FRAGMENT_SHADER, i.MEDIUM_FLOAT).precision > 0 ? "mediump" : "lowp"; + } + const o = typeof WebGL2RenderingContext < "u" && i.constructor.name === "WebGL2RenderingContext"; + let a = t.precision !== void 0 ? t.precision : "highp"; + const l = s(a); + l !== a && (console.warn("THREE.WebGLRenderer:", a, "not supported, using", l, "instead."), a = l); + const c = o || e.has("WEBGL_draw_buffers"), h = t.logarithmicDepthBuffer === !0, d = i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS), p = i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS), m = i.getParameter(i.MAX_TEXTURE_SIZE), g = i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE), v = i.getParameter(i.MAX_VERTEX_ATTRIBS), f = i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS), u = i.getParameter(i.MAX_VARYING_VECTORS), b = i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS), S = p > 0, R = o || e.has("OES_texture_float"), D = S && R, C = o ? i.getParameter(i.MAX_SAMPLES) : 0; + return { + isWebGL2: o, + drawBuffers: c, + getMaxAnisotropy: r, + getMaxPrecision: s, + precision: a, + logarithmicDepthBuffer: h, + maxTextures: d, + maxVertexTextures: p, + maxTextureSize: m, + maxCubemapSize: g, + maxAttributes: v, + maxVertexUniforms: f, + maxVaryings: u, + maxFragmentUniforms: b, + vertexTextures: S, + floatFragmentTextures: R, + floatVertexTextures: D, + maxSamples: C + }; +} +function nd(i) { + const e = this; + let t = null, n = 0, r = !1, s = !1; + const o = new rn(), a = new Ve(), l = { value: null, needsUpdate: !1 }; + this.uniform = l, this.numPlanes = 0, this.numIntersection = 0, this.init = function(d, p) { + const m = d.length !== 0 || p || // enable state of previous frame - the clipping code has to + // run another frame in order to reset the state: + n !== 0 || r; + return r = p, n = d.length, m; + }, this.beginShadows = function() { + s = !0, h(null); + }, this.endShadows = function() { + s = !1; + }, this.setGlobalState = function(d, p) { + t = h(d, p, 0); + }, this.setState = function(d, p, m) { + const g = d.clippingPlanes, v = d.clipIntersection, f = d.clipShadows, u = i.get(d); + if (!r || g === null || g.length === 0 || s && !f) + s ? h(null) : c(); + else { + const b = s ? 0 : n, S = b * 4; + let R = u.clippingState || null; + l.value = R, R = h(g, p, S, m); + for (let D = 0; D !== S; ++D) + R[D] = t[D]; + u.clippingState = R, this.numIntersection = v ? this.numPlanes : 0, this.numPlanes += b; + } + }; + function c() { + l.value !== t && (l.value = t, l.needsUpdate = n > 0), e.numPlanes = n, e.numIntersection = 0; + } + function h(d, p, m, g) { + const v = d !== null ? d.length : 0; + let f = null; + if (v !== 0) { + if (f = l.value, g !== !0 || f === null) { + const u = m + v * 4, b = p.matrixWorldInverse; + a.getNormalMatrix(b), (f === null || f.length < u) && (f = new Float32Array(u)); + for (let S = 0, R = m; S !== v; ++S, R += 4) + o.copy(d[S]).applyMatrix4(b, a), o.normal.toArray(f, R), f[R + 3] = o.constant; + } + l.value = f, l.needsUpdate = !0; + } + return e.numPlanes = v, e.numIntersection = 0, f; + } +} +function id(i) { + let e = /* @__PURE__ */ new WeakMap(); + function t(o, a) { + return a === $r ? o.mapping = Qn : a === Jr && (o.mapping = ei), o; + } + function n(o) { + if (o && o.isTexture) { + const a = o.mapping; + if (a === $r || a === Jr) + if (e.has(o)) { + const l = e.get(o).texture; + return t(l, o.mapping); + } else { + const l = o.image; + if (l && l.height > 0) { + const c = new mc(l.height / 2); + return c.fromEquirectangularTexture(i, o), e.set(o, c), o.addEventListener("dispose", r), t(c.texture, o.mapping); + } else + return null; + } + } + return o; + } + function r(o) { + const a = o.target; + a.removeEventListener("dispose", r); + const l = e.get(a); + l !== void 0 && (e.delete(a), l.dispose()); + } + function s() { + e = /* @__PURE__ */ new WeakMap(); + } + return { + get: n, + dispose: s + }; +} +class Uo extends Lo { + constructor(e = -1, t = 1, n = 1, r = -1, s = 0.1, o = 2e3) { + super(), this.isOrthographicCamera = !0, this.type = "OrthographicCamera", this.zoom = 1, this.view = null, this.left = e, this.right = t, this.top = n, this.bottom = r, this.near = s, this.far = o, this.updateProjectionMatrix(); + } + copy(e, t) { + return super.copy(e, t), this.left = e.left, this.right = e.right, this.top = e.top, this.bottom = e.bottom, this.near = e.near, this.far = e.far, this.zoom = e.zoom, this.view = e.view === null ? null : Object.assign({}, e.view), this; + } + setViewOffset(e, t, n, r, s, o) { + this.view === null && (this.view = { + enabled: !0, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }), this.view.enabled = !0, this.view.fullWidth = e, this.view.fullHeight = t, this.view.offsetX = n, this.view.offsetY = r, this.view.width = s, this.view.height = o, this.updateProjectionMatrix(); + } + clearViewOffset() { + this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix(); + } + updateProjectionMatrix() { + const e = (this.right - this.left) / (2 * this.zoom), t = (this.top - this.bottom) / (2 * this.zoom), n = (this.right + this.left) / 2, r = (this.top + this.bottom) / 2; + let s = n - e, o = n + e, a = r + t, l = r - t; + if (this.view !== null && this.view.enabled) { + const c = (this.right - this.left) / this.view.fullWidth / this.zoom, h = (this.top - this.bottom) / this.view.fullHeight / this.zoom; + s += c * this.view.offsetX, o = s + c * this.view.width, a -= h * this.view.offsetY, l = a - h * this.view.height; + } + this.projectionMatrix.makeOrthographic(s, o, a, l, this.near, this.far, this.coordinateSystem), this.projectionMatrixInverse.copy(this.projectionMatrix).invert(); + } + toJSON(e) { + const t = super.toJSON(e); + return t.object.zoom = this.zoom, t.object.left = this.left, t.object.right = this.right, t.object.top = this.top, t.object.bottom = this.bottom, t.object.near = this.near, t.object.far = this.far, this.view !== null && (t.object.view = Object.assign({}, this.view)), t; + } +} +const Kn = 4, xa = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582], Sn = 20, Br = /* @__PURE__ */ new Uo(), Ma = /* @__PURE__ */ new Xe(); +let zr = null, Gr = 0, Hr = 0; +const xn = (1 + Math.sqrt(5)) / 2, Yn = 1 / xn, Sa = [ + /* @__PURE__ */ new P(1, 1, 1), + /* @__PURE__ */ new P(-1, 1, 1), + /* @__PURE__ */ new P(1, 1, -1), + /* @__PURE__ */ new P(-1, 1, -1), + /* @__PURE__ */ new P(0, xn, Yn), + /* @__PURE__ */ new P(0, xn, -Yn), + /* @__PURE__ */ new P(Yn, 0, xn), + /* @__PURE__ */ new P(-Yn, 0, xn), + /* @__PURE__ */ new P(xn, Yn, 0), + /* @__PURE__ */ new P(-xn, Yn, 0) +]; +class Ea { + constructor(e) { + this._renderer = e, this._pingPongRenderTarget = null, this._lodMax = 0, this._cubeSize = 0, this._lodPlanes = [], this._sizeLods = [], this._sigmas = [], this._blurMaterial = null, this._cubemapMaterial = null, this._equirectMaterial = null, this._compileMaterial(this._blurMaterial); + } + /** + * Generates a PMREM from a supplied Scene, which can be faster than using an + * image if networking bandwidth is low. Optional sigma specifies a blur radius + * in radians to be applied to the scene before PMREM generation. Optional near + * and far planes ensure the scene is rendered in its entirety (the cubeCamera + * is placed at the origin). + */ + fromScene(e, t = 0, n = 0.1, r = 100) { + zr = this._renderer.getRenderTarget(), Gr = this._renderer.getActiveCubeFace(), Hr = this._renderer.getActiveMipmapLevel(), this._setSize(256); + const s = this._allocateTargets(); + return s.depthBuffer = !0, this._sceneToCubeUV(e, n, r, s), t > 0 && this._blur(s, 0, 0, t), this._applyPMREM(s), this._cleanup(s), s; + } + /** + * Generates a PMREM from an equirectangular texture, which can be either LDR + * or HDR. The ideal input image size is 1k (1024 x 512), + * as this matches best with the 256 x 256 cubemap output. + */ + fromEquirectangular(e, t = null) { + return this._fromTexture(e, t); + } + /** + * Generates a PMREM from an cubemap texture, which can be either LDR + * or HDR. The ideal input cube size is 256 x 256, + * as this matches best with the 256 x 256 cubemap output. + */ + fromCubemap(e, t = null) { + return this._fromTexture(e, t); + } + /** + * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + compileCubemapShader() { + this._cubemapMaterial === null && (this._cubemapMaterial = ba(), this._compileMaterial(this._cubemapMaterial)); + } + /** + * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + compileEquirectangularShader() { + this._equirectMaterial === null && (this._equirectMaterial = Ta(), this._compileMaterial(this._equirectMaterial)); + } + /** + * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class, + * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on + * one of them will cause any others to also become unusable. + */ + dispose() { + this._dispose(), this._cubemapMaterial !== null && this._cubemapMaterial.dispose(), this._equirectMaterial !== null && this._equirectMaterial.dispose(); + } + // private interface + _setSize(e) { + this._lodMax = Math.floor(Math.log2(e)), this._cubeSize = Math.pow(2, this._lodMax); + } + _dispose() { + this._blurMaterial !== null && this._blurMaterial.dispose(), this._pingPongRenderTarget !== null && this._pingPongRenderTarget.dispose(); + for (let e = 0; e < this._lodPlanes.length; e++) + this._lodPlanes[e].dispose(); + } + _cleanup(e) { + this._renderer.setRenderTarget(zr, Gr, Hr), e.scissorTest = !1, Xi(e, 0, 0, e.width, e.height); + } + _fromTexture(e, t) { + e.mapping === Qn || e.mapping === ei ? this._setSize(e.image.length === 0 ? 16 : e.image[0].width || e.image[0].image.width) : this._setSize(e.image.width / 4), zr = this._renderer.getRenderTarget(), Gr = this._renderer.getActiveCubeFace(), Hr = this._renderer.getActiveMipmapLevel(); + const n = t || this._allocateTargets(); + return this._textureToCubeUV(e, n), this._applyPMREM(n), this._cleanup(n), n; + } + _allocateTargets() { + const e = 3 * Math.max(this._cubeSize, 112), t = 4 * this._cubeSize, n = { + magFilter: Rt, + minFilter: Rt, + generateMipmaps: !1, + type: gi, + format: Ft, + colorSpace: $t, + depthBuffer: !1 + }, r = ya(e, t, n); + if (this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== e || this._pingPongRenderTarget.height !== t) { + this._pingPongRenderTarget !== null && this._dispose(), this._pingPongRenderTarget = ya(e, t, n); + const { _lodMax: s } = this; + ({ sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = rd(s)), this._blurMaterial = sd(s, e, t); + } + return r; + } + _compileMaterial(e) { + const t = new Ot(this._lodPlanes[0], e); + this._renderer.compile(t, Br); + } + _sceneToCubeUV(e, t, n, r) { + const a = new Tt(90, 1, t, n), l = [1, -1, 1, 1, 1, 1], c = [1, 1, 1, -1, -1, -1], h = this._renderer, d = h.autoClear, p = h.toneMapping; + h.getClearColor(Ma), h.toneMapping = ln, h.autoClear = !1; + const m = new ls({ + name: "PMREM.Background", + side: Mt, + depthWrite: !1, + depthTest: !1 + }), g = new Ot(new ii(), m); + let v = !1; + const f = e.background; + f ? f.isColor && (m.color.copy(f), e.background = null, v = !0) : (m.color.copy(Ma), v = !0); + for (let u = 0; u < 6; u++) { + const b = u % 3; + b === 0 ? (a.up.set(0, l[u], 0), a.lookAt(c[u], 0, 0)) : b === 1 ? (a.up.set(0, 0, l[u]), a.lookAt(0, c[u], 0)) : (a.up.set(0, l[u], 0), a.lookAt(0, 0, c[u])); + const S = this._cubeSize; + Xi(r, b * S, u > 2 ? S : 0, S, S), h.setRenderTarget(r), v && h.render(g, a), h.render(e, a); + } + g.geometry.dispose(), g.material.dispose(), h.toneMapping = p, h.autoClear = d, e.background = f; + } + _textureToCubeUV(e, t) { + const n = this._renderer, r = e.mapping === Qn || e.mapping === ei; + r ? (this._cubemapMaterial === null && (this._cubemapMaterial = ba()), this._cubemapMaterial.uniforms.flipEnvMap.value = e.isRenderTargetTexture === !1 ? -1 : 1) : this._equirectMaterial === null && (this._equirectMaterial = Ta()); + const s = r ? this._cubemapMaterial : this._equirectMaterial, o = new Ot(this._lodPlanes[0], s), a = s.uniforms; + a.envMap.value = e; + const l = this._cubeSize; + Xi(t, 0, 0, 3 * l, 2 * l), n.setRenderTarget(t), n.render(o, Br); + } + _applyPMREM(e) { + const t = this._renderer, n = t.autoClear; + t.autoClear = !1; + for (let r = 1; r < this._lodPlanes.length; r++) { + const s = Math.sqrt(this._sigmas[r] * this._sigmas[r] - this._sigmas[r - 1] * this._sigmas[r - 1]), o = Sa[(r - 1) % Sa.length]; + this._blur(e, r - 1, r, s, o); + } + t.autoClear = n; + } + /** + * This is a two-pass Gaussian blur for a cubemap. Normally this is done + * vertically and horizontally, but this breaks down on a cube. Here we apply + * the blur latitudinally (around the poles), and then longitudinally (towards + * the poles) to approximate the orthogonally-separable blur. It is least + * accurate at the poles, but still does a decent job. + */ + _blur(e, t, n, r, s) { + const o = this._pingPongRenderTarget; + this._halfBlur( + e, + o, + t, + n, + r, + "latitudinal", + s + ), this._halfBlur( + o, + e, + n, + n, + r, + "longitudinal", + s + ); + } + _halfBlur(e, t, n, r, s, o, a) { + const l = this._renderer, c = this._blurMaterial; + o !== "latitudinal" && o !== "longitudinal" && console.error( + "blur direction must be either latitudinal or longitudinal!" + ); + const h = 3, d = new Ot(this._lodPlanes[r], c), p = c.uniforms, m = this._sizeLods[n] - 1, g = isFinite(s) ? Math.PI / (2 * m) : 2 * Math.PI / (2 * Sn - 1), v = s / g, f = isFinite(s) ? 1 + Math.floor(h * v) : Sn; + f > Sn && console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${f} samples when the maximum is set to ${Sn}`); + const u = []; + let b = 0; + for (let A = 0; A < Sn; ++A) { + const W = A / v, x = Math.exp(-W * W / 2); + u.push(x), A === 0 ? b += x : A < f && (b += 2 * x); + } + for (let A = 0; A < u.length; A++) + u[A] = u[A] / b; + p.envMap.value = e.texture, p.samples.value = f, p.weights.value = u, p.latitudinal.value = o === "latitudinal", a && (p.poleAxis.value = a); + const { _lodMax: S } = this; + p.dTheta.value = g, p.mipInt.value = S - n; + const R = this._sizeLods[r], D = 3 * R * (r > S - Kn ? r - S + Kn : 0), C = 4 * (this._cubeSize - R); + Xi(t, D, C, 3 * R, 2 * R), l.setRenderTarget(t), l.render(d, Br); + } +} +function rd(i) { + const e = [], t = [], n = []; + let r = i; + const s = i - Kn + 1 + xa.length; + for (let o = 0; o < s; o++) { + const a = Math.pow(2, r); + t.push(a); + let l = 1 / a; + o > i - Kn ? l = xa[o - i + Kn - 1] : o === 0 && (l = 0), n.push(l); + const c = 1 / (a - 2), h = -c, d = 1 + c, p = [h, h, d, h, d, d, h, h, d, d, h, d], m = 6, g = 6, v = 3, f = 2, u = 1, b = new Float32Array(v * g * m), S = new Float32Array(f * g * m), R = new Float32Array(u * g * m); + for (let C = 0; C < m; C++) { + const A = C % 3 * 2 / 3 - 1, W = C > 2 ? 0 : -1, x = [ + A, + W, + 0, + A + 2 / 3, + W, + 0, + A + 2 / 3, + W + 1, + 0, + A, + W, + 0, + A + 2 / 3, + W + 1, + 0, + A, + W + 1, + 0 + ]; + b.set(x, v * g * C), S.set(p, f * g * C); + const y = [C, C, C, C, C, C]; + R.set(y, u * g * C); + } + const D = new hn(); + D.setAttribute("position", new Bt(b, v)), D.setAttribute("uv", new Bt(S, f)), D.setAttribute("faceIndex", new Bt(R, u)), e.push(D), r > Kn && r--; + } + return { lodPlanes: e, sizeLods: t, sigmas: n }; +} +function ya(i, e, t) { + const n = new bn(i, e, t); + return n.texture.mapping = rr, n.texture.name = "PMREM.cubeUv", n.scissorTest = !0, n; +} +function Xi(i, e, t, n, r) { + i.viewport.set(e, t, n, r), i.scissor.set(e, t, n, r); +} +function sd(i, e, t) { + const n = new Float32Array(Sn), r = new P(0, 1, 0); + return new wn({ + name: "SphericalGaussianBlur", + defines: { + n: Sn, + CUBEUV_TEXEL_WIDTH: 1 / e, + CUBEUV_TEXEL_HEIGHT: 1 / t, + CUBEUV_MAX_MIP: `${i}.0` + }, + uniforms: { + envMap: { value: null }, + samples: { value: 1 }, + weights: { value: n }, + latitudinal: { value: !1 }, + dTheta: { value: 0 }, + mipInt: { value: 0 }, + poleAxis: { value: r } + }, + vertexShader: hs(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + ` + ), + blending: on, + depthTest: !1, + depthWrite: !1 + }); +} +function Ta() { + return new wn({ + name: "EquirectangularToCubeUV", + uniforms: { + envMap: { value: null } + }, + vertexShader: hs(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + ` + ), + blending: on, + depthTest: !1, + depthWrite: !1 + }); +} +function ba() { + return new wn({ + name: "CubemapToCubeUV", + uniforms: { + envMap: { value: null }, + flipEnvMap: { value: -1 } + }, + vertexShader: hs(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + ` + ), + blending: on, + depthTest: !1, + depthWrite: !1 + }); +} +function hs() { + return ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + ` + ); +} +function ad(i) { + let e = /* @__PURE__ */ new WeakMap(), t = null; + function n(a) { + if (a && a.isTexture) { + const l = a.mapping, c = l === $r || l === Jr, h = l === Qn || l === ei; + if (c || h) + if (a.isRenderTargetTexture && a.needsPMREMUpdate === !0) { + a.needsPMREMUpdate = !1; + let d = e.get(a); + return t === null && (t = new Ea(i)), d = c ? t.fromEquirectangular(a, d) : t.fromCubemap(a, d), e.set(a, d), d.texture; + } else { + if (e.has(a)) + return e.get(a).texture; + { + const d = a.image; + if (c && d && d.height > 0 || h && d && r(d)) { + t === null && (t = new Ea(i)); + const p = c ? t.fromEquirectangular(a) : t.fromCubemap(a); + return e.set(a, p), a.addEventListener("dispose", s), p.texture; + } else + return null; + } + } + } + return a; + } + function r(a) { + let l = 0; + const c = 6; + for (let h = 0; h < c; h++) + a[h] !== void 0 && l++; + return l === c; + } + function s(a) { + const l = a.target; + l.removeEventListener("dispose", s); + const c = e.get(l); + c !== void 0 && (e.delete(l), c.dispose()); + } + function o() { + e = /* @__PURE__ */ new WeakMap(), t !== null && (t.dispose(), t = null); + } + return { + get: n, + dispose: o + }; +} +function od(i) { + const e = {}; + function t(n) { + if (e[n] !== void 0) + return e[n]; + let r; + switch (n) { + case "WEBGL_depth_texture": + r = i.getExtension("WEBGL_depth_texture") || i.getExtension("MOZ_WEBGL_depth_texture") || i.getExtension("WEBKIT_WEBGL_depth_texture"); + break; + case "EXT_texture_filter_anisotropic": + r = i.getExtension("EXT_texture_filter_anisotropic") || i.getExtension("MOZ_EXT_texture_filter_anisotropic") || i.getExtension("WEBKIT_EXT_texture_filter_anisotropic"); + break; + case "WEBGL_compressed_texture_s3tc": + r = i.getExtension("WEBGL_compressed_texture_s3tc") || i.getExtension("MOZ_WEBGL_compressed_texture_s3tc") || i.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"); + break; + case "WEBGL_compressed_texture_pvrtc": + r = i.getExtension("WEBGL_compressed_texture_pvrtc") || i.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"); + break; + default: + r = i.getExtension(n); + } + return e[n] = r, r; + } + return { + has: function(n) { + return t(n) !== null; + }, + init: function(n) { + n.isWebGL2 ? (t("EXT_color_buffer_float"), t("WEBGL_clip_cull_distance")) : (t("WEBGL_depth_texture"), t("OES_texture_float"), t("OES_texture_half_float"), t("OES_texture_half_float_linear"), t("OES_standard_derivatives"), t("OES_element_index_uint"), t("OES_vertex_array_object"), t("ANGLE_instanced_arrays")), t("OES_texture_float_linear"), t("EXT_color_buffer_half_float"), t("WEBGL_multisampled_render_to_texture"); + }, + get: function(n) { + const r = t(n); + return r === null && console.warn("THREE.WebGLRenderer: " + n + " extension not supported."), r; + } + }; +} +function ld(i, e, t, n) { + const r = {}, s = /* @__PURE__ */ new WeakMap(); + function o(d) { + const p = d.target; + p.index !== null && e.remove(p.index); + for (const g in p.attributes) + e.remove(p.attributes[g]); + for (const g in p.morphAttributes) { + const v = p.morphAttributes[g]; + for (let f = 0, u = v.length; f < u; f++) + e.remove(v[f]); + } + p.removeEventListener("dispose", o), delete r[p.id]; + const m = s.get(p); + m && (e.remove(m), s.delete(p)), n.releaseStatesOfGeometry(p), p.isInstancedBufferGeometry === !0 && delete p._maxInstanceCount, t.memory.geometries--; + } + function a(d, p) { + return r[p.id] === !0 || (p.addEventListener("dispose", o), r[p.id] = !0, t.memory.geometries++), p; + } + function l(d) { + const p = d.attributes; + for (const g in p) + e.update(p[g], i.ARRAY_BUFFER); + const m = d.morphAttributes; + for (const g in m) { + const v = m[g]; + for (let f = 0, u = v.length; f < u; f++) + e.update(v[f], i.ARRAY_BUFFER); + } + } + function c(d) { + const p = [], m = d.index, g = d.attributes.position; + let v = 0; + if (m !== null) { + const b = m.array; + v = m.version; + for (let S = 0, R = b.length; S < R; S += 3) { + const D = b[S + 0], C = b[S + 1], A = b[S + 2]; + p.push(D, C, C, A, A, D); + } + } else if (g !== void 0) { + const b = g.array; + v = g.version; + for (let S = 0, R = b.length / 3 - 1; S < R; S += 3) { + const D = S + 0, C = S + 1, A = S + 2; + p.push(D, C, C, A, A, D); + } + } else + return; + const f = new (Mo(p) ? Ro : wo)(p, 1); + f.version = v; + const u = s.get(d); + u && e.remove(u), s.set(d, f); + } + function h(d) { + const p = s.get(d); + if (p) { + const m = d.index; + m !== null && p.version < m.version && c(d); + } else + c(d); + return s.get(d); + } + return { + get: a, + update: l, + getWireframeAttribute: h + }; +} +function cd(i, e, t, n) { + const r = n.isWebGL2; + let s; + function o(m) { + s = m; + } + let a, l; + function c(m) { + a = m.type, l = m.bytesPerElement; + } + function h(m, g) { + i.drawElements(s, g, a, m * l), t.update(g, s, 1); + } + function d(m, g, v) { + if (v === 0) return; + let f, u; + if (r) + f = i, u = "drawElementsInstanced"; + else if (f = e.get("ANGLE_instanced_arrays"), u = "drawElementsInstancedANGLE", f === null) { + console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."); + return; + } + f[u](s, g, a, m * l, v), t.update(g, s, v); + } + function p(m, g, v) { + if (v === 0) return; + const f = e.get("WEBGL_multi_draw"); + if (f === null) + for (let u = 0; u < v; u++) + this.render(m[u] / l, g[u]); + else { + f.multiDrawElementsWEBGL(s, g, 0, a, m, 0, v); + let u = 0; + for (let b = 0; b < v; b++) + u += g[b]; + t.update(u, s, 1); + } + } + this.setMode = o, this.setIndex = c, this.render = h, this.renderInstances = d, this.renderMultiDraw = p; +} +function ud(i) { + const e = { + geometries: 0, + textures: 0 + }, t = { + frame: 0, + calls: 0, + triangles: 0, + points: 0, + lines: 0 + }; + function n(s, o, a) { + switch (t.calls++, o) { + case i.TRIANGLES: + t.triangles += a * (s / 3); + break; + case i.LINES: + t.lines += a * (s / 2); + break; + case i.LINE_STRIP: + t.lines += a * (s - 1); + break; + case i.LINE_LOOP: + t.lines += a * s; + break; + case i.POINTS: + t.points += a * s; + break; + default: + console.error("THREE.WebGLInfo: Unknown draw mode:", o); + break; + } + } + function r() { + t.calls = 0, t.triangles = 0, t.points = 0, t.lines = 0; + } + return { + memory: e, + render: t, + programs: null, + autoReset: !0, + reset: r, + update: n + }; +} +function hd(i, e) { + return i[0] - e[0]; +} +function dd(i, e) { + return Math.abs(e[1]) - Math.abs(i[1]); +} +function fd(i, e, t) { + const n = {}, r = new Float32Array(8), s = /* @__PURE__ */ new WeakMap(), o = new $e(), a = []; + for (let c = 0; c < 8; c++) + a[c] = [c, 0]; + function l(c, h, d) { + const p = c.morphTargetInfluences; + if (e.isWebGL2 === !0) { + const m = h.morphAttributes.position || h.morphAttributes.normal || h.morphAttributes.color, g = m !== void 0 ? m.length : 0; + let v = s.get(h); + if (v === void 0 || v.count !== g) { + let L = function() { + Z.dispose(), s.delete(h), h.removeEventListener("dispose", L); + }; + v !== void 0 && v.texture.dispose(); + const b = h.morphAttributes.position !== void 0, S = h.morphAttributes.normal !== void 0, R = h.morphAttributes.color !== void 0, D = h.morphAttributes.position || [], C = h.morphAttributes.normal || [], A = h.morphAttributes.color || []; + let W = 0; + b === !0 && (W = 1), S === !0 && (W = 2), R === !0 && (W = 3); + let x = h.attributes.position.count * W, y = 1; + x > e.maxTextureSize && (y = Math.ceil(x / e.maxTextureSize), x = e.maxTextureSize); + const z = new Float32Array(x * y * 4 * g), Z = new yo(z, x, y, g); + Z.type = an, Z.needsUpdate = !0; + const re = W * 4; + for (let F = 0; F < g; F++) { + const V = D[F], Y = C[F], X = A[F], k = x * y * 4 * F; + for (let q = 0; q < V.count; q++) { + const Q = q * re; + b === !0 && (o.fromBufferAttribute(V, q), z[k + Q + 0] = o.x, z[k + Q + 1] = o.y, z[k + Q + 2] = o.z, z[k + Q + 3] = 0), S === !0 && (o.fromBufferAttribute(Y, q), z[k + Q + 4] = o.x, z[k + Q + 5] = o.y, z[k + Q + 6] = o.z, z[k + Q + 7] = 0), R === !0 && (o.fromBufferAttribute(X, q), z[k + Q + 8] = o.x, z[k + Q + 9] = o.y, z[k + Q + 10] = o.z, z[k + Q + 11] = X.itemSize === 4 ? o.w : 1); + } + } + v = { + count: g, + texture: Z, + size: new Ie(x, y) + }, s.set(h, v), h.addEventListener("dispose", L); + } + let f = 0; + for (let b = 0; b < p.length; b++) + f += p[b]; + const u = h.morphTargetsRelative ? 1 : 1 - f; + d.getUniforms().setValue(i, "morphTargetBaseInfluence", u), d.getUniforms().setValue(i, "morphTargetInfluences", p), d.getUniforms().setValue(i, "morphTargetsTexture", v.texture, t), d.getUniforms().setValue(i, "morphTargetsTextureSize", v.size); + } else { + const m = p === void 0 ? 0 : p.length; + let g = n[h.id]; + if (g === void 0 || g.length !== m) { + g = []; + for (let S = 0; S < m; S++) + g[S] = [S, 0]; + n[h.id] = g; + } + for (let S = 0; S < m; S++) { + const R = g[S]; + R[0] = S, R[1] = p[S]; + } + g.sort(dd); + for (let S = 0; S < 8; S++) + S < m && g[S][1] ? (a[S][0] = g[S][0], a[S][1] = g[S][1]) : (a[S][0] = Number.MAX_SAFE_INTEGER, a[S][1] = 0); + a.sort(hd); + const v = h.morphAttributes.position, f = h.morphAttributes.normal; + let u = 0; + for (let S = 0; S < 8; S++) { + const R = a[S], D = R[0], C = R[1]; + D !== Number.MAX_SAFE_INTEGER && C ? (v && h.getAttribute("morphTarget" + S) !== v[D] && h.setAttribute("morphTarget" + S, v[D]), f && h.getAttribute("morphNormal" + S) !== f[D] && h.setAttribute("morphNormal" + S, f[D]), r[S] = C, u += C) : (v && h.hasAttribute("morphTarget" + S) === !0 && h.deleteAttribute("morphTarget" + S), f && h.hasAttribute("morphNormal" + S) === !0 && h.deleteAttribute("morphNormal" + S), r[S] = 0); + } + const b = h.morphTargetsRelative ? 1 : 1 - u; + d.getUniforms().setValue(i, "morphTargetBaseInfluence", b), d.getUniforms().setValue(i, "morphTargetInfluences", r); + } + } + return { + update: l + }; +} +function pd(i, e, t, n) { + let r = /* @__PURE__ */ new WeakMap(); + function s(l) { + const c = n.render.frame, h = l.geometry, d = e.get(l, h); + if (r.get(d) !== c && (e.update(d), r.set(d, c)), l.isInstancedMesh && (l.hasEventListener("dispose", a) === !1 && l.addEventListener("dispose", a), r.get(l) !== c && (t.update(l.instanceMatrix, i.ARRAY_BUFFER), l.instanceColor !== null && t.update(l.instanceColor, i.ARRAY_BUFFER), r.set(l, c))), l.isSkinnedMesh) { + const p = l.skeleton; + r.get(p) !== c && (p.update(), r.set(p, c)); + } + return d; + } + function o() { + r = /* @__PURE__ */ new WeakMap(); + } + function a(l) { + const c = l.target; + c.removeEventListener("dispose", a), t.remove(c.instanceMatrix), c.instanceColor !== null && t.remove(c.instanceColor); + } + return { + update: s, + dispose: o + }; +} +class Io extends bt { + constructor(e, t, n, r, s, o, a, l, c, h) { + if (h = h !== void 0 ? h : yn, h !== yn && h !== ti) + throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat"); + n === void 0 && h === yn && (n = sn), n === void 0 && h === ti && (n = En), super(null, r, s, o, a, l, h, n, c), this.isDepthTexture = !0, this.image = { width: e, height: t }, this.magFilter = a !== void 0 ? a : gt, this.minFilter = l !== void 0 ? l : gt, this.flipY = !1, this.generateMipmaps = !1, this.compareFunction = null; + } + copy(e) { + return super.copy(e), this.compareFunction = e.compareFunction, this; + } + toJSON(e) { + const t = super.toJSON(e); + return this.compareFunction !== null && (t.compareFunction = this.compareFunction), t; + } +} +const No = /* @__PURE__ */ new bt(), Fo = /* @__PURE__ */ new Io(1, 1); +Fo.compareFunction = xo; +const Oo = /* @__PURE__ */ new yo(), Bo = /* @__PURE__ */ new Jl(), zo = /* @__PURE__ */ new Po(), Aa = [], wa = [], Ra = new Float32Array(16), Ca = new Float32Array(9), La = new Float32Array(4); +function ri(i, e, t) { + const n = i[0]; + if (n <= 0 || n > 0) return i; + const r = e * t; + let s = Aa[r]; + if (s === void 0 && (s = new Float32Array(r), Aa[r] = s), e !== 0) { + n.toArray(s, 0); + for (let o = 1, a = 0; o !== e; ++o) + a += t, i[o].toArray(s, a); + } + return s; +} +function ot(i, e) { + if (i.length !== e.length) return !1; + for (let t = 0, n = i.length; t < n; t++) + if (i[t] !== e[t]) return !1; + return !0; +} +function lt(i, e) { + for (let t = 0, n = e.length; t < n; t++) + i[t] = e[t]; +} +function or(i, e) { + let t = wa[e]; + t === void 0 && (t = new Int32Array(e), wa[e] = t); + for (let n = 0; n !== e; ++n) + t[n] = i.allocateTextureUnit(); + return t; +} +function md(i, e) { + const t = this.cache; + t[0] !== e && (i.uniform1f(this.addr, e), t[0] = e); +} +function _d(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y) && (i.uniform2f(this.addr, e.x, e.y), t[0] = e.x, t[1] = e.y); + else { + if (ot(t, e)) return; + i.uniform2fv(this.addr, e), lt(t, e); + } +} +function gd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z) && (i.uniform3f(this.addr, e.x, e.y, e.z), t[0] = e.x, t[1] = e.y, t[2] = e.z); + else if (e.r !== void 0) + (t[0] !== e.r || t[1] !== e.g || t[2] !== e.b) && (i.uniform3f(this.addr, e.r, e.g, e.b), t[0] = e.r, t[1] = e.g, t[2] = e.b); + else { + if (ot(t, e)) return; + i.uniform3fv(this.addr, e), lt(t, e); + } +} +function vd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z || t[3] !== e.w) && (i.uniform4f(this.addr, e.x, e.y, e.z, e.w), t[0] = e.x, t[1] = e.y, t[2] = e.z, t[3] = e.w); + else { + if (ot(t, e)) return; + i.uniform4fv(this.addr, e), lt(t, e); + } +} +function xd(i, e) { + const t = this.cache, n = e.elements; + if (n === void 0) { + if (ot(t, e)) return; + i.uniformMatrix2fv(this.addr, !1, e), lt(t, e); + } else { + if (ot(t, n)) return; + La.set(n), i.uniformMatrix2fv(this.addr, !1, La), lt(t, n); + } +} +function Md(i, e) { + const t = this.cache, n = e.elements; + if (n === void 0) { + if (ot(t, e)) return; + i.uniformMatrix3fv(this.addr, !1, e), lt(t, e); + } else { + if (ot(t, n)) return; + Ca.set(n), i.uniformMatrix3fv(this.addr, !1, Ca), lt(t, n); + } +} +function Sd(i, e) { + const t = this.cache, n = e.elements; + if (n === void 0) { + if (ot(t, e)) return; + i.uniformMatrix4fv(this.addr, !1, e), lt(t, e); + } else { + if (ot(t, n)) return; + Ra.set(n), i.uniformMatrix4fv(this.addr, !1, Ra), lt(t, n); + } +} +function Ed(i, e) { + const t = this.cache; + t[0] !== e && (i.uniform1i(this.addr, e), t[0] = e); +} +function yd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y) && (i.uniform2i(this.addr, e.x, e.y), t[0] = e.x, t[1] = e.y); + else { + if (ot(t, e)) return; + i.uniform2iv(this.addr, e), lt(t, e); + } +} +function Td(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z) && (i.uniform3i(this.addr, e.x, e.y, e.z), t[0] = e.x, t[1] = e.y, t[2] = e.z); + else { + if (ot(t, e)) return; + i.uniform3iv(this.addr, e), lt(t, e); + } +} +function bd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z || t[3] !== e.w) && (i.uniform4i(this.addr, e.x, e.y, e.z, e.w), t[0] = e.x, t[1] = e.y, t[2] = e.z, t[3] = e.w); + else { + if (ot(t, e)) return; + i.uniform4iv(this.addr, e), lt(t, e); + } +} +function Ad(i, e) { + const t = this.cache; + t[0] !== e && (i.uniform1ui(this.addr, e), t[0] = e); +} +function wd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y) && (i.uniform2ui(this.addr, e.x, e.y), t[0] = e.x, t[1] = e.y); + else { + if (ot(t, e)) return; + i.uniform2uiv(this.addr, e), lt(t, e); + } +} +function Rd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z) && (i.uniform3ui(this.addr, e.x, e.y, e.z), t[0] = e.x, t[1] = e.y, t[2] = e.z); + else { + if (ot(t, e)) return; + i.uniform3uiv(this.addr, e), lt(t, e); + } +} +function Cd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z || t[3] !== e.w) && (i.uniform4ui(this.addr, e.x, e.y, e.z, e.w), t[0] = e.x, t[1] = e.y, t[2] = e.z, t[3] = e.w); + else { + if (ot(t, e)) return; + i.uniform4uiv(this.addr, e), lt(t, e); + } +} +function Ld(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r); + const s = this.type === i.SAMPLER_2D_SHADOW ? Fo : No; + t.setTexture2D(e || s, r); +} +function Pd(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r), t.setTexture3D(e || Bo, r); +} +function Dd(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r), t.setTextureCube(e || zo, r); +} +function Ud(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r), t.setTexture2DArray(e || Oo, r); +} +function Id(i) { + switch (i) { + case 5126: + return md; + case 35664: + return _d; + case 35665: + return gd; + case 35666: + return vd; + case 35674: + return xd; + case 35675: + return Md; + case 35676: + return Sd; + case 5124: + case 35670: + return Ed; + case 35667: + case 35671: + return yd; + case 35668: + case 35672: + return Td; + case 35669: + case 35673: + return bd; + case 5125: + return Ad; + case 36294: + return wd; + case 36295: + return Rd; + case 36296: + return Cd; + case 35678: + case 36198: + case 36298: + case 36306: + case 35682: + return Ld; + case 35679: + case 36299: + case 36307: + return Pd; + case 35680: + case 36300: + case 36308: + case 36293: + return Dd; + case 36289: + case 36303: + case 36311: + case 36292: + return Ud; + } +} +function Nd(i, e) { + i.uniform1fv(this.addr, e); +} +function Fd(i, e) { + const t = ri(e, this.size, 2); + i.uniform2fv(this.addr, t); +} +function Od(i, e) { + const t = ri(e, this.size, 3); + i.uniform3fv(this.addr, t); +} +function Bd(i, e) { + const t = ri(e, this.size, 4); + i.uniform4fv(this.addr, t); +} +function zd(i, e) { + const t = ri(e, this.size, 4); + i.uniformMatrix2fv(this.addr, !1, t); +} +function Gd(i, e) { + const t = ri(e, this.size, 9); + i.uniformMatrix3fv(this.addr, !1, t); +} +function Hd(i, e) { + const t = ri(e, this.size, 16); + i.uniformMatrix4fv(this.addr, !1, t); +} +function Vd(i, e) { + i.uniform1iv(this.addr, e); +} +function kd(i, e) { + i.uniform2iv(this.addr, e); +} +function Wd(i, e) { + i.uniform3iv(this.addr, e); +} +function Xd(i, e) { + i.uniform4iv(this.addr, e); +} +function qd(i, e) { + i.uniform1uiv(this.addr, e); +} +function Yd(i, e) { + i.uniform2uiv(this.addr, e); +} +function jd(i, e) { + i.uniform3uiv(this.addr, e); +} +function Kd(i, e) { + i.uniform4uiv(this.addr, e); +} +function Zd(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTexture2D(e[o] || No, s[o]); +} +function $d(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTexture3D(e[o] || Bo, s[o]); +} +function Jd(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTextureCube(e[o] || zo, s[o]); +} +function Qd(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTexture2DArray(e[o] || Oo, s[o]); +} +function ef(i) { + switch (i) { + case 5126: + return Nd; + case 35664: + return Fd; + case 35665: + return Od; + case 35666: + return Bd; + case 35674: + return zd; + case 35675: + return Gd; + case 35676: + return Hd; + case 5124: + case 35670: + return Vd; + case 35667: + case 35671: + return kd; + case 35668: + case 35672: + return Wd; + case 35669: + case 35673: + return Xd; + case 5125: + return qd; + case 36294: + return Yd; + case 36295: + return jd; + case 36296: + return Kd; + case 35678: + case 36198: + case 36298: + case 36306: + case 35682: + return Zd; + case 35679: + case 36299: + case 36307: + return $d; + case 35680: + case 36300: + case 36308: + case 36293: + return Jd; + case 36289: + case 36303: + case 36311: + case 36292: + return Qd; + } +} +class tf { + constructor(e, t, n) { + this.id = e, this.addr = n, this.cache = [], this.type = t.type, this.setValue = Id(t.type); + } +} +class nf { + constructor(e, t, n) { + this.id = e, this.addr = n, this.cache = [], this.type = t.type, this.size = t.size, this.setValue = ef(t.type); + } +} +class rf { + constructor(e) { + this.id = e, this.seq = [], this.map = {}; + } + setValue(e, t, n) { + const r = this.seq; + for (let s = 0, o = r.length; s !== o; ++s) { + const a = r[s]; + a.setValue(e, t[a.id], n); + } + } +} +const Vr = /(\w+)(\])?(\[|\.)?/g; +function Pa(i, e) { + i.seq.push(e), i.map[e.id] = e; +} +function sf(i, e, t) { + const n = i.name, r = n.length; + for (Vr.lastIndex = 0; ; ) { + const s = Vr.exec(n), o = Vr.lastIndex; + let a = s[1]; + const l = s[2] === "]", c = s[3]; + if (l && (a = a | 0), c === void 0 || c === "[" && o + 2 === r) { + Pa(t, c === void 0 ? new tf(a, i, e) : new nf(a, i, e)); + break; + } else { + let d = t.map[a]; + d === void 0 && (d = new rf(a), Pa(t, d)), t = d; + } + } +} +class Zi { + constructor(e, t) { + this.seq = [], this.map = {}; + const n = e.getProgramParameter(t, e.ACTIVE_UNIFORMS); + for (let r = 0; r < n; ++r) { + const s = e.getActiveUniform(t, r), o = e.getUniformLocation(t, s.name); + sf(s, o, this); + } + } + setValue(e, t, n, r) { + const s = this.map[t]; + s !== void 0 && s.setValue(e, n, r); + } + setOptional(e, t, n) { + const r = t[n]; + r !== void 0 && this.setValue(e, n, r); + } + static upload(e, t, n, r) { + for (let s = 0, o = t.length; s !== o; ++s) { + const a = t[s], l = n[a.id]; + l.needsUpdate !== !1 && a.setValue(e, l.value, r); + } + } + static seqWithValue(e, t) { + const n = []; + for (let r = 0, s = e.length; r !== s; ++r) { + const o = e[r]; + o.id in t && n.push(o); + } + return n; + } +} +function Da(i, e, t) { + const n = i.createShader(e); + return i.shaderSource(n, t), i.compileShader(n), n; +} +const af = 37297; +let of = 0; +function lf(i, e) { + const t = i.split(` +`), n = [], r = Math.max(e - 6, 0), s = Math.min(e + 6, t.length); + for (let o = r; o < s; o++) { + const a = o + 1; + n.push(`${a === e ? ">" : " "} ${a}: ${t[o]}`); + } + return n.join(` +`); +} +function cf(i) { + const e = Ke.getPrimaries(Ke.workingColorSpace), t = Ke.getPrimaries(i); + let n; + switch (e === t ? n = "" : e === er && t === Qi ? n = "LinearDisplayP3ToLinearSRGB" : e === Qi && t === er && (n = "LinearSRGBToLinearDisplayP3"), i) { + case $t: + case sr: + return [n, "LinearTransferOETF"]; + case ht: + case os: + return [n, "sRGBTransferOETF"]; + default: + return console.warn("THREE.WebGLProgram: Unsupported color space:", i), [n, "LinearTransferOETF"]; + } +} +function Ua(i, e, t) { + const n = i.getShaderParameter(e, i.COMPILE_STATUS), r = i.getShaderInfoLog(e).trim(); + if (n && r === "") return ""; + const s = /ERROR: 0:(\d+)/.exec(r); + if (s) { + const o = parseInt(s[1]); + return t.toUpperCase() + ` + +` + r + ` + +` + lf(i.getShaderSource(e), o); + } else + return r; +} +function uf(i, e) { + const t = cf(e); + return `vec4 ${i}( vec4 value ) { return ${t[0]}( ${t[1]}( value ) ); }`; +} +function hf(i, e) { + let t; + switch (e) { + case Ml: + t = "Linear"; + break; + case Sl: + t = "Reinhard"; + break; + case El: + t = "OptimizedCineon"; + break; + case yl: + t = "ACESFilmic"; + break; + case bl: + t = "AgX"; + break; + case Tl: + t = "Custom"; + break; + default: + console.warn("THREE.WebGLProgram: Unsupported toneMapping:", e), t = "Linear"; + } + return "vec3 " + i + "( vec3 color ) { return " + t + "ToneMapping( color ); }"; +} +function df(i) { + return [ + i.extensionDerivatives || i.envMapCubeUVHeight || i.bumpMap || i.normalMapTangentSpace || i.clearcoatNormalMap || i.flatShading || i.shaderID === "physical" ? "#extension GL_OES_standard_derivatives : enable" : "", + (i.extensionFragDepth || i.logarithmicDepthBuffer) && i.rendererExtensionFragDepth ? "#extension GL_EXT_frag_depth : enable" : "", + i.extensionDrawBuffers && i.rendererExtensionDrawBuffers ? "#extension GL_EXT_draw_buffers : require" : "", + (i.extensionShaderTextureLOD || i.envMap || i.transmission) && i.rendererExtensionShaderTextureLod ? "#extension GL_EXT_shader_texture_lod : enable" : "" + ].filter(Zn).join(` +`); +} +function ff(i) { + return [ + i.extensionClipCullDistance ? "#extension GL_ANGLE_clip_cull_distance : require" : "" + ].filter(Zn).join(` +`); +} +function pf(i) { + const e = []; + for (const t in i) { + const n = i[t]; + n !== !1 && e.push("#define " + t + " " + n); + } + return e.join(` +`); +} +function mf(i, e) { + const t = {}, n = i.getProgramParameter(e, i.ACTIVE_ATTRIBUTES); + for (let r = 0; r < n; r++) { + const s = i.getActiveAttrib(e, r), o = s.name; + let a = 1; + s.type === i.FLOAT_MAT2 && (a = 2), s.type === i.FLOAT_MAT3 && (a = 3), s.type === i.FLOAT_MAT4 && (a = 4), t[o] = { + type: s.type, + location: i.getAttribLocation(e, o), + locationSize: a + }; + } + return t; +} +function Zn(i) { + return i !== ""; +} +function Ia(i, e) { + const t = e.numSpotLightShadows + e.numSpotLightMaps - e.numSpotLightShadowsWithMaps; + return i.replace(/NUM_DIR_LIGHTS/g, e.numDirLights).replace(/NUM_SPOT_LIGHTS/g, e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g, e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g, t).replace(/NUM_RECT_AREA_LIGHTS/g, e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, e.numPointLights).replace(/NUM_HEMI_LIGHTS/g, e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g, e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, e.numPointLightShadows); +} +function Na(i, e) { + return i.replace(/NUM_CLIPPING_PLANES/g, e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, e.numClippingPlanes - e.numClipIntersection); +} +const _f = /^[ \t]*#include +<([\w\d./]+)>/gm; +function rs(i) { + return i.replace(_f, vf); +} +const gf = /* @__PURE__ */ new Map([ + ["encodings_fragment", "colorspace_fragment"], + // @deprecated, r154 + ["encodings_pars_fragment", "colorspace_pars_fragment"], + // @deprecated, r154 + ["output_fragment", "opaque_fragment"] + // @deprecated, r154 +]); +function vf(i, e) { + let t = Be[e]; + if (t === void 0) { + const n = gf.get(e); + if (n !== void 0) + t = Be[n], console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', e, n); + else + throw new Error("Can not resolve #include <" + e + ">"); + } + return rs(t); +} +const xf = /#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g; +function Fa(i) { + return i.replace(xf, Mf); +} +function Mf(i, e, t, n) { + let r = ""; + for (let s = parseInt(e); s < parseInt(t); s++) + r += n.replace(/\[\s*i\s*\]/g, "[ " + s + " ]").replace(/UNROLLED_LOOP_INDEX/g, s); + return r; +} +function Oa(i) { + let e = "precision " + i.precision + ` float; +precision ` + i.precision + " int;"; + return i.precision === "highp" ? e += ` +#define HIGH_PRECISION` : i.precision === "mediump" ? e += ` +#define MEDIUM_PRECISION` : i.precision === "lowp" && (e += ` +#define LOW_PRECISION`), e; +} +function Sf(i) { + let e = "SHADOWMAP_TYPE_BASIC"; + return i.shadowMapType === so ? e = "SHADOWMAP_TYPE_PCF" : i.shadowMapType === ao ? e = "SHADOWMAP_TYPE_PCF_SOFT" : i.shadowMapType === jt && (e = "SHADOWMAP_TYPE_VSM"), e; +} +function Ef(i) { + let e = "ENVMAP_TYPE_CUBE"; + if (i.envMap) + switch (i.envMapMode) { + case Qn: + case ei: + e = "ENVMAP_TYPE_CUBE"; + break; + case rr: + e = "ENVMAP_TYPE_CUBE_UV"; + break; + } + return e; +} +function yf(i) { + let e = "ENVMAP_MODE_REFLECTION"; + if (i.envMap) + switch (i.envMapMode) { + case ei: + e = "ENVMAP_MODE_REFRACTION"; + break; + } + return e; +} +function Tf(i) { + let e = "ENVMAP_BLENDING_NONE"; + if (i.envMap) + switch (i.combine) { + case oo: + e = "ENVMAP_BLENDING_MULTIPLY"; + break; + case vl: + e = "ENVMAP_BLENDING_MIX"; + break; + case xl: + e = "ENVMAP_BLENDING_ADD"; + break; + } + return e; +} +function bf(i) { + const e = i.envMapCubeUVHeight; + if (e === null) return null; + const t = Math.log2(e) - 2, n = 1 / e; + return { texelWidth: 1 / (3 * Math.max(Math.pow(2, t), 7 * 16)), texelHeight: n, maxMip: t }; +} +function Af(i, e, t, n) { + const r = i.getContext(), s = t.defines; + let o = t.vertexShader, a = t.fragmentShader; + const l = Sf(t), c = Ef(t), h = yf(t), d = Tf(t), p = bf(t), m = t.isWebGL2 ? "" : df(t), g = ff(t), v = pf(s), f = r.createProgram(); + let u, b, S = t.glslVersion ? "#version " + t.glslVersion + ` +` : ""; + t.isRawShaderMaterial ? (u = [ + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v + ].filter(Zn).join(` +`), u.length > 0 && (u += ` +`), b = [ + m, + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v + ].filter(Zn).join(` +`), b.length > 0 && (b += ` +`)) : (u = [ + Oa(t), + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v, + t.extensionClipCullDistance ? "#define USE_CLIP_DISTANCE" : "", + t.batching ? "#define USE_BATCHING" : "", + t.instancing ? "#define USE_INSTANCING" : "", + t.instancingColor ? "#define USE_INSTANCING_COLOR" : "", + t.useFog && t.fog ? "#define USE_FOG" : "", + t.useFog && t.fogExp2 ? "#define FOG_EXP2" : "", + t.map ? "#define USE_MAP" : "", + t.envMap ? "#define USE_ENVMAP" : "", + t.envMap ? "#define " + h : "", + t.lightMap ? "#define USE_LIGHTMAP" : "", + t.aoMap ? "#define USE_AOMAP" : "", + t.bumpMap ? "#define USE_BUMPMAP" : "", + t.normalMap ? "#define USE_NORMALMAP" : "", + t.normalMapObjectSpace ? "#define USE_NORMALMAP_OBJECTSPACE" : "", + t.normalMapTangentSpace ? "#define USE_NORMALMAP_TANGENTSPACE" : "", + t.displacementMap ? "#define USE_DISPLACEMENTMAP" : "", + t.emissiveMap ? "#define USE_EMISSIVEMAP" : "", + t.anisotropy ? "#define USE_ANISOTROPY" : "", + t.anisotropyMap ? "#define USE_ANISOTROPYMAP" : "", + t.clearcoatMap ? "#define USE_CLEARCOATMAP" : "", + t.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "", + t.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", + t.iridescenceMap ? "#define USE_IRIDESCENCEMAP" : "", + t.iridescenceThicknessMap ? "#define USE_IRIDESCENCE_THICKNESSMAP" : "", + t.specularMap ? "#define USE_SPECULARMAP" : "", + t.specularColorMap ? "#define USE_SPECULAR_COLORMAP" : "", + t.specularIntensityMap ? "#define USE_SPECULAR_INTENSITYMAP" : "", + t.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", + t.metalnessMap ? "#define USE_METALNESSMAP" : "", + t.alphaMap ? "#define USE_ALPHAMAP" : "", + t.alphaHash ? "#define USE_ALPHAHASH" : "", + t.transmission ? "#define USE_TRANSMISSION" : "", + t.transmissionMap ? "#define USE_TRANSMISSIONMAP" : "", + t.thicknessMap ? "#define USE_THICKNESSMAP" : "", + t.sheenColorMap ? "#define USE_SHEEN_COLORMAP" : "", + t.sheenRoughnessMap ? "#define USE_SHEEN_ROUGHNESSMAP" : "", + // + t.mapUv ? "#define MAP_UV " + t.mapUv : "", + t.alphaMapUv ? "#define ALPHAMAP_UV " + t.alphaMapUv : "", + t.lightMapUv ? "#define LIGHTMAP_UV " + t.lightMapUv : "", + t.aoMapUv ? "#define AOMAP_UV " + t.aoMapUv : "", + t.emissiveMapUv ? "#define EMISSIVEMAP_UV " + t.emissiveMapUv : "", + t.bumpMapUv ? "#define BUMPMAP_UV " + t.bumpMapUv : "", + t.normalMapUv ? "#define NORMALMAP_UV " + t.normalMapUv : "", + t.displacementMapUv ? "#define DISPLACEMENTMAP_UV " + t.displacementMapUv : "", + t.metalnessMapUv ? "#define METALNESSMAP_UV " + t.metalnessMapUv : "", + t.roughnessMapUv ? "#define ROUGHNESSMAP_UV " + t.roughnessMapUv : "", + t.anisotropyMapUv ? "#define ANISOTROPYMAP_UV " + t.anisotropyMapUv : "", + t.clearcoatMapUv ? "#define CLEARCOATMAP_UV " + t.clearcoatMapUv : "", + t.clearcoatNormalMapUv ? "#define CLEARCOAT_NORMALMAP_UV " + t.clearcoatNormalMapUv : "", + t.clearcoatRoughnessMapUv ? "#define CLEARCOAT_ROUGHNESSMAP_UV " + t.clearcoatRoughnessMapUv : "", + t.iridescenceMapUv ? "#define IRIDESCENCEMAP_UV " + t.iridescenceMapUv : "", + t.iridescenceThicknessMapUv ? "#define IRIDESCENCE_THICKNESSMAP_UV " + t.iridescenceThicknessMapUv : "", + t.sheenColorMapUv ? "#define SHEEN_COLORMAP_UV " + t.sheenColorMapUv : "", + t.sheenRoughnessMapUv ? "#define SHEEN_ROUGHNESSMAP_UV " + t.sheenRoughnessMapUv : "", + t.specularMapUv ? "#define SPECULARMAP_UV " + t.specularMapUv : "", + t.specularColorMapUv ? "#define SPECULAR_COLORMAP_UV " + t.specularColorMapUv : "", + t.specularIntensityMapUv ? "#define SPECULAR_INTENSITYMAP_UV " + t.specularIntensityMapUv : "", + t.transmissionMapUv ? "#define TRANSMISSIONMAP_UV " + t.transmissionMapUv : "", + t.thicknessMapUv ? "#define THICKNESSMAP_UV " + t.thicknessMapUv : "", + // + t.vertexTangents && t.flatShading === !1 ? "#define USE_TANGENT" : "", + t.vertexColors ? "#define USE_COLOR" : "", + t.vertexAlphas ? "#define USE_COLOR_ALPHA" : "", + t.vertexUv1s ? "#define USE_UV1" : "", + t.vertexUv2s ? "#define USE_UV2" : "", + t.vertexUv3s ? "#define USE_UV3" : "", + t.pointsUvs ? "#define USE_POINTS_UV" : "", + t.flatShading ? "#define FLAT_SHADED" : "", + t.skinning ? "#define USE_SKINNING" : "", + t.morphTargets ? "#define USE_MORPHTARGETS" : "", + t.morphNormals && t.flatShading === !1 ? "#define USE_MORPHNORMALS" : "", + t.morphColors && t.isWebGL2 ? "#define USE_MORPHCOLORS" : "", + t.morphTargetsCount > 0 && t.isWebGL2 ? "#define MORPHTARGETS_TEXTURE" : "", + t.morphTargetsCount > 0 && t.isWebGL2 ? "#define MORPHTARGETS_TEXTURE_STRIDE " + t.morphTextureStride : "", + t.morphTargetsCount > 0 && t.isWebGL2 ? "#define MORPHTARGETS_COUNT " + t.morphTargetsCount : "", + t.doubleSided ? "#define DOUBLE_SIDED" : "", + t.flipSided ? "#define FLIP_SIDED" : "", + t.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", + t.shadowMapEnabled ? "#define " + l : "", + t.sizeAttenuation ? "#define USE_SIZEATTENUATION" : "", + t.numLightProbes > 0 ? "#define USE_LIGHT_PROBES" : "", + t.useLegacyLights ? "#define LEGACY_LIGHTS" : "", + t.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", + t.logarithmicDepthBuffer && t.rendererExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "", + "uniform mat4 modelMatrix;", + "uniform mat4 modelViewMatrix;", + "uniform mat4 projectionMatrix;", + "uniform mat4 viewMatrix;", + "uniform mat3 normalMatrix;", + "uniform vec3 cameraPosition;", + "uniform bool isOrthographic;", + "#ifdef USE_INSTANCING", + " attribute mat4 instanceMatrix;", + "#endif", + "#ifdef USE_INSTANCING_COLOR", + " attribute vec3 instanceColor;", + "#endif", + "attribute vec3 position;", + "attribute vec3 normal;", + "attribute vec2 uv;", + "#ifdef USE_UV1", + " attribute vec2 uv1;", + "#endif", + "#ifdef USE_UV2", + " attribute vec2 uv2;", + "#endif", + "#ifdef USE_UV3", + " attribute vec2 uv3;", + "#endif", + "#ifdef USE_TANGENT", + " attribute vec4 tangent;", + "#endif", + "#if defined( USE_COLOR_ALPHA )", + " attribute vec4 color;", + "#elif defined( USE_COLOR )", + " attribute vec3 color;", + "#endif", + "#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )", + " attribute vec3 morphTarget0;", + " attribute vec3 morphTarget1;", + " attribute vec3 morphTarget2;", + " attribute vec3 morphTarget3;", + " #ifdef USE_MORPHNORMALS", + " attribute vec3 morphNormal0;", + " attribute vec3 morphNormal1;", + " attribute vec3 morphNormal2;", + " attribute vec3 morphNormal3;", + " #else", + " attribute vec3 morphTarget4;", + " attribute vec3 morphTarget5;", + " attribute vec3 morphTarget6;", + " attribute vec3 morphTarget7;", + " #endif", + "#endif", + "#ifdef USE_SKINNING", + " attribute vec4 skinIndex;", + " attribute vec4 skinWeight;", + "#endif", + ` +` + ].filter(Zn).join(` +`), b = [ + m, + Oa(t), + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v, + t.useFog && t.fog ? "#define USE_FOG" : "", + t.useFog && t.fogExp2 ? "#define FOG_EXP2" : "", + t.map ? "#define USE_MAP" : "", + t.matcap ? "#define USE_MATCAP" : "", + t.envMap ? "#define USE_ENVMAP" : "", + t.envMap ? "#define " + c : "", + t.envMap ? "#define " + h : "", + t.envMap ? "#define " + d : "", + p ? "#define CUBEUV_TEXEL_WIDTH " + p.texelWidth : "", + p ? "#define CUBEUV_TEXEL_HEIGHT " + p.texelHeight : "", + p ? "#define CUBEUV_MAX_MIP " + p.maxMip + ".0" : "", + t.lightMap ? "#define USE_LIGHTMAP" : "", + t.aoMap ? "#define USE_AOMAP" : "", + t.bumpMap ? "#define USE_BUMPMAP" : "", + t.normalMap ? "#define USE_NORMALMAP" : "", + t.normalMapObjectSpace ? "#define USE_NORMALMAP_OBJECTSPACE" : "", + t.normalMapTangentSpace ? "#define USE_NORMALMAP_TANGENTSPACE" : "", + t.emissiveMap ? "#define USE_EMISSIVEMAP" : "", + t.anisotropy ? "#define USE_ANISOTROPY" : "", + t.anisotropyMap ? "#define USE_ANISOTROPYMAP" : "", + t.clearcoat ? "#define USE_CLEARCOAT" : "", + t.clearcoatMap ? "#define USE_CLEARCOATMAP" : "", + t.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "", + t.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", + t.iridescence ? "#define USE_IRIDESCENCE" : "", + t.iridescenceMap ? "#define USE_IRIDESCENCEMAP" : "", + t.iridescenceThicknessMap ? "#define USE_IRIDESCENCE_THICKNESSMAP" : "", + t.specularMap ? "#define USE_SPECULARMAP" : "", + t.specularColorMap ? "#define USE_SPECULAR_COLORMAP" : "", + t.specularIntensityMap ? "#define USE_SPECULAR_INTENSITYMAP" : "", + t.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", + t.metalnessMap ? "#define USE_METALNESSMAP" : "", + t.alphaMap ? "#define USE_ALPHAMAP" : "", + t.alphaTest ? "#define USE_ALPHATEST" : "", + t.alphaHash ? "#define USE_ALPHAHASH" : "", + t.sheen ? "#define USE_SHEEN" : "", + t.sheenColorMap ? "#define USE_SHEEN_COLORMAP" : "", + t.sheenRoughnessMap ? "#define USE_SHEEN_ROUGHNESSMAP" : "", + t.transmission ? "#define USE_TRANSMISSION" : "", + t.transmissionMap ? "#define USE_TRANSMISSIONMAP" : "", + t.thicknessMap ? "#define USE_THICKNESSMAP" : "", + t.vertexTangents && t.flatShading === !1 ? "#define USE_TANGENT" : "", + t.vertexColors || t.instancingColor ? "#define USE_COLOR" : "", + t.vertexAlphas ? "#define USE_COLOR_ALPHA" : "", + t.vertexUv1s ? "#define USE_UV1" : "", + t.vertexUv2s ? "#define USE_UV2" : "", + t.vertexUv3s ? "#define USE_UV3" : "", + t.pointsUvs ? "#define USE_POINTS_UV" : "", + t.gradientMap ? "#define USE_GRADIENTMAP" : "", + t.flatShading ? "#define FLAT_SHADED" : "", + t.doubleSided ? "#define DOUBLE_SIDED" : "", + t.flipSided ? "#define FLIP_SIDED" : "", + t.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", + t.shadowMapEnabled ? "#define " + l : "", + t.premultipliedAlpha ? "#define PREMULTIPLIED_ALPHA" : "", + t.numLightProbes > 0 ? "#define USE_LIGHT_PROBES" : "", + t.useLegacyLights ? "#define LEGACY_LIGHTS" : "", + t.decodeVideoTexture ? "#define DECODE_VIDEO_TEXTURE" : "", + t.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", + t.logarithmicDepthBuffer && t.rendererExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "", + "uniform mat4 viewMatrix;", + "uniform vec3 cameraPosition;", + "uniform bool isOrthographic;", + t.toneMapping !== ln ? "#define TONE_MAPPING" : "", + t.toneMapping !== ln ? Be.tonemapping_pars_fragment : "", + // this code is required here because it is used by the toneMapping() function defined below + t.toneMapping !== ln ? hf("toneMapping", t.toneMapping) : "", + t.dithering ? "#define DITHERING" : "", + t.opaque ? "#define OPAQUE" : "", + Be.colorspace_pars_fragment, + // this code is required here because it is used by the various encoding/decoding function defined below + uf("linearToOutputTexel", t.outputColorSpace), + t.useDepthPacking ? "#define DEPTH_PACKING " + t.depthPacking : "", + ` +` + ].filter(Zn).join(` +`)), o = rs(o), o = Ia(o, t), o = Na(o, t), a = rs(a), a = Ia(a, t), a = Na(a, t), o = Fa(o), a = Fa(a), t.isWebGL2 && t.isRawShaderMaterial !== !0 && (S = `#version 300 es +`, u = [ + g, + "precision mediump sampler2DArray;", + "#define attribute in", + "#define varying out", + "#define texture2D texture" + ].join(` +`) + ` +` + u, b = [ + "precision mediump sampler2DArray;", + "#define varying in", + t.glslVersion === ta ? "" : "layout(location = 0) out highp vec4 pc_fragColor;", + t.glslVersion === ta ? "" : "#define gl_FragColor pc_fragColor", + "#define gl_FragDepthEXT gl_FragDepth", + "#define texture2D texture", + "#define textureCube texture", + "#define texture2DProj textureProj", + "#define texture2DLodEXT textureLod", + "#define texture2DProjLodEXT textureProjLod", + "#define textureCubeLodEXT textureLod", + "#define texture2DGradEXT textureGrad", + "#define texture2DProjGradEXT textureProjGrad", + "#define textureCubeGradEXT textureGrad" + ].join(` +`) + ` +` + b); + const R = S + u + o, D = S + b + a, C = Da(r, r.VERTEX_SHADER, R), A = Da(r, r.FRAGMENT_SHADER, D); + r.attachShader(f, C), r.attachShader(f, A), t.index0AttributeName !== void 0 ? r.bindAttribLocation(f, 0, t.index0AttributeName) : t.morphTargets === !0 && r.bindAttribLocation(f, 0, "position"), r.linkProgram(f); + function W(Z) { + if (i.debug.checkShaderErrors) { + const re = r.getProgramInfoLog(f).trim(), L = r.getShaderInfoLog(C).trim(), F = r.getShaderInfoLog(A).trim(); + let V = !0, Y = !0; + if (r.getProgramParameter(f, r.LINK_STATUS) === !1) + if (V = !1, typeof i.debug.onShaderError == "function") + i.debug.onShaderError(r, f, C, A); + else { + const X = Ua(r, C, "vertex"), k = Ua(r, A, "fragment"); + console.error( + "THREE.WebGLProgram: Shader Error " + r.getError() + " - VALIDATE_STATUS " + r.getProgramParameter(f, r.VALIDATE_STATUS) + ` + +Program Info Log: ` + re + ` +` + X + ` +` + k + ); + } + else re !== "" ? console.warn("THREE.WebGLProgram: Program Info Log:", re) : (L === "" || F === "") && (Y = !1); + Y && (Z.diagnostics = { + runnable: V, + programLog: re, + vertexShader: { + log: L, + prefix: u + }, + fragmentShader: { + log: F, + prefix: b + } + }); + } + r.deleteShader(C), r.deleteShader(A), x = new Zi(r, f), y = mf(r, f); + } + let x; + this.getUniforms = function() { + return x === void 0 && W(this), x; + }; + let y; + this.getAttributes = function() { + return y === void 0 && W(this), y; + }; + let z = t.rendererExtensionParallelShaderCompile === !1; + return this.isReady = function() { + return z === !1 && (z = r.getProgramParameter(f, af)), z; + }, this.destroy = function() { + n.releaseStatesOfProgram(this), r.deleteProgram(f), this.program = void 0; + }, this.type = t.shaderType, this.name = t.shaderName, this.id = of++, this.cacheKey = e, this.usedTimes = 1, this.program = f, this.vertexShader = C, this.fragmentShader = A, this; +} +let wf = 0; +class Rf { + constructor() { + this.shaderCache = /* @__PURE__ */ new Map(), this.materialCache = /* @__PURE__ */ new Map(); + } + update(e) { + const t = e.vertexShader, n = e.fragmentShader, r = this._getShaderStage(t), s = this._getShaderStage(n), o = this._getShaderCacheForMaterial(e); + return o.has(r) === !1 && (o.add(r), r.usedTimes++), o.has(s) === !1 && (o.add(s), s.usedTimes++), this; + } + remove(e) { + const t = this.materialCache.get(e); + for (const n of t) + n.usedTimes--, n.usedTimes === 0 && this.shaderCache.delete(n.code); + return this.materialCache.delete(e), this; + } + getVertexShaderID(e) { + return this._getShaderStage(e.vertexShader).id; + } + getFragmentShaderID(e) { + return this._getShaderStage(e.fragmentShader).id; + } + dispose() { + this.shaderCache.clear(), this.materialCache.clear(); + } + _getShaderCacheForMaterial(e) { + const t = this.materialCache; + let n = t.get(e); + return n === void 0 && (n = /* @__PURE__ */ new Set(), t.set(e, n)), n; + } + _getShaderStage(e) { + const t = this.shaderCache; + let n = t.get(e); + return n === void 0 && (n = new Cf(e), t.set(e, n)), n; + } +} +class Cf { + constructor(e) { + this.id = wf++, this.code = e, this.usedTimes = 0; + } +} +function Lf(i, e, t, n, r, s, o) { + const a = new bo(), l = new Rf(), c = [], h = r.isWebGL2, d = r.logarithmicDepthBuffer, p = r.vertexTextures; + let m = r.precision; + const g = { + MeshDepthMaterial: "depth", + MeshDistanceMaterial: "distanceRGBA", + MeshNormalMaterial: "normal", + MeshBasicMaterial: "basic", + MeshLambertMaterial: "lambert", + MeshPhongMaterial: "phong", + MeshToonMaterial: "toon", + MeshStandardMaterial: "physical", + MeshPhysicalMaterial: "physical", + MeshMatcapMaterial: "matcap", + LineBasicMaterial: "basic", + LineDashedMaterial: "dashed", + PointsMaterial: "points", + ShadowMaterial: "shadow", + SpriteMaterial: "sprite" + }; + function v(x) { + return x === 0 ? "uv" : `uv${x}`; + } + function f(x, y, z, Z, re) { + const L = Z.fog, F = re.geometry, V = x.isMeshStandardMaterial ? Z.environment : null, Y = (x.isMeshStandardMaterial ? t : e).get(x.envMap || V), X = Y && Y.mapping === rr ? Y.image.height : null, k = g[x.type]; + x.precision !== null && (m = r.getMaxPrecision(x.precision), m !== x.precision && console.warn("THREE.WebGLProgram.getParameters:", x.precision, "not supported, using", m, "instead.")); + const q = F.morphAttributes.position || F.morphAttributes.normal || F.morphAttributes.color, Q = q !== void 0 ? q.length : 0; + let ce = 0; + F.morphAttributes.position !== void 0 && (ce = 1), F.morphAttributes.normal !== void 0 && (ce = 2), F.morphAttributes.color !== void 0 && (ce = 3); + let H, j, oe, ve; + if (k) { + const nt = Gt[k]; + H = nt.vertexShader, j = nt.fragmentShader; + } else + H = x.vertexShader, j = x.fragmentShader, l.update(x), oe = l.getVertexShaderID(x), ve = l.getFragmentShaderID(x); + const _e = i.getRenderTarget(), we = re.isInstancedMesh === !0, Ae = re.isBatchedMesh === !0, ge = !!x.map, Pe = !!x.matcap, N = !!Y, rt = !!x.aoMap, Me = !!x.lightMap, Re = !!x.bumpMap, pe = !!x.normalMap, je = !!x.displacementMap, be = !!x.emissiveMap, M = !!x.metalnessMap, _ = !!x.roughnessMap, I = x.anisotropy > 0, $ = x.clearcoat > 0, K = x.iridescence > 0, J = x.sheen > 0, me = x.transmission > 0, ae = I && !!x.anisotropyMap, he = $ && !!x.clearcoatMap, ye = $ && !!x.clearcoatNormalMap, Fe = $ && !!x.clearcoatRoughnessMap, ee = K && !!x.iridescenceMap, Ye = K && !!x.iridescenceThicknessMap, ze = J && !!x.sheenColorMap, De = J && !!x.sheenRoughnessMap, Ee = !!x.specularMap, ue = !!x.specularColorMap, T = !!x.specularIntensityMap, ne = me && !!x.transmissionMap, xe = me && !!x.thicknessMap, fe = !!x.gradientMap, te = !!x.alphaMap, w = x.alphaTest > 0, ie = !!x.alphaHash, le = !!x.extensions, Ce = !!F.attributes.uv1, Te = !!F.attributes.uv2, ke = !!F.attributes.uv3; + let We = ln; + return x.toneMapped && (_e === null || _e.isXRRenderTarget === !0) && (We = i.toneMapping), { + isWebGL2: h, + shaderID: k, + shaderType: x.type, + shaderName: x.name, + vertexShader: H, + fragmentShader: j, + defines: x.defines, + customVertexShaderID: oe, + customFragmentShaderID: ve, + isRawShaderMaterial: x.isRawShaderMaterial === !0, + glslVersion: x.glslVersion, + precision: m, + batching: Ae, + instancing: we, + instancingColor: we && re.instanceColor !== null, + supportsVertexTextures: p, + outputColorSpace: _e === null ? i.outputColorSpace : _e.isXRRenderTarget === !0 ? _e.texture.colorSpace : $t, + map: ge, + matcap: Pe, + envMap: N, + envMapMode: N && Y.mapping, + envMapCubeUVHeight: X, + aoMap: rt, + lightMap: Me, + bumpMap: Re, + normalMap: pe, + displacementMap: p && je, + emissiveMap: be, + normalMapObjectSpace: pe && x.normalMapType === Ol, + normalMapTangentSpace: pe && x.normalMapType === vo, + metalnessMap: M, + roughnessMap: _, + anisotropy: I, + anisotropyMap: ae, + clearcoat: $, + clearcoatMap: he, + clearcoatNormalMap: ye, + clearcoatRoughnessMap: Fe, + iridescence: K, + iridescenceMap: ee, + iridescenceThicknessMap: Ye, + sheen: J, + sheenColorMap: ze, + sheenRoughnessMap: De, + specularMap: Ee, + specularColorMap: ue, + specularIntensityMap: T, + transmission: me, + transmissionMap: ne, + thicknessMap: xe, + gradientMap: fe, + opaque: x.transparent === !1 && x.blending === $n, + alphaMap: te, + alphaTest: w, + alphaHash: ie, + combine: x.combine, + // + mapUv: ge && v(x.map.channel), + aoMapUv: rt && v(x.aoMap.channel), + lightMapUv: Me && v(x.lightMap.channel), + bumpMapUv: Re && v(x.bumpMap.channel), + normalMapUv: pe && v(x.normalMap.channel), + displacementMapUv: je && v(x.displacementMap.channel), + emissiveMapUv: be && v(x.emissiveMap.channel), + metalnessMapUv: M && v(x.metalnessMap.channel), + roughnessMapUv: _ && v(x.roughnessMap.channel), + anisotropyMapUv: ae && v(x.anisotropyMap.channel), + clearcoatMapUv: he && v(x.clearcoatMap.channel), + clearcoatNormalMapUv: ye && v(x.clearcoatNormalMap.channel), + clearcoatRoughnessMapUv: Fe && v(x.clearcoatRoughnessMap.channel), + iridescenceMapUv: ee && v(x.iridescenceMap.channel), + iridescenceThicknessMapUv: Ye && v(x.iridescenceThicknessMap.channel), + sheenColorMapUv: ze && v(x.sheenColorMap.channel), + sheenRoughnessMapUv: De && v(x.sheenRoughnessMap.channel), + specularMapUv: Ee && v(x.specularMap.channel), + specularColorMapUv: ue && v(x.specularColorMap.channel), + specularIntensityMapUv: T && v(x.specularIntensityMap.channel), + transmissionMapUv: ne && v(x.transmissionMap.channel), + thicknessMapUv: xe && v(x.thicknessMap.channel), + alphaMapUv: te && v(x.alphaMap.channel), + // + vertexTangents: !!F.attributes.tangent && (pe || I), + vertexColors: x.vertexColors, + vertexAlphas: x.vertexColors === !0 && !!F.attributes.color && F.attributes.color.itemSize === 4, + vertexUv1s: Ce, + vertexUv2s: Te, + vertexUv3s: ke, + pointsUvs: re.isPoints === !0 && !!F.attributes.uv && (ge || te), + fog: !!L, + useFog: x.fog === !0, + fogExp2: L && L.isFogExp2, + flatShading: x.flatShading === !0, + sizeAttenuation: x.sizeAttenuation === !0, + logarithmicDepthBuffer: d, + skinning: re.isSkinnedMesh === !0, + morphTargets: F.morphAttributes.position !== void 0, + morphNormals: F.morphAttributes.normal !== void 0, + morphColors: F.morphAttributes.color !== void 0, + morphTargetsCount: Q, + morphTextureStride: ce, + numDirLights: y.directional.length, + numPointLights: y.point.length, + numSpotLights: y.spot.length, + numSpotLightMaps: y.spotLightMap.length, + numRectAreaLights: y.rectArea.length, + numHemiLights: y.hemi.length, + numDirLightShadows: y.directionalShadowMap.length, + numPointLightShadows: y.pointShadowMap.length, + numSpotLightShadows: y.spotShadowMap.length, + numSpotLightShadowsWithMaps: y.numSpotLightShadowsWithMaps, + numLightProbes: y.numLightProbes, + numClippingPlanes: o.numPlanes, + numClipIntersection: o.numIntersection, + dithering: x.dithering, + shadowMapEnabled: i.shadowMap.enabled && z.length > 0, + shadowMapType: i.shadowMap.type, + toneMapping: We, + useLegacyLights: i._useLegacyLights, + decodeVideoTexture: ge && x.map.isVideoTexture === !0 && Ke.getTransfer(x.map.colorSpace) === Ze, + premultipliedAlpha: x.premultipliedAlpha, + doubleSided: x.side === Kt, + flipSided: x.side === Mt, + useDepthPacking: x.depthPacking >= 0, + depthPacking: x.depthPacking || 0, + index0AttributeName: x.index0AttributeName, + extensionDerivatives: le && x.extensions.derivatives === !0, + extensionFragDepth: le && x.extensions.fragDepth === !0, + extensionDrawBuffers: le && x.extensions.drawBuffers === !0, + extensionShaderTextureLOD: le && x.extensions.shaderTextureLOD === !0, + extensionClipCullDistance: le && x.extensions.clipCullDistance && n.has("WEBGL_clip_cull_distance"), + rendererExtensionFragDepth: h || n.has("EXT_frag_depth"), + rendererExtensionDrawBuffers: h || n.has("WEBGL_draw_buffers"), + rendererExtensionShaderTextureLod: h || n.has("EXT_shader_texture_lod"), + rendererExtensionParallelShaderCompile: n.has("KHR_parallel_shader_compile"), + customProgramCacheKey: x.customProgramCacheKey() + }; + } + function u(x) { + const y = []; + if (x.shaderID ? y.push(x.shaderID) : (y.push(x.customVertexShaderID), y.push(x.customFragmentShaderID)), x.defines !== void 0) + for (const z in x.defines) + y.push(z), y.push(x.defines[z]); + return x.isRawShaderMaterial === !1 && (b(y, x), S(y, x), y.push(i.outputColorSpace)), y.push(x.customProgramCacheKey), y.join(); + } + function b(x, y) { + x.push(y.precision), x.push(y.outputColorSpace), x.push(y.envMapMode), x.push(y.envMapCubeUVHeight), x.push(y.mapUv), x.push(y.alphaMapUv), x.push(y.lightMapUv), x.push(y.aoMapUv), x.push(y.bumpMapUv), x.push(y.normalMapUv), x.push(y.displacementMapUv), x.push(y.emissiveMapUv), x.push(y.metalnessMapUv), x.push(y.roughnessMapUv), x.push(y.anisotropyMapUv), x.push(y.clearcoatMapUv), x.push(y.clearcoatNormalMapUv), x.push(y.clearcoatRoughnessMapUv), x.push(y.iridescenceMapUv), x.push(y.iridescenceThicknessMapUv), x.push(y.sheenColorMapUv), x.push(y.sheenRoughnessMapUv), x.push(y.specularMapUv), x.push(y.specularColorMapUv), x.push(y.specularIntensityMapUv), x.push(y.transmissionMapUv), x.push(y.thicknessMapUv), x.push(y.combine), x.push(y.fogExp2), x.push(y.sizeAttenuation), x.push(y.morphTargetsCount), x.push(y.morphAttributeCount), x.push(y.numDirLights), x.push(y.numPointLights), x.push(y.numSpotLights), x.push(y.numSpotLightMaps), x.push(y.numHemiLights), x.push(y.numRectAreaLights), x.push(y.numDirLightShadows), x.push(y.numPointLightShadows), x.push(y.numSpotLightShadows), x.push(y.numSpotLightShadowsWithMaps), x.push(y.numLightProbes), x.push(y.shadowMapType), x.push(y.toneMapping), x.push(y.numClippingPlanes), x.push(y.numClipIntersection), x.push(y.depthPacking); + } + function S(x, y) { + a.disableAll(), y.isWebGL2 && a.enable(0), y.supportsVertexTextures && a.enable(1), y.instancing && a.enable(2), y.instancingColor && a.enable(3), y.matcap && a.enable(4), y.envMap && a.enable(5), y.normalMapObjectSpace && a.enable(6), y.normalMapTangentSpace && a.enable(7), y.clearcoat && a.enable(8), y.iridescence && a.enable(9), y.alphaTest && a.enable(10), y.vertexColors && a.enable(11), y.vertexAlphas && a.enable(12), y.vertexUv1s && a.enable(13), y.vertexUv2s && a.enable(14), y.vertexUv3s && a.enable(15), y.vertexTangents && a.enable(16), y.anisotropy && a.enable(17), y.alphaHash && a.enable(18), y.batching && a.enable(19), x.push(a.mask), a.disableAll(), y.fog && a.enable(0), y.useFog && a.enable(1), y.flatShading && a.enable(2), y.logarithmicDepthBuffer && a.enable(3), y.skinning && a.enable(4), y.morphTargets && a.enable(5), y.morphNormals && a.enable(6), y.morphColors && a.enable(7), y.premultipliedAlpha && a.enable(8), y.shadowMapEnabled && a.enable(9), y.useLegacyLights && a.enable(10), y.doubleSided && a.enable(11), y.flipSided && a.enable(12), y.useDepthPacking && a.enable(13), y.dithering && a.enable(14), y.transmission && a.enable(15), y.sheen && a.enable(16), y.opaque && a.enable(17), y.pointsUvs && a.enable(18), y.decodeVideoTexture && a.enable(19), x.push(a.mask); + } + function R(x) { + const y = g[x.type]; + let z; + if (y) { + const Z = Gt[y]; + z = hc.clone(Z.uniforms); + } else + z = x.uniforms; + return z; + } + function D(x, y) { + let z; + for (let Z = 0, re = c.length; Z < re; Z++) { + const L = c[Z]; + if (L.cacheKey === y) { + z = L, ++z.usedTimes; + break; + } + } + return z === void 0 && (z = new Af(i, y, x, s), c.push(z)), z; + } + function C(x) { + if (--x.usedTimes === 0) { + const y = c.indexOf(x); + c[y] = c[c.length - 1], c.pop(), x.destroy(); + } + } + function A(x) { + l.remove(x); + } + function W() { + l.dispose(); + } + return { + getParameters: f, + getProgramCacheKey: u, + getUniforms: R, + acquireProgram: D, + releaseProgram: C, + releaseShaderCache: A, + // Exposed for resource monitoring & error feedback via renderer.info: + programs: c, + dispose: W + }; +} +function Pf() { + let i = /* @__PURE__ */ new WeakMap(); + function e(s) { + let o = i.get(s); + return o === void 0 && (o = {}, i.set(s, o)), o; + } + function t(s) { + i.delete(s); + } + function n(s, o, a) { + i.get(s)[o] = a; + } + function r() { + i = /* @__PURE__ */ new WeakMap(); + } + return { + get: e, + remove: t, + update: n, + dispose: r + }; +} +function Df(i, e) { + return i.groupOrder !== e.groupOrder ? i.groupOrder - e.groupOrder : i.renderOrder !== e.renderOrder ? i.renderOrder - e.renderOrder : i.material.id !== e.material.id ? i.material.id - e.material.id : i.z !== e.z ? i.z - e.z : i.id - e.id; +} +function Ba(i, e) { + return i.groupOrder !== e.groupOrder ? i.groupOrder - e.groupOrder : i.renderOrder !== e.renderOrder ? i.renderOrder - e.renderOrder : i.z !== e.z ? e.z - i.z : i.id - e.id; +} +function za() { + const i = []; + let e = 0; + const t = [], n = [], r = []; + function s() { + e = 0, t.length = 0, n.length = 0, r.length = 0; + } + function o(d, p, m, g, v, f) { + let u = i[e]; + return u === void 0 ? (u = { + id: d.id, + object: d, + geometry: p, + material: m, + groupOrder: g, + renderOrder: d.renderOrder, + z: v, + group: f + }, i[e] = u) : (u.id = d.id, u.object = d, u.geometry = p, u.material = m, u.groupOrder = g, u.renderOrder = d.renderOrder, u.z = v, u.group = f), e++, u; + } + function a(d, p, m, g, v, f) { + const u = o(d, p, m, g, v, f); + m.transmission > 0 ? n.push(u) : m.transparent === !0 ? r.push(u) : t.push(u); + } + function l(d, p, m, g, v, f) { + const u = o(d, p, m, g, v, f); + m.transmission > 0 ? n.unshift(u) : m.transparent === !0 ? r.unshift(u) : t.unshift(u); + } + function c(d, p) { + t.length > 1 && t.sort(d || Df), n.length > 1 && n.sort(p || Ba), r.length > 1 && r.sort(p || Ba); + } + function h() { + for (let d = e, p = i.length; d < p; d++) { + const m = i[d]; + if (m.id === null) break; + m.id = null, m.object = null, m.geometry = null, m.material = null, m.group = null; + } + } + return { + opaque: t, + transmissive: n, + transparent: r, + init: s, + push: a, + unshift: l, + finish: h, + sort: c + }; +} +function Uf() { + let i = /* @__PURE__ */ new WeakMap(); + function e(n, r) { + const s = i.get(n); + let o; + return s === void 0 ? (o = new za(), i.set(n, [o])) : r >= s.length ? (o = new za(), s.push(o)) : o = s[r], o; + } + function t() { + i = /* @__PURE__ */ new WeakMap(); + } + return { + get: e, + dispose: t + }; +} +function If() { + const i = {}; + return { + get: function(e) { + if (i[e.id] !== void 0) + return i[e.id]; + let t; + switch (e.type) { + case "DirectionalLight": + t = { + direction: new P(), + color: new Xe() + }; + break; + case "SpotLight": + t = { + position: new P(), + direction: new P(), + color: new Xe(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0 + }; + break; + case "PointLight": + t = { + position: new P(), + color: new Xe(), + distance: 0, + decay: 0 + }; + break; + case "HemisphereLight": + t = { + direction: new P(), + skyColor: new Xe(), + groundColor: new Xe() + }; + break; + case "RectAreaLight": + t = { + color: new Xe(), + position: new P(), + halfWidth: new P(), + halfHeight: new P() + }; + break; + } + return i[e.id] = t, t; + } + }; +} +function Nf() { + const i = {}; + return { + get: function(e) { + if (i[e.id] !== void 0) + return i[e.id]; + let t; + switch (e.type) { + case "DirectionalLight": + t = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Ie() + }; + break; + case "SpotLight": + t = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Ie() + }; + break; + case "PointLight": + t = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Ie(), + shadowCameraNear: 1, + shadowCameraFar: 1e3 + }; + break; + } + return i[e.id] = t, t; + } + }; +} +let Ff = 0; +function Of(i, e) { + return (e.castShadow ? 2 : 0) - (i.castShadow ? 2 : 0) + (e.map ? 1 : 0) - (i.map ? 1 : 0); +} +function Bf(i, e) { + const t = new If(), n = Nf(), r = { + version: 0, + hash: { + directionalLength: -1, + pointLength: -1, + spotLength: -1, + rectAreaLength: -1, + hemiLength: -1, + numDirectionalShadows: -1, + numPointShadows: -1, + numSpotShadows: -1, + numSpotMaps: -1, + numLightProbes: -1 + }, + ambient: [0, 0, 0], + probe: [], + directional: [], + directionalShadow: [], + directionalShadowMap: [], + directionalShadowMatrix: [], + spot: [], + spotLightMap: [], + spotShadow: [], + spotShadowMap: [], + spotLightMatrix: [], + rectArea: [], + rectAreaLTC1: null, + rectAreaLTC2: null, + point: [], + pointShadow: [], + pointShadowMap: [], + pointShadowMatrix: [], + hemi: [], + numSpotLightShadowsWithMaps: 0, + numLightProbes: 0 + }; + for (let h = 0; h < 9; h++) r.probe.push(new P()); + const s = new P(), o = new Qe(), a = new Qe(); + function l(h, d) { + let p = 0, m = 0, g = 0; + for (let Z = 0; Z < 9; Z++) r.probe[Z].set(0, 0, 0); + let v = 0, f = 0, u = 0, b = 0, S = 0, R = 0, D = 0, C = 0, A = 0, W = 0, x = 0; + h.sort(Of); + const y = d === !0 ? Math.PI : 1; + for (let Z = 0, re = h.length; Z < re; Z++) { + const L = h[Z], F = L.color, V = L.intensity, Y = L.distance, X = L.shadow && L.shadow.map ? L.shadow.map.texture : null; + if (L.isAmbientLight) + p += F.r * V * y, m += F.g * V * y, g += F.b * V * y; + else if (L.isLightProbe) { + for (let k = 0; k < 9; k++) + r.probe[k].addScaledVector(L.sh.coefficients[k], V); + x++; + } else if (L.isDirectionalLight) { + const k = t.get(L); + if (k.color.copy(L.color).multiplyScalar(L.intensity * y), L.castShadow) { + const q = L.shadow, Q = n.get(L); + Q.shadowBias = q.bias, Q.shadowNormalBias = q.normalBias, Q.shadowRadius = q.radius, Q.shadowMapSize = q.mapSize, r.directionalShadow[v] = Q, r.directionalShadowMap[v] = X, r.directionalShadowMatrix[v] = L.shadow.matrix, R++; + } + r.directional[v] = k, v++; + } else if (L.isSpotLight) { + const k = t.get(L); + k.position.setFromMatrixPosition(L.matrixWorld), k.color.copy(F).multiplyScalar(V * y), k.distance = Y, k.coneCos = Math.cos(L.angle), k.penumbraCos = Math.cos(L.angle * (1 - L.penumbra)), k.decay = L.decay, r.spot[u] = k; + const q = L.shadow; + if (L.map && (r.spotLightMap[A] = L.map, A++, q.updateMatrices(L), L.castShadow && W++), r.spotLightMatrix[u] = q.matrix, L.castShadow) { + const Q = n.get(L); + Q.shadowBias = q.bias, Q.shadowNormalBias = q.normalBias, Q.shadowRadius = q.radius, Q.shadowMapSize = q.mapSize, r.spotShadow[u] = Q, r.spotShadowMap[u] = X, C++; + } + u++; + } else if (L.isRectAreaLight) { + const k = t.get(L); + k.color.copy(F).multiplyScalar(V), k.halfWidth.set(L.width * 0.5, 0, 0), k.halfHeight.set(0, L.height * 0.5, 0), r.rectArea[b] = k, b++; + } else if (L.isPointLight) { + const k = t.get(L); + if (k.color.copy(L.color).multiplyScalar(L.intensity * y), k.distance = L.distance, k.decay = L.decay, L.castShadow) { + const q = L.shadow, Q = n.get(L); + Q.shadowBias = q.bias, Q.shadowNormalBias = q.normalBias, Q.shadowRadius = q.radius, Q.shadowMapSize = q.mapSize, Q.shadowCameraNear = q.camera.near, Q.shadowCameraFar = q.camera.far, r.pointShadow[f] = Q, r.pointShadowMap[f] = X, r.pointShadowMatrix[f] = L.shadow.matrix, D++; + } + r.point[f] = k, f++; + } else if (L.isHemisphereLight) { + const k = t.get(L); + k.skyColor.copy(L.color).multiplyScalar(V * y), k.groundColor.copy(L.groundColor).multiplyScalar(V * y), r.hemi[S] = k, S++; + } + } + b > 0 && (e.isWebGL2 ? i.has("OES_texture_float_linear") === !0 ? (r.rectAreaLTC1 = se.LTC_FLOAT_1, r.rectAreaLTC2 = se.LTC_FLOAT_2) : (r.rectAreaLTC1 = se.LTC_HALF_1, r.rectAreaLTC2 = se.LTC_HALF_2) : i.has("OES_texture_float_linear") === !0 ? (r.rectAreaLTC1 = se.LTC_FLOAT_1, r.rectAreaLTC2 = se.LTC_FLOAT_2) : i.has("OES_texture_half_float_linear") === !0 ? (r.rectAreaLTC1 = se.LTC_HALF_1, r.rectAreaLTC2 = se.LTC_HALF_2) : console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")), r.ambient[0] = p, r.ambient[1] = m, r.ambient[2] = g; + const z = r.hash; + (z.directionalLength !== v || z.pointLength !== f || z.spotLength !== u || z.rectAreaLength !== b || z.hemiLength !== S || z.numDirectionalShadows !== R || z.numPointShadows !== D || z.numSpotShadows !== C || z.numSpotMaps !== A || z.numLightProbes !== x) && (r.directional.length = v, r.spot.length = u, r.rectArea.length = b, r.point.length = f, r.hemi.length = S, r.directionalShadow.length = R, r.directionalShadowMap.length = R, r.pointShadow.length = D, r.pointShadowMap.length = D, r.spotShadow.length = C, r.spotShadowMap.length = C, r.directionalShadowMatrix.length = R, r.pointShadowMatrix.length = D, r.spotLightMatrix.length = C + A - W, r.spotLightMap.length = A, r.numSpotLightShadowsWithMaps = W, r.numLightProbes = x, z.directionalLength = v, z.pointLength = f, z.spotLength = u, z.rectAreaLength = b, z.hemiLength = S, z.numDirectionalShadows = R, z.numPointShadows = D, z.numSpotShadows = C, z.numSpotMaps = A, z.numLightProbes = x, r.version = Ff++); + } + function c(h, d) { + let p = 0, m = 0, g = 0, v = 0, f = 0; + const u = d.matrixWorldInverse; + for (let b = 0, S = h.length; b < S; b++) { + const R = h[b]; + if (R.isDirectionalLight) { + const D = r.directional[p]; + D.direction.setFromMatrixPosition(R.matrixWorld), s.setFromMatrixPosition(R.target.matrixWorld), D.direction.sub(s), D.direction.transformDirection(u), p++; + } else if (R.isSpotLight) { + const D = r.spot[g]; + D.position.setFromMatrixPosition(R.matrixWorld), D.position.applyMatrix4(u), D.direction.setFromMatrixPosition(R.matrixWorld), s.setFromMatrixPosition(R.target.matrixWorld), D.direction.sub(s), D.direction.transformDirection(u), g++; + } else if (R.isRectAreaLight) { + const D = r.rectArea[v]; + D.position.setFromMatrixPosition(R.matrixWorld), D.position.applyMatrix4(u), a.identity(), o.copy(R.matrixWorld), o.premultiply(u), a.extractRotation(o), D.halfWidth.set(R.width * 0.5, 0, 0), D.halfHeight.set(0, R.height * 0.5, 0), D.halfWidth.applyMatrix4(a), D.halfHeight.applyMatrix4(a), v++; + } else if (R.isPointLight) { + const D = r.point[m]; + D.position.setFromMatrixPosition(R.matrixWorld), D.position.applyMatrix4(u), m++; + } else if (R.isHemisphereLight) { + const D = r.hemi[f]; + D.direction.setFromMatrixPosition(R.matrixWorld), D.direction.transformDirection(u), f++; + } + } + } + return { + setup: l, + setupView: c, + state: r + }; +} +function Ga(i, e) { + const t = new Bf(i, e), n = [], r = []; + function s() { + n.length = 0, r.length = 0; + } + function o(d) { + n.push(d); + } + function a(d) { + r.push(d); + } + function l(d) { + t.setup(n, d); + } + function c(d) { + t.setupView(n, d); + } + return { + init: s, + state: { + lightsArray: n, + shadowsArray: r, + lights: t + }, + setupLights: l, + setupLightsView: c, + pushLight: o, + pushShadow: a + }; +} +function zf(i, e) { + let t = /* @__PURE__ */ new WeakMap(); + function n(s, o = 0) { + const a = t.get(s); + let l; + return a === void 0 ? (l = new Ga(i, e), t.set(s, [l])) : o >= a.length ? (l = new Ga(i, e), a.push(l)) : l = a[o], l; + } + function r() { + t = /* @__PURE__ */ new WeakMap(); + } + return { + get: n, + dispose: r + }; +} +class Gf extends Mi { + constructor(e) { + super(), this.isMeshDepthMaterial = !0, this.type = "MeshDepthMaterial", this.depthPacking = Nl, this.map = null, this.alphaMap = null, this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.wireframe = !1, this.wireframeLinewidth = 1, this.setValues(e); + } + copy(e) { + return super.copy(e), this.depthPacking = e.depthPacking, this.map = e.map, this.alphaMap = e.alphaMap, this.displacementMap = e.displacementMap, this.displacementScale = e.displacementScale, this.displacementBias = e.displacementBias, this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this; + } +} +class Hf extends Mi { + constructor(e) { + super(), this.isMeshDistanceMaterial = !0, this.type = "MeshDistanceMaterial", this.map = null, this.alphaMap = null, this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.setValues(e); + } + copy(e) { + return super.copy(e), this.map = e.map, this.alphaMap = e.alphaMap, this.displacementMap = e.displacementMap, this.displacementScale = e.displacementScale, this.displacementBias = e.displacementBias, this; + } +} +const Vf = `void main() { + gl_Position = vec4( position, 1.0 ); +}`, kf = `uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`; +function Wf(i, e, t) { + let n = new cs(); + const r = new Ie(), s = new Ie(), o = new $e(), a = new Gf({ depthPacking: Fl }), l = new Hf(), c = {}, h = t.maxTextureSize, d = { [un]: Mt, [Mt]: un, [Kt]: Kt }, p = new wn({ + defines: { + VSM_SAMPLES: 8 + }, + uniforms: { + shadow_pass: { value: null }, + resolution: { value: new Ie() }, + radius: { value: 4 } + }, + vertexShader: Vf, + fragmentShader: kf + }), m = p.clone(); + m.defines.HORIZONTAL_PASS = 1; + const g = new hn(); + g.setAttribute( + "position", + new Bt( + new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]), + 3 + ) + ); + const v = new Ot(g, p), f = this; + this.enabled = !1, this.autoUpdate = !0, this.needsUpdate = !1, this.type = so; + let u = this.type; + this.render = function(C, A, W) { + if (f.enabled === !1 || f.autoUpdate === !1 && f.needsUpdate === !1 || C.length === 0) return; + const x = i.getRenderTarget(), y = i.getActiveCubeFace(), z = i.getActiveMipmapLevel(), Z = i.state; + Z.setBlending(on), Z.buffers.color.setClear(1, 1, 1, 1), Z.buffers.depth.setTest(!0), Z.setScissorTest(!1); + const re = u !== jt && this.type === jt, L = u === jt && this.type !== jt; + for (let F = 0, V = C.length; F < V; F++) { + const Y = C[F], X = Y.shadow; + if (X === void 0) { + console.warn("THREE.WebGLShadowMap:", Y, "has no shadow."); + continue; + } + if (X.autoUpdate === !1 && X.needsUpdate === !1) continue; + r.copy(X.mapSize); + const k = X.getFrameExtents(); + if (r.multiply(k), s.copy(X.mapSize), (r.x > h || r.y > h) && (r.x > h && (s.x = Math.floor(h / k.x), r.x = s.x * k.x, X.mapSize.x = s.x), r.y > h && (s.y = Math.floor(h / k.y), r.y = s.y * k.y, X.mapSize.y = s.y)), X.map === null || re === !0 || L === !0) { + const Q = this.type !== jt ? { minFilter: gt, magFilter: gt } : {}; + X.map !== null && X.map.dispose(), X.map = new bn(r.x, r.y, Q), X.map.texture.name = Y.name + ".shadowMap", X.camera.updateProjectionMatrix(); + } + i.setRenderTarget(X.map), i.clear(); + const q = X.getViewportCount(); + for (let Q = 0; Q < q; Q++) { + const ce = X.getViewport(Q); + o.set( + s.x * ce.x, + s.y * ce.y, + s.x * ce.z, + s.y * ce.w + ), Z.viewport(o), X.updateMatrices(Y, Q), n = X.getFrustum(), R(A, W, X.camera, Y, this.type); + } + X.isPointLightShadow !== !0 && this.type === jt && b(X, W), X.needsUpdate = !1; + } + u = this.type, f.needsUpdate = !1, i.setRenderTarget(x, y, z); + }; + function b(C, A) { + const W = e.update(v); + p.defines.VSM_SAMPLES !== C.blurSamples && (p.defines.VSM_SAMPLES = C.blurSamples, m.defines.VSM_SAMPLES = C.blurSamples, p.needsUpdate = !0, m.needsUpdate = !0), C.mapPass === null && (C.mapPass = new bn(r.x, r.y)), p.uniforms.shadow_pass.value = C.map.texture, p.uniforms.resolution.value = C.mapSize, p.uniforms.radius.value = C.radius, i.setRenderTarget(C.mapPass), i.clear(), i.renderBufferDirect(A, null, W, p, v, null), m.uniforms.shadow_pass.value = C.mapPass.texture, m.uniforms.resolution.value = C.mapSize, m.uniforms.radius.value = C.radius, i.setRenderTarget(C.map), i.clear(), i.renderBufferDirect(A, null, W, m, v, null); + } + function S(C, A, W, x) { + let y = null; + const z = W.isPointLight === !0 ? C.customDistanceMaterial : C.customDepthMaterial; + if (z !== void 0) + y = z; + else if (y = W.isPointLight === !0 ? l : a, i.localClippingEnabled && A.clipShadows === !0 && Array.isArray(A.clippingPlanes) && A.clippingPlanes.length !== 0 || A.displacementMap && A.displacementScale !== 0 || A.alphaMap && A.alphaTest > 0 || A.map && A.alphaTest > 0) { + const Z = y.uuid, re = A.uuid; + let L = c[Z]; + L === void 0 && (L = {}, c[Z] = L); + let F = L[re]; + F === void 0 && (F = y.clone(), L[re] = F, A.addEventListener("dispose", D)), y = F; + } + if (y.visible = A.visible, y.wireframe = A.wireframe, x === jt ? y.side = A.shadowSide !== null ? A.shadowSide : A.side : y.side = A.shadowSide !== null ? A.shadowSide : d[A.side], y.alphaMap = A.alphaMap, y.alphaTest = A.alphaTest, y.map = A.map, y.clipShadows = A.clipShadows, y.clippingPlanes = A.clippingPlanes, y.clipIntersection = A.clipIntersection, y.displacementMap = A.displacementMap, y.displacementScale = A.displacementScale, y.displacementBias = A.displacementBias, y.wireframeLinewidth = A.wireframeLinewidth, y.linewidth = A.linewidth, W.isPointLight === !0 && y.isMeshDistanceMaterial === !0) { + const Z = i.properties.get(y); + Z.light = W; + } + return y; + } + function R(C, A, W, x, y) { + if (C.visible === !1) return; + if (C.layers.test(A.layers) && (C.isMesh || C.isLine || C.isPoints) && (C.castShadow || C.receiveShadow && y === jt) && (!C.frustumCulled || n.intersectsObject(C))) { + C.modelViewMatrix.multiplyMatrices(W.matrixWorldInverse, C.matrixWorld); + const re = e.update(C), L = C.material; + if (Array.isArray(L)) { + const F = re.groups; + for (let V = 0, Y = F.length; V < Y; V++) { + const X = F[V], k = L[X.materialIndex]; + if (k && k.visible) { + const q = S(C, k, x, y); + C.onBeforeShadow(i, C, A, W, re, q, X), i.renderBufferDirect(W, null, re, q, C, X), C.onAfterShadow(i, C, A, W, re, q, X); + } + } + } else if (L.visible) { + const F = S(C, L, x, y); + C.onBeforeShadow(i, C, A, W, re, F, null), i.renderBufferDirect(W, null, re, F, C, null), C.onAfterShadow(i, C, A, W, re, F, null); + } + } + const Z = C.children; + for (let re = 0, L = Z.length; re < L; re++) + R(Z[re], A, W, x, y); + } + function D(C) { + C.target.removeEventListener("dispose", D); + for (const W in c) { + const x = c[W], y = C.target.uuid; + y in x && (x[y].dispose(), delete x[y]); + } + } +} +function Xf(i, e, t) { + const n = t.isWebGL2; + function r() { + let w = !1; + const ie = new $e(); + let le = null; + const Ce = new $e(0, 0, 0, 0); + return { + setMask: function(Te) { + le !== Te && !w && (i.colorMask(Te, Te, Te, Te), le = Te); + }, + setLocked: function(Te) { + w = Te; + }, + setClear: function(Te, ke, We, et, nt) { + nt === !0 && (Te *= et, ke *= et, We *= et), ie.set(Te, ke, We, et), Ce.equals(ie) === !1 && (i.clearColor(Te, ke, We, et), Ce.copy(ie)); + }, + reset: function() { + w = !1, le = null, Ce.set(-1, 0, 0, 0); + } + }; + } + function s() { + let w = !1, ie = null, le = null, Ce = null; + return { + setTest: function(Te) { + Te ? Ae(i.DEPTH_TEST) : ge(i.DEPTH_TEST); + }, + setMask: function(Te) { + ie !== Te && !w && (i.depthMask(Te), ie = Te); + }, + setFunc: function(Te) { + if (le !== Te) { + switch (Te) { + case hl: + i.depthFunc(i.NEVER); + break; + case dl: + i.depthFunc(i.ALWAYS); + break; + case fl: + i.depthFunc(i.LESS); + break; + case $i: + i.depthFunc(i.LEQUAL); + break; + case pl: + i.depthFunc(i.EQUAL); + break; + case ml: + i.depthFunc(i.GEQUAL); + break; + case _l: + i.depthFunc(i.GREATER); + break; + case gl: + i.depthFunc(i.NOTEQUAL); + break; + default: + i.depthFunc(i.LEQUAL); + } + le = Te; + } + }, + setLocked: function(Te) { + w = Te; + }, + setClear: function(Te) { + Ce !== Te && (i.clearDepth(Te), Ce = Te); + }, + reset: function() { + w = !1, ie = null, le = null, Ce = null; + } + }; + } + function o() { + let w = !1, ie = null, le = null, Ce = null, Te = null, ke = null, We = null, et = null, nt = null; + return { + setTest: function(qe) { + w || (qe ? Ae(i.STENCIL_TEST) : ge(i.STENCIL_TEST)); + }, + setMask: function(qe) { + ie !== qe && !w && (i.stencilMask(qe), ie = qe); + }, + setFunc: function(qe, st, zt) { + (le !== qe || Ce !== st || Te !== zt) && (i.stencilFunc(qe, st, zt), le = qe, Ce = st, Te = zt); + }, + setOp: function(qe, st, zt) { + (ke !== qe || We !== st || et !== zt) && (i.stencilOp(qe, st, zt), ke = qe, We = st, et = zt); + }, + setLocked: function(qe) { + w = qe; + }, + setClear: function(qe) { + nt !== qe && (i.clearStencil(qe), nt = qe); + }, + reset: function() { + w = !1, ie = null, le = null, Ce = null, Te = null, ke = null, We = null, et = null, nt = null; + } + }; + } + const a = new r(), l = new s(), c = new o(), h = /* @__PURE__ */ new WeakMap(), d = /* @__PURE__ */ new WeakMap(); + let p = {}, m = {}, g = /* @__PURE__ */ new WeakMap(), v = [], f = null, u = !1, b = null, S = null, R = null, D = null, C = null, A = null, W = null, x = new Xe(0, 0, 0), y = 0, z = !1, Z = null, re = null, L = null, F = null, V = null; + const Y = i.getParameter(i.MAX_COMBINED_TEXTURE_IMAGE_UNITS); + let X = !1, k = 0; + const q = i.getParameter(i.VERSION); + q.indexOf("WebGL") !== -1 ? (k = parseFloat(/^WebGL (\d)/.exec(q)[1]), X = k >= 1) : q.indexOf("OpenGL ES") !== -1 && (k = parseFloat(/^OpenGL ES (\d)/.exec(q)[1]), X = k >= 2); + let Q = null, ce = {}; + const H = i.getParameter(i.SCISSOR_BOX), j = i.getParameter(i.VIEWPORT), oe = new $e().fromArray(H), ve = new $e().fromArray(j); + function _e(w, ie, le, Ce) { + const Te = new Uint8Array(4), ke = i.createTexture(); + i.bindTexture(w, ke), i.texParameteri(w, i.TEXTURE_MIN_FILTER, i.NEAREST), i.texParameteri(w, i.TEXTURE_MAG_FILTER, i.NEAREST); + for (let We = 0; We < le; We++) + n && (w === i.TEXTURE_3D || w === i.TEXTURE_2D_ARRAY) ? i.texImage3D(ie, 0, i.RGBA, 1, 1, Ce, 0, i.RGBA, i.UNSIGNED_BYTE, Te) : i.texImage2D(ie + We, 0, i.RGBA, 1, 1, 0, i.RGBA, i.UNSIGNED_BYTE, Te); + return ke; + } + const we = {}; + we[i.TEXTURE_2D] = _e(i.TEXTURE_2D, i.TEXTURE_2D, 1), we[i.TEXTURE_CUBE_MAP] = _e(i.TEXTURE_CUBE_MAP, i.TEXTURE_CUBE_MAP_POSITIVE_X, 6), n && (we[i.TEXTURE_2D_ARRAY] = _e(i.TEXTURE_2D_ARRAY, i.TEXTURE_2D_ARRAY, 1, 1), we[i.TEXTURE_3D] = _e(i.TEXTURE_3D, i.TEXTURE_3D, 1, 1)), a.setClear(0, 0, 0, 1), l.setClear(1), c.setClear(0), Ae(i.DEPTH_TEST), l.setFunc($i), be(!1), M(Ss), Ae(i.CULL_FACE), pe(on); + function Ae(w) { + p[w] !== !0 && (i.enable(w), p[w] = !0); + } + function ge(w) { + p[w] !== !1 && (i.disable(w), p[w] = !1); + } + function Pe(w, ie) { + return m[w] !== ie ? (i.bindFramebuffer(w, ie), m[w] = ie, n && (w === i.DRAW_FRAMEBUFFER && (m[i.FRAMEBUFFER] = ie), w === i.FRAMEBUFFER && (m[i.DRAW_FRAMEBUFFER] = ie)), !0) : !1; + } + function N(w, ie) { + let le = v, Ce = !1; + if (w) + if (le = g.get(ie), le === void 0 && (le = [], g.set(ie, le)), w.isWebGLMultipleRenderTargets) { + const Te = w.texture; + if (le.length !== Te.length || le[0] !== i.COLOR_ATTACHMENT0) { + for (let ke = 0, We = Te.length; ke < We; ke++) + le[ke] = i.COLOR_ATTACHMENT0 + ke; + le.length = Te.length, Ce = !0; + } + } else + le[0] !== i.COLOR_ATTACHMENT0 && (le[0] = i.COLOR_ATTACHMENT0, Ce = !0); + else + le[0] !== i.BACK && (le[0] = i.BACK, Ce = !0); + Ce && (t.isWebGL2 ? i.drawBuffers(le) : e.get("WEBGL_draw_buffers").drawBuffersWEBGL(le)); + } + function rt(w) { + return f !== w ? (i.useProgram(w), f = w, !0) : !1; + } + const Me = { + [Mn]: i.FUNC_ADD, + [Zo]: i.FUNC_SUBTRACT, + [$o]: i.FUNC_REVERSE_SUBTRACT + }; + if (n) + Me[bs] = i.MIN, Me[As] = i.MAX; + else { + const w = e.get("EXT_blend_minmax"); + w !== null && (Me[bs] = w.MIN_EXT, Me[As] = w.MAX_EXT); + } + const Re = { + [Jo]: i.ZERO, + [Qo]: i.ONE, + [el]: i.SRC_COLOR, + [Kr]: i.SRC_ALPHA, + [al]: i.SRC_ALPHA_SATURATE, + [rl]: i.DST_COLOR, + [nl]: i.DST_ALPHA, + [tl]: i.ONE_MINUS_SRC_COLOR, + [Zr]: i.ONE_MINUS_SRC_ALPHA, + [sl]: i.ONE_MINUS_DST_COLOR, + [il]: i.ONE_MINUS_DST_ALPHA, + [ol]: i.CONSTANT_COLOR, + [ll]: i.ONE_MINUS_CONSTANT_COLOR, + [cl]: i.CONSTANT_ALPHA, + [ul]: i.ONE_MINUS_CONSTANT_ALPHA + }; + function pe(w, ie, le, Ce, Te, ke, We, et, nt, qe) { + if (w === on) { + u === !0 && (ge(i.BLEND), u = !1); + return; + } + if (u === !1 && (Ae(i.BLEND), u = !0), w !== Ko) { + if (w !== b || qe !== z) { + if ((S !== Mn || C !== Mn) && (i.blendEquation(i.FUNC_ADD), S = Mn, C = Mn), qe) + switch (w) { + case $n: + i.blendFuncSeparate(i.ONE, i.ONE_MINUS_SRC_ALPHA, i.ONE, i.ONE_MINUS_SRC_ALPHA); + break; + case Es: + i.blendFunc(i.ONE, i.ONE); + break; + case ys: + i.blendFuncSeparate(i.ZERO, i.ONE_MINUS_SRC_COLOR, i.ZERO, i.ONE); + break; + case Ts: + i.blendFuncSeparate(i.ZERO, i.SRC_COLOR, i.ZERO, i.SRC_ALPHA); + break; + default: + console.error("THREE.WebGLState: Invalid blending: ", w); + break; + } + else + switch (w) { + case $n: + i.blendFuncSeparate(i.SRC_ALPHA, i.ONE_MINUS_SRC_ALPHA, i.ONE, i.ONE_MINUS_SRC_ALPHA); + break; + case Es: + i.blendFunc(i.SRC_ALPHA, i.ONE); + break; + case ys: + i.blendFuncSeparate(i.ZERO, i.ONE_MINUS_SRC_COLOR, i.ZERO, i.ONE); + break; + case Ts: + i.blendFunc(i.ZERO, i.SRC_COLOR); + break; + default: + console.error("THREE.WebGLState: Invalid blending: ", w); + break; + } + R = null, D = null, A = null, W = null, x.set(0, 0, 0), y = 0, b = w, z = qe; + } + return; + } + Te = Te || ie, ke = ke || le, We = We || Ce, (ie !== S || Te !== C) && (i.blendEquationSeparate(Me[ie], Me[Te]), S = ie, C = Te), (le !== R || Ce !== D || ke !== A || We !== W) && (i.blendFuncSeparate(Re[le], Re[Ce], Re[ke], Re[We]), R = le, D = Ce, A = ke, W = We), (et.equals(x) === !1 || nt !== y) && (i.blendColor(et.r, et.g, et.b, nt), x.copy(et), y = nt), b = w, z = !1; + } + function je(w, ie) { + w.side === Kt ? ge(i.CULL_FACE) : Ae(i.CULL_FACE); + let le = w.side === Mt; + ie && (le = !le), be(le), w.blending === $n && w.transparent === !1 ? pe(on) : pe(w.blending, w.blendEquation, w.blendSrc, w.blendDst, w.blendEquationAlpha, w.blendSrcAlpha, w.blendDstAlpha, w.blendColor, w.blendAlpha, w.premultipliedAlpha), l.setFunc(w.depthFunc), l.setTest(w.depthTest), l.setMask(w.depthWrite), a.setMask(w.colorWrite); + const Ce = w.stencilWrite; + c.setTest(Ce), Ce && (c.setMask(w.stencilWriteMask), c.setFunc(w.stencilFunc, w.stencilRef, w.stencilFuncMask), c.setOp(w.stencilFail, w.stencilZFail, w.stencilZPass)), I(w.polygonOffset, w.polygonOffsetFactor, w.polygonOffsetUnits), w.alphaToCoverage === !0 ? Ae(i.SAMPLE_ALPHA_TO_COVERAGE) : ge(i.SAMPLE_ALPHA_TO_COVERAGE); + } + function be(w) { + Z !== w && (w ? i.frontFace(i.CW) : i.frontFace(i.CCW), Z = w); + } + function M(w) { + w !== Yo ? (Ae(i.CULL_FACE), w !== re && (w === Ss ? i.cullFace(i.BACK) : w === jo ? i.cullFace(i.FRONT) : i.cullFace(i.FRONT_AND_BACK))) : ge(i.CULL_FACE), re = w; + } + function _(w) { + w !== L && (X && i.lineWidth(w), L = w); + } + function I(w, ie, le) { + w ? (Ae(i.POLYGON_OFFSET_FILL), (F !== ie || V !== le) && (i.polygonOffset(ie, le), F = ie, V = le)) : ge(i.POLYGON_OFFSET_FILL); + } + function $(w) { + w ? Ae(i.SCISSOR_TEST) : ge(i.SCISSOR_TEST); + } + function K(w) { + w === void 0 && (w = i.TEXTURE0 + Y - 1), Q !== w && (i.activeTexture(w), Q = w); + } + function J(w, ie, le) { + le === void 0 && (Q === null ? le = i.TEXTURE0 + Y - 1 : le = Q); + let Ce = ce[le]; + Ce === void 0 && (Ce = { type: void 0, texture: void 0 }, ce[le] = Ce), (Ce.type !== w || Ce.texture !== ie) && (Q !== le && (i.activeTexture(le), Q = le), i.bindTexture(w, ie || we[w]), Ce.type = w, Ce.texture = ie); + } + function me() { + const w = ce[Q]; + w !== void 0 && w.type !== void 0 && (i.bindTexture(w.type, null), w.type = void 0, w.texture = void 0); + } + function ae() { + try { + i.compressedTexImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function he() { + try { + i.compressedTexImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ye() { + try { + i.texSubImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function Fe() { + try { + i.texSubImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ee() { + try { + i.compressedTexSubImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function Ye() { + try { + i.compressedTexSubImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ze() { + try { + i.texStorage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function De() { + try { + i.texStorage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function Ee() { + try { + i.texImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ue() { + try { + i.texImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function T(w) { + oe.equals(w) === !1 && (i.scissor(w.x, w.y, w.z, w.w), oe.copy(w)); + } + function ne(w) { + ve.equals(w) === !1 && (i.viewport(w.x, w.y, w.z, w.w), ve.copy(w)); + } + function xe(w, ie) { + let le = d.get(ie); + le === void 0 && (le = /* @__PURE__ */ new WeakMap(), d.set(ie, le)); + let Ce = le.get(w); + Ce === void 0 && (Ce = i.getUniformBlockIndex(ie, w.name), le.set(w, Ce)); + } + function fe(w, ie) { + const Ce = d.get(ie).get(w); + h.get(ie) !== Ce && (i.uniformBlockBinding(ie, Ce, w.__bindingPointIndex), h.set(ie, Ce)); + } + function te() { + i.disable(i.BLEND), i.disable(i.CULL_FACE), i.disable(i.DEPTH_TEST), i.disable(i.POLYGON_OFFSET_FILL), i.disable(i.SCISSOR_TEST), i.disable(i.STENCIL_TEST), i.disable(i.SAMPLE_ALPHA_TO_COVERAGE), i.blendEquation(i.FUNC_ADD), i.blendFunc(i.ONE, i.ZERO), i.blendFuncSeparate(i.ONE, i.ZERO, i.ONE, i.ZERO), i.blendColor(0, 0, 0, 0), i.colorMask(!0, !0, !0, !0), i.clearColor(0, 0, 0, 0), i.depthMask(!0), i.depthFunc(i.LESS), i.clearDepth(1), i.stencilMask(4294967295), i.stencilFunc(i.ALWAYS, 0, 4294967295), i.stencilOp(i.KEEP, i.KEEP, i.KEEP), i.clearStencil(0), i.cullFace(i.BACK), i.frontFace(i.CCW), i.polygonOffset(0, 0), i.activeTexture(i.TEXTURE0), i.bindFramebuffer(i.FRAMEBUFFER, null), n === !0 && (i.bindFramebuffer(i.DRAW_FRAMEBUFFER, null), i.bindFramebuffer(i.READ_FRAMEBUFFER, null)), i.useProgram(null), i.lineWidth(1), i.scissor(0, 0, i.canvas.width, i.canvas.height), i.viewport(0, 0, i.canvas.width, i.canvas.height), p = {}, Q = null, ce = {}, m = {}, g = /* @__PURE__ */ new WeakMap(), v = [], f = null, u = !1, b = null, S = null, R = null, D = null, C = null, A = null, W = null, x = new Xe(0, 0, 0), y = 0, z = !1, Z = null, re = null, L = null, F = null, V = null, oe.set(0, 0, i.canvas.width, i.canvas.height), ve.set(0, 0, i.canvas.width, i.canvas.height), a.reset(), l.reset(), c.reset(); + } + return { + buffers: { + color: a, + depth: l, + stencil: c + }, + enable: Ae, + disable: ge, + bindFramebuffer: Pe, + drawBuffers: N, + useProgram: rt, + setBlending: pe, + setMaterial: je, + setFlipSided: be, + setCullFace: M, + setLineWidth: _, + setPolygonOffset: I, + setScissorTest: $, + activeTexture: K, + bindTexture: J, + unbindTexture: me, + compressedTexImage2D: ae, + compressedTexImage3D: he, + texImage2D: Ee, + texImage3D: ue, + updateUBOMapping: xe, + uniformBlockBinding: fe, + texStorage2D: ze, + texStorage3D: De, + texSubImage2D: ye, + texSubImage3D: Fe, + compressedTexSubImage2D: ee, + compressedTexSubImage3D: Ye, + scissor: T, + viewport: ne, + reset: te + }; +} +function qf(i, e, t, n, r, s, o) { + const a = r.isWebGL2, l = e.has("WEBGL_multisampled_render_to_texture") ? e.get("WEBGL_multisampled_render_to_texture") : null, c = typeof navigator > "u" ? !1 : /OculusBrowser/g.test(navigator.userAgent), h = /* @__PURE__ */ new WeakMap(); + let d; + const p = /* @__PURE__ */ new WeakMap(); + let m = !1; + try { + m = typeof OffscreenCanvas < "u" && new OffscreenCanvas(1, 1).getContext("2d") !== null; + } catch { + } + function g(M, _) { + return m ? ( + // eslint-disable-next-line compat/compat + new OffscreenCanvas(M, _) + ) : nr("canvas"); + } + function v(M, _, I, $) { + let K = 1; + if ((M.width > $ || M.height > $) && (K = $ / Math.max(M.width, M.height)), K < 1 || _ === !0) + if (typeof HTMLImageElement < "u" && M instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && M instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && M instanceof ImageBitmap) { + const J = _ ? is : Math.floor, me = J(K * M.width), ae = J(K * M.height); + d === void 0 && (d = g(me, ae)); + const he = I ? g(me, ae) : d; + return he.width = me, he.height = ae, he.getContext("2d").drawImage(M, 0, 0, me, ae), console.warn("THREE.WebGLRenderer: Texture has been resized from (" + M.width + "x" + M.height + ") to (" + me + "x" + ae + ")."), he; + } else + return "data" in M && console.warn("THREE.WebGLRenderer: Image in DataTexture is too big (" + M.width + "x" + M.height + ")."), M; + return M; + } + function f(M) { + return na(M.width) && na(M.height); + } + function u(M) { + return a ? !1 : M.wrapS !== Nt || M.wrapT !== Nt || M.minFilter !== gt && M.minFilter !== Rt; + } + function b(M, _) { + return M.generateMipmaps && _ && M.minFilter !== gt && M.minFilter !== Rt; + } + function S(M) { + i.generateMipmap(M); + } + function R(M, _, I, $, K = !1) { + if (a === !1) return _; + if (M !== null) { + if (i[M] !== void 0) return i[M]; + console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '" + M + "'"); + } + let J = _; + if (_ === i.RED && (I === i.FLOAT && (J = i.R32F), I === i.HALF_FLOAT && (J = i.R16F), I === i.UNSIGNED_BYTE && (J = i.R8)), _ === i.RED_INTEGER && (I === i.UNSIGNED_BYTE && (J = i.R8UI), I === i.UNSIGNED_SHORT && (J = i.R16UI), I === i.UNSIGNED_INT && (J = i.R32UI), I === i.BYTE && (J = i.R8I), I === i.SHORT && (J = i.R16I), I === i.INT && (J = i.R32I)), _ === i.RG && (I === i.FLOAT && (J = i.RG32F), I === i.HALF_FLOAT && (J = i.RG16F), I === i.UNSIGNED_BYTE && (J = i.RG8)), _ === i.RGBA) { + const me = K ? Ji : Ke.getTransfer($); + I === i.FLOAT && (J = i.RGBA32F), I === i.HALF_FLOAT && (J = i.RGBA16F), I === i.UNSIGNED_BYTE && (J = me === Ze ? i.SRGB8_ALPHA8 : i.RGBA8), I === i.UNSIGNED_SHORT_4_4_4_4 && (J = i.RGBA4), I === i.UNSIGNED_SHORT_5_5_5_1 && (J = i.RGB5_A1); + } + return (J === i.R16F || J === i.R32F || J === i.RG16F || J === i.RG32F || J === i.RGBA16F || J === i.RGBA32F) && e.get("EXT_color_buffer_float"), J; + } + function D(M, _, I) { + return b(M, I) === !0 || M.isFramebufferTexture && M.minFilter !== gt && M.minFilter !== Rt ? Math.log2(Math.max(_.width, _.height)) + 1 : M.mipmaps !== void 0 && M.mipmaps.length > 0 ? M.mipmaps.length : M.isCompressedTexture && Array.isArray(M.image) ? _.mipmaps.length : 1; + } + function C(M) { + return M === gt || M === ws || M === pr ? i.NEAREST : i.LINEAR; + } + function A(M) { + const _ = M.target; + _.removeEventListener("dispose", A), x(_), _.isVideoTexture && h.delete(_); + } + function W(M) { + const _ = M.target; + _.removeEventListener("dispose", W), z(_); + } + function x(M) { + const _ = n.get(M); + if (_.__webglInit === void 0) return; + const I = M.source, $ = p.get(I); + if ($) { + const K = $[_.__cacheKey]; + K.usedTimes--, K.usedTimes === 0 && y(M), Object.keys($).length === 0 && p.delete(I); + } + n.remove(M); + } + function y(M) { + const _ = n.get(M); + i.deleteTexture(_.__webglTexture); + const I = M.source, $ = p.get(I); + delete $[_.__cacheKey], o.memory.textures--; + } + function z(M) { + const _ = M.texture, I = n.get(M), $ = n.get(_); + if ($.__webglTexture !== void 0 && (i.deleteTexture($.__webglTexture), o.memory.textures--), M.depthTexture && M.depthTexture.dispose(), M.isWebGLCubeRenderTarget) + for (let K = 0; K < 6; K++) { + if (Array.isArray(I.__webglFramebuffer[K])) + for (let J = 0; J < I.__webglFramebuffer[K].length; J++) i.deleteFramebuffer(I.__webglFramebuffer[K][J]); + else + i.deleteFramebuffer(I.__webglFramebuffer[K]); + I.__webglDepthbuffer && i.deleteRenderbuffer(I.__webglDepthbuffer[K]); + } + else { + if (Array.isArray(I.__webglFramebuffer)) + for (let K = 0; K < I.__webglFramebuffer.length; K++) i.deleteFramebuffer(I.__webglFramebuffer[K]); + else + i.deleteFramebuffer(I.__webglFramebuffer); + if (I.__webglDepthbuffer && i.deleteRenderbuffer(I.__webglDepthbuffer), I.__webglMultisampledFramebuffer && i.deleteFramebuffer(I.__webglMultisampledFramebuffer), I.__webglColorRenderbuffer) + for (let K = 0; K < I.__webglColorRenderbuffer.length; K++) + I.__webglColorRenderbuffer[K] && i.deleteRenderbuffer(I.__webglColorRenderbuffer[K]); + I.__webglDepthRenderbuffer && i.deleteRenderbuffer(I.__webglDepthRenderbuffer); + } + if (M.isWebGLMultipleRenderTargets) + for (let K = 0, J = _.length; K < J; K++) { + const me = n.get(_[K]); + me.__webglTexture && (i.deleteTexture(me.__webglTexture), o.memory.textures--), n.remove(_[K]); + } + n.remove(_), n.remove(M); + } + let Z = 0; + function re() { + Z = 0; + } + function L() { + const M = Z; + return M >= r.maxTextures && console.warn("THREE.WebGLTextures: Trying to use " + M + " texture units while this GPU supports only " + r.maxTextures), Z += 1, M; + } + function F(M) { + const _ = []; + return _.push(M.wrapS), _.push(M.wrapT), _.push(M.wrapR || 0), _.push(M.magFilter), _.push(M.minFilter), _.push(M.anisotropy), _.push(M.internalFormat), _.push(M.format), _.push(M.type), _.push(M.generateMipmaps), _.push(M.premultiplyAlpha), _.push(M.flipY), _.push(M.unpackAlignment), _.push(M.colorSpace), _.join(); + } + function V(M, _) { + const I = n.get(M); + if (M.isVideoTexture && je(M), M.isRenderTargetTexture === !1 && M.version > 0 && I.__version !== M.version) { + const $ = M.image; + if ($ === null) + console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found."); + else if ($.complete === !1) + console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete"); + else { + oe(I, M, _); + return; + } + } + t.bindTexture(i.TEXTURE_2D, I.__webglTexture, i.TEXTURE0 + _); + } + function Y(M, _) { + const I = n.get(M); + if (M.version > 0 && I.__version !== M.version) { + oe(I, M, _); + return; + } + t.bindTexture(i.TEXTURE_2D_ARRAY, I.__webglTexture, i.TEXTURE0 + _); + } + function X(M, _) { + const I = n.get(M); + if (M.version > 0 && I.__version !== M.version) { + oe(I, M, _); + return; + } + t.bindTexture(i.TEXTURE_3D, I.__webglTexture, i.TEXTURE0 + _); + } + function k(M, _) { + const I = n.get(M); + if (M.version > 0 && I.__version !== M.version) { + ve(I, M, _); + return; + } + t.bindTexture(i.TEXTURE_CUBE_MAP, I.__webglTexture, i.TEXTURE0 + _); + } + const q = { + [Qr]: i.REPEAT, + [Nt]: i.CLAMP_TO_EDGE, + [es]: i.MIRRORED_REPEAT + }, Q = { + [gt]: i.NEAREST, + [ws]: i.NEAREST_MIPMAP_NEAREST, + [pr]: i.NEAREST_MIPMAP_LINEAR, + [Rt]: i.LINEAR, + [Al]: i.LINEAR_MIPMAP_NEAREST, + [_i]: i.LINEAR_MIPMAP_LINEAR + }, ce = { + [Bl]: i.NEVER, + [Wl]: i.ALWAYS, + [zl]: i.LESS, + [xo]: i.LEQUAL, + [Gl]: i.EQUAL, + [kl]: i.GEQUAL, + [Hl]: i.GREATER, + [Vl]: i.NOTEQUAL + }; + function H(M, _, I) { + if (I ? (i.texParameteri(M, i.TEXTURE_WRAP_S, q[_.wrapS]), i.texParameteri(M, i.TEXTURE_WRAP_T, q[_.wrapT]), (M === i.TEXTURE_3D || M === i.TEXTURE_2D_ARRAY) && i.texParameteri(M, i.TEXTURE_WRAP_R, q[_.wrapR]), i.texParameteri(M, i.TEXTURE_MAG_FILTER, Q[_.magFilter]), i.texParameteri(M, i.TEXTURE_MIN_FILTER, Q[_.minFilter])) : (i.texParameteri(M, i.TEXTURE_WRAP_S, i.CLAMP_TO_EDGE), i.texParameteri(M, i.TEXTURE_WRAP_T, i.CLAMP_TO_EDGE), (M === i.TEXTURE_3D || M === i.TEXTURE_2D_ARRAY) && i.texParameteri(M, i.TEXTURE_WRAP_R, i.CLAMP_TO_EDGE), (_.wrapS !== Nt || _.wrapT !== Nt) && console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."), i.texParameteri(M, i.TEXTURE_MAG_FILTER, C(_.magFilter)), i.texParameteri(M, i.TEXTURE_MIN_FILTER, C(_.minFilter)), _.minFilter !== gt && _.minFilter !== Rt && console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")), _.compareFunction && (i.texParameteri(M, i.TEXTURE_COMPARE_MODE, i.COMPARE_REF_TO_TEXTURE), i.texParameteri(M, i.TEXTURE_COMPARE_FUNC, ce[_.compareFunction])), e.has("EXT_texture_filter_anisotropic") === !0) { + const $ = e.get("EXT_texture_filter_anisotropic"); + if (_.magFilter === gt || _.minFilter !== pr && _.minFilter !== _i || _.type === an && e.has("OES_texture_float_linear") === !1 || a === !1 && _.type === gi && e.has("OES_texture_half_float_linear") === !1) return; + (_.anisotropy > 1 || n.get(_).__currentAnisotropy) && (i.texParameterf(M, $.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(_.anisotropy, r.getMaxAnisotropy())), n.get(_).__currentAnisotropy = _.anisotropy); + } + } + function j(M, _) { + let I = !1; + M.__webglInit === void 0 && (M.__webglInit = !0, _.addEventListener("dispose", A)); + const $ = _.source; + let K = p.get($); + K === void 0 && (K = {}, p.set($, K)); + const J = F(_); + if (J !== M.__cacheKey) { + K[J] === void 0 && (K[J] = { + texture: i.createTexture(), + usedTimes: 0 + }, o.memory.textures++, I = !0), K[J].usedTimes++; + const me = K[M.__cacheKey]; + me !== void 0 && (K[M.__cacheKey].usedTimes--, me.usedTimes === 0 && y(_)), M.__cacheKey = J, M.__webglTexture = K[J].texture; + } + return I; + } + function oe(M, _, I) { + let $ = i.TEXTURE_2D; + (_.isDataArrayTexture || _.isCompressedArrayTexture) && ($ = i.TEXTURE_2D_ARRAY), _.isData3DTexture && ($ = i.TEXTURE_3D); + const K = j(M, _), J = _.source; + t.bindTexture($, M.__webglTexture, i.TEXTURE0 + I); + const me = n.get(J); + if (J.version !== me.__version || K === !0) { + t.activeTexture(i.TEXTURE0 + I); + const ae = Ke.getPrimaries(Ke.workingColorSpace), he = _.colorSpace === Ct ? null : Ke.getPrimaries(_.colorSpace), ye = _.colorSpace === Ct || ae === he ? i.NONE : i.BROWSER_DEFAULT_WEBGL; + i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, _.flipY), i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, _.premultiplyAlpha), i.pixelStorei(i.UNPACK_ALIGNMENT, _.unpackAlignment), i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL, ye); + const Fe = u(_) && f(_.image) === !1; + let ee = v(_.image, Fe, !1, r.maxTextureSize); + ee = be(_, ee); + const Ye = f(ee) || a, ze = s.convert(_.format, _.colorSpace); + let De = s.convert(_.type), Ee = R(_.internalFormat, ze, De, _.colorSpace, _.isVideoTexture); + H($, _, Ye); + let ue; + const T = _.mipmaps, ne = a && _.isVideoTexture !== !0 && Ee !== _o, xe = me.__version === void 0 || K === !0, fe = D(_, ee, Ye); + if (_.isDepthTexture) + Ee = i.DEPTH_COMPONENT, a ? _.type === an ? Ee = i.DEPTH_COMPONENT32F : _.type === sn ? Ee = i.DEPTH_COMPONENT24 : _.type === En ? Ee = i.DEPTH24_STENCIL8 : Ee = i.DEPTH_COMPONENT16 : _.type === an && console.error("WebGLRenderer: Floating point depth texture requires WebGL2."), _.format === yn && Ee === i.DEPTH_COMPONENT && _.type !== as && _.type !== sn && (console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."), _.type = sn, De = s.convert(_.type)), _.format === ti && Ee === i.DEPTH_COMPONENT && (Ee = i.DEPTH_STENCIL, _.type !== En && (console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."), _.type = En, De = s.convert(_.type))), xe && (ne ? t.texStorage2D(i.TEXTURE_2D, 1, Ee, ee.width, ee.height) : t.texImage2D(i.TEXTURE_2D, 0, Ee, ee.width, ee.height, 0, ze, De, null)); + else if (_.isDataTexture) + if (T.length > 0 && Ye) { + ne && xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, T[0].width, T[0].height); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], ne ? t.texSubImage2D(i.TEXTURE_2D, te, 0, 0, ue.width, ue.height, ze, De, ue.data) : t.texImage2D(i.TEXTURE_2D, te, Ee, ue.width, ue.height, 0, ze, De, ue.data); + _.generateMipmaps = !1; + } else + ne ? (xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, ee.width, ee.height), t.texSubImage2D(i.TEXTURE_2D, 0, 0, 0, ee.width, ee.height, ze, De, ee.data)) : t.texImage2D(i.TEXTURE_2D, 0, Ee, ee.width, ee.height, 0, ze, De, ee.data); + else if (_.isCompressedTexture) + if (_.isCompressedArrayTexture) { + ne && xe && t.texStorage3D(i.TEXTURE_2D_ARRAY, fe, Ee, T[0].width, T[0].height, ee.depth); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], _.format !== Ft ? ze !== null ? ne ? t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY, te, 0, 0, 0, ue.width, ue.height, ee.depth, ze, ue.data, 0, 0) : t.compressedTexImage3D(i.TEXTURE_2D_ARRAY, te, Ee, ue.width, ue.height, ee.depth, 0, ue.data, 0, 0) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()") : ne ? t.texSubImage3D(i.TEXTURE_2D_ARRAY, te, 0, 0, 0, ue.width, ue.height, ee.depth, ze, De, ue.data) : t.texImage3D(i.TEXTURE_2D_ARRAY, te, Ee, ue.width, ue.height, ee.depth, 0, ze, De, ue.data); + } else { + ne && xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, T[0].width, T[0].height); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], _.format !== Ft ? ze !== null ? ne ? t.compressedTexSubImage2D(i.TEXTURE_2D, te, 0, 0, ue.width, ue.height, ze, ue.data) : t.compressedTexImage2D(i.TEXTURE_2D, te, Ee, ue.width, ue.height, 0, ue.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()") : ne ? t.texSubImage2D(i.TEXTURE_2D, te, 0, 0, ue.width, ue.height, ze, De, ue.data) : t.texImage2D(i.TEXTURE_2D, te, Ee, ue.width, ue.height, 0, ze, De, ue.data); + } + else if (_.isDataArrayTexture) + ne ? (xe && t.texStorage3D(i.TEXTURE_2D_ARRAY, fe, Ee, ee.width, ee.height, ee.depth), t.texSubImage3D(i.TEXTURE_2D_ARRAY, 0, 0, 0, 0, ee.width, ee.height, ee.depth, ze, De, ee.data)) : t.texImage3D(i.TEXTURE_2D_ARRAY, 0, Ee, ee.width, ee.height, ee.depth, 0, ze, De, ee.data); + else if (_.isData3DTexture) + ne ? (xe && t.texStorage3D(i.TEXTURE_3D, fe, Ee, ee.width, ee.height, ee.depth), t.texSubImage3D(i.TEXTURE_3D, 0, 0, 0, 0, ee.width, ee.height, ee.depth, ze, De, ee.data)) : t.texImage3D(i.TEXTURE_3D, 0, Ee, ee.width, ee.height, ee.depth, 0, ze, De, ee.data); + else if (_.isFramebufferTexture) { + if (xe) + if (ne) + t.texStorage2D(i.TEXTURE_2D, fe, Ee, ee.width, ee.height); + else { + let te = ee.width, w = ee.height; + for (let ie = 0; ie < fe; ie++) + t.texImage2D(i.TEXTURE_2D, ie, Ee, te, w, 0, ze, De, null), te >>= 1, w >>= 1; + } + } else if (T.length > 0 && Ye) { + ne && xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, T[0].width, T[0].height); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], ne ? t.texSubImage2D(i.TEXTURE_2D, te, 0, 0, ze, De, ue) : t.texImage2D(i.TEXTURE_2D, te, Ee, ze, De, ue); + _.generateMipmaps = !1; + } else + ne ? (xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, ee.width, ee.height), t.texSubImage2D(i.TEXTURE_2D, 0, 0, 0, ze, De, ee)) : t.texImage2D(i.TEXTURE_2D, 0, Ee, ze, De, ee); + b(_, Ye) && S($), me.__version = J.version, _.onUpdate && _.onUpdate(_); + } + M.__version = _.version; + } + function ve(M, _, I) { + if (_.image.length !== 6) return; + const $ = j(M, _), K = _.source; + t.bindTexture(i.TEXTURE_CUBE_MAP, M.__webglTexture, i.TEXTURE0 + I); + const J = n.get(K); + if (K.version !== J.__version || $ === !0) { + t.activeTexture(i.TEXTURE0 + I); + const me = Ke.getPrimaries(Ke.workingColorSpace), ae = _.colorSpace === Ct ? null : Ke.getPrimaries(_.colorSpace), he = _.colorSpace === Ct || me === ae ? i.NONE : i.BROWSER_DEFAULT_WEBGL; + i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, _.flipY), i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, _.premultiplyAlpha), i.pixelStorei(i.UNPACK_ALIGNMENT, _.unpackAlignment), i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL, he); + const ye = _.isCompressedTexture || _.image[0].isCompressedTexture, Fe = _.image[0] && _.image[0].isDataTexture, ee = []; + for (let te = 0; te < 6; te++) + !ye && !Fe ? ee[te] = v(_.image[te], !1, !0, r.maxCubemapSize) : ee[te] = Fe ? _.image[te].image : _.image[te], ee[te] = be(_, ee[te]); + const Ye = ee[0], ze = f(Ye) || a, De = s.convert(_.format, _.colorSpace), Ee = s.convert(_.type), ue = R(_.internalFormat, De, Ee, _.colorSpace), T = a && _.isVideoTexture !== !0, ne = J.__version === void 0 || $ === !0; + let xe = D(_, Ye, ze); + H(i.TEXTURE_CUBE_MAP, _, ze); + let fe; + if (ye) { + T && ne && t.texStorage2D(i.TEXTURE_CUBE_MAP, xe, ue, Ye.width, Ye.height); + for (let te = 0; te < 6; te++) { + fe = ee[te].mipmaps; + for (let w = 0; w < fe.length; w++) { + const ie = fe[w]; + _.format !== Ft ? De !== null ? T ? t.compressedTexSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, 0, 0, ie.width, ie.height, De, ie.data) : t.compressedTexImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, ue, ie.width, ie.height, 0, ie.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()") : T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, 0, 0, ie.width, ie.height, De, Ee, ie.data) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, ue, ie.width, ie.height, 0, De, Ee, ie.data); + } + } + } else { + fe = _.mipmaps, T && ne && (fe.length > 0 && xe++, t.texStorage2D(i.TEXTURE_CUBE_MAP, xe, ue, ee[0].width, ee[0].height)); + for (let te = 0; te < 6; te++) + if (Fe) { + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, 0, 0, ee[te].width, ee[te].height, De, Ee, ee[te].data) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, ue, ee[te].width, ee[te].height, 0, De, Ee, ee[te].data); + for (let w = 0; w < fe.length; w++) { + const le = fe[w].image[te].image; + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, 0, 0, le.width, le.height, De, Ee, le.data) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, ue, le.width, le.height, 0, De, Ee, le.data); + } + } else { + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, 0, 0, De, Ee, ee[te]) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, ue, De, Ee, ee[te]); + for (let w = 0; w < fe.length; w++) { + const ie = fe[w]; + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, 0, 0, De, Ee, ie.image[te]) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, ue, De, Ee, ie.image[te]); + } + } + } + b(_, ze) && S(i.TEXTURE_CUBE_MAP), J.__version = K.version, _.onUpdate && _.onUpdate(_); + } + M.__version = _.version; + } + function _e(M, _, I, $, K, J) { + const me = s.convert(I.format, I.colorSpace), ae = s.convert(I.type), he = R(I.internalFormat, me, ae, I.colorSpace); + if (!n.get(_).__hasExternalTextures) { + const Fe = Math.max(1, _.width >> J), ee = Math.max(1, _.height >> J); + K === i.TEXTURE_3D || K === i.TEXTURE_2D_ARRAY ? t.texImage3D(K, J, he, Fe, ee, _.depth, 0, me, ae, null) : t.texImage2D(K, J, he, Fe, ee, 0, me, ae, null); + } + t.bindFramebuffer(i.FRAMEBUFFER, M), pe(_) ? l.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER, $, K, n.get(I).__webglTexture, 0, Re(_)) : (K === i.TEXTURE_2D || K >= i.TEXTURE_CUBE_MAP_POSITIVE_X && K <= i.TEXTURE_CUBE_MAP_NEGATIVE_Z) && i.framebufferTexture2D(i.FRAMEBUFFER, $, K, n.get(I).__webglTexture, J), t.bindFramebuffer(i.FRAMEBUFFER, null); + } + function we(M, _, I) { + if (i.bindRenderbuffer(i.RENDERBUFFER, M), _.depthBuffer && !_.stencilBuffer) { + let $ = a === !0 ? i.DEPTH_COMPONENT24 : i.DEPTH_COMPONENT16; + if (I || pe(_)) { + const K = _.depthTexture; + K && K.isDepthTexture && (K.type === an ? $ = i.DEPTH_COMPONENT32F : K.type === sn && ($ = i.DEPTH_COMPONENT24)); + const J = Re(_); + pe(_) ? l.renderbufferStorageMultisampleEXT(i.RENDERBUFFER, J, $, _.width, _.height) : i.renderbufferStorageMultisample(i.RENDERBUFFER, J, $, _.width, _.height); + } else + i.renderbufferStorage(i.RENDERBUFFER, $, _.width, _.height); + i.framebufferRenderbuffer(i.FRAMEBUFFER, i.DEPTH_ATTACHMENT, i.RENDERBUFFER, M); + } else if (_.depthBuffer && _.stencilBuffer) { + const $ = Re(_); + I && pe(_) === !1 ? i.renderbufferStorageMultisample(i.RENDERBUFFER, $, i.DEPTH24_STENCIL8, _.width, _.height) : pe(_) ? l.renderbufferStorageMultisampleEXT(i.RENDERBUFFER, $, i.DEPTH24_STENCIL8, _.width, _.height) : i.renderbufferStorage(i.RENDERBUFFER, i.DEPTH_STENCIL, _.width, _.height), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.DEPTH_STENCIL_ATTACHMENT, i.RENDERBUFFER, M); + } else { + const $ = _.isWebGLMultipleRenderTargets === !0 ? _.texture : [_.texture]; + for (let K = 0; K < $.length; K++) { + const J = $[K], me = s.convert(J.format, J.colorSpace), ae = s.convert(J.type), he = R(J.internalFormat, me, ae, J.colorSpace), ye = Re(_); + I && pe(_) === !1 ? i.renderbufferStorageMultisample(i.RENDERBUFFER, ye, he, _.width, _.height) : pe(_) ? l.renderbufferStorageMultisampleEXT(i.RENDERBUFFER, ye, he, _.width, _.height) : i.renderbufferStorage(i.RENDERBUFFER, he, _.width, _.height); + } + } + i.bindRenderbuffer(i.RENDERBUFFER, null); + } + function Ae(M, _) { + if (_ && _.isWebGLCubeRenderTarget) throw new Error("Depth Texture with cube render targets is not supported"); + if (t.bindFramebuffer(i.FRAMEBUFFER, M), !(_.depthTexture && _.depthTexture.isDepthTexture)) + throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture"); + (!n.get(_.depthTexture).__webglTexture || _.depthTexture.image.width !== _.width || _.depthTexture.image.height !== _.height) && (_.depthTexture.image.width = _.width, _.depthTexture.image.height = _.height, _.depthTexture.needsUpdate = !0), V(_.depthTexture, 0); + const $ = n.get(_.depthTexture).__webglTexture, K = Re(_); + if (_.depthTexture.format === yn) + pe(_) ? l.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER, i.DEPTH_ATTACHMENT, i.TEXTURE_2D, $, 0, K) : i.framebufferTexture2D(i.FRAMEBUFFER, i.DEPTH_ATTACHMENT, i.TEXTURE_2D, $, 0); + else if (_.depthTexture.format === ti) + pe(_) ? l.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER, i.DEPTH_STENCIL_ATTACHMENT, i.TEXTURE_2D, $, 0, K) : i.framebufferTexture2D(i.FRAMEBUFFER, i.DEPTH_STENCIL_ATTACHMENT, i.TEXTURE_2D, $, 0); + else + throw new Error("Unknown depthTexture format"); + } + function ge(M) { + const _ = n.get(M), I = M.isWebGLCubeRenderTarget === !0; + if (M.depthTexture && !_.__autoAllocateDepthBuffer) { + if (I) throw new Error("target.depthTexture not supported in Cube render targets"); + Ae(_.__webglFramebuffer, M); + } else if (I) { + _.__webglDepthbuffer = []; + for (let $ = 0; $ < 6; $++) + t.bindFramebuffer(i.FRAMEBUFFER, _.__webglFramebuffer[$]), _.__webglDepthbuffer[$] = i.createRenderbuffer(), we(_.__webglDepthbuffer[$], M, !1); + } else + t.bindFramebuffer(i.FRAMEBUFFER, _.__webglFramebuffer), _.__webglDepthbuffer = i.createRenderbuffer(), we(_.__webglDepthbuffer, M, !1); + t.bindFramebuffer(i.FRAMEBUFFER, null); + } + function Pe(M, _, I) { + const $ = n.get(M); + _ !== void 0 && _e($.__webglFramebuffer, M, M.texture, i.COLOR_ATTACHMENT0, i.TEXTURE_2D, 0), I !== void 0 && ge(M); + } + function N(M) { + const _ = M.texture, I = n.get(M), $ = n.get(_); + M.addEventListener("dispose", W), M.isWebGLMultipleRenderTargets !== !0 && ($.__webglTexture === void 0 && ($.__webglTexture = i.createTexture()), $.__version = _.version, o.memory.textures++); + const K = M.isWebGLCubeRenderTarget === !0, J = M.isWebGLMultipleRenderTargets === !0, me = f(M) || a; + if (K) { + I.__webglFramebuffer = []; + for (let ae = 0; ae < 6; ae++) + if (a && _.mipmaps && _.mipmaps.length > 0) { + I.__webglFramebuffer[ae] = []; + for (let he = 0; he < _.mipmaps.length; he++) + I.__webglFramebuffer[ae][he] = i.createFramebuffer(); + } else + I.__webglFramebuffer[ae] = i.createFramebuffer(); + } else { + if (a && _.mipmaps && _.mipmaps.length > 0) { + I.__webglFramebuffer = []; + for (let ae = 0; ae < _.mipmaps.length; ae++) + I.__webglFramebuffer[ae] = i.createFramebuffer(); + } else + I.__webglFramebuffer = i.createFramebuffer(); + if (J) + if (r.drawBuffers) { + const ae = M.texture; + for (let he = 0, ye = ae.length; he < ye; he++) { + const Fe = n.get(ae[he]); + Fe.__webglTexture === void 0 && (Fe.__webglTexture = i.createTexture(), o.memory.textures++); + } + } else + console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension."); + if (a && M.samples > 0 && pe(M) === !1) { + const ae = J ? _ : [_]; + I.__webglMultisampledFramebuffer = i.createFramebuffer(), I.__webglColorRenderbuffer = [], t.bindFramebuffer(i.FRAMEBUFFER, I.__webglMultisampledFramebuffer); + for (let he = 0; he < ae.length; he++) { + const ye = ae[he]; + I.__webglColorRenderbuffer[he] = i.createRenderbuffer(), i.bindRenderbuffer(i.RENDERBUFFER, I.__webglColorRenderbuffer[he]); + const Fe = s.convert(ye.format, ye.colorSpace), ee = s.convert(ye.type), Ye = R(ye.internalFormat, Fe, ee, ye.colorSpace, M.isXRRenderTarget === !0), ze = Re(M); + i.renderbufferStorageMultisample(i.RENDERBUFFER, ze, Ye, M.width, M.height), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.COLOR_ATTACHMENT0 + he, i.RENDERBUFFER, I.__webglColorRenderbuffer[he]); + } + i.bindRenderbuffer(i.RENDERBUFFER, null), M.depthBuffer && (I.__webglDepthRenderbuffer = i.createRenderbuffer(), we(I.__webglDepthRenderbuffer, M, !0)), t.bindFramebuffer(i.FRAMEBUFFER, null); + } + } + if (K) { + t.bindTexture(i.TEXTURE_CUBE_MAP, $.__webglTexture), H(i.TEXTURE_CUBE_MAP, _, me); + for (let ae = 0; ae < 6; ae++) + if (a && _.mipmaps && _.mipmaps.length > 0) + for (let he = 0; he < _.mipmaps.length; he++) + _e(I.__webglFramebuffer[ae][he], M, _, i.COLOR_ATTACHMENT0, i.TEXTURE_CUBE_MAP_POSITIVE_X + ae, he); + else + _e(I.__webglFramebuffer[ae], M, _, i.COLOR_ATTACHMENT0, i.TEXTURE_CUBE_MAP_POSITIVE_X + ae, 0); + b(_, me) && S(i.TEXTURE_CUBE_MAP), t.unbindTexture(); + } else if (J) { + const ae = M.texture; + for (let he = 0, ye = ae.length; he < ye; he++) { + const Fe = ae[he], ee = n.get(Fe); + t.bindTexture(i.TEXTURE_2D, ee.__webglTexture), H(i.TEXTURE_2D, Fe, me), _e(I.__webglFramebuffer, M, Fe, i.COLOR_ATTACHMENT0 + he, i.TEXTURE_2D, 0), b(Fe, me) && S(i.TEXTURE_2D); + } + t.unbindTexture(); + } else { + let ae = i.TEXTURE_2D; + if ((M.isWebGL3DRenderTarget || M.isWebGLArrayRenderTarget) && (a ? ae = M.isWebGL3DRenderTarget ? i.TEXTURE_3D : i.TEXTURE_2D_ARRAY : console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")), t.bindTexture(ae, $.__webglTexture), H(ae, _, me), a && _.mipmaps && _.mipmaps.length > 0) + for (let he = 0; he < _.mipmaps.length; he++) + _e(I.__webglFramebuffer[he], M, _, i.COLOR_ATTACHMENT0, ae, he); + else + _e(I.__webglFramebuffer, M, _, i.COLOR_ATTACHMENT0, ae, 0); + b(_, me) && S(ae), t.unbindTexture(); + } + M.depthBuffer && ge(M); + } + function rt(M) { + const _ = f(M) || a, I = M.isWebGLMultipleRenderTargets === !0 ? M.texture : [M.texture]; + for (let $ = 0, K = I.length; $ < K; $++) { + const J = I[$]; + if (b(J, _)) { + const me = M.isWebGLCubeRenderTarget ? i.TEXTURE_CUBE_MAP : i.TEXTURE_2D, ae = n.get(J).__webglTexture; + t.bindTexture(me, ae), S(me), t.unbindTexture(); + } + } + } + function Me(M) { + if (a && M.samples > 0 && pe(M) === !1) { + const _ = M.isWebGLMultipleRenderTargets ? M.texture : [M.texture], I = M.width, $ = M.height; + let K = i.COLOR_BUFFER_BIT; + const J = [], me = M.stencilBuffer ? i.DEPTH_STENCIL_ATTACHMENT : i.DEPTH_ATTACHMENT, ae = n.get(M), he = M.isWebGLMultipleRenderTargets === !0; + if (he) + for (let ye = 0; ye < _.length; ye++) + t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglMultisampledFramebuffer), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.RENDERBUFFER, null), t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglFramebuffer), i.framebufferTexture2D(i.DRAW_FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.TEXTURE_2D, null, 0); + t.bindFramebuffer(i.READ_FRAMEBUFFER, ae.__webglMultisampledFramebuffer), t.bindFramebuffer(i.DRAW_FRAMEBUFFER, ae.__webglFramebuffer); + for (let ye = 0; ye < _.length; ye++) { + J.push(i.COLOR_ATTACHMENT0 + ye), M.depthBuffer && J.push(me); + const Fe = ae.__ignoreDepthValues !== void 0 ? ae.__ignoreDepthValues : !1; + if (Fe === !1 && (M.depthBuffer && (K |= i.DEPTH_BUFFER_BIT), M.stencilBuffer && (K |= i.STENCIL_BUFFER_BIT)), he && i.framebufferRenderbuffer(i.READ_FRAMEBUFFER, i.COLOR_ATTACHMENT0, i.RENDERBUFFER, ae.__webglColorRenderbuffer[ye]), Fe === !0 && (i.invalidateFramebuffer(i.READ_FRAMEBUFFER, [me]), i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER, [me])), he) { + const ee = n.get(_[ye]).__webglTexture; + i.framebufferTexture2D(i.DRAW_FRAMEBUFFER, i.COLOR_ATTACHMENT0, i.TEXTURE_2D, ee, 0); + } + i.blitFramebuffer(0, 0, I, $, 0, 0, I, $, K, i.NEAREST), c && i.invalidateFramebuffer(i.READ_FRAMEBUFFER, J); + } + if (t.bindFramebuffer(i.READ_FRAMEBUFFER, null), t.bindFramebuffer(i.DRAW_FRAMEBUFFER, null), he) + for (let ye = 0; ye < _.length; ye++) { + t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglMultisampledFramebuffer), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.RENDERBUFFER, ae.__webglColorRenderbuffer[ye]); + const Fe = n.get(_[ye]).__webglTexture; + t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglFramebuffer), i.framebufferTexture2D(i.DRAW_FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.TEXTURE_2D, Fe, 0); + } + t.bindFramebuffer(i.DRAW_FRAMEBUFFER, ae.__webglMultisampledFramebuffer); + } + } + function Re(M) { + return Math.min(r.maxSamples, M.samples); + } + function pe(M) { + const _ = n.get(M); + return a && M.samples > 0 && e.has("WEBGL_multisampled_render_to_texture") === !0 && _.__useRenderToTexture !== !1; + } + function je(M) { + const _ = o.render.frame; + h.get(M) !== _ && (h.set(M, _), M.update()); + } + function be(M, _) { + const I = M.colorSpace, $ = M.format, K = M.type; + return M.isCompressedTexture === !0 || M.isVideoTexture === !0 || M.format === ts || I !== $t && I !== Ct && (Ke.getTransfer(I) === Ze ? a === !1 ? e.has("EXT_sRGB") === !0 && $ === Ft ? (M.format = ts, M.minFilter = Rt, M.generateMipmaps = !1) : _ = So.sRGBToLinear(_) : ($ !== Ft || K !== cn) && console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.") : console.error("THREE.WebGLTextures: Unsupported texture color space:", I)), _; + } + this.allocateTextureUnit = L, this.resetTextureUnits = re, this.setTexture2D = V, this.setTexture2DArray = Y, this.setTexture3D = X, this.setTextureCube = k, this.rebindTextures = Pe, this.setupRenderTarget = N, this.updateRenderTargetMipmap = rt, this.updateMultisampleRenderTarget = Me, this.setupDepthRenderbuffer = ge, this.setupFrameBufferTexture = _e, this.useMultisampledRTT = pe; +} +function Yf(i, e, t) { + const n = t.isWebGL2; + function r(s, o = Ct) { + let a; + const l = Ke.getTransfer(o); + if (s === cn) return i.UNSIGNED_BYTE; + if (s === uo) return i.UNSIGNED_SHORT_4_4_4_4; + if (s === ho) return i.UNSIGNED_SHORT_5_5_5_1; + if (s === wl) return i.BYTE; + if (s === Rl) return i.SHORT; + if (s === as) return i.UNSIGNED_SHORT; + if (s === co) return i.INT; + if (s === sn) return i.UNSIGNED_INT; + if (s === an) return i.FLOAT; + if (s === gi) + return n ? i.HALF_FLOAT : (a = e.get("OES_texture_half_float"), a !== null ? a.HALF_FLOAT_OES : null); + if (s === Cl) return i.ALPHA; + if (s === Ft) return i.RGBA; + if (s === Ll) return i.LUMINANCE; + if (s === Pl) return i.LUMINANCE_ALPHA; + if (s === yn) return i.DEPTH_COMPONENT; + if (s === ti) return i.DEPTH_STENCIL; + if (s === ts) + return a = e.get("EXT_sRGB"), a !== null ? a.SRGB_ALPHA_EXT : null; + if (s === Dl) return i.RED; + if (s === fo) return i.RED_INTEGER; + if (s === Ul) return i.RG; + if (s === po) return i.RG_INTEGER; + if (s === mo) return i.RGBA_INTEGER; + if (s === mr || s === _r || s === gr || s === vr) + if (l === Ze) + if (a = e.get("WEBGL_compressed_texture_s3tc_srgb"), a !== null) { + if (s === mr) return a.COMPRESSED_SRGB_S3TC_DXT1_EXT; + if (s === _r) return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; + if (s === gr) return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; + if (s === vr) return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; + } else + return null; + else if (a = e.get("WEBGL_compressed_texture_s3tc"), a !== null) { + if (s === mr) return a.COMPRESSED_RGB_S3TC_DXT1_EXT; + if (s === _r) return a.COMPRESSED_RGBA_S3TC_DXT1_EXT; + if (s === gr) return a.COMPRESSED_RGBA_S3TC_DXT3_EXT; + if (s === vr) return a.COMPRESSED_RGBA_S3TC_DXT5_EXT; + } else + return null; + if (s === Rs || s === Cs || s === Ls || s === Ps) + if (a = e.get("WEBGL_compressed_texture_pvrtc"), a !== null) { + if (s === Rs) return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + if (s === Cs) return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + if (s === Ls) return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + if (s === Ps) return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + } else + return null; + if (s === _o) + return a = e.get("WEBGL_compressed_texture_etc1"), a !== null ? a.COMPRESSED_RGB_ETC1_WEBGL : null; + if (s === Ds || s === Us) + if (a = e.get("WEBGL_compressed_texture_etc"), a !== null) { + if (s === Ds) return l === Ze ? a.COMPRESSED_SRGB8_ETC2 : a.COMPRESSED_RGB8_ETC2; + if (s === Us) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : a.COMPRESSED_RGBA8_ETC2_EAC; + } else + return null; + if (s === Is || s === Ns || s === Fs || s === Os || s === Bs || s === zs || s === Gs || s === Hs || s === Vs || s === ks || s === Ws || s === Xs || s === qs || s === Ys) + if (a = e.get("WEBGL_compressed_texture_astc"), a !== null) { + if (s === Is) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : a.COMPRESSED_RGBA_ASTC_4x4_KHR; + if (s === Ns) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : a.COMPRESSED_RGBA_ASTC_5x4_KHR; + if (s === Fs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : a.COMPRESSED_RGBA_ASTC_5x5_KHR; + if (s === Os) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : a.COMPRESSED_RGBA_ASTC_6x5_KHR; + if (s === Bs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : a.COMPRESSED_RGBA_ASTC_6x6_KHR; + if (s === zs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : a.COMPRESSED_RGBA_ASTC_8x5_KHR; + if (s === Gs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : a.COMPRESSED_RGBA_ASTC_8x6_KHR; + if (s === Hs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : a.COMPRESSED_RGBA_ASTC_8x8_KHR; + if (s === Vs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : a.COMPRESSED_RGBA_ASTC_10x5_KHR; + if (s === ks) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : a.COMPRESSED_RGBA_ASTC_10x6_KHR; + if (s === Ws) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : a.COMPRESSED_RGBA_ASTC_10x8_KHR; + if (s === Xs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : a.COMPRESSED_RGBA_ASTC_10x10_KHR; + if (s === qs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : a.COMPRESSED_RGBA_ASTC_12x10_KHR; + if (s === Ys) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : a.COMPRESSED_RGBA_ASTC_12x12_KHR; + } else + return null; + if (s === xr || s === js || s === Ks) + if (a = e.get("EXT_texture_compression_bptc"), a !== null) { + if (s === xr) return l === Ze ? a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : a.COMPRESSED_RGBA_BPTC_UNORM_EXT; + if (s === js) return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT; + if (s === Ks) return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT; + } else + return null; + if (s === Il || s === Zs || s === $s || s === Js) + if (a = e.get("EXT_texture_compression_rgtc"), a !== null) { + if (s === xr) return a.COMPRESSED_RED_RGTC1_EXT; + if (s === Zs) return a.COMPRESSED_SIGNED_RED_RGTC1_EXT; + if (s === $s) return a.COMPRESSED_RED_GREEN_RGTC2_EXT; + if (s === Js) return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT; + } else + return null; + return s === En ? n ? i.UNSIGNED_INT_24_8 : (a = e.get("WEBGL_depth_texture"), a !== null ? a.UNSIGNED_INT_24_8_WEBGL : null) : i[s] !== void 0 ? i[s] : null; + } + return { convert: r }; +} +class jf extends Tt { + constructor(e = []) { + super(), this.isArrayCamera = !0, this.cameras = e; + } +} +class qi extends dt { + constructor() { + super(), this.isGroup = !0, this.type = "Group"; + } +} +const Kf = { type: "move" }; +class kr { + constructor() { + this._targetRay = null, this._grip = null, this._hand = null; + } + getHandSpace() { + return this._hand === null && (this._hand = new qi(), this._hand.matrixAutoUpdate = !1, this._hand.visible = !1, this._hand.joints = {}, this._hand.inputState = { pinching: !1 }), this._hand; + } + getTargetRaySpace() { + return this._targetRay === null && (this._targetRay = new qi(), this._targetRay.matrixAutoUpdate = !1, this._targetRay.visible = !1, this._targetRay.hasLinearVelocity = !1, this._targetRay.linearVelocity = new P(), this._targetRay.hasAngularVelocity = !1, this._targetRay.angularVelocity = new P()), this._targetRay; + } + getGripSpace() { + return this._grip === null && (this._grip = new qi(), this._grip.matrixAutoUpdate = !1, this._grip.visible = !1, this._grip.hasLinearVelocity = !1, this._grip.linearVelocity = new P(), this._grip.hasAngularVelocity = !1, this._grip.angularVelocity = new P()), this._grip; + } + dispatchEvent(e) { + return this._targetRay !== null && this._targetRay.dispatchEvent(e), this._grip !== null && this._grip.dispatchEvent(e), this._hand !== null && this._hand.dispatchEvent(e), this; + } + connect(e) { + if (e && e.hand) { + const t = this._hand; + if (t) + for (const n of e.hand.values()) + this._getHandJoint(t, n); + } + return this.dispatchEvent({ type: "connected", data: e }), this; + } + disconnect(e) { + return this.dispatchEvent({ type: "disconnected", data: e }), this._targetRay !== null && (this._targetRay.visible = !1), this._grip !== null && (this._grip.visible = !1), this._hand !== null && (this._hand.visible = !1), this; + } + update(e, t, n) { + let r = null, s = null, o = null; + const a = this._targetRay, l = this._grip, c = this._hand; + if (e && t.session.visibilityState !== "visible-blurred") { + if (c && e.hand) { + o = !0; + for (const v of e.hand.values()) { + const f = t.getJointPose(v, n), u = this._getHandJoint(c, v); + f !== null && (u.matrix.fromArray(f.transform.matrix), u.matrix.decompose(u.position, u.rotation, u.scale), u.matrixWorldNeedsUpdate = !0, u.jointRadius = f.radius), u.visible = f !== null; + } + const h = c.joints["index-finger-tip"], d = c.joints["thumb-tip"], p = h.position.distanceTo(d.position), m = 0.02, g = 5e-3; + c.inputState.pinching && p > m + g ? (c.inputState.pinching = !1, this.dispatchEvent({ + type: "pinchend", + handedness: e.handedness, + target: this + })) : !c.inputState.pinching && p <= m - g && (c.inputState.pinching = !0, this.dispatchEvent({ + type: "pinchstart", + handedness: e.handedness, + target: this + })); + } else + l !== null && e.gripSpace && (s = t.getPose(e.gripSpace, n), s !== null && (l.matrix.fromArray(s.transform.matrix), l.matrix.decompose(l.position, l.rotation, l.scale), l.matrixWorldNeedsUpdate = !0, s.linearVelocity ? (l.hasLinearVelocity = !0, l.linearVelocity.copy(s.linearVelocity)) : l.hasLinearVelocity = !1, s.angularVelocity ? (l.hasAngularVelocity = !0, l.angularVelocity.copy(s.angularVelocity)) : l.hasAngularVelocity = !1)); + a !== null && (r = t.getPose(e.targetRaySpace, n), r === null && s !== null && (r = s), r !== null && (a.matrix.fromArray(r.transform.matrix), a.matrix.decompose(a.position, a.rotation, a.scale), a.matrixWorldNeedsUpdate = !0, r.linearVelocity ? (a.hasLinearVelocity = !0, a.linearVelocity.copy(r.linearVelocity)) : a.hasLinearVelocity = !1, r.angularVelocity ? (a.hasAngularVelocity = !0, a.angularVelocity.copy(r.angularVelocity)) : a.hasAngularVelocity = !1, this.dispatchEvent(Kf))); + } + return a !== null && (a.visible = r !== null), l !== null && (l.visible = s !== null), c !== null && (c.visible = o !== null), this; + } + // private method + _getHandJoint(e, t) { + if (e.joints[t.jointName] === void 0) { + const n = new qi(); + n.matrixAutoUpdate = !1, n.visible = !1, e.joints[t.jointName] = n, e.add(n); + } + return e.joints[t.jointName]; + } +} +class Zf extends Rn { + constructor(e, t) { + super(); + const n = this; + let r = null, s = 1, o = null, a = "local-floor", l = 1, c = null, h = null, d = null, p = null, m = null, g = null; + const v = t.getContextAttributes(); + let f = null, u = null; + const b = [], S = [], R = new Ie(); + let D = null; + const C = new Tt(); + C.layers.enable(1), C.viewport = new $e(); + const A = new Tt(); + A.layers.enable(2), A.viewport = new $e(); + const W = [C, A], x = new jf(); + x.layers.enable(1), x.layers.enable(2); + let y = null, z = null; + this.cameraAutoUpdate = !0, this.enabled = !1, this.isPresenting = !1, this.getController = function(H) { + let j = b[H]; + return j === void 0 && (j = new kr(), b[H] = j), j.getTargetRaySpace(); + }, this.getControllerGrip = function(H) { + let j = b[H]; + return j === void 0 && (j = new kr(), b[H] = j), j.getGripSpace(); + }, this.getHand = function(H) { + let j = b[H]; + return j === void 0 && (j = new kr(), b[H] = j), j.getHandSpace(); + }; + function Z(H) { + const j = S.indexOf(H.inputSource); + if (j === -1) + return; + const oe = b[j]; + oe !== void 0 && (oe.update(H.inputSource, H.frame, c || o), oe.dispatchEvent({ type: H.type, data: H.inputSource })); + } + function re() { + r.removeEventListener("select", Z), r.removeEventListener("selectstart", Z), r.removeEventListener("selectend", Z), r.removeEventListener("squeeze", Z), r.removeEventListener("squeezestart", Z), r.removeEventListener("squeezeend", Z), r.removeEventListener("end", re), r.removeEventListener("inputsourceschange", L); + for (let H = 0; H < b.length; H++) { + const j = S[H]; + j !== null && (S[H] = null, b[H].disconnect(j)); + } + y = null, z = null, e.setRenderTarget(f), m = null, p = null, d = null, r = null, u = null, ce.stop(), n.isPresenting = !1, e.setPixelRatio(D), e.setSize(R.width, R.height, !1), n.dispatchEvent({ type: "sessionend" }); + } + this.setFramebufferScaleFactor = function(H) { + s = H, n.isPresenting === !0 && console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting."); + }, this.setReferenceSpaceType = function(H) { + a = H, n.isPresenting === !0 && console.warn("THREE.WebXRManager: Cannot change reference space type while presenting."); + }, this.getReferenceSpace = function() { + return c || o; + }, this.setReferenceSpace = function(H) { + c = H; + }, this.getBaseLayer = function() { + return p !== null ? p : m; + }, this.getBinding = function() { + return d; + }, this.getFrame = function() { + return g; + }, this.getSession = function() { + return r; + }, this.setSession = async function(H) { + if (r = H, r !== null) { + if (f = e.getRenderTarget(), r.addEventListener("select", Z), r.addEventListener("selectstart", Z), r.addEventListener("selectend", Z), r.addEventListener("squeeze", Z), r.addEventListener("squeezestart", Z), r.addEventListener("squeezeend", Z), r.addEventListener("end", re), r.addEventListener("inputsourceschange", L), v.xrCompatible !== !0 && await t.makeXRCompatible(), D = e.getPixelRatio(), e.getSize(R), r.renderState.layers === void 0 || e.capabilities.isWebGL2 === !1) { + const j = { + antialias: r.renderState.layers === void 0 ? v.antialias : !0, + alpha: !0, + depth: v.depth, + stencil: v.stencil, + framebufferScaleFactor: s + }; + m = new XRWebGLLayer(r, t, j), r.updateRenderState({ baseLayer: m }), e.setPixelRatio(1), e.setSize(m.framebufferWidth, m.framebufferHeight, !1), u = new bn( + m.framebufferWidth, + m.framebufferHeight, + { + format: Ft, + type: cn, + colorSpace: e.outputColorSpace, + stencilBuffer: v.stencil + } + ); + } else { + let j = null, oe = null, ve = null; + v.depth && (ve = v.stencil ? t.DEPTH24_STENCIL8 : t.DEPTH_COMPONENT24, j = v.stencil ? ti : yn, oe = v.stencil ? En : sn); + const _e = { + colorFormat: t.RGBA8, + depthFormat: ve, + scaleFactor: s + }; + d = new XRWebGLBinding(r, t), p = d.createProjectionLayer(_e), r.updateRenderState({ layers: [p] }), e.setPixelRatio(1), e.setSize(p.textureWidth, p.textureHeight, !1), u = new bn( + p.textureWidth, + p.textureHeight, + { + format: Ft, + type: cn, + depthTexture: new Io(p.textureWidth, p.textureHeight, oe, void 0, void 0, void 0, void 0, void 0, void 0, j), + stencilBuffer: v.stencil, + colorSpace: e.outputColorSpace, + samples: v.antialias ? 4 : 0 + } + ); + const we = e.properties.get(u); + we.__ignoreDepthValues = p.ignoreDepthValues; + } + u.isXRRenderTarget = !0, this.setFoveation(l), c = null, o = await r.requestReferenceSpace(a), ce.setContext(r), ce.start(), n.isPresenting = !0, n.dispatchEvent({ type: "sessionstart" }); + } + }, this.getEnvironmentBlendMode = function() { + if (r !== null) + return r.environmentBlendMode; + }; + function L(H) { + for (let j = 0; j < H.removed.length; j++) { + const oe = H.removed[j], ve = S.indexOf(oe); + ve >= 0 && (S[ve] = null, b[ve].disconnect(oe)); + } + for (let j = 0; j < H.added.length; j++) { + const oe = H.added[j]; + let ve = S.indexOf(oe); + if (ve === -1) { + for (let we = 0; we < b.length; we++) + if (we >= S.length) { + S.push(oe), ve = we; + break; + } else if (S[we] === null) { + S[we] = oe, ve = we; + break; + } + if (ve === -1) break; + } + const _e = b[ve]; + _e && _e.connect(oe); + } + } + const F = new P(), V = new P(); + function Y(H, j, oe) { + F.setFromMatrixPosition(j.matrixWorld), V.setFromMatrixPosition(oe.matrixWorld); + const ve = F.distanceTo(V), _e = j.projectionMatrix.elements, we = oe.projectionMatrix.elements, Ae = _e[14] / (_e[10] - 1), ge = _e[14] / (_e[10] + 1), Pe = (_e[9] + 1) / _e[5], N = (_e[9] - 1) / _e[5], rt = (_e[8] - 1) / _e[0], Me = (we[8] + 1) / we[0], Re = Ae * rt, pe = Ae * Me, je = ve / (-rt + Me), be = je * -rt; + j.matrixWorld.decompose(H.position, H.quaternion, H.scale), H.translateX(be), H.translateZ(je), H.matrixWorld.compose(H.position, H.quaternion, H.scale), H.matrixWorldInverse.copy(H.matrixWorld).invert(); + const M = Ae + je, _ = ge + je, I = Re - be, $ = pe + (ve - be), K = Pe * ge / _ * M, J = N * ge / _ * M; + H.projectionMatrix.makePerspective(I, $, K, J, M, _), H.projectionMatrixInverse.copy(H.projectionMatrix).invert(); + } + function X(H, j) { + j === null ? H.matrixWorld.copy(H.matrix) : H.matrixWorld.multiplyMatrices(j.matrixWorld, H.matrix), H.matrixWorldInverse.copy(H.matrixWorld).invert(); + } + this.updateCamera = function(H) { + if (r === null) return; + x.near = A.near = C.near = H.near, x.far = A.far = C.far = H.far, (y !== x.near || z !== x.far) && (r.updateRenderState({ + depthNear: x.near, + depthFar: x.far + }), y = x.near, z = x.far); + const j = H.parent, oe = x.cameras; + X(x, j); + for (let ve = 0; ve < oe.length; ve++) + X(oe[ve], j); + oe.length === 2 ? Y(x, C, A) : x.projectionMatrix.copy(C.projectionMatrix), k(H, x, j); + }; + function k(H, j, oe) { + oe === null ? H.matrix.copy(j.matrixWorld) : (H.matrix.copy(oe.matrixWorld), H.matrix.invert(), H.matrix.multiply(j.matrixWorld)), H.matrix.decompose(H.position, H.quaternion, H.scale), H.updateMatrixWorld(!0), H.projectionMatrix.copy(j.projectionMatrix), H.projectionMatrixInverse.copy(j.projectionMatrixInverse), H.isPerspectiveCamera && (H.fov = ns * 2 * Math.atan(1 / H.projectionMatrix.elements[5]), H.zoom = 1); + } + this.getCamera = function() { + return x; + }, this.getFoveation = function() { + if (!(p === null && m === null)) + return l; + }, this.setFoveation = function(H) { + l = H, p !== null && (p.fixedFoveation = H), m !== null && m.fixedFoveation !== void 0 && (m.fixedFoveation = H); + }; + let q = null; + function Q(H, j) { + if (h = j.getViewerPose(c || o), g = j, h !== null) { + const oe = h.views; + m !== null && (e.setRenderTargetFramebuffer(u, m.framebuffer), e.setRenderTarget(u)); + let ve = !1; + oe.length !== x.cameras.length && (x.cameras.length = 0, ve = !0); + for (let _e = 0; _e < oe.length; _e++) { + const we = oe[_e]; + let Ae = null; + if (m !== null) + Ae = m.getViewport(we); + else { + const Pe = d.getViewSubImage(p, we); + Ae = Pe.viewport, _e === 0 && (e.setRenderTargetTextures( + u, + Pe.colorTexture, + p.ignoreDepthValues ? void 0 : Pe.depthStencilTexture + ), e.setRenderTarget(u)); + } + let ge = W[_e]; + ge === void 0 && (ge = new Tt(), ge.layers.enable(_e), ge.viewport = new $e(), W[_e] = ge), ge.matrix.fromArray(we.transform.matrix), ge.matrix.decompose(ge.position, ge.quaternion, ge.scale), ge.projectionMatrix.fromArray(we.projectionMatrix), ge.projectionMatrixInverse.copy(ge.projectionMatrix).invert(), ge.viewport.set(Ae.x, Ae.y, Ae.width, Ae.height), _e === 0 && (x.matrix.copy(ge.matrix), x.matrix.decompose(x.position, x.quaternion, x.scale)), ve === !0 && x.cameras.push(ge); + } + } + for (let oe = 0; oe < b.length; oe++) { + const ve = S[oe], _e = b[oe]; + ve !== null && _e !== void 0 && _e.update(ve, j, c || o); + } + q && q(H, j), j.detectedPlanes && n.dispatchEvent({ type: "planesdetected", data: j }), g = null; + } + const ce = new Do(); + ce.setAnimationLoop(Q), this.setAnimationLoop = function(H) { + q = H; + }, this.dispose = function() { + }; + } +} +function $f(i, e) { + function t(f, u) { + f.matrixAutoUpdate === !0 && f.updateMatrix(), u.value.copy(f.matrix); + } + function n(f, u) { + u.color.getRGB(f.fogColor.value, Co(i)), u.isFog ? (f.fogNear.value = u.near, f.fogFar.value = u.far) : u.isFogExp2 && (f.fogDensity.value = u.density); + } + function r(f, u, b, S, R) { + u.isMeshBasicMaterial || u.isMeshLambertMaterial ? s(f, u) : u.isMeshToonMaterial ? (s(f, u), d(f, u)) : u.isMeshPhongMaterial ? (s(f, u), h(f, u)) : u.isMeshStandardMaterial ? (s(f, u), p(f, u), u.isMeshPhysicalMaterial && m(f, u, R)) : u.isMeshMatcapMaterial ? (s(f, u), g(f, u)) : u.isMeshDepthMaterial ? s(f, u) : u.isMeshDistanceMaterial ? (s(f, u), v(f, u)) : u.isMeshNormalMaterial ? s(f, u) : u.isLineBasicMaterial ? (o(f, u), u.isLineDashedMaterial && a(f, u)) : u.isPointsMaterial ? l(f, u, b, S) : u.isSpriteMaterial ? c(f, u) : u.isShadowMaterial ? (f.color.value.copy(u.color), f.opacity.value = u.opacity) : u.isShaderMaterial && (u.uniformsNeedUpdate = !1); + } + function s(f, u) { + f.opacity.value = u.opacity, u.color && f.diffuse.value.copy(u.color), u.emissive && f.emissive.value.copy(u.emissive).multiplyScalar(u.emissiveIntensity), u.map && (f.map.value = u.map, t(u.map, f.mapTransform)), u.alphaMap && (f.alphaMap.value = u.alphaMap, t(u.alphaMap, f.alphaMapTransform)), u.bumpMap && (f.bumpMap.value = u.bumpMap, t(u.bumpMap, f.bumpMapTransform), f.bumpScale.value = u.bumpScale, u.side === Mt && (f.bumpScale.value *= -1)), u.normalMap && (f.normalMap.value = u.normalMap, t(u.normalMap, f.normalMapTransform), f.normalScale.value.copy(u.normalScale), u.side === Mt && f.normalScale.value.negate()), u.displacementMap && (f.displacementMap.value = u.displacementMap, t(u.displacementMap, f.displacementMapTransform), f.displacementScale.value = u.displacementScale, f.displacementBias.value = u.displacementBias), u.emissiveMap && (f.emissiveMap.value = u.emissiveMap, t(u.emissiveMap, f.emissiveMapTransform)), u.specularMap && (f.specularMap.value = u.specularMap, t(u.specularMap, f.specularMapTransform)), u.alphaTest > 0 && (f.alphaTest.value = u.alphaTest); + const b = e.get(u).envMap; + if (b && (f.envMap.value = b, f.flipEnvMap.value = b.isCubeTexture && b.isRenderTargetTexture === !1 ? -1 : 1, f.reflectivity.value = u.reflectivity, f.ior.value = u.ior, f.refractionRatio.value = u.refractionRatio), u.lightMap) { + f.lightMap.value = u.lightMap; + const S = i._useLegacyLights === !0 ? Math.PI : 1; + f.lightMapIntensity.value = u.lightMapIntensity * S, t(u.lightMap, f.lightMapTransform); + } + u.aoMap && (f.aoMap.value = u.aoMap, f.aoMapIntensity.value = u.aoMapIntensity, t(u.aoMap, f.aoMapTransform)); + } + function o(f, u) { + f.diffuse.value.copy(u.color), f.opacity.value = u.opacity, u.map && (f.map.value = u.map, t(u.map, f.mapTransform)); + } + function a(f, u) { + f.dashSize.value = u.dashSize, f.totalSize.value = u.dashSize + u.gapSize, f.scale.value = u.scale; + } + function l(f, u, b, S) { + f.diffuse.value.copy(u.color), f.opacity.value = u.opacity, f.size.value = u.size * b, f.scale.value = S * 0.5, u.map && (f.map.value = u.map, t(u.map, f.uvTransform)), u.alphaMap && (f.alphaMap.value = u.alphaMap, t(u.alphaMap, f.alphaMapTransform)), u.alphaTest > 0 && (f.alphaTest.value = u.alphaTest); + } + function c(f, u) { + f.diffuse.value.copy(u.color), f.opacity.value = u.opacity, f.rotation.value = u.rotation, u.map && (f.map.value = u.map, t(u.map, f.mapTransform)), u.alphaMap && (f.alphaMap.value = u.alphaMap, t(u.alphaMap, f.alphaMapTransform)), u.alphaTest > 0 && (f.alphaTest.value = u.alphaTest); + } + function h(f, u) { + f.specular.value.copy(u.specular), f.shininess.value = Math.max(u.shininess, 1e-4); + } + function d(f, u) { + u.gradientMap && (f.gradientMap.value = u.gradientMap); + } + function p(f, u) { + f.metalness.value = u.metalness, u.metalnessMap && (f.metalnessMap.value = u.metalnessMap, t(u.metalnessMap, f.metalnessMapTransform)), f.roughness.value = u.roughness, u.roughnessMap && (f.roughnessMap.value = u.roughnessMap, t(u.roughnessMap, f.roughnessMapTransform)), e.get(u).envMap && (f.envMapIntensity.value = u.envMapIntensity); + } + function m(f, u, b) { + f.ior.value = u.ior, u.sheen > 0 && (f.sheenColor.value.copy(u.sheenColor).multiplyScalar(u.sheen), f.sheenRoughness.value = u.sheenRoughness, u.sheenColorMap && (f.sheenColorMap.value = u.sheenColorMap, t(u.sheenColorMap, f.sheenColorMapTransform)), u.sheenRoughnessMap && (f.sheenRoughnessMap.value = u.sheenRoughnessMap, t(u.sheenRoughnessMap, f.sheenRoughnessMapTransform))), u.clearcoat > 0 && (f.clearcoat.value = u.clearcoat, f.clearcoatRoughness.value = u.clearcoatRoughness, u.clearcoatMap && (f.clearcoatMap.value = u.clearcoatMap, t(u.clearcoatMap, f.clearcoatMapTransform)), u.clearcoatRoughnessMap && (f.clearcoatRoughnessMap.value = u.clearcoatRoughnessMap, t(u.clearcoatRoughnessMap, f.clearcoatRoughnessMapTransform)), u.clearcoatNormalMap && (f.clearcoatNormalMap.value = u.clearcoatNormalMap, t(u.clearcoatNormalMap, f.clearcoatNormalMapTransform), f.clearcoatNormalScale.value.copy(u.clearcoatNormalScale), u.side === Mt && f.clearcoatNormalScale.value.negate())), u.iridescence > 0 && (f.iridescence.value = u.iridescence, f.iridescenceIOR.value = u.iridescenceIOR, f.iridescenceThicknessMinimum.value = u.iridescenceThicknessRange[0], f.iridescenceThicknessMaximum.value = u.iridescenceThicknessRange[1], u.iridescenceMap && (f.iridescenceMap.value = u.iridescenceMap, t(u.iridescenceMap, f.iridescenceMapTransform)), u.iridescenceThicknessMap && (f.iridescenceThicknessMap.value = u.iridescenceThicknessMap, t(u.iridescenceThicknessMap, f.iridescenceThicknessMapTransform))), u.transmission > 0 && (f.transmission.value = u.transmission, f.transmissionSamplerMap.value = b.texture, f.transmissionSamplerSize.value.set(b.width, b.height), u.transmissionMap && (f.transmissionMap.value = u.transmissionMap, t(u.transmissionMap, f.transmissionMapTransform)), f.thickness.value = u.thickness, u.thicknessMap && (f.thicknessMap.value = u.thicknessMap, t(u.thicknessMap, f.thicknessMapTransform)), f.attenuationDistance.value = u.attenuationDistance, f.attenuationColor.value.copy(u.attenuationColor)), u.anisotropy > 0 && (f.anisotropyVector.value.set(u.anisotropy * Math.cos(u.anisotropyRotation), u.anisotropy * Math.sin(u.anisotropyRotation)), u.anisotropyMap && (f.anisotropyMap.value = u.anisotropyMap, t(u.anisotropyMap, f.anisotropyMapTransform))), f.specularIntensity.value = u.specularIntensity, f.specularColor.value.copy(u.specularColor), u.specularColorMap && (f.specularColorMap.value = u.specularColorMap, t(u.specularColorMap, f.specularColorMapTransform)), u.specularIntensityMap && (f.specularIntensityMap.value = u.specularIntensityMap, t(u.specularIntensityMap, f.specularIntensityMapTransform)); + } + function g(f, u) { + u.matcap && (f.matcap.value = u.matcap); + } + function v(f, u) { + const b = e.get(u).light; + f.referencePosition.value.setFromMatrixPosition(b.matrixWorld), f.nearDistance.value = b.shadow.camera.near, f.farDistance.value = b.shadow.camera.far; + } + return { + refreshFogUniforms: n, + refreshMaterialUniforms: r + }; +} +function Jf(i, e, t, n) { + let r = {}, s = {}, o = []; + const a = t.isWebGL2 ? i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS) : 0; + function l(b, S) { + const R = S.program; + n.uniformBlockBinding(b, R); + } + function c(b, S) { + let R = r[b.id]; + R === void 0 && (g(b), R = h(b), r[b.id] = R, b.addEventListener("dispose", f)); + const D = S.program; + n.updateUBOMapping(b, D); + const C = e.render.frame; + s[b.id] !== C && (p(b), s[b.id] = C); + } + function h(b) { + const S = d(); + b.__bindingPointIndex = S; + const R = i.createBuffer(), D = b.__size, C = b.usage; + return i.bindBuffer(i.UNIFORM_BUFFER, R), i.bufferData(i.UNIFORM_BUFFER, D, C), i.bindBuffer(i.UNIFORM_BUFFER, null), i.bindBufferBase(i.UNIFORM_BUFFER, S, R), R; + } + function d() { + for (let b = 0; b < a; b++) + if (o.indexOf(b) === -1) + return o.push(b), b; + return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."), 0; + } + function p(b) { + const S = r[b.id], R = b.uniforms, D = b.__cache; + i.bindBuffer(i.UNIFORM_BUFFER, S); + for (let C = 0, A = R.length; C < A; C++) { + const W = Array.isArray(R[C]) ? R[C] : [R[C]]; + for (let x = 0, y = W.length; x < y; x++) { + const z = W[x]; + if (m(z, C, x, D) === !0) { + const Z = z.__offset, re = Array.isArray(z.value) ? z.value : [z.value]; + let L = 0; + for (let F = 0; F < re.length; F++) { + const V = re[F], Y = v(V); + typeof V == "number" || typeof V == "boolean" ? (z.__data[0] = V, i.bufferSubData(i.UNIFORM_BUFFER, Z + L, z.__data)) : V.isMatrix3 ? (z.__data[0] = V.elements[0], z.__data[1] = V.elements[1], z.__data[2] = V.elements[2], z.__data[3] = 0, z.__data[4] = V.elements[3], z.__data[5] = V.elements[4], z.__data[6] = V.elements[5], z.__data[7] = 0, z.__data[8] = V.elements[6], z.__data[9] = V.elements[7], z.__data[10] = V.elements[8], z.__data[11] = 0) : (V.toArray(z.__data, L), L += Y.storage / Float32Array.BYTES_PER_ELEMENT); + } + i.bufferSubData(i.UNIFORM_BUFFER, Z, z.__data); + } + } + } + i.bindBuffer(i.UNIFORM_BUFFER, null); + } + function m(b, S, R, D) { + const C = b.value, A = S + "_" + R; + if (D[A] === void 0) + return typeof C == "number" || typeof C == "boolean" ? D[A] = C : D[A] = C.clone(), !0; + { + const W = D[A]; + if (typeof C == "number" || typeof C == "boolean") { + if (W !== C) + return D[A] = C, !0; + } else if (W.equals(C) === !1) + return W.copy(C), !0; + } + return !1; + } + function g(b) { + const S = b.uniforms; + let R = 0; + const D = 16; + for (let A = 0, W = S.length; A < W; A++) { + const x = Array.isArray(S[A]) ? S[A] : [S[A]]; + for (let y = 0, z = x.length; y < z; y++) { + const Z = x[y], re = Array.isArray(Z.value) ? Z.value : [Z.value]; + for (let L = 0, F = re.length; L < F; L++) { + const V = re[L], Y = v(V), X = R % D; + X !== 0 && D - X < Y.boundary && (R += D - X), Z.__data = new Float32Array(Y.storage / Float32Array.BYTES_PER_ELEMENT), Z.__offset = R, R += Y.storage; + } + } + } + const C = R % D; + return C > 0 && (R += D - C), b.__size = R, b.__cache = {}, this; + } + function v(b) { + const S = { + boundary: 0, + // bytes + storage: 0 + // bytes + }; + return typeof b == "number" || typeof b == "boolean" ? (S.boundary = 4, S.storage = 4) : b.isVector2 ? (S.boundary = 8, S.storage = 8) : b.isVector3 || b.isColor ? (S.boundary = 16, S.storage = 12) : b.isVector4 ? (S.boundary = 16, S.storage = 16) : b.isMatrix3 ? (S.boundary = 48, S.storage = 48) : b.isMatrix4 ? (S.boundary = 64, S.storage = 64) : b.isTexture ? console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.") : console.warn("THREE.WebGLRenderer: Unsupported uniform value type.", b), S; + } + function f(b) { + const S = b.target; + S.removeEventListener("dispose", f); + const R = o.indexOf(S.__bindingPointIndex); + o.splice(R, 1), i.deleteBuffer(r[S.id]), delete r[S.id], delete s[S.id]; + } + function u() { + for (const b in r) + i.deleteBuffer(r[b]); + o = [], r = {}, s = {}; + } + return { + bind: l, + update: c, + dispose: u + }; +} +class Go { + constructor(e = {}) { + const { + canvas: t = Yl(), + context: n = null, + depth: r = !0, + stencil: s = !0, + alpha: o = !1, + antialias: a = !1, + premultipliedAlpha: l = !0, + preserveDrawingBuffer: c = !1, + powerPreference: h = "default", + failIfMajorPerformanceCaveat: d = !1 + } = e; + this.isWebGLRenderer = !0; + let p; + n !== null ? p = n.getContextAttributes().alpha : p = o; + const m = new Uint32Array(4), g = new Int32Array(4); + let v = null, f = null; + const u = [], b = []; + this.domElement = t, this.debug = { + /** + * Enables error checking and reporting when shader programs are being compiled + * @type {boolean} + */ + checkShaderErrors: !0, + /** + * Callback for custom error reporting. + * @type {?Function} + */ + onShaderError: null + }, this.autoClear = !0, this.autoClearColor = !0, this.autoClearDepth = !0, this.autoClearStencil = !0, this.sortObjects = !0, this.clippingPlanes = [], this.localClippingEnabled = !1, this._outputColorSpace = ht, this._useLegacyLights = !1, this.toneMapping = ln, this.toneMappingExposure = 1; + const S = this; + let R = !1, D = 0, C = 0, A = null, W = -1, x = null; + const y = new $e(), z = new $e(); + let Z = null; + const re = new Xe(0); + let L = 0, F = t.width, V = t.height, Y = 1, X = null, k = null; + const q = new $e(0, 0, F, V), Q = new $e(0, 0, F, V); + let ce = !1; + const H = new cs(); + let j = !1, oe = !1, ve = null; + const _e = new Qe(), we = new Ie(), Ae = new P(), ge = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: !0 }; + function Pe() { + return A === null ? Y : 1; + } + let N = n; + function rt(E, U) { + for (let B = 0; B < E.length; B++) { + const G = E[B], O = t.getContext(G, U); + if (O !== null) return O; + } + return null; + } + try { + const E = { + alpha: !0, + depth: r, + stencil: s, + antialias: a, + premultipliedAlpha: l, + preserveDrawingBuffer: c, + powerPreference: h, + failIfMajorPerformanceCaveat: d + }; + if ("setAttribute" in t && t.setAttribute("data-engine", `three.js r${ss}`), t.addEventListener("webglcontextlost", te, !1), t.addEventListener("webglcontextrestored", w, !1), t.addEventListener("webglcontextcreationerror", ie, !1), N === null) { + const U = ["webgl2", "webgl", "experimental-webgl"]; + if (S.isWebGL1Renderer === !0 && U.shift(), N = rt(U, E), N === null) + throw rt(U) ? new Error("Error creating WebGL context with your selected attributes.") : new Error("Error creating WebGL context."); + } + typeof WebGLRenderingContext < "u" && N instanceof WebGLRenderingContext && console.warn("THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163."), N.getShaderPrecisionFormat === void 0 && (N.getShaderPrecisionFormat = function() { + return { rangeMin: 1, rangeMax: 1, precision: 1 }; + }); + } catch (E) { + throw console.error("THREE.WebGLRenderer: " + E.message), E; + } + let Me, Re, pe, je, be, M, _, I, $, K, J, me, ae, he, ye, Fe, ee, Ye, ze, De, Ee, ue, T, ne; + function xe() { + Me = new od(N), Re = new td(N, Me, e), Me.init(Re), ue = new Yf(N, Me, Re), pe = new Xf(N, Me, Re), je = new ud(N), be = new Pf(), M = new qf(N, Me, pe, be, Re, ue, je), _ = new id(S), I = new ad(S), $ = new vc(N, Re), T = new Qh(N, Me, $, Re), K = new ld(N, $, je, T), J = new pd(N, K, $, je), ze = new fd(N, Re, M), Fe = new nd(be), me = new Lf(S, _, I, Me, Re, T, Fe), ae = new $f(S, be), he = new Uf(), ye = new zf(Me, Re), Ye = new Jh(S, _, I, pe, J, p, l), ee = new Wf(S, J, Re), ne = new Jf(N, je, Re, pe), De = new ed(N, Me, je, Re), Ee = new cd(N, Me, je, Re), je.programs = me.programs, S.capabilities = Re, S.extensions = Me, S.properties = be, S.renderLists = he, S.shadowMap = ee, S.state = pe, S.info = je; + } + xe(); + const fe = new Zf(S, N); + this.xr = fe, this.getContext = function() { + return N; + }, this.getContextAttributes = function() { + return N.getContextAttributes(); + }, this.forceContextLoss = function() { + const E = Me.get("WEBGL_lose_context"); + E && E.loseContext(); + }, this.forceContextRestore = function() { + const E = Me.get("WEBGL_lose_context"); + E && E.restoreContext(); + }, this.getPixelRatio = function() { + return Y; + }, this.setPixelRatio = function(E) { + E !== void 0 && (Y = E, this.setSize(F, V, !1)); + }, this.getSize = function(E) { + return E.set(F, V); + }, this.setSize = function(E, U, B = !0) { + if (fe.isPresenting) { + console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."); + return; + } + F = E, V = U, t.width = Math.floor(E * Y), t.height = Math.floor(U * Y), B === !0 && (t.style.width = E + "px", t.style.height = U + "px"), this.setViewport(0, 0, E, U); + }, this.getDrawingBufferSize = function(E) { + return E.set(F * Y, V * Y).floor(); + }, this.setDrawingBufferSize = function(E, U, B) { + F = E, V = U, Y = B, t.width = Math.floor(E * B), t.height = Math.floor(U * B), this.setViewport(0, 0, E, U); + }, this.getCurrentViewport = function(E) { + return E.copy(y); + }, this.getViewport = function(E) { + return E.copy(q); + }, this.setViewport = function(E, U, B, G) { + E.isVector4 ? q.set(E.x, E.y, E.z, E.w) : q.set(E, U, B, G), pe.viewport(y.copy(q).multiplyScalar(Y).floor()); + }, this.getScissor = function(E) { + return E.copy(Q); + }, this.setScissor = function(E, U, B, G) { + E.isVector4 ? Q.set(E.x, E.y, E.z, E.w) : Q.set(E, U, B, G), pe.scissor(z.copy(Q).multiplyScalar(Y).floor()); + }, this.getScissorTest = function() { + return ce; + }, this.setScissorTest = function(E) { + pe.setScissorTest(ce = E); + }, this.setOpaqueSort = function(E) { + X = E; + }, this.setTransparentSort = function(E) { + k = E; + }, this.getClearColor = function(E) { + return E.copy(Ye.getClearColor()); + }, this.setClearColor = function() { + Ye.setClearColor.apply(Ye, arguments); + }, this.getClearAlpha = function() { + return Ye.getClearAlpha(); + }, this.setClearAlpha = function() { + Ye.setClearAlpha.apply(Ye, arguments); + }, this.clear = function(E = !0, U = !0, B = !0) { + let G = 0; + if (E) { + let O = !1; + if (A !== null) { + const de = A.texture.format; + O = de === mo || de === po || de === fo; + } + if (O) { + const de = A.texture.type, Se = de === cn || de === sn || de === as || de === En || de === uo || de === ho, Le = Ye.getClearColor(), Ue = Ye.getClearAlpha(), Ge = Le.r, Ne = Le.g, Oe = Le.b; + Se ? (m[0] = Ge, m[1] = Ne, m[2] = Oe, m[3] = Ue, N.clearBufferuiv(N.COLOR, 0, m)) : (g[0] = Ge, g[1] = Ne, g[2] = Oe, g[3] = Ue, N.clearBufferiv(N.COLOR, 0, g)); + } else + G |= N.COLOR_BUFFER_BIT; + } + U && (G |= N.DEPTH_BUFFER_BIT), B && (G |= N.STENCIL_BUFFER_BIT, this.state.buffers.stencil.setMask(4294967295)), N.clear(G); + }, this.clearColor = function() { + this.clear(!0, !1, !1); + }, this.clearDepth = function() { + this.clear(!1, !0, !1); + }, this.clearStencil = function() { + this.clear(!1, !1, !0); + }, this.dispose = function() { + t.removeEventListener("webglcontextlost", te, !1), t.removeEventListener("webglcontextrestored", w, !1), t.removeEventListener("webglcontextcreationerror", ie, !1), he.dispose(), ye.dispose(), be.dispose(), _.dispose(), I.dispose(), J.dispose(), T.dispose(), ne.dispose(), me.dispose(), fe.dispose(), fe.removeEventListener("sessionstart", nt), fe.removeEventListener("sessionend", qe), ve && (ve.dispose(), ve = null), st.stop(); + }; + function te(E) { + E.preventDefault(), console.log("THREE.WebGLRenderer: Context Lost."), R = !0; + } + function w() { + console.log("THREE.WebGLRenderer: Context Restored."), R = !1; + const E = je.autoReset, U = ee.enabled, B = ee.autoUpdate, G = ee.needsUpdate, O = ee.type; + xe(), je.autoReset = E, ee.enabled = U, ee.autoUpdate = B, ee.needsUpdate = G, ee.type = O; + } + function ie(E) { + console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ", E.statusMessage); + } + function le(E) { + const U = E.target; + U.removeEventListener("dispose", le), Ce(U); + } + function Ce(E) { + Te(E), be.remove(E); + } + function Te(E) { + const U = be.get(E).programs; + U !== void 0 && (U.forEach(function(B) { + me.releaseProgram(B); + }), E.isShaderMaterial && me.releaseShaderCache(E)); + } + this.renderBufferDirect = function(E, U, B, G, O, de) { + U === null && (U = ge); + const Se = O.isMesh && O.matrixWorld.determinant() < 0, Le = ko(E, U, B, G, O); + pe.setMaterial(G, Se); + let Ue = B.index, Ge = 1; + if (G.wireframe === !0) { + if (Ue = K.getWireframeAttribute(B), Ue === void 0) return; + Ge = 2; + } + const Ne = B.drawRange, Oe = B.attributes.position; + let it = Ne.start * Ge, St = (Ne.start + Ne.count) * Ge; + de !== null && (it = Math.max(it, de.start * Ge), St = Math.min(St, (de.start + de.count) * Ge)), Ue !== null ? (it = Math.max(it, 0), St = Math.min(St, Ue.count)) : Oe != null && (it = Math.max(it, 0), St = Math.min(St, Oe.count)); + const ct = St - it; + if (ct < 0 || ct === 1 / 0) return; + T.setup(O, G, Le, B, Ue); + let Vt, Je = De; + if (Ue !== null && (Vt = $.get(Ue), Je = Ee, Je.setIndex(Vt)), O.isMesh) + G.wireframe === !0 ? (pe.setLineWidth(G.wireframeLinewidth * Pe()), Je.setMode(N.LINES)) : Je.setMode(N.TRIANGLES); + else if (O.isLine) { + let He = G.linewidth; + He === void 0 && (He = 1), pe.setLineWidth(He * Pe()), O.isLineSegments ? Je.setMode(N.LINES) : O.isLineLoop ? Je.setMode(N.LINE_LOOP) : Je.setMode(N.LINE_STRIP); + } else O.isPoints ? Je.setMode(N.POINTS) : O.isSprite && Je.setMode(N.TRIANGLES); + if (O.isBatchedMesh) + Je.renderMultiDraw(O._multiDrawStarts, O._multiDrawCounts, O._multiDrawCount); + else if (O.isInstancedMesh) + Je.renderInstances(it, ct, O.count); + else if (B.isInstancedBufferGeometry) { + const He = B._maxInstanceCount !== void 0 ? B._maxInstanceCount : 1 / 0, lr = Math.min(B.instanceCount, He); + Je.renderInstances(it, ct, lr); + } else + Je.render(it, ct); + }; + function ke(E, U, B) { + E.transparent === !0 && E.side === Kt && E.forceSinglePass === !1 ? (E.side = Mt, E.needsUpdate = !0, Ei(E, U, B), E.side = un, E.needsUpdate = !0, Ei(E, U, B), E.side = Kt) : Ei(E, U, B); + } + this.compile = function(E, U, B = null) { + B === null && (B = E), f = ye.get(B), f.init(), b.push(f), B.traverseVisible(function(O) { + O.isLight && O.layers.test(U.layers) && (f.pushLight(O), O.castShadow && f.pushShadow(O)); + }), E !== B && E.traverseVisible(function(O) { + O.isLight && O.layers.test(U.layers) && (f.pushLight(O), O.castShadow && f.pushShadow(O)); + }), f.setupLights(S._useLegacyLights); + const G = /* @__PURE__ */ new Set(); + return E.traverse(function(O) { + const de = O.material; + if (de) + if (Array.isArray(de)) + for (let Se = 0; Se < de.length; Se++) { + const Le = de[Se]; + ke(Le, B, O), G.add(Le); + } + else + ke(de, B, O), G.add(de); + }), b.pop(), f = null, G; + }, this.compileAsync = function(E, U, B = null) { + const G = this.compile(E, U, B); + return new Promise((O) => { + function de() { + if (G.forEach(function(Se) { + be.get(Se).currentProgram.isReady() && G.delete(Se); + }), G.size === 0) { + O(E); + return; + } + setTimeout(de, 10); + } + Me.get("KHR_parallel_shader_compile") !== null ? de() : setTimeout(de, 10); + }); + }; + let We = null; + function et(E) { + We && We(E); + } + function nt() { + st.stop(); + } + function qe() { + st.start(); + } + const st = new Do(); + st.setAnimationLoop(et), typeof self < "u" && st.setContext(self), this.setAnimationLoop = function(E) { + We = E, fe.setAnimationLoop(E), E === null ? st.stop() : st.start(); + }, fe.addEventListener("sessionstart", nt), fe.addEventListener("sessionend", qe), this.render = function(E, U) { + if (U !== void 0 && U.isCamera !== !0) { + console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera."); + return; + } + if (R === !0) return; + E.matrixWorldAutoUpdate === !0 && E.updateMatrixWorld(), U.parent === null && U.matrixWorldAutoUpdate === !0 && U.updateMatrixWorld(), fe.enabled === !0 && fe.isPresenting === !0 && (fe.cameraAutoUpdate === !0 && fe.updateCamera(U), U = fe.getCamera()), E.isScene === !0 && E.onBeforeRender(S, E, U, A), f = ye.get(E, b.length), f.init(), b.push(f), _e.multiplyMatrices(U.projectionMatrix, U.matrixWorldInverse), H.setFromProjectionMatrix(_e), oe = this.localClippingEnabled, j = Fe.init(this.clippingPlanes, oe), v = he.get(E, u.length), v.init(), u.push(v), zt(E, U, 0, S.sortObjects), v.finish(), S.sortObjects === !0 && v.sort(X, k), this.info.render.frame++, j === !0 && Fe.beginShadows(); + const B = f.state.shadowsArray; + if (ee.render(B, E, U), j === !0 && Fe.endShadows(), this.info.autoReset === !0 && this.info.reset(), Ye.render(v, E), f.setupLights(S._useLegacyLights), U.isArrayCamera) { + const G = U.cameras; + for (let O = 0, de = G.length; O < de; O++) { + const Se = G[O]; + ps(v, E, Se, Se.viewport); + } + } else + ps(v, E, U); + A !== null && (M.updateMultisampleRenderTarget(A), M.updateRenderTargetMipmap(A)), E.isScene === !0 && E.onAfterRender(S, E, U), T.resetDefaultState(), W = -1, x = null, b.pop(), b.length > 0 ? f = b[b.length - 1] : f = null, u.pop(), u.length > 0 ? v = u[u.length - 1] : v = null; + }; + function zt(E, U, B, G) { + if (E.visible === !1) return; + if (E.layers.test(U.layers)) { + if (E.isGroup) + B = E.renderOrder; + else if (E.isLOD) + E.autoUpdate === !0 && E.update(U); + else if (E.isLight) + f.pushLight(E), E.castShadow && f.pushShadow(E); + else if (E.isSprite) { + if (!E.frustumCulled || H.intersectsSprite(E)) { + G && Ae.setFromMatrixPosition(E.matrixWorld).applyMatrix4(_e); + const Se = J.update(E), Le = E.material; + Le.visible && v.push(E, Se, Le, B, Ae.z, null); + } + } else if ((E.isMesh || E.isLine || E.isPoints) && (!E.frustumCulled || H.intersectsObject(E))) { + const Se = J.update(E), Le = E.material; + if (G && (E.boundingSphere !== void 0 ? (E.boundingSphere === null && E.computeBoundingSphere(), Ae.copy(E.boundingSphere.center)) : (Se.boundingSphere === null && Se.computeBoundingSphere(), Ae.copy(Se.boundingSphere.center)), Ae.applyMatrix4(E.matrixWorld).applyMatrix4(_e)), Array.isArray(Le)) { + const Ue = Se.groups; + for (let Ge = 0, Ne = Ue.length; Ge < Ne; Ge++) { + const Oe = Ue[Ge], it = Le[Oe.materialIndex]; + it && it.visible && v.push(E, Se, it, B, Ae.z, Oe); + } + } else Le.visible && v.push(E, Se, Le, B, Ae.z, null); + } + } + const de = E.children; + for (let Se = 0, Le = de.length; Se < Le; Se++) + zt(de[Se], U, B, G); + } + function ps(E, U, B, G) { + const O = E.opaque, de = E.transmissive, Se = E.transparent; + f.setupLightsView(B), j === !0 && Fe.setGlobalState(S.clippingPlanes, B), de.length > 0 && Vo(O, de, U, B), G && pe.viewport(y.copy(G)), O.length > 0 && Si(O, U, B), de.length > 0 && Si(de, U, B), Se.length > 0 && Si(Se, U, B), pe.buffers.depth.setTest(!0), pe.buffers.depth.setMask(!0), pe.buffers.color.setMask(!0), pe.setPolygonOffset(!1); + } + function Vo(E, U, B, G) { + if ((B.isScene === !0 ? B.overrideMaterial : null) !== null) + return; + const de = Re.isWebGL2; + ve === null && (ve = new bn(1, 1, { + generateMipmaps: !0, + type: Me.has("EXT_color_buffer_half_float") ? gi : cn, + minFilter: _i, + samples: de ? 4 : 0 + })), S.getDrawingBufferSize(we), de ? ve.setSize(we.x, we.y) : ve.setSize(is(we.x), is(we.y)); + const Se = S.getRenderTarget(); + S.setRenderTarget(ve), S.getClearColor(re), L = S.getClearAlpha(), L < 1 && S.setClearColor(16777215, 0.5), S.clear(); + const Le = S.toneMapping; + S.toneMapping = ln, Si(E, B, G), M.updateMultisampleRenderTarget(ve), M.updateRenderTargetMipmap(ve); + let Ue = !1; + for (let Ge = 0, Ne = U.length; Ge < Ne; Ge++) { + const Oe = U[Ge], it = Oe.object, St = Oe.geometry, ct = Oe.material, Vt = Oe.group; + if (ct.side === Kt && it.layers.test(G.layers)) { + const Je = ct.side; + ct.side = Mt, ct.needsUpdate = !0, ms(it, B, G, St, ct, Vt), ct.side = Je, ct.needsUpdate = !0, Ue = !0; + } + } + Ue === !0 && (M.updateMultisampleRenderTarget(ve), M.updateRenderTargetMipmap(ve)), S.setRenderTarget(Se), S.setClearColor(re, L), S.toneMapping = Le; + } + function Si(E, U, B) { + const G = U.isScene === !0 ? U.overrideMaterial : null; + for (let O = 0, de = E.length; O < de; O++) { + const Se = E[O], Le = Se.object, Ue = Se.geometry, Ge = G === null ? Se.material : G, Ne = Se.group; + Le.layers.test(B.layers) && ms(Le, U, B, Ue, Ge, Ne); + } + } + function ms(E, U, B, G, O, de) { + E.onBeforeRender(S, U, B, G, O, de), E.modelViewMatrix.multiplyMatrices(B.matrixWorldInverse, E.matrixWorld), E.normalMatrix.getNormalMatrix(E.modelViewMatrix), O.onBeforeRender(S, U, B, G, E, de), O.transparent === !0 && O.side === Kt && O.forceSinglePass === !1 ? (O.side = Mt, O.needsUpdate = !0, S.renderBufferDirect(B, U, G, O, E, de), O.side = un, O.needsUpdate = !0, S.renderBufferDirect(B, U, G, O, E, de), O.side = Kt) : S.renderBufferDirect(B, U, G, O, E, de), E.onAfterRender(S, U, B, G, O, de); + } + function Ei(E, U, B) { + U.isScene !== !0 && (U = ge); + const G = be.get(E), O = f.state.lights, de = f.state.shadowsArray, Se = O.state.version, Le = me.getParameters(E, O.state, de, U, B), Ue = me.getProgramCacheKey(Le); + let Ge = G.programs; + G.environment = E.isMeshStandardMaterial ? U.environment : null, G.fog = U.fog, G.envMap = (E.isMeshStandardMaterial ? I : _).get(E.envMap || G.environment), Ge === void 0 && (E.addEventListener("dispose", le), Ge = /* @__PURE__ */ new Map(), G.programs = Ge); + let Ne = Ge.get(Ue); + if (Ne !== void 0) { + if (G.currentProgram === Ne && G.lightsStateVersion === Se) + return gs(E, Le), Ne; + } else + Le.uniforms = me.getUniforms(E), E.onBuild(B, Le, S), E.onBeforeCompile(Le, S), Ne = me.acquireProgram(Le, Ue), Ge.set(Ue, Ne), G.uniforms = Le.uniforms; + const Oe = G.uniforms; + return (!E.isShaderMaterial && !E.isRawShaderMaterial || E.clipping === !0) && (Oe.clippingPlanes = Fe.uniform), gs(E, Le), G.needsLights = Xo(E), G.lightsStateVersion = Se, G.needsLights && (Oe.ambientLightColor.value = O.state.ambient, Oe.lightProbe.value = O.state.probe, Oe.directionalLights.value = O.state.directional, Oe.directionalLightShadows.value = O.state.directionalShadow, Oe.spotLights.value = O.state.spot, Oe.spotLightShadows.value = O.state.spotShadow, Oe.rectAreaLights.value = O.state.rectArea, Oe.ltc_1.value = O.state.rectAreaLTC1, Oe.ltc_2.value = O.state.rectAreaLTC2, Oe.pointLights.value = O.state.point, Oe.pointLightShadows.value = O.state.pointShadow, Oe.hemisphereLights.value = O.state.hemi, Oe.directionalShadowMap.value = O.state.directionalShadowMap, Oe.directionalShadowMatrix.value = O.state.directionalShadowMatrix, Oe.spotShadowMap.value = O.state.spotShadowMap, Oe.spotLightMatrix.value = O.state.spotLightMatrix, Oe.spotLightMap.value = O.state.spotLightMap, Oe.pointShadowMap.value = O.state.pointShadowMap, Oe.pointShadowMatrix.value = O.state.pointShadowMatrix), G.currentProgram = Ne, G.uniformsList = null, Ne; + } + function _s(E) { + if (E.uniformsList === null) { + const U = E.currentProgram.getUniforms(); + E.uniformsList = Zi.seqWithValue(U.seq, E.uniforms); + } + return E.uniformsList; + } + function gs(E, U) { + const B = be.get(E); + B.outputColorSpace = U.outputColorSpace, B.batching = U.batching, B.instancing = U.instancing, B.instancingColor = U.instancingColor, B.skinning = U.skinning, B.morphTargets = U.morphTargets, B.morphNormals = U.morphNormals, B.morphColors = U.morphColors, B.morphTargetsCount = U.morphTargetsCount, B.numClippingPlanes = U.numClippingPlanes, B.numIntersection = U.numClipIntersection, B.vertexAlphas = U.vertexAlphas, B.vertexTangents = U.vertexTangents, B.toneMapping = U.toneMapping; + } + function ko(E, U, B, G, O) { + U.isScene !== !0 && (U = ge), M.resetTextureUnits(); + const de = U.fog, Se = G.isMeshStandardMaterial ? U.environment : null, Le = A === null ? S.outputColorSpace : A.isXRRenderTarget === !0 ? A.texture.colorSpace : $t, Ue = (G.isMeshStandardMaterial ? I : _).get(G.envMap || Se), Ge = G.vertexColors === !0 && !!B.attributes.color && B.attributes.color.itemSize === 4, Ne = !!B.attributes.tangent && (!!G.normalMap || G.anisotropy > 0), Oe = !!B.morphAttributes.position, it = !!B.morphAttributes.normal, St = !!B.morphAttributes.color; + let ct = ln; + G.toneMapped && (A === null || A.isXRRenderTarget === !0) && (ct = S.toneMapping); + const Vt = B.morphAttributes.position || B.morphAttributes.normal || B.morphAttributes.color, Je = Vt !== void 0 ? Vt.length : 0, He = be.get(G), lr = f.state.lights; + if (j === !0 && (oe === !0 || E !== x)) { + const At = E === x && G.id === W; + Fe.setState(G, E, At); + } + let tt = !1; + G.version === He.__version ? (He.needsLights && He.lightsStateVersion !== lr.state.version || He.outputColorSpace !== Le || O.isBatchedMesh && He.batching === !1 || !O.isBatchedMesh && He.batching === !0 || O.isInstancedMesh && He.instancing === !1 || !O.isInstancedMesh && He.instancing === !0 || O.isSkinnedMesh && He.skinning === !1 || !O.isSkinnedMesh && He.skinning === !0 || O.isInstancedMesh && He.instancingColor === !0 && O.instanceColor === null || O.isInstancedMesh && He.instancingColor === !1 && O.instanceColor !== null || He.envMap !== Ue || G.fog === !0 && He.fog !== de || He.numClippingPlanes !== void 0 && (He.numClippingPlanes !== Fe.numPlanes || He.numIntersection !== Fe.numIntersection) || He.vertexAlphas !== Ge || He.vertexTangents !== Ne || He.morphTargets !== Oe || He.morphNormals !== it || He.morphColors !== St || He.toneMapping !== ct || Re.isWebGL2 === !0 && He.morphTargetsCount !== Je) && (tt = !0) : (tt = !0, He.__version = G.version); + let dn = He.currentProgram; + tt === !0 && (dn = Ei(G, U, O)); + let vs = !1, si = !1, cr = !1; + const ft = dn.getUniforms(), fn = He.uniforms; + if (pe.useProgram(dn.program) && (vs = !0, si = !0, cr = !0), G.id !== W && (W = G.id, si = !0), vs || x !== E) { + ft.setValue(N, "projectionMatrix", E.projectionMatrix), ft.setValue(N, "viewMatrix", E.matrixWorldInverse); + const At = ft.map.cameraPosition; + At !== void 0 && At.setValue(N, Ae.setFromMatrixPosition(E.matrixWorld)), Re.logarithmicDepthBuffer && ft.setValue( + N, + "logDepthBufFC", + 2 / (Math.log(E.far + 1) / Math.LN2) + ), (G.isMeshPhongMaterial || G.isMeshToonMaterial || G.isMeshLambertMaterial || G.isMeshBasicMaterial || G.isMeshStandardMaterial || G.isShaderMaterial) && ft.setValue(N, "isOrthographic", E.isOrthographicCamera === !0), x !== E && (x = E, si = !0, cr = !0); + } + if (O.isSkinnedMesh) { + ft.setOptional(N, O, "bindMatrix"), ft.setOptional(N, O, "bindMatrixInverse"); + const At = O.skeleton; + At && (Re.floatVertexTextures ? (At.boneTexture === null && At.computeBoneTexture(), ft.setValue(N, "boneTexture", At.boneTexture, M)) : console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.")); + } + O.isBatchedMesh && (ft.setOptional(N, O, "batchingTexture"), ft.setValue(N, "batchingTexture", O._matricesTexture, M)); + const ur = B.morphAttributes; + if ((ur.position !== void 0 || ur.normal !== void 0 || ur.color !== void 0 && Re.isWebGL2 === !0) && ze.update(O, B, dn), (si || He.receiveShadow !== O.receiveShadow) && (He.receiveShadow = O.receiveShadow, ft.setValue(N, "receiveShadow", O.receiveShadow)), G.isMeshGouraudMaterial && G.envMap !== null && (fn.envMap.value = Ue, fn.flipEnvMap.value = Ue.isCubeTexture && Ue.isRenderTargetTexture === !1 ? -1 : 1), si && (ft.setValue(N, "toneMappingExposure", S.toneMappingExposure), He.needsLights && Wo(fn, cr), de && G.fog === !0 && ae.refreshFogUniforms(fn, de), ae.refreshMaterialUniforms(fn, G, Y, V, ve), Zi.upload(N, _s(He), fn, M)), G.isShaderMaterial && G.uniformsNeedUpdate === !0 && (Zi.upload(N, _s(He), fn, M), G.uniformsNeedUpdate = !1), G.isSpriteMaterial && ft.setValue(N, "center", O.center), ft.setValue(N, "modelViewMatrix", O.modelViewMatrix), ft.setValue(N, "normalMatrix", O.normalMatrix), ft.setValue(N, "modelMatrix", O.matrixWorld), G.isShaderMaterial || G.isRawShaderMaterial) { + const At = G.uniformsGroups; + for (let hr = 0, qo = At.length; hr < qo; hr++) + if (Re.isWebGL2) { + const xs = At[hr]; + ne.update(xs, dn), ne.bind(xs, dn); + } else + console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2."); + } + return dn; + } + function Wo(E, U) { + E.ambientLightColor.needsUpdate = U, E.lightProbe.needsUpdate = U, E.directionalLights.needsUpdate = U, E.directionalLightShadows.needsUpdate = U, E.pointLights.needsUpdate = U, E.pointLightShadows.needsUpdate = U, E.spotLights.needsUpdate = U, E.spotLightShadows.needsUpdate = U, E.rectAreaLights.needsUpdate = U, E.hemisphereLights.needsUpdate = U; + } + function Xo(E) { + return E.isMeshLambertMaterial || E.isMeshToonMaterial || E.isMeshPhongMaterial || E.isMeshStandardMaterial || E.isShadowMaterial || E.isShaderMaterial && E.lights === !0; + } + this.getActiveCubeFace = function() { + return D; + }, this.getActiveMipmapLevel = function() { + return C; + }, this.getRenderTarget = function() { + return A; + }, this.setRenderTargetTextures = function(E, U, B) { + be.get(E.texture).__webglTexture = U, be.get(E.depthTexture).__webglTexture = B; + const G = be.get(E); + G.__hasExternalTextures = !0, G.__hasExternalTextures && (G.__autoAllocateDepthBuffer = B === void 0, G.__autoAllocateDepthBuffer || Me.has("WEBGL_multisampled_render_to_texture") === !0 && (console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"), G.__useRenderToTexture = !1)); + }, this.setRenderTargetFramebuffer = function(E, U) { + const B = be.get(E); + B.__webglFramebuffer = U, B.__useDefaultFramebuffer = U === void 0; + }, this.setRenderTarget = function(E, U = 0, B = 0) { + A = E, D = U, C = B; + let G = !0, O = null, de = !1, Se = !1; + if (E) { + const Ue = be.get(E); + Ue.__useDefaultFramebuffer !== void 0 ? (pe.bindFramebuffer(N.FRAMEBUFFER, null), G = !1) : Ue.__webglFramebuffer === void 0 ? M.setupRenderTarget(E) : Ue.__hasExternalTextures && M.rebindTextures(E, be.get(E.texture).__webglTexture, be.get(E.depthTexture).__webglTexture); + const Ge = E.texture; + (Ge.isData3DTexture || Ge.isDataArrayTexture || Ge.isCompressedArrayTexture) && (Se = !0); + const Ne = be.get(E).__webglFramebuffer; + E.isWebGLCubeRenderTarget ? (Array.isArray(Ne[U]) ? O = Ne[U][B] : O = Ne[U], de = !0) : Re.isWebGL2 && E.samples > 0 && M.useMultisampledRTT(E) === !1 ? O = be.get(E).__webglMultisampledFramebuffer : Array.isArray(Ne) ? O = Ne[B] : O = Ne, y.copy(E.viewport), z.copy(E.scissor), Z = E.scissorTest; + } else + y.copy(q).multiplyScalar(Y).floor(), z.copy(Q).multiplyScalar(Y).floor(), Z = ce; + if (pe.bindFramebuffer(N.FRAMEBUFFER, O) && Re.drawBuffers && G && pe.drawBuffers(E, O), pe.viewport(y), pe.scissor(z), pe.setScissorTest(Z), de) { + const Ue = be.get(E.texture); + N.framebufferTexture2D(N.FRAMEBUFFER, N.COLOR_ATTACHMENT0, N.TEXTURE_CUBE_MAP_POSITIVE_X + U, Ue.__webglTexture, B); + } else if (Se) { + const Ue = be.get(E.texture), Ge = U || 0; + N.framebufferTextureLayer(N.FRAMEBUFFER, N.COLOR_ATTACHMENT0, Ue.__webglTexture, B || 0, Ge); + } + W = -1; + }, this.readRenderTargetPixels = function(E, U, B, G, O, de, Se) { + if (!(E && E.isWebGLRenderTarget)) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget."); + return; + } + let Le = be.get(E).__webglFramebuffer; + if (E.isWebGLCubeRenderTarget && Se !== void 0 && (Le = Le[Se]), Le) { + pe.bindFramebuffer(N.FRAMEBUFFER, Le); + try { + const Ue = E.texture, Ge = Ue.format, Ne = Ue.type; + if (Ge !== Ft && ue.convert(Ge) !== N.getParameter(N.IMPLEMENTATION_COLOR_READ_FORMAT)) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."); + return; + } + const Oe = Ne === gi && (Me.has("EXT_color_buffer_half_float") || Re.isWebGL2 && Me.has("EXT_color_buffer_float")); + if (Ne !== cn && ue.convert(Ne) !== N.getParameter(N.IMPLEMENTATION_COLOR_READ_TYPE) && // Edge and Chrome Mac < 52 (#9513) + !(Ne === an && (Re.isWebGL2 || Me.has("OES_texture_float") || Me.has("WEBGL_color_buffer_float"))) && // Chrome Mac >= 52 and Firefox + !Oe) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type."); + return; + } + U >= 0 && U <= E.width - G && B >= 0 && B <= E.height - O && N.readPixels(U, B, G, O, ue.convert(Ge), ue.convert(Ne), de); + } finally { + const Ue = A !== null ? be.get(A).__webglFramebuffer : null; + pe.bindFramebuffer(N.FRAMEBUFFER, Ue); + } + } + }, this.copyFramebufferToTexture = function(E, U, B = 0) { + const G = Math.pow(2, -B), O = Math.floor(U.image.width * G), de = Math.floor(U.image.height * G); + M.setTexture2D(U, 0), N.copyTexSubImage2D(N.TEXTURE_2D, B, 0, 0, E.x, E.y, O, de), pe.unbindTexture(); + }, this.copyTextureToTexture = function(E, U, B, G = 0) { + const O = U.image.width, de = U.image.height, Se = ue.convert(B.format), Le = ue.convert(B.type); + M.setTexture2D(B, 0), N.pixelStorei(N.UNPACK_FLIP_Y_WEBGL, B.flipY), N.pixelStorei(N.UNPACK_PREMULTIPLY_ALPHA_WEBGL, B.premultiplyAlpha), N.pixelStorei(N.UNPACK_ALIGNMENT, B.unpackAlignment), U.isDataTexture ? N.texSubImage2D(N.TEXTURE_2D, G, E.x, E.y, O, de, Se, Le, U.image.data) : U.isCompressedTexture ? N.compressedTexSubImage2D(N.TEXTURE_2D, G, E.x, E.y, U.mipmaps[0].width, U.mipmaps[0].height, Se, U.mipmaps[0].data) : N.texSubImage2D(N.TEXTURE_2D, G, E.x, E.y, Se, Le, U.image), G === 0 && B.generateMipmaps && N.generateMipmap(N.TEXTURE_2D), pe.unbindTexture(); + }, this.copyTextureToTexture3D = function(E, U, B, G, O = 0) { + if (S.isWebGL1Renderer) { + console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2."); + return; + } + const de = E.max.x - E.min.x + 1, Se = E.max.y - E.min.y + 1, Le = E.max.z - E.min.z + 1, Ue = ue.convert(G.format), Ge = ue.convert(G.type); + let Ne; + if (G.isData3DTexture) + M.setTexture3D(G, 0), Ne = N.TEXTURE_3D; + else if (G.isDataArrayTexture || G.isCompressedArrayTexture) + M.setTexture2DArray(G, 0), Ne = N.TEXTURE_2D_ARRAY; + else { + console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray."); + return; + } + N.pixelStorei(N.UNPACK_FLIP_Y_WEBGL, G.flipY), N.pixelStorei(N.UNPACK_PREMULTIPLY_ALPHA_WEBGL, G.premultiplyAlpha), N.pixelStorei(N.UNPACK_ALIGNMENT, G.unpackAlignment); + const Oe = N.getParameter(N.UNPACK_ROW_LENGTH), it = N.getParameter(N.UNPACK_IMAGE_HEIGHT), St = N.getParameter(N.UNPACK_SKIP_PIXELS), ct = N.getParameter(N.UNPACK_SKIP_ROWS), Vt = N.getParameter(N.UNPACK_SKIP_IMAGES), Je = B.isCompressedTexture ? B.mipmaps[O] : B.image; + N.pixelStorei(N.UNPACK_ROW_LENGTH, Je.width), N.pixelStorei(N.UNPACK_IMAGE_HEIGHT, Je.height), N.pixelStorei(N.UNPACK_SKIP_PIXELS, E.min.x), N.pixelStorei(N.UNPACK_SKIP_ROWS, E.min.y), N.pixelStorei(N.UNPACK_SKIP_IMAGES, E.min.z), B.isDataTexture || B.isData3DTexture ? N.texSubImage3D(Ne, O, U.x, U.y, U.z, de, Se, Le, Ue, Ge, Je.data) : B.isCompressedArrayTexture ? (console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."), N.compressedTexSubImage3D(Ne, O, U.x, U.y, U.z, de, Se, Le, Ue, Je.data)) : N.texSubImage3D(Ne, O, U.x, U.y, U.z, de, Se, Le, Ue, Ge, Je), N.pixelStorei(N.UNPACK_ROW_LENGTH, Oe), N.pixelStorei(N.UNPACK_IMAGE_HEIGHT, it), N.pixelStorei(N.UNPACK_SKIP_PIXELS, St), N.pixelStorei(N.UNPACK_SKIP_ROWS, ct), N.pixelStorei(N.UNPACK_SKIP_IMAGES, Vt), O === 0 && G.generateMipmaps && N.generateMipmap(Ne), pe.unbindTexture(); + }, this.initTexture = function(E) { + E.isCubeTexture ? M.setTextureCube(E, 0) : E.isData3DTexture ? M.setTexture3D(E, 0) : E.isDataArrayTexture || E.isCompressedArrayTexture ? M.setTexture2DArray(E, 0) : M.setTexture2D(E, 0), pe.unbindTexture(); + }, this.resetState = function() { + D = 0, C = 0, A = null, pe.reset(), T.reset(); + }, typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", { detail: this })); + } + get coordinateSystem() { + return Zt; + } + get outputColorSpace() { + return this._outputColorSpace; + } + set outputColorSpace(e) { + this._outputColorSpace = e; + const t = this.getContext(); + t.drawingBufferColorSpace = e === os ? "display-p3" : "srgb", t.unpackColorSpace = Ke.workingColorSpace === sr ? "display-p3" : "srgb"; + } + get outputEncoding() { + return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."), this.outputColorSpace === ht ? Tn : go; + } + set outputEncoding(e) { + console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."), this.outputColorSpace = e === Tn ? ht : $t; + } + get useLegacyLights() { + return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."), this._useLegacyLights; + } + set useLegacyLights(e) { + console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."), this._useLegacyLights = e; + } +} +class Qf extends Go { +} +Qf.prototype.isWebGL1Renderer = !0; +class ir { + constructor(e, t = 25e-5) { + this.isFogExp2 = !0, this.name = "", this.color = new Xe(e), this.density = t; + } + clone() { + return new ir(this.color, this.density); + } + toJSON() { + return { + type: "FogExp2", + name: this.name, + color: this.color.getHex(), + density: this.density + }; + } +} +class Ha extends dt { + constructor() { + super(), this.isScene = !0, this.type = "Scene", this.background = null, this.environment = null, this.fog = null, this.backgroundBlurriness = 0, this.backgroundIntensity = 1, this.overrideMaterial = null, typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", { detail: this })); + } + copy(e, t) { + return super.copy(e, t), e.background !== null && (this.background = e.background.clone()), e.environment !== null && (this.environment = e.environment.clone()), e.fog !== null && (this.fog = e.fog.clone()), this.backgroundBlurriness = e.backgroundBlurriness, this.backgroundIntensity = e.backgroundIntensity, e.overrideMaterial !== null && (this.overrideMaterial = e.overrideMaterial.clone()), this.matrixAutoUpdate = e.matrixAutoUpdate, this; + } + toJSON(e) { + const t = super.toJSON(e); + return this.fog !== null && (t.object.fog = this.fog.toJSON()), this.backgroundBlurriness > 0 && (t.object.backgroundBlurriness = this.backgroundBlurriness), this.backgroundIntensity !== 1 && (t.object.backgroundIntensity = this.backgroundIntensity), t; + } +} +class Va extends Bt { + constructor(e, t, n, r = 1) { + super(e, t, n), this.isInstancedBufferAttribute = !0, this.meshPerAttribute = r; + } + copy(e) { + return super.copy(e), this.meshPerAttribute = e.meshPerAttribute, this; + } + toJSON() { + const e = super.toJSON(); + return e.meshPerAttribute = this.meshPerAttribute, e.isInstancedBufferAttribute = !0, e; + } +} +const jn = /* @__PURE__ */ new Qe(), ka = /* @__PURE__ */ new Qe(), Yi = [], Wa = /* @__PURE__ */ new Cn(), ep = /* @__PURE__ */ new Qe(), di = /* @__PURE__ */ new Ot(), fi = /* @__PURE__ */ new xi(); +class Xa extends Ot { + constructor(e, t, n) { + super(e, t), this.isInstancedMesh = !0, this.instanceMatrix = new Va(new Float32Array(n * 16), 16), this.instanceColor = null, this.count = n, this.boundingBox = null, this.boundingSphere = null; + for (let r = 0; r < n; r++) + this.setMatrixAt(r, ep); + } + computeBoundingBox() { + const e = this.geometry, t = this.count; + this.boundingBox === null && (this.boundingBox = new Cn()), e.boundingBox === null && e.computeBoundingBox(), this.boundingBox.makeEmpty(); + for (let n = 0; n < t; n++) + this.getMatrixAt(n, jn), Wa.copy(e.boundingBox).applyMatrix4(jn), this.boundingBox.union(Wa); + } + computeBoundingSphere() { + const e = this.geometry, t = this.count; + this.boundingSphere === null && (this.boundingSphere = new xi()), e.boundingSphere === null && e.computeBoundingSphere(), this.boundingSphere.makeEmpty(); + for (let n = 0; n < t; n++) + this.getMatrixAt(n, jn), fi.copy(e.boundingSphere).applyMatrix4(jn), this.boundingSphere.union(fi); + } + copy(e, t) { + return super.copy(e, t), this.instanceMatrix.copy(e.instanceMatrix), e.instanceColor !== null && (this.instanceColor = e.instanceColor.clone()), this.count = e.count, e.boundingBox !== null && (this.boundingBox = e.boundingBox.clone()), e.boundingSphere !== null && (this.boundingSphere = e.boundingSphere.clone()), this; + } + getColorAt(e, t) { + t.fromArray(this.instanceColor.array, e * 3); + } + getMatrixAt(e, t) { + t.fromArray(this.instanceMatrix.array, e * 16); + } + raycast(e, t) { + const n = this.matrixWorld, r = this.count; + if (di.geometry = this.geometry, di.material = this.material, di.material !== void 0 && (this.boundingSphere === null && this.computeBoundingSphere(), fi.copy(this.boundingSphere), fi.applyMatrix4(n), e.ray.intersectsSphere(fi) !== !1)) + for (let s = 0; s < r; s++) { + this.getMatrixAt(s, jn), ka.multiplyMatrices(n, jn), di.matrixWorld = ka, di.raycast(e, Yi); + for (let o = 0, a = Yi.length; o < a; o++) { + const l = Yi[o]; + l.instanceId = s, l.object = this, t.push(l); + } + Yi.length = 0; + } + } + setColorAt(e, t) { + this.instanceColor === null && (this.instanceColor = new Va(new Float32Array(this.instanceMatrix.count * 3), 3)), t.toArray(this.instanceColor.array, e * 3); + } + setMatrixAt(e, t) { + t.toArray(this.instanceMatrix.array, e * 16); + } + updateMorphTargets() { + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +} +class ds extends hn { + constructor(e = 1, t = 0.4, n = 12, r = 48, s = Math.PI * 2) { + super(), this.type = "TorusGeometry", this.parameters = { + radius: e, + tube: t, + radialSegments: n, + tubularSegments: r, + arc: s + }, n = Math.floor(n), r = Math.floor(r); + const o = [], a = [], l = [], c = [], h = new P(), d = new P(), p = new P(); + for (let m = 0; m <= n; m++) + for (let g = 0; g <= r; g++) { + const v = g / r * s, f = m / n * Math.PI * 2; + d.x = (e + t * Math.cos(f)) * Math.cos(v), d.y = (e + t * Math.cos(f)) * Math.sin(v), d.z = t * Math.sin(f), a.push(d.x, d.y, d.z), h.x = e * Math.cos(v), h.y = e * Math.sin(v), p.subVectors(d, h).normalize(), l.push(p.x, p.y, p.z), c.push(g / r), c.push(m / n); + } + for (let m = 1; m <= n; m++) + for (let g = 1; g <= r; g++) { + const v = (r + 1) * m + g - 1, f = (r + 1) * (m - 1) + g - 1, u = (r + 1) * (m - 1) + g, b = (r + 1) * m + g; + o.push(v, f, b), o.push(f, u, b); + } + this.setIndex(o), this.setAttribute("position", new Ht(a, 3)), this.setAttribute("normal", new Ht(l, 3)), this.setAttribute("uv", new Ht(c, 2)); + } + copy(e) { + return super.copy(e), this.parameters = Object.assign({}, e.parameters), this; + } + static fromJSON(e) { + return new ds(e.radius, e.tube, e.radialSegments, e.tubularSegments, e.arc); + } +} +class qa extends Mi { + constructor(e) { + super(), this.isMeshStandardMaterial = !0, this.defines = { STANDARD: "" }, this.type = "MeshStandardMaterial", this.color = new Xe(16777215), this.roughness = 1, this.metalness = 0, this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new Xe(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = vo, this.normalScale = new Ie(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.roughnessMap = null, this.metalnessMap = null, this.alphaMap = null, this.envMap = null, this.envMapIntensity = 1, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.flatShading = !1, this.fog = !0, this.setValues(e); + } + copy(e) { + return super.copy(e), this.defines = { STANDARD: "" }, this.color.copy(e.color), this.roughness = e.roughness, this.metalness = e.metalness, this.map = e.map, this.lightMap = e.lightMap, this.lightMapIntensity = e.lightMapIntensity, this.aoMap = e.aoMap, this.aoMapIntensity = e.aoMapIntensity, this.emissive.copy(e.emissive), this.emissiveMap = e.emissiveMap, this.emissiveIntensity = e.emissiveIntensity, this.bumpMap = e.bumpMap, this.bumpScale = e.bumpScale, this.normalMap = e.normalMap, this.normalMapType = e.normalMapType, this.normalScale.copy(e.normalScale), this.displacementMap = e.displacementMap, this.displacementScale = e.displacementScale, this.displacementBias = e.displacementBias, this.roughnessMap = e.roughnessMap, this.metalnessMap = e.metalnessMap, this.alphaMap = e.alphaMap, this.envMap = e.envMap, this.envMapIntensity = e.envMapIntensity, this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.wireframeLinecap = e.wireframeLinecap, this.wireframeLinejoin = e.wireframeLinejoin, this.flatShading = e.flatShading, this.fog = e.fog, this; + } +} +class fs extends dt { + constructor(e, t = 1) { + super(), this.isLight = !0, this.type = "Light", this.color = new Xe(e), this.intensity = t; + } + dispose() { + } + copy(e, t) { + return super.copy(e, t), this.color.copy(e.color), this.intensity = e.intensity, this; + } + toJSON(e) { + const t = super.toJSON(e); + return t.object.color = this.color.getHex(), t.object.intensity = this.intensity, this.groundColor !== void 0 && (t.object.groundColor = this.groundColor.getHex()), this.distance !== void 0 && (t.object.distance = this.distance), this.angle !== void 0 && (t.object.angle = this.angle), this.decay !== void 0 && (t.object.decay = this.decay), this.penumbra !== void 0 && (t.object.penumbra = this.penumbra), this.shadow !== void 0 && (t.object.shadow = this.shadow.toJSON()), t; + } +} +const Wr = /* @__PURE__ */ new Qe(), Ya = /* @__PURE__ */ new P(), ja = /* @__PURE__ */ new P(); +class Ho { + constructor(e) { + this.camera = e, this.bias = 0, this.normalBias = 0, this.radius = 1, this.blurSamples = 8, this.mapSize = new Ie(512, 512), this.map = null, this.mapPass = null, this.matrix = new Qe(), this.autoUpdate = !0, this.needsUpdate = !1, this._frustum = new cs(), this._frameExtents = new Ie(1, 1), this._viewportCount = 1, this._viewports = [ + new $e(0, 0, 1, 1) + ]; + } + getViewportCount() { + return this._viewportCount; + } + getFrustum() { + return this._frustum; + } + updateMatrices(e) { + const t = this.camera, n = this.matrix; + Ya.setFromMatrixPosition(e.matrixWorld), t.position.copy(Ya), ja.setFromMatrixPosition(e.target.matrixWorld), t.lookAt(ja), t.updateMatrixWorld(), Wr.multiplyMatrices(t.projectionMatrix, t.matrixWorldInverse), this._frustum.setFromProjectionMatrix(Wr), n.set( + 0.5, + 0, + 0, + 0.5, + 0, + 0.5, + 0, + 0.5, + 0, + 0, + 0.5, + 0.5, + 0, + 0, + 0, + 1 + ), n.multiply(Wr); + } + getViewport(e) { + return this._viewports[e]; + } + getFrameExtents() { + return this._frameExtents; + } + dispose() { + this.map && this.map.dispose(), this.mapPass && this.mapPass.dispose(); + } + copy(e) { + return this.camera = e.camera.clone(), this.bias = e.bias, this.radius = e.radius, this.mapSize.copy(e.mapSize), this; + } + clone() { + return new this.constructor().copy(this); + } + toJSON() { + const e = {}; + return this.bias !== 0 && (e.bias = this.bias), this.normalBias !== 0 && (e.normalBias = this.normalBias), this.radius !== 1 && (e.radius = this.radius), (this.mapSize.x !== 512 || this.mapSize.y !== 512) && (e.mapSize = this.mapSize.toArray()), e.camera = this.camera.toJSON(!1).object, delete e.camera.matrix, e; + } +} +const Ka = /* @__PURE__ */ new Qe(), pi = /* @__PURE__ */ new P(), Xr = /* @__PURE__ */ new P(); +class tp extends Ho { + constructor() { + super(new Tt(90, 1, 0.5, 500)), this.isPointLightShadow = !0, this._frameExtents = new Ie(4, 2), this._viewportCount = 6, this._viewports = [ + // These viewports map a cube-map onto a 2D texture with the + // following orientation: + // + // xzXZ + // y Y + // + // X - Positive x direction + // x - Negative x direction + // Y - Positive y direction + // y - Negative y direction + // Z - Positive z direction + // z - Negative z direction + // positive X + new $e(2, 1, 1, 1), + // negative X + new $e(0, 1, 1, 1), + // positive Z + new $e(3, 1, 1, 1), + // negative Z + new $e(1, 1, 1, 1), + // positive Y + new $e(3, 0, 1, 1), + // negative Y + new $e(1, 0, 1, 1) + ], this._cubeDirections = [ + new P(1, 0, 0), + new P(-1, 0, 0), + new P(0, 0, 1), + new P(0, 0, -1), + new P(0, 1, 0), + new P(0, -1, 0) + ], this._cubeUps = [ + new P(0, 1, 0), + new P(0, 1, 0), + new P(0, 1, 0), + new P(0, 1, 0), + new P(0, 0, 1), + new P(0, 0, -1) + ]; + } + updateMatrices(e, t = 0) { + const n = this.camera, r = this.matrix, s = e.distance || n.far; + s !== n.far && (n.far = s, n.updateProjectionMatrix()), pi.setFromMatrixPosition(e.matrixWorld), n.position.copy(pi), Xr.copy(n.position), Xr.add(this._cubeDirections[t]), n.up.copy(this._cubeUps[t]), n.lookAt(Xr), n.updateMatrixWorld(), r.makeTranslation(-pi.x, -pi.y, -pi.z), Ka.multiplyMatrices(n.projectionMatrix, n.matrixWorldInverse), this._frustum.setFromProjectionMatrix(Ka); + } +} +class Za extends fs { + constructor(e, t, n = 0, r = 2) { + super(e, t), this.isPointLight = !0, this.type = "PointLight", this.distance = n, this.decay = r, this.shadow = new tp(); + } + get power() { + return this.intensity * 4 * Math.PI; + } + set power(e) { + this.intensity = e / (4 * Math.PI); + } + dispose() { + this.shadow.dispose(); + } + copy(e, t) { + return super.copy(e, t), this.distance = e.distance, this.decay = e.decay, this.shadow = e.shadow.clone(), this; + } +} +class np extends Ho { + constructor() { + super(new Uo(-5, 5, 5, -5, 0.5, 500)), this.isDirectionalLightShadow = !0; + } +} +class ip extends fs { + constructor(e, t) { + super(e, t), this.isDirectionalLight = !0, this.type = "DirectionalLight", this.position.copy(dt.DEFAULT_UP), this.updateMatrix(), this.target = new dt(), this.shadow = new np(); + } + dispose() { + this.shadow.dispose(); + } + copy(e) { + return super.copy(e), this.target = e.target.clone(), this.shadow = e.shadow.clone(), this; + } +} +class rp extends fs { + constructor(e, t) { + super(e, t), this.isAmbientLight = !0, this.type = "AmbientLight"; + } +} +class $a { + constructor(e = 1, t = 0, n = 0) { + return this.radius = e, this.phi = t, this.theta = n, this; + } + set(e, t, n) { + return this.radius = e, this.phi = t, this.theta = n, this; + } + copy(e) { + return this.radius = e.radius, this.phi = e.phi, this.theta = e.theta, this; + } + // restrict phi to be between EPS and PI-EPS + makeSafe() { + return this.phi = Math.max(1e-6, Math.min(Math.PI - 1e-6, this.phi)), this; + } + setFromVector3(e) { + return this.setFromCartesianCoords(e.x, e.y, e.z); + } + setFromCartesianCoords(e, t, n) { + return this.radius = Math.sqrt(e * e + t * t + n * n), this.radius === 0 ? (this.theta = 0, this.phi = 0) : (this.theta = Math.atan2(e, n), this.phi = Math.acos(vt(t / this.radius, -1, 1))), this; + } + clone() { + return new this.constructor().copy(this); + } +} +typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register", { detail: { + revision: ss +} })); +typeof window < "u" && (window.__THREE__ ? console.warn("WARNING: Multiple instances of Three.js being imported.") : window.__THREE__ = ss); +const Ja = { type: "change" }, qr = { type: "start" }, Qa = { type: "end" }, ji = new To(), eo = new rn(), sp = Math.cos(70 * ql.DEG2RAD); +class ap extends Rn { + constructor(e, t) { + super(), this.object = e, this.domElement = t, this.domElement.style.touchAction = "none", this.enabled = !0, this.target = new P(), this.cursor = new P(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: Ln.ROTATE, MIDDLE: Ln.DOLLY, RIGHT: Ln.PAN }, this.touches = { ONE: Pn.ROTATE, TWO: Pn.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this.getPolarAngle = function() { + return a.phi; + }, this.getAzimuthalAngle = function() { + return a.theta; + }, this.getDistance = function() { + return this.object.position.distanceTo(this.target); + }, this.listenToKeyEvents = function(T) { + T.addEventListener("keydown", ye), this._domElementKeyEvents = T; + }, this.stopListenToKeyEvents = function() { + this._domElementKeyEvents.removeEventListener("keydown", ye), this._domElementKeyEvents = null; + }, this.saveState = function() { + n.target0.copy(n.target), n.position0.copy(n.object.position), n.zoom0 = n.object.zoom; + }, this.reset = function() { + n.target.copy(n.target0), n.object.position.copy(n.position0), n.object.zoom = n.zoom0, n.object.updateProjectionMatrix(), n.dispatchEvent(Ja), n.update(), s = r.NONE; + }, this.update = function() { + const T = new P(), ne = new An().setFromUnitVectors(e.up, new P(0, 1, 0)), xe = ne.clone().invert(), fe = new P(), te = new An(), w = new P(), ie = 2 * Math.PI; + return function(Ce = null) { + const Te = n.object.position; + T.copy(Te).sub(n.target), T.applyQuaternion(ne), a.setFromVector3(T), n.autoRotate && s === r.NONE && Z(y(Ce)), n.enableDamping ? (a.theta += l.theta * n.dampingFactor, a.phi += l.phi * n.dampingFactor) : (a.theta += l.theta, a.phi += l.phi); + let ke = n.minAzimuthAngle, We = n.maxAzimuthAngle; + isFinite(ke) && isFinite(We) && (ke < -Math.PI ? ke += ie : ke > Math.PI && (ke -= ie), We < -Math.PI ? We += ie : We > Math.PI && (We -= ie), ke <= We ? a.theta = Math.max(ke, Math.min(We, a.theta)) : a.theta = a.theta > (ke + We) / 2 ? Math.max(ke, a.theta) : Math.min(We, a.theta)), a.phi = Math.max(n.minPolarAngle, Math.min(n.maxPolarAngle, a.phi)), a.makeSafe(), n.enableDamping === !0 ? n.target.addScaledVector(h, n.dampingFactor) : n.target.add(h), n.target.sub(n.cursor), n.target.clampLength(n.minTargetRadius, n.maxTargetRadius), n.target.add(n.cursor), n.zoomToCursor && C || n.object.isOrthographicCamera ? a.radius = q(a.radius) : a.radius = q(a.radius * c), T.setFromSpherical(a), T.applyQuaternion(xe), Te.copy(n.target).add(T), n.object.lookAt(n.target), n.enableDamping === !0 ? (l.theta *= 1 - n.dampingFactor, l.phi *= 1 - n.dampingFactor, h.multiplyScalar(1 - n.dampingFactor)) : (l.set(0, 0, 0), h.set(0, 0, 0)); + let et = !1; + if (n.zoomToCursor && C) { + let nt = null; + if (n.object.isPerspectiveCamera) { + const qe = T.length(); + nt = q(qe * c); + const st = qe - nt; + n.object.position.addScaledVector(R, st), n.object.updateMatrixWorld(); + } else if (n.object.isOrthographicCamera) { + const qe = new P(D.x, D.y, 0); + qe.unproject(n.object), n.object.zoom = Math.max(n.minZoom, Math.min(n.maxZoom, n.object.zoom / c)), n.object.updateProjectionMatrix(), et = !0; + const st = new P(D.x, D.y, 0); + st.unproject(n.object), n.object.position.sub(st).add(qe), n.object.updateMatrixWorld(), nt = T.length(); + } else + console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), n.zoomToCursor = !1; + nt !== null && (this.screenSpacePanning ? n.target.set(0, 0, -1).transformDirection(n.object.matrix).multiplyScalar(nt).add(n.object.position) : (ji.origin.copy(n.object.position), ji.direction.set(0, 0, -1).transformDirection(n.object.matrix), Math.abs(n.object.up.dot(ji.direction)) < sp ? e.lookAt(n.target) : (eo.setFromNormalAndCoplanarPoint(n.object.up, n.target), ji.intersectPlane(eo, n.target)))); + } else n.object.isOrthographicCamera && (n.object.zoom = Math.max(n.minZoom, Math.min(n.maxZoom, n.object.zoom / c)), n.object.updateProjectionMatrix(), et = !0); + return c = 1, C = !1, et || fe.distanceToSquared(n.object.position) > o || 8 * (1 - te.dot(n.object.quaternion)) > o || w.distanceToSquared(n.target) > 0 ? (n.dispatchEvent(Ja), fe.copy(n.object.position), te.copy(n.object.quaternion), w.copy(n.target), !0) : !1; + }; + }(), this.dispose = function() { + n.domElement.removeEventListener("contextmenu", Ye), n.domElement.removeEventListener("pointerdown", M), n.domElement.removeEventListener("pointercancel", I), n.domElement.removeEventListener("wheel", J), n.domElement.removeEventListener("pointermove", _), n.domElement.removeEventListener("pointerup", I), n._domElementKeyEvents !== null && (n._domElementKeyEvents.removeEventListener("keydown", ye), n._domElementKeyEvents = null); + }; + const n = this, r = { + NONE: -1, + ROTATE: 0, + DOLLY: 1, + PAN: 2, + TOUCH_ROTATE: 3, + TOUCH_PAN: 4, + TOUCH_DOLLY_PAN: 5, + TOUCH_DOLLY_ROTATE: 6 + }; + let s = r.NONE; + const o = 1e-6, a = new $a(), l = new $a(); + let c = 1; + const h = new P(), d = new Ie(), p = new Ie(), m = new Ie(), g = new Ie(), v = new Ie(), f = new Ie(), u = new Ie(), b = new Ie(), S = new Ie(), R = new P(), D = new Ie(); + let C = !1; + const A = [], W = {}; + let x = !1; + function y(T) { + return T !== null ? 2 * Math.PI / 60 * n.autoRotateSpeed * T : 2 * Math.PI / 60 / 60 * n.autoRotateSpeed; + } + function z(T) { + const ne = Math.abs(T * 0.01); + return Math.pow(0.95, n.zoomSpeed * ne); + } + function Z(T) { + l.theta -= T; + } + function re(T) { + l.phi -= T; + } + const L = function() { + const T = new P(); + return function(xe, fe) { + T.setFromMatrixColumn(fe, 0), T.multiplyScalar(-xe), h.add(T); + }; + }(), F = function() { + const T = new P(); + return function(xe, fe) { + n.screenSpacePanning === !0 ? T.setFromMatrixColumn(fe, 1) : (T.setFromMatrixColumn(fe, 0), T.crossVectors(n.object.up, T)), T.multiplyScalar(xe), h.add(T); + }; + }(), V = function() { + const T = new P(); + return function(xe, fe) { + const te = n.domElement; + if (n.object.isPerspectiveCamera) { + const w = n.object.position; + T.copy(w).sub(n.target); + let ie = T.length(); + ie *= Math.tan(n.object.fov / 2 * Math.PI / 180), L(2 * xe * ie / te.clientHeight, n.object.matrix), F(2 * fe * ie / te.clientHeight, n.object.matrix); + } else n.object.isOrthographicCamera ? (L(xe * (n.object.right - n.object.left) / n.object.zoom / te.clientWidth, n.object.matrix), F(fe * (n.object.top - n.object.bottom) / n.object.zoom / te.clientHeight, n.object.matrix)) : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."), n.enablePan = !1); + }; + }(); + function Y(T) { + n.object.isPerspectiveCamera || n.object.isOrthographicCamera ? c /= T : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), n.enableZoom = !1); + } + function X(T) { + n.object.isPerspectiveCamera || n.object.isOrthographicCamera ? c *= T : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), n.enableZoom = !1); + } + function k(T, ne) { + if (!n.zoomToCursor) + return; + C = !0; + const xe = n.domElement.getBoundingClientRect(), fe = T - xe.left, te = ne - xe.top, w = xe.width, ie = xe.height; + D.x = fe / w * 2 - 1, D.y = -(te / ie) * 2 + 1, R.set(D.x, D.y, 1).unproject(n.object).sub(n.object.position).normalize(); + } + function q(T) { + return Math.max(n.minDistance, Math.min(n.maxDistance, T)); + } + function Q(T) { + d.set(T.clientX, T.clientY); + } + function ce(T) { + k(T.clientX, T.clientX), u.set(T.clientX, T.clientY); + } + function H(T) { + g.set(T.clientX, T.clientY); + } + function j(T) { + p.set(T.clientX, T.clientY), m.subVectors(p, d).multiplyScalar(n.rotateSpeed); + const ne = n.domElement; + Z(2 * Math.PI * m.x / ne.clientHeight), re(2 * Math.PI * m.y / ne.clientHeight), d.copy(p), n.update(); + } + function oe(T) { + b.set(T.clientX, T.clientY), S.subVectors(b, u), S.y > 0 ? Y(z(S.y)) : S.y < 0 && X(z(S.y)), u.copy(b), n.update(); + } + function ve(T) { + v.set(T.clientX, T.clientY), f.subVectors(v, g).multiplyScalar(n.panSpeed), V(f.x, f.y), g.copy(v), n.update(); + } + function _e(T) { + k(T.clientX, T.clientY), T.deltaY < 0 ? X(z(T.deltaY)) : T.deltaY > 0 && Y(z(T.deltaY)), n.update(); + } + function we(T) { + let ne = !1; + switch (T.code) { + case n.keys.UP: + T.ctrlKey || T.metaKey || T.shiftKey ? re(2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(0, n.keyPanSpeed), ne = !0; + break; + case n.keys.BOTTOM: + T.ctrlKey || T.metaKey || T.shiftKey ? re(-2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(0, -n.keyPanSpeed), ne = !0; + break; + case n.keys.LEFT: + T.ctrlKey || T.metaKey || T.shiftKey ? Z(2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(n.keyPanSpeed, 0), ne = !0; + break; + case n.keys.RIGHT: + T.ctrlKey || T.metaKey || T.shiftKey ? Z(-2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(-n.keyPanSpeed, 0), ne = !0; + break; + } + ne && (T.preventDefault(), n.update()); + } + function Ae(T) { + if (A.length === 1) + d.set(T.pageX, T.pageY); + else { + const ne = ue(T), xe = 0.5 * (T.pageX + ne.x), fe = 0.5 * (T.pageY + ne.y); + d.set(xe, fe); + } + } + function ge(T) { + if (A.length === 1) + g.set(T.pageX, T.pageY); + else { + const ne = ue(T), xe = 0.5 * (T.pageX + ne.x), fe = 0.5 * (T.pageY + ne.y); + g.set(xe, fe); + } + } + function Pe(T) { + const ne = ue(T), xe = T.pageX - ne.x, fe = T.pageY - ne.y, te = Math.sqrt(xe * xe + fe * fe); + u.set(0, te); + } + function N(T) { + n.enableZoom && Pe(T), n.enablePan && ge(T); + } + function rt(T) { + n.enableZoom && Pe(T), n.enableRotate && Ae(T); + } + function Me(T) { + if (A.length == 1) + p.set(T.pageX, T.pageY); + else { + const xe = ue(T), fe = 0.5 * (T.pageX + xe.x), te = 0.5 * (T.pageY + xe.y); + p.set(fe, te); + } + m.subVectors(p, d).multiplyScalar(n.rotateSpeed); + const ne = n.domElement; + Z(2 * Math.PI * m.x / ne.clientHeight), re(2 * Math.PI * m.y / ne.clientHeight), d.copy(p); + } + function Re(T) { + if (A.length === 1) + v.set(T.pageX, T.pageY); + else { + const ne = ue(T), xe = 0.5 * (T.pageX + ne.x), fe = 0.5 * (T.pageY + ne.y); + v.set(xe, fe); + } + f.subVectors(v, g).multiplyScalar(n.panSpeed), V(f.x, f.y), g.copy(v); + } + function pe(T) { + const ne = ue(T), xe = T.pageX - ne.x, fe = T.pageY - ne.y, te = Math.sqrt(xe * xe + fe * fe); + b.set(0, te), S.set(0, Math.pow(b.y / u.y, n.zoomSpeed)), Y(S.y), u.copy(b); + const w = (T.pageX + ne.x) * 0.5, ie = (T.pageY + ne.y) * 0.5; + k(w, ie); + } + function je(T) { + n.enableZoom && pe(T), n.enablePan && Re(T); + } + function be(T) { + n.enableZoom && pe(T), n.enableRotate && Me(T); + } + function M(T) { + n.enabled !== !1 && (A.length === 0 && (n.domElement.setPointerCapture(T.pointerId), n.domElement.addEventListener("pointermove", _), n.domElement.addEventListener("pointerup", I)), ze(T), T.pointerType === "touch" ? Fe(T) : $(T)); + } + function _(T) { + n.enabled !== !1 && (T.pointerType === "touch" ? ee(T) : K(T)); + } + function I(T) { + De(T), A.length === 0 && (n.domElement.releasePointerCapture(T.pointerId), n.domElement.removeEventListener("pointermove", _), n.domElement.removeEventListener("pointerup", I)), n.dispatchEvent(Qa), s = r.NONE; + } + function $(T) { + let ne; + switch (T.button) { + case 0: + ne = n.mouseButtons.LEFT; + break; + case 1: + ne = n.mouseButtons.MIDDLE; + break; + case 2: + ne = n.mouseButtons.RIGHT; + break; + default: + ne = -1; + } + switch (ne) { + case Ln.DOLLY: + if (n.enableZoom === !1) return; + ce(T), s = r.DOLLY; + break; + case Ln.ROTATE: + if (T.ctrlKey || T.metaKey || T.shiftKey) { + if (n.enablePan === !1) return; + H(T), s = r.PAN; + } else { + if (n.enableRotate === !1) return; + Q(T), s = r.ROTATE; + } + break; + case Ln.PAN: + if (T.ctrlKey || T.metaKey || T.shiftKey) { + if (n.enableRotate === !1) return; + Q(T), s = r.ROTATE; + } else { + if (n.enablePan === !1) return; + H(T), s = r.PAN; + } + break; + default: + s = r.NONE; + } + s !== r.NONE && n.dispatchEvent(qr); + } + function K(T) { + switch (s) { + case r.ROTATE: + if (n.enableRotate === !1) return; + j(T); + break; + case r.DOLLY: + if (n.enableZoom === !1) return; + oe(T); + break; + case r.PAN: + if (n.enablePan === !1) return; + ve(T); + break; + } + } + function J(T) { + n.enabled === !1 || n.enableZoom === !1 || s !== r.NONE || (T.preventDefault(), n.dispatchEvent(qr), _e(me(T)), n.dispatchEvent(Qa)); + } + function me(T) { + const ne = T.deltaMode, xe = { + clientX: T.clientX, + clientY: T.clientY, + deltaY: T.deltaY + }; + switch (ne) { + case 1: + xe.deltaY *= 16; + break; + case 2: + xe.deltaY *= 100; + break; + } + return T.ctrlKey && !x && (xe.deltaY *= 10), xe; + } + function ae(T) { + T.key === "Control" && (x = !0, document.addEventListener("keyup", he, { passive: !0, capture: !0 })); + } + function he(T) { + T.key === "Control" && (x = !1, document.removeEventListener("keyup", he, { passive: !0, capture: !0 })); + } + function ye(T) { + n.enabled === !1 || n.enablePan === !1 || we(T); + } + function Fe(T) { + switch (Ee(T), A.length) { + case 1: + switch (n.touches.ONE) { + case Pn.ROTATE: + if (n.enableRotate === !1) return; + Ae(T), s = r.TOUCH_ROTATE; + break; + case Pn.PAN: + if (n.enablePan === !1) return; + ge(T), s = r.TOUCH_PAN; + break; + default: + s = r.NONE; + } + break; + case 2: + switch (n.touches.TWO) { + case Pn.DOLLY_PAN: + if (n.enableZoom === !1 && n.enablePan === !1) return; + N(T), s = r.TOUCH_DOLLY_PAN; + break; + case Pn.DOLLY_ROTATE: + if (n.enableZoom === !1 && n.enableRotate === !1) return; + rt(T), s = r.TOUCH_DOLLY_ROTATE; + break; + default: + s = r.NONE; + } + break; + default: + s = r.NONE; + } + s !== r.NONE && n.dispatchEvent(qr); + } + function ee(T) { + switch (Ee(T), s) { + case r.TOUCH_ROTATE: + if (n.enableRotate === !1) return; + Me(T), n.update(); + break; + case r.TOUCH_PAN: + if (n.enablePan === !1) return; + Re(T), n.update(); + break; + case r.TOUCH_DOLLY_PAN: + if (n.enableZoom === !1 && n.enablePan === !1) return; + je(T), n.update(); + break; + case r.TOUCH_DOLLY_ROTATE: + if (n.enableZoom === !1 && n.enableRotate === !1) return; + be(T), n.update(); + break; + default: + s = r.NONE; + } + } + function Ye(T) { + n.enabled !== !1 && T.preventDefault(); + } + function ze(T) { + A.push(T.pointerId); + } + function De(T) { + delete W[T.pointerId]; + for (let ne = 0; ne < A.length; ne++) + if (A[ne] == T.pointerId) { + A.splice(ne, 1); + return; + } + } + function Ee(T) { + let ne = W[T.pointerId]; + ne === void 0 && (ne = new Ie(), W[T.pointerId] = ne), ne.set(T.pageX, T.pageY); + } + function ue(T) { + const ne = T.pointerId === A[0] ? A[1] : A[0]; + return W[ne]; + } + n.domElement.addEventListener("contextmenu", Ye), n.domElement.addEventListener("pointerdown", M), n.domElement.addEventListener("pointercancel", I), n.domElement.addEventListener("wheel", J, { passive: !1 }), document.addEventListener("keydown", ae, { passive: !0, capture: !0 }), this.update(); + } +} +const op = "_wrapper_1xs2z_1", lp = "_canvasShell_1xs2z_28", cp = "_canvas_1xs2z_28", up = "_viewportLabels_1xs2z_48", hp = "_splitLabel_1xs2z_61", dp = "_controlOverlay_1xs2z_73", fp = "_resolutionCard_1xs2z_83", pp = "_resolutionControl_1xs2z_97", mp = "_slider_1xs2z_105", _p = "_sliderValue_1xs2z_111", Ut = { + wrapper: op, + canvasShell: lp, + canvas: cp, + viewportLabels: up, + splitLabel: hp, + controlOverlay: dp, + resolutionCard: fp, + resolutionControl: pp, + slider: mp, + sliderValue: _p +}, gp = 24, to = new P(20, 20, 20), no = new P(0, 0, 0), vp = 5e3, Yr = "#f2f0ea", xp = (i, e, t) => Math.min(t, Math.max(e, i)), jr = (i, e, t, n, r = 1) => { + if (typeof i != "number" || Number.isNaN(i)) return e; + const s = Math.round(i / r) * r; + return xp(s, t, n); +}; +function io(i) { + const e = new rp(16777215, 0.65); + i.add(e); + const t = new ip(16777215, 1.1); + t.position.set(20, 50, 20), t.castShadow = !0, t.shadow.mapSize.width = 2048, t.shadow.mapSize.height = 2048, i.add(t); + const n = new Za(3900150, 1.1, 50); + n.position.set(-10, 10, -10), i.add(n); + const r = new Za(16743001, 0.9, 50); + r.position.set(10, -10, 10), i.add(r); +} +function Mp(i) { + if (Array.isArray(i)) { + i.forEach((e) => e.dispose()); + return; + } + i.dispose(); +} +function ro(i) { + i.traverse((e) => { + const t = e; + t.geometry && t.geometry.dispose(), t.material && Mp(t.material); + }); +} +function yp({ + config: i, + onComplete: e, + onProgress: t, + theme: n, + className: r +}) { + const s = i.params ?? {}, o = jr(s.gridSize, 24, 12, 80, 1), a = jr(s.majorRadius, 8, 4, 10, 0.5), l = jr(s.minorRadius, 3, 1, 5, 0.25), [c, h] = Ms(o), [d, p] = Ms({ + layout: "landscape", + width: 0, + height: 0 + }), m = dr(null), g = dr(null), v = dr(!1); + ai(() => { + const R = m.current; + if (!R) return; + const D = () => { + const A = R.clientWidth, W = R.clientHeight; + if (!A || !W) return; + const x = A >= W ? "landscape" : "portrait"; + let y = A, z = W; + x === "landscape" ? (z = Math.min(W, A * (9 / 16)), y = z * (16 / 9)) : (y = Math.min(A, W / 2), z = y * 2), p({ + layout: x, + width: y, + height: z + }); + }, C = new ResizeObserver(D); + return C.observe(R), D(), () => { + C.disconnect(); + }; + }, []), ai(() => { + h(o), v.current = !1; + }, [i.id, o, a, l]); + const f = fr( + () => Math.max(gp, (a + l + 1.5) * 2), + [a, l] + ), u = fr(() => f / c, [f, c]); + ai(() => { + t == null || t(c === o ? 0 : 100); + }, [o, t, c]), ai(() => { + c === o || v.current || (v.current = !0, e({ + success: !0, + score: 100, + data: { + configId: i.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString(), + params: { + gridSize: c, + majorRadius: a, + minorRadius: l + } + } + })); + }, [i.id, o, a, l, e, c]), ai(() => { + const R = g.current; + if (!R) return; + const D = new Ha(), C = new Ha(), A = new Xe(Yr); + D.background = A, D.fog = new ir(Yr, 0.02), C.background = A, C.fog = new ir(Yr, 0.02), io(D), io(C); + const W = new Tt(45, 1, 0.1, 1e3); + W.position.copy(to); + const x = new Go({ antialias: !0, alpha: !0 }); + x.shadowMap.enabled = !0, x.shadowMap.type = ao, x.setPixelRatio(Math.min(window.devicePixelRatio, 2)), x.setScissorTest(!0), R.appendChild(x.domElement); + const y = new ap(W, x.domElement); + y.enableDamping = !0, y.dampingFactor = 0.05, y.minDistance = 5, y.maxDistance = 100, y.target.copy(no); + const z = new ds(a, l, 64, 128), Z = new qa({ + color: 3900150, + roughness: 0.22, + metalness: 0.1 + }), re = new Ot(z, Z); + re.castShadow = !0, re.receiveShadow = !0, re.rotation.x = -Math.PI / 2, D.add(re); + const L = u * 0.12, F = Math.max(u - L, u * 0.2), V = new ii(F, F, F), Y = new qa({ + color: 3900150, + roughness: 0.22, + metalness: 0.1 + }), X = new ls({ + color: 0, + transparent: !0, + opacity: 0.08, + wireframe: !0 + }), k = Math.pow(c, 3), q = new Xa(V, Y, k), Q = new Xa(V, X, k), ce = (c - 1) * u / 2, H = new dt(); + q.castShadow = !0, q.receiveShadow = !0, C.add(q), C.add(Q); + let j = 0, oe = 0; + for (let be = 0; be < c; be += 1) + for (let M = 0; M < c; M += 1) + for (let _ = 0; _ < c; _ += 1) { + const I = be * u - ce, $ = M * u - ce, K = _ * u - ce, J = Math.sqrt(I * I + K * K) - a, ae = J * J + $ * $ < l * l; + if (H.position.set(I, $, K), H.updateMatrix(), ae) { + q.setMatrixAt(j, H.matrix); + const he = new Xe(), ye = 0.52 + $ / Math.max(c, 1) * 0.18; + he.setHSL(ye, 0.78, 0.52), q.setColorAt(j, he), j += 1; + continue; + } + Q.setMatrixAt(oe, H.matrix), oe += 1; + } + q.count = j, Q.count = oe, q.instanceMatrix.needsUpdate = !0, Q.instanceMatrix.needsUpdate = !0, q.instanceColor && (q.instanceColor.needsUpdate = !0); + const ve = to.clone(), _e = no.clone(); + let we = !1, Ae = null, ge = 0, Pe = 0; + const N = () => { + ge = R.clientWidth, Pe = R.clientHeight, !(!ge || !Pe) && (W.aspect = 1, W.updateProjectionMatrix(), x.setSize(ge, Pe, !1)); + }, rt = new ResizeObserver(N); + rt.observe(R), N(); + const Me = () => { + we = !1, Ae !== null && (window.clearTimeout(Ae), Ae = null); + }, Re = () => { + Ae = window.setTimeout(() => { + we = !0; + }, vp); + }; + y.addEventListener("start", Me), y.addEventListener("end", Re); + let pe = 0; + const je = () => { + if (pe = window.requestAnimationFrame(je), we && (W.position.lerp(ve, 0.05), y.target.lerp(_e, 0.05), W.position.distanceTo(ve) < 0.1 && y.target.distanceTo(_e) < 0.1 && (we = !1)), re.rotation.z += 2e-3, q.rotation.y += 2e-3, Q.rotation.y += 2e-3, Q.visible = !1, y.update(), !ge || !Pe) return; + const be = ge >= Pe, M = be ? Math.min(ge / 2, Pe) : Math.min(ge, Pe / 2), _ = be ? (ge - M * 2) / 2 : (ge - M) / 2, I = be ? (Pe - M) / 2 : (Pe - M * 2) / 2, $ = _, K = be ? I : I + M, J = be ? _ + M : _, me = I; + x.setScissor($, K, M, M), x.setViewport($, K, M, M), x.render(D, W), x.setScissor(J, me, M, M), x.setViewport(J, me, M, M), x.render(C, W); + }; + return je(), () => { + window.cancelAnimationFrame(pe), Ae !== null && window.clearTimeout(Ae), rt.disconnect(), y.removeEventListener("start", Me), y.removeEventListener("end", Re), y.dispose(), x.dispose(), ro(D), ro(C), R.removeChild(x.domElement); + }; + }, [a, l, c, u]); + const b = fr( + () => ({ + "--gc-primary": (n == null ? void 0 : n.primary) ?? "var(--color-primary, #45c4b0)", + "--gc-accent": (n == null ? void 0 : n.accent) ?? "var(--color-accent, #ff7a59)", + "--gc-bg": (n == null ? void 0 : n.bg) ?? "var(--color-bg, #0d1117)", + "--gc-bg-secondary": (n == null ? void 0 : n.bgSecondary) ?? "var(--color-bg-secondary, #182237)", + "--gc-text": (n == null ? void 0 : n.text) ?? "var(--color-text, #f1f4ef)", + "--gc-text-muted": (n == null ? void 0 : n.textMuted) ?? "var(--color-text-muted, #b6c0d4)", + "--gc-border": (n == null ? void 0 : n.border) ?? "var(--color-border, #34516f)" + }), + [n] + ), S = (R) => { + h(Number(R.target.value)); + }; + return /* @__PURE__ */ pn("div", { className: [Ut.wrapper, r].filter(Boolean).join(" "), style: b, ref: m, children: /* @__PURE__ */ yi( + "div", + { + className: Ut.canvasShell, + "data-layout": d.layout, + style: { + width: d.width ? `${d.width}px` : void 0, + height: d.height ? `${d.height}px` : void 0 + }, + children: [ + /* @__PURE__ */ pn("div", { className: Ut.canvas, ref: g }), + /* @__PURE__ */ yi("div", { className: Ut.viewportLabels, "data-layout": d.layout, children: [ + /* @__PURE__ */ pn("div", { className: Ut.splitLabel, children: "Continuous" }), + /* @__PURE__ */ pn("div", { className: Ut.splitLabel, children: "Discrete" }) + ] }), + /* @__PURE__ */ pn("div", { className: Ut.controlOverlay, children: /* @__PURE__ */ pn("label", { className: Ut.resolutionCard, children: /* @__PURE__ */ yi("span", { className: Ut.resolutionControl, children: [ + /* @__PURE__ */ pn( + "input", + { + className: Ut.slider, + type: "range", + min: "12", + max: "80", + step: "1", + value: c, + onChange: S + } + ), + /* @__PURE__ */ yi("span", { className: Ut.sliderValue, children: [ + u.toFixed(2), + "u" + ] }) + ] }) }) }) + ] + } + ) }); +} +const Tp = { + name: "voxel_universe", + displayName: "Voxel Universe", + version: "1.0.0", + paramSchema: { + gridSize: { + type: "range", + label: "Voxel Resolution", + description: "How many voxels are used per axis. Higher values make each voxel smaller.", + default: 24, + min: 12, + max: 80, + step: 1 + }, + majorRadius: { + type: "range", + label: "Major Radius", + description: "Overall radius of the torus shape.", + default: 8, + min: 4, + max: 10, + step: 0.5 + }, + minorRadius: { + type: "range", + label: "Minor Radius", + description: "Thickness of the torus ring.", + default: 3, + min: 1, + max: 5, + step: 0.25 + } + }, + defaultParams: { + gridSize: 24, + majorRadius: 8, + minorRadius: 3 + } +}; +export { + yp as default, + Tp as metadata +}; +//# sourceMappingURL=voxel_universe.js.map diff --git a/dist/vendor/glitch/glitch_voxel_universe/voxel_universe.js.map b/dist/vendor/glitch/glitch_voxel_universe/voxel_universe.js.map new file mode 100644 index 0000000..ad72beb --- /dev/null +++ b/dist/vendor/glitch/glitch_voxel_universe/voxel_universe.js.map @@ -0,0 +1 @@ +{"version":3,"file":"voxel_universe.js","sources":["../node_modules/three/build/three.module.js","../node_modules/three/examples/jsm/controls/OrbitControls.js","../src/Component.tsx","../src/index.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2010-2023 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '160';\n\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst TwoPassDoubleSide = 2; // r149\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst ConstantColorFactor = 211;\nconst OneMinusConstantColorFactor = 212;\nconst ConstantAlphaFactor = 213;\nconst OneMinusConstantAlphaFactor = 214;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst AgXToneMapping = 6;\nconst AttachedBindMode = 'attached';\nconst DetachedBindMode = 'detached';\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst RGB_BPTC_SIGNED_Format = 36494;\nconst RGB_BPTC_UNSIGNED_Format = 36495;\nconst RED_RGTC1_Format = 36283;\nconst SIGNED_RED_RGTC1_Format = 36284;\nconst RED_GREEN_RGTC2_Format = 36285;\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\n/** @deprecated Use LinearSRGBColorSpace or NoColorSpace in three.js r152+. */\nconst LinearEncoding = 3000;\n/** @deprecated Use SRGBColorSpace in three.js r152+. */\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\nconst DisplayP3ColorSpace = 'display-p3';\nconst LinearDisplayP3ColorSpace = 'display-p3-linear';\n\nconst LinearTransfer = 'linear';\nconst SRGBTransfer = 'srgb';\n\nconst Rec709Primaries = 'rec709';\nconst P3Primaries = 'p3';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst NeverCompare = 512;\nconst LessCompare = 513;\nconst EqualCompare = 514;\nconst LessEqualCompare = 515;\nconst GreaterCompare = 516;\nconst NotEqualCompare = 517;\nconst GreaterEqualCompare = 518;\nconst AlwaysCompare = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\nconst WebGLCoordinateSystem = 2000;\nconst WebGPUCoordinateSystem = 2001;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\n/**\n * Matrices converting P3 <-> Rec. 709 primaries, without gamut mapping\n * or clipping. Based on W3C specifications for sRGB and Display P3,\n * and ICC specifications for the D50 connection space. Values in/out\n * are _linear_ sRGB and _linear_ Display P3.\n *\n * Note that both sRGB and Display P3 use the sRGB transfer functions.\n *\n * Reference:\n * - http://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n\nconst LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().set(\n\t0.8224621, 0.177538, 0.0,\n\t0.0331941, 0.9668058, 0.0,\n\t0.0170827, 0.0723974, 0.9105199,\n);\n\nconst LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().set(\n\t1.2249401, - 0.2249404, 0.0,\n\t- 0.0420569, 1.0420571, 0.0,\n\t- 0.0196376, - 0.0786361, 1.0982735\n);\n\n/**\n * Defines supported color spaces by transfer function and primaries,\n * and provides conversions to/from the Linear-sRGB reference space.\n */\nconst COLOR_SPACES = {\n\t[ LinearSRGBColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color,\n\t\tfromReference: ( color ) => color,\n\t},\n\t[ SRGBColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear(),\n\t\tfromReference: ( color ) => color.convertLinearToSRGB(),\n\t},\n\t[ LinearDisplayP3ColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ),\n\t},\n\t[ DisplayP3ColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB(),\n\t},\n};\n\nconst SUPPORTED_WORKING_COLOR_SPACES = new Set( [ LinearSRGBColorSpace, LinearDisplayP3ColorSpace ] );\n\nconst ColorManagement = {\n\n\tenabled: true,\n\n\t_workingColorSpace: LinearSRGBColorSpace,\n\n\tget workingColorSpace() {\n\n\t\treturn this._workingColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tif ( ! SUPPORTED_WORKING_COLOR_SPACES.has( colorSpace ) ) {\n\n\t\t\tthrow new Error( `Unsupported working color space, \"${ colorSpace }\".` );\n\n\t\t}\n\n\t\tthis._workingColorSpace = colorSpace;\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tconst sourceToReference = COLOR_SPACES[ sourceColorSpace ].toReference;\n\t\tconst targetFromReference = COLOR_SPACES[ targetColorSpace ].fromReference;\n\n\t\treturn targetFromReference( sourceToReference( color ) );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this._workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this._workingColorSpace );\n\n\t},\n\n\tgetPrimaries: function ( colorSpace ) {\n\n\t\treturn COLOR_SPACES[ colorSpace ].primaries;\n\n\t},\n\n\tgetTransfer: function ( colorSpace ) {\n\n\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\treturn COLOR_SPACES[ colorSpace ].transfer;\n\n\t},\n\n};\n\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet _sourceId = 0;\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet _textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\t\tthis.channel = 0;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\tif ( typeof colorSpace === 'string' ) {\n\n\t\t\tthis.colorSpace = colorSpace;\n\n\t\t} else { // @deprecated, r152\n\n\t\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\t\tthis.colorSpace = colorSpace === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.colorSpace = source.colorSpace;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tget encoding() { // @deprecated, r152\n\n\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\treturn this.colorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;\n\n\t}\n\n\tset encoding( encoding ) { // @deprecated, r152\n\n\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\tthis.colorSpace = encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass RenderTarget extends EventDispatcher {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tif ( options.encoding !== undefined ) {\n\n\t\t\t// @deprecated, r152\n\t\t\twarnOnce( 'THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace.' );\n\t\t\toptions.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\t\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0\n\t\t}, options );\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps;\n\t\tthis.texture.internalFormat = options.internalFormat;\n\n\t\tthis.depthBuffer = options.depthBuffer;\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\tthis.samples = options.samples;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass WebGLRenderTarget extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, count = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$4 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.isSphere = true;\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$3.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.DEFAULT_ORDER = 'XYZ';\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tif ( child.matrixWorldAutoUpdate === true || force === true ) {\n\n\t\t\t\tchild.updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tif ( child.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.visibility = this._visibility;\n\t\t\tobject.active = this._active;\n\t\t\tobject.bounds = this._bounds.map( bound => ( {\n\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\tboxMin: bound.box.min.toArray(),\n\t\t\t\tboxMax: bound.box.max.toArray(),\n\n\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\tsphereRadius: bound.sphere.radius,\n\t\t\t\tsphereCenter: bound.sphere.center.toArray()\n\t\t\t} ) );\n\n\t\t\tobject.maxGeometryCount = this._maxGeometryCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = {\n\t\t\t\t\tcenter: object.boundingSphere.center.toArray(),\n\t\t\t\t\tradius: object.boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = {\n\t\t\t\t\tmin: object.boundingBox.min.toArray(),\n\t\t\t\t\tmax: object.boundingBox.max.toArray()\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nlet warnedGetUV = false;\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$1 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) { // @deprecated, r151\n\n\t\tif ( warnedGetUV === false ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation().' );\n\n\t\t\twarnedGetUV = true;\n\n\t\t}\n\n\t\treturn this.getInterpolation( point, p1, p2, p3, uv1, uv2, uv3, target );\n\n\t}\n\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$1 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$1.x );\n\t\ttarget.addScaledVector( v2, _v3$1.y );\n\t\ttarget.addScaledVector( v3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) { // @deprecated, r151\n\n\t\tif ( warnedGetUV === false ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation().' );\n\n\t\t\twarnedGetUV = true;\n\n\t\t}\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\t\tthis.alphaHash = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\t\tthis.blendAlpha = 0;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\t\tthis.forceSinglePass = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nconst DataUtils = {\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat,\n};\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\t\tthis.gpuType = FloatType;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$2 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _normalA = /*@__PURE__*/ new Vector3();\nconst _normalB = /*@__PURE__*/ new Vector3();\nconst _normalC = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv1, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv1, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv1, c );\n\n\t\t\tintersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\t\t\tintersection.uv2 = intersection.uv1; // @deprecated, r152\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\t_normalA.fromBufferAttribute( normal, a );\n\t\t\t_normalB.fromBufferAttribute( normal, b );\n\t\t\t_normalC.fromBufferAttribute( normal, c );\n\n\t\t\tintersection.normal = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _normalA, _normalB, _normalC, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( - 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tif ( renderer.getRenderTarget() === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.forceSinglePass = true;\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false, // set to use shader texture LOD\n\t\t\tclipCullDistance: false // set to use vertex shader clipping\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = - 90; // negative fov is not an error\nconst aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tthis.renderTarget = renderTarget;\n\t\tthis.coordinateSystem = null;\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, - 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\t\tcameraPX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tif ( options.encoding !== undefined ) {\n\n\t\t\t// @deprecated, r152\n\t\t\twarnOnce( 'THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace.' );\n\t\t\toptions.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$5.center.set( 0, 0, 0 );\n\t\t_sphere$5.radius = 0.7071067811865476;\n\t\t_sphere$5.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\t\tconst size = array.byteLength;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = gl.HALF_FLOAT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version,\n\t\t\tsize: size\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute._updateRange; // deprecated\n\t\tconst updateRanges = attribute.updateRanges;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 && updateRanges.length === 0 ) {\n\n\t\t\t// Not using update ranges\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t}\n\n\t\tif ( updateRanges.length !== 0 ) {\n\n\t\t\tfor ( let i = 0, l = updateRanges.length; i < l; i ++ ) {\n\n\t\t\t\tconst range = updateRanges[ i ];\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\tarray, range.start, range.count );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\tarray.subarray( range.start, range.start + range.count ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tattribute.clearUpdateRanges();\n\n\t\t}\n\n\t\t// deprecated\n\t\tif ( updateRange.count !== - 1 ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t\tattribute.onUploadCallback();\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tif ( data.size !== attribute.array.byteLength ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: The size of the buffer attribute\\'s array buffer does not match the original size. Resizing buffer attributes is not supported.' );\n\n\t\t\t}\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\n\nvar alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\\tconst float ALPHA_HASH_SCALE = 0.05;\\n\\tfloat hash2D( vec2 value ) {\\n\\t\\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\\t}\\n\\tfloat hash3D( vec3 value ) {\\n\\t\\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\\t}\\n\\tfloat getAlphaHashThreshold( vec3 position ) {\\n\\t\\tfloat maxDeriv = max(\\n\\t\\t\\tlength( dFdx( position.xyz ) ),\\n\\t\\t\\tlength( dFdy( position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\\t\\tvec2 pixScales = vec2(\\n\\t\\t\\texp2( floor( log2( pixScale ) ) ),\\n\\t\\t\\texp2( ceil( log2( pixScale ) ) )\\n\\t\\t);\\n\\t\\tvec2 alpha = vec2(\\n\\t\\t\\thash3D( floor( pixScales.x * position.xyz ) ),\\n\\t\\t\\thash3D( floor( pixScales.y * position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat lerpFactor = fract( log2( pixScale ) );\\n\\t\\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\\t\\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\\t\\tvec3 cases = vec3(\\n\\t\\t\\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\\t\\t\\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\\t\\t\\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\\t\\t);\\n\\t\\tfloat threshold = ( x < ( 1.0 - a ) )\\n\\t\\t\\t? ( ( x < a ) ? cases.x : cases.y )\\n\\t\\t\\t: cases.z;\\n\\t\\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\\t}\\n#endif\";\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_CLEARCOAT ) \\n\\t\\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_SHEEN ) \\n\\t\\tsheenSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar batching_pars_vertex = \"#ifdef USE_BATCHING\\n\\tattribute float batchId;\\n\\tuniform highp sampler2D batchingTexture;\\n\\tmat4 getBatchingMatrix( const in float i ) {\\n\\t\\tint size = textureSize( batchingTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\\tmat4 batchingMatrix = getBatchingMatrix( batchId );\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\\tvPosition = vec3( position );\\n#endif\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"float G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n} // validated\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vBumpMapUv );\\n\\t\\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\\n\\t\\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\n#ifdef USE_ALPHAHASH\\n\\tvarying vec3 vPosition;\\n#endif\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n} // validated\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\\tmat3 bm = mat3( batchingMatrix );\\n\\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\\ttransformedNormal = bm * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = bm * transformedTangent;\\n\\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmat3 im = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\\ttransformedNormal = im * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = im * transformedTangent;\\n\\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar colorspace_pars_fragment = \"\\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\\n\\tvec3( 0.8224621, 0.177538, 0.0 ),\\n\\tvec3( 0.0331941, 0.9668058, 0.0 ),\\n\\tvec3( 0.0170827, 0.0723974, 0.9105199 )\\n);\\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.2249401, - 0.2249404, 0.0 ),\\n\\tvec3( - 0.0420569, 1.0420571, 0.0 ),\\n\\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\\n);\\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\\n}\\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\\n}\\nvec4 LinearTransferOETF( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 sRGBTransferOETF( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn sRGBTransferOETF( value );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\\tuniform vec3 lightProbe[ 9 ];\\n#endif\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( LEGACY_LIGHTS )\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#else\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\\t\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t\\tvec3 bentNormal = cross( bitangent, viewDir );\\n\\t\\t\\t\\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\\t\\t\\t\\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\\t\\t\\t\\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef USE_SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\\t\\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\\t\\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\\t#else\\n\\t\\tvec2 anisotropyV = anisotropyVector;\\n\\t#endif\\n\\tmaterial.anisotropy = length( anisotropyV );\\n\\tif( material.anisotropy == 0.0 ) {\\n\\t\\tanisotropyV = vec2( 1.0, 0.0 );\\n\\t} else {\\n\\t\\tanisotropyV /= material.anisotropy;\\n\\t\\tmaterial.anisotropy = saturate( material.anisotropy );\\n\\t}\\n\\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat anisotropy;\\n\\t\\tfloat alphaT;\\n\\t\\tvec3 anisotropyT;\\n\\t\\tvec3 anisotropyB;\\n\\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\n#ifdef USE_ANISOTROPY\\n\\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\\t\\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\\t\\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\\t\\tfloat v = 0.5 / ( gv + gl );\\n\\t\\treturn saturate(v);\\n\\t}\\n\\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\\t\\tfloat a2 = alphaT * alphaB;\\n\\t\\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\\t\\thighp float v2 = dot( v, v );\\n\\t\\tfloat w2 = a2 / v2;\\n\\t\\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\\t\\tvec3 f0 = material.clearcoatF0;\\n\\t\\tfloat f90 = material.clearcoatF90;\\n\\t\\tfloat roughness = material.clearcoatRoughness;\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\\tvec3 f0 = material.specularColor;\\n\\tfloat f90 = material.specularF90;\\n\\tfloat roughness = material.roughness;\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\\t\\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\\t\\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\\t\\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\\t\\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\\t\\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\\t\\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\\t\\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\\t#else\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t#endif\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometryNormal;\\n\\t\\tvec3 viewDir = geometryViewDir;\\n\\t\\tvec3 position = geometryPosition;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometryPosition, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\t#if defined( USE_LIGHT_PROBES )\\n\\t\\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\\t#endif\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometryNormal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\\t#else\\n\\t\\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t#if defined( USE_POINTS_UV )\\n\\t\\tvec2 uv = vUv;\\n\\t#else\\n\\t\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\\tvarying vec2 vUv;\\n#else\\n\\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t\\tuniform mat3 uvTransform;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal *= faceDirection;\\n\\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\\t\\t#if defined( USE_NORMALMAP )\\n\\t\\t\\tvNormalMapUv\\n\\t\\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tvClearcoatNormalMapUv\\n\\t\\t#else\\n\\t\\t\\tvUv\\n\\t\\t#endif\\n\\t\\t);\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn[0] *= faceDirection;\\n\\t\\ttbn[1] *= faceDirection;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn2[0] *= faceDirection;\\n\\t\\ttbn2[1] *= faceDirection;\\n\\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( uv.st );\\n\\t\\tvec2 st1 = dFdy( uv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\\n\\t\\treturn mat3( T * scale, B * scale, N );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec2 packDepthToRG( in highp float v ) {\\n\\treturn packDepthToRGBA( v ).yx;\\n}\\nfloat unpackRGToDepth( const in highp vec2 v ) {\\n\\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn depth * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * depth - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_BATCHING\\n\\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\\n\\t\\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\tvec4 shadowWorldPosition;\\n#endif\\n#if defined( USE_SHADOWMAP )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tint size = textureSize( boneTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn saturate( toneMappingExposure * color );\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\\tvec3 x2 = x * x;\\n\\tvec3 x4 = x2 * x2;\\n\\treturn + 15.5 * x4 * x2\\n\\t\\t- 40.14 * x4 * x\\n\\t\\t+ 31.96 * x4\\n\\t\\t- 6.868 * x2 * x\\n\\t\\t+ 0.4298 * x2\\n\\t\\t+ 0.1191 * x\\n\\t\\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\\tconst mat3 AgXInsetMatrix = mat3(\\n\\t\\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\\t\\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\\t\\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\\t);\\n\\tconst mat3 AgXOutsetMatrix = mat3(\\n\\t\\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\\t\\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\\t\\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\\t);\\n\\tconst float AgxMinEv = - 12.47393;\\tconst float AgxMaxEv = 4.026069;\\n\\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = AgXInsetMatrix * color;\\n\\tcolor = max( color, 1e-10 );\\tcolor = log2( color );\\n\\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\tcolor = agxDefaultContrastApprox( color );\\n\\tcolor = AgXOutsetMatrix * color;\\n\\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\\treturn color;\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmitted = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tfloat w0( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w1( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\\t}\\n\\tfloat w2( float a ){\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w3( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\\t}\\n\\tfloat g0( float a ) {\\n\\t\\treturn w0( a ) + w1( a );\\n\\t}\\n\\tfloat g1( float a ) {\\n\\t\\treturn w2( a ) + w3( a );\\n\\t}\\n\\tfloat h0( float a ) {\\n\\t\\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\\t}\\n\\tfloat h1( float a ) {\\n\\t\\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\\t}\\n\\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\\t\\tuv = uv * texelSize.zw + 0.5;\\n\\t\\tvec2 iuv = floor( uv );\\n\\t\\tvec2 fuv = fract( uv );\\n\\t\\tfloat g0x = g0( fuv.x );\\n\\t\\tfloat g1x = g1( fuv.x );\\n\\t\\tfloat h0x = h0( fuv.x );\\n\\t\\tfloat h1x = h1( fuv.x );\\n\\t\\tfloat h0y = h0( fuv.y );\\n\\t\\tfloat h1y = h1( fuv.y );\\n\\t\\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\\t\\t\\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\\t}\\n\\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\\t\\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\\t\\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\\t\\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\\t\\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\\t\\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\\t\\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\\t\\treturn mix( fSample, cSample, fract( lod ) );\\n\\t}\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\\t}\\n\\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform mat3 mapTransform;\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform mat3 alphaMapTransform;\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tuniform mat3 lightMapTransform;\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tuniform mat3 aoMapTransform;\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tuniform mat3 bumpMapTransform;\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tuniform mat3 normalMapTransform;\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tuniform mat3 displacementMapTransform;\\n\\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tuniform mat3 emissiveMapTransform;\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tuniform mat3 metalnessMapTransform;\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tuniform mat3 roughnessMapTransform;\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tuniform mat3 anisotropyMapTransform;\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tuniform mat3 clearcoatMapTransform;\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform mat3 clearcoatNormalMapTransform;\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform mat3 clearcoatRoughnessMapTransform;\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tuniform mat3 sheenColorMapTransform;\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tuniform mat3 sheenRoughnessMapTransform;\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tuniform mat3 iridescenceMapTransform;\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform mat3 iridescenceThicknessMapTransform;\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tuniform mat3 specularMapTransform;\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tuniform mat3 specularColorMapTransform;\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tuniform mat3 specularIntensityMapTransform;\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_BATCHING\\n\\t\\tworldPosition = batchingMatrix * worldPosition;\\n\\t#endif\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$h = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$h = \"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$g = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\\n\\t#else\\n\\t\\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = texColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define USE_SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef USE_SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\tuniform vec2 anisotropyVector;\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tuniform sampler2D anisotropyMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#ifdef USE_POINTS_UV\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\\t#ifdef USE_POINTS_UV\\n\\t\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphahash_fragment: alphahash_fragment,\n\talphahash_pars_fragment: alphahash_pars_fragment,\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbatching_pars_vertex: batching_pars_vertex,\n\tbatching_vertex: batching_vertex,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tcolorspace_fragment: colorspace_fragment,\n\tcolorspace_pars_fragment: colorspace_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\topaque_fragment: opaque_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$h,\n\tbackground_frag: fragment$h,\n\tbackgroundCube_vert: vertex$g,\n\tbackgroundCube_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\t\tspecularMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 }, // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 },\n\t\taoMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 },\n\t\tlightMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null },\n\t\temissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null },\n\t\tmetalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null },\n\t\troughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tbackgroundCube: {\n\n\t\tuniforms: {\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: - 1 },\n\t\t\tbackgroundBlurriness: { value: 0 },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.backgroundCube_vert,\n\t\tfragmentShader: ShaderChunk.backgroundCube_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tclearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tiridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\tsheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tthicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t\tspecularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tanisotropyVector: { value: /*@__PURE__*/ new Vector2() },\n\t\t\tanisotropyMap: { value: null },\n\t\t\tanisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nconst _rgb = { r: 0, b: 0, g: 0 };\n\nfunction WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tconst usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background\n\t\t\tbackground = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tconst environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n\n\t\tif ( environmentBlendMode === 'additive' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );\n\n\t\t} else if ( environmentBlendMode === 'alpha-blend' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.backgroundCube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.backgroundCube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\t\t\tboxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n\t\t\tboxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tboxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// add \"map\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\t\t\tplaneMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tplaneMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tcolor.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );\n\n\t\tstate.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {\n\n\t\tif ( integer === true ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t// check for integer attributes (WebGL 2 only)\n\n\t\t\t\t\tconst integer = ( capabilities.isWebGL2 === true && ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType ) );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ], counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawArraysWEBGL( mode, starts, 0, counts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tconst isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tconst maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tconst maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tconst maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tconst maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tconst maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tconst maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tconst maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( gl.MAX_SAMPLES ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\n\t};\n\n\tthis.setGlobalState = function ( planes, camera ) {\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\nlet _oldActiveCubeFace = 0;\nlet _oldActiveMipmapLevel = 0;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tcolorSpace: LinearSRGBColorSpace,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\t\t\t\tgetExtension( 'WEBGL_clip_cull_distance' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tconst array = geometry.morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.remove( array[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else if ( geometryPosition !== undefined ) {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ] / bytesPerElement, counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawElementsWEBGL( mode, counts, 0, type, starts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tif ( updateMap.get( object ) !== frame ) {\n\n\t\t\t\tattributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );\n\n\t\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\t\tattributes.update( object.instanceColor, gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t\tupdateMap.set( object, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( updateMap.get( skeleton ) !== frame ) {\n\n\t\t\t\tskeleton.update();\n\n\t\t\t\tupdateMap.set( skeleton, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\n\nconst emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );\nemptyShadowTexture.compareFunction = LessEqualCompare;\n\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array or THREE.VectorN)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2i( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3i( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4i( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array or THREE.VectorN)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2ui( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3ui( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4ui( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\tconst emptyTexture2D = ( this.type === gl.SAMPLER_2D_SHADOW ) ? emptyShadowTexture : emptyTexture;\n\n\ttextures.setTexture2D( v || emptyTexture2D, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/\nconst COMPLETION_STATUS_KHR = 0x91B1;\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( colorSpace ) {\n\n\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\tconst encodingPrimaries = ColorManagement.getPrimaries( colorSpace );\n\n\tlet gamutMapping;\n\n\tif ( workingPrimaries === encodingPrimaries ) {\n\n\t\tgamutMapping = '';\n\n\t} else if ( workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries ) {\n\n\t\tgamutMapping = 'LinearDisplayP3ToLinearSRGB';\n\n\t} else if ( workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries ) {\n\n\t\tgamutMapping = 'LinearSRGBToLinearDisplayP3';\n\n\t}\n\n\tswitch ( colorSpace ) {\n\n\t\tcase LinearSRGBColorSpace:\n\t\tcase LinearDisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t\tcase SRGBColorSpace:\n\t\tcase DisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'sRGBTransferOETF' ];\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported color space:', colorSpace );\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, colorSpace ) {\n\n\tconst components = getEncodingComponents( colorSpace );\n\treturn `vec4 ${functionName}( vec4 value ) { return ${components[ 0 ]}( ${components[ 1 ]}( value ) ); }`;\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase AgXToneMapping:\n\t\t\ttoneMappingName = 'AgX';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.normalMapTangentSpace || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateVertexExtensions( parameters ) {\n\n\tconst chunks = [\n\t\tparameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === gl.FLOAT_MAT2 ) locationSize = 2;\n\t\tif ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;\n\t\tif ( info.type === gl.FLOAT_MAT4 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nconst shaderChunkMap = new Map( [\n\t[ 'encodings_fragment', 'colorspace_fragment' ], // @deprecated, r154\n\t[ 'encodings_pars_fragment', 'colorspace_pars_fragment' ], // @deprecated, r154\n\t[ 'output_fragment', 'opaque_fragment' ], // @deprecated, r154\n] );\n\nfunction includeReplacer( match, include ) {\n\n\tlet string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tconst newInclude = shaderChunkMap.get( include );\n\n\t\tif ( newInclude !== undefined ) {\n\n\t\t\tstring = ShaderChunk[ newInclude ];\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( unrollLoopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customVertexExtensions = generateVertexExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',\n\t\t\tparameters.batching ? '#define USE_BATCHING' : '',\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\t//\n\n\t\t\tparameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '',\n\t\t\tparameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '',\n\t\t\tparameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '',\n\t\t\tparameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '',\n\t\t\tparameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '',\n\t\t\tparameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '',\n\t\t\tparameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '',\n\t\t\tparameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '',\n\n\t\t\tparameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',\n\t\t\tparameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',\n\n\t\t\tparameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',\n\n\t\t\tparameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',\n\t\t\tparameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',\n\t\t\tparameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',\n\n\t\t\tparameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',\n\t\t\tparameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',\n\n\t\t\tparameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '',\n\t\t\tparameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '',\n\n\t\t\tparameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '',\n\t\t\tparameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '',\n\t\t\tparameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '',\n\n\t\t\tparameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '',\n\t\t\tparameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '',\n\n\t\t\t//\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_UV1',\n\n\t\t\t'\tattribute vec2 uv1;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV2',\n\n\t\t\t'\tattribute vec2 uv2;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV3',\n\n\t\t\t'\tattribute vec2 uv3;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\tcustomVertexExtensions,\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tfunction onFirstUse( self ) {\n\n\t\t// check for link errors\n\t\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\t\tlet runnable = true;\n\t\t\tlet haveDiagnostics = true;\n\n\t\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\t\trunnable = false;\n\n\t\t\t\tif ( typeof renderer.debug.onShaderError === 'function' ) {\n\n\t\t\t\t\trenderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// default error reporting\n\n\t\t\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\\n\\n' +\n\t\t\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\t\t\tfragmentErrors\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t} else if ( programLog !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\t\thaveDiagnostics = false;\n\n\t\t\t}\n\n\t\t\tif ( haveDiagnostics ) {\n\n\t\t\t\tself.diagnostics = {\n\n\t\t\t\t\trunnable: runnable,\n\n\t\t\t\t\tprogramLog: programLog,\n\n\t\t\t\t\tvertexShader: {\n\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t\t},\n\n\t\t\t\t\tfragmentShader: {\n\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Clean up\n\n\t\t// Crashes in iOS9 and iOS10. #18402\n\t\t// gl.detachShader( program, glVertexShader );\n\t\t// gl.detachShader( program, glFragmentShader );\n\n\t\tgl.deleteShader( glVertexShader );\n\t\tgl.deleteShader( glFragmentShader );\n\n\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t}\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\t// Populates cachedUniforms and cachedAttributes\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\t// Populates cachedAttributes and cachedUniforms\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// indicate when the program is ready to be used. if the KHR_parallel_shader_compile extension isn't supported,\n\t// flag the program as ready immediately. It may cause a stall when it's first used.\n\n\tlet programReady = ( parameters.rendererExtensionParallelShaderCompile === false );\n\n\tthis.isReady = function () {\n\n\t\tif ( programReady === false ) {\n\n\t\t\tprogramReady = gl.getProgramParameter( program, COMPLETION_STATUS_KHR );\n\n\t\t}\n\n\t\treturn programReady;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.type = parameters.shaderType;\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id$1 = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id$1 ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst programs = [];\n\n\tconst IS_WEBGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getChannel( value ) {\n\n\t\tif ( value === 0 ) return 'uv';\n\n\t\treturn `uv${ value }`;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst IS_INSTANCEDMESH = object.isInstancedMesh === true;\n\t\tconst IS_BATCHEDMESH = object.isBatchedMesh === true;\n\n\t\tconst HAS_MAP = !! material.map;\n\t\tconst HAS_MATCAP = !! material.matcap;\n\t\tconst HAS_ENVMAP = !! envMap;\n\t\tconst HAS_AOMAP = !! material.aoMap;\n\t\tconst HAS_LIGHTMAP = !! material.lightMap;\n\t\tconst HAS_BUMPMAP = !! material.bumpMap;\n\t\tconst HAS_NORMALMAP = !! material.normalMap;\n\t\tconst HAS_DISPLACEMENTMAP = !! material.displacementMap;\n\t\tconst HAS_EMISSIVEMAP = !! material.emissiveMap;\n\n\t\tconst HAS_METALNESSMAP = !! material.metalnessMap;\n\t\tconst HAS_ROUGHNESSMAP = !! material.roughnessMap;\n\n\t\tconst HAS_ANISOTROPY = material.anisotropy > 0;\n\t\tconst HAS_CLEARCOAT = material.clearcoat > 0;\n\t\tconst HAS_IRIDESCENCE = material.iridescence > 0;\n\t\tconst HAS_SHEEN = material.sheen > 0;\n\t\tconst HAS_TRANSMISSION = material.transmission > 0;\n\n\t\tconst HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;\n\n\t\tconst HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;\n\t\tconst HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;\n\t\tconst HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;\n\n\t\tconst HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;\n\t\tconst HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;\n\n\t\tconst HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap;\n\t\tconst HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap;\n\n\t\tconst HAS_SPECULARMAP = !! material.specularMap;\n\t\tconst HAS_SPECULAR_COLORMAP = !! material.specularColorMap;\n\t\tconst HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap;\n\n\t\tconst HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap;\n\t\tconst HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap;\n\n\t\tconst HAS_GRADIENTMAP = !! material.gradientMap;\n\n\t\tconst HAS_ALPHAMAP = !! material.alphaMap;\n\n\t\tconst HAS_ALPHATEST = material.alphaTest > 0;\n\n\t\tconst HAS_ALPHAHASH = !! material.alphaHash;\n\n\t\tconst HAS_EXTENSIONS = !! material.extensions;\n\n\t\tconst HAS_ATTRIBUTE_UV1 = !! geometry.attributes.uv1;\n\t\tconst HAS_ATTRIBUTE_UV2 = !! geometry.attributes.uv2;\n\t\tconst HAS_ATTRIBUTE_UV3 = !! geometry.attributes.uv3;\n\n\t\tlet toneMapping = NoToneMapping;\n\n\t\tif ( material.toneMapped ) {\n\n\t\t\tif ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\ttoneMapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: IS_WEBGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderType: material.type,\n\t\t\tshaderName: material.name,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tbatching: IS_BATCHEDMESH,\n\t\t\tinstancing: IS_INSTANCEDMESH,\n\t\t\tinstancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n\t\t\toutputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),\n\n\t\t\tmap: HAS_MAP,\n\t\t\tmatcap: HAS_MATCAP,\n\t\t\tenvMap: HAS_ENVMAP,\n\t\t\tenvMapMode: HAS_ENVMAP && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\taoMap: HAS_AOMAP,\n\t\t\tlightMap: HAS_LIGHTMAP,\n\t\t\tbumpMap: HAS_BUMPMAP,\n\t\t\tnormalMap: HAS_NORMALMAP,\n\t\t\tdisplacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n\t\t\temissiveMap: HAS_EMISSIVEMAP,\n\n\t\t\tnormalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tnormalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tmetalnessMap: HAS_METALNESSMAP,\n\t\t\troughnessMap: HAS_ROUGHNESSMAP,\n\n\t\t\tanisotropy: HAS_ANISOTROPY,\n\t\t\tanisotropyMap: HAS_ANISOTROPYMAP,\n\n\t\t\tclearcoat: HAS_CLEARCOAT,\n\t\t\tclearcoatMap: HAS_CLEARCOATMAP,\n\t\t\tclearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n\t\t\tclearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n\n\t\t\tiridescence: HAS_IRIDESCENCE,\n\t\t\tiridescenceMap: HAS_IRIDESCENCEMAP,\n\t\t\tiridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n\n\t\t\tsheen: HAS_SHEEN,\n\t\t\tsheenColorMap: HAS_SHEEN_COLORMAP,\n\t\t\tsheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n\n\t\t\tspecularMap: HAS_SPECULARMAP,\n\t\t\tspecularColorMap: HAS_SPECULAR_COLORMAP,\n\t\t\tspecularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n\n\t\t\ttransmission: HAS_TRANSMISSION,\n\t\t\ttransmissionMap: HAS_TRANSMISSIONMAP,\n\t\t\tthicknessMap: HAS_THICKNESSMAP,\n\n\t\t\tgradientMap: HAS_GRADIENTMAP,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending,\n\n\t\t\talphaMap: HAS_ALPHAMAP,\n\t\t\talphaTest: HAS_ALPHATEST,\n\t\t\talphaHash: HAS_ALPHAHASH,\n\n\t\t\tcombine: material.combine,\n\n\t\t\t//\n\n\t\t\tmapUv: HAS_MAP && getChannel( material.map.channel ),\n\t\t\taoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),\n\t\t\tlightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),\n\t\t\tbumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),\n\t\t\tnormalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),\n\t\t\tdisplacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),\n\t\t\temissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),\n\n\t\t\tmetalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),\n\t\t\troughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),\n\n\t\t\tanisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),\n\n\t\t\tclearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),\n\t\t\tclearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),\n\t\t\tclearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),\n\n\t\t\tiridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),\n\t\t\tiridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),\n\n\t\t\tsheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ),\n\t\t\tsheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ),\n\n\t\t\tspecularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ),\n\t\t\tspecularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ),\n\t\t\tspecularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ),\n\n\t\t\ttransmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),\n\t\t\tthicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),\n\n\t\t\talphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),\n\n\t\t\t//\n\n\t\t\tvertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUv1s: HAS_ATTRIBUTE_UV1,\n\t\t\tvertexUv2s: HAS_ATTRIBUTE_UV2,\n\t\t\tvertexUv3s: HAS_ATTRIBUTE_UV3,\n\n\t\t\tpointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading === true,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation === true,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumSpotLightMaps: lights.spotLightMap.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumLightProbes: lights.numLightProbes,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: toneMapping,\n\t\t\tuseLegacyLights: renderer._useLegacyLights,\n\n\t\t\tdecodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: material.depthPacking >= 0,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: HAS_EXTENSIONS && material.extensions.derivatives === true,\n\t\t\textensionFragDepth: HAS_EXTENSIONS && material.extensions.fragDepth === true,\n\t\t\textensionDrawBuffers: HAS_EXTENSIONS && material.extensions.drawBuffers === true,\n\t\t\textensionShaderTextureLOD: HAS_EXTENSIONS && material.extensions.shaderTextureLOD === true,\n\t\t\textensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance && extensions.has( 'WEBGL_clip_cull_distance' ),\n\n\t\t\trendererExtensionFragDepth: IS_WEBGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: IS_WEBGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: IS_WEBGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\t\t\trendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputColorSpace );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputColorSpace );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.mapUv );\n\t\tarray.push( parameters.alphaMapUv );\n\t\tarray.push( parameters.lightMapUv );\n\t\tarray.push( parameters.aoMapUv );\n\t\tarray.push( parameters.bumpMapUv );\n\t\tarray.push( parameters.normalMapUv );\n\t\tarray.push( parameters.displacementMapUv );\n\t\tarray.push( parameters.emissiveMapUv );\n\t\tarray.push( parameters.metalnessMapUv );\n\t\tarray.push( parameters.roughnessMapUv );\n\t\tarray.push( parameters.anisotropyMapUv );\n\t\tarray.push( parameters.clearcoatMapUv );\n\t\tarray.push( parameters.clearcoatNormalMapUv );\n\t\tarray.push( parameters.clearcoatRoughnessMapUv );\n\t\tarray.push( parameters.iridescenceMapUv );\n\t\tarray.push( parameters.iridescenceThicknessMapUv );\n\t\tarray.push( parameters.sheenColorMapUv );\n\t\tarray.push( parameters.sheenRoughnessMapUv );\n\t\tarray.push( parameters.specularMapUv );\n\t\tarray.push( parameters.specularColorMapUv );\n\t\tarray.push( parameters.specularIntensityMapUv );\n\t\tarray.push( parameters.transmissionMapUv );\n\t\tarray.push( parameters.thicknessMapUv );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numSpotLightMaps );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.numLightProbes );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.normalMapObjectSpace )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.normalMapTangentSpace )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.vertexUv1s )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.vertexUv2s )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.vertexUv3s )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.anisotropy )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.alphaHash )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.batching )\n\t\t\t_programLayers.enable( 19 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.useLegacyLights )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.pointsUvs )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 19 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1,\n\t\t\tnumSpotMaps: - 1,\n\n\t\t\tnumLightProbes: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\t\tnumSpotLightShadowsWithMaps: 0,\n\t\tnumLightProbes: 0\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, useLegacyLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\tlet numLightProbes = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( useLegacyLights === true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t\tnumLightProbes ++;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ||\n\t\t\thash.numSpotMaps !== numSpotMaps ||\n\t\t\thash.numLightProbes !== numLightProbes ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n\t\t\tstate.numLightProbes = numLightProbes;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\thash.numLightProbes = numLightProbes;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( useLegacyLights ) {\n\n\t\tlights.setup( lightsArray, useLegacyLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\tlet _previousType = this.type;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// check for shadow map type changes\n\n\t\tconst toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap );\n\t\tconst fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null || toVSM === true || fromVSM === true ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tif ( shadow.map !== null ) {\n\n\t\t\t\t\tshadow.map.dispose();\n\n\t\t\t\t}\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\t_previousType = this.type;\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t\t( material.alphaMap && material.alphaTest > 0 ) ||\n\t\t\t\t( material.map && material.alphaTest > 0 ) ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\t\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\t\tresult.map = material.map;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tconst materialProperties = _renderer.properties.get( result );\n\t\t\tmaterialProperties.light = light;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, type );\n\n\t\t\t\t\t\t\tobject.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\tobject.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, type );\n\n\t\t\t\t\tobject.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\tobject.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t// make sure to remove the unique distance/depth materials used for shadow map rendering\n\n\t\tfor ( const id in _materialCache ) {\n\n\t\t\tconst cache = _materialCache[ id ];\n\n\t\t\tconst uuid = event.target.uuid;\n\n\t\t\tif ( uuid in cache ) {\n\n\t\t\t\tconst shadowMaterial = cache[ uuid ];\n\t\t\t\tshadowMaterial.dispose();\n\t\t\t\tdelete cache[ uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgramMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentBlendColor = new Color( 0, 0, 0 );\n\tlet currentBlendAlpha = 0;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( gl.SCISSOR_BOX );\n\tconst viewportParam = gl.getParameter( gl.VIEWPORT );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count, dimensions ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tif ( isWebGL2 && ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) ) {\n\n\t\t\t\tgl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t} else {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\tif ( isWebGL2 ) {\n\n\t\temptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );\n\t\temptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );\n\n\t}\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\n\t\t\t\tif ( target === gl.DRAW_FRAMEBUFFER ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === gl.FRAMEBUFFER ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = gl.COLOR_ATTACHMENT0;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== gl.BACK ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = gl.BACK;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: gl.FUNC_ADD,\n\t\t[ SubtractEquation ]: gl.FUNC_SUBTRACT,\n\t\t[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = gl.MIN;\n\t\tequationToGL[ MaxEquation ] = gl.MAX;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: gl.ZERO,\n\t\t[ OneFactor ]: gl.ONE,\n\t\t[ SrcColorFactor ]: gl.SRC_COLOR,\n\t\t[ SrcAlphaFactor ]: gl.SRC_ALPHA,\n\t\t[ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE,\n\t\t[ DstColorFactor ]: gl.DST_COLOR,\n\t\t[ DstAlphaFactor ]: gl.DST_ALPHA,\n\t\t[ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR,\n\t\t[ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t[ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR,\n\t\t[ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA,\n\t\t[ ConstantColorFactor ]: gl.CONSTANT_COLOR,\n\t\t[ OneMinusConstantColorFactor ]: gl.ONE_MINUS_CONSTANT_COLOR,\n\t\t[ ConstantAlphaFactor ]: gl.CONSTANT_ALPHA,\n\t\t[ OneMinusConstantAlphaFactor ]: gl.ONE_MINUS_CONSTANT_ALPHA\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( gl.BLEND );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( gl.BLEND );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ONE, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\t\t\t\tcurrentBlendColor.set( 0, 0, 0 );\n\t\t\t\tcurrentBlendAlpha = 0;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tif ( blendColor.equals( currentBlendColor ) === false || blendAlpha !== currentBlendAlpha ) {\n\n\t\t\tgl.blendColor( blendColor.r, blendColor.g, blendColor.b, blendAlpha );\n\n\t\t\tcurrentBlendColor.copy( blendColor );\n\t\t\tcurrentBlendAlpha = blendAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = false;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( gl.SAMPLE_ALPHA_TO_COVERAGE )\n\t\t\t: disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgramMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgramMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgramMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( program ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( program, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( gl.BLEND );\n\t\tgl.disable( gl.CULL_FACE );\n\t\tgl.disable( gl.DEPTH_TEST );\n\t\tgl.disable( gl.POLYGON_OFFSET_FILL );\n\t\tgl.disable( gl.SCISSOR_TEST );\n\t\tgl.disable( gl.STENCIL_TEST );\n\t\tgl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\tgl.blendFunc( gl.ONE, gl.ZERO );\n\t\tgl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO );\n\t\tgl.blendColor( 0, 0, 0, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( gl.LESS );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( gl.ALWAYS, 0, 0xffffffff );\n\t\tgl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( gl.BACK );\n\t\tgl.frontFace( gl.CCW );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( gl.TEXTURE0 );\n\n\t\tgl.bindFramebuffer( gl.FRAMEBUFFER, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );\n\t\t\tgl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentBlendColor = new Color( 0, 0, 0 );\n\t\tcurrentBlendAlpha = 0;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\tcompressedTexImage3D: compressedTexImage3D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\t\tcompressedTexSubImage3D: compressedTexSubImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === _gl.RED ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RED_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.R8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.R16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.R32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tconst transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace );\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( transfer === SRGBTransfer ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;\n\n\t\t}\n\n\t\tif ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||\n\t\t\tinternalFormat === _gl.RG16F || internalFormat === _gl.RG32F ||\n\t\t\tinternalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) {\n\n\t\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) {\n\n\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.wrapR || 0 );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.colorSpace );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: _gl.REPEAT,\n\t\t[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,\n\t\t[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: _gl.NEAREST,\n\t\t[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,\n\n\t\t[ LinearFilter ]: _gl.LINEAR,\n\t\t[ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR\n\t};\n\n\tconst compareToGL = {\n\t\t[ NeverCompare ]: _gl.NEVER,\n\t\t[ AlwaysCompare ]: _gl.ALWAYS,\n\t\t[ LessCompare ]: _gl.LESS,\n\t\t[ LessEqualCompare ]: _gl.LEQUAL,\n\t\t[ EqualCompare ]: _gl.EQUAL,\n\t\t[ GreaterEqualCompare ]: _gl.GEQUAL,\n\t\t[ GreaterCompare ]: _gl.GREATER,\n\t\t[ NotEqualCompare ]: _gl.NOTEQUAL\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, _gl.CLAMP_TO_EDGE );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( texture.compareFunction ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.magFilter === NearestFilter ) return;\n\t\t\tif ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = _gl.TEXTURE_2D;\n\n\t\tif ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\tif ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true && glInternalFormat !== RGB_ETC1_Format );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedIntType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tconst width = Math.max( 1, renderTarget.width >> level );\n\t\t\tconst height = Math.max( 1, renderTarget.height >> level );\n\n\t\t\tif ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, level );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = ( isWebGL2 === true ) ? _gl.DEPTH_COMPONENT24 : _gl.DEPTH_COMPONENT16;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = [];\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = isMultipleRenderTargets ? texture : [ texture ];\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = _gl.TEXTURE_2D;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\n\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [ renderTarget.texture ];\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\tconst invalidationArray = [];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\n\t\t\t// If MRT we need to remove FBO attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tinvalidationArray.push( _gl.COLOR_ATTACHMENT0 + i );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;\n\t\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );\n\n\t\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArray );\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( capabilities.maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst colorSpace = texture.colorSpace;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, colorSpace = NoColorSpace ) {\n\n\t\tlet extension;\n\n\t\tconst transfer = ColorManagement.getTransfer( colorSpace );\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return gl.HALF_FLOAT;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedFormat ) return gl.RED;\n\t\tif ( p === RedIntegerFormat ) return gl.RED_INTEGER;\n\t\tif ( p === RGFormat ) return gl.RG;\n\t\tif ( p === RGIntegerFormat ) return gl.RG_INTEGER;\n\t\tif ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( transfer === SRGBTransfer ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\tif ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\tif ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// RGTC\n\n\t\tif ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_rgtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n\t\t\t\tif ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return gl.UNSIGNED_INT_24_8;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// private method\n\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\t// Set default foveation to maximum.\n\t\tlet foveation = 1.0;\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\tconst currentSize = new Vector2();\n\t\tlet currentPixelRatio = null;\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraXR = new ArrayCamera();\n\t\tcameraXR.layers.enable( 1 );\n\t\tcameraXR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace );\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\trenderer.setPixelRatio( currentPixelRatio );\n\t\t\trenderer.setSize( currentSize.width, currentSize.height, false );\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\t\trenderer.getSize( currentSize );\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: gl.RGBA8,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\tthis.setFoveation( foveation );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getEnvironmentBlendMode = function () {\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\treturn session.environmentBlendMode;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].disconnect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.connect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraXR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraXR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraXR.near,\n\t\t\t\t\tdepthFar: cameraXR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraXR.near;\n\t\t\t\t_currentDepthFar = cameraXR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraXR.cameras;\n\n\t\t\tupdateCamera( cameraXR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraXR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraXR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t\t// update user camera and its children\n\n\t\t\tupdateUserCamera( camera, cameraXR, parent );\n\n\t\t};\n\n\t\tfunction updateUserCamera( camera, cameraXR, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrix.copy( cameraXR.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrix.copy( parent.matrixWorld );\n\t\t\t\tcamera.matrix.invert();\n\t\t\t\tcamera.matrix.multiply( cameraXR.matrixWorld );\n\n\t\t\t}\n\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.updateMatrixWorld( true );\n\n\t\t\tcamera.projectionMatrix.copy( cameraXR.projectionMatrix );\n\t\t\tcamera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );\n\n\t\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\t\tcamera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] );\n\t\t\t\tcamera.zoom = 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraXR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer === null && glBaseLayer === null ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn foveation;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( value ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tfoveation = value;\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraXRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraXR's camera list\n\n\t\t\t\tif ( views.length !== cameraXR.cameras.length ) {\n\n\t\t\t\t\tcameraXR.cameras.length = 0;\n\t\t\t\t\tcameraXRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraXR.matrix.copy( camera.matrix );\n\t\t\t\t\t\tcameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraXRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraXR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\tif ( frame.detectedPlanes ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'planesdetected', data: frame } );\n\n\t\t\t}\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshTransformUniform( map, uniform ) {\n\n\t\tif ( map.matrixAutoUpdate === true ) {\n\n\t\t\tmap.updateMatrix();\n\n\t\t}\n\n\t\tuniform.value.copy( map.matrix );\n\n\t}\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tfog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\n\t\t\trefreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform );\n\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.bumpScale.value *= - 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\trefreshTransformUniform( material.normalMap, uniforms.normalMapTransform );\n\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.normalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\n\t\t\trefreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform );\n\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\trefreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\trefreshTransformUniform( material.specularMap, uniforms.specularMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer._useLegacyLights === true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t\trefreshTransformUniform( material.lightMap, uniforms.lightMapTransform );\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\trefreshTransformUniform( material.aoMap, uniforms.aoMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.uvTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\trefreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform );\n\n\t\t}\n\n\t\tuniforms.roughness.value = material.roughness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\trefreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform );\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform );\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t\trefreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tif ( material.anisotropy > 0 ) {\n\n\t\t\tuniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );\n\n\t\t\tif ( material.anisotropyMap ) {\n\n\t\t\t\tuniforms.anisotropyMap.value = material.anisotropyMap;\n\n\t\t\t\trefreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t\trefreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t\trefreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tconst light = properties.get( material ).light;\n\n\t\tuniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld );\n\t\tuniforms.nearDistance.value = light.shadow.camera.near;\n\t\tuniforms.farDistance.value = light.shadow.camera.far;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = ( capabilities.isWebGL2 ) ? gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ) : 0; // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\t\tgl.bufferData( gl.UNIFORM_BUFFER, size, usage );\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\t\tgl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tif ( hasUniformChanged( uniform, i, j, cache ) === true ) {\n\n\t\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\t\tlet arrayOffset = 0;\n\n\t\t\t\t\tfor ( let k = 0; k < values.length; k ++ ) {\n\n\t\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t\t// TODO add integer and struct support\n\t\t\t\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );\n\n\t\t\t\t\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value.elements[ 0 ];\n\t\t\t\t\t\t\tuniform.__data[ 1 ] = value.elements[ 1 ];\n\t\t\t\t\t\t\tuniform.__data[ 2 ] = value.elements[ 2 ];\n\t\t\t\t\t\t\tuniform.__data[ 3 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 4 ] = value.elements[ 3 ];\n\t\t\t\t\t\t\tuniform.__data[ 5 ] = value.elements[ 4 ];\n\t\t\t\t\t\t\tuniform.__data[ 6 ] = value.elements[ 5 ];\n\t\t\t\t\t\t\tuniform.__data[ 7 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 8 ] = value.elements[ 6 ];\n\t\t\t\t\t\t\tuniform.__data[ 9 ] = value.elements[ 7 ];\n\t\t\t\t\t\t\tuniform.__data[ 10 ] = value.elements[ 8 ];\n\t\t\t\t\t\t\tuniform.__data[ 11 ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvalue.toArray( uniform.__data, arrayOffset );\n\n\t\t\t\t\t\t\tarrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, indexArray, cache ) {\n\n\t\tconst value = uniform.value;\n\t\tconst indexString = index + '_' + indexArray;\n\n\t\tif ( cache[ indexString ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tcache[ indexString ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ indexString ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\tconst cachedObject = cache[ indexString ];\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tif ( cachedObject !== value ) {\n\n\t\t\t\t\tcache[ indexString ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\tfor ( let k = 0, kl = values.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t// Calculate the chunk offset\n\t\t\t\t\tconst chunkOffsetUniform = offset % chunkSize;\n\n\t\t\t\t\t// Check for chunk overflow\n\t\t\t\t\tif ( chunkOffsetUniform !== 0 && ( chunkSize - chunkOffsetUniform ) < info.boundary ) {\n\n\t\t\t\t\t\t// Add padding and adjust offset\n\t\t\t\t\t\toffset += ( chunkSize - chunkOffsetUniform );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following two properties will be used for partial buffer updates\n\n\t\t\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\t\t\tuniform.__offset = offset;\n\n\n\t\t\t\t\t// Update the global offset\n\t\t\t\t\toffset += info.storage;\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tconst chunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( value ) {\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t// float/int/bool\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass WebGLRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst {\n\t\t\tcanvas = createCanvasElement(),\n\t\t\tcontext = null,\n\t\t\tdepth = true,\n\t\t\tstencil = true,\n\t\t\talpha = false,\n\t\t\tantialias = false,\n\t\t\tpremultipliedAlpha = true,\n\t\t\tpreserveDrawingBuffer = false,\n\t\t\tpowerPreference = 'default',\n\t\t\tfailIfMajorPerformanceCaveat = false,\n\t\t} = parameters;\n\n\t\tthis.isWebGLRenderer = true;\n\n\t\tlet _alpha;\n\n\t\tif ( context !== null ) {\n\n\t\t\t_alpha = context.getContextAttributes().alpha;\n\n\t\t} else {\n\n\t\t\t_alpha = alpha;\n\n\t\t}\n\n\t\tconst uintClearColor = new Uint32Array( 4 );\n\t\tconst intClearColor = new Int32Array( 4 );\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null;\n\n\t\t// render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = canvas;\n\n\t\t// Debug configuration container\n\t\tthis.debug = {\n\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true,\n\t\t\t/**\n\t\t\t * Callback for custom error reporting.\n\t\t\t * @type {?Function}\n\t\t\t */\n\t\t\tonShaderError: null\n\t\t};\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis._outputColorSpace = SRGBColorSpace;\n\n\t\t// physical lights\n\n\t\tthis._useLegacyLights = false;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\n\t\t// internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false;\n\n\t\t// internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\t\tlet _currentMaterialId = - 1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\t\tconst _currentScissor = new Vector4();\n\t\tlet _currentScissorTest = null;\n\n\t\tconst _currentClearColor = new Color( 0x000000 );\n\t\tlet _currentClearAlpha = 0;\n\n\t\t//\n\n\t\tlet _width = canvas.width;\n\t\tlet _height = canvas.height;\n\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\t\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\t\tlet _scissorTest = false;\n\n\t\t// frustum\n\n\t\tconst _frustum = new Frustum();\n\n\t\t// clipping\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false;\n\n\t\t// transmission\n\n\t\tlet _transmissionRenderTarget = null;\n\n\t\t// camera matrices cache\n\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector2 = new Vector2();\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tlet _gl = context;\n\n\t\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\t\tconst contextName = contextNames[ i ];\n\t\t\t\tconst context = canvas.getContext( contextName, contextAttributes );\n\t\t\t\tif ( context !== null ) return context;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tdepth,\n\t\t\t\tstencil,\n\t\t\t\tantialias,\n\t\t\t\tpremultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer,\n\t\t\t\tpowerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat,\n\t\t\t};\n\n\t\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\t\tif ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t\tcanvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\t\tcontextNames.shift();\n\n\t\t\t\t}\n\n\t\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\t\tif ( _gl === null ) {\n\n\t\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( typeof WebGLRenderingContext !== 'undefined' && _gl instanceof WebGLRenderingContext ) { // @deprecated, r153\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163.' );\n\n\t\t\t}\n\n\t\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\t\tthrow error;\n\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\t\tlet utils, bindingStates, uniformsGroups;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\t\textensions.init( capabilities );\n\n\t\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\t\tinfo = new WebGLInfo( _gl );\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\t\tclipping = new WebGLClipping( properties );\n\t\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\t\trenderLists = new WebGLRenderLists();\n\t\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\t\tbackground = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );\n\t\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\t\tinfo.programs = programCache.programs;\n\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// xr\n\n\t\tconst xr = new WebXRManager( _this, _gl );\n\n\t\tthis.xr = xr;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function ( target ) {\n\n\t\t\treturn target.set( _width, _height );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle = true ) {\n\n\t\t\tif ( xr.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\tcanvas.width = Math.floor( width * _pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * _pixelRatio );\n\n\t\t\tif ( updateStyle === true ) {\n\n\t\t\t\tcanvas.style.width = width + 'px';\n\t\t\t\tcanvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\tcanvas.width = Math.floor( width * pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * pixelRatio );\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getCurrentViewport = function ( target ) {\n\n\t\t\treturn target.copy( _currentViewport );\n\n\t\t};\n\n\t\tthis.getViewport = function ( target ) {\n\n\t\t\treturn target.copy( _viewport );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_viewport.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\t};\n\n\t\tthis.getScissor = function ( target ) {\n\n\t\t\treturn target.copy( _scissor );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_scissor.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn _scissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\tthis.setOpaqueSort = function ( method ) {\n\n\t\t\t_opaqueSort = method;\n\n\t\t};\n\n\t\tthis.setTransparentSort = function ( method ) {\n\n\t\t\t_transparentSort = method;\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function ( target ) {\n\n\t\t\treturn target.copy( background.getClearColor() );\n\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\n\t\t\tbackground.setClearColor.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn background.getClearAlpha();\n\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\n\t\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\t\tlet bits = 0;\n\n\t\t\tif ( color ) {\n\n\t\t\t\t// check if we're trying to clear an integer target\n\t\t\t\tlet isIntegerFormat = false;\n\t\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t\tconst targetFormat = _currentRenderTarget.texture.format;\n\t\t\t\t\tisIntegerFormat = targetFormat === RGBAIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RGIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RedIntegerFormat;\n\n\t\t\t\t}\n\n\t\t\t\t// use the appropriate clear functions to clear the target if it's a signed\n\t\t\t\t// or unsigned integer target\n\t\t\t\tif ( isIntegerFormat ) {\n\n\t\t\t\t\tconst targetType = _currentRenderTarget.texture.type;\n\t\t\t\t\tconst isUnsignedType = targetType === UnsignedByteType ||\n\t\t\t\t\t\ttargetType === UnsignedIntType ||\n\t\t\t\t\t\ttargetType === UnsignedShortType ||\n\t\t\t\t\t\ttargetType === UnsignedInt248Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort4444Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort5551Type;\n\n\t\t\t\t\tconst clearColor = background.getClearColor();\n\t\t\t\t\tconst a = background.getClearAlpha();\n\t\t\t\t\tconst r = clearColor.r;\n\t\t\t\t\tconst g = clearColor.g;\n\t\t\t\t\tconst b = clearColor.b;\n\n\t\t\t\t\tif ( isUnsignedType ) {\n\n\t\t\t\t\t\tuintClearColor[ 0 ] = r;\n\t\t\t\t\t\tuintClearColor[ 1 ] = g;\n\t\t\t\t\t\tuintClearColor[ 2 ] = b;\n\t\t\t\t\t\tuintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tintClearColor[ 0 ] = r;\n\t\t\t\t\t\tintClearColor[ 1 ] = g;\n\t\t\t\t\t\tintClearColor[ 2 ] = b;\n\t\t\t\t\t\tintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferiv( _gl.COLOR, 0, intClearColor );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbits |= _gl.COLOR_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif ( stencil ) {\n\n\t\t\t\tbits |= _gl.STENCIL_BUFFER_BIT;\n\t\t\t\tthis.state.buffers.stencil.setMask( 0xffffffff );\n\n\t\t\t}\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\tcanvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\tuniformsGroups.dispose();\n\t\t\tprogramCache.dispose();\n\n\t\t\txr.dispose();\n\n\t\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t\t_transmissionRenderTarget = null;\n\n\t\t\t}\n\n\t\t\tanimation.stop();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( /* event */ ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\n\t\t\tinitGLContext();\n\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\n\t\t}\n\n\t\tfunction onContextCreationError( event ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tconst material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReferences( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\t\tconst programs = properties.get( material ).programs;\n\n\t\t\tif ( programs !== undefined ) {\n\n\t\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t\t} );\n\n\t\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\t//\n\n\t\t\tlet index = geometry.index;\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\n\t\t\t\tif ( index === undefined ) return;\n\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst drawRange = geometry.drawRange;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet drawStart = drawRange.start * rangeFactor;\n\t\t\tlet drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;\n\n\t\t\tif ( group !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, group.start * rangeFactor );\n\t\t\t\tdrawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );\n\n\t\t\t}\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, index.count );\n\n\t\t\t} else if ( position !== undefined && position !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, position.count );\n\n\t\t\t}\n\n\t\t\tconst drawCount = drawEnd - drawStart;\n\n\t\t\tif ( drawCount < 0 || drawCount === Infinity ) return;\n\n\t\t\t//\n\n\t\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\trenderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );\n\n\t\t\t} else if ( object.isInstancedMesh ) {\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tconst maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;\n\t\t\t\tconst instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Compile\n\n\t\tfunction prepareMaterial( material, scene, object ) {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.compile = function ( scene, camera, targetScene = null ) {\n\n\t\t\tif ( targetScene === null ) targetScene = scene;\n\n\t\t\tcurrentRenderState = renderStates.get( targetScene );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t// gather lights from both the target scene and the new object that will be added to the scene.\n\n\t\t\ttargetScene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tif ( scene !== targetScene ) {\n\n\t\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\t// Only initialize materials in the new scene, not the targetScene.\n\n\t\t\tconst materials = new Set();\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material ) {\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\t\tprepareMaterial( material2, targetScene, object );\n\t\t\t\t\t\t\tmaterials.add( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tprepareMaterial( material, targetScene, object );\n\t\t\t\t\t\tmaterials.add( material );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\trenderStateStack.pop();\n\t\t\tcurrentRenderState = null;\n\n\t\t\treturn materials;\n\n\t\t};\n\n\t\t// compileAsync\n\n\t\tthis.compileAsync = function ( scene, camera, targetScene = null ) {\n\n\t\t\tconst materials = this.compile( scene, camera, targetScene );\n\n\t\t\t// Wait for all the materials in the new object to indicate that they're\n\t\t\t// ready to be used before resolving the promise.\n\n\t\t\treturn new Promise( ( resolve ) => {\n\n\t\t\t\tfunction checkMaterialsReady() {\n\n\t\t\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\t\t\tconst materialProperties = properties.get( material );\n\t\t\t\t\t\tconst program = materialProperties.currentProgram;\n\n\t\t\t\t\t\tif ( program.isReady() ) {\n\n\t\t\t\t\t\t\t// remove any programs that report they're ready to use from the list\n\t\t\t\t\t\t\tmaterials.delete( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\t// once the list of compiling materials is empty, call the callback\n\n\t\t\t\t\tif ( materials.size === 0 ) {\n\n\t\t\t\t\t\tresolve( scene );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if some materials are still not ready, wait a bit and check again\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) {\n\n\t\t\t\t\t// If we can check the compilation status of the materials without\n\t\t\t\t\t// blocking then do so right away.\n\n\t\t\t\t\tcheckMaterialsReady();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise start by waiting a bit to give the materials we just\n\t\t\t\t\t// initialized a chance to finish.\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time ) {\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\n\t\t\tanimation.start();\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop( callback );\n\n\t\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t\t};\n\n\t\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost === true ) return;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t\t}\n\n\t\t\t//\n\t\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\t\tcurrentRenderList.init();\n\n\t\t\trenderListStack.push( currentRenderList );\n\n\t\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tthis.info.render.frame ++;\n\n\t\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t\t//\n\n\t\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\n\t\t\t//\n\n\t\t\tbackground.render( currentRenderList, scene );\n\n\t\t\t// render scene\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t\t// _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\trenderStateStack.pop();\n\n\t\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderState = null;\n\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderList = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tconst visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isGroup ) {\n\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( object.boundingSphere.center );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( geometry.boundingSphere.center );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_vector3\n\t\t\t\t\t\t\t\t.applyMatrix4( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );\n\n\t\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t}\n\n\t\tfunction renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tif ( overrideMaterial !== null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tsamples: ( isWebGL2 ) ? 4 : 0\n\t\t\t\t} );\n\n\t\t\t\t// debug\n\n\t\t\t\t/*\n\t\t\t\tconst geometry = new PlaneGeometry();\n\t\t\t\tconst material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );\n\n\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\tscene.add( mesh );\n\t\t\t\t*/\n\n\t\t\t}\n\n\t\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t\t} else {\n\n\t\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\n\t\t\t_this.getClearColor( _currentClearColor );\n\t\t\t_currentClearAlpha = _this.getClearAlpha();\n\t\t\tif ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );\n\n\t\t\t_this.clear();\n\n\t\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t\tlet renderTargetNeedsUpdate = false;\n\n\t\t\tfor ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = transmissiveObjects[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = renderItem.material;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tconst currentSide = material.side;\n\n\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t\tmaterial.side = currentSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderTargetNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetNeedsUpdate === true ) {\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\t\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t\t\t_this.setClearColor( _currentClearColor, _currentClearAlpha );\n\n\t\t\t_this.toneMapping = currentToneMapping;\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction getProgram( material, scene, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tconst lightsStateVersion = lights.state.version;\n\n\t\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\t\tlet programs = materialProperties.programs;\n\n\t\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\t\tif ( programs === undefined ) {\n\n\t\t\t\t// new material\n\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\n\t\t\t}\n\n\t\t\tlet program = programs.get( programCacheKey );\n\n\t\t\tif ( program !== undefined ) {\n\n\t\t\t\t// early out if program and light state is identical\n\n\t\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\t\treturn program;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = null;\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction getUniformList( materialProperties ) {\n\n\t\t\tif ( materialProperties.uniformsList === null ) {\n\n\t\t\t\tconst progUniforms = materialProperties.currentProgram.getUniforms();\n\t\t\t\tmaterialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms );\n\n\t\t\t}\n\n\t\t\treturn materialProperties.uniformsList;\n\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tmaterialProperties.outputColorSpace = parameters.outputColorSpace;\n\t\t\tmaterialProperties.batching = parameters.batching;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.instancingColor = parameters.instancingColor;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t\t}\n\n\t\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );\n\t\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );\n\t\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\t\tconst morphColors = !! geometry.morphAttributes.color;\n\n\t\t\tlet toneMapping = NoToneMapping;\n\n\t\t\tif ( material.toneMapped ) {\n\n\t\t\t\tif ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\t\ttoneMapping = _this.toneMapping;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tconst materialProperties = properties.get( material );\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif ( _clippingEnabled === true ) {\n\n\t\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\t\tconst useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.outputColorSpace !== colorSpace ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batching === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isBatchedMesh && materialProperties.batching === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif ( needsProgramChange === true ) {\n\n\t\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\t\t// common camera uniforms\n\n\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t\t}\n\n\t\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );\n\n\t\t\t}\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, program );\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t\t}\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\n\t\t\t}\n\n\t\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t\t}\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\t// UBOs\n\n\t\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\tfunction materialNeedsLights( material ) {\n\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\n\t\t\treturn _currentActiveCubeFace;\n\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\n\t\t\treturn _currentActiveMipmapLevel;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tlet useDefaultFramebuffer = true;\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\t\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t\t}\n\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t\t_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t\t}\n\n\t\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\t\tconst levelScale = Math.pow( 2, - level );\n\t\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tconst width = srcTexture.image.width;\n\t\t\tconst height = srcTexture.image.height;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t\t// As another texture upload may have changed pixelStorei\n\t\t\t// parameters, make sure they are correct for the dstTexture\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\t\t\tlet glTarget;\n\n\t\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\n\t\t\t} else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tconst unpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst unpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst unpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst unpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst unpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, sourceBox.min.x );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );\n\n\t\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, unpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, unpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, unpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, unpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.initTexture = function ( texture ) {\n\n\t\t\tif ( texture.isCubeTexture ) {\n\n\t\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t\t} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.resetState = function () {\n\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\n\t\t};\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tget coordinateSystem() {\n\n\t\treturn WebGLCoordinateSystem;\n\n\t}\n\n\tget outputColorSpace() {\n\n\t\treturn this._outputColorSpace;\n\n\t}\n\n\tset outputColorSpace( colorSpace ) {\n\n\t\tthis._outputColorSpace = colorSpace;\n\n\t\tconst gl = this.getContext();\n\t\tgl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\t\tgl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\n\t}\n\n\tget outputEncoding() { // @deprecated, r152\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );\n\t\treturn this.outputColorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;\n\n\t}\n\n\tset outputEncoding( encoding ) { // @deprecated, r152\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );\n\t\tthis.outputColorSpace = encoding === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n\n\t}\n\n\tget useLegacyLights() { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\treturn this._useLegacyLights;\n\n\t}\n\n\tset useLegacyLights( value ) { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\tthis._useLegacyLights = value;\n\n\t}\n\n}\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.backgroundBlurriness = 0;\n\t\tthis.backgroundIntensity = 1;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = material;\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance,\n\t\t\t\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = AttachedBindMode;\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tapplyBoneTransform( index, vector ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( vector ).applyMatrix4( this.bindMatrix );\n\n\t\tvector.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\tvector.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn vector.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n\tboneTransform( index, vector ) { // @deprecated, r151\n\n\t\tconsole.warn( 'THREE.SkinnedMesh: .boneTransform() was renamed to .applyBoneTransform() in r151.' );\n\t\treturn this.applyBoneTransform( index, vector );\n\n\t}\n\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix$1 = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix$1;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$3 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$3.copy( this.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( drawRange, z ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: - 1,\n\t\t\t\tcount: - 1,\n\t\t\t\tz: - 1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = drawRange.start;\n\t\titem.count = drawRange.count;\n\t\titem.z = z;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst ID_ATTR_NAME = 'batchId';\nconst _matrix = /*@__PURE__*/ new Matrix4();\nconst _invMatrixWorld = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\nconst _projScreenMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// @TODO: SkinnedMesh support?\n// @TODO: geometry.groups support?\n// @TODO: geometry.drawRange support?\n// @TODO: geometry.morphAttributes support?\n// @TODO: Support uniform parameter per geometry\n// @TODO: Add an \"optimize\" function to pack geometry and remove data gaps\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\nclass BatchedMesh extends Mesh {\n\n\tget maxGeometryCount() {\n\n\t\treturn this._maxGeometryCount;\n\n\t}\n\n\tconstructor( maxGeometryCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\tthis.isBatchedMesh = true;\n\t\tthis.perObjectFrustumCulled = true;\n\t\tthis.sortObjects = true;\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\t\tthis.customSort = null;\n\n\t\tthis._drawRanges = [];\n\t\tthis._reservedRanges = [];\n\n\t\tthis._visibility = [];\n\t\tthis._active = [];\n\t\tthis._bounds = [];\n\n\t\tthis._maxGeometryCount = maxGeometryCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tthis._geometryInitialized = false;\n\t\tthis._geometryCount = 0;\n\t\tthis._multiDrawCounts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._visibilityChanged = true;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\n\t\tthis._initMatricesTexture();\n\n\t}\n\n\t_initMatricesTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 matrices * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxGeometryCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxGeometryCount = this._maxGeometryCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new srcAttribute.constructor( dstArray, itemSize, normalized );\n\t\t\t\tdstAttribute.setUsage( srcAttribute.usage );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\tconst indexArray = maxVertexCount > 65536\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tconst idArray = maxGeometryCount > 65536\n\t\t\t\t? new Uint32Array( maxVertexCount )\n\t\t\t\t: new Uint16Array( maxVertexCount );\n\t\t\tgeometry.setAttribute( ID_ATTR_NAME, new BufferAttribute( idArray, 1 ) );\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry atributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check that the geometry doesn't have a version of our reserved id attribute\n\t\tif ( geometry.getAttribute( ID_ATTR_NAME ) ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Geometry cannot use attribute \"${ ID_ATTR_NAME }\"` );\n\n\t\t}\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst active = this._active;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\tthis.getBoundingBoxAt( i, _box$1 ).applyMatrix4( _matrix );\n\t\t\tboundingBox.union( _box$1 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingSphere = this.boundingSphere;\n\t\tconst active = this._active;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\taddGeometry( geometry, vertexCount = - 1, indexCount = - 1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\t// ensure we're not over geometry\n\t\tif ( this._geometryCount >= this._maxGeometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\t// get the necessary range fo the geometry\n\t\tconst reservedRange = {\n\t\t\tvertexStart: - 1,\n\t\t\tvertexCount: - 1,\n\t\t\tindexStart: - 1,\n\t\t\tindexCount: - 1,\n\t\t};\n\n\t\tlet lastRange = null;\n\t\tconst reservedRanges = this._reservedRanges;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst bounds = this._bounds;\n\t\tif ( this._geometryCount !== 0 ) {\n\n\t\t\tlastRange = reservedRanges[ reservedRanges.length - 1 ];\n\n\t\t}\n\n\t\tif ( vertexCount === - 1 ) {\n\n\t\t\treservedRange.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexCount = vertexCount;\n\n\t\t}\n\n\t\tif ( lastRange === null ) {\n\n\t\t\treservedRange.vertexStart = 0;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexStart = lastRange.vertexStart + lastRange.vertexCount;\n\n\t\t}\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tif ( indexCount\t=== - 1 ) {\n\n\t\t\t\treservedRange.indexCount = index.count;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexCount = indexCount;\n\n\t\t\t}\n\n\t\t\tif ( lastRange === null ) {\n\n\t\t\t\treservedRange.indexStart = 0;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexStart = lastRange.indexStart + lastRange.indexCount;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (\n\t\t\treservedRange.indexStart !== - 1 &&\n\t\t\treservedRange.indexStart + reservedRange.indexCount > this._maxIndexCount ||\n\t\t\treservedRange.vertexStart + reservedRange.vertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\n\t\t// push new visibility states\n\t\tvisibility.push( true );\n\t\tactive.push( true );\n\n\t\t// update id\n\t\tconst geometryId = this._geometryCount;\n\t\tthis._geometryCount ++;\n\n\t\t// initialize matrix information\n\t\t_identityMatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\t// add the reserved range and draw range objects\n\t\treservedRanges.push( reservedRange );\n\t\tdrawRanges.push( {\n\t\t\tstart: hasIndex ? reservedRange.indexStart : reservedRange.vertexStart,\n\t\t\tcount: - 1\n\t\t} );\n\t\tbounds.push( {\n\t\t\tboxInitialized: false,\n\t\t\tbox: new Box3(),\n\n\t\t\tsphereInitialized: false,\n\t\t\tsphere: new Sphere()\n\t\t} );\n\n\t\t// set the id for the geometry\n\t\tconst idAttribute = this.geometry.getAttribute( ID_ATTR_NAME );\n\t\tfor ( let i = 0; i < reservedRange.vertexCount; i ++ ) {\n\n\t\t\tidAttribute.setX( reservedRange.vertexStart + i, geometryId );\n\n\t\t}\n\n\t\tidAttribute.needsUpdate = true;\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\treturn geometryId;\n\n\t}\n\n\tsetGeometryAt( id, geometry ) {\n\n\t\tif ( id >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst reservedRange = this._reservedRanges[ id ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > reservedRange.indexCount ||\n\t\t\tgeometry.attributes.position.count > reservedRange.vertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry over\n\t\tconst vertexStart = reservedRange.vertexStart;\n\t\tconst vertexCount = reservedRange.vertexCount;\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = vertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = reservedRange.indexStart;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedRange.indexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\n\t\t}\n\n\t\t// store the bounding boxes\n\t\tconst bound = this._bounds[ id ];\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tbound.box.copy( geometry.boundingBox );\n\t\t\tbound.boxInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.boxInitialized = false;\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tbound.sphere.copy( geometry.boundingSphere );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.sphereInitialized = false;\n\n\t\t}\n\n\t\t// set drawRange count\n\t\tconst drawRange = this._drawRanges[ id ];\n\t\tconst posAttr = geometry.getAttribute( 'position' );\n\t\tdrawRange.count = hasIndex ? srcIndex.count : posAttr.count;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn id;\n\n\t}\n\n\tdeleteGeometry( geometryId ) {\n\n\t\t// Note: User needs to call optimize() afterward to pack the data.\n\n\t\tconst active = this._active;\n\t\tif ( geometryId >= active.length || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tactive[ geometryId ] = false;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t// get bounding box and compute it if it doesn't exist\n\tgetBoundingBoxAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst bound = this._bounds[ id ];\n\t\tconst box = bound.box;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.boxInitialized === false ) {\n\n\t\t\tbox.makeEmpty();\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tbound.boxInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( box );\n\t\treturn target;\n\n\t}\n\n\t// get bounding sphere and compute it if it doesn't exist\n\tgetBoundingSphereAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst bound = this._bounds[ id ];\n\t\tconst sphere = bound.sphere;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.sphereInitialized === false ) {\n\n\t\t\tsphere.makeEmpty();\n\n\t\t\tthis.getBoundingBoxAt( id, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( sphere );\n\t\treturn target;\n\n\t}\n\n\tsetMatrixAt( geometryId, matrix ) {\n\n\t\t// @TODO: Map geometryId to index of the arrays because\n\t\t// optimize() can make geometryId mismatch the index\n\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tmatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetMatrixAt( geometryId, matrix ) {\n\n\t\tconst active = this._active;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn matrix.fromArray( matricesArray, geometryId * 16 );\n\n\t}\n\n\tsetVisibleAt( geometryId, value ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// if the geometry is out of range, not active, or visibility state\n\t\t// does not change then return early\n\t\tif (\n\t\t\tgeometryId >= geometryCount ||\n\t\t\tactive[ geometryId ] === false ||\n\t\t\tvisibility[ geometryId ] === value\n\t\t) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvisibility[ geometryId ] = value;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetVisibleAt( geometryId ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// return early if the geometry is out of range or not active\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn visibility[ geometryId ];\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( ! visibility[ i ] || ! active[ i ] ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst drawRange = drawRanges[ i ];\n\t\t\t_mesh.geometry.setDrawRange( drawRange.start, drawRange.count );\n\n\t\t\t// ge the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( i, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( i, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._drawRanges = source._drawRanges.map( range => ( { ...range } ) );\n\t\tthis._reservedRanges = source._reservedRanges.map( range => ( { ...range } ) );\n\n\t\tthis._visibility = source._visibility.slice();\n\t\tthis._active = source._active.slice();\n\t\tthis._bounds = source._bounds.map( bound => ( {\n\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\tbox: bound.box.clone(),\n\n\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\tsphere: bound.sphere.clone()\n\t\t} ) );\n\n\t\tthis._maxGeometryCount = source._maxGeometryCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._geometryCount = source._geometryCount;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.slice();\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\t\treturn this;\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst visibility = this._visibility;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t_projScreenMatrix$2\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\trenderer.isWebGPURenderer ? WebGPUCoordinateSystem : WebGLCoordinateSystem\n\t\t\t);\n\n\t\t}\n\n\t\tlet count = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_invMatrixWorld.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _invMatrixWorld );\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] ) {\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst z = _vector$5.distanceTo( _sphere$2.center );\n\t\t\t\t\t\t_renderList.push( drawRanges[ i ], z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ count ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ count ] = item.count;\n\t\t\t\tcount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] ) {\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst range = drawRanges[ i ];\n\t\t\t\t\t\tmultiDrawStarts[ count ] = range.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ count ] = range.count;\n\t\t\t\t\t\tcount ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._multiDrawCount = count;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CompressedArrayTexture extends CompressedTexture {\n\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\tthis.isCompressedArrayTexture = true;\n\t\tthis.image.depth = depth;\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t}\n\n}\n\nclass CompressedCubeTexture extends CompressedTexture {\n\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\tthis.isCompressedCubeTexture = true;\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tlength: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.4)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\touterNode = eliminateHole( queue[ i ], outerNode );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === 0 ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) >= ( ax - px ) * ( cy - py ) &&\n ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = 0;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.anisotropyRotation = 0;\n\t\tthis.anisotropyMap = null;\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = Infinity;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nconst AnimationUtils = {\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = this.times.slice();\n\t\tconst values = this.values.slice();\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' ) || response.headers.get( 'X-File-Size' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t} else if ( texData.encoding !== undefined ) { // @deprecated, r152\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay;\n\n\t\tthis.map = null;\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay;\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = MaterialLoader.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== undefined ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding; // @deprecated, r152\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxGeometryCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._visibility = data.visibility;\n\t\t\t\tobject._active = data.active;\n\t\t\t\tobject._bounds = data.bounds.map( bound => {\n\n\t\t\t\t\tconst box = new Box3();\n\t\t\t\t\tbox.min.fromArray( bound.boxMin );\n\t\t\t\t\tbox.max.fromArray( bound.boxMax );\n\n\t\t\t\t\tconst sphere = new Sphere();\n\t\t\t\t\tsphere.radius = bound.sphereRadius;\n\t\t\t\t\tsphere.center.fromArray( bound.sphereCenter );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\t\t\tbox: box,\n\n\t\t\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\t\t\tsphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\n\t\t\t\tobject._maxGeometryCount = data.maxGeometryCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.up !== undefined ) object.up.fromArray( data.up );\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance, level.hysteresis );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} ).catch( e => {\n\n\t\t\t\t\tif ( onError ) onError( e );\n\n\t\t\t\t} );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tconst promise = fetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tCache.remove( url );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( url, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nclass AudioContext {\n\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet _id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DisplayP3ColorSpace, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, Float64BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearDisplayP3ColorSpace, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, P3Primaries, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, Rec709Primaries, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, TwoPassDoubleSide, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, createCanvasElement, sRGBEncoding };\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3,\n\tPlane,\n\tRay,\n\tMathUtils\n} from 'three';\n\n// OrbitControls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nconst _changeEvent = { type: 'change' };\nconst _startEvent = { type: 'start' };\nconst _endEvent = { type: 'end' };\nconst _ray = new Ray();\nconst _plane = new Plane();\nconst TILT_LIMIT = Math.cos( 70 * MathUtils.DEG2RAD );\n\nclass OrbitControls extends EventDispatcher {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper();\n\n\t\tthis.object = object;\n\t\tthis.domElement = domElement;\n\t\tthis.domElement.style.touchAction = 'none'; // disable touch scroll\n\n\t\t// Set to false to disable this control\n\t\tthis.enabled = true;\n\n\t\t// \"target\" sets the location of focus, where the object orbits around\n\t\tthis.target = new Vector3();\n\n\t\t// Sets the 3D cursor (similar to Blender), from which the maxTargetRadius takes effect\n\t\tthis.cursor = new Vector3();\n\n\t\t// How far you can dolly in and out ( PerspectiveCamera only )\n\t\tthis.minDistance = 0;\n\t\tthis.maxDistance = Infinity;\n\n\t\t// How far you can zoom in and out ( OrthographicCamera only )\n\t\tthis.minZoom = 0;\n\t\tthis.maxZoom = Infinity;\n\n\t\t// Limit camera target within a spherical area around the cursor\n\t\tthis.minTargetRadius = 0;\n\t\tthis.maxTargetRadius = Infinity;\n\n\t\t// How far you can orbit vertically, upper and lower limits.\n\t\t// Range is 0 to Math.PI radians.\n\t\tthis.minPolarAngle = 0; // radians\n\t\tthis.maxPolarAngle = Math.PI; // radians\n\n\t\t// How far you can orbit horizontally, upper and lower limits.\n\t\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\t\tthis.minAzimuthAngle = - Infinity; // radians\n\t\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t\t// Set to true to enable damping (inertia)\n\t\t// If damping is enabled, you must call controls.update() in your animation loop\n\t\tthis.enableDamping = false;\n\t\tthis.dampingFactor = 0.05;\n\n\t\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t\t// Set to false to disable zooming\n\t\tthis.enableZoom = true;\n\t\tthis.zoomSpeed = 1.0;\n\n\t\t// Set to false to disable rotating\n\t\tthis.enableRotate = true;\n\t\tthis.rotateSpeed = 1.0;\n\n\t\t// Set to false to disable panning\n\t\tthis.enablePan = true;\n\t\tthis.panSpeed = 1.0;\n\t\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\t\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\t\tthis.zoomToCursor = false;\n\n\t\t// Set to true to automatically rotate around the target\n\t\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\t\tthis.autoRotate = false;\n\t\tthis.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60\n\n\t\t// The four arrow keys\n\t\tthis.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };\n\n\t\t// Mouse buttons\n\t\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t\t// Touch fingers\n\t\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t\t// for reset\n\t\tthis.target0 = this.target.clone();\n\t\tthis.position0 = this.object.position.clone();\n\t\tthis.zoom0 = this.object.zoom;\n\n\t\t// the target DOM element for key events\n\t\tthis._domElementKeyEvents = null;\n\n\t\t//\n\t\t// public methods\n\t\t//\n\n\t\tthis.getPolarAngle = function () {\n\n\t\t\treturn spherical.phi;\n\n\t\t};\n\n\t\tthis.getAzimuthalAngle = function () {\n\n\t\t\treturn spherical.theta;\n\n\t\t};\n\n\t\tthis.getDistance = function () {\n\n\t\t\treturn this.object.position.distanceTo( this.target );\n\n\t\t};\n\n\t\tthis.listenToKeyEvents = function ( domElement ) {\n\n\t\t\tdomElement.addEventListener( 'keydown', onKeyDown );\n\t\t\tthis._domElementKeyEvents = domElement;\n\n\t\t};\n\n\t\tthis.stopListenToKeyEvents = function () {\n\n\t\t\tthis._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\t\t\tthis._domElementKeyEvents = null;\n\n\t\t};\n\n\t\tthis.saveState = function () {\n\n\t\t\tscope.target0.copy( scope.target );\n\t\t\tscope.position0.copy( scope.object.position );\n\t\t\tscope.zoom0 = scope.object.zoom;\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tscope.target.copy( scope.target0 );\n\t\t\tscope.object.position.copy( scope.position0 );\n\t\t\tscope.object.zoom = scope.zoom0;\n\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\tscope.update();\n\n\t\t\tstate = STATE.NONE;\n\n\t\t};\n\n\t\t// this method is exposed, but perhaps it would be better if we can make it private...\n\t\tthis.update = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\t// so camera.up is the orbit axis\n\t\t\tconst quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\t\tconst quatInverse = quat.clone().invert();\n\n\t\t\tconst lastPosition = new Vector3();\n\t\t\tconst lastQuaternion = new Quaternion();\n\t\t\tconst lastTargetPosition = new Vector3();\n\n\t\t\tconst twoPI = 2 * Math.PI;\n\n\t\t\treturn function update( deltaTime = null ) {\n\n\t\t\t\tconst position = scope.object.position;\n\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t\t// angle from z-axis around y-axis\n\t\t\t\tspherical.setFromVector3( offset );\n\n\t\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\t\trotateLeft( getAutoRotationAngle( deltaTime ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t\t}\n\n\t\t\t\t// restrict theta to be between desired limits\n\n\t\t\t\tlet min = scope.minAzimuthAngle;\n\t\t\t\tlet max = scope.maxAzimuthAngle;\n\n\t\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\t\tif ( min <= max ) {\n\n\t\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// restrict phi to be between desired limits\n\t\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\t\tspherical.makeSafe();\n\n\n\t\t\t\t// move target to panned location\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t\t}\n\n\t\t\t\t// Limit the target distance from the cursor to create a sphere around the center of interest\n\t\t\t\tscope.target.sub( scope.cursor );\n\t\t\t\tscope.target.clampLength( scope.minTargetRadius, scope.maxTargetRadius );\n\t\t\t\tscope.target.add( scope.cursor );\n\n\t\t\t\t// adjust the camera position based on zoom only if we're not zooming to the cursor or if it's an ortho camera\n\t\t\t\t// we adjust zoom later in these cases\n\t\t\t\tif ( scope.zoomToCursor && performCursorZoom || scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\tspherical.radius = clampDistance( spherical.radius );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.radius = clampDistance( spherical.radius * scale );\n\n\t\t\t\t}\n\n\t\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t// adjust camera position\n\t\t\t\tlet zoomChanged = false;\n\t\t\t\tif ( scope.zoomToCursor && performCursorZoom ) {\n\n\t\t\t\t\tlet newRadius = null;\n\t\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t\t// move the camera down the pointer ray\n\t\t\t\t\t\t// this method avoids floating point error\n\t\t\t\t\t\tconst prevRadius = offset.length();\n\t\t\t\t\t\tnewRadius = clampDistance( prevRadius * scale );\n\n\t\t\t\t\t\tconst radiusDelta = prevRadius - newRadius;\n\t\t\t\t\t\tscope.object.position.addScaledVector( dollyDirection, radiusDelta );\n\t\t\t\t\t\tscope.object.updateMatrixWorld();\n\n\t\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\t\t// adjust the ortho camera position based on zoom changes\n\t\t\t\t\t\tconst mouseBefore = new Vector3( mouse.x, mouse.y, 0 );\n\t\t\t\t\t\tmouseBefore.unproject( scope.object );\n\n\t\t\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) );\n\t\t\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\t\t\tzoomChanged = true;\n\n\t\t\t\t\t\tconst mouseAfter = new Vector3( mouse.x, mouse.y, 0 );\n\t\t\t\t\t\tmouseAfter.unproject( scope.object );\n\n\t\t\t\t\t\tscope.object.position.sub( mouseAfter ).add( mouseBefore );\n\t\t\t\t\t\tscope.object.updateMatrixWorld();\n\n\t\t\t\t\t\tnewRadius = offset.length();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.' );\n\t\t\t\t\t\tscope.zoomToCursor = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// handle the placement of the target\n\t\t\t\t\tif ( newRadius !== null ) {\n\n\t\t\t\t\t\tif ( this.screenSpacePanning ) {\n\n\t\t\t\t\t\t\t// position the orbit target in front of the new camera position\n\t\t\t\t\t\t\tscope.target.set( 0, 0, - 1 )\n\t\t\t\t\t\t\t\t.transformDirection( scope.object.matrix )\n\t\t\t\t\t\t\t\t.multiplyScalar( newRadius )\n\t\t\t\t\t\t\t\t.add( scope.object.position );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// get the ray and translation plane to compute target\n\t\t\t\t\t\t\t_ray.origin.copy( scope.object.position );\n\t\t\t\t\t\t\t_ray.direction.set( 0, 0, - 1 ).transformDirection( scope.object.matrix );\n\n\t\t\t\t\t\t\t// if the camera is 20 degrees above the horizon then don't adjust the focus target to avoid\n\t\t\t\t\t\t\t// extremely large values\n\t\t\t\t\t\t\tif ( Math.abs( scope.object.up.dot( _ray.direction ) ) < TILT_LIMIT ) {\n\n\t\t\t\t\t\t\t\tobject.lookAt( scope.target );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t_plane.setFromNormalAndCoplanarPoint( scope.object.up, scope.target );\n\t\t\t\t\t\t\t\t_ray.intersectPlane( _plane, scope.target );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) );\n\t\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\t\tzoomChanged = true;\n\n\t\t\t\t}\n\n\t\t\t\tscale = 1;\n\t\t\t\tperformCursorZoom = false;\n\n\t\t\t\t// update condition is:\n\t\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\t\tif ( zoomChanged ||\n\t\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ||\n\t\t\t\t\tlastTargetPosition.distanceToSquared( scope.target ) > 0 ) {\n\n\t\t\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\t\tlastTargetPosition.copy( scope.target );\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t};\n\n\t\t}();\n\n\t\tthis.dispose = function () {\n\n\t\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu );\n\n\t\t\tscope.domElement.removeEventListener( 'pointerdown', onPointerDown );\n\t\t\tscope.domElement.removeEventListener( 'pointercancel', onPointerUp );\n\t\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel );\n\n\t\t\tscope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t\tscope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\n\t\t\tif ( scope._domElementKeyEvents !== null ) {\n\n\t\t\t\tscope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\t\t\t\tscope._domElementKeyEvents = null;\n\n\t\t\t}\n\n\t\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t\t};\n\n\t\t//\n\t\t// internals\n\t\t//\n\n\t\tconst scope = this;\n\n\t\tconst STATE = {\n\t\t\tNONE: - 1,\n\t\t\tROTATE: 0,\n\t\t\tDOLLY: 1,\n\t\t\tPAN: 2,\n\t\t\tTOUCH_ROTATE: 3,\n\t\t\tTOUCH_PAN: 4,\n\t\t\tTOUCH_DOLLY_PAN: 5,\n\t\t\tTOUCH_DOLLY_ROTATE: 6\n\t\t};\n\n\t\tlet state = STATE.NONE;\n\n\t\tconst EPS = 0.000001;\n\n\t\t// current position in spherical coordinates\n\t\tconst spherical = new Spherical();\n\t\tconst sphericalDelta = new Spherical();\n\n\t\tlet scale = 1;\n\t\tconst panOffset = new Vector3();\n\n\t\tconst rotateStart = new Vector2();\n\t\tconst rotateEnd = new Vector2();\n\t\tconst rotateDelta = new Vector2();\n\n\t\tconst panStart = new Vector2();\n\t\tconst panEnd = new Vector2();\n\t\tconst panDelta = new Vector2();\n\n\t\tconst dollyStart = new Vector2();\n\t\tconst dollyEnd = new Vector2();\n\t\tconst dollyDelta = new Vector2();\n\n\t\tconst dollyDirection = new Vector3();\n\t\tconst mouse = new Vector2();\n\t\tlet performCursorZoom = false;\n\n\t\tconst pointers = [];\n\t\tconst pointerPositions = {};\n\n\t\tlet controlActive = false;\n\n\t\tfunction getAutoRotationAngle( deltaTime ) {\n\n\t\t\tif ( deltaTime !== null ) {\n\n\t\t\t\treturn ( 2 * Math.PI / 60 * scope.autoRotateSpeed ) * deltaTime;\n\n\t\t\t} else {\n\n\t\t\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getZoomScale( delta ) {\n\n\t\t\tconst normalizedDelta = Math.abs( delta * 0.01 );\n\t\t\treturn Math.pow( 0.95, scope.zoomSpeed * normalizedDelta );\n\n\t\t}\n\n\t\tfunction rotateLeft( angle ) {\n\n\t\t\tsphericalDelta.theta -= angle;\n\n\t\t}\n\n\t\tfunction rotateUp( angle ) {\n\n\t\t\tsphericalDelta.phi -= angle;\n\n\t\t}\n\n\t\tconst panLeft = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\t\tv.multiplyScalar( - distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\tconst panUp = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t\t}\n\n\t\t\t\tv.multiplyScalar( distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\t// deltaX and deltaY are in pixels; right and down are positive\n\t\tconst pan = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\t\tconst element = scope.domElement;\n\n\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t// perspective\n\t\t\t\t\tconst position = scope.object.position;\n\t\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\t\tlet targetDistance = offset.length();\n\n\t\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\t// orthographic\n\t\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\t\tscope.enablePan = false;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}();\n\n\t\tfunction dollyOut( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscale /= dollyScale;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction dollyIn( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscale *= dollyScale;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction updateZoomParameters( x, y ) {\n\n\t\t\tif ( ! scope.zoomToCursor ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tperformCursorZoom = true;\n\n\t\t\tconst rect = scope.domElement.getBoundingClientRect();\n\t\t\tconst dx = x - rect.left;\n\t\t\tconst dy = y - rect.top;\n\t\t\tconst w = rect.width;\n\t\t\tconst h = rect.height;\n\n\t\t\tmouse.x = ( dx / w ) * 2 - 1;\n\t\t\tmouse.y = - ( dy / h ) * 2 + 1;\n\n\t\t\tdollyDirection.set( mouse.x, mouse.y, 1 ).unproject( scope.object ).sub( scope.object.position ).normalize();\n\n\t\t}\n\n\t\tfunction clampDistance( dist ) {\n\n\t\t\treturn Math.max( scope.minDistance, Math.min( scope.maxDistance, dist ) );\n\n\t\t}\n\n\t\t//\n\t\t// event callbacks - update the object state\n\t\t//\n\n\t\tfunction handleMouseDownRotate( event ) {\n\n\t\t\trotateStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownDolly( event ) {\n\n\t\t\tupdateZoomParameters( event.clientX, event.clientX );\n\t\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownPan( event ) {\n\n\t\t\tpanStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseMoveRotate( event ) {\n\n\t\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMoveDolly( event ) {\n\n\t\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale( dollyDelta.y ) );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale( dollyDelta.y ) );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMovePan( event ) {\n\n\t\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseWheel( event ) {\n\n\t\t\tupdateZoomParameters( event.clientX, event.clientY );\n\n\t\t\tif ( event.deltaY < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale( event.deltaY ) );\n\n\t\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale( event.deltaY ) );\n\n\t\t\t}\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleKeyDown( event ) {\n\n\t\t\tlet needsUpdate = false;\n\n\t\t\tswitch ( event.code ) {\n\n\t\t\t\tcase scope.keys.UP:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateUp( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( 0, scope.keyPanSpeed );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.BOTTOM:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateUp( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.LEFT:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateLeft( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.RIGHT:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateLeft( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tscope.update();\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tfunction handleTouchStartRotate( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\trotateStart.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\trotateStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartPan( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanStart.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\tpanStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartDolly( event ) {\n\n\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\tconst dx = event.pageX - position.x;\n\t\t\tconst dy = event.pageY - position.y;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyStart.set( 0, distance );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveRotate( event ) {\n\n\t\t\tif ( pointers.length == 1 ) {\n\n\t\t\t\trotateEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\trotateEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMovePan( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\tpanEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDolly( event ) {\n\n\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\tconst dx = event.pageX - position.x;\n\t\t\tconst dy = event.pageY - position.y;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyEnd.set( 0, distance );\n\n\t\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\t\tdollyOut( dollyDelta.y );\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tconst centerX = ( event.pageX + position.x ) * 0.5;\n\t\t\tconst centerY = ( event.pageY + position.y ) * 0.5;\n\n\t\t\tupdateZoomParameters( centerX, centerY );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t\t}\n\n\t\t//\n\t\t// event handlers - FSM: listen for events and reset state\n\t\t//\n\n\t\tfunction onPointerDown( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( pointers.length === 0 ) {\n\n\t\t\t\tscope.domElement.setPointerCapture( event.pointerId );\n\n\t\t\t\tscope.domElement.addEventListener( 'pointermove', onPointerMove );\n\t\t\t\tscope.domElement.addEventListener( 'pointerup', onPointerUp );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\taddPointer( event );\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchStart( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseDown( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchMove( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseMove( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerUp( event ) {\n\n\t\t\tremovePointer( event );\n\n\t\t\tif ( pointers.length === 0 ) {\n\n\t\t\t\tscope.domElement.releasePointerCapture( event.pointerId );\n\n\t\t\t\tscope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t\t\tscope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\t\t\t}\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onMouseDown( event ) {\n\n\t\t\tlet mouseAction;\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase 0:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tmouseAction = - 1;\n\n\t\t\t}\n\n\t\t\tswitch ( mouseAction ) {\n\n\t\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.PAN:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseMove( event ) {\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseWheel( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\thandleMouseWheel( customWheelEvent( event ) );\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t}\n\n\t\tfunction customWheelEvent( event ) {\n\n\t\t\tconst mode = event.deltaMode;\n\n\t\t\t// minimal wheel event altered to meet delta-zoom demand\n\t\t\tconst newEvent = {\n\t\t\t\tclientX: event.clientX,\n\t\t\t\tclientY: event.clientY,\n\t\t\t\tdeltaY: event.deltaY,\n\t\t\t}\n\n\t\t\tswitch ( mode ) {\n\n\t\t\t\tcase 1: // LINE_MODE\n\t\t\t\t\tnewEvent.deltaY *= 16;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2: // PAGE_MODE\n\t\t\t\t\tnewEvent.deltaY *= 100;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\t// detect if event was triggered by pinching\n\t\t\tif ( event.ctrlKey && !controlActive ) {\n\n\t\t\t\tnewEvent.deltaY *= 10;\n\n\t\t\t}\n\n\t\t\treturn newEvent;\n\n\t\t}\n\n\t\tfunction interceptControlDown( event ) {\n\n\t\t\tif ( event.key === \"Control\" ) {\n\n\t\t\t\tcontrolActive = true;\n\t\t\t\t\n\t\t\t\tdocument.addEventListener('keyup', interceptControlUp, { passive: true, capture: true });\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction interceptControlUp( event ) {\n\n\t\t\tif ( event.key === \"Control\" ) {\n\n\t\t\t\tcontrolActive = false;\n\t\t\t\t\n\t\t\t\tdocument.removeEventListener('keyup', interceptControlUp, { passive: true, capture: true });\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enablePan === false ) return;\n\n\t\t\thandleKeyDown( event );\n\n\t\t}\n\n\t\tfunction onTouchStart( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( pointers.length ) {\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchMove( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onContextMenu( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t}\n\n\t\tfunction addPointer( event ) {\n\n\t\t\tpointers.push( event.pointerId );\n\n\t\t}\n\n\t\tfunction removePointer( event ) {\n\n\t\t\tdelete pointerPositions[ event.pointerId ];\n\n\t\t\tfor ( let i = 0; i < pointers.length; i ++ ) {\n\n\t\t\t\tif ( pointers[ i ] == event.pointerId ) {\n\n\t\t\t\t\tpointers.splice( i, 1 );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction trackPointer( event ) {\n\n\t\t\tlet position = pointerPositions[ event.pointerId ];\n\n\t\t\tif ( position === undefined ) {\n\n\t\t\t\tposition = new Vector2();\n\t\t\t\tpointerPositions[ event.pointerId ] = position;\n\n\t\t\t}\n\n\t\t\tposition.set( event.pageX, event.pageY );\n\n\t\t}\n\n\t\tfunction getSecondPointerPosition( event ) {\n\n\t\t\tconst pointerId = ( event.pointerId === pointers[ 0 ] ) ? pointers[ 1 ] : pointers[ 0 ];\n\n\t\t\treturn pointerPositions[ pointerId ];\n\n\t\t}\n\n\t\t//\n\n\t\tscope.domElement.addEventListener( 'contextmenu', onContextMenu );\n\n\t\tscope.domElement.addEventListener( 'pointerdown', onPointerDown );\n\t\tscope.domElement.addEventListener( 'pointercancel', onPointerUp );\n\t\tscope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } );\n\n\t\tdocument.addEventListener( 'keydown', interceptControlDown, { passive: true, capture: true } );\n\n\t\t// force an update at start\n\n\t\tthis.update();\n\n\t}\n\n}\n\nexport { OrbitControls };","import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent, CSSProperties } from 'react';\nimport * as THREE from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\nimport styles from './styles.module.css';\nimport type { GlitchComponentProps } from './types';\n\nconst BASE_LATTICE_SPAN = 24;\nconst DEFAULT_CAMERA_POSITION = new THREE.Vector3(20, 20, 20);\nconst DEFAULT_CAMERA_TARGET = new THREE.Vector3(0, 0, 0);\nconst RESET_DELAY_MS = 5000;\nconst SCENE_BACKGROUND = '#f2f0ea';\n\ninterface ComponentParams {\n gridSize?: number;\n majorRadius?: number;\n minorRadius?: number;\n}\n\ninterface FrameMetrics {\n layout: 'landscape' | 'portrait';\n width: number;\n height: number;\n}\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\n\nconst getParamNumber = (value: unknown, fallback: number, min: number, max: number, step = 1) => {\n if (typeof value !== 'number' || Number.isNaN(value)) return fallback;\n const stepped = Math.round(value / step) * step;\n return clamp(stepped, min, max);\n};\n\nfunction setupLights(targetScene: THREE.Scene) {\n const ambientLight = new THREE.AmbientLight(0xffffff, 0.65);\n targetScene.add(ambientLight);\n\n const directionalLight = new THREE.DirectionalLight(0xffffff, 1.1);\n directionalLight.position.set(20, 50, 20);\n directionalLight.castShadow = true;\n directionalLight.shadow.mapSize.width = 2048;\n directionalLight.shadow.mapSize.height = 2048;\n targetScene.add(directionalLight);\n\n const coolLight = new THREE.PointLight(0x3b82f6, 1.1, 50);\n coolLight.position.set(-10, 10, -10);\n targetScene.add(coolLight);\n\n const warmLight = new THREE.PointLight(0xff7a59, 0.9, 50);\n warmLight.position.set(10, -10, 10);\n targetScene.add(warmLight);\n}\n\nfunction disposeMaterial(material: THREE.Material | THREE.Material[]) {\n if (Array.isArray(material)) {\n material.forEach((item) => item.dispose());\n return;\n }\n\n material.dispose();\n}\n\nfunction disposeScene(scene: THREE.Scene) {\n scene.traverse((object) => {\n const mesh = object as THREE.Object3D & {\n geometry?: THREE.BufferGeometry;\n material?: THREE.Material | THREE.Material[];\n };\n\n if (mesh.geometry) {\n mesh.geometry.dispose();\n }\n\n if (mesh.material) {\n disposeMaterial(mesh.material);\n }\n });\n}\n\nexport default function Component({\n config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const params = (config.params ?? {}) as ComponentParams;\n const gridSize = getParamNumber(params.gridSize, 24, 12, 80, 1);\n const majorRadius = getParamNumber(params.majorRadius, 8, 4, 10, 0.5);\n const minorRadius = getParamNumber(params.minorRadius, 3, 1, 5, 0.25);\n\n const [resolution, setResolution] = useState(gridSize);\n const [frame, setFrame] = useState({\n layout: 'landscape',\n width: 0,\n height: 0\n });\n\n const wrapperRef = useRef(null);\n const canvasContainerRef = useRef(null);\n const completedRef = useRef(false);\n\n useEffect(() => {\n const wrapperNode = wrapperRef.current;\n if (!wrapperNode) return;\n\n const updateFrame = () => {\n const availableWidth = wrapperNode.clientWidth;\n const availableHeight = wrapperNode.clientHeight;\n\n if (!availableWidth || !availableHeight) return;\n\n const layout = availableWidth >= availableHeight ? 'landscape' : 'portrait';\n let width = availableWidth;\n let height = availableHeight;\n\n if (layout === 'landscape') {\n height = Math.min(availableHeight, availableWidth * (9 / 16));\n width = height * (16 / 9);\n } else {\n width = Math.min(availableWidth, availableHeight / 2);\n height = width * 2;\n }\n\n setFrame({\n layout,\n width,\n height\n });\n };\n\n const resizeObserver = new ResizeObserver(updateFrame);\n resizeObserver.observe(wrapperNode);\n updateFrame();\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n setResolution(gridSize);\n completedRef.current = false;\n }, [config.id, gridSize, majorRadius, minorRadius]);\n\n const latticeSpan = useMemo(\n () => Math.max(BASE_LATTICE_SPAN, (majorRadius + minorRadius + 1.5) * 2),\n [majorRadius, minorRadius]\n );\n const voxelSize = useMemo(() => latticeSpan / resolution, [latticeSpan, resolution]);\n\n useEffect(() => {\n onProgress?.(resolution === gridSize ? 0 : 100);\n }, [gridSize, onProgress, resolution]);\n\n useEffect(() => {\n if (resolution === gridSize || completedRef.current) return;\n\n completedRef.current = true;\n onComplete({\n success: true,\n score: 100,\n data: {\n configId: config.id,\n completedAt: new Date().toISOString(),\n params: {\n gridSize: resolution,\n majorRadius,\n minorRadius\n }\n }\n });\n }, [config.id, gridSize, majorRadius, minorRadius, onComplete, resolution]);\n\n useEffect(() => {\n const mountNode = canvasContainerRef.current;\n if (!mountNode) return;\n\n const sceneContinuous = new THREE.Scene();\n const sceneDiscrete = new THREE.Scene();\n const backgroundColor = new THREE.Color(SCENE_BACKGROUND);\n\n sceneContinuous.background = backgroundColor;\n sceneContinuous.fog = new THREE.FogExp2(SCENE_BACKGROUND, 0.02);\n sceneDiscrete.background = backgroundColor;\n sceneDiscrete.fog = new THREE.FogExp2(SCENE_BACKGROUND, 0.02);\n\n setupLights(sceneContinuous);\n setupLights(sceneDiscrete);\n\n const camera = new THREE.PerspectiveCamera(45, 1, 0.1, 1000);\n camera.position.copy(DEFAULT_CAMERA_POSITION);\n\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = THREE.PCFSoftShadowMap;\n renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\n renderer.setScissorTest(true);\n mountNode.appendChild(renderer.domElement);\n\n const controls = new OrbitControls(camera, renderer.domElement);\n controls.enableDamping = true;\n controls.dampingFactor = 0.05;\n controls.minDistance = 5;\n controls.maxDistance = 100;\n controls.target.copy(DEFAULT_CAMERA_TARGET);\n\n const torusGeometry = new THREE.TorusGeometry(majorRadius, minorRadius, 64, 128);\n const torusMaterial = new THREE.MeshStandardMaterial({\n color: 0x3b82f6,\n roughness: 0.22,\n metalness: 0.1\n });\n const torusMesh = new THREE.Mesh(torusGeometry, torusMaterial);\n torusMesh.castShadow = true;\n torusMesh.receiveShadow = true;\n torusMesh.rotation.x = -Math.PI / 2;\n sceneContinuous.add(torusMesh);\n\n const voxelGap = voxelSize * 0.12;\n const voxelEdge = Math.max(voxelSize - voxelGap, voxelSize * 0.2);\n const voxelGeometry = new THREE.BoxGeometry(voxelEdge, voxelEdge, voxelEdge);\n const solidMaterial = new THREE.MeshStandardMaterial({\n color: 0x3b82f6,\n roughness: 0.22,\n metalness: 0.1\n });\n const emptyMaterial = new THREE.MeshBasicMaterial({\n color: 0x000000,\n transparent: true,\n opacity: 0.08,\n wireframe: true\n });\n\n const totalVoxels = Math.pow(resolution, 3);\n const solidMesh = new THREE.InstancedMesh(voxelGeometry, solidMaterial, totalVoxels);\n const emptyMesh = new THREE.InstancedMesh(voxelGeometry, emptyMaterial, totalVoxels);\n const voxelOffset = ((resolution - 1) * voxelSize) / 2;\n const dummy = new THREE.Object3D();\n\n solidMesh.castShadow = true;\n solidMesh.receiveShadow = true;\n sceneDiscrete.add(solidMesh);\n sceneDiscrete.add(emptyMesh);\n\n let solidCount = 0;\n let emptyCount = 0;\n\n for (let x = 0; x < resolution; x += 1) {\n for (let y = 0; y < resolution; y += 1) {\n for (let z = 0; z < resolution; z += 1) {\n const px = x * voxelSize - voxelOffset;\n const py = y * voxelSize - voxelOffset;\n const pz = z * voxelSize - voxelOffset;\n const distHorizontal = Math.sqrt(px * px + pz * pz) - majorRadius;\n const distSquared = distHorizontal * distHorizontal + py * py;\n const isSolid = distSquared < minorRadius * minorRadius;\n\n dummy.position.set(px, py, pz);\n dummy.updateMatrix();\n\n if (isSolid) {\n solidMesh.setMatrixAt(solidCount, dummy.matrix);\n const color = new THREE.Color();\n const hue = 0.52 + (py / Math.max(resolution, 1)) * 0.18;\n color.setHSL(hue, 0.78, 0.52);\n solidMesh.setColorAt(solidCount, color);\n solidCount += 1;\n continue;\n }\n\n emptyMesh.setMatrixAt(emptyCount, dummy.matrix);\n emptyCount += 1;\n }\n }\n }\n\n solidMesh.count = solidCount;\n emptyMesh.count = emptyCount;\n solidMesh.instanceMatrix.needsUpdate = true;\n emptyMesh.instanceMatrix.needsUpdate = true;\n if (solidMesh.instanceColor) {\n solidMesh.instanceColor.needsUpdate = true;\n }\n\n const targetCameraPosition = DEFAULT_CAMERA_POSITION.clone();\n const targetControlsPosition = DEFAULT_CAMERA_TARGET.clone();\n let animateCamera = false;\n let resetTimer: number | null = null;\n let width = 0;\n let height = 0;\n\n const resize = () => {\n width = mountNode.clientWidth;\n height = mountNode.clientHeight;\n\n if (!width || !height) return;\n\n camera.aspect = 1;\n camera.updateProjectionMatrix();\n renderer.setSize(width, height, false);\n };\n\n const resizeObserver = new ResizeObserver(resize);\n resizeObserver.observe(mountNode);\n resize();\n\n const handleControlsStart = () => {\n animateCamera = false;\n if (resetTimer !== null) {\n window.clearTimeout(resetTimer);\n resetTimer = null;\n }\n };\n\n const handleControlsEnd = () => {\n resetTimer = window.setTimeout(() => {\n animateCamera = true;\n }, RESET_DELAY_MS);\n };\n\n controls.addEventListener('start', handleControlsStart);\n controls.addEventListener('end', handleControlsEnd);\n\n let animationFrame = 0;\n\n const renderFrame = () => {\n animationFrame = window.requestAnimationFrame(renderFrame);\n\n if (animateCamera) {\n camera.position.lerp(targetCameraPosition, 0.05);\n controls.target.lerp(targetControlsPosition, 0.05);\n\n if (\n camera.position.distanceTo(targetCameraPosition) < 0.1 &&\n controls.target.distanceTo(targetControlsPosition) < 0.1\n ) {\n animateCamera = false;\n }\n }\n\n torusMesh.rotation.z += 0.002;\n solidMesh.rotation.y += 0.002;\n emptyMesh.rotation.y += 0.002;\n emptyMesh.visible = false;\n\n controls.update();\n\n if (!width || !height) return;\n\n const isLandscape = width >= height;\n const squareSize = isLandscape ? Math.min(width / 2, height) : Math.min(width, height / 2);\n const startX = isLandscape ? (width - squareSize * 2) / 2 : (width - squareSize) / 2;\n const startY = isLandscape ? (height - squareSize) / 2 : (height - squareSize * 2) / 2;\n\n const continuousX = startX;\n const continuousY = isLandscape ? startY : startY + squareSize;\n const discreteX = isLandscape ? startX + squareSize : startX;\n const discreteY = startY;\n\n renderer.setScissor(continuousX, continuousY, squareSize, squareSize);\n renderer.setViewport(continuousX, continuousY, squareSize, squareSize);\n renderer.render(sceneContinuous, camera);\n\n renderer.setScissor(discreteX, discreteY, squareSize, squareSize);\n renderer.setViewport(discreteX, discreteY, squareSize, squareSize);\n renderer.render(sceneDiscrete, camera);\n };\n\n renderFrame();\n\n return () => {\n window.cancelAnimationFrame(animationFrame);\n if (resetTimer !== null) {\n window.clearTimeout(resetTimer);\n }\n resizeObserver.disconnect();\n controls.removeEventListener('start', handleControlsStart);\n controls.removeEventListener('end', handleControlsEnd);\n controls.dispose();\n renderer.dispose();\n disposeScene(sceneContinuous);\n disposeScene(sceneDiscrete);\n mountNode.removeChild(renderer.domElement);\n };\n }, [majorRadius, minorRadius, resolution, voxelSize]);\n\n const cssVars = useMemo(\n () =>\n ({\n '--gc-primary': theme?.primary ?? 'var(--color-primary, #45c4b0)',\n '--gc-accent': theme?.accent ?? 'var(--color-accent, #ff7a59)',\n '--gc-bg': theme?.bg ?? 'var(--color-bg, #0d1117)',\n '--gc-bg-secondary': theme?.bgSecondary ?? 'var(--color-bg-secondary, #182237)',\n '--gc-text': theme?.text ?? 'var(--color-text, #f1f4ef)',\n '--gc-text-muted': theme?.textMuted ?? 'var(--color-text-muted, #b6c0d4)',\n '--gc-border': theme?.border ?? 'var(--color-border, #34516f)'\n }) as CSSProperties,\n [theme]\n );\n\n const handleResolutionChange = (event: ChangeEvent) => {\n setResolution(Number(event.target.value));\n };\n\n return (\n
\n \n
\n
\n
Continuous
\n
Discrete
\n
\n
\n \n
\n
\n
\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'voxel_universe',\n displayName: 'Voxel Universe',\n version: '1.0.0',\n paramSchema: {\n gridSize: {\n type: 'range',\n label: 'Voxel Resolution',\n description: 'How many voxels are used per axis. Higher values make each voxel smaller.',\n default: 24,\n min: 12,\n max: 80,\n step: 1\n },\n majorRadius: {\n type: 'range',\n label: 'Major Radius',\n description: 'Overall radius of the torus shape.',\n default: 8,\n min: 4,\n max: 10,\n step: 0.5\n },\n minorRadius: {\n type: 'range',\n label: 'Minor Radius',\n description: 'Thickness of the torus ring.',\n default: 3,\n min: 1,\n max: 5,\n step: 0.25\n }\n },\n defaultParams: {\n gridSize: 24,\n majorRadius: 8,\n minorRadius: 3\n }\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n GlitchTheme,\n GlitchComponentMetadata\n} from './types';\n"],"names":["REVISION","MOUSE","TOUCH","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","ConstantColorFactor","OneMinusConstantColorFactor","ConstantAlphaFactor","OneMinusConstantAlphaFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","AgXToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedInt248Type","AlphaFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","RGB_BPTC_SIGNED_Format","RGB_BPTC_UNSIGNED_Format","RED_RGTC1_Format","SIGNED_RED_RGTC1_Format","RED_GREEN_RGTC2_Format","SIGNED_RED_GREEN_RGTC2_Format","LinearEncoding","sRGBEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","NoColorSpace","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","LinearTransfer","SRGBTransfer","Rec709Primaries","P3Primaries","KeepStencilOp","AlwaysStencilFunc","NeverCompare","LessCompare","EqualCompare","LessEqualCompare","GreaterCompare","NotEqualCompare","GreaterEqualCompare","AlwaysCompare","StaticDrawUsage","GLSL3","_SRGBAFormat","WebGLCoordinateSystem","WebGPUCoordinateSystem","EventDispatcher","type","listener","listeners","listenerArray","index","event","array","i","l","_lut","DEG2RAD","RAD2DEG","generateUUID","d0","d1","d2","d3","clamp","value","min","max","euclideanModulo","n","m","lerp","x","y","isPowerOfTwo","floorPowerOfTwo","denormalize","normalize","MathUtils","Vector2","scalar","v","s","a","b","e","minVal","maxVal","length","denominator","theta","dx","dy","alpha","v1","v2","offset","attribute","center","angle","c","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","xAxis","yAxis","zAxis","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","d","f","g","h","t11","t12","t13","det","detInv","tmp","matrix4","r","tx","ty","sx","sy","rotation","cx","cy","_m3","matrix","arrayNeedsUint32","createElementNS","name","createCanvasElement","canvas","_cache","warnOnce","message","LINEAR_SRGB_TO_LINEAR_DISPLAY_P3","LINEAR_DISPLAY_P3_TO_LINEAR_SRGB","COLOR_SPACES","color","SUPPORTED_WORKING_COLOR_SPACES","ColorManagement","colorSpace","sourceColorSpace","targetColorSpace","sourceToReference","targetFromReference","SRGBToLinear","LinearToSRGB","_canvas","ImageUtils","image","context","imageData","data","_sourceId","Source","meta","isRootObject","output","url","serializeImage","_textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","source","uv","encoding","Vector4","z","w","q","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","RenderTarget","width","height","options","depth","WebGLRenderTarget","DataArrayTexture","Data3DTexture","Quaternion","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","t","x0","y0","z0","w0","x1","y1","z1","w1","cos","dir","sqrSin","sin","len","tDir","quaternion","euler","update","order","c1","c2","c3","s1","s2","s3","axis","halfAngle","trace","vFrom","vTo","step","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","qa","u1","sqrt1u1","sqrtu1","u2","u3","callback","Vector3","_quaternion$4","vx","vy","vz","qx","qy","qz","qw","tz","camera","ax","ay","az","bx","by","bz","planeNormal","_vector$c","normal","dz","radius","phi","sinPhiRadius","sz","u","Box3","il","_vector$b","points","size","halfSize","object","precise","box","target","point","vector","geometry","positionAttribute","_box$4","children","sphere","plane","triangle","_center","_extents","_v0$2","_v1$7","_v2$4","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","_points","_testAxis","v0","extents","j","p0","p1","p2","_box$3","_v1$6","_v2$3","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","lengthSq","delta","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","directionDistance","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","b1","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","backfaceCulling","DdN","sign","DdQxE2","DdE1xQ","QdN","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","_zero","_one","eye","up","_z","_x","_y","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","position","scale","x2","y2","z2","wx","wy","wz","_m1$2","invSX","invSY","invSZ","left","right","top","bottom","near","far","coordinateSystem","p","zInv","_matrix$1","_quaternion$3","Euler","newOrder","Layers","channel","layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","onRotationChange","onQuaternionChange","distance","parent","id","result","force","child","updateParents","updateChildren","bound","serialize","library","element","parameters","shapes","shape","uuids","animation","geometries","extractFromCache","materials","textures","images","skeletons","animations","nodes","cache","values","key","recursive","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","warnedGetUV","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","p3","uv1","uv2","uv3","v3","i0","i1","i2","d4","vc","d5","d6","vb","va","_colorKeywords","_hslA","_hslB","hue2rgb","Color","hex","style","handleAlpha","string","components","_color","hue","saturation","lightness","color1","color2","_materialId","Material","newValue","currentValue","srcPlanes","dstPlanes","MeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","normalized","start","count","index1","index2","component","Uint16BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","_id$2","_m1","_obj","_offset","_box$2","_boxMorphTargets","_vector$8","BufferGeometry","materialIndex","normalMatrix","tangent","morphAttributesPosition","morphAttribute","morphTargetsRelative","jl","attributes","indices","positions","normals","uvs","nVertices","tangents","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","groups","group","tmp2","n2","handleVertex","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","convertBufferAttribute","array2","geometry2","newAttribute","morphAttributes","morphArray","hasMorphAttributes","attributeArray","boundingSphere","boundingBox","_inverseMatrix$3","_ray$3","_sphere$6","_sphereHitAt","_vA$1","_vB$1","_vC$1","_tempA","_morphA","_uvA$1","_uvB$1","_uvC$1","_normalA","_normalB","_normalC","_intersectionPoint","_intersectionPointWorld","Mesh","material","keys","ml","morphPosition","morphInfluences","influence","raycaster","intersects","matrixWorld","rayLocalSpace","intersection","drawRange","groupMaterial","end","checkGeometryIntersection","checkIntersection","intersect","face","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","iy","ix","cloneUniforms","src","property","mergeUniforms","uniforms","merged","cloneUniformsGroups","getUnlitUniformColorSpace","renderer","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","extensions","Camera","PerspectiveCamera","fov","aspect","focalLength","vExtentSlope","fullWidth","fullHeight","view","skew","CubeCamera","renderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","cameras","scene","activeMipmapLevel","currentRenderTarget","currentActiveCubeFace","currentActiveMipmapLevel","currentXrEnabled","generateMipmaps","CubeTexture","WebGLCubeRenderTarget","texture","shader","mesh","currentMinFilter","stencil","_vector1","_vector2","_normalMatrix","Plane","constant","inverseNormalLength","line","startSign","endSign","optionalNormalMatrix","referencePoint","_sphere$5","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","WebGLAttributes","gl","capabilities","isWebGL2","buffers","createBuffer","bufferType","usage","buffer","updateBuffer","updateRange","updateRanges","range","get","remove","cached","PlaneGeometry","width_half","height_half","segment_width","segment_height","alphahash_fragment","alphahash_pars_fragment","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","batching_pars_vertex","batching_vertex","begin_vertex","beginnormal_vertex","bsdfs","iridescence_fragment","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","colorspace_fragment","colorspace_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_fragment","lights_lambert_pars_fragment","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","iridescence_pars_fragment","opaque_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","worldpos_vertex","vertex$h","fragment$h","vertex$g","fragment$g","vertex$f","fragment$f","vertex$e","fragment$e","vertex$d","fragment$d","vertex$c","fragment$c","vertex$b","fragment$b","vertex$a","fragment$a","vertex$9","fragment$9","vertex$8","fragment$8","vertex$7","fragment$7","vertex$6","fragment$6","vertex$5","fragment$5","vertex$4","fragment$4","vertex$3","fragment$3","vertex$2","fragment$2","vertex$1","fragment$1","ShaderChunk","UniformsLib","ShaderLib","_rgb","WebGLBackground","cubemaps","cubeuvmaps","state","objects","premultipliedAlpha","clearColor","clearAlpha","planeMesh","boxMesh","currentBackground","currentBackgroundVersion","currentTonemapping","render","renderList","forceClear","background","setClear","environmentBlendMode","WebGLBindingStates","maxVertexAttributes","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","forceUpdate","setup","program","updateBuffers","getBindingState","bindVertexArrayObject","needsUpdate","saveCache","wireframe","setupVertexAttributes","createVertexArrayObject","vao","deleteVertexArrayObject","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","attributesNum","programAttributes","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","disableUnusedAttributes","vertexAttribPointer","stride","integer","materialDefaultAttributeValues","programAttribute","bytesPerElement","dispose","reset","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","info","mode","setMode","renderInstances","primcount","methodName","renderMultiDraw","starts","counts","drawCount","elementCount","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","getMaxPrecision","precision","maxPrecision","drawBuffers","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","properties","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","enableLocalClipping","enabled","projectPlanes","useCache","clipIntersection","clipShadows","materialProperties","resetGlobalState","nGlobal","lGlobal","dstArray","skipTransform","nPlanes","flatSize","viewMatrix","i4","WebGLCubeMaps","mapTextureMapping","cubemap","onTextureDispose","OrthographicCamera","scaleW","scaleH","LOD_MIN","EXTRA_LOD_SIGMA","MAX_SAMPLES","_flatCamera","_clearColor","_oldTarget","_oldActiveCubeFace","_oldActiveMipmapLevel","PHI","INV_PHI","_axisDirections","PMREMGenerator","sigma","cubeUVRenderTarget","equirectangular","_getCubemapMaterial","_getEquirectMaterial","cubeSize","outputTarget","_setViewport","params","_createRenderTarget","_lodMax","_createPlanes","_getBlurShader","tmpMesh","cubeCamera","upSign","forwardSign","originalAutoClear","toneMapping","backgroundMaterial","backgroundBox","useSolidColor","col","isCubeTexture","autoClear","poleAxis","lodIn","lodOut","pingPongRenderTarget","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","samples","weights","sum","weight","outputSize","lodMax","lodPlanes","sizeLods","sigmas","lod","totalLods","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","faceIndex","coordinates","fill","_getCommonVertexShader","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","isEquirectMap","isCubeMap","isCubeTextureComplete","cubemapUV","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","updateWireframeAttribute","geometryIndex","geometryPosition","version","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","setIndex","WebGLInfo","memory","instanceCount","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","morphTextures","morph","workInfluences","objectInfluences","morphTargetsCount","entry","disposeTexture","hasMorphPosition","hasMorphNormals","hasMorphColors","morphTargets","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","morphInfluencesSum","morphBaseInfluence","influences","WebGLObjects","updateMap","buffergeometry","onInstancedMeshDispose","skeleton","instancedMesh","DepthTexture","emptyTexture","emptyShadowTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","setValueV1f","setValueV2f","setValueV3f","setValueV4f","setValueM2","elements","setValueM3","setValueM4","setValueV1i","setValueV2i","setValueV3i","setValueV4i","setValueV1ui","setValueV2ui","setValueV3ui","setValueV4ui","setValueT1","unit","emptyTexture2D","setValueT3D1","setValueT6","setValueT2DArray1","getSingularSetter","setValueV1fArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","getPureArraySetter","SingleUniform","activeInfo","addr","PureArrayUniform","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","match","matchEnd","idIsIndex","subscript","next","WebGLUniforms","WebGLShader","COMPLETION_STATUS_KHR","programIdCount","handleSource","errorLine","lines","lines2","from","to","getEncodingComponents","workingPrimaries","encodingPrimaries","gamutMapping","getShaderErrors","status","errors","errorMatches","getTexelEncodingFunction","functionName","getToneMappingFunction","toneMappingName","generateExtensions","filterEmptyLine","generateVertexExtensions","generateDefines","defines","chunks","fetchAttributeLocations","locationSize","replaceLightNums","numSpotLightCoords","replaceClippingPlaneNums","includePattern","resolveIncludes","includeReplacer","shaderChunkMap","include","newInclude","unrollLoopPattern","unrollLoops","loopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","generateEnvMapTypeDefine","envMapTypeDefine","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","generateCubeUVSize","imageHeight","maxMip","texelHeight","WebGLProgram","cacheKey","vertexShader","fragmentShader","envMapCubeUVSize","customExtensions","customVertexExtensions","customDefines","prefixVertex","prefixFragment","versionString","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","onFirstUse","self","programLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","cachedUniforms","programReady","_id$1","WebGLShaderCache","vertexShaderStage","fragmentShaderStage","materialShaders","shaderStage","set","code","stage","WebGLShaderStage","WebGLPrograms","clipping","_programLayers","_customShaders","programs","IS_WEBGL2","SUPPORTS_VERTEX_TEXTURES","shaderIDs","getChannel","getParameters","lights","shadows","fog","environment","envMap","envMapCubeUVHeight","shaderID","morphTextureStride","customVertexShaderID","customFragmentShaderID","IS_INSTANCEDMESH","IS_BATCHEDMESH","HAS_MAP","HAS_MATCAP","HAS_ENVMAP","HAS_AOMAP","HAS_LIGHTMAP","HAS_BUMPMAP","HAS_NORMALMAP","HAS_DISPLACEMENTMAP","HAS_EMISSIVEMAP","HAS_METALNESSMAP","HAS_ROUGHNESSMAP","HAS_ANISOTROPY","HAS_CLEARCOAT","HAS_IRIDESCENCE","HAS_SHEEN","HAS_TRANSMISSION","HAS_ANISOTROPYMAP","HAS_CLEARCOATMAP","HAS_CLEARCOAT_NORMALMAP","HAS_CLEARCOAT_ROUGHNESSMAP","HAS_IRIDESCENCEMAP","HAS_IRIDESCENCE_THICKNESSMAP","HAS_SHEEN_COLORMAP","HAS_SHEEN_ROUGHNESSMAP","HAS_SPECULARMAP","HAS_SPECULAR_COLORMAP","HAS_SPECULAR_INTENSITYMAP","HAS_TRANSMISSIONMAP","HAS_THICKNESSMAP","HAS_GRADIENTMAP","HAS_ALPHAMAP","HAS_ALPHATEST","HAS_ALPHAHASH","HAS_EXTENSIONS","HAS_ATTRIBUTE_UV1","HAS_ATTRIBUTE_UV2","HAS_ATTRIBUTE_UV3","getProgramCacheKey","getProgramCacheKeyParameters","getProgramCacheKeyBooleans","getUniforms","acquireProgram","pl","preexistingProgram","releaseProgram","releaseShaderCache","WebGLProperties","map","painterSortStable","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transmissive","transparent","init","getNextRenderItem","groupOrder","renderItem","push","unshift","sort","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","renderCallDepth","listArray","list","UniformsCache","light","ShadowUniformsCache","nextVersion","shadowCastingAndTexturingLightsFirst","lightA","lightB","WebGLLights","shadowCache","vector3","matrix42","useLegacyLights","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","numSpotMaps","numSpotShadowsWithMaps","numLightProbes","scaleFactor","intensity","shadowMap","shadow","shadowUniforms","hash","setupView","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","setupLightsView","WebGLRenderStates","renderStates","renderStateArray","renderState","MeshDepthMaterial","MeshDistanceMaterial","vertex","fragment","WebGLShadowMap","_renderer","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","shadowSide","shadowMaterialVertical","shadowMaterialHorizontal","fullScreenTri","fullScreenMesh","_previousType","activeCubeFace","_state","toVSM","fromVSM","shadowFrameExtents","pars","viewportCount","vp","viewport","renderObject","VSMPass","getDepthMaterial","customMaterial","keyA","keyB","materialsForVariant","cachedMaterial","onMaterialDispose","shadowCamera","k","kl","depthMaterial","uuid","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthTest","enable","disable","depthMask","depthFunc","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","stencilFail","stencilZFail","stencilZPass","colorBuffer","depthBuffer","stencilBuffer","uboBindings","uboProgramMap","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentBlendColor","currentBlendAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","dimensions","emptyTextures","setFlipSided","setCullFace","setBlending","bindFramebuffer","framebuffer","useProgram","equationToGL","factorToGL","blending","blendEquation","blendSrc","blendDst","blendEquationAlpha","blendSrcAlpha","blendDstAlpha","blendColor","blendAlpha","setMaterial","frontFaceCW","flipSided","stencilWrite","setPolygonOffset","cullFace","setLineWidth","polygonOffset","factor","setScissorTest","scissorTest","activeTexture","webglSlot","bindTexture","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","error","compressedTexImage3D","texSubImage2D","texSubImage3D","compressedTexSubImage2D","compressedTexSubImage3D","texStorage2D","texStorage3D","texImage2D","texImage3D","scissor","updateUBOMapping","uniformsGroup","blockIndex","uniformBlockBinding","WebGLTextures","_gl","utils","multisampledRTTExt","supportsInvalidateFramebuffer","_videoTextures","_sources","useOffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","floor","isPowerOfTwo$1","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","getInternalFormat","internalFormatName","glFormat","glType","forceLinearTransfer","internalFormat","transfer","getMipLevels","filterFallback","deallocateTexture","onRenderTargetDispose","deallocateRenderTarget","textureProperties","webglTextures","deleteTexture","renderTargetProperties","level","attachmentProperties","textureUnits","resetTextureUnits","allocateTextureUnit","textureUnit","getTextureCacheKey","setTexture2D","slot","updateVideoTexture","uploadTexture","setTexture2DArray","setTexture3D","setTextureCube","uploadCubeTexture","wrappingToGL","filterToGL","compareToGL","setTextureParameters","textureType","initTexture","forceUpload","textureCacheKey","sourceProperties","texturePrimaries","unpackConversion","verifyColorSpace","glInternalFormat","mipmap","mipmaps","useTexStorage","allocateMemory","levels","isCompressed","isDataTexture","cubeImage","mipmapImage","setupFrameBufferTexture","attachment","textureTarget","useMultisampledRTT","getRenderTargetSamples","setupRenderBufferStorage","renderbuffer","isMultisample","depthTexture","setupDepthTexture","webglDepthTexture","setupDepthRenderbuffer","isCube","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","glTextureType","updateRenderTargetMipmap","updateMultisampleRenderTarget","mask","invalidationArray","depthStyle","ignoreDepthValues","WebGLUtils","convert","ArrayCamera","Group","_moveEvent","WebXRController","inputSource","hand","inputjoint","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","jointPose","joint","indexTip","thumbTip","distanceToPinch","threshold","WebXRManager","session","framebufferScaleFactor","referenceSpaceType","foveation","customReferenceSpace","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","initialRenderTarget","newRenderTarget","controllers","controllerInputSources","currentSize","currentPixelRatio","cameraL","cameraR","cameraXR","_currentDepthNear","_currentDepthFar","controller","onSessionEvent","controllerIndex","onSessionEnd","onInputSourcesChange","space","layerInit","depthFormat","depthType","glDepthFormat","projectionlayerInit","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","updateUserCamera","onAnimationFrameCallback","views","cameraXRNeedsUpdate","glSubImage","WebGLMaterials","refreshTransformUniform","refreshFogUniforms","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","refreshUniformsCommon","refreshUniformsToon","refreshUniformsPhong","refreshUniformsStandard","refreshUniformsPhysical","refreshUniformsMatcap","refreshUniformsDistance","refreshUniformsLine","refreshUniformsDash","refreshUniformsPoints","refreshUniformsSprites","WebGLUniformsGroups","updateList","allocatedBindingPoints","maxBindingPoints","bind","webglProgram","prepareUniformsGroup","onUniformsGroupsDispose","updateBufferData","bindingPointIndex","allocateBindingPointIndex","uniformArray","hasUniformChanged","arrayOffset","getUniformSize","indexArray","indexString","cachedObject","chunkSize","chunkOffsetUniform","chunkOffset","WebGLRenderer","antialias","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","_alpha","uintClearColor","intClearColor","currentRenderList","currentRenderState","renderListStack","renderStateStack","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_currentClearColor","_currentClearAlpha","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","getTargetPixelRatio","getContext","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","onContextCreationError","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","uniformsGroups","initGLContext","xr","updateStyle","boolean","method","bits","isIntegerFormat","targetFormat","targetType","isUnsignedType","onXRSessionStart","onXRSessionEnd","infoAutoReset","shadowMapEnabled","shadowMapAutoUpdate","shadowMapNeedsUpdate","shadowMapType","deallocateMaterial","releaseMaterialProgramReferences","setProgram","rangeFactor","drawStart","drawEnd","lineWidth","maxInstanceCount","prepareMaterial","getProgram","targetScene","material2","resolve","checkMaterialsReady","projectObject","camera2","renderScene","sortObjects","opaqueObjects","transmissiveObjects","transparentObjects","renderTransmissionPass","renderObjects","currentToneMapping","renderTargetNeedsUpdate","currentSide","overrideMaterial","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","materialNeedsLights","getUniformList","progUniforms","vertexAlphas","vertexTangents","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","markUniformsLightsNeedsUpdate","defaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","__webglFramebuffer","layer","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","levelScale","srcTexture","dstTexture","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","WebGL1Renderer","FogExp2","density","Scene","InstancedBufferAttribute","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_box3","_identity","_mesh$1","_sphere$3","InstancedMesh","raycastTimes","instanceId","TorusGeometry","tube","radialSegments","tubularSegments","arc","MeshStandardMaterial","Light","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","shadowMatrix","viewportIndex","_lightPositionWorld","_lookTarget","PointLightShadow","PointLight","decay","power","DirectionalLightShadow","DirectionalLight","AmbientLight","Spherical","other","_changeEvent","_startEvent","_endEvent","_ray","_plane","TILT_LIMIT","OrbitControls","domElement","spherical","onKeyDown","STATE","quat","quatInverse","lastPosition","lastQuaternion","lastTargetPosition","twoPI","deltaTime","rotateLeft","getAutoRotationAngle","sphericalDelta","panOffset","performCursorZoom","clampDistance","zoomChanged","newRadius","prevRadius","radiusDelta","dollyDirection","mouseBefore","mouse","mouseAfter","EPS","onContextMenu","onPointerDown","onPointerUp","onMouseWheel","onPointerMove","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","pointers","pointerPositions","controlActive","getZoomScale","normalizedDelta","rotateUp","panLeft","objectMatrix","panUp","pan","deltaX","deltaY","targetDistance","dollyOut","dollyScale","dollyIn","updateZoomParameters","rect","dist","handleMouseDownRotate","handleMouseDownDolly","handleMouseDownPan","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","handleMouseWheel","handleKeyDown","handleTouchStartRotate","getSecondPointerPosition","handleTouchStartPan","handleTouchStartDolly","handleTouchStartDollyPan","handleTouchStartDollyRotate","handleTouchMoveRotate","handleTouchMovePan","handleTouchMoveDolly","centerX","centerY","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","addPointer","onTouchStart","onMouseDown","onTouchMove","onMouseMove","removePointer","mouseAction","customWheelEvent","newEvent","interceptControlDown","interceptControlUp","trackPointer","pointerId","BASE_LATTICE_SPAN","DEFAULT_CAMERA_POSITION","THREE.Vector3","DEFAULT_CAMERA_TARGET","RESET_DELAY_MS","SCENE_BACKGROUND","getParamNumber","fallback","stepped","ambientLight","THREE.AmbientLight","directionalLight","THREE.DirectionalLight","coolLight","THREE.PointLight","warmLight","disposeMaterial","item","disposeScene","Component","config","onComplete","onProgress","theme","className","gridSize","majorRadius","minorRadius","resolution","setResolution","useState","setFrame","wrapperRef","useRef","canvasContainerRef","completedRef","useEffect","wrapperNode","updateFrame","availableWidth","availableHeight","layout","resizeObserver","latticeSpan","useMemo","voxelSize","mountNode","sceneContinuous","THREE.Scene","sceneDiscrete","backgroundColor","THREE.Color","THREE.FogExp2","THREE.PerspectiveCamera","THREE.WebGLRenderer","THREE.PCFSoftShadowMap","controls","torusGeometry","THREE.TorusGeometry","torusMaterial","THREE.MeshStandardMaterial","torusMesh","THREE.Mesh","voxelGap","voxelEdge","voxelGeometry","THREE.BoxGeometry","solidMaterial","emptyMaterial","THREE.MeshBasicMaterial","totalVoxels","solidMesh","THREE.InstancedMesh","emptyMesh","voxelOffset","dummy","THREE.Object3D","solidCount","emptyCount","px","py","pz","distHorizontal","isSolid","targetCameraPosition","targetControlsPosition","animateCamera","resetTimer","resize","handleControlsStart","handleControlsEnd","animationFrame","renderFrame","isLandscape","squareSize","startX","startY","continuousX","continuousY","discreteX","discreteY","cssVars","handleResolutionChange","styles","jsxs","jsx","metadata"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE3BC,KAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEhCC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE1BC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAExBC,KAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEnBC,KAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAE3BC,KAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,SAElBC,KAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEvBC,KAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAElBC,KAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEpBC,KAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEvBC,KAA4B;AAAA;AAAA,SAE5BC,KAAuB;AAAA;AAAA,SAEvBC,KAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yDAE5BC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAExBC,KAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE7BC,KAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEnBC,KAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEjBC,KAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEZC,KAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEtB,MAAMC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAc;AAAA,EACnB,oBAAoB7I;AAAA,EACpB,yBAAyBC;AAAA,EACzB,mBAAmBC;AAAA,EACnB,wBAAwBC;AAAA,EACxB,oBAAoBC;AAAA,EACpB,yBAAyBC;AAAA,EACzB,gBAAgBC;AAAA,EAChB,qBAAqBC;AAAA,EACrB,sBAAsBC;AAAA,EACtB,iBAAiBC;AAAA,EACjB,cAAcC;AAAA,EACd,oBAAoBC;AAAA,EACpB,OAAOC;AAAA,EACP,sBAAsBC;AAAA,EACtB,uBAAuBC;AAAA,EACvB,0BAA0BC;AAAA,EAC1B,+BAA+BC;AAAA,EAC/B,6BAA6BC;AAAA,EAC7B,wBAAwBC;AAAA,EACxB,gBAAgBC;AAAA,EAChB,qBAAqBC;AAAA,EACrB,mBAAmBC;AAAA,EACnB,cAAcC;AAAA,EACd,QAAQC;AAAA,EACR,6BAA6BC;AAAA,EAC7B,sBAAsBC;AAAA,EACtB,6BAA6BC;AAAA,EAC7B,wBAAwBC;AAAA,EACxB,sBAAsBC;AAAA,EACtB,2BAA2BC;AAAA,EAC3B,qBAAqBC;AAAA,EACrB,0BAA0BC;AAAA,EAC1B,iBAAiBC;AAAA,EACjB,6BAA6BC;AAAA,EAC7B,sBAAsBC;AAAA,EACtB,oBAAoBC;AAAA,EACpB,+BAA+BY;AAAA,EAC/B,eAAeX;AAAA,EACf,YAAYC;AAAA,EACZ,iBAAiBC;AAAA,EACjB,cAAcC;AAAA,EACd,mBAAmBC;AAAA,EACnB,2BAA2BC;AAAA,EAC3B,mBAAmBC;AAAA,EACnB,wBAAwBC;AAAA,EACxB,yBAAyBC;AAAA,EACzB,8BAA8BC;AAAA,EAC9B,mBAAmBC;AAAA,EACnB,sBAAsBE;AAAA,EACtB,2BAA2BC;AAAA,EAC3B,uBAAuBC;AAAA,EACvB,4BAA4BC;AAAA,EAC5B,0BAA0BC;AAAA,EAC1B,+BAA+BC;AAAA,EAC/B,uBAAuBC;AAAA,EACvB,sBAAsBC;AAAA,EACtB,qBAAqBC;AAAA,EACrB,sBAAsBC;AAAA,EACtB,2BAA2BC;AAAA,EAC3B,yBAAyBC;AAAA,EACzB,oBAAoBC;AAAA,EACpB,cAAcC;AAAA,EACd,mBAAmBC;AAAA,EACnB,uBAAuBC;AAAA,EACvB,4BAA4BC;AAAA,EAC5B,uBAAuBC;AAAA,EACvB,4BAA4BC;AAAA,EAC5B,mBAAmBC;AAAA,EACnB,oBAAoBC;AAAA,EACpB,yBAAyBC;AAAA,EACzB,oBAAoBC;AAAA,EACpB,uBAAuBC;AAAA,EACvB,sBAAsBC;AAAA,EACtB,sBAAsBC;AAAA,EACtB,oBAAoBC;AAAA,EACpB,eAAeC;AAAA,EACf,yBAAyBC;AAAA,EACzB,iCAAiCC;AAAA,EACjC,gCAAgCC;AAAA,EAChC,yBAAyBC;AAAA,EACzB,2BAA2BC;AAAA,EAC3B,iBAAiBC;AAAA,EACjB,SAASC;AAAA,EACT,8BAA8BC;AAAA,EAC9B,gBAAgBC;AAAA,EAChB,oBAAoBC;AAAA,EACpB,yBAAyBC;AAAA,EACzB,uBAAuBC;AAAA,EACvB,4BAA4BC;AAAA,EAC5B,yBAAyBC;AAAA,EACzB,uBAAuBC;AAAA,EACvB,kBAAkBC;AAAA,EAClB,0BAA0BC;AAAA,EAC1B,iBAAiBC;AAAA,EACjB,sBAAsBC;AAAA,EACtB,iBAAiBC;AAAA,EACjB,mBAAmBC;AAAA,EACnB,sBAAsBC;AAAA,EACtB,2BAA2BC;AAAA,EAC3B,sBAAsBC;AAAA,EACtB,2BAA2BC;AAAA,EAC3B,uBAAuBC;AAAA,EACvB,4BAA4BC;AAAA,EAC5B,kBAAkBC;AAAA,EAClB,gBAAgBC;AAAA,EAChB,WAAWC;AAAA,EACX,iBAAiBC;AAAA,EAEjB,iBAAiBC;AAAA,EACjB,iBAAiBC;AAAA,EACjB,qBAAqBC;AAAA,EACrB,qBAAqBC;AAAA,EACrB,WAAWC;AAAA,EACX,WAAWC;AAAA,EACX,YAAYC;AAAA,EACZ,YAAYC;AAAA,EACZ,mBAAmBC;AAAA,EACnB,mBAAmBC;AAAA,EACnB,eAAeC;AAAA,EACf,eAAeC;AAAA,EACf,iBAAiBC;AAAA,EACjB,iBAAiBC;AAAA,EACjB,gBAAgBC;AAAA,EAChB,gBAAgBC;AAAA,EAChB,kBAAkBC;AAAA,EAClB,kBAAkBC;AAAA,EAClB,iBAAiBC;AAAA,EACjB,iBAAiBC;AAAA,EACjB,iBAAiBC;AAAA,EACjB,iBAAiBC;AAAA,EACjB,gBAAgBC;AAAA,EAChB,gBAAgBC;AAAA,EAChB,mBAAmBC;AAAA,EACnB,mBAAmBC;AAAA,EACnB,eAAeC;AAAA,EACf,eAAeC;AAAA,EACf,aAAaC;AAAA,EACb,aAAaC;AAAA,EACb,aAAaC;AAAA,EACb,aAAaC;AAAA,EACb,aAAaC;AAAA,EACb,aAAaC;AACd,GAMME,KAAc;AAAA,EAEnB,QAAQ;AAAA,IAEP,SAAS,EAAE,OAAqB,oBAAIlZ,GAAO,QAAQ,EAAE;AAAA,IACrD,SAAS,EAAE,OAAO,EAAG;AAAA,IAErB,KAAK,EAAE,OAAO,KAAI;AAAA,IAClB,cAAc,EAAE,OAAqB,oBAAInd,KAAS;AAAA,IAElD,UAAU,EAAE,OAAO,KAAI;AAAA,IACvB,mBAAmB,EAAE,OAAqB,oBAAIA,KAAS;AAAA,IAEvD,WAAW,EAAE,OAAO,EAAC;AAAA,EAEvB;AAAA,EAEC,aAAa;AAAA,IAEZ,aAAa,EAAE,OAAO,KAAI;AAAA,IAC1B,sBAAsB,EAAE,OAAqB,oBAAIA,GAAO,EAAE;AAAA,EAE5D;AAAA,EAEC,QAAQ;AAAA,IAEP,QAAQ,EAAE,OAAO,KAAI;AAAA,IACrB,YAAY,EAAE,OAAO,GAAG;AAAA,IACxB,cAAc,EAAE,OAAO,EAAG;AAAA;AAAA,IAC1B,KAAK,EAAE,OAAO,IAAG;AAAA;AAAA,IACjB,iBAAiB,EAAE,OAAO,KAAI;AAAA;AAAA,EAEhC;AAAA,EAEC,OAAO;AAAA,IAEN,OAAO,EAAE,OAAO,KAAI;AAAA,IACpB,gBAAgB,EAAE,OAAO,EAAC;AAAA,IAC1B,gBAAgB,EAAE,OAAqB,oBAAIA,GAAO,EAAE;AAAA,EAEtD;AAAA,EAEC,UAAU;AAAA,IAET,UAAU,EAAE,OAAO,KAAI;AAAA,IACvB,mBAAmB,EAAE,OAAO,EAAC;AAAA,IAC7B,mBAAmB,EAAE,OAAqB,oBAAIA,GAAO,EAAE;AAAA,EAEzD;AAAA,EAEC,SAAS;AAAA,IAER,SAAS,EAAE,OAAO,KAAI;AAAA,IACtB,kBAAkB,EAAE,OAAqB,oBAAIA,KAAS;AAAA,IACtD,WAAW,EAAE,OAAO,EAAC;AAAA,EAEvB;AAAA,EAEC,WAAW;AAAA,IAEV,WAAW,EAAE,OAAO,KAAI;AAAA,IACxB,oBAAoB,EAAE,OAAqB,oBAAIA,KAAS;AAAA,IACxD,aAAa,EAAE,OAAqB,oBAAItB,GAAS,GAAG,CAAC,EAAE;AAAA,EAEzD;AAAA,EAEC,iBAAiB;AAAA,IAEhB,iBAAiB,EAAE,OAAO,KAAI;AAAA,IAC9B,0BAA0B,EAAE,OAAqB,oBAAIsB,KAAS;AAAA,IAC9D,mBAAmB,EAAE,OAAO,EAAC;AAAA,IAC7B,kBAAkB,EAAE,OAAO,EAAC;AAAA,EAE9B;AAAA,EAEC,aAAa;AAAA,IAEZ,aAAa,EAAE,OAAO,KAAI;AAAA,IAC1B,sBAAsB,EAAE,OAAqB,oBAAIA,GAAO,EAAE;AAAA,EAE5D;AAAA,EAEC,cAAc;AAAA,IAEb,cAAc,EAAE,OAAO,KAAI;AAAA,IAC3B,uBAAuB,EAAE,OAAqB,oBAAIA,GAAO,EAAE;AAAA,EAE7D;AAAA,EAEC,cAAc;AAAA,IAEb,cAAc,EAAE,OAAO,KAAI;AAAA,IAC3B,uBAAuB,EAAE,OAAqB,oBAAIA,GAAO,EAAE;AAAA,EAE7D;AAAA,EAEC,aAAa;AAAA,IAEZ,aAAa,EAAE,OAAO,KAAI;AAAA,EAE5B;AAAA,EAEC,KAAK;AAAA,IAEJ,YAAY,EAAE,OAAO,MAAO;AAAA,IAC5B,SAAS,EAAE,OAAO,EAAC;AAAA,IACnB,QAAQ,EAAE,OAAO,IAAI;AAAA,IACrB,UAAU,EAAE,OAAqB,oBAAImd,GAAO,QAAQ,EAAE;AAAA,EAExD;AAAA,EAEC,QAAQ;AAAA,IAEP,mBAAmB,EAAE,OAAO,GAAE;AAAA,IAE9B,YAAY,EAAE,OAAO,GAAE;AAAA,IAEvB,mBAAmB,EAAE,OAAO,CAAA,GAAI,YAAY;AAAA,MAC3C,WAAW,CAAA;AAAA,MACX,OAAO,CAAA;AAAA,IACV,EAAG;AAAA,IAED,yBAAyB,EAAE,OAAO,CAAA,GAAI,YAAY;AAAA,MACjD,YAAY,CAAA;AAAA,MACZ,kBAAkB,CAAA;AAAA,MAClB,cAAc,CAAA;AAAA,MACd,eAAe,CAAA;AAAA,IAClB,EAAG;AAAA,IAED,sBAAsB,EAAE,OAAO,GAAE;AAAA,IACjC,yBAAyB,EAAE,OAAO,GAAE;AAAA,IAEpC,YAAY,EAAE,OAAO,CAAA,GAAI,YAAY;AAAA,MACpC,OAAO,CAAA;AAAA,MACP,UAAU,CAAA;AAAA,MACV,WAAW,CAAA;AAAA,MACX,UAAU,CAAA;AAAA,MACV,SAAS,CAAA;AAAA,MACT,aAAa,CAAA;AAAA,MACb,OAAO,CAAA;AAAA,IACV,EAAG;AAAA,IAED,kBAAkB,EAAE,OAAO,CAAA,GAAI,YAAY;AAAA,MAC1C,YAAY,CAAA;AAAA,MACZ,kBAAkB,CAAA;AAAA,MAClB,cAAc,CAAA;AAAA,MACd,eAAe,CAAA;AAAA,IAClB,EAAG;AAAA,IAED,cAAc,EAAE,OAAO,GAAE;AAAA,IACzB,eAAe,EAAE,OAAO,GAAE;AAAA,IAC1B,iBAAiB,EAAE,OAAO,GAAE;AAAA,IAE5B,aAAa,EAAE,OAAO,CAAA,GAAI,YAAY;AAAA,MACrC,OAAO,CAAA;AAAA,MACP,UAAU,CAAA;AAAA,MACV,OAAO,CAAA;AAAA,MACP,UAAU,CAAA;AAAA,IACb,EAAG;AAAA,IAED,mBAAmB,EAAE,OAAO,CAAA,GAAI,YAAY;AAAA,MAC3C,YAAY,CAAA;AAAA,MACZ,kBAAkB,CAAA;AAAA,MAClB,cAAc,CAAA;AAAA,MACd,eAAe,CAAA;AAAA,MACf,kBAAkB,CAAA;AAAA,MAClB,iBAAiB,CAAA;AAAA,IACpB,EAAG;AAAA,IAED,gBAAgB,EAAE,OAAO,GAAE;AAAA,IAC3B,mBAAmB,EAAE,OAAO,GAAE;AAAA,IAE9B,kBAAkB,EAAE,OAAO,CAAA,GAAI,YAAY;AAAA,MAC1C,WAAW,CAAA;AAAA,MACX,UAAU,CAAA;AAAA,MACV,aAAa,CAAA;AAAA,IAChB,EAAG;AAAA;AAAA,IAGD,gBAAgB,EAAE,OAAO,CAAA,GAAI,YAAY;AAAA,MACxC,OAAO,CAAA;AAAA,MACP,UAAU,CAAA;AAAA,MACV,OAAO,CAAA;AAAA,MACP,QAAQ,CAAA;AAAA,IACX,EAAG;AAAA,IAED,OAAO,EAAE,OAAO,KAAI;AAAA,IACpB,OAAO,EAAE,OAAO,KAAI;AAAA,EAEtB;AAAA,EAEC,QAAQ;AAAA,IAEP,SAAS,EAAE,OAAqB,oBAAIA,GAAO,QAAQ,EAAE;AAAA,IACrD,SAAS,EAAE,OAAO,EAAG;AAAA,IACrB,MAAM,EAAE,OAAO,EAAG;AAAA,IAClB,OAAO,EAAE,OAAO,EAAG;AAAA,IACnB,KAAK,EAAE,OAAO,KAAI;AAAA,IAClB,UAAU,EAAE,OAAO,KAAI;AAAA,IACvB,mBAAmB,EAAE,OAAqB,oBAAInd,KAAS;AAAA,IACvD,WAAW,EAAE,OAAO,EAAC;AAAA,IACrB,aAAa,EAAE,OAAqB,oBAAIA,GAAO,EAAE;AAAA,EAEnD;AAAA,EAEC,QAAQ;AAAA,IAEP,SAAS,EAAE,OAAqB,oBAAImd,GAAO,QAAQ,EAAE;AAAA,IACrD,SAAS,EAAE,OAAO,EAAG;AAAA,IACrB,QAAQ,EAAE,OAAqB,oBAAIze,GAAS,KAAK,GAAG,EAAE;AAAA,IACtD,UAAU,EAAE,OAAO,EAAG;AAAA,IACtB,KAAK,EAAE,OAAO,KAAI;AAAA,IAClB,cAAc,EAAE,OAAqB,oBAAIsB,KAAS;AAAA,IAClD,UAAU,EAAE,OAAO,KAAI;AAAA,IACvB,mBAAmB,EAAE,OAAqB,oBAAIA,KAAS;AAAA,IACvD,WAAW,EAAE,OAAO,EAAC;AAAA,EAEvB;AAEA,GAEMs2B,KAAY;AAAA,EAEjB,OAAO;AAAA,IAEN,UAAwB,gBAAA3P,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,IACf,CAAG;AAAA,IAED,cAAcD,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,SAAS;AAAA,IAER,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZ;AAAA,QACC,UAAU,EAAE,OAAqB,oBAAIlZ,GAAO,CAAQ,EAAE;AAAA,MAC1D;AAAA,IACA,CAAG;AAAA,IAED,cAAciZ,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,OAAO;AAAA,IAEN,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZ;AAAA,QACC,UAAU,EAAE,OAAqB,oBAAIlZ,GAAO,CAAQ,EAAE;AAAA,QACtD,UAAU,EAAE,OAAqB,oBAAIA,GAAO,OAAQ,EAAE;AAAA,QACtD,WAAW,EAAE,OAAO,GAAE;AAAA,MAC1B;AAAA,IACA,CAAG;AAAA,IAED,cAAciZ,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,UAAU;AAAA,IAET,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZ;AAAA,QACC,UAAU,EAAE,OAAqB,oBAAIlZ,GAAO,CAAQ,EAAE;AAAA,QACtD,WAAW,EAAE,OAAO,EAAG;AAAA,QACvB,WAAW,EAAE,OAAO,EAAG;AAAA,QACvB,iBAAiB,EAAE,OAAO,EAAC;AAAA;AAAA,MAC/B;AAAA,IACA,CAAG;AAAA,IAED,cAAciZ,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,MAAM;AAAA,IAEL,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZ;AAAA,QACC,UAAU,EAAE,OAAqB,oBAAIlZ,GAAO,CAAQ,EAAE;AAAA,MAC1D;AAAA,IACA,CAAG;AAAA,IAED,cAAciZ,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,QAAQ;AAAA,IAEP,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZ;AAAA,QACC,QAAQ,EAAE,OAAO,KAAI;AAAA,MACzB;AAAA,IACA,CAAG;AAAA,IAED,cAAcD,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,QAAQ;AAAA,IAEP,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,IACf,CAAG;AAAA,IAED,cAAcD,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,QAAQ;AAAA,IAEP,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,MACZ;AAAA,QACC,OAAO,EAAE,OAAO,EAAC;AAAA,QACjB,UAAU,EAAE,OAAO,EAAC;AAAA,QACpB,WAAW,EAAE,OAAO,EAAC;AAAA,MACzB;AAAA,IACA,CAAG;AAAA,IAED,cAAcD,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,OAAO;AAAA,IAEN,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,IACf,CAAG;AAAA,IAED,cAAcD,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,QAAQ;AAAA,IAEP,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZ;AAAA,QACC,SAAS,EAAE,OAAO,EAAG;AAAA,MACzB;AAAA,IACA,CAAG;AAAA,IAED,cAAcD,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,QAAQ;AAAA,IAEP,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,IACf,CAAG;AAAA,IAED,cAAcD,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,YAAY;AAAA,IAEX,UAAU;AAAA,MACT,aAAa,EAAE,OAAqB,oBAAIp2B,KAAS;AAAA,MACjD,KAAK,EAAE,OAAO,KAAI;AAAA,MAClB,qBAAqB,EAAE,OAAO,EAAC;AAAA,IAClC;AAAA,IAEE,cAAco2B,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,gBAAgB;AAAA,IAEf,UAAU;AAAA,MACT,QAAQ,EAAE,OAAO,KAAI;AAAA,MACrB,YAAY,EAAE,OAAO,GAAG;AAAA,MACxB,sBAAsB,EAAE,OAAO,EAAC;AAAA,MAChC,qBAAqB,EAAE,OAAO,EAAC;AAAA,IAClC;AAAA,IAEE,cAAcA,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,MAAM;AAAA,IAEL,UAAU;AAAA,MACT,OAAO,EAAE,OAAO,KAAI;AAAA,MACpB,OAAO,EAAE,OAAO,GAAG;AAAA,MACnB,SAAS,EAAE,OAAO,EAAG;AAAA,IACxB;AAAA,IAEE,cAAcA,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,UAAU;AAAA,IAET,UAAU;AAAA,MACT,WAAW,EAAE,OAAO,KAAI;AAAA,IAC3B;AAAA,IAEE,cAAcA,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,cAAc;AAAA,IAEb,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,MACZ;AAAA,QACC,mBAAmB,EAAE,OAAqB,oBAAIxqB,IAAS;AAAA,QACvD,cAAc,EAAE,OAAO,EAAC;AAAA,QACxB,aAAa,EAAE,OAAO,IAAI;AAAA,MAC9B;AAAA,IACA,CAAG;AAAA,IAED,cAAcuqB,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAAA,EAEC,QAAQ;AAAA,IAEP,UAAwB,gBAAAzP,GAAe;AAAA,MACtC0P,GAAY;AAAA,MACZA,GAAY;AAAA,MACZ;AAAA,QACC,OAAO,EAAE,OAAqB,oBAAIlZ,GAAO,CAAO,EAAE;AAAA,QAClD,SAAS,EAAE,OAAO,EAAG;AAAA,MACzB;AAAA,IACA,CAAG;AAAA,IAED,cAAciZ,GAAY;AAAA,IAC1B,gBAAgBA,GAAY;AAAA,EAE9B;AAEA;AAEAE,GAAU,WAAW;AAAA,EAEpB,UAAwB,gBAAA3P,GAAe;AAAA,IACtC2P,GAAU,SAAS;AAAA,IACnB;AAAA,MACC,WAAW,EAAE,OAAO,EAAC;AAAA,MACrB,cAAc,EAAE,OAAO,KAAI;AAAA,MAC3B,uBAAuB,EAAE,OAAqB,oBAAIt2B,KAAS;AAAA,MAC3D,oBAAoB,EAAE,OAAO,KAAI;AAAA,MACjC,6BAA6B,EAAE,OAAqB,oBAAIA,KAAS;AAAA,MACjE,sBAAsB,EAAE,OAAqB,oBAAItB,GAAS,GAAG,CAAC,EAAE;AAAA,MAChE,oBAAoB,EAAE,OAAO,EAAC;AAAA,MAC9B,uBAAuB,EAAE,OAAO,KAAI;AAAA,MACpC,gCAAgC,EAAE,OAAqB,oBAAIsB,KAAS;AAAA,MACpE,aAAa,EAAE,OAAO,EAAC;AAAA,MACvB,gBAAgB,EAAE,OAAO,KAAI;AAAA,MAC7B,yBAAyB,EAAE,OAAqB,oBAAIA,KAAS;AAAA,MAC7D,gBAAgB,EAAE,OAAO,IAAG;AAAA,MAC5B,6BAA6B,EAAE,OAAO,IAAG;AAAA,MACzC,6BAA6B,EAAE,OAAO,IAAG;AAAA,MACzC,yBAAyB,EAAE,OAAO,KAAI;AAAA,MACtC,kCAAkC,EAAE,OAAqB,oBAAIA,KAAS;AAAA,MACtE,OAAO,EAAE,OAAO,EAAC;AAAA,MACjB,YAAY,EAAE,OAAqB,oBAAImd,GAAO,CAAQ,EAAE;AAAA,MACxD,eAAe,EAAE,OAAO,KAAI;AAAA,MAC5B,wBAAwB,EAAE,OAAqB,oBAAInd,KAAS;AAAA,MAC5D,gBAAgB,EAAE,OAAO,EAAC;AAAA,MAC1B,mBAAmB,EAAE,OAAO,KAAI;AAAA,MAChC,4BAA4B,EAAE,OAAqB,oBAAIA,KAAS;AAAA,MAChE,cAAc,EAAE,OAAO,EAAC;AAAA,MACxB,iBAAiB,EAAE,OAAO,KAAI;AAAA,MAC9B,0BAA0B,EAAE,OAAqB,oBAAIA,KAAS;AAAA,MAC9D,yBAAyB,EAAE,OAAqB,oBAAItB,KAAS;AAAA,MAC7D,wBAAwB,EAAE,OAAO,KAAI;AAAA,MACrC,WAAW,EAAE,OAAO,EAAC;AAAA,MACrB,cAAc,EAAE,OAAO,KAAI;AAAA,MAC3B,uBAAuB,EAAE,OAAqB,oBAAIsB,KAAS;AAAA,MAC3D,qBAAqB,EAAE,OAAO,EAAC;AAAA,MAC/B,kBAAkB,EAAE,OAAqB,oBAAImd,GAAO,CAAQ,EAAE;AAAA,MAC9D,eAAe,EAAE,OAAqB,oBAAIA,GAAO,GAAG,GAAG,GAAG;AAAA,MAC1D,kBAAkB,EAAE,OAAO,KAAI;AAAA,MAC/B,2BAA2B,EAAE,OAAqB,oBAAInd,KAAS;AAAA,MAC/D,mBAAmB,EAAE,OAAO,EAAC;AAAA,MAC7B,sBAAsB,EAAE,OAAO,KAAI;AAAA,MACnC,+BAA+B,EAAE,OAAqB,oBAAIA,KAAS;AAAA,MACnE,kBAAkB,EAAE,OAAqB,oBAAItB,KAAS;AAAA,MACtD,eAAe,EAAE,OAAO,KAAI;AAAA,MAC5B,wBAAwB,EAAE,OAAqB,oBAAIsB,KAAS;AAAA,IAC/D;AAAA,EACA,CAAE;AAAA,EAED,cAAco2B,GAAY;AAAA,EAC1B,gBAAgBA,GAAY;AAE7B;AAEA,MAAMG,KAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAC;AAE/B,SAASC,GAAiBxP,GAAUyP,GAAUC,GAAYC,GAAOC,GAASp3B,GAAOq3B,GAAqB;AAErG,QAAMC,IAAa,IAAI3Z,GAAO,CAAQ;AACtC,MAAI4Z,IAAav3B,MAAU,KAAO,IAAI,GAElCw3B,GACAC,GAEAC,IAAoB,MACpBC,IAA2B,GAC3BC,IAAqB;AAEzB,WAASC,EAAQC,GAAY7O,GAAQ;AAEpC,QAAI8O,IAAa,IACbC,IAAa/O,EAAM,YAAY,KAAOA,EAAM,aAAa;AAE7D,IAAK+O,KAAcA,EAAW,cAG7BA,KADiB/O,EAAM,uBAAuB,IACpBiO,IAAaD,GAAW,IAAKe,CAAU,IAI7DA,MAAe,OAEnBC,EAAUX,GAAYC,CAAU,IAErBS,KAAcA,EAAW,YAEpCC,EAAUD,GAAY,CAAC,GACvBD,IAAa;AAId,UAAMG,IAAuB1Q,EAAS,GAAG,wBAAuB;AAEhE,IAAK0Q,MAAyB,aAE7Bf,EAAM,QAAQ,MAAM,SAAU,GAAG,GAAG,GAAG,GAAGE,CAAkB,IAEjDa,MAAyB,iBAEpCf,EAAM,QAAQ,MAAM,SAAU,GAAG,GAAG,GAAG,GAAGE,CAAkB,IAIxD7P,EAAS,aAAauQ,MAE1BvQ,EAAS,MAAOA,EAAS,gBAAgBA,EAAS,gBAAgBA,EAAS,gBAAgB,GAIvFwQ,MAAgBA,EAAW,iBAAiBA,EAAW,YAAY7gC,OAElEsgC,MAAY,WAEhBA,IAAU,IAAIpT;AAAA,MACb,IAAImB,GAAa,GAAG,GAAG,CAAC;AAAA,MACxB,IAAIoC,GAAgB;AAAA,QACnB,MAAM;AAAA,QACN,UAAUZ,GAAe8P,GAAU,eAAe,QAAQ;AAAA,QAC1D,cAAcA,GAAU,eAAe;AAAA,QACvC,gBAAgBA,GAAU,eAAe;AAAA,QACzC,MAAM9iC;AAAA,QACN,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,KAAK;AAAA,MACX,CAAM;AAAA,IACN,GAEIyjC,EAAQ,SAAS,gBAAiB,QAAQ,GAC1CA,EAAQ,SAAS,gBAAiB,IAAI,GAEtCA,EAAQ,iBAAiB,SAAWjQ,GAAUyB,GAAOlc,GAAS;AAE7D,WAAK,YAAY,aAAcA,EAAO,WAAW;AAAA,IAElD,GAGA,OAAO,eAAgB0qB,EAAQ,UAAU,UAAU;AAAA,MAElD,KAAK,WAAY;AAEhB,eAAO,KAAK,SAAS,OAAO;AAAA,MAE7B;AAAA,IAEL,CAAK,GAEDL,EAAQ,OAAQK,CAAO,IAIxBA,EAAQ,SAAS,SAAS,OAAO,QAAQO,GACzCP,EAAQ,SAAS,SAAS,WAAW,QAAUO,EAAW,iBAAiBA,EAAW,0BAA0B,KAAU,KAAM,GAChIP,EAAQ,SAAS,SAAS,qBAAqB,QAAQxO,EAAM,sBAC7DwO,EAAQ,SAAS,SAAS,oBAAoB,QAAQxO,EAAM,qBAC5DwO,EAAQ,SAAS,aAAa5yB,GAAgB,YAAamzB,EAAW,UAAU,MAAOj8B,KAElF27B,MAAsBM,KAC1BL,MAA6BK,EAAW,WACxCJ,MAAuBpQ,EAAS,iBAEhCiQ,EAAQ,SAAS,cAAc,IAE/BC,IAAoBM,GACpBL,IAA2BK,EAAW,SACtCJ,IAAqBpQ,EAAS,cAI/BiQ,EAAQ,OAAO,UAAS,GAGxBK,EAAW,QAASL,GAASA,EAAQ,UAAUA,EAAQ,UAAU,GAAG,GAAG,IAAI,KAEhEO,KAAcA,EAAW,cAE/BR,MAAc,WAElBA,IAAY,IAAInT;AAAA,MACf,IAAIqJ,GAAe,GAAG,CAAC;AAAA,MACvB,IAAI9F,GAAgB;AAAA,QACnB,MAAM;AAAA,QACN,UAAUZ,GAAe8P,GAAU,WAAW,QAAQ;AAAA,QACtD,cAAcA,GAAU,WAAW;AAAA,QACnC,gBAAgBA,GAAU,WAAW;AAAA,QACrC,MAAM/iC;AAAA,QACN,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,KAAK;AAAA,MACX,CAAM;AAAA,IACN,GAEIyjC,EAAU,SAAS,gBAAiB,QAAQ,GAG5C,OAAO,eAAgBA,EAAU,UAAU,OAAO;AAAA,MAEjD,KAAK,WAAY;AAEhB,eAAO,KAAK,SAAS,IAAI;AAAA,MAE1B;AAAA,IAEL,CAAK,GAEDJ,EAAQ,OAAQI,CAAS,IAI1BA,EAAU,SAAS,SAAS,IAAI,QAAQQ,GACxCR,EAAU,SAAS,SAAS,oBAAoB,QAAQvO,EAAM,qBAC9DuO,EAAU,SAAS,aAAa3yB,GAAgB,YAAamzB,EAAW,UAAU,MAAOj8B,IAEpFi8B,EAAW,qBAAqB,MAEpCA,EAAW,aAAY,GAIxBR,EAAU,SAAS,SAAS,YAAY,MAAM,KAAMQ,EAAW,MAAM,IAEhEN,MAAsBM,KAC1BL,MAA6BK,EAAW,WACxCJ,MAAuBpQ,EAAS,iBAEhCgQ,EAAU,SAAS,cAAc,IAEjCE,IAAoBM,GACpBL,IAA2BK,EAAW,SACtCJ,IAAqBpQ,EAAS,cAI/BgQ,EAAU,OAAO,UAAS,GAG1BM,EAAW,QAASN,GAAWA,EAAU,UAAUA,EAAU,UAAU,GAAG,GAAG,IAAI;AAAA,EAInF;AAEA,WAASS,EAAUtzB,GAAO3E,GAAQ;AAEjC,IAAA2E,EAAM,OAAQoyB,IAAMxP,GAA2BC,CAAQ,CAAE,GAEzD2P,EAAM,QAAQ,MAAM,SAAUJ,GAAK,GAAGA,GAAK,GAAGA,GAAK,GAAG/2B,GAAOq3B,CAAkB;AAAA,EAEhF;AAEA,SAAO;AAAA,IAEN,eAAe,WAAY;AAE1B,aAAOC;AAAA,IAER;AAAA,IACA,eAAe,SAAW3yB,GAAO3E,IAAQ,GAAI;AAE5C,MAAAs3B,EAAW,IAAK3yB,CAAK,GACrB4yB,IAAav3B,GACbi4B,EAAUX,GAAYC,CAAU;AAAA,IAEjC;AAAA,IACA,eAAe,WAAY;AAE1B,aAAOA;AAAA,IAER;AAAA,IACA,eAAe,SAAWv3B,GAAQ;AAEjC,MAAAu3B,IAAav3B,GACbi4B,EAAUX,GAAYC,CAAU;AAAA,IAEjC;AAAA,IACA,QAAQM;AAAA,EAEV;AAEA;AAEA,SAASM,GAAoBxL,GAAI9E,GAAYnH,GAAYkM,GAAe;AAEvE,QAAMwL,IAAsBzL,EAAG,aAAcA,EAAG,kBAAkB,GAE5D0L,IAAYzL,EAAa,WAAW,OAAO/E,EAAW,IAAK,yBAAyB,GACpFyQ,IAAe1L,EAAa,YAAYyL,MAAc,MAEtDE,IAAgB,CAAA,GAEhBC,IAAeC,EAAoB,IAAI;AAC7C,MAAIC,IAAeF,GACfG,IAAc;AAElB,WAASC,EAAOvqB,GAAQiW,GAAUuU,GAASlqB,GAAUrR,GAAQ;AAE5D,QAAIw7B,IAAgB;AAEpB,QAAKR,GAAe;AAEnB,YAAMnB,IAAQ4B,EAAiBpqB,GAAUkqB,GAASvU,CAAQ;AAE1D,MAAKoU,MAAiBvB,MAErBuB,IAAevB,GACf6B,EAAuBN,EAAa,MAAM,IAI3CI,IAAgBG,EAAa5qB,GAAQM,GAAUkqB,GAASv7B,CAAK,GAExDw7B,KAAgBI,EAAW7qB,GAAQM,GAAUkqB,GAASv7B,CAAK;AAAA,IAEjE,OAAO;AAEN,YAAM67B,IAAc7U,EAAS,cAAc;AAE3C,OAAKoU,EAAa,aAAa/pB,EAAS,MACvC+pB,EAAa,YAAYG,EAAQ,MACjCH,EAAa,cAAcS,OAE3BT,EAAa,WAAW/pB,EAAS,IACjC+pB,EAAa,UAAUG,EAAQ,IAC/BH,EAAa,YAAYS,GAEzBL,IAAgB;AAAA,IAIlB;AAEA,IAAKx7B,MAAU,QAEdojB,EAAW,OAAQpjB,GAAOqvB,EAAG,oBAAoB,IAI7CmM,KAAiBH,OAErBA,IAAc,IAEdS,EAAuB/qB,GAAQiW,GAAUuU,GAASlqB,CAAQ,GAErDrR,MAAU,QAEdqvB,EAAG,WAAYA,EAAG,sBAAsBjM,EAAW,IAAKpjB,CAAK,EAAG,MAAM;AAAA,EAMzE;AAEA,WAAS+7B,IAA0B;AAElC,WAAKzM,EAAa,WAAkBD,EAAG,kBAAiB,IAEjD0L,EAAU,qBAAoB;AAAA,EAEtC;AAEA,WAASW,EAAuBM,GAAM;AAErC,WAAK1M,EAAa,WAAkBD,EAAG,gBAAiB2M,CAAG,IAEpDjB,EAAU,mBAAoBiB,CAAG;AAAA,EAEzC;AAEA,WAASC,EAAyBD,GAAM;AAEvC,WAAK1M,EAAa,WAAkBD,EAAG,kBAAmB2M,CAAG,IAEtDjB,EAAU,qBAAsBiB,CAAG;AAAA,EAE3C;AAEA,WAASP,EAAiBpqB,GAAUkqB,GAASvU,GAAW;AAEvD,UAAM6U,IAAc7U,EAAS,cAAc;AAE3C,QAAIkV,IAAajB,EAAe5pB,EAAS,EAAE;AAE3C,IAAK6qB,MAAe,WAEnBA,IAAa,CAAA,GACbjB,EAAe5pB,EAAS,EAAE,IAAK6qB;AAIhC,QAAIC,IAAWD,EAAYX,EAAQ,EAAE;AAErC,IAAKY,MAAa,WAEjBA,IAAW,CAAA,GACXD,EAAYX,EAAQ,EAAE,IAAKY;AAI5B,QAAItC,IAAQsC,EAAUN,CAAS;AAE/B,WAAKhC,MAAU,WAEdA,IAAQsB,EAAoBY,GAAyB,GACrDI,EAAUN,CAAS,IAAKhC,IAIlBA;AAAA,EAER;AAEA,WAASsB,EAAoBa,GAAM;AAElC,UAAMI,IAAgB,CAAA,GAChBC,IAAoB,CAAA,GACpBC,IAAoB,CAAA;AAE1B,aAAUn8B,IAAI,GAAGA,IAAI26B,GAAqB36B;AAEzC,MAAAi8B,EAAej8B,CAAC,IAAK,GACrBk8B,EAAmBl8B,CAAC,IAAK,GACzBm8B,EAAmBn8B,CAAC,IAAK;AAI1B,WAAO;AAAA;AAAA,MAGN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MAEX,eAAei8B;AAAA,MACf,mBAAmBC;AAAA,MACnB,mBAAmBC;AAAA,MACnB,QAAQN;AAAA,MACR,YAAY,CAAA;AAAA,MACZ,OAAO;AAAA,IAEV;AAAA,EAEC;AAEA,WAASL,EAAa5qB,GAAQM,GAAUkqB,GAASv7B,GAAQ;AAExD,UAAMu8B,IAAmBnB,EAAa,YAChCoB,IAAqBnrB,EAAS;AAEpC,QAAIorB,IAAgB;AAEpB,UAAMC,IAAoBnB,EAAQ,cAAa;AAE/C,eAAY30B,MAAQ81B;AAInB,UAFyBA,EAAmB91B,EAAI,EAE1B,YAAY,GAAI;AAErC,cAAM+1B,IAAkBJ,EAAkB31B,EAAI;AAC9C,YAAIg2B,KAAoBJ,EAAoB51B,EAAI;AAahD,YAXKg2B,OAAsB,WAErBh2B,OAAS,oBAAoBmK,EAAO,mBAAiB6rB,KAAoB7rB,EAAO,iBAChFnK,OAAS,mBAAmBmK,EAAO,kBAAgB6rB,KAAoB7rB,EAAO,iBAI/E4rB,MAAoB,UAEpBA,EAAgB,cAAcC,MAE9BA,MAAqBD,EAAgB,SAASC,GAAkB,KAAO,QAAO;AAEnF,QAAAH;AAAA,MAED;AAMD,WAFKrB,EAAa,kBAAkBqB,KAE/BrB,EAAa,UAAUp7B;AAAA,EAI7B;AAEA,WAAS47B,EAAW7qB,GAAQM,GAAUkqB,GAASv7B,GAAQ;AAEtD,UAAM2d,IAAQ,CAAA,GACRyF,IAAa/R,EAAS;AAC5B,QAAIorB,IAAgB;AAEpB,UAAMC,IAAoBnB,EAAQ,cAAa;AAE/C,eAAY30B,MAAQ81B;AAInB,UAFyBA,EAAmB91B,EAAI,EAE1B,YAAY,GAAI;AAErC,YAAI9D,IAAYsgB,EAAYxc,EAAI;AAEhC,QAAK9D,MAAc,WAEb8D,OAAS,oBAAoBmK,EAAO,mBAAiBjO,IAAYiO,EAAO,iBACxEnK,OAAS,mBAAmBmK,EAAO,kBAAgBjO,IAAYiO,EAAO;AAI5E,cAAM3I,KAAO,CAAA;AACb,QAAAA,GAAK,YAAYtF,GAEZA,KAAaA,EAAU,SAE3BsF,GAAK,OAAOtF,EAAU,OAIvB6a,EAAO/W,EAAI,IAAKwB,IAEhBq0B;AAAA,MAED;AAID,IAAArB,EAAa,aAAazd,GAC1Byd,EAAa,gBAAgBqB,GAE7BrB,EAAa,QAAQp7B;AAAA,EAEtB;AAEA,WAAS68B,IAAiB;AAEzB,UAAMT,IAAgBhB,EAAa;AAEnC,aAAUj7B,IAAI,GAAGuQ,IAAK0rB,EAAc,QAAQj8B,IAAIuQ,GAAIvQ;AAEnD,MAAAi8B,EAAej8B,CAAC,IAAK;AAAA,EAIvB;AAEA,WAAS28B,EAAiBh6B,GAAY;AAErC,IAAAi6B,EAA2Bj6B,GAAW,CAAC;AAAA,EAExC;AAEA,WAASi6B,EAA2Bj6B,GAAWk6B,GAAmB;AAEjE,UAAMZ,IAAgBhB,EAAa,eAC7BiB,IAAoBjB,EAAa,mBACjCkB,IAAoBlB,EAAa;AAEvC,IAAAgB,EAAet5B,CAAS,IAAK,GAExBu5B,EAAmBv5B,CAAS,MAAO,MAEvCusB,EAAG,wBAAyBvsB,CAAS,GACrCu5B,EAAmBv5B,CAAS,IAAK,IAI7Bw5B,EAAmBx5B,CAAS,MAAOk6B,OAErB1N,EAAa,WAAWD,IAAK9E,EAAW,IAAK,wBAAwB,GAE5E+E,EAAa,WAAW,wBAAwB,0BAA0B,EAAIxsB,GAAWk6B,CAAgB,GACpHV,EAAmBx5B,CAAS,IAAKk6B;AAAA,EAInC;AAEA,WAASC,IAA0B;AAElC,UAAMb,IAAgBhB,EAAa,eAC7BiB,IAAoBjB,EAAa;AAEvC,aAAUj7B,IAAI,GAAGuQ,IAAK2rB,EAAkB,QAAQl8B,IAAIuQ,GAAIvQ;AAEvD,MAAKk8B,EAAmBl8B,CAAC,MAAOi8B,EAAej8B,CAAC,MAE/CkvB,EAAG,yBAA0BlvB,CAAC,GAC9Bk8B,EAAmBl8B,CAAC,IAAK;AAAA,EAM5B;AAEA,WAAS+8B,EAAqBl9B,GAAO6Q,GAAMjR,GAAMgiB,GAAYub,GAAQt6B,GAAQu6B,GAAU;AAEtF,IAAKA,MAAY,KAEhB/N,EAAG,qBAAsBrvB,GAAO6Q,GAAMjR,GAAMu9B,GAAQt6B,CAAM,IAI1DwsB,EAAG,oBAAqBrvB,GAAO6Q,GAAMjR,GAAMgiB,GAAYub,GAAQt6B,CAAM;AAAA,EAIvE;AAEA,WAASi5B,EAAuB/qB,GAAQiW,GAAUuU,GAASlqB,GAAW;AAErE,QAAKie,EAAa,aAAa,OAAWve,EAAO,mBAAmBM,EAAS,8BAEvEkZ,EAAW,IAAK,wBAAwB,MAAO;AAAO;AAI5D,IAAAsS,EAAc;AAEd,UAAML,IAAqBnrB,EAAS,YAE9BqrB,IAAoBnB,EAAQ,cAAa,GAEzC8B,IAAiCrW,EAAS;AAEhD,eAAYpgB,KAAQ81B,GAAoB;AAEvC,YAAMY,KAAmBZ,EAAmB91B,CAAI;AAEhD,UAAK02B,GAAiB,YAAY,GAAI;AAErC,YAAIV,IAAoBJ,EAAoB51B,CAAI;AAShD,YAPKg2B,MAAsB,WAErBh2B,MAAS,oBAAoBmK,EAAO,mBAAiB6rB,IAAoB7rB,EAAO,iBAChFnK,MAAS,mBAAmBmK,EAAO,kBAAgB6rB,IAAoB7rB,EAAO,iBAI/E6rB,MAAsB,QAAY;AAEtC,gBAAMhb,IAAagb,EAAkB,YAC/B/rB,KAAO+rB,EAAkB,UAEzB95B,KAAYsgB,EAAW,IAAKwZ,CAAiB;AAInD,cAAK95B,OAAc,OAAY;AAE/B,gBAAM8sB,KAAS9sB,GAAU,QACnBlD,KAAOkD,GAAU,MACjBy6B,KAAkBz6B,GAAU,iBAI5Bs6B,KAAY9N,EAAa,aAAa,OAAU1vB,OAASyvB,EAAG,OAAOzvB,OAASyvB,EAAG,gBAAgBuN,EAAkB,YAAYjiC;AAEnI,cAAKiiC,EAAkB,8BAA+B;AAErD,kBAAMx0B,KAAOw0B,EAAkB,MACzBO,IAAS/0B,GAAK,QACdvF,KAAS+5B,EAAkB;AAEjC,gBAAKx0B,GAAK,8BAA+B;AAExC,uBAAUjI,KAAI,GAAGA,KAAIm9B,GAAiB,cAAcn9B;AAEnD,gBAAA48B,EAA2BO,GAAiB,WAAWn9B,IAAGiI,GAAK,gBAAgB;AAIhF,cAAK2I,EAAO,oBAAoB,MAAQM,EAAS,sBAAsB,WAEtEA,EAAS,oBAAoBjJ,GAAK,mBAAmBA,GAAK;AAAA,YAI5D;AAEC,uBAAUjI,KAAI,GAAGA,KAAIm9B,GAAiB,cAAcn9B;AAEnD,gBAAA28B,EAAiBQ,GAAiB,WAAWn9B,EAAC;AAMhD,YAAAkvB,EAAG,WAAYA,EAAG,cAAcO,EAAM;AAEtC,qBAAUzvB,KAAI,GAAGA,KAAIm9B,GAAiB,cAAcn9B;AAEnD,cAAA+8B;AAAA,gBACCI,GAAiB,WAAWn9B;AAAA,gBAC5B0Q,KAAOysB,GAAiB;AAAA,gBACxB19B;AAAA,gBACAgiB;AAAA,gBACAub,IAASI;AAAA,iBACP16B,KAAWgO,KAAOysB,GAAiB,eAAiBn9B,MAAMo9B;AAAA,gBAC5DH;AAAA,cACR;AAAA,UAIK,OAAO;AAEN,gBAAKR,EAAkB,4BAA6B;AAEnD,uBAAUz8B,KAAI,GAAGA,KAAIm9B,GAAiB,cAAcn9B;AAEnD,gBAAA48B,EAA2BO,GAAiB,WAAWn9B,IAAGy8B,EAAkB,gBAAgB;AAI7F,cAAK7rB,EAAO,oBAAoB,MAAQM,EAAS,sBAAsB,WAEtEA,EAAS,oBAAoBurB,EAAkB,mBAAmBA,EAAkB;AAAA,YAItF;AAEC,uBAAUz8B,KAAI,GAAGA,KAAIm9B,GAAiB,cAAcn9B;AAEnD,gBAAA28B,EAAiBQ,GAAiB,WAAWn9B,EAAC;AAMhD,YAAAkvB,EAAG,WAAYA,EAAG,cAAcO,EAAM;AAEtC,qBAAUzvB,KAAI,GAAGA,KAAIm9B,GAAiB,cAAcn9B;AAEnD,cAAA+8B;AAAA,gBACCI,GAAiB,WAAWn9B;AAAA,gBAC5B0Q,KAAOysB,GAAiB;AAAA,gBACxB19B;AAAA,gBACAgiB;AAAA,gBACA/Q,KAAO0sB;AAAA,gBACL1sB,KAAOysB,GAAiB,eAAiBn9B,KAAIo9B;AAAA,gBAC/CH;AAAA,cACR;AAAA,UAIK;AAAA,QAED,WAAYC,MAAmC,QAAY;AAE1D,gBAAMv8B,IAAQu8B,EAAgCz2B,CAAI;AAElD,cAAK9F,MAAU;AAEd,oBAASA,EAAM,QAAM;AAAA,cAEpB,KAAK;AACJ,gBAAAuuB,EAAG,gBAAiBiO,GAAiB,UAAUx8B,CAAK;AACpD;AAAA,cAED,KAAK;AACJ,gBAAAuuB,EAAG,gBAAiBiO,GAAiB,UAAUx8B,CAAK;AACpD;AAAA,cAED,KAAK;AACJ,gBAAAuuB,EAAG,gBAAiBiO,GAAiB,UAAUx8B,CAAK;AACpD;AAAA,cAED;AACC,gBAAAuuB,EAAG,gBAAiBiO,GAAiB,UAAUx8B,CAAK;AAAA,YAE5D;AAAA,QAII;AAAA,MAED;AAAA,IAED;AAEA,IAAAm8B,EAAuB;AAAA,EAExB;AAEA,WAASO,IAAU;AAElB,IAAAC,EAAK;AAEL,eAAYC,KAAczC,GAAgB;AAEzC,YAAMiB,IAAajB,EAAeyC,CAAU;AAE5C,iBAAYC,KAAazB,GAAa;AAErC,cAAMC,IAAWD,EAAYyB,CAAS;AAEtC,mBAAY9B,KAAaM;AAExB,UAAAF,EAAyBE,EAAUN,CAAS,EAAG,MAAM,GAErD,OAAOM,EAAUN,CAAS;AAI3B,eAAOK,EAAYyB,CAAS;AAAA,MAE7B;AAEA,aAAO1C,EAAeyC,CAAU;AAAA,IAEjC;AAAA,EAED;AAEA,WAASE,EAAyBvsB,GAAW;AAE5C,QAAK4pB,EAAe5pB,EAAS,EAAE,MAAO,OAAY;AAElD,UAAM6qB,IAAajB,EAAe5pB,EAAS,EAAE;AAE7C,eAAYssB,KAAazB,GAAa;AAErC,YAAMC,IAAWD,EAAYyB,CAAS;AAEtC,iBAAY9B,KAAaM;AAExB,QAAAF,EAAyBE,EAAUN,CAAS,EAAG,MAAM,GAErD,OAAOM,EAAUN,CAAS;AAI3B,aAAOK,EAAYyB,CAAS;AAAA,IAE7B;AAEA,WAAO1C,EAAe5pB,EAAS,EAAE;AAAA,EAElC;AAEA,WAASwsB,EAAwBtC,GAAU;AAE1C,eAAYmC,KAAczC,GAAgB;AAEzC,YAAMiB,IAAajB,EAAeyC,CAAU;AAE5C,UAAKxB,EAAYX,EAAQ,EAAE,MAAO,OAAY;AAE9C,YAAMY,IAAWD,EAAYX,EAAQ,EAAE;AAEvC,iBAAYM,KAAaM;AAExB,QAAAF,EAAyBE,EAAUN,CAAS,EAAG,MAAM,GAErD,OAAOM,EAAUN,CAAS;AAI3B,aAAOK,EAAYX,EAAQ,EAAE;AAAA,IAE9B;AAAA,EAED;AAEA,WAASkC,IAAQ;AAKhB,IAHAK,GAAiB,GACjBzC,IAAc,IAETD,MAAiBF,MAEtBE,IAAeF,GACfQ,EAAuBN,EAAa,MAAM;AAAA,EAE3C;AAIA,WAAS0C,KAAoB;AAE5B,IAAA5C,EAAa,WAAW,MACxBA,EAAa,UAAU,MACvBA,EAAa,YAAY;AAAA,EAE1B;AAEA,SAAO;AAAA,IAEN,OAAOI;AAAA,IACP,OAAOmC;AAAA,IACP,mBAAmBK;AAAA,IACnB,SAASN;AAAA,IACT,yBAAyBI;AAAA,IACzB,wBAAwBC;AAAA,IAExB,gBAAgBhB;AAAA,IAChB,iBAAiBC;AAAA,IACjB,yBAAyBG;AAAA,EAE3B;AAEA;AAEA,SAASc,GAAqB1O,GAAI9E,GAAYyT,GAAM1O,GAAe;AAElE,QAAMC,IAAWD,EAAa;AAE9B,MAAI2O;AAEJ,WAASC,EAASp9B,GAAQ;AAEzB,IAAAm9B,IAAOn9B;AAAA,EAER;AAEA,WAASy5B,EAAQ1Y,GAAOC,GAAQ;AAE/B,IAAAuN,EAAG,WAAY4O,GAAMpc,GAAOC,CAAK,GAEjCkc,EAAK,OAAQlc,GAAOmc,GAAM,CAAC;AAAA,EAE5B;AAEA,WAASE,EAAiBtc,GAAOC,GAAOsc,GAAY;AAEnD,QAAKA,MAAc,EAAI;AAEvB,QAAIrD,GAAWsD;AAEf,QAAK9O;AAEJ,MAAAwL,IAAY1L,GACZgP,IAAa;AAAA,aAIbtD,IAAYxQ,EAAW,IAAK,wBAAwB,GACpD8T,IAAa,4BAERtD,MAAc,MAAO;AAEzB,cAAQ,MAAO,gIAAgI;AAC/I;AAAA,IAED;AAID,IAAAA,EAAWsD,CAAU,EAAIJ,GAAMpc,GAAOC,GAAOsc,CAAS,GAEtDJ,EAAK,OAAQlc,GAAOmc,GAAMG,CAAS;AAAA,EAEpC;AAEA,WAASE,EAAiBC,GAAQC,GAAQC,GAAY;AAErD,QAAKA,MAAc,EAAI;AAEvB,UAAM1D,IAAYxQ,EAAW,IAAK,kBAAkB;AACpD,QAAKwQ,MAAc;AAElB,eAAU56B,IAAI,GAAGA,IAAIs+B,GAAWt+B;AAE/B,aAAK,OAAQo+B,EAAQp+B,CAAC,GAAIq+B,EAAQr+B,EAAG;AAAA,SAIhC;AAEN,MAAA46B,EAAU,qBAAsBkD,GAAMM,GAAQ,GAAGC,GAAQ,GAAGC,CAAS;AAErE,UAAIC,IAAe;AACnB,eAAUv+B,IAAI,GAAGA,IAAIs+B,GAAWt+B;AAE/B,QAAAu+B,KAAgBF,EAAQr+B,CAAC;AAI1B,MAAA69B,EAAK,OAAQU,GAAcT,GAAM,CAAC;AAAA,IAEnC;AAAA,EAED;AAIA,OAAK,UAAUC,GACf,KAAK,SAAS3D,GACd,KAAK,kBAAkB4D,GACvB,KAAK,kBAAkBG;AAExB;AAEA,SAASK,GAAmBtP,GAAI9E,GAAYzN,GAAa;AAExD,MAAI8hB;AAEJ,WAASC,IAAmB;AAE3B,QAAKD,MAAkB,OAAY,QAAOA;AAE1C,QAAKrU,EAAW,IAAK,gCAAgC,MAAO,IAAO;AAElE,YAAMwQ,IAAYxQ,EAAW,IAAK,gCAAgC;AAElE,MAAAqU,IAAgBvP,EAAG,aAAc0L,EAAU,8BAA8B;AAAA,IAE1E;AAEC,MAAA6D,IAAgB;AAIjB,WAAOA;AAAA,EAER;AAEA,WAASE,EAAiBC,GAAY;AAErC,QAAKA,MAAc,SAAU;AAE5B,UAAK1P,EAAG,yBAA0BA,EAAG,eAAeA,EAAG,UAAU,EAAG,YAAY,KAC/EA,EAAG,yBAA0BA,EAAG,iBAAiBA,EAAG,UAAU,EAAG,YAAY;AAE7E,eAAO;AAIR,MAAA0P,IAAY;AAAA,IAEb;AAEA,WAAKA,MAAc,aAEb1P,EAAG,yBAA0BA,EAAG,eAAeA,EAAG,YAAY,EAAG,YAAY,KACjFA,EAAG,yBAA0BA,EAAG,iBAAiBA,EAAG,YAAY,EAAG,YAAY,IAExE,YAMF;AAAA,EAER;AAEA,QAAME,IAAW,OAAO,yBAA2B,OAAeF,EAAG,YAAY,SAAS;AAE1F,MAAI0P,IAAYjiB,EAAW,cAAc,SAAYA,EAAW,YAAY;AAC5E,QAAMkiB,IAAeF,EAAiBC,CAAS;AAE/C,EAAKC,MAAiBD,MAErB,QAAQ,KAAM,wBAAwBA,GAAW,wBAAwBC,GAAc,UAAU,GACjGD,IAAYC;AAIb,QAAMC,IAAc1P,KAAYhF,EAAW,IAAK,oBAAoB,GAE9D2U,IAAyBpiB,EAAW,2BAA2B,IAE/DqiB,IAAc9P,EAAG,aAAcA,EAAG,uBAAuB,GACzD+P,IAAoB/P,EAAG,aAAcA,EAAG,8BAA8B,GACtEgQ,IAAiBhQ,EAAG,aAAcA,EAAG,gBAAgB,GACrDiQ,IAAiBjQ,EAAG,aAAcA,EAAG,yBAAyB,GAE9DkQ,IAAgBlQ,EAAG,aAAcA,EAAG,kBAAkB,GACtDmQ,IAAoBnQ,EAAG,aAAcA,EAAG,0BAA0B,GAClEoQ,IAAcpQ,EAAG,aAAcA,EAAG,mBAAmB,GACrDqQ,IAAsBrQ,EAAG,aAAcA,EAAG,4BAA4B,GAEtEsQ,IAAiBP,IAAoB,GACrCQ,IAAwBrQ,KAAYhF,EAAW,IAAK,mBAAmB,GACvEsV,IAAsBF,KAAkBC,GAExCE,IAAavQ,IAAWF,EAAG,aAAcA,EAAG,WAAW,IAAK;AAElE,SAAO;AAAA,IAEN,UAAUE;AAAA,IAEV,aAAa0P;AAAA,IAEb,kBAAkBJ;AAAA,IAClB,iBAAiBC;AAAA,IAEjB,WAAWC;AAAA,IACX,wBAAwBG;AAAA,IAExB,aAAaC;AAAA,IACb,mBAAmBC;AAAA,IACnB,gBAAgBC;AAAA,IAChB,gBAAgBC;AAAA,IAEhB,eAAeC;AAAA,IACf,mBAAmBC;AAAA,IACnB,aAAaC;AAAA,IACb,qBAAqBC;AAAA,IAErB,gBAAgBC;AAAA,IAChB,uBAAuBC;AAAA,IACvB,qBAAqBC;AAAA,IAErB,YAAYC;AAAA,EAEd;AAEA;AAEA,SAASC,GAAeC,GAAa;AAEpC,QAAM1X,IAAQ;AAEd,MAAI2X,IAAc,MACjBC,IAAkB,GAClBC,IAAuB,IACvBC,IAAmB;AAEpB,QAAM1uB,IAAQ,IAAIkb,GAAK,GACtByT,IAAmB,IAAIn9B,GAAO,GAE9Bo9B,IAAU,EAAE,OAAO,MAAM,aAAa,GAAK;AAE5C,OAAK,UAAUA,GACf,KAAK,YAAY,GACjB,KAAK,kBAAkB,GAEvB,KAAK,OAAO,SAAW7S,GAAQ8S,GAAsB;AAEpD,UAAMC,IACL/S,EAAO,WAAW,KAClB8S;AAAA;AAAA,IAGAL,MAAoB,KACpBC;AAED,WAAAA,IAAuBI,GAEvBL,IAAkBzS,EAAO,QAElB+S;AAAA,EAER,GAEA,KAAK,eAAe,WAAY;AAE/B,IAAAJ,IAAmB,IACnBK,EAAe,IAAI;AAAA,EAEpB,GAEA,KAAK,aAAa,WAAY;AAE7B,IAAAL,IAAmB;AAAA,EAEpB,GAEA,KAAK,iBAAiB,SAAW3S,GAAQhe,GAAS;AAEjD,IAAAwwB,IAAcQ,EAAehT,GAAQhe,GAAQ,CAAC;AAAA,EAE/C,GAEA,KAAK,WAAW,SAAWuX,GAAUvX,GAAQixB,GAAW;AAEvD,UAAMjT,IAASzG,EAAS,gBACvB2Z,IAAmB3Z,EAAS,kBAC5B4Z,IAAc5Z,EAAS,aAElB6Z,IAAqBb,EAAW,IAAKhZ,CAAQ;AAEnD,QAAK,CAAEmZ,KAAwB1S,MAAW,QAAQA,EAAO,WAAW,KAAK2S,KAAoB,CAAEQ;AAI9F,MAAKR,IAIJK,EAAe,IAAI,IAInBK,EAAgB;AAAA,SAIX;AAEN,YAAMC,IAAUX,IAAmB,IAAIF,GACtCc,IAAUD,IAAU;AAErB,UAAIE,IAAWJ,EAAmB,iBAAiB;AAEnD,MAAAP,EAAQ,QAAQW,GAEhBA,IAAWR,EAAehT,GAAQhe,GAAQuxB,GAASN,CAAQ;AAE3D,eAAUvgC,IAAI,GAAGA,MAAM6gC,GAAS,EAAG7gC;AAElC,QAAA8gC,EAAU9gC,CAAC,IAAK8/B,EAAa9/B,CAAC;AAI/B,MAAA0gC,EAAmB,gBAAgBI,GACnC,KAAK,kBAAkBN,IAAmB,KAAK,YAAY,GAC3D,KAAK,aAAaI;AAAA,IAEnB;AAAA,EAGD;AAEA,WAASD,IAAmB;AAE3B,IAAKR,EAAQ,UAAUL,MAEtBK,EAAQ,QAAQL,GAChBK,EAAQ,cAAcJ,IAAkB,IAIzC5X,EAAM,YAAY4X,GAClB5X,EAAM,kBAAkB;AAAA,EAEzB;AAEA,WAASmY,EAAehT,GAAQhe,GAAQpE,GAAW61B,GAAgB;AAElE,UAAMC,IAAU1T,MAAW,OAAOA,EAAO,SAAS;AAClD,QAAIwT,IAAW;AAEf,QAAKE,MAAY,GAAI;AAIpB,UAFAF,IAAWX,EAAQ,OAEdY,MAAkB,MAAQD,MAAa,MAAO;AAElD,cAAMG,IAAW/1B,IAAY81B,IAAU,GACtCE,IAAa5xB,EAAO;AAErB,QAAA4wB,EAAiB,gBAAiBgB,CAAU,IAEvCJ,MAAa,QAAQA,EAAS,SAASG,OAE3CH,IAAW,IAAI,aAAcG,CAAQ;AAItC,iBAAUjhC,IAAI,GAAGmhC,IAAKj2B,GAAWlL,MAAMghC,GAAS,EAAGhhC,GAAGmhC,KAAM;AAE3D,UAAA5vB,EAAM,KAAM+b,EAAQttB,CAAC,CAAE,EAAG,aAAckhC,GAAYhB,CAAgB,GAEpE3uB,EAAM,OAAO,QAASuvB,GAAUK,CAAE,GAClCL,EAAUK,IAAK,CAAC,IAAK5vB,EAAM;AAAA,MAI7B;AAEA,MAAA4uB,EAAQ,QAAQW,GAChBX,EAAQ,cAAc;AAAA,IAEvB;AAEA,WAAAhY,EAAM,YAAY6Y,GAClB7Y,EAAM,kBAAkB,GAEjB2Y;AAAA,EAER;AAED;AAEA,SAASM,GAAerX,GAAW;AAElC,MAAIyP,IAAW,oBAAI,QAAO;AAE1B,WAAS6H,EAAmBpV,GAAStjB,GAAU;AAE9C,WAAKA,MAAYnP,KAEhByyB,EAAQ,UAAU3yB,KAEPqP,MAAYlP,OAEvBwyB,EAAQ,UAAU1yB,KAIZ0yB;AAAA,EAER;AAEA,WAAS6D,EAAK7D,GAAU;AAEvB,QAAKA,KAAWA,EAAQ,WAAY;AAEnC,YAAMtjB,IAAUsjB,EAAQ;AAExB,UAAKtjB,MAAYnP,MAAoCmP,MAAYlP;AAEhE,YAAK+/B,EAAS,IAAKvN,IAAY;AAE9B,gBAAMqV,IAAU9H,EAAS,IAAKvN,CAAO,EAAG;AACxC,iBAAOoV,EAAmBC,GAASrV,EAAQ,OAAO;AAAA,QAEnD,OAAO;AAEN,gBAAMnkB,IAAQmkB,EAAQ;AAEtB,cAAKnkB,KAASA,EAAM,SAAS,GAAI;AAEhC,kBAAMkjB,IAAe,IAAIgB,GAAuBlkB,EAAM,SAAS,CAAC;AAChE,mBAAAkjB,EAAa,2BAA4BjB,GAAUkC,CAAO,GAC1DuN,EAAS,IAAKvN,GAASjB,CAAY,GAEnCiB,EAAQ,iBAAkB,WAAWsV,CAAgB,GAE9CF,EAAmBrW,EAAa,SAASiB,EAAQ,OAAO;AAAA,UAEhE;AAIC,mBAAO;AAAA,QAIT;AAAA,IAIF;AAEA,WAAOA;AAAA,EAER;AAEA,WAASsV,EAAkBzhC,GAAQ;AAElC,UAAMmsB,IAAUnsB,EAAM;AAEtB,IAAAmsB,EAAQ,oBAAqB,WAAWsV,CAAgB;AAExD,UAAMD,IAAU9H,EAAS,IAAKvN,CAAO;AAErC,IAAKqV,MAAY,WAEhB9H,EAAS,OAAQvN,CAAO,GACxBqV,EAAQ,QAAO;AAAA,EAIjB;AAEA,WAASjE,IAAU;AAElB,IAAA7D,IAAW,oBAAI,QAAO;AAAA,EAEvB;AAEA,SAAO;AAAA,IACN,KAAK1J;AAAA,IACL,SAASuN;AAAA,EACX;AAEA;AAEA,MAAMmE,WAA2BnX,GAAO;AAAA,EAEvC,YAAatQ,IAAO,IAAKC,IAAQ,GAAGC,IAAM,GAAGC,IAAS,IAAKC,IAAO,KAAKC,IAAM,KAAO;AAEnF,UAAK,GAEL,KAAK,uBAAuB,IAE5B,KAAK,OAAO,sBAEZ,KAAK,OAAO,GACZ,KAAK,OAAO,MAEZ,KAAK,OAAOL,GACZ,KAAK,QAAQC,GACb,KAAK,MAAMC,GACX,KAAK,SAASC,GAEd,KAAK,OAAOC,GACZ,KAAK,MAAMC,GAEX,KAAK,uBAAsB;AAAA,EAE5B;AAAA,EAEA,KAAMlR,GAAQyU,GAAY;AAEzB,iBAAM,KAAMzU,GAAQyU,CAAS,GAE7B,KAAK,OAAOzU,EAAO,MACnB,KAAK,QAAQA,EAAO,OACpB,KAAK,MAAMA,EAAO,KAClB,KAAK,SAASA,EAAO,QACrB,KAAK,OAAOA,EAAO,MACnB,KAAK,MAAMA,EAAO,KAElB,KAAK,OAAOA,EAAO,MACnB,KAAK,OAAOA,EAAO,SAAS,OAAO,OAAO,OAAO,OAAQ,IAAIA,EAAO,IAAI,GAEjE;AAAA,EAER;AAAA,EAEA,cAAeyhB,GAAWC,GAAY1pB,GAAGC,GAAGsJ,GAAOC,GAAS;AAE3D,IAAK,KAAK,SAAS,SAElB,KAAK,OAAO;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,IACZ,IAIE,KAAK,KAAK,UAAU,IACpB,KAAK,KAAK,YAAYigB,GACtB,KAAK,KAAK,aAAaC,GACvB,KAAK,KAAK,UAAU1pB,GACpB,KAAK,KAAK,UAAUC,GACpB,KAAK,KAAK,QAAQsJ,GAClB,KAAK,KAAK,SAASC,GAEnB,KAAK,uBAAsB;AAAA,EAE5B;AAAA,EAEA,kBAAkB;AAEjB,IAAK,KAAK,SAAS,SAElB,KAAK,KAAK,UAAU,KAIrB,KAAK,uBAAsB;AAAA,EAE5B;AAAA,EAEA,yBAAyB;AAExB,UAAMrI,KAAO,KAAK,QAAQ,KAAK,SAAW,IAAI,KAAK,OAC7CC,KAAO,KAAK,MAAM,KAAK,WAAa,IAAI,KAAK,OAC7C6D,KAAO,KAAK,QAAQ,KAAK,QAAS,GAClCC,KAAO,KAAK,MAAM,KAAK,UAAW;AAExC,QAAI2T,IAAO5T,IAAK9D,GACZ2X,IAAQ7T,IAAK9D,GACb4X,IAAM7T,IAAK9D,GACX4X,IAAS9T,IAAK9D;AAElB,QAAK,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAU;AAE9C,YAAMm/B,KAAW,KAAK,QAAQ,KAAK,QAAS,KAAK,KAAK,YAAY,KAAK,MACjEC,KAAW,KAAK,MAAM,KAAK,UAAW,KAAK,KAAK,aAAa,KAAK;AAExE,MAAA3nB,KAAQ0nB,IAAS,KAAK,KAAK,SAC3BznB,IAAQD,IAAO0nB,IAAS,KAAK,KAAK,OAClCxnB,KAAOynB,IAAS,KAAK,KAAK,SAC1BxnB,IAASD,IAAMynB,IAAS,KAAK,KAAK;AAAA,IAEnC;AAEA,SAAK,iBAAiB,iBAAkB3nB,GAAMC,GAAOC,GAAKC,GAAQ,KAAK,MAAM,KAAK,KAAK,KAAK,gBAAgB,GAE5G,KAAK,wBAAwB,KAAM,KAAK,gBAAgB,EAAG,OAAM;AAAA,EAElE;AAAA,EAEA,OAAQ9R,GAAO;AAEd,UAAMH,IAAO,MAAM,OAAQG,CAAI;AAE/B,WAAAH,EAAK,OAAO,OAAO,KAAK,MACxBA,EAAK,OAAO,OAAO,KAAK,MACxBA,EAAK,OAAO,QAAQ,KAAK,OACzBA,EAAK,OAAO,MAAM,KAAK,KACvBA,EAAK,OAAO,SAAS,KAAK,QAC1BA,EAAK,OAAO,OAAO,KAAK,MACxBA,EAAK,OAAO,MAAM,KAAK,KAElB,KAAK,SAAS,SAAOA,EAAK,OAAO,OAAO,OAAO,OAAQ,IAAI,KAAK,IAAI,IAElEA;AAAA,EAER;AAED;AAEA,MAAM05B,KAAU,GAMVC,KAAkB,CAAE,OAAO,OAAO,MAAM,OAAO,OAAO,KAAK,GAI3DC,KAAc,IAEdC,KAA4B,oBAAIN,GAAkB,GAClDO,KAA4B,oBAAI7hB,GAAK;AAC3C,IAAI8hB,KAAa,MACbC,KAAqB,GACrBC,KAAwB;AAG5B,MAAMC,MAAQ,IAAI,KAAK,KAAM,CAAC,KAAO,GAC/BC,KAAU,IAAID,IAIdE,KAAkB;AAAA,EACT,oBAAIzzB,EAAS,GAAG,GAAG,CAAC;AAAA,EACpB,oBAAIA,EAAS,IAAK,GAAG,CAAC;AAAA,EACtB,oBAAIA,EAAS,GAAG,GAAG,EAAG;AAAA,EACtB,oBAAIA,EAAS,IAAK,GAAG,EAAG;AAAA,EACxB,oBAAIA,EAAS,GAAGuzB,IAAKC,EAAO;AAAA,EAC5B,oBAAIxzB,EAAS,GAAGuzB,IAAK,CAAEC,EAAO;AAAA,EAC9B,oBAAIxzB,EAASwzB,IAAS,GAAGD,EAAG;AAAA,EAC5B,oBAAIvzB,EAAS,CAAEwzB,IAAS,GAAGD,EAAG;AAAA,EAC9B,oBAAIvzB,EAASuzB,IAAKC,IAAS,CAAC;AAAA,EAC5B,oBAAIxzB,EAAS,CAAEuzB,IAAKC,IAAS,CAAC;AAAE;AAiB/C,MAAME,GAAe;AAAA,EAEpB,YAAavY,GAAW;AAEvB,SAAK,YAAYA,GACjB,KAAK,wBAAwB,MAE7B,KAAK,UAAU,GACf,KAAK,YAAY,GACjB,KAAK,aAAa,CAAA,GAClB,KAAK,YAAY,CAAA,GACjB,KAAK,UAAU,CAAA,GAEf,KAAK,gBAAgB,MACrB,KAAK,mBAAmB,MACxB,KAAK,oBAAoB,MAEzB,KAAK,iBAAkB,KAAK,aAAa;AAAA,EAE1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAWyB,GAAO+W,IAAQ,GAAGpoB,IAAO,KAAKC,IAAM,KAAM;AAEpD,IAAA4nB,KAAa,KAAK,UAAU,gBAAe,GAC3CC,KAAqB,KAAK,UAAU,kBAAiB,GACrDC,KAAwB,KAAK,UAAU,qBAAoB,GAE3D,KAAK,SAAU,GAAG;AAElB,UAAMM,IAAqB,KAAK,iBAAgB;AAChD,WAAAA,EAAmB,cAAc,IAEjC,KAAK,eAAgBhX,GAAOrR,GAAMC,GAAKooB,CAAkB,GAEpDD,IAAQ,KAEZ,KAAK,MAAOC,GAAoB,GAAG,GAAGD,CAAK,GAI5C,KAAK,YAAaC,CAAkB,GACpC,KAAK,SAAUA,CAAkB,GAE1BA;AAAA,EAER;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,oBAAqBC,GAAiBzX,IAAe,MAAO;AAE3D,WAAO,KAAK,aAAcyX,GAAiBzX,CAAY;AAAA,EAExD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,YAAasW,GAAStW,IAAe,MAAO;AAE3C,WAAO,KAAK,aAAcsW,GAAStW,CAAY;AAAA,EAEhD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB;AAEtB,IAAK,KAAK,qBAAqB,SAE9B,KAAK,mBAAmB0X,GAAmB,GAC3C,KAAK,iBAAkB,KAAK,gBAAgB;AAAA,EAI9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,+BAA+B;AAE9B,IAAK,KAAK,sBAAsB,SAE/B,KAAK,oBAAoBC,GAAoB,GAC7C,KAAK,iBAAkB,KAAK,iBAAiB;AAAA,EAI/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU;AAET,SAAK,SAAQ,GAER,KAAK,qBAAqB,QAAO,KAAK,iBAAiB,QAAO,GAC9D,KAAK,sBAAsB,QAAO,KAAK,kBAAkB,QAAO;AAAA,EAEtE;AAAA;AAAA,EAIA,SAAUC,GAAW;AAEpB,SAAK,UAAU,KAAK,MAAO,KAAK,KAAMA,EAAU,GAChD,KAAK,YAAY,KAAK,IAAK,GAAG,KAAK,OAAO;AAAA,EAE3C;AAAA,EAEA,WAAW;AAEV,IAAK,KAAK,kBAAkB,QAAO,KAAK,cAAc,QAAO,GAExD,KAAK,0BAA0B,QAAO,KAAK,sBAAsB,QAAO;AAE7E,aAAU5iC,IAAI,GAAGA,IAAI,KAAK,WAAW,QAAQA;AAE5C,WAAK,WAAYA,CAAC,EAAG,QAAO;AAAA,EAI9B;AAAA,EAEA,SAAU6iC,GAAe;AAExB,SAAK,UAAU,gBAAiBb,IAAYC,IAAoBC,EAAqB,GACrFW,EAAa,cAAc,IAC3BC,GAAcD,GAAc,GAAG,GAAGA,EAAa,OAAOA,EAAa,MAAM;AAAA,EAE1E;AAAA,EAEA,aAAc5W,GAASjB,GAAe;AAErC,IAAKiB,EAAQ,YAAY3yB,MAAyB2yB,EAAQ,YAAY1yB,KAErE,KAAK,SAAU0yB,EAAQ,MAAM,WAAW,IAAI,KAAOA,EAAQ,MAAO,CAAC,EAAG,SAASA,EAAQ,MAAO,GAAI,MAAM,KAAO,IAI/G,KAAK,SAAUA,EAAQ,MAAM,QAAQ,CAAC,GAIvC+V,KAAa,KAAK,UAAU,gBAAe,GAC3CC,KAAqB,KAAK,UAAU,kBAAiB,GACrDC,KAAwB,KAAK,UAAU,qBAAoB;AAE3D,UAAMM,IAAqBxX,KAAgB,KAAK,iBAAgB;AAChE,gBAAK,iBAAkBiB,GAASuW,CAAkB,GAClD,KAAK,YAAaA,CAAkB,GACpC,KAAK,SAAUA,CAAkB,GAE1BA;AAAA,EAER;AAAA,EAEA,mBAAmB;AAElB,UAAM/3B,IAAQ,IAAI,KAAK,IAAK,KAAK,WAAW,GAAM,GAC5CC,IAAS,IAAI,KAAK,WAElBq4B,IAAS;AAAA,MACd,WAAW9oC;AAAA,MACX,WAAWA;AAAA,MACX,iBAAiB;AAAA,MACjB,MAAMU;AAAA,MACN,QAAQK;AAAA,MACR,YAAYkD;AAAA,MACZ,aAAa;AAAA,IAChB,GAEQskC,IAAqBQ,GAAqBv4B,GAAOC,GAAQq4B,CAAM;AAErE,QAAK,KAAK,0BAA0B,QAAQ,KAAK,sBAAsB,UAAUt4B,KAAS,KAAK,sBAAsB,WAAWC,GAAS;AAExI,MAAK,KAAK,0BAA0B,QAEnC,KAAK,SAAQ,GAId,KAAK,wBAAwBs4B,GAAqBv4B,GAAOC,GAAQq4B,CAAM;AAEvE,YAAM,EAAE,SAAAE,EAAO,IAAK;AACpB,OAAE,EAAE,UAAU,KAAK,WAAW,WAAW,KAAK,YAAY,QAAQ,KAAK,YAAYC,GAAeD,CAAO,IAEzG,KAAK,gBAAgBE,GAAgBF,GAASx4B,GAAOC,CAAM;AAAA,IAE5D;AAEA,WAAO83B;AAAA,EAER;AAAA,EAEA,iBAAkB3b,GAAW;AAE5B,UAAMuc,IAAU,IAAIxc,GAAM,KAAK,WAAY,CAAC,GAAIC,CAAQ;AACxD,SAAK,UAAU,QAASuc,GAAStB,EAAW;AAAA,EAE7C;AAAA,EAEA,eAAgBtW,GAAOrR,GAAMC,GAAKooB,GAAqB;AAItD,UAAMa,IAAa,IAAI/Y,GAAmB,IAAK,GAAQnQ,GAAMC,CAAG,GAC1DkpB,IAAS,CAAE,GAAG,IAAK,GAAG,GAAG,GAAG,CAAC,GAC7BC,IAAc,CAAE,GAAG,GAAG,GAAG,IAAK,IAAK,EAAG,GACtCxZ,IAAW,KAAK,WAEhByZ,IAAoBzZ,EAAS,WAC7B0Z,IAAc1Z,EAAS;AAC7B,IAAAA,EAAS,cAAegY,EAAW,GAEnChY,EAAS,cAAcjxB,IACvBixB,EAAS,YAAY;AAErB,UAAM2Z,IAAqB,IAAItiB,GAAmB;AAAA,MACjD,MAAM;AAAA,MACN,MAAM7qB;AAAA,MACN,YAAY;AAAA,MACZ,WAAW;AAAA,IACd,CAAG,GAEKotC,IAAgB,IAAI/c,GAAM,IAAImB,GAAW,GAAI2b,CAAkB;AAErE,QAAIE,IAAgB;AACpB,UAAMrJ,IAAa/O,EAAM;AAEzB,IAAK+O,IAECA,EAAW,YAEfmJ,EAAmB,MAAM,KAAMnJ,CAAU,GACzC/O,EAAM,aAAa,MACnBoY,IAAgB,OAMjBF,EAAmB,MAAM,KAAM3B,EAAW,GAC1C6B,IAAgB;AAIjB,aAAU5jC,IAAI,GAAGA,IAAI,GAAGA,KAAO;AAE9B,YAAM6jC,IAAM7jC,IAAI;AAEhB,MAAK6jC,MAAQ,KAEZR,EAAW,GAAG,IAAK,GAAGC,EAAQtjC,CAAC,GAAI,CAAC,GACpCqjC,EAAW,OAAQE,EAAavjC,CAAC,GAAI,GAAG,CAAC,KAE9B6jC,MAAQ,KAEnBR,EAAW,GAAG,IAAK,GAAG,GAAGC,EAAQtjC,EAAG,GACpCqjC,EAAW,OAAQ,GAAGE,EAAavjC,CAAC,GAAI,CAAC,MAIzCqjC,EAAW,GAAG,IAAK,GAAGC,EAAQtjC,CAAC,GAAI,CAAC,GACpCqjC,EAAW,OAAQ,GAAG,GAAGE,EAAavjC,CAAC,CAAE;AAI1C,YAAM0Q,IAAO,KAAK;AAElB,MAAAoyB,GAAcN,GAAoBqB,IAAMnzB,GAAM1Q,IAAI,IAAI0Q,IAAO,GAAGA,GAAMA,CAAI,GAE1EqZ,EAAS,gBAAiByY,CAAkB,GAEvCoB,KAEJ7Z,EAAS,OAAQ4Z,GAAeN,CAAU,GAI3CtZ,EAAS,OAAQyB,GAAO6X,CAAU;AAAA,IAEnC;AAEA,IAAAM,EAAc,SAAS,QAAO,GAC9BA,EAAc,SAAS,QAAO,GAE9B5Z,EAAS,cAAc0Z,GACvB1Z,EAAS,YAAYyZ,GACrBhY,EAAM,aAAa+O;AAAA,EAEpB;AAAA,EAEA,iBAAkBtO,GAASuW,GAAqB;AAE/C,UAAMzY,IAAW,KAAK,WAEhB+Z,IAAkB7X,EAAQ,YAAY3yB,MAAyB2yB,EAAQ,YAAY1yB;AAEzF,IAAKuqC,KAEC,KAAK,qBAAqB,SAE9B,KAAK,mBAAmBpB,GAAmB,IAI5C,KAAK,iBAAiB,SAAS,WAAW,QAAUzW,EAAQ,0BAA0B,KAAU,KAAM,KAIjG,KAAK,sBAAsB,SAE/B,KAAK,oBAAoB0W,GAAoB;AAM/C,UAAM9b,IAAWid,IAAgB,KAAK,mBAAmB,KAAK,mBACxD3X,IAAO,IAAIvF,GAAM,KAAK,WAAY,CAAC,GAAIC,CAAQ,GAE/C8C,IAAW9C,EAAS;AAE1B,IAAA8C,EAAU,OAAW,QAAQsC;AAE7B,UAAMvb,IAAO,KAAK;AAElB,IAAAoyB,GAAcN,GAAoB,GAAG,GAAG,IAAI9xB,GAAM,IAAIA,CAAI,GAE1DqZ,EAAS,gBAAiByY,CAAkB,GAC5CzY,EAAS,OAAQoC,GAAM2V,EAAW;AAAA,EAEnC;AAAA,EAEA,YAAaU,GAAqB;AAEjC,UAAMzY,IAAW,KAAK,WAChBga,IAAYha,EAAS;AAC3B,IAAAA,EAAS,YAAY;AAErB,aAAU/pB,IAAI,GAAGA,IAAI,KAAK,WAAW,QAAQA,KAAO;AAEnD,YAAMuiC,IAAQ,KAAK,KAAM,KAAK,QAASviC,CAAC,IAAK,KAAK,QAASA,CAAC,IAAK,KAAK,QAASA,IAAI,CAAC,IAAK,KAAK,QAASA,IAAI,EAAG,GAExGgkC,IAAW3B,IAAmBriC,IAAI,KAAMqiC,GAAgB,MAAM;AAEpE,WAAK,MAAOG,GAAoBxiC,IAAI,GAAGA,GAAGuiC,GAAOyB,CAAQ;AAAA,IAE1D;AAEA,IAAAja,EAAS,YAAYga;AAAA,EAEtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAOvB,GAAoByB,GAAOC,GAAQ3B,GAAOyB,GAAW;AAE3D,UAAMG,IAAuB,KAAK;AAElC,SAAK;AAAA,MACJ3B;AAAA,MACA2B;AAAA,MACAF;AAAA,MACAC;AAAA,MACA3B;AAAA,MACA;AAAA,MACAyB;AAAA,IAAQ,GAET,KAAK;AAAA,MACJG;AAAA,MACA3B;AAAA,MACA0B;AAAA,MACAA;AAAA,MACA3B;AAAA,MACA;AAAA,MACAyB;AAAA,IAAQ;AAAA,EAEV;AAAA,EAEA,UAAWI,GAAUC,GAAWJ,GAAOC,GAAQI,GAAcvwB,GAAWiwB,GAAW;AAElF,UAAMja,IAAW,KAAK,WAChBwa,IAAe,KAAK;AAE1B,IAAKxwB,MAAc,iBAAiBA,MAAc,kBAEjD,QAAQ;AAAA,MACP;AAAA,IAA4D;AAK9D,UAAMywB,IAAsB,GAEtBC,IAAW,IAAI7d,GAAM,KAAK,WAAYsd,CAAM,GAAIK,CAAY,GAC5DG,IAAeH,EAAa,UAE5BI,IAAS,KAAK,UAAWV,CAAK,IAAK,GACnCW,IAAkB,SAAUN,CAAY,IAAK,KAAK,MAAO,IAAIK,KAAW,IAAI,KAAK,MAAO,IAAI9C,KAAc,IAC1GgD,IAAcP,IAAeM,GAC7BE,IAAU,SAAUR,KAAiB,IAAI,KAAK,MAAOE,IAAsBK,CAAW,IAAKhD;AAEjG,IAAKiD,IAAUjD,MAEd,QAAQ,KAAM,iBACbyC,CAAY,iDACZQ,CAAO,uCAAuCjD,EAAW,EAAE;AAI7D,UAAMkD,IAAU,CAAA;AAChB,QAAIC,IAAM;AAEV,aAAUhlC,IAAI,GAAGA,IAAI6hC,IAAa,EAAG7hC,GAAI;AAExC,YAAMkB,IAAIlB,IAAI6kC,GACRI,IAAS,KAAK,IAAK,CAAE/jC,IAAIA,IAAI,CAAC;AACpC,MAAA6jC,EAAQ,KAAME,CAAM,GAEfjlC,MAAM,IAEVglC,KAAOC,IAEIjlC,IAAI8kC,MAEfE,KAAO,IAAIC;AAAA,IAIb;AAEA,aAAUjlC,IAAI,GAAGA,IAAI+kC,EAAQ,QAAQ/kC;AAEpC,MAAA+kC,EAAS/kC,CAAC,IAAK+kC,EAAS/kC,CAAC,IAAKglC;AAI/B,IAAAN,EAAc,OAAW,QAAQN,EAAS,SAC1CM,EAAc,QAAY,QAAQI,GAClCJ,EAAc,QAAY,QAAQK,GAClCL,EAAc,YAAgB,QAAQ3wB,MAAc,eAE/CiwB,MAEJU,EAAc,SAAa,QAAQV;AAIpC,UAAM,EAAE,SAAAf,EAAO,IAAK;AACpB,IAAAyB,EAAc,OAAW,QAAQE,GACjCF,EAAc,OAAW,QAAQzB,IAAUgB;AAE3C,UAAMiB,IAAa,KAAK,UAAWhB,CAAM,GACnChjC,IAAI,IAAIgkC,KAAehB,IAASjB,IAAUtB,KAAUuC,IAASjB,IAAUtB,KAAU,IACjFxgC,IAAI,KAAM,KAAK,YAAY+jC;AAEjC,IAAApC,GAAcuB,GAAWnjC,GAAGC,GAAG,IAAI+jC,GAAY,IAAIA,CAAU,GAC7Dnb,EAAS,gBAAiBsa,CAAS,GACnCta,EAAS,OAAQ0a,GAAU3C,EAAW;AAAA,EAEvC;AAED;AAIA,SAASoB,GAAeiC,GAAS;AAEhC,QAAMC,IAAY,CAAA,GACZC,IAAW,CAAA,GACXC,IAAS,CAAA;AAEf,MAAIC,IAAMJ;AAEV,QAAMK,IAAYL,IAASxD,KAAU,IAAIC,GAAgB;AAEzD,WAAU5hC,IAAI,GAAGA,IAAIwlC,GAAWxlC,KAAO;AAEtC,UAAMylC,IAAU,KAAK,IAAK,GAAGF,CAAG;AAChC,IAAAF,EAAS,KAAMI,CAAO;AACtB,QAAIlD,IAAQ,IAAMkD;AAElB,IAAKzlC,IAAImlC,IAASxD,KAEjBY,IAAQX,GAAiB5hC,IAAImlC,IAASxD,KAAU,CAAC,IAEtC3hC,MAAM,MAEjBuiC,IAAQ,IAIT+C,EAAO,KAAM/C,CAAK;AAElB,UAAMmD,IAAY,KAAQD,IAAU,IAC9B7kC,IAAM,CAAE8kC,GACR7kC,IAAM,IAAI6kC,GACVzmB,IAAM,CAAEre,GAAKA,GAAKC,GAAKD,GAAKC,GAAKA,GAAKD,GAAKA,GAAKC,GAAKA,GAAKD,GAAKC,CAAG,GAElE8kC,IAAY,GACZvd,IAAW,GACXwd,IAAe,GACfC,IAAS,GACTC,IAAgB,GAEhB3sB,IAAW,IAAI,aAAcysB,IAAexd,IAAWud,CAAS,GAChEx8B,IAAK,IAAI,aAAc08B,IAASzd,IAAWud,CAAS,GACpDI,IAAY,IAAI,aAAcD,IAAgB1d,IAAWud,CAAS;AAExE,aAAU7d,IAAO,GAAGA,IAAO6d,GAAW7d,KAAU;AAE/C,YAAM5mB,IAAM4mB,IAAO,IAAM,IAAI,IAAI,GAC3B3mB,IAAI2mB,IAAO,IAAI,IAAI,IACnBke,IAAc;AAAA,QACnB9kC;AAAA,QAAGC;AAAA,QAAG;AAAA,QACND,IAAI,IAAI;AAAA,QAAGC;AAAA,QAAG;AAAA,QACdD,IAAI,IAAI;AAAA,QAAGC,IAAI;AAAA,QAAG;AAAA,QAClBD;AAAA,QAAGC;AAAA,QAAG;AAAA,QACND,IAAI,IAAI;AAAA,QAAGC,IAAI;AAAA,QAAG;AAAA,QAClBD;AAAA,QAAGC,IAAI;AAAA,QAAG;AAAA,MACd;AACG,MAAAgY,EAAS,IAAK6sB,GAAaJ,IAAexd,IAAWN,CAAI,GACzD3e,EAAG,IAAK8V,GAAK4mB,IAASzd,IAAWN,CAAI;AACrC,YAAMme,IAAO,CAAEne,GAAMA,GAAMA,GAAMA,GAAMA,GAAMA,CAAI;AACjD,MAAAie,EAAU,IAAKE,GAAMH,IAAgB1d,IAAWN,CAAI;AAAA,IAErD;AAEA,UAAMwF,IAAS,IAAI7K,GAAc;AACjC,IAAA6K,EAAO,aAAc,YAAY,IAAI/L,GAAiBpI,GAAUysB,EAAc,GAC9EtY,EAAO,aAAc,MAAM,IAAI/L,GAAiBpY,GAAI08B,EAAQ,GAC5DvY,EAAO,aAAc,aAAa,IAAI/L,GAAiBwkB,GAAWD,EAAe,GACjFV,EAAU,KAAM9X,CAAM,GAEjBiY,IAAM5D,MAEV4D;AAAA,EAIF;AAEA,SAAO,EAAE,WAAAH,GAAW,UAAAC,GAAU,QAAAC,EAAM;AAErC;AAEA,SAAStC,GAAqBv4B,GAAOC,GAAQq4B,GAAS;AAErD,QAAMP,IAAqB,IAAI33B,GAAmBJ,GAAOC,GAAQq4B,CAAM;AACvE,SAAAP,EAAmB,QAAQ,UAAU9oC,IACrC8oC,EAAmB,QAAQ,OAAO,gBAClCA,EAAmB,cAAc,IAC1BA;AAER;AAEA,SAASM,GAAc/xB,GAAQ7P,GAAGC,GAAGsJ,GAAOC,GAAS;AAEpD,EAAAqG,EAAO,SAAS,IAAK7P,GAAGC,GAAGsJ,GAAOC,CAAM,GACxCqG,EAAO,QAAQ,IAAK7P,GAAGC,GAAGsJ,GAAOC,CAAM;AAExC;AAEA,SAASy4B,GAAgBgC,GAAQ16B,GAAOC,GAAS;AAEhD,QAAMq6B,IAAU,IAAI,aAAclD,EAAW,GACvCmC,IAAW,IAAIp1B,EAAS,GAAG,GAAG,CAAC;AA4FrC,SA3FuB,IAAIub,GAAgB;AAAA,IAE1C,MAAM;AAAA,IAEN,SAAS;AAAA,MACR,GAAK0X;AAAA,MACL,oBAAsB,IAAMp3B;AAAA,MAC5B,qBAAuB,IAAMC;AAAA,MAC7B,gBAAkB,GAAGy6B,CAAM;AAAA,IAC9B;AAAA,IAEE,UAAU;AAAA,MACT,QAAU,EAAE,OAAO,KAAI;AAAA,MACvB,SAAW,EAAE,OAAO,EAAC;AAAA,MACrB,SAAW,EAAE,OAAOJ,EAAO;AAAA,MAC3B,aAAe,EAAE,OAAO,GAAK;AAAA,MAC7B,QAAU,EAAE,OAAO,EAAC;AAAA,MACpB,QAAU,EAAE,OAAO,EAAC;AAAA,MACpB,UAAY,EAAE,OAAOf,EAAQ;AAAA,IAChC;AAAA,IAEE,cAAckC,GAAsB;AAAA,IAEpC;AAAA;AAAA,MAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA8D1B,UAAUzvC;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,EAEd,CAAE;AAIF;AAEA,SAASksC,KAAuB;AAE/B,SAAO,IAAIxY,GAAgB;AAAA,IAE1B,MAAM;AAAA,IAEN,UAAU;AAAA,MACT,QAAU,EAAE,OAAO,KAAI;AAAA,IAC1B;AAAA,IAEE,cAAc+b,GAAsB;AAAA,IAEpC;AAAA;AAAA,MAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAqB1B,UAAUzvC;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,EAEd,CAAE;AAEF;AAEA,SAASisC,KAAsB;AAE9B,SAAO,IAAIvY,GAAgB;AAAA,IAE1B,MAAM;AAAA,IAEN,UAAU;AAAA,MACT,QAAU,EAAE,OAAO,KAAI;AAAA,MACvB,YAAc,EAAE,OAAO,GAAG;AAAA,IAC7B;AAAA,IAEE,cAAc+b,GAAsB;AAAA,IAEpC;AAAA;AAAA,MAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAkB1B,UAAUzvC;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,EAEd,CAAE;AAEF;AAEA,SAASyvC,KAAyB;AAEjC;AAAA;AAAA,IAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyDlB;AAEA,SAASC,GAAiBpc,GAAW;AAEpC,MAAIqc,IAAa,oBAAI,QAAO,GAExBC,IAAiB;AAErB,WAASvW,EAAK7D,GAAU;AAEvB,QAAKA,KAAWA,EAAQ,WAAY;AAEnC,YAAMtjB,IAAUsjB,EAAQ,SAElBqa,IAAkB39B,MAAYnP,MAAoCmP,MAAYlP,IAC9E8sC,IAAc59B,MAAYrP,MAAyBqP,MAAYpP;AAIrE,UAAK+sC,KAAiBC;AAErB,YAAKta,EAAQ,yBAAyBA,EAAQ,qBAAqB,IAAO;AAEzE,UAAAA,EAAQ,mBAAmB;AAE3B,cAAIjB,IAAeob,EAAW,IAAKna,CAAO;AAE1C,iBAAKoa,MAAmB,SAAOA,IAAiB,IAAI/D,GAAgBvY,CAAQ,IAE5EiB,IAAesb,IAAgBD,EAAe,oBAAqBpa,GAASjB,CAAY,IAAKqb,EAAe,YAAapa,GAASjB,CAAY,GAC9Iob,EAAW,IAAKna,GAASjB,CAAY,GAE9BA,EAAa;AAAA,QAErB,OAAO;AAEN,cAAKob,EAAW,IAAKna;AAEpB,mBAAOma,EAAW,IAAKna,CAAO,EAAG;AAE3B;AAEN,kBAAMnkB,IAAQmkB,EAAQ;AAEtB,gBAAOqa,KAAiBx+B,KAASA,EAAM,SAAS,KAASy+B,KAAaz+B,KAAS0+B,EAAuB1+B,CAAK,GAAO;AAEjH,cAAKu+B,MAAmB,SAAOA,IAAiB,IAAI/D,GAAgBvY,CAAQ;AAE5E,oBAAMiB,IAAesb,IAAgBD,EAAe,oBAAqBpa,KAAYoa,EAAe,YAAapa,CAAO;AACxH,qBAAAma,EAAW,IAAKna,GAASjB,CAAY,GAErCiB,EAAQ,iBAAkB,WAAWsV,CAAgB,GAE9CvW,EAAa;AAAA,YAErB;AAIC,qBAAO;AAAA,UAIT;AAAA,QAED;AAAA,IAIF;AAEA,WAAOiB;AAAA,EAER;AAEA,WAASua,EAAuB1+B,GAAQ;AAEvC,QAAI6Z,IAAQ;AACZ,UAAMzf,IAAS;AAEf,aAAUlC,IAAI,GAAGA,IAAIkC,GAAQlC;AAE5B,MAAK8H,EAAO9H,OAAQ,UAAY2hB;AAIjC,WAAOA,MAAUzf;AAAA,EAGlB;AAEA,WAASq/B,EAAkBzhC,GAAQ;AAElC,UAAMmsB,IAAUnsB,EAAM;AAEtB,IAAAmsB,EAAQ,oBAAqB,WAAWsV,CAAgB;AAExD,UAAMkF,IAAYL,EAAW,IAAKna,CAAO;AAEzC,IAAKwa,MAAc,WAElBL,EAAW,OAAQna,CAAO,GAC1Bwa,EAAU,QAAO;AAAA,EAInB;AAEA,WAASpJ,IAAU;AAElB,IAAA+I,IAAa,oBAAI,QAAO,GAEnBC,MAAmB,SAEvBA,EAAe,QAAO,GACtBA,IAAiB;AAAA,EAInB;AAEA,SAAO;AAAA,IACN,KAAKvW;AAAA,IACL,SAASuN;AAAA,EACX;AAEA;AAEA,SAASqJ,GAAiBxX,GAAK;AAE9B,QAAM9E,IAAa,CAAA;AAEnB,WAASuc,EAAclgC,GAAO;AAE7B,QAAK2jB,EAAY3jB,CAAI,MAAO;AAE3B,aAAO2jB,EAAY3jB,CAAI;AAIxB,QAAIm0B;AAEJ,YAASn0B,GAAI;AAAA,MAEZ,KAAK;AACJ,QAAAm0B,IAAY1L,EAAG,aAAc,0BAA2BA,EAAG,aAAc,yBAAyB,KAAMA,EAAG,aAAc,4BAA4B;AACrJ;AAAA,MAED,KAAK;AACJ,QAAA0L,IAAY1L,EAAG,aAAc,qCAAsCA,EAAG,aAAc,oCAAoC,KAAMA,EAAG,aAAc,uCAAuC;AACtL;AAAA,MAED,KAAK;AACJ,QAAA0L,IAAY1L,EAAG,aAAc,oCAAqCA,EAAG,aAAc,mCAAmC,KAAMA,EAAG,aAAc,sCAAsC;AACnL;AAAA,MAED,KAAK;AACJ,QAAA0L,IAAY1L,EAAG,aAAc,gCAAgC,KAAMA,EAAG,aAAc,uCAAuC;AAC3H;AAAA,MAED;AACC,QAAA0L,IAAY1L,EAAG,aAAczoB,CAAI;AAAA,IAErC;AAEE,WAAA2jB,EAAY3jB,CAAI,IAAKm0B,GAEdA;AAAA,EAER;AAEA,SAAO;AAAA,IAEN,KAAK,SAAWn0B,GAAO;AAEtB,aAAOkgC,EAAclgC,CAAI,MAAO;AAAA,IAEjC;AAAA,IAEA,MAAM,SAAW0oB,GAAe;AAE/B,MAAKA,EAAa,YAEjBwX,EAAc,wBAAwB,GACtCA,EAAc,0BAA0B,MAIxCA,EAAc,qBAAqB,GACnCA,EAAc,mBAAmB,GACjCA,EAAc,wBAAwB,GACtCA,EAAc,+BAA+B,GAC7CA,EAAc,0BAA0B,GACxCA,EAAc,wBAAwB,GACtCA,EAAc,yBAAyB,GACvCA,EAAc,wBAAwB,IAIvCA,EAAc,0BAA0B,GACxCA,EAAc,6BAA6B,GAC3CA,EAAc,sCAAsC;AAAA,IAErD;AAAA,IAEA,KAAK,SAAWlgC,GAAO;AAEtB,YAAMm0B,IAAY+L,EAAclgC,CAAI;AAEpC,aAAKm0B,MAAc,QAElB,QAAQ,KAAM,0BAA0Bn0B,IAAO,2BAA2B,GAIpEm0B;AAAA,IAER;AAAA,EAEF;AAEA;AAEA,SAASgM,GAAiB1X,GAAIjM,GAAY4a,GAAM/C,GAAgB;AAE/D,QAAM9d,IAAa,CAAA,GACb6pB,IAAsB,oBAAI,QAAO;AAEvC,WAASC,EAAmBhnC,GAAQ;AAEnC,UAAMoR,IAAWpR,EAAM;AAEvB,IAAKoR,EAAS,UAAU,QAEvB+R,EAAW,OAAQ/R,EAAS,KAAK;AAIlC,eAAYzK,KAAQyK,EAAS;AAE5B,MAAA+R,EAAW,OAAQ/R,EAAS,WAAYzK,CAAI,CAAE;AAI/C,eAAYA,KAAQyK,EAAS,iBAAkB;AAE9C,YAAMnR,IAAQmR,EAAS,gBAAiBzK,CAAI;AAE5C,eAAUzG,IAAI,GAAGC,IAAIF,EAAM,QAAQC,IAAIC,GAAGD;AAEzC,QAAAijB,EAAW,OAAQljB,EAAOC,EAAG;AAAA,IAI/B;AAEA,IAAAkR,EAAS,oBAAqB,WAAW41B,CAAiB,GAE1D,OAAO9pB,EAAY9L,EAAS,EAAE;AAE9B,UAAMvO,IAAYkkC,EAAoB,IAAK31B,CAAQ;AAEnD,IAAKvO,MAEJsgB,EAAW,OAAQtgB,CAAS,GAC5BkkC,EAAoB,OAAQ31B,CAAQ,IAIrC4pB,EAAc,wBAAyB5pB,CAAQ,GAE1CA,EAAS,8BAA8B,MAE3C,OAAOA,EAAS,mBAMjB2sB,EAAK,OAAO;AAAA,EAEb;AAEA,WAAS/N,EAAKlf,GAAQM,GAAW;AAEhC,WAAK8L,EAAY9L,EAAS,EAAE,MAAO,OAEnCA,EAAS,iBAAkB,WAAW41B,CAAiB,GAEvD9pB,EAAY9L,EAAS,EAAE,IAAK,IAE5B2sB,EAAK,OAAO,eAEL3sB;AAAA,EAER;AAEA,WAAS1E,EAAQ0E,GAAW;AAE3B,UAAMmrB,IAAqBnrB,EAAS;AAIpC,eAAYzK,KAAQ41B;AAEnB,MAAApZ,EAAW,OAAQoZ,EAAoB51B,CAAI,GAAIyoB,EAAG,YAAY;AAM/D,UAAM7J,IAAkBnU,EAAS;AAEjC,eAAYzK,KAAQ4e,GAAkB;AAErC,YAAMtlB,IAAQslB,EAAiB5e,CAAI;AAEnC,eAAUzG,IAAI,GAAGC,IAAIF,EAAM,QAAQC,IAAIC,GAAGD;AAEzC,QAAAijB,EAAW,OAAQljB,EAAOC,CAAC,GAAIkvB,EAAG,YAAY;AAAA,IAIhD;AAAA,EAED;AAEA,WAAS6X,EAA0B71B,GAAW;AAE7C,UAAMgS,IAAU,CAAA,GAEV8jB,IAAgB91B,EAAS,OACzB+1B,IAAmB/1B,EAAS,WAAW;AAC7C,QAAIg2B,IAAU;AAEd,QAAKF,MAAkB,MAAO;AAE7B,YAAMjnC,IAAQinC,EAAc;AAC5B,MAAAE,IAAUF,EAAc;AAExB,eAAUhnC,IAAI,GAAGC,IAAIF,EAAM,QAAQC,IAAIC,GAAGD,KAAK,GAAI;AAElD,cAAM6B,IAAI9B,EAAOC,IAAI,CAAC,GAChB8B,IAAI/B,EAAOC,IAAI,CAAC,GAChB8C,IAAI/C,EAAOC,IAAI,CAAC;AAEtB,QAAAkjB,EAAQ,KAAMrhB,GAAGC,GAAGA,GAAGgB,GAAGA,GAAGjB,CAAC;AAAA,MAE/B;AAAA,IAED,WAAYolC,MAAqB,QAAY;AAE5C,YAAMlnC,IAAQknC,EAAiB;AAC/B,MAAAC,IAAUD,EAAiB;AAE3B,eAAUjnC,IAAI,GAAGC,IAAMF,EAAM,SAAS,IAAM,GAAGC,IAAIC,GAAGD,KAAK,GAAI;AAE9D,cAAM6B,IAAI7B,IAAI,GACR8B,IAAI9B,IAAI,GACR8C,IAAI9C,IAAI;AAEd,QAAAkjB,EAAQ,KAAMrhB,GAAGC,GAAGA,GAAGgB,GAAGA,GAAGjB,CAAC;AAAA,MAE/B;AAAA,IAED;AAEC;AAID,UAAMc,IAAY,KAAM4D,GAAkB2c,CAAO,IAAKlB,KAAwBD,IAAyBmB,GAAS,CAAC;AACjH,IAAAvgB,EAAU,UAAUukC;AAMpB,UAAMC,IAAoBN,EAAoB,IAAK31B,CAAQ;AAE3D,IAAKi2B,KAAoBlkB,EAAW,OAAQkkB,CAAiB,GAI7DN,EAAoB,IAAK31B,GAAUvO,CAAS;AAAA,EAE7C;AAEA,WAASykC,EAAuBl2B,GAAW;AAE1C,UAAMm2B,IAAmBR,EAAoB,IAAK31B,CAAQ;AAE1D,QAAKm2B,GAAmB;AAEvB,YAAML,IAAgB91B,EAAS;AAE/B,MAAK81B,MAAkB,QAIjBK,EAAiB,UAAUL,EAAc,WAE7CD,EAA0B71B,CAAQ;AAAA,IAMrC;AAEC,MAAA61B,EAA0B71B,CAAQ;AAInC,WAAO21B,EAAoB,IAAK31B,CAAQ;AAAA,EAEzC;AAEA,SAAO;AAAA,IAEN,KAAK4e;AAAA,IACL,QAAQtjB;AAAA,IAER,uBAAuB46B;AAAA,EAEzB;AAEA;AAEA,SAASE,GAA4BpY,GAAI9E,GAAYyT,GAAM1O,GAAe;AAEzE,QAAMC,IAAWD,EAAa;AAE9B,MAAI2O;AAEJ,WAASC,EAASp9B,GAAQ;AAEzB,IAAAm9B,IAAOn9B;AAAA,EAER;AAEA,MAAIlB,GAAM29B;AAEV,WAASmK,EAAU5mC,GAAQ;AAE1B,IAAAlB,IAAOkB,EAAM,MACby8B,IAAkBz8B,EAAM;AAAA,EAEzB;AAEA,WAASy5B,EAAQ1Y,GAAOC,GAAQ;AAE/B,IAAAuN,EAAG,aAAc4O,GAAMnc,GAAOliB,GAAMiiB,IAAQ0b,CAAe,GAE3DS,EAAK,OAAQlc,GAAOmc,GAAM,CAAC;AAAA,EAE5B;AAEA,WAASE,EAAiBtc,GAAOC,GAAOsc,GAAY;AAEnD,QAAKA,MAAc,EAAI;AAEvB,QAAIrD,GAAWsD;AAEf,QAAK9O;AAEJ,MAAAwL,IAAY1L,GACZgP,IAAa;AAAA,aAIbtD,IAAYxQ,EAAW,IAAK,wBAAwB,GACpD8T,IAAa,8BAERtD,MAAc,MAAO;AAEzB,cAAQ,MAAO,uIAAuI;AACtJ;AAAA,IAED;AAID,IAAAA,EAAWsD,CAAU,EAAIJ,GAAMnc,GAAOliB,GAAMiiB,IAAQ0b,GAAiBa,CAAS,GAE9EJ,EAAK,OAAQlc,GAAOmc,GAAMG,CAAS;AAAA,EAEpC;AAEA,WAASE,EAAiBC,GAAQC,GAAQC,GAAY;AAErD,QAAKA,MAAc,EAAI;AAEvB,UAAM1D,IAAYxQ,EAAW,IAAK,kBAAkB;AACpD,QAAKwQ,MAAc;AAElB,eAAU56B,IAAI,GAAGA,IAAIs+B,GAAWt+B;AAE/B,aAAK,OAAQo+B,EAAQp+B,CAAC,IAAKo9B,GAAiBiB,EAAQr+B,EAAG;AAAA,SAIlD;AAEN,MAAA46B,EAAU,uBAAwBkD,GAAMO,GAAQ,GAAG5+B,GAAM2+B,GAAQ,GAAGE,CAAS;AAE7E,UAAIC,IAAe;AACnB,eAAUv+B,IAAI,GAAGA,IAAIs+B,GAAWt+B;AAE/B,QAAAu+B,KAAgBF,EAAQr+B,CAAC;AAI1B,MAAA69B,EAAK,OAAQU,GAAcT,GAAM,CAAC;AAAA,IAEnC;AAAA,EAED;AAIA,OAAK,UAAUC,GACf,KAAK,WAAWwJ,GAChB,KAAK,SAASnN,GACd,KAAK,kBAAkB4D,GACvB,KAAK,kBAAkBG;AAExB;AAEA,SAASqJ,GAAWtY,GAAK;AAExB,QAAMuY,IAAS;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ,GAEOrN,IAAS;AAAA,IACd,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAEC,WAAS5tB,EAAQmV,GAAOmc,GAAM4J,GAAgB;AAI7C,YAFAtN,EAAO,SAEE0D,GAAI;AAAA,MAEZ,KAAK5O,EAAG;AACP,QAAAkL,EAAO,aAAasN,KAAkB/lB,IAAQ;AAC9C;AAAA,MAED,KAAKuN,EAAG;AACP,QAAAkL,EAAO,SAASsN,KAAkB/lB,IAAQ;AAC1C;AAAA,MAED,KAAKuN,EAAG;AACP,QAAAkL,EAAO,SAASsN,KAAkB/lB,IAAQ;AAC1C;AAAA,MAED,KAAKuN,EAAG;AACP,QAAAkL,EAAO,SAASsN,IAAgB/lB;AAChC;AAAA,MAED,KAAKuN,EAAG;AACP,QAAAkL,EAAO,UAAUsN,IAAgB/lB;AACjC;AAAA,MAED;AACC,gBAAQ,MAAO,uCAAuCmc,CAAI;AAC1D;AAAA,IAEJ;AAAA,EAEC;AAEA,WAASR,IAAQ;AAEhB,IAAAlD,EAAO,QAAQ,GACfA,EAAO,YAAY,GACnBA,EAAO,SAAS,GAChBA,EAAO,QAAQ;AAAA,EAEhB;AAEA,SAAO;AAAA,IACN,QAAQqN;AAAA,IACR,QAAQrN;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,IACX,OAAOkD;AAAA,IACP,QAAQ9wB;AAAA,EACV;AAEA;AAEA,SAASm7B,GAAe9lC,GAAGC,GAAI;AAE9B,SAAOD,EAAG,KAAMC,EAAG,CAAC;AAErB;AAEA,SAAS8lC,GAAkB/lC,GAAGC,GAAI;AAEjC,SAAO,KAAK,IAAKA,EAAG,CAAC,KAAO,KAAK,IAAKD,EAAG,EAAG;AAE7C;AAEA,SAASgmC,GAAmB3Y,GAAIC,GAAchS,GAAW;AAExD,QAAM2qB,IAAiB,CAAA,GACjB7gB,IAAkB,IAAI,aAAc,CAAC,GACrC8gB,IAAgB,oBAAI,QAAO,GAC3BC,IAAQ,IAAI3+B,GAAO,GAEnB4+B,IAAiB,CAAA;AAEvB,WAAUjoC,IAAI,GAAGA,IAAI,GAAGA;AAEvB,IAAAioC,EAAgBjoC,CAAC,IAAK,CAAEA,GAAG,CAAC;AAI7B,WAASwM,EAAQoE,GAAQM,GAAUkqB,GAAU;AAE5C,UAAM8M,IAAmBt3B,EAAO;AAEhC,QAAKue,EAAa,aAAa,IAAO;AAKrC,YAAMrM,IAAiB5R,EAAS,gBAAgB,YAAYA,EAAS,gBAAgB,UAAUA,EAAS,gBAAgB,OAClHi3B,IAAsBrlB,MAAmB,SAAcA,EAAe,SAAS;AAErF,UAAIslB,IAAQL,EAAc,IAAK72B,CAAQ;AAEvC,UAAKk3B,MAAU,UAAaA,EAAM,UAAUD,GAAoB;AA+F/D,YAASE,IAAT,WAA0B;AAEzB,UAAApc,EAAQ,QAAO,GAEf8b,EAAc,OAAQ72B,CAAQ,GAE9BA,EAAS,oBAAqB,WAAWm3B,CAAc;AAAA,QAExD;AArGA,QAAKD,MAAU,UAAYA,EAAM,QAAQ,QAAO;AAEhD,cAAME,IAAmBp3B,EAAS,gBAAgB,aAAa,QACzDq3B,IAAkBr3B,EAAS,gBAAgB,WAAW,QACtDs3B,IAAiBt3B,EAAS,gBAAgB,UAAU,QAEpDu3B,IAAev3B,EAAS,gBAAgB,YAAY,CAAA,GACpDw3B,IAAex3B,EAAS,gBAAgB,UAAU,CAAA,GAClDy3B,IAAcz3B,EAAS,gBAAgB,SAAS,CAAA;AAEtD,YAAI03B,IAAkB;AAEtB,QAAKN,MAAqB,OAAOM,IAAkB,IAC9CL,MAAoB,OAAOK,IAAkB,IAC7CJ,MAAmB,OAAOI,IAAkB;AAEjD,YAAIn+B,IAAQyG,EAAS,WAAW,SAAS,QAAQ03B,GAC7Cl+B,IAAS;AAEb,QAAKD,IAAQ0kB,EAAa,mBAEzBzkB,IAAS,KAAK,KAAMD,IAAQ0kB,EAAa,cAAc,GACvD1kB,IAAQ0kB,EAAa;AAItB,cAAMM,IAAS,IAAI,aAAchlB,IAAQC,IAAS,IAAIy9B,CAAiB,GAEjElc,IAAU,IAAInhB,GAAkB2kB,GAAQhlB,GAAOC,GAAQy9B,CAAiB;AAC9E,QAAAlc,EAAQ,OAAOvxB,IACfuxB,EAAQ,cAAc;AAItB,cAAM4c,KAAmBD,IAAkB;AAE3C,iBAAU5oC,IAAI,GAAGA,IAAImoC,GAAmBnoC,KAAO;AAE9C,gBAAM8oC,IAAcL,EAAczoC,CAAC,GAC7B+oC,IAAcL,EAAc1oC,CAAC,GAC7BgpC,IAAaL,EAAa3oC,CAAC,GAE3B0C,IAAS+H,IAAQC,IAAS,IAAI1K;AAEpC,mBAAUwS,IAAI,GAAGA,IAAIs2B,EAAY,OAAOt2B,KAAO;AAE9C,kBAAMwqB,IAASxqB,IAAIq2B;AAEnB,YAAKP,MAAqB,OAEzBN,EAAM,oBAAqBc,GAAat2B,CAAC,GAEzCid,EAAQ/sB,IAASs6B,IAAS,CAAC,IAAKgL,EAAM,GACtCvY,EAAQ/sB,IAASs6B,IAAS,CAAC,IAAKgL,EAAM,GACtCvY,EAAQ/sB,IAASs6B,IAAS,CAAC,IAAKgL,EAAM,GACtCvY,EAAQ/sB,IAASs6B,IAAS,CAAC,IAAK,IAI5BuL,MAAoB,OAExBP,EAAM,oBAAqBe,GAAav2B,CAAC,GAEzCid,EAAQ/sB,IAASs6B,IAAS,CAAC,IAAKgL,EAAM,GACtCvY,EAAQ/sB,IAASs6B,IAAS,CAAC,IAAKgL,EAAM,GACtCvY,EAAQ/sB,IAASs6B,IAAS,CAAC,IAAKgL,EAAM,GACtCvY,EAAQ/sB,IAASs6B,IAAS,CAAC,IAAK,IAI5BwL,MAAmB,OAEvBR,EAAM,oBAAqBgB,GAAYx2B,CAAC,GAExCid,EAAQ/sB,IAASs6B,IAAS,CAAC,IAAKgL,EAAM,GACtCvY,EAAQ/sB,IAASs6B,IAAS,CAAC,IAAKgL,EAAM,GACtCvY,EAAQ/sB,IAASs6B,IAAS,EAAE,IAAKgL,EAAM,GACvCvY,EAAQ/sB,IAASs6B,IAAS,MAASgM,EAAW,aAAa,IAAMhB,EAAM,IAAI;AAAA,UAI7E;AAAA,QAED;AAEA,QAAAI,IAAQ;AAAA,UACP,OAAOD;AAAA,UACP,SAASlc;AAAA,UACT,MAAM,IAAIxqB,GAASgJ,GAAOC,CAAM;AAAA,QACrC,GAEIq9B,EAAc,IAAK72B,GAAUk3B,CAAK,GAYlCl3B,EAAS,iBAAkB,WAAWm3B,CAAc;AAAA,MAErD;AAIA,UAAIY,IAAqB;AAEzB,eAAUjpC,IAAI,GAAGA,IAAIkoC,EAAiB,QAAQloC;AAE7C,QAAAipC,KAAsBf,EAAkBloC,CAAC;AAI1C,YAAMkpC,IAAqBh4B,EAAS,uBAAuB,IAAI,IAAI+3B;AAEnE,MAAA7N,EAAQ,YAAW,EAAG,SAAUlM,GAAI,4BAA4Bga,CAAkB,GAClF9N,EAAQ,YAAW,EAAG,SAAUlM,GAAI,yBAAyBgZ,CAAgB,GAE7E9M,EAAQ,YAAW,EAAG,SAAUlM,GAAI,uBAAuBkZ,EAAM,SAASjrB,CAAQ,GAClFie,EAAQ,YAAW,EAAG,SAAUlM,GAAI,2BAA2BkZ,EAAM,IAAI;AAAA,IAG1E,OAAO;AAKN,YAAMlmC,IAASgmC,MAAqB,SAAY,IAAIA,EAAiB;AAErE,UAAIiB,IAAarB,EAAgB52B,EAAS,EAAE;AAE5C,UAAKi4B,MAAe,UAAaA,EAAW,WAAWjnC,GAAS;AAI/D,QAAAinC,IAAa,CAAA;AAEb,iBAAUnpC,IAAI,GAAGA,IAAIkC,GAAQlC;AAE5B,UAAAmpC,EAAYnpC,CAAC,IAAK,CAAEA,GAAG,CAAC;AAIzB,QAAA8nC,EAAgB52B,EAAS,EAAE,IAAKi4B;AAAA,MAEjC;AAIA,eAAUnpC,IAAI,GAAGA,IAAIkC,GAAQlC,KAAO;AAEnC,cAAMknB,IAAYiiB,EAAYnpC,CAAC;AAE/B,QAAAknB,EAAW,CAAC,IAAKlnB,GACjBknB,EAAW,CAAC,IAAKghB,EAAkBloC,CAAC;AAAA,MAErC;AAEA,MAAAmpC,EAAW,KAAMvB,EAAgB;AAEjC,eAAU5nC,IAAI,GAAGA,IAAI,GAAGA;AAEvB,QAAKA,IAAIkC,KAAUinC,EAAYnpC,CAAC,EAAI,CAAC,KAEpCioC,EAAgBjoC,CAAC,EAAI,CAAC,IAAKmpC,EAAYnpC,CAAC,EAAI,CAAC,GAC7CioC,EAAgBjoC,CAAC,EAAI,CAAC,IAAKmpC,EAAYnpC,CAAC,EAAI,CAAC,MAI7CioC,EAAgBjoC,CAAC,EAAI,CAAC,IAAK,OAAO,kBAClCioC,EAAgBjoC,CAAC,EAAI,CAAC,IAAK;AAM7B,MAAAioC,EAAe,KAAMN,EAAa;AAElC,YAAMc,IAAev3B,EAAS,gBAAgB,UACxCw3B,IAAex3B,EAAS,gBAAgB;AAE9C,UAAI+3B,IAAqB;AAEzB,eAAUjpC,IAAI,GAAGA,IAAI,GAAGA,KAAO;AAE9B,cAAMknB,IAAY+gB,EAAgBjoC,CAAC,GAC7BH,IAAQqnB,EAAW,CAAC,GACpBvmB,IAAQumB,EAAW,CAAC;AAE1B,QAAKrnB,MAAU,OAAO,oBAAoBc,KAEpC8nC,KAAgBv3B,EAAS,aAAc,gBAAgBlR,OAAQyoC,EAAc5oC,MAEjFqR,EAAS,aAAc,gBAAgBlR,GAAGyoC,EAAc5oC,CAAK,CAAE,GAI3D6oC,KAAgBx3B,EAAS,aAAc,gBAAgBlR,OAAQ0oC,EAAc7oC,MAEjFqR,EAAS,aAAc,gBAAgBlR,GAAG0oC,EAAc7oC,CAAK,CAAE,GAIhEonB,EAAiBjnB,CAAC,IAAKW,GACvBsoC,KAAsBtoC,MAIjB8nC,KAAgBv3B,EAAS,aAAc,gBAAgBlR,CAAC,MAAO,MAEnEkR,EAAS,gBAAiB,gBAAgBlR,CAAC,GAIvC0oC,KAAgBx3B,EAAS,aAAc,gBAAgBlR,CAAC,MAAO,MAEnEkR,EAAS,gBAAiB,gBAAgBlR,CAAC,GAI5CinB,EAAiBjnB,CAAC,IAAK;AAAA,MAIzB;AAKA,YAAMkpC,IAAqBh4B,EAAS,uBAAuB,IAAI,IAAI+3B;AAEnE,MAAA7N,EAAQ,YAAW,EAAG,SAAUlM,GAAI,4BAA4Bga,CAAkB,GAClF9N,EAAQ,YAAW,EAAG,SAAUlM,GAAI,yBAAyBjI,CAAe;AAAA,IAE7E;AAAA,EAED;AAEA,SAAO;AAAA,IAEN,QAAQza;AAAA,EAEV;AAEA;AAEA,SAAS48B,GAAcla,GAAIlS,GAAYiG,GAAY4a,GAAO;AAEzD,MAAIwL,IAAY,oBAAI,QAAO;AAE3B,WAAS78B,EAAQoE,GAAS;AAEzB,UAAMoe,IAAQ6O,EAAK,OAAO,OAEpB3sB,IAAWN,EAAO,UAClB04B,IAAiBtsB,EAAW,IAAKpM,GAAQM,CAAQ;AAoCvD,QAhCKm4B,EAAU,IAAKC,CAAc,MAAOta,MAExChS,EAAW,OAAQssB,CAAc,GAEjCD,EAAU,IAAKC,GAAgBta,CAAK,IAIhCpe,EAAO,oBAENA,EAAO,iBAAkB,WAAW24B,CAAsB,MAAO,MAErE34B,EAAO,iBAAkB,WAAW24B,CAAsB,GAItDF,EAAU,IAAKz4B,CAAM,MAAOoe,MAEhC/L,EAAW,OAAQrS,EAAO,gBAAgBse,EAAG,YAAY,GAEpDte,EAAO,kBAAkB,QAE7BqS,EAAW,OAAQrS,EAAO,eAAese,EAAG,YAAY,GAIzDma,EAAU,IAAKz4B,GAAQoe,CAAK,KAMzBpe,EAAO,eAAgB;AAE3B,YAAM44B,IAAW54B,EAAO;AAExB,MAAKy4B,EAAU,IAAKG,CAAQ,MAAOxa,MAElCwa,EAAS,OAAM,GAEfH,EAAU,IAAKG,GAAUxa,CAAK;AAAA,IAIhC;AAEA,WAAOsa;AAAA,EAER;AAEA,WAASjM,IAAU;AAElB,IAAAgM,IAAY,oBAAI,QAAO;AAAA,EAExB;AAEA,WAASE,EAAwBzpC,GAAQ;AAExC,UAAM2pC,IAAgB3pC,EAAM;AAE5B,IAAA2pC,EAAc,oBAAqB,WAAWF,CAAsB,GAEpEtmB,EAAW,OAAQwmB,EAAc,cAAc,GAE1CA,EAAc,kBAAkB,QAAOxmB,EAAW,OAAQwmB,EAAc,aAAa;AAAA,EAE3F;AAEA,SAAO;AAAA,IAEN,QAAQj9B;AAAA,IACR,SAAS6wB;AAAA,EAEX;AAEA;AAEA,MAAMqM,WAAqBhhC,GAAQ;AAAA,EAElC,YAAa+B,GAAOC,GAAQjL,GAAMkJ,GAASC,GAAOC,GAAOC,GAAWC,GAAWE,GAAYD,GAAS;AAInG,QAFAA,IAASA,MAAW,SAAYA,IAAS7N,IAEpC6N,MAAW7N,MAAe6N,MAAW5N;AAEzC,YAAM,IAAI,MAAO,kFAAkF;AAIpG,IAAKqE,MAAS,UAAauJ,MAAW7N,OAAcsE,IAAOhF,KACtDgF,MAAS,UAAauJ,MAAW5N,OAAqBqE,IAAO3E,KAElE,MAAO,MAAM6N,GAASC,GAAOC,GAAOC,GAAWC,GAAWC,GAAQvJ,GAAMwJ,CAAU,GAElF,KAAK,iBAAiB,IAEtB,KAAK,QAAQ,EAAE,OAAOwB,GAAO,QAAQC,EAAM,GAE3C,KAAK,YAAY5B,MAAc,SAAYA,IAAYhP,IACvD,KAAK,YAAYiP,MAAc,SAAYA,IAAYjP,IAEvD,KAAK,QAAQ,IACb,KAAK,kBAAkB,IAEvB,KAAK,kBAAkB;AAAA,EAExB;AAAA,EAGA,KAAMoP,GAAS;AAEd,iBAAM,KAAMA,CAAM,GAElB,KAAK,kBAAkBA,EAAO,iBAEvB;AAAA,EAER;AAAA,EAEA,OAAQd,GAAO;AAEd,UAAMH,IAAO,MAAM,OAAQG,CAAI;AAE/B,WAAK,KAAK,oBAAoB,SAAOH,EAAK,kBAAkB,KAAK,kBAE1DA;AAAA,EAER;AAED;AA8CA,MAAM0hC,KAA6B,oBAAIjhC,GAAO,GAExCkhC,KAAmC,oBAAIF,GAAc,GAAG,CAAC;AAC/DE,GAAmB,kBAAkB9qC;AAErC,MAAM+qC,KAAkC,oBAAI/+B,GAAgB,GACtDg/B,KAA+B,oBAAI/+B,GAAa,GAChDg/B,KAAiC,oBAAIhe,GAAW,GAMhDie,KAAgB,CAAA,GAChBC,KAAgB,CAAA,GAIhBC,KAAY,IAAI,aAAc,EAAE,GAChCC,KAAY,IAAI,aAAc,CAAC,GAC/BC,KAAY,IAAI,aAAc,CAAC;AAIrC,SAASC,GAAStqC,GAAOuqC,GAASC,GAAY;AAE7C,QAAMC,IAAYzqC,EAAO,CAAC;AAE1B,MAAKyqC,KAAa,KAAKA,IAAY,EAAI,QAAOzqC;AAI9C,QAAMgB,IAAIupC,IAAUC;AACpB,MAAI1kC,IAAImkC,GAAejpC,CAAC;AASxB,MAPK8E,MAAM,WAEVA,IAAI,IAAI,aAAc9E,CAAC,GACvBipC,GAAejpC,CAAC,IAAK8E,IAIjBykC,MAAY,GAAI;AAEpB,IAAAE,EAAU,QAAS3kC,GAAG,CAAC;AAEvB,aAAU7F,IAAI,GAAG0C,IAAS,GAAG1C,MAAMsqC,GAAS,EAAGtqC;AAE9C,MAAA0C,KAAU6nC,GACVxqC,EAAOC,CAAC,EAAG,QAAS6F,GAAGnD,CAAM;AAAA,EAI/B;AAEA,SAAOmD;AAER;AAEA,SAAS4kC,GAAa5oC,GAAGC,GAAI;AAE5B,MAAKD,EAAE,WAAWC,EAAE,OAAS,QAAO;AAEpC,WAAU9B,IAAI,GAAGC,IAAI4B,EAAE,QAAQ7B,IAAIC,GAAGD;AAErC,QAAK6B,EAAG7B,CAAC,MAAO8B,EAAG9B,CAAC,EAAK,QAAO;AAIjC,SAAO;AAER;AAEA,SAAS0qC,GAAW7oC,GAAGC,GAAI;AAE1B,WAAU9B,IAAI,GAAGC,IAAI6B,EAAE,QAAQ9B,IAAIC,GAAGD;AAErC,IAAA6B,EAAG7B,CAAC,IAAK8B,EAAG9B,CAAC;AAIf;AAIA,SAAS2qC,GAAextB,GAAUpc,GAAI;AAErC,MAAI8E,IAAIokC,GAAelpC,CAAC;AAExB,EAAK8E,MAAM,WAEVA,IAAI,IAAI,WAAY9E,CAAC,GACrBkpC,GAAelpC,CAAC,IAAK8E;AAItB,WAAU7F,IAAI,GAAGA,MAAMe,GAAG,EAAGf;AAE5B,IAAA6F,EAAG7F,CAAC,IAAKmd,EAAS,oBAAmB;AAItC,SAAOtX;AAER;AASA,SAAS+kC,GAAa1b,GAAIvtB,GAAI;AAE7B,QAAM6b,IAAQ,KAAK;AAEnB,EAAKA,EAAO,CAAC,MAAO7b,MAEpButB,EAAG,UAAW,KAAK,MAAMvtB,CAAC,GAE1B6b,EAAO,CAAC,IAAK7b;AAEd;AAIA,SAASkpC,GAAa3b,GAAIvtB,GAAI;AAE7B,QAAM6b,IAAQ,KAAK;AAEnB,MAAK7b,EAAE,MAAM;AAEZ,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,OAE3CutB,EAAG,UAAW,KAAK,MAAMvtB,EAAE,GAAGA,EAAE,CAAC,GAEjC6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE;AAAA,OAIV;AAEN,QAAK8oC,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC,GAE3B+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB;AAED;AAEA,SAASmpC,GAAa5b,GAAIvtB,GAAI;AAE7B,QAAM6b,IAAQ,KAAK;AAEnB,MAAK7b,EAAE,MAAM;AAEZ,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,OAEjEutB,EAAG,UAAW,KAAK,MAAMvtB,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,GAEtC6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE;AAAA,WAILA,EAAE,MAAM;AAEnB,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,OAEjEutB,EAAG,UAAW,KAAK,MAAMvtB,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,GAEtC6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE;AAAA,OAIV;AAEN,QAAK8oC,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC,GAE3B+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB;AAED;AAEA,SAASopC,GAAa7b,GAAIvtB,GAAI;AAE7B,QAAM6b,IAAQ,KAAK;AAEnB,MAAK7b,EAAE,MAAM;AAEZ,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,OAEvFutB,EAAG,UAAW,KAAK,MAAMvtB,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,GAE3C6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE;AAAA,OAIV;AAEN,QAAK8oC,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC,GAE3B+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB;AAED;AAIA,SAASqpC,GAAY9b,GAAIvtB,GAAI;AAE5B,QAAM6b,IAAQ,KAAK,OACbytB,IAAWtpC,EAAE;AAEnB,MAAKspC,MAAa,QAAY;AAE7B,QAAKR,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,iBAAkB,KAAK,MAAM,IAAOvtB,CAAC,GAExC+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB,OAAO;AAEN,QAAK8oC,GAAajtB,GAAOytB,GAAa;AAEtC,IAAAb,GAAU,IAAKa,CAAQ,GAEvB/b,EAAG,iBAAkB,KAAK,MAAM,IAAOkb,EAAS,GAEhDM,GAAWltB,GAAOytB,CAAQ;AAAA,EAE3B;AAED;AAEA,SAASC,GAAYhc,GAAIvtB,GAAI;AAE5B,QAAM6b,IAAQ,KAAK,OACbytB,IAAWtpC,EAAE;AAEnB,MAAKspC,MAAa,QAAY;AAE7B,QAAKR,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,iBAAkB,KAAK,MAAM,IAAOvtB,CAAC,GAExC+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB,OAAO;AAEN,QAAK8oC,GAAajtB,GAAOytB,GAAa;AAEtC,IAAAd,GAAU,IAAKc,CAAQ,GAEvB/b,EAAG,iBAAkB,KAAK,MAAM,IAAOib,EAAS,GAEhDO,GAAWltB,GAAOytB,CAAQ;AAAA,EAE3B;AAED;AAEA,SAASE,GAAYjc,GAAIvtB,GAAI;AAE5B,QAAM6b,IAAQ,KAAK,OACbytB,IAAWtpC,EAAE;AAEnB,MAAKspC,MAAa,QAAY;AAE7B,QAAKR,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,iBAAkB,KAAK,MAAM,IAAOvtB,CAAC,GAExC+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB,OAAO;AAEN,QAAK8oC,GAAajtB,GAAOytB,GAAa;AAEtC,IAAAf,GAAU,IAAKe,CAAQ,GAEvB/b,EAAG,iBAAkB,KAAK,MAAM,IAAOgb,EAAS,GAEhDQ,GAAWltB,GAAOytB,CAAQ;AAAA,EAE3B;AAED;AAIA,SAASG,GAAalc,GAAIvtB,GAAI;AAE7B,QAAM6b,IAAQ,KAAK;AAEnB,EAAKA,EAAO,CAAC,MAAO7b,MAEpButB,EAAG,UAAW,KAAK,MAAMvtB,CAAC,GAE1B6b,EAAO,CAAC,IAAK7b;AAEd;AAIA,SAAS0pC,GAAanc,GAAIvtB,GAAI;AAE7B,QAAM6b,IAAQ,KAAK;AAEnB,MAAK7b,EAAE,MAAM;AAEZ,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,OAE3CutB,EAAG,UAAW,KAAK,MAAMvtB,EAAE,GAAGA,EAAE,CAAC,GAEjC6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE;AAAA,OAIV;AAEN,QAAK8oC,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC,GAE3B+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB;AAED;AAEA,SAAS2pC,GAAapc,GAAIvtB,GAAI;AAE7B,QAAM6b,IAAQ,KAAK;AAEnB,MAAK7b,EAAE,MAAM;AAEZ,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,OAEjEutB,EAAG,UAAW,KAAK,MAAMvtB,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,GAEtC6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE;AAAA,OAIV;AAEN,QAAK8oC,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC,GAE3B+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB;AAED;AAEA,SAAS4pC,GAAarc,GAAIvtB,GAAI;AAE7B,QAAM6b,IAAQ,KAAK;AAEnB,MAAK7b,EAAE,MAAM;AAEZ,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,OAEvFutB,EAAG,UAAW,KAAK,MAAMvtB,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,GAE3C6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE;AAAA,OAIV;AAEN,QAAK8oC,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC,GAE3B+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB;AAED;AAIA,SAAS6pC,GAActc,GAAIvtB,GAAI;AAE9B,QAAM6b,IAAQ,KAAK;AAEnB,EAAKA,EAAO,CAAC,MAAO7b,MAEpButB,EAAG,WAAY,KAAK,MAAMvtB,CAAC,GAE3B6b,EAAO,CAAC,IAAK7b;AAEd;AAIA,SAAS8pC,GAAcvc,GAAIvtB,GAAI;AAE9B,QAAM6b,IAAQ,KAAK;AAEnB,MAAK7b,EAAE,MAAM;AAEZ,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,OAE3CutB,EAAG,WAAY,KAAK,MAAMvtB,EAAE,GAAGA,EAAE,CAAC,GAElC6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE;AAAA,OAIV;AAEN,QAAK8oC,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,YAAa,KAAK,MAAMvtB,CAAC,GAE5B+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB;AAED;AAEA,SAAS+pC,GAAcxc,GAAIvtB,GAAI;AAE9B,QAAM6b,IAAQ,KAAK;AAEnB,MAAK7b,EAAE,MAAM;AAEZ,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,OAEjEutB,EAAG,WAAY,KAAK,MAAMvtB,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,GAEvC6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE;AAAA,OAIV;AAEN,QAAK8oC,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,YAAa,KAAK,MAAMvtB,CAAC,GAE5B+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB;AAED;AAEA,SAASgqC,GAAczc,GAAIvtB,GAAI;AAE9B,QAAM6b,IAAQ,KAAK;AAEnB,MAAK7b,EAAE,MAAM;AAEZ,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,KAAK6b,EAAO,CAAC,MAAO7b,EAAE,OAEvFutB,EAAG,WAAY,KAAK,MAAMvtB,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,GAE5C6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE,GACf6b,EAAO,KAAM7b,EAAE;AAAA,OAIV;AAEN,QAAK8oC,GAAajtB,GAAO7b,GAAM;AAE/B,IAAAutB,EAAG,YAAa,KAAK,MAAMvtB,CAAC,GAE5B+oC,GAAWltB,GAAO7b,CAAC;AAAA,EAEpB;AAED;AAKA,SAASiqC,GAAY1c,GAAIvtB,GAAGwb,GAAW;AAEtC,QAAMK,IAAQ,KAAK,OACbquB,IAAO1uB,EAAS,oBAAmB;AAEzC,EAAKK,EAAO,CAAC,MAAOquB,MAEnB3c,EAAG,UAAW,KAAK,MAAM2c,CAAI,GAC7BruB,EAAO,CAAC,IAAKquB;AAId,QAAMC,IAAmB,KAAK,SAAS5c,EAAG,oBAAsB0a,KAAqBD;AAErF,EAAAxsB,EAAS,aAAcxb,KAAKmqC,GAAgBD,CAAI;AAEjD;AAEA,SAASE,GAAc7c,GAAIvtB,GAAGwb,GAAW;AAExC,QAAMK,IAAQ,KAAK,OACbquB,IAAO1uB,EAAS,oBAAmB;AAEzC,EAAKK,EAAO,CAAC,MAAOquB,MAEnB3c,EAAG,UAAW,KAAK,MAAM2c,CAAI,GAC7BruB,EAAO,CAAC,IAAKquB,IAId1uB,EAAS,aAAcxb,KAAKmoC,IAAgB+B,CAAI;AAEjD;AAEA,SAASG,GAAY9c,GAAIvtB,GAAGwb,GAAW;AAEtC,QAAMK,IAAQ,KAAK,OACbquB,IAAO1uB,EAAS,oBAAmB;AAEzC,EAAKK,EAAO,CAAC,MAAOquB,MAEnB3c,EAAG,UAAW,KAAK,MAAM2c,CAAI,GAC7BruB,EAAO,CAAC,IAAKquB,IAId1uB,EAAS,eAAgBxb,KAAKooC,IAAkB8B,CAAI;AAErD;AAEA,SAASI,GAAmB/c,GAAIvtB,GAAGwb,GAAW;AAE7C,QAAMK,IAAQ,KAAK,OACbquB,IAAO1uB,EAAS,oBAAmB;AAEzC,EAAKK,EAAO,CAAC,MAAOquB,MAEnB3c,EAAG,UAAW,KAAK,MAAM2c,CAAI,GAC7BruB,EAAO,CAAC,IAAKquB,IAId1uB,EAAS,kBAAmBxb,KAAKkoC,IAAmBgC,CAAI;AAEzD;AAIA,SAASK,GAAmBzsC,GAAO;AAElC,UAASA,GAAI;AAAA,IAEZ,KAAK;AAAQ,aAAOmrC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IAEpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOE;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IAEpB,KAAK;AAAA,IAAQ,KAAK;AAAQ,aAAOC;AAAA,IACjC,KAAK;AAAA,IAAQ,KAAK;AAAQ,aAAOC;AAAA,IACjC,KAAK;AAAA,IAAQ,KAAK;AAAQ,aAAOC;AAAA,IACjC,KAAK;AAAA,IAAQ,KAAK;AAAQ,aAAOC;AAAA,IAEjC,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IAEpB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,aAAOC;AAAA,IAER,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,aAAOG;AAAA,IAER,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,aAAOC;AAAA,IAER,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,aAAOC;AAAA,EAEV;AAEA;AAKA,SAASE,GAAkBjd,GAAIvtB,GAAI;AAElC,EAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC;AAE5B;AAIA,SAASyqC,GAAkBld,GAAIvtB,GAAI;AAElC,QAAMsG,IAAOoiC,GAAS1oC,GAAG,KAAK,MAAM,CAAC;AAErC,EAAAutB,EAAG,WAAY,KAAK,MAAMjnB,CAAI;AAE/B;AAEA,SAASokC,GAAkBnd,GAAIvtB,GAAI;AAElC,QAAMsG,IAAOoiC,GAAS1oC,GAAG,KAAK,MAAM,CAAC;AAErC,EAAAutB,EAAG,WAAY,KAAK,MAAMjnB,CAAI;AAE/B;AAEA,SAASqkC,GAAkBpd,GAAIvtB,GAAI;AAElC,QAAMsG,IAAOoiC,GAAS1oC,GAAG,KAAK,MAAM,CAAC;AAErC,EAAAutB,EAAG,WAAY,KAAK,MAAMjnB,CAAI;AAE/B;AAIA,SAASskC,GAAiBrd,GAAIvtB,GAAI;AAEjC,QAAMsG,IAAOoiC,GAAS1oC,GAAG,KAAK,MAAM,CAAC;AAErC,EAAAutB,EAAG,iBAAkB,KAAK,MAAM,IAAOjnB,CAAI;AAE5C;AAEA,SAASukC,GAAiBtd,GAAIvtB,GAAI;AAEjC,QAAMsG,IAAOoiC,GAAS1oC,GAAG,KAAK,MAAM,CAAC;AAErC,EAAAutB,EAAG,iBAAkB,KAAK,MAAM,IAAOjnB,CAAI;AAE5C;AAEA,SAASwkC,GAAiBvd,GAAIvtB,GAAI;AAEjC,QAAMsG,IAAOoiC,GAAS1oC,GAAG,KAAK,MAAM,EAAE;AAEtC,EAAAutB,EAAG,iBAAkB,KAAK,MAAM,IAAOjnB,CAAI;AAE5C;AAIA,SAASykC,GAAkBxd,GAAIvtB,GAAI;AAElC,EAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC;AAE5B;AAIA,SAASgrC,GAAkBzd,GAAIvtB,GAAI;AAElC,EAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC;AAE5B;AAEA,SAASirC,GAAkB1d,GAAIvtB,GAAI;AAElC,EAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC;AAE5B;AAEA,SAASkrC,GAAkB3d,GAAIvtB,GAAI;AAElC,EAAAutB,EAAG,WAAY,KAAK,MAAMvtB,CAAC;AAE5B;AAIA,SAASmrC,GAAmB5d,GAAIvtB,GAAI;AAEnC,EAAAutB,EAAG,YAAa,KAAK,MAAMvtB,CAAC;AAE7B;AAIA,SAASorC,GAAmB7d,GAAIvtB,GAAI;AAEnC,EAAAutB,EAAG,YAAa,KAAK,MAAMvtB,CAAC;AAE7B;AAEA,SAASqrC,GAAmB9d,GAAIvtB,GAAI;AAEnC,EAAAutB,EAAG,YAAa,KAAK,MAAMvtB,CAAC;AAE7B;AAEA,SAASsrC,GAAmB/d,GAAIvtB,GAAI;AAEnC,EAAAutB,EAAG,YAAa,KAAK,MAAMvtB,CAAC;AAE7B;AAKA,SAASurC,GAAiBhe,GAAIvtB,GAAGwb,GAAW;AAE3C,QAAMK,IAAQ,KAAK,OAEbzc,IAAIY,EAAE,QAENwrC,IAAQxC,GAAextB,GAAUpc,CAAC;AAExC,EAAO0pC,GAAajtB,GAAO2vB,OAE1Bje,EAAG,WAAY,KAAK,MAAMie,CAAK,GAE/BzC,GAAWltB,GAAO2vB,CAAK;AAIxB,WAAUntC,IAAI,GAAGA,MAAMe,GAAG,EAAGf;AAE5B,IAAAmd,EAAS,aAAcxb,EAAG3B,CAAC,KAAM2pC,IAAcwD,EAAOntC,EAAG;AAI3D;AAEA,SAASotC,GAAkBle,GAAIvtB,GAAGwb,GAAW;AAE5C,QAAMK,IAAQ,KAAK,OAEbzc,IAAIY,EAAE,QAENwrC,IAAQxC,GAAextB,GAAUpc,CAAC;AAExC,EAAO0pC,GAAajtB,GAAO2vB,OAE1Bje,EAAG,WAAY,KAAK,MAAMie,CAAK,GAE/BzC,GAAWltB,GAAO2vB,CAAK;AAIxB,WAAUntC,IAAI,GAAGA,MAAMe,GAAG,EAAGf;AAE5B,IAAAmd,EAAS,aAAcxb,EAAG3B,CAAC,KAAM8pC,IAAgBqD,EAAOntC,EAAG;AAI7D;AAEA,SAASqtC,GAAiBne,GAAIvtB,GAAGwb,GAAW;AAE3C,QAAMK,IAAQ,KAAK,OAEbzc,IAAIY,EAAE,QAENwrC,IAAQxC,GAAextB,GAAUpc,CAAC;AAExC,EAAO0pC,GAAajtB,GAAO2vB,OAE1Bje,EAAG,WAAY,KAAK,MAAMie,CAAK,GAE/BzC,GAAWltB,GAAO2vB,CAAK;AAIxB,WAAUntC,IAAI,GAAGA,MAAMe,GAAG,EAAGf;AAE5B,IAAAmd,EAAS,eAAgBxb,EAAG3B,CAAC,KAAM+pC,IAAkBoD,EAAOntC,EAAG;AAIjE;AAEA,SAASstC,GAAuBpe,GAAIvtB,GAAGwb,GAAW;AAEjD,QAAMK,IAAQ,KAAK,OAEbzc,IAAIY,EAAE,QAENwrC,IAAQxC,GAAextB,GAAUpc,CAAC;AAExC,EAAO0pC,GAAajtB,GAAO2vB,OAE1Bje,EAAG,WAAY,KAAK,MAAMie,CAAK,GAE/BzC,GAAWltB,GAAO2vB,CAAK;AAIxB,WAAUntC,IAAI,GAAGA,MAAMe,GAAG,EAAGf;AAE5B,IAAAmd,EAAS,kBAAmBxb,EAAG3B,CAAC,KAAM6pC,IAAmBsD,EAAOntC,EAAG;AAIrE;AAKA,SAASutC,GAAoB9tC,GAAO;AAEnC,UAASA,GAAI;AAAA,IAEZ,KAAK;AAAQ,aAAO0sC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IAEpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IAEpB,KAAK;AAAA,IAAQ,KAAK;AAAQ,aAAOC;AAAA,IACjC,KAAK;AAAA,IAAQ,KAAK;AAAQ,aAAOC;AAAA,IACjC,KAAK;AAAA,IAAQ,KAAK;AAAQ,aAAOC;AAAA,IACjC,KAAK;AAAA,IAAQ,KAAK;AAAQ,aAAOC;AAAA,IAEjC,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IACpB,KAAK;AAAQ,aAAOC;AAAA,IAEpB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,aAAOC;AAAA,IAER,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,aAAOE;AAAA,IAER,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,aAAOC;AAAA,IAER,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,aAAOC;AAAA,EAEV;AAEA;AAIA,MAAME,GAAc;AAAA,EAEnB,YAAavxB,GAAIwxB,GAAYC,GAAO;AAEnC,SAAK,KAAKzxB,GACV,KAAK,OAAOyxB,GACZ,KAAK,QAAQ,CAAA,GACb,KAAK,OAAOD,EAAW,MACvB,KAAK,WAAWvB,GAAmBuB,EAAW,IAAI;AAAA,EAInD;AAED;AAEA,MAAME,GAAiB;AAAA,EAEtB,YAAa1xB,GAAIwxB,GAAYC,GAAO;AAEnC,SAAK,KAAKzxB,GACV,KAAK,OAAOyxB,GACZ,KAAK,QAAQ,CAAA,GACb,KAAK,OAAOD,EAAW,MACvB,KAAK,OAAOA,EAAW,MACvB,KAAK,WAAWF,GAAoBE,EAAW,IAAI;AAAA,EAIpD;AAED;AAEA,MAAMG,GAAkB;AAAA,EAEvB,YAAa3xB,GAAK;AAEjB,SAAK,KAAKA,GAEV,KAAK,MAAM,CAAA,GACX,KAAK,MAAM,CAAA;AAAA,EAEZ;AAAA,EAEA,SAAUiT,GAAIvuB,GAAOwc,GAAW;AAE/B,UAAM0wB,IAAM,KAAK;AAEjB,aAAU7tC,IAAI,GAAGe,IAAI8sC,EAAI,QAAQ7tC,MAAMe,GAAG,EAAGf,GAAI;AAEhD,YAAMqQ,IAAIw9B,EAAK7tC,CAAC;AAChB,MAAAqQ,EAAE,SAAU6e,GAAIvuB,EAAO0P,EAAE,EAAE,GAAI8M,CAAQ;AAAA,IAExC;AAAA,EAED;AAED;AAMA,MAAM2wB,KAAa;AAWnB,SAASC,GAAYC,GAAWC,GAAgB;AAE/C,EAAAD,EAAU,IAAI,KAAMC,CAAa,GACjCD,EAAU,IAAKC,EAAc,EAAE,IAAKA;AAErC;AAEA,SAASC,GAAcT,GAAYC,GAAMM,GAAY;AAEpD,QAAMG,IAAOV,EAAW,MACvBW,IAAaD,EAAK;AAKnB,OAFAL,GAAW,YAAY,OAER;AAEd,UAAMO,IAAQP,GAAW,KAAMK,CAAI,GAClCG,IAAWR,GAAW;AAEvB,QAAI7xB,IAAKoyB,EAAO,CAAC;AACjB,UAAME,IAAYF,EAAO,CAAC,MAAO,KAChCG,IAAYH,EAAO,CAAC;AAIrB,QAFKE,MAAYtyB,IAAKA,IAAK,IAEtBuyB,MAAc,UAAaA,MAAc,OAAOF,IAAW,MAAMF,GAAa;AAIlF,MAAAL,GAAYC,GAAWQ,MAAc,SACpC,IAAIhB,GAAevxB,GAAIwxB,GAAYC,CAAI,IACvC,IAAIC,GAAkB1xB,GAAIwxB,GAAYC,CAAI,CAAE;AAE7C;AAAA,IAED,OAAO;AAKN,UAAIe,IADQT,EAAU,IACN/xB,CAAE;AAElB,MAAKwyB,MAAS,WAEbA,IAAO,IAAIb,GAAmB3xB,CAAE,GAChC8xB,GAAYC,GAAWS,CAAI,IAI5BT,IAAYS;AAAA,IAEb;AAAA,EAED;AAED;AAIA,MAAMC,GAAc;AAAA,EAEnB,YAAaxf,GAAIkM,GAAU;AAE1B,SAAK,MAAM,CAAA,GACX,KAAK,MAAM,CAAA;AAEX,UAAM,IAAIlM,EAAG,oBAAqBkM,GAASlM,EAAG,eAAe;AAE7D,aAAUlvB,IAAI,GAAGA,IAAI,GAAG,EAAGA,GAAI;AAE9B,YAAM69B,IAAO3O,EAAG,iBAAkBkM,GAASp7B,CAAC,GAC3C0tC,IAAOxe,EAAG,mBAAoBkM,GAASyC,EAAK,IAAI;AAEjD,MAAAqQ,GAAcrQ,GAAM6P,GAAM,IAAI;AAAA,IAE/B;AAAA,EAED;AAAA,EAEA,SAAUxe,GAAIzoB,GAAM9F,GAAOwc,GAAW;AAErC,UAAM9M,IAAI,KAAK,IAAK5J,CAAI;AAExB,IAAK4J,MAAM,UAAYA,EAAE,SAAU6e,GAAIvuB,GAAOwc,CAAQ;AAAA,EAEvD;AAAA,EAEA,YAAa+R,GAAIte,GAAQnK,GAAO;AAE/B,UAAM9E,IAAIiP,EAAQnK,CAAI;AAEtB,IAAK9E,MAAM,UAAY,KAAK,SAAUutB,GAAIzoB,GAAM9E,CAAC;AAAA,EAElD;AAAA,EAEA,OAAO,OAAQutB,GAAI2e,GAAKpwB,GAAQN,GAAW;AAE1C,aAAUnd,IAAI,GAAGe,IAAI8sC,EAAI,QAAQ7tC,MAAMe,GAAG,EAAGf,GAAI;AAEhD,YAAMqQ,IAAIw9B,EAAK7tC,CAAC,GACf2B,IAAI8b,EAAQpN,EAAE,EAAE;AAEjB,MAAK1O,EAAE,gBAAgB,MAGtB0O,EAAE,SAAU6e,GAAIvtB,EAAE,OAAOwb,CAAQ;AAAA,IAInC;AAAA,EAED;AAAA,EAEA,OAAO,aAAc0wB,GAAKpwB,GAAS;AAElC,UAAM5X,IAAI,CAAA;AAEV,aAAU7F,IAAI,GAAGe,IAAI8sC,EAAI,QAAQ7tC,MAAMe,GAAG,EAAGf,GAAI;AAEhD,YAAMqQ,IAAIw9B,EAAK7tC,CAAC;AAChB,MAAKqQ,EAAE,MAAMoN,KAAS5X,EAAE,KAAMwK,CAAC;AAAA,IAEhC;AAEA,WAAOxK;AAAA,EAER;AAED;AAEA,SAAS8oC,GAAazf,GAAIzvB,GAAM6gB,GAAS;AAExC,QAAM4L,IAASgD,EAAG,aAAczvB,CAAI;AAEpC,SAAAyvB,EAAG,aAAchD,GAAQ5L,CAAM,GAC/B4O,EAAG,cAAehD,CAAM,GAEjBA;AAER;AAGA,MAAM0iB,KAAwB;AAE9B,IAAIC,KAAiB;AAErB,SAASC,GAAcxuB,GAAQyuB,GAAY;AAE1C,QAAMC,IAAQ1uB,EAAO,MAAO;AAAA,CAAI,GAC1B2uB,IAAS,CAAA,GAETC,IAAO,KAAK,IAAKH,IAAY,GAAG,CAAC,GACjCI,IAAK,KAAK,IAAKJ,IAAY,GAAGC,EAAM,MAAM;AAEhD,WAAUhvC,IAAIkvC,GAAMlvC,IAAImvC,GAAInvC,KAAO;AAElC,UAAM4sB,IAAO5sB,IAAI;AACjB,IAAAivC,EAAO,KAAM,GAAGriB,MAASmiB,IAAY,MAAM,GAAG,IAAIniB,CAAI,KAAKoiB,EAAOhvC,CAAC,CAAE,EAAE;AAAA,EAExE;AAEA,SAAOivC,EAAO,KAAM;AAAA,CAAI;AAEzB;AAEA,SAASG,GAAuB/nC,GAAa;AAE5C,QAAMgoC,IAAmBjoC,GAAgB,aAAcA,GAAgB,iBAAiB,GAClFkoC,IAAoBloC,GAAgB,aAAcC,CAAU;AAElE,MAAIkoC;AAgBJ,UAdKF,MAAqBC,IAEzBC,IAAe,KAEJF,MAAqB7wC,MAAe8wC,MAAsB/wC,KAErEgxC,IAAe,gCAEJF,MAAqB9wC,MAAmB+wC,MAAsB9wC,OAEzE+wC,IAAe,gCAIPloC,GAAU;AAAA,IAElB,KAAKnJ;AAAA,IACL,KAAKE;AACJ,aAAO,CAAEmxC,GAAc,oBAAoB;AAAA,IAE5C,KAAKtxC;AAAA,IACL,KAAKE;AACJ,aAAO,CAAEoxC,GAAc,kBAAkB;AAAA,IAE1C;AACC,qBAAQ,KAAM,gDAAgDloC,CAAU,GACjE,CAAEkoC,GAAc,oBAAoB;AAAA,EAE9C;AAEA;AAEA,SAASC,GAAiBtgB,GAAIhD,GAAQzsB,GAAO;AAE5C,QAAMgwC,IAASvgB,EAAG,mBAAoBhD,GAAQgD,EAAG,cAAc,GACzDwgB,IAASxgB,EAAG,iBAAkBhD,CAAM,EAAG,KAAI;AAEjD,MAAKujB,KAAUC,MAAW,GAAK,QAAO;AAEtC,QAAMC,IAAe,iBAAiB,KAAMD,CAAM;AAClD,MAAKC,GAAe;AAKnB,UAAMZ,IAAY,SAAUY,EAAc,CAAC,CAAE;AAC7C,WAAOlwC,EAAK,gBAAgB;AAAA;AAAA,IAASiwC,IAAS;AAAA;AAAA,IAASZ,GAAc5f,EAAG,gBAAiBhD,CAAM,GAAI6iB,CAAS;AAAA,EAE7G;AAEC,WAAOW;AAIT;AAEA,SAASE,GAA0BC,GAAcxoC,GAAa;AAE7D,QAAMkZ,IAAa6uB,GAAuB/nC,CAAU;AACpD,SAAO,QAAQwoC,CAAY,2BAA2BtvB,EAAY,CAAC,CAAE,KAAKA,EAAY,CAAC,CAAE;AAE1F;AAEA,SAASuvB,GAAwBD,GAAcpM,GAAc;AAE5D,MAAIsM;AAEJ,UAAStM,GAAW;AAAA,IAEnB,KAAK1qC;AACJ,MAAAg3C,IAAkB;AAClB;AAAA,IAED,KAAK/2C;AACJ,MAAA+2C,IAAkB;AAClB;AAAA,IAED,KAAK92C;AACJ,MAAA82C,IAAkB;AAClB;AAAA,IAED,KAAK72C;AACJ,MAAA62C,IAAkB;AAClB;AAAA,IAED,KAAK32C;AACJ,MAAA22C,IAAkB;AAClB;AAAA,IAED,KAAK52C;AACJ,MAAA42C,IAAkB;AAClB;AAAA,IAED;AACC,cAAQ,KAAM,gDAAgDtM,CAAW,GACzEsM,IAAkB;AAAA,EAErB;AAEC,SAAO,UAAUF,IAAe,6BAA6BE,IAAkB;AAEhF;AAEA,SAASC,GAAoBrzB,GAAa;AASzC,SAPe;AAAA,IACZA,EAAW,wBAA2BA,EAAW,sBAAsBA,EAAW,WAAWA,EAAW,yBAAyBA,EAAW,sBAAsBA,EAAW,eAAeA,EAAW,aAAa,aAAe,oDAAoD;AAAA,KACvRA,EAAW,sBAAsBA,EAAW,2BAA4BA,EAAW,6BAA6B,0CAA0C;AAAA,IAC1JA,EAAW,wBAAwBA,EAAW,+BAAiC,6CAA6C;AAAA,KAC5HA,EAAW,6BAA6BA,EAAW,UAAUA,EAAW,iBAAkBA,EAAW,oCAAoC,kDAAkD;AAAA,EAC/L,EAEe,OAAQszB,EAAe,EAAG,KAAM;AAAA,CAAI;AAEnD;AAEA,SAASC,GAA0BvzB,GAAa;AAM/C,SAJe;AAAA,IACdA,EAAW,4BAA4B,qDAAqD;AAAA,EAC9F,EAEe,OAAQszB,EAAe,EAAG,KAAM;AAAA,CAAI;AAEnD;AAEA,SAASE,GAAiBC,GAAU;AAEnC,QAAMC,IAAS,CAAA;AAEf,aAAY5pC,KAAQ2pC,GAAU;AAE7B,UAAMzvC,IAAQyvC,EAAS3pC,CAAI;AAE3B,IAAK9F,MAAU,MAEf0vC,EAAO,KAAM,aAAa5pC,IAAO,MAAM9F,CAAK;AAAA,EAE7C;AAEA,SAAO0vC,EAAO,KAAM;AAAA,CAAI;AAEzB;AAEA,SAASC,GAAyBphB,GAAIkM,GAAU;AAE/C,QAAMnY,IAAa,CAAA,GAEb,IAAIiM,EAAG,oBAAqBkM,GAASlM,EAAG,iBAAiB;AAE/D,WAAUlvB,IAAI,GAAGA,IAAI,GAAGA,KAAO;AAE9B,UAAM69B,IAAO3O,EAAG,gBAAiBkM,GAASp7B,CAAC,GACrCyG,IAAOo3B,EAAK;AAElB,QAAI0S,IAAe;AACnB,IAAK1S,EAAK,SAAS3O,EAAG,eAAaqhB,IAAe,IAC7C1S,EAAK,SAAS3O,EAAG,eAAaqhB,IAAe,IAC7C1S,EAAK,SAAS3O,EAAG,eAAaqhB,IAAe,IAIlDttB,EAAYxc,CAAI,IAAK;AAAA,MACpB,MAAMo3B,EAAK;AAAA,MACX,UAAU3O,EAAG,kBAAmBkM,GAAS30B,CAAI;AAAA,MAC7C,cAAc8pC;AAAA,IACjB;AAAA,EAEC;AAEA,SAAOttB;AAER;AAEA,SAASgtB,GAAiB3vB,GAAS;AAElC,SAAOA,MAAW;AAEnB;AAEA,SAASkwB,GAAkBlwB,GAAQ3D,GAAa;AAE/C,QAAM8zB,IAAqB9zB,EAAW,sBAAsBA,EAAW,mBAAmBA,EAAW;AAErG,SAAO2D,EACL,QAAS,mBAAmB3D,EAAW,YAAY,EACnD,QAAS,oBAAoBA,EAAW,aAAa,EACrD,QAAS,wBAAwBA,EAAW,gBAAgB,EAC5D,QAAS,0BAA0B8zB,CAAkB,EACrD,QAAS,yBAAyB9zB,EAAW,iBAAiB,EAC9D,QAAS,qBAAqBA,EAAW,cAAc,EACvD,QAAS,oBAAoBA,EAAW,aAAa,EACrD,QAAS,0BAA0BA,EAAW,kBAAkB,EAChE,QAAS,qCAAqCA,EAAW,2BAA2B,EACpF,QAAS,2BAA2BA,EAAW,mBAAmB,EAClE,QAAS,4BAA4BA,EAAW,oBAAoB;AAEvE;AAEA,SAAS+zB,GAA0BpwB,GAAQ3D,GAAa;AAEvD,SAAO2D,EACL,QAAS,wBAAwB3D,EAAW,iBAAiB,EAC7D,QAAS,0BAA4BA,EAAW,oBAAoBA,EAAW,mBAAmB;AAErG;AAIA,MAAMg0B,KAAiB;AAEvB,SAASC,GAAiBtwB,GAAS;AAElC,SAAOA,EAAO,QAASqwB,IAAgBE,EAAe;AAEvD;AAEA,MAAMC,KAAiB,oBAAI,IAAK;AAAA,EAC/B,CAAE,sBAAsB,qBAAqB;AAAA;AAAA,EAC7C,CAAE,2BAA2B,0BAA0B;AAAA;AAAA,EACvD,CAAE,mBAAmB,iBAAiB;AAAA;AACvC,CAAC;AAED,SAASD,GAAiBxC,GAAO0C,GAAU;AAE1C,MAAIzwB,IAAS6Y,GAAa4X,CAAO;AAEjC,MAAKzwB,MAAW,QAAY;AAE3B,UAAM0wB,IAAaF,GAAe,IAAKC,CAAO;AAE9C,QAAKC,MAAe;AAEnB,MAAA1wB,IAAS6Y,GAAa6X,CAAU,GAChC,QAAQ,KAAM,iFAAiFD,GAASC,CAAU;AAAA;AAIlH,YAAM,IAAI,MAAO,+BAA+BD,IAAU,GAAG;AAAA,EAI/D;AAEA,SAAOH,GAAiBtwB,CAAM;AAE/B;AAIA,MAAM2wB,KAAoB;AAE1B,SAASC,GAAa5wB,GAAS;AAE9B,SAAOA,EAAO,QAAS2wB,IAAmBE,EAAY;AAEvD;AAEA,SAASA,GAAc9C,GAAO3sB,GAAOgG,GAAK0pB,GAAU;AAEnD,MAAI9wB,IAAS;AAEb,WAAUtgB,IAAI,SAAU0hB,CAAK,GAAI1hB,IAAI,SAAU0nB,IAAO1nB;AAErD,IAAAsgB,KAAU8wB,EACR,QAAS,gBAAgB,OAAOpxC,IAAI,IAAI,EACxC,QAAS,wBAAwBA,CAAC;AAIrC,SAAOsgB;AAER;AAIA,SAAS+wB,GAAmB10B,GAAa;AAExC,MAAI20B,IAAkB,eAAe30B,EAAW,YAAY;AAAA,cAAwBA,EAAW,YAAY;AAE3G,SAAKA,EAAW,cAAc,UAE7B20B,KAAmB;AAAA,0BAER30B,EAAW,cAAc,YAEpC20B,KAAmB;AAAA,4BAER30B,EAAW,cAAc,WAEpC20B,KAAmB;AAAA,yBAIbA;AAER;AAEA,SAASC,GAA6B50B,GAAa;AAElD,MAAI60B,IAAsB;AAE1B,SAAK70B,EAAW,kBAAkBxmB,KAEjCq7C,IAAsB,uBAEX70B,EAAW,kBAAkBvmB,KAExCo7C,IAAsB,4BAEX70B,EAAW,kBAAkBtmB,OAExCm7C,IAAsB,uBAIhBA;AAER;AAEA,SAASC,GAA0B90B,GAAa;AAE/C,MAAI+0B,IAAmB;AAEvB,MAAK/0B,EAAW;AAEf,YAASA,EAAW,YAAU;AAAA,MAE7B,KAAKrjB;AAAA,MACL,KAAKC;AACJ,QAAAm4C,IAAmB;AACnB;AAAA,MAED,KAAKh4C;AACJ,QAAAg4C,IAAmB;AACnB;AAAA,IAEJ;AAIC,SAAOA;AAER;AAEA,SAASC,GAA0Bh1B,GAAa;AAE/C,MAAIi1B,IAAmB;AAEvB,MAAKj1B,EAAW;AAEf,YAASA,EAAW,YAAU;AAAA,MAE7B,KAAKpjB;AAEJ,QAAAq4C,IAAmB;AACnB;AAAA,IAEJ;AAIC,SAAOA;AAER;AAEA,SAASC,GAA8Bl1B,GAAa;AAEnD,MAAIm1B,IAAuB;AAE3B,MAAKn1B,EAAW;AAEf,YAASA,EAAW,SAAO;AAAA,MAE1B,KAAKhkB;AACJ,QAAAm5C,IAAuB;AACvB;AAAA,MAED,KAAKl5C;AACJ,QAAAk5C,IAAuB;AACvB;AAAA,MAED,KAAKj5C;AACJ,QAAAi5C,IAAuB;AACvB;AAAA,IAEJ;AAIC,SAAOA;AAER;AAEA,SAASC,GAAoBp1B,GAAa;AAEzC,QAAMq1B,IAAcr1B,EAAW;AAE/B,MAAKq1B,MAAgB,KAAO,QAAO;AAEnC,QAAMC,IAAS,KAAK,KAAMD,CAAW,IAAK,GAEpCE,IAAc,IAAMF;AAI1B,SAAO,EAAE,YAFU,KAAQ,IAAI,KAAK,IAAK,KAAK,IAAK,GAAGC,CAAM,GAAI,IAAI,EAAE,IAEjD,aAAAC,GAAa,QAAAD,EAAM;AAEzC;AAEA,SAASE,GAAcpoB,GAAUqoB,GAAUz1B,GAAYme,GAAgB;AAKtE,QAAM5L,IAAKnF,EAAS,WAAU,GAExBqmB,IAAUzzB,EAAW;AAE3B,MAAI01B,IAAe11B,EAAW,cAC1B21B,IAAiB31B,EAAW;AAEhC,QAAM60B,IAAsBD,GAA6B50B,CAAU,GAC7D+0B,IAAmBD,GAA0B90B,CAAU,GACvDi1B,IAAmBD,GAA0Bh1B,CAAU,GACvDm1B,IAAuBD,GAA8Bl1B,CAAU,GAC/D41B,IAAmBR,GAAoBp1B,CAAU,GAEjD61B,IAAmB71B,EAAW,WAAW,KAAKqzB,GAAoBrzB,CAAU,GAE5E81B,IAAyBvC,GAA0BvzB,CAAU,GAE7D+1B,IAAgBvC,GAAiBC,CAAO,GAExChV,IAAUlM,EAAG,cAAa;AAEhC,MAAIyjB,GAAcC,GACdC,IAAgBl2B,EAAW,cAAc,cAAcA,EAAW,cAAc;AAAA,IAAO;AAE3F,EAAKA,EAAW,uBAEfg2B,IAAe;AAAA,IAEd,yBAAyBh2B,EAAW;AAAA,IACpC,yBAAyBA,EAAW;AAAA,IAEpC+1B;AAAA,EAEH,EAAI,OAAQzC,IAAkB,KAAM;AAAA,CAAI,GAEjC0C,EAAa,SAAS,MAE1BA,KAAgB;AAAA,IAIjBC,IAAiB;AAAA,IAEhBJ;AAAA,IAEA,yBAAyB71B,EAAW;AAAA,IACpC,yBAAyBA,EAAW;AAAA,IAEpC+1B;AAAA,EAEH,EAAI,OAAQzC,IAAkB,KAAM;AAAA,CAAI,GAEjC2C,EAAe,SAAS,MAE5BA,KAAkB;AAAA,OAMnBD,IAAe;AAAA,IAEdtB,GAAmB10B,CAAU;AAAA,IAE7B,yBAAyBA,EAAW;AAAA,IACpC,yBAAyBA,EAAW;AAAA,IAEpC+1B;AAAA,IAEA/1B,EAAW,4BAA4B,8BAA8B;AAAA,IACrEA,EAAW,WAAW,yBAAyB;AAAA,IAC/CA,EAAW,aAAa,2BAA2B;AAAA,IACnDA,EAAW,kBAAkB,iCAAiC;AAAA,IAE9DA,EAAW,UAAUA,EAAW,MAAM,oBAAoB;AAAA,IAC1DA,EAAW,UAAUA,EAAW,UAAU,qBAAqB;AAAA,IAE/DA,EAAW,MAAM,oBAAoB;AAAA,IACrCA,EAAW,SAAS,uBAAuB;AAAA,IAC3CA,EAAW,SAAS,aAAai1B,IAAmB;AAAA,IACpDj1B,EAAW,WAAW,yBAAyB;AAAA,IAC/CA,EAAW,QAAQ,sBAAsB;AAAA,IACzCA,EAAW,UAAU,wBAAwB;AAAA,IAC7CA,EAAW,YAAY,0BAA0B;AAAA,IACjDA,EAAW,uBAAuB,sCAAsC;AAAA,IACxEA,EAAW,wBAAwB,uCAAuC;AAAA,IAC1EA,EAAW,kBAAkB,gCAAgC;AAAA,IAC7DA,EAAW,cAAc,4BAA4B;AAAA,IAErDA,EAAW,aAAa,2BAA2B;AAAA,IACnDA,EAAW,gBAAgB,8BAA8B;AAAA,IAEzDA,EAAW,eAAe,6BAA6B;AAAA,IACvDA,EAAW,wBAAwB,uCAAuC;AAAA,IAC1EA,EAAW,qBAAqB,oCAAoC;AAAA,IAEpEA,EAAW,iBAAiB,+BAA+B;AAAA,IAC3DA,EAAW,0BAA0B,yCAAyC;AAAA,IAE9EA,EAAW,cAAc,4BAA4B;AAAA,IACrDA,EAAW,mBAAmB,kCAAkC;AAAA,IAChEA,EAAW,uBAAuB,sCAAsC;AAAA,IAExEA,EAAW,eAAe,6BAA6B;AAAA,IACvDA,EAAW,eAAe,6BAA6B;AAAA,IACvDA,EAAW,WAAW,yBAAyB;AAAA,IAC/CA,EAAW,YAAY,0BAA0B;AAAA,IAEjDA,EAAW,eAAe,6BAA6B;AAAA,IACvDA,EAAW,kBAAkB,gCAAgC;AAAA,IAC7DA,EAAW,eAAe,6BAA6B;AAAA,IAEvDA,EAAW,gBAAgB,+BAA+B;AAAA,IAC1DA,EAAW,oBAAoB,mCAAmC;AAAA;AAAA,IAIlEA,EAAW,QAAQ,oBAAoBA,EAAW,QAAQ;AAAA,IAC1DA,EAAW,aAAa,yBAAyBA,EAAW,aAAa;AAAA,IACzEA,EAAW,aAAa,yBAAyBA,EAAW,aAAa;AAAA,IACzEA,EAAW,UAAU,sBAAsBA,EAAW,UAAU;AAAA,IAChEA,EAAW,gBAAgB,4BAA4BA,EAAW,gBAAgB;AAAA,IAClFA,EAAW,YAAY,wBAAwBA,EAAW,YAAY;AAAA,IACtEA,EAAW,cAAc,0BAA0BA,EAAW,cAAc;AAAA,IAC5EA,EAAW,oBAAoB,gCAAgCA,EAAW,oBAAoB;AAAA,IAE9FA,EAAW,iBAAiB,6BAA6BA,EAAW,iBAAiB;AAAA,IACrFA,EAAW,iBAAiB,6BAA6BA,EAAW,iBAAiB;AAAA,IAErFA,EAAW,kBAAkB,8BAA8BA,EAAW,kBAAkB;AAAA,IAExFA,EAAW,iBAAiB,6BAA6BA,EAAW,iBAAiB;AAAA,IACrFA,EAAW,uBAAuB,oCAAoCA,EAAW,uBAAuB;AAAA,IACxGA,EAAW,0BAA0B,uCAAuCA,EAAW,0BAA0B;AAAA,IAEjHA,EAAW,mBAAmB,+BAA+BA,EAAW,mBAAmB;AAAA,IAC3FA,EAAW,4BAA4B,yCAAyCA,EAAW,4BAA4B;AAAA,IAEvHA,EAAW,kBAAkB,+BAA+BA,EAAW,kBAAkB;AAAA,IACzFA,EAAW,sBAAsB,mCAAmCA,EAAW,sBAAsB;AAAA,IAErGA,EAAW,gBAAgB,4BAA4BA,EAAW,gBAAgB;AAAA,IAClFA,EAAW,qBAAqB,kCAAkCA,EAAW,qBAAqB;AAAA,IAClGA,EAAW,yBAAyB,sCAAsCA,EAAW,yBAAyB;AAAA,IAE9GA,EAAW,oBAAoB,gCAAgCA,EAAW,oBAAoB;AAAA,IAC9FA,EAAW,iBAAiB,6BAA6BA,EAAW,iBAAiB;AAAA;AAAA,IAIrFA,EAAW,kBAAkBA,EAAW,gBAAgB,KAAQ,wBAAwB;AAAA,IACxFA,EAAW,eAAe,sBAAsB;AAAA,IAChDA,EAAW,eAAe,4BAA4B;AAAA,IACtDA,EAAW,aAAa,oBAAoB;AAAA,IAC5CA,EAAW,aAAa,oBAAoB;AAAA,IAC5CA,EAAW,aAAa,oBAAoB;AAAA,IAE5CA,EAAW,YAAY,0BAA0B;AAAA,IAEjDA,EAAW,cAAc,wBAAwB;AAAA,IAEjDA,EAAW,WAAW,yBAAyB;AAAA,IAE/CA,EAAW,eAAe,6BAA6B;AAAA,IACvDA,EAAW,gBAAgBA,EAAW,gBAAgB,KAAQ,6BAA6B;AAAA,IACzFA,EAAW,eAAeA,EAAW,WAAa,4BAA4B;AAAA,IAC9EA,EAAW,oBAAoB,KAAKA,EAAW,WAAa,iCAAiC;AAAA,IAC7FA,EAAW,oBAAoB,KAAKA,EAAW,WAAa,yCAAyCA,EAAW,qBAAqB;AAAA,IACrIA,EAAW,oBAAoB,KAAKA,EAAW,WAAa,gCAAgCA,EAAW,oBAAoB;AAAA,IAC7HA,EAAW,cAAc,yBAAyB;AAAA,IAClDA,EAAW,YAAY,uBAAuB;AAAA,IAE9CA,EAAW,mBAAmB,0BAA0B;AAAA,IACxDA,EAAW,mBAAmB,aAAa60B,IAAsB;AAAA,IAEjE70B,EAAW,kBAAkB,gCAAgC;AAAA,IAE7DA,EAAW,iBAAiB,IAAI,6BAA6B;AAAA,IAE7DA,EAAW,kBAAkB,0BAA0B;AAAA,IAEvDA,EAAW,yBAAyB,4BAA4B;AAAA,IAC9DA,EAAW,0BAA0BA,EAAW,6BAA+B,gCAAgC;AAAA,IAEjH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,EAEH,EAAI,OAAQszB,IAAkB,KAAM;AAAA,CAAI,GAEtC2C,IAAiB;AAAA,IAEhBJ;AAAA,IAEAnB,GAAmB10B,CAAU;AAAA,IAE7B,yBAAyBA,EAAW;AAAA,IACpC,yBAAyBA,EAAW;AAAA,IAEpC+1B;AAAA,IAEA/1B,EAAW,UAAUA,EAAW,MAAM,oBAAoB;AAAA,IAC1DA,EAAW,UAAUA,EAAW,UAAU,qBAAqB;AAAA,IAE/DA,EAAW,MAAM,oBAAoB;AAAA,IACrCA,EAAW,SAAS,uBAAuB;AAAA,IAC3CA,EAAW,SAAS,uBAAuB;AAAA,IAC3CA,EAAW,SAAS,aAAa+0B,IAAmB;AAAA,IACpD/0B,EAAW,SAAS,aAAai1B,IAAmB;AAAA,IACpDj1B,EAAW,SAAS,aAAam1B,IAAuB;AAAA,IACxDS,IAAmB,gCAAgCA,EAAiB,aAAa;AAAA,IACjFA,IAAmB,iCAAiCA,EAAiB,cAAc;AAAA,IACnFA,IAAmB,4BAA4BA,EAAiB,SAAS,OAAO;AAAA,IAChF51B,EAAW,WAAW,yBAAyB;AAAA,IAC/CA,EAAW,QAAQ,sBAAsB;AAAA,IACzCA,EAAW,UAAU,wBAAwB;AAAA,IAC7CA,EAAW,YAAY,0BAA0B;AAAA,IACjDA,EAAW,uBAAuB,sCAAsC;AAAA,IACxEA,EAAW,wBAAwB,uCAAuC;AAAA,IAC1EA,EAAW,cAAc,4BAA4B;AAAA,IAErDA,EAAW,aAAa,2BAA2B;AAAA,IACnDA,EAAW,gBAAgB,8BAA8B;AAAA,IAEzDA,EAAW,YAAY,0BAA0B;AAAA,IACjDA,EAAW,eAAe,6BAA6B;AAAA,IACvDA,EAAW,wBAAwB,uCAAuC;AAAA,IAC1EA,EAAW,qBAAqB,oCAAoC;AAAA,IAEpEA,EAAW,cAAc,4BAA4B;AAAA,IACrDA,EAAW,iBAAiB,+BAA+B;AAAA,IAC3DA,EAAW,0BAA0B,yCAAyC;AAAA,IAE9EA,EAAW,cAAc,4BAA4B;AAAA,IACrDA,EAAW,mBAAmB,kCAAkC;AAAA,IAChEA,EAAW,uBAAuB,sCAAsC;AAAA,IAExEA,EAAW,eAAe,6BAA6B;AAAA,IACvDA,EAAW,eAAe,6BAA6B;AAAA,IAEvDA,EAAW,WAAW,yBAAyB;AAAA,IAC/CA,EAAW,YAAY,0BAA0B;AAAA,IACjDA,EAAW,YAAY,0BAA0B;AAAA,IAEjDA,EAAW,QAAQ,sBAAsB;AAAA,IACzCA,EAAW,gBAAgB,+BAA+B;AAAA,IAC1DA,EAAW,oBAAoB,mCAAmC;AAAA,IAElEA,EAAW,eAAe,6BAA6B;AAAA,IACvDA,EAAW,kBAAkB,gCAAgC;AAAA,IAC7DA,EAAW,eAAe,6BAA6B;AAAA,IAEvDA,EAAW,kBAAkBA,EAAW,gBAAgB,KAAQ,wBAAwB;AAAA,IACxFA,EAAW,gBAAgBA,EAAW,kBAAkB,sBAAsB;AAAA,IAC9EA,EAAW,eAAe,4BAA4B;AAAA,IACtDA,EAAW,aAAa,oBAAoB;AAAA,IAC5CA,EAAW,aAAa,oBAAoB;AAAA,IAC5CA,EAAW,aAAa,oBAAoB;AAAA,IAE5CA,EAAW,YAAY,0BAA0B;AAAA,IAEjDA,EAAW,cAAc,4BAA4B;AAAA,IAErDA,EAAW,cAAc,wBAAwB;AAAA,IAEjDA,EAAW,cAAc,yBAAyB;AAAA,IAClDA,EAAW,YAAY,uBAAuB;AAAA,IAE9CA,EAAW,mBAAmB,0BAA0B;AAAA,IACxDA,EAAW,mBAAmB,aAAa60B,IAAsB;AAAA,IAEjE70B,EAAW,qBAAqB,gCAAgC;AAAA,IAEhEA,EAAW,iBAAiB,IAAI,6BAA6B;AAAA,IAE7DA,EAAW,kBAAkB,0BAA0B;AAAA,IAEvDA,EAAW,qBAAqB,iCAAiC;AAAA,IAEjEA,EAAW,yBAAyB,4BAA4B;AAAA,IAC9DA,EAAW,0BAA0BA,EAAW,6BAA+B,gCAAgC;AAAA,IAEjH;AAAA,IACA;AAAA,IACA;AAAA,IAEEA,EAAW,gBAAgB7jB,KAAkB,yBAAyB;AAAA,IACtE6jB,EAAW,gBAAgB7jB,KAAkBqgC,GAAa,4BAAgC;AAAA;AAAA,IAC1Fxc,EAAW,gBAAgB7jB,KAAkBg3C,GAAwB,eAAenzB,EAAW,WAAW,IAAK;AAAA,IAEjHA,EAAW,YAAY,sBAAsB;AAAA,IAC7CA,EAAW,SAAS,mBAAmB;AAAA,IAEvCwc,GAAa;AAAA;AAAA,IACbyW,GAA0B,uBAAuBjzB,EAAW,gBAAgB;AAAA,IAE5EA,EAAW,kBAAkB,2BAA2BA,EAAW,eAAe;AAAA,IAElF;AAAA;AAAA,EAEH,EAAI,OAAQszB,IAAkB,KAAM;AAAA,CAAI,IAIvCoC,IAAezB,GAAiByB,CAAY,GAC5CA,IAAe7B,GAAkB6B,GAAc11B,CAAU,GACzD01B,IAAe3B,GAA0B2B,GAAc11B,CAAU,GAEjE21B,IAAiB1B,GAAiB0B,CAAc,GAChDA,IAAiB9B,GAAkB8B,GAAgB31B,CAAU,GAC7D21B,IAAiB5B,GAA0B4B,GAAgB31B,CAAU,GAErE01B,IAAenB,GAAamB,CAAY,GACxCC,IAAiBpB,GAAaoB,CAAc,GAEvC31B,EAAW,YAAYA,EAAW,wBAAwB,OAI9Dk2B,IAAgB;AAAA,GAEhBF,IAAe;AAAA,IACdF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACH,EAAI,KAAM;AAAA,KAAS;AAAA,IAAOE,GAExBC,IAAiB;AAAA,IAChB;AAAA,IACA;AAAA,IACEj2B,EAAW,gBAAgBvd,KAAU,KAAK;AAAA,IAC1Cud,EAAW,gBAAgBvd,KAAU,KAAK;AAAA,IAC5C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACH,EAAI,KAAM;AAAA,KAAS;AAAA,IAAOwzC;AAIzB,QAAME,IAAaD,IAAgBF,IAAeN,GAC5CU,IAAeF,IAAgBD,IAAiBN,GAKhDU,IAAiBrE,GAAazf,GAAIA,EAAG,eAAe4jB,CAAU,GAC9DG,IAAmBtE,GAAazf,GAAIA,EAAG,iBAAiB6jB,CAAY;AAE1E,EAAA7jB,EAAG,aAAckM,GAAS4X,CAAc,GACxC9jB,EAAG,aAAckM,GAAS6X,CAAgB,GAIrCt2B,EAAW,wBAAwB,SAEvCuS,EAAG,mBAAoBkM,GAAS,GAAGze,EAAW,mBAAmB,IAEtDA,EAAW,iBAAiB,MAGvCuS,EAAG,mBAAoBkM,GAAS,GAAG,UAAU,GAI9ClM,EAAG,YAAakM,CAAO;AAEvB,WAAS8X,EAAYC,GAAO;AAG3B,QAAKppB,EAAS,MAAM,mBAAoB;AAEvC,YAAMqpB,KAAalkB,EAAG,kBAAmBkM,CAAO,EAAG,KAAI,GACjDiY,IAAYnkB,EAAG,iBAAkB8jB,CAAc,EAAG,KAAI,GACtDM,IAAcpkB,EAAG,iBAAkB+jB,CAAgB,EAAG,KAAI;AAEhE,UAAIM,IAAW,IACXC,IAAkB;AAEtB,UAAKtkB,EAAG,oBAAqBkM,GAASlM,EAAG,WAAW,MAAO;AAI1D,YAFAqkB,IAAW,IAEN,OAAOxpB,EAAS,MAAM,iBAAkB;AAE5C,UAAAA,EAAS,MAAM,cAAemF,GAAIkM,GAAS4X,GAAgBC,CAAgB;AAAA,aAErE;AAIN,gBAAMQ,IAAejE,GAAiBtgB,GAAI8jB,GAAgB,QAAQ,GAC5DU,IAAiBlE,GAAiBtgB,GAAI+jB,GAAkB,UAAU;AAExE,kBAAQ;AAAA,YACP,sCAAsC/jB,EAAG,SAAQ,IAAK,wBACjCA,EAAG,oBAAqBkM,GAASlM,EAAG,eAAe,IAAK;AAAA;AAAA,sBACtDkkB,KAAa;AAAA,IACpCK,IAAe;AAAA,IACfC;AAAA,UACN;AAAA,QAEI;AAAA,UAEM,CAAKN,OAAe,KAE1B,QAAQ,KAAM,yCAAyCA,EAAU,KAEtDC,MAAc,MAAMC,MAAgB,QAE/CE,IAAkB;AAInB,MAAKA,MAEJL,EAAK,cAAc;AAAA,QAElB,UAAUI;AAAA,QAEV,YAAYH;AAAA,QAEZ,cAAc;AAAA,UAEb,KAAKC;AAAA,UACL,QAAQV;AAAA,QAEd;AAAA,QAEK,gBAAgB;AAAA,UAEf,KAAKW;AAAA,UACL,QAAQV;AAAA,QAEd;AAAA,MAEA;AAAA,IAIE;AAQA,IAAA1jB,EAAG,aAAc8jB,CAAc,GAC/B9jB,EAAG,aAAc+jB,CAAgB,GAEjCU,IAAiB,IAAIjF,GAAexf,GAAIkM,CAAO,GAC/CgB,IAAmBkU,GAAyBphB,GAAIkM,CAAO;AAAA,EAExD;AAIA,MAAIuY;AAEJ,OAAK,cAAc,WAAY;AAE9B,WAAKA,MAAmB,UAGvBT,EAAY,IAAI,GAIVS;AAAA,EAER;AAIA,MAAIvX;AAEJ,OAAK,gBAAgB,WAAY;AAEhC,WAAKA,MAAqB,UAGzB8W,EAAY,IAAI,GAIV9W;AAAA,EAER;AAKA,MAAIwX,IAAiBj3B,EAAW,2CAA2C;AAE3E,cAAK,UAAU,WAAY;AAE1B,WAAKi3B,MAAiB,OAErBA,IAAe1kB,EAAG,oBAAqBkM,GAASwT,EAAqB,IAI/DgF;AAAA,EAER,GAIA,KAAK,UAAU,WAAY;AAE1B,IAAA9Y,EAAc,uBAAwB,IAAI,GAE1C5L,EAAG,cAAekM,CAAO,GACzB,KAAK,UAAU;AAAA,EAEhB,GAIA,KAAK,OAAOze,EAAW,YACvB,KAAK,OAAOA,EAAW,YACvB,KAAK,KAAKkyB,MACV,KAAK,WAAWuD,GAChB,KAAK,YAAY,GACjB,KAAK,UAAUhX,GACf,KAAK,eAAe4X,GACpB,KAAK,iBAAiBC,GAEf;AAER;AAEA,IAAIY,KAAQ;AAEZ,MAAMC,GAAiB;AAAA,EAEtB,cAAc;AAEb,SAAK,cAAc,oBAAI,IAAG,GAC1B,KAAK,gBAAgB,oBAAI,IAAG;AAAA,EAE7B;AAAA,EAEA,OAAQjtB,GAAW;AAElB,UAAMwrB,IAAexrB,EAAS,cACxByrB,IAAiBzrB,EAAS,gBAE1BktB,IAAoB,KAAK,gBAAiB1B,CAAY,GACtD2B,IAAsB,KAAK,gBAAiB1B,CAAc,GAE1D2B,IAAkB,KAAK,2BAA4BptB,CAAQ;AAEjE,WAAKotB,EAAgB,IAAKF,CAAiB,MAAO,OAEjDE,EAAgB,IAAKF,CAAiB,GACtCA,EAAkB,cAIdE,EAAgB,IAAKD,CAAmB,MAAO,OAEnDC,EAAgB,IAAKD,CAAmB,GACxCA,EAAoB,cAId;AAAA,EAER;AAAA,EAEA,OAAQntB,GAAW;AAElB,UAAMotB,IAAkB,KAAK,cAAc,IAAKptB,CAAQ;AAExD,eAAYqtB,KAAeD;AAE1B,MAAAC,EAAY,aAEPA,EAAY,cAAc,KAAI,KAAK,YAAY,OAAQA,EAAY,IAAI;AAI7E,gBAAK,cAAc,OAAQrtB,CAAQ,GAE5B;AAAA,EAER;AAAA,EAEA,kBAAmBA,GAAW;AAE7B,WAAO,KAAK,gBAAiBA,EAAS,YAAY,EAAG;AAAA,EAEtD;AAAA,EAEA,oBAAqBA,GAAW;AAE/B,WAAO,KAAK,gBAAiBA,EAAS,cAAc,EAAG;AAAA,EAExD;AAAA,EAEA,UAAU;AAET,SAAK,YAAY,MAAK,GACtB,KAAK,cAAc,MAAK;AAAA,EAEzB;AAAA,EAEA,2BAA4BA,GAAW;AAEtC,UAAMrJ,IAAQ,KAAK;AACnB,QAAI22B,IAAM32B,EAAM,IAAKqJ,CAAQ;AAE7B,WAAKstB,MAAQ,WAEZA,IAAM,oBAAI,IAAG,GACb32B,EAAM,IAAKqJ,GAAUstB,CAAG,IAIlBA;AAAA,EAER;AAAA,EAEA,gBAAiBC,GAAO;AAEvB,UAAM52B,IAAQ,KAAK;AACnB,QAAI62B,IAAQ72B,EAAM,IAAK42B,CAAI;AAE3B,WAAKC,MAAU,WAEdA,IAAQ,IAAIC,GAAkBF,CAAI,GAClC52B,EAAM,IAAK42B,GAAMC,CAAK,IAIhBA;AAAA,EAER;AAED;AAEA,MAAMC,GAAiB;AAAA,EAEtB,YAAaF,GAAO;AAEnB,SAAK,KAAKP,MAEV,KAAK,OAAOO,GACZ,KAAK,YAAY;AAAA,EAElB;AAED;AAEA,SAASG,GAAexqB,GAAUyP,GAAUC,GAAYrP,GAAY+E,GAAc2L,GAAe0Z,GAAW;AAE3G,QAAMC,IAAiB,IAAI75B,GAAM,GAC3B85B,IAAiB,IAAIZ,GAAgB,GACrCa,IAAW,CAAA,GAEXC,IAAYzlB,EAAa,UACzB4P,IAAyB5P,EAAa,wBACtC0lB,IAA2B1lB,EAAa;AAE9C,MAAIyP,IAAYzP,EAAa;AAE7B,QAAM2lB,IAAY;AAAA,IACjB,mBAAmB;AAAA,IACnB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB;AAEC,WAASC,EAAYp0C,GAAQ;AAE5B,WAAKA,MAAU,IAAW,OAEnB,KAAMA;EAEd;AAEA,WAASq0C,EAAenuB,GAAUouB,GAAQC,GAAS1pB,GAAO5a,IAAS;AAElE,UAAMukC,IAAM3pB,EAAM,KACZta,IAAWN,GAAO,UAClBwkC,IAAcvuB,EAAS,yBAAyB2E,EAAM,cAAc,MAEpE6pB,KAAWxuB,EAAS,yBAAyB4S,IAAaD,GAAW,IAAK3S,EAAS,UAAUuuB,CAAW,GACxGE,IAA0BD,KAAcA,EAAO,YAAY37C,KAA4B27C,EAAO,MAAM,SAAS,MAE7GE,IAAWT,EAAWjuB,EAAS,IAAI;AAKzC,IAAKA,EAAS,cAAc,SAE3B+X,IAAYzP,EAAa,gBAAiBtI,EAAS,SAAS,GAEvD+X,MAAc/X,EAAS,aAE3B,QAAQ,KAAM,qCAAqCA,EAAS,WAAW,wBAAwB+X,GAAW,UAAU;AAQtH,UAAM9b,IAAiB5R,EAAS,gBAAgB,YAAYA,EAAS,gBAAgB,UAAUA,EAAS,gBAAgB,OAClHi3B,IAAsBrlB,MAAmB,SAAcA,EAAe,SAAS;AAErF,QAAI0yB,KAAqB;AAEzB,IAAKtkC,EAAS,gBAAgB,aAAa,WAAYskC,KAAqB,IACvEtkC,EAAS,gBAAgB,WAAW,WAAYskC,KAAqB,IACrEtkC,EAAS,gBAAgB,UAAU,WAAYskC,KAAqB;AAIzE,QAAInD,GAAcC,GACdmD,IAAsBC;AAE1B,QAAKH,GAAW;AAEf,YAAMrpB,KAASmN,GAAWkc,CAAQ;AAElC,MAAAlD,IAAenmB,GAAO,cACtBomB,IAAiBpmB,GAAO;AAAA,IAEzB;AAEC,MAAAmmB,IAAexrB,EAAS,cACxByrB,IAAiBzrB,EAAS,gBAE1B6tB,EAAe,OAAQ7tB,CAAQ,GAE/B4uB,KAAuBf,EAAe,kBAAmB7tB,CAAQ,GACjE6uB,KAAyBhB,EAAe,oBAAqB7tB,CAAQ;AAItE,UAAM6E,KAAsB3B,EAAS,gBAAe,GAE9C4rB,KAAmB/kC,GAAO,oBAAoB,IAC9CglC,KAAiBhlC,GAAO,kBAAkB,IAE1CilC,KAAU,CAAC,CAAEhvB,EAAS,KACtBivB,KAAa,CAAC,CAAEjvB,EAAS,QACzBkvB,IAAa,CAAC,CAAEV,GAChBW,KAAY,CAAC,CAAEnvB,EAAS,OACxBovB,KAAe,CAAC,CAAEpvB,EAAS,UAC3BqvB,KAAc,CAAC,CAAErvB,EAAS,SAC1BsvB,KAAgB,CAAC,CAAEtvB,EAAS,WAC5BuvB,KAAsB,CAAC,CAAEvvB,EAAS,iBAClCwvB,KAAkB,CAAC,CAAExvB,EAAS,aAE9ByvB,IAAmB,CAAC,CAAEzvB,EAAS,cAC/B0vB,IAAmB,CAAC,CAAE1vB,EAAS,cAE/B2vB,IAAiB3vB,EAAS,aAAa,GACvC4vB,IAAgB5vB,EAAS,YAAY,GACrC6vB,IAAkB7vB,EAAS,cAAc,GACzC8vB,IAAY9vB,EAAS,QAAQ,GAC7B+vB,KAAmB/vB,EAAS,eAAe,GAE3CgwB,KAAoBL,KAAkB,CAAC,CAAE3vB,EAAS,eAElDiwB,KAAmBL,KAAiB,CAAC,CAAE5vB,EAAS,cAChDkwB,KAA0BN,KAAiB,CAAC,CAAE5vB,EAAS,oBACvDmwB,KAA6BP,KAAiB,CAAC,CAAE5vB,EAAS,uBAE1DowB,KAAqBP,KAAmB,CAAC,CAAE7vB,EAAS,gBACpDqwB,KAA+BR,KAAmB,CAAC,CAAE7vB,EAAS,yBAE9DswB,KAAqBR,KAAa,CAAC,CAAE9vB,EAAS,eAC9CuwB,KAAyBT,KAAa,CAAC,CAAE9vB,EAAS,mBAElDwwB,KAAkB,CAAC,CAAExwB,EAAS,aAC9BywB,KAAwB,CAAC,CAAEzwB,EAAS,kBACpC0wB,IAA4B,CAAC,CAAE1wB,EAAS,sBAExC2wB,KAAsBZ,MAAoB,CAAC,CAAE/vB,EAAS,iBACtD4wB,KAAmBb,MAAoB,CAAC,CAAE/vB,EAAS,cAEnD6wB,KAAkB,CAAC,CAAE7wB,EAAS,aAE9B8wB,KAAe,CAAC,CAAE9wB,EAAS,UAE3B+wB,IAAgB/wB,EAAS,YAAY,GAErCgxB,KAAgB,CAAC,CAAEhxB,EAAS,WAE5BixB,KAAiB,CAAC,CAAEjxB,EAAS,YAE7BkxB,KAAoB,CAAC,CAAE7mC,EAAS,WAAW,KAC3C8mC,KAAoB,CAAC,CAAE9mC,EAAS,WAAW,KAC3C+mC,KAAoB,CAAC,CAAE/mC,EAAS,WAAW;AAEjD,QAAIuyB,KAAc3qC;AAElB,WAAK+tB,EAAS,eAER6E,OAAwB,QAAQA,GAAoB,qBAAqB,QAE7E+X,KAAc1Z,EAAS,cAMN;AAAA,MAElB,UAAU6qB;AAAA,MAEV,UAAUW;AAAA,MACV,YAAY1uB,EAAS;AAAA,MACrB,YAAYA,EAAS;AAAA,MAErB,cAAcwrB;AAAA,MACd,gBAAgBC;AAAA,MAChB,SAASzrB,EAAS;AAAA,MAElB,sBAAsB4uB;AAAA,MACtB,wBAAwBC;AAAA,MAExB,qBAAqB7uB,EAAS,wBAAwB;AAAA,MACtD,aAAaA,EAAS;AAAA,MAEtB,WAAW+X;AAAA,MAEX,UAAUgX;AAAA,MACV,YAAYD;AAAA,MACZ,iBAAiBA,MAAoB/kC,GAAO,kBAAkB;AAAA,MAE9D,wBAAwBikC;AAAA,MACxB,kBAAoBnpB,OAAwB,OAAS3B,EAAS,mBAAqB2B,GAAoB,qBAAqB,KAAOA,GAAoB,QAAQ,aAAaxtB;AAAA,MAE5K,KAAK23C;AAAA,MACL,QAAQC;AAAA,MACR,QAAQC;AAAA,MACR,YAAYA,KAAcV,EAAO;AAAA,MACjC,oBAAoBC;AAAA,MACpB,OAAOU;AAAA,MACP,UAAUC;AAAA,MACV,SAASC;AAAA,MACT,WAAWC;AAAA,MACX,iBAAiBtB,KAA4BuB;AAAA,MAC7C,aAAaC;AAAA,MAEb,sBAAsBF,MAAiBtvB,EAAS,kBAAkB9oB;AAAA,MAClE,uBAAuBo4C,MAAiBtvB,EAAS,kBAAkB/oB;AAAA,MAEnE,cAAcw4C;AAAA,MACd,cAAcC;AAAA,MAEd,YAAYC;AAAA,MACZ,eAAeK;AAAA,MAEf,WAAWJ;AAAA,MACX,cAAcK;AAAA,MACd,oBAAoBC;AAAA,MACpB,uBAAuBC;AAAA,MAEvB,aAAaN;AAAA,MACb,gBAAgBO;AAAA,MAChB,yBAAyBC;AAAA,MAEzB,OAAOP;AAAA,MACP,eAAeQ;AAAA,MACf,mBAAmBC;AAAA,MAEnB,aAAaC;AAAA,MACb,kBAAkBC;AAAA,MAClB,sBAAsBC;AAAA,MAEtB,cAAcX;AAAA,MACd,iBAAiBY;AAAA,MACjB,cAAcC;AAAA,MAEd,aAAaC;AAAA,MAEb,QAAQ7wB,EAAS,gBAAgB,MAASA,EAAS,aAAanwB;AAAA,MAEhE,UAAUihD;AAAA,MACV,WAAWC;AAAA,MACX,WAAWC;AAAA,MAEX,SAAShxB,EAAS;AAAA;AAAA,MAIlB,OAAOgvB,MAAWd,EAAYluB,EAAS,IAAI,OAAO;AAAA,MAClD,SAASmvB,MAAajB,EAAYluB,EAAS,MAAM,OAAO;AAAA,MACxD,YAAYovB,MAAgBlB,EAAYluB,EAAS,SAAS,OAAO;AAAA,MACjE,WAAWqvB,MAAenB,EAAYluB,EAAS,QAAQ,OAAO;AAAA,MAC9D,aAAasvB,MAAiBpB,EAAYluB,EAAS,UAAU,OAAO;AAAA,MACpE,mBAAmBuvB,MAAuBrB,EAAYluB,EAAS,gBAAgB,OAAO;AAAA,MACtF,eAAewvB,MAAmBtB,EAAYluB,EAAS,YAAY,OAAO;AAAA,MAE1E,gBAAgByvB,KAAoBvB,EAAYluB,EAAS,aAAa,OAAO;AAAA,MAC7E,gBAAgB0vB,KAAoBxB,EAAYluB,EAAS,aAAa,OAAO;AAAA,MAE7E,iBAAiBgwB,MAAqB9B,EAAYluB,EAAS,cAAc,OAAO;AAAA,MAEhF,gBAAgBiwB,MAAoB/B,EAAYluB,EAAS,aAAa,OAAO;AAAA,MAC7E,sBAAsBkwB,MAA2BhC,EAAYluB,EAAS,mBAAmB,OAAO;AAAA,MAChG,yBAAyBmwB,MAA8BjC,EAAYluB,EAAS,sBAAsB,OAAO;AAAA,MAEzG,kBAAkBowB,MAAsBlC,EAAYluB,EAAS,eAAe,OAAO;AAAA,MACnF,2BAA2BqwB,MAAgCnC,EAAYluB,EAAS,wBAAwB,OAAO;AAAA,MAE/G,iBAAiBswB,MAAsBpC,EAAYluB,EAAS,cAAc,OAAO;AAAA,MACjF,qBAAqBuwB,MAA0BrC,EAAYluB,EAAS,kBAAkB,OAAO;AAAA,MAE7F,eAAewwB,MAAmBtC,EAAYluB,EAAS,YAAY,OAAO;AAAA,MAC1E,oBAAoBywB,MAAyBvC,EAAYluB,EAAS,iBAAiB,OAAO;AAAA,MAC1F,wBAAwB0wB,KAA6BxC,EAAYluB,EAAS,qBAAqB,OAAO;AAAA,MAEtG,mBAAmB2wB,MAAuBzC,EAAYluB,EAAS,gBAAgB,OAAO;AAAA,MACtF,gBAAgB4wB,MAAoB1C,EAAYluB,EAAS,aAAa,OAAO;AAAA,MAE7E,YAAY8wB,MAAgB5C,EAAYluB,EAAS,SAAS,OAAO;AAAA;AAAA,MAIjE,gBAAgB,CAAC,CAAE3V,EAAS,WAAW,YAAailC,MAAiBK;AAAA,MACrE,cAAc3vB,EAAS;AAAA,MACvB,cAAcA,EAAS,iBAAiB,MAAQ,CAAC,CAAE3V,EAAS,WAAW,SAASA,EAAS,WAAW,MAAM,aAAa;AAAA,MACvH,YAAY6mC;AAAA,MACZ,YAAYC;AAAA,MACZ,YAAYC;AAAA,MAEZ,WAAWrnC,GAAO,aAAa,MAAQ,CAAC,CAAEM,EAAS,WAAW,OAAQ2kC,MAAW8B;AAAA,MAEjF,KAAK,CAAC,CAAExC;AAAA,MACR,QAAQtuB,EAAS,QAAQ;AAAA,MACzB,SAAWsuB,KAAOA,EAAI;AAAA,MAEtB,aAAatuB,EAAS,gBAAgB;AAAA,MAEtC,iBAAiBA,EAAS,oBAAoB;AAAA,MAC9C,wBAAwBkY;AAAA,MAExB,UAAUnuB,GAAO,kBAAkB;AAAA,MAEnC,cAAcM,EAAS,gBAAgB,aAAa;AAAA,MACpD,cAAcA,EAAS,gBAAgB,WAAW;AAAA,MAClD,aAAaA,EAAS,gBAAgB,UAAU;AAAA,MAChD,mBAAmBi3B;AAAA,MACnB,oBAAoBqN;AAAA,MAEpB,cAAcP,EAAO,YAAY;AAAA,MACjC,gBAAgBA,EAAO,MAAM;AAAA,MAC7B,eAAeA,EAAO,KAAK;AAAA,MAC3B,kBAAkBA,EAAO,aAAa;AAAA,MACtC,mBAAmBA,EAAO,SAAS;AAAA,MACnC,eAAeA,EAAO,KAAK;AAAA,MAE3B,oBAAoBA,EAAO,qBAAqB;AAAA,MAChD,sBAAsBA,EAAO,eAAe;AAAA,MAC5C,qBAAqBA,EAAO,cAAc;AAAA,MAC1C,6BAA6BA,EAAO;AAAA,MAEpC,gBAAgBA,EAAO;AAAA,MAEvB,mBAAmBT,EAAS;AAAA,MAC5B,qBAAqBA,EAAS;AAAA,MAE9B,WAAW3tB,EAAS;AAAA,MAEpB,kBAAkBkD,EAAS,UAAU,WAAWmrB,EAAQ,SAAS;AAAA,MACjE,eAAenrB,EAAS,UAAU;AAAA,MAElC,aAAa0Z;AAAA,MACb,iBAAiB1Z,EAAS;AAAA,MAE1B,oBAAoB8rB,MAAahvB,EAAS,IAAI,mBAAmB,MAAYzf,GAAgB,YAAayf,EAAS,IAAI,UAAU,MAAOvoB;AAAA,MAExI,oBAAoBuoB,EAAS;AAAA,MAE7B,aAAaA,EAAS,SAASrwB;AAAA,MAC/B,WAAWqwB,EAAS,SAAStwB;AAAA,MAE7B,iBAAiBswB,EAAS,gBAAgB;AAAA,MAC1C,cAAcA,EAAS,gBAAgB;AAAA,MAEvC,qBAAqBA,EAAS;AAAA,MAE9B,sBAAsBixB,MAAkBjxB,EAAS,WAAW,gBAAgB;AAAA,MAC5E,oBAAoBixB,MAAkBjxB,EAAS,WAAW,cAAc;AAAA,MACxE,sBAAsBixB,MAAkBjxB,EAAS,WAAW,gBAAgB;AAAA,MAC5E,2BAA2BixB,MAAkBjxB,EAAS,WAAW,qBAAqB;AAAA,MACtF,2BAA2BixB,MAAkBjxB,EAAS,WAAW,oBAAoBuD,EAAW,IAAK,0BAA0B;AAAA,MAE/H,4BAA4BwqB,KAAaxqB,EAAW,IAAK,gBAAgB;AAAA,MACzE,8BAA8BwqB,KAAaxqB,EAAW,IAAK,oBAAoB;AAAA,MAC/E,mCAAmCwqB,KAAaxqB,EAAW,IAAK,wBAAwB;AAAA,MACxF,wCAAwCA,EAAW,IAAK,6BAA6B;AAAA,MAErF,uBAAuBvD,EAAS,sBAAqB;AAAA,IAExD;AAAA,EAIC;AAEA,WAASqxB,EAAoBv7B,GAAa;AAEzC,UAAM5c,IAAQ,CAAA;AAad,QAXK4c,EAAW,WAEf5c,EAAM,KAAM4c,EAAW,QAAQ,KAI/B5c,EAAM,KAAM4c,EAAW,oBAAoB,GAC3C5c,EAAM,KAAM4c,EAAW,sBAAsB,IAIzCA,EAAW,YAAY;AAE3B,iBAAYlW,KAAQkW,EAAW;AAE9B,QAAA5c,EAAM,KAAM0G,CAAI,GAChB1G,EAAM,KAAM4c,EAAW,QAASlW,CAAI,CAAE;AAMxC,WAAKkW,EAAW,wBAAwB,OAEvCw7B,EAA8Bp4C,GAAO4c,CAAU,GAC/Cy7B,EAA4Br4C,GAAO4c,CAAU,GAC7C5c,EAAM,KAAMgqB,EAAS,gBAAgB,IAItChqB,EAAM,KAAM4c,EAAW,qBAAqB,GAErC5c,EAAM,KAAI;AAAA,EAElB;AAEA,WAASo4C,EAA8Bp4C,GAAO4c,GAAa;AAE1D,IAAA5c,EAAM,KAAM4c,EAAW,SAAS,GAChC5c,EAAM,KAAM4c,EAAW,gBAAgB,GACvC5c,EAAM,KAAM4c,EAAW,UAAU,GACjC5c,EAAM,KAAM4c,EAAW,kBAAkB,GACzC5c,EAAM,KAAM4c,EAAW,KAAK,GAC5B5c,EAAM,KAAM4c,EAAW,UAAU,GACjC5c,EAAM,KAAM4c,EAAW,UAAU,GACjC5c,EAAM,KAAM4c,EAAW,OAAO,GAC9B5c,EAAM,KAAM4c,EAAW,SAAS,GAChC5c,EAAM,KAAM4c,EAAW,WAAW,GAClC5c,EAAM,KAAM4c,EAAW,iBAAiB,GACxC5c,EAAM,KAAM4c,EAAW,aAAa,GACpC5c,EAAM,KAAM4c,EAAW,cAAc,GACrC5c,EAAM,KAAM4c,EAAW,cAAc,GACrC5c,EAAM,KAAM4c,EAAW,eAAe,GACtC5c,EAAM,KAAM4c,EAAW,cAAc,GACrC5c,EAAM,KAAM4c,EAAW,oBAAoB,GAC3C5c,EAAM,KAAM4c,EAAW,uBAAuB,GAC9C5c,EAAM,KAAM4c,EAAW,gBAAgB,GACvC5c,EAAM,KAAM4c,EAAW,yBAAyB,GAChD5c,EAAM,KAAM4c,EAAW,eAAe,GACtC5c,EAAM,KAAM4c,EAAW,mBAAmB,GAC1C5c,EAAM,KAAM4c,EAAW,aAAa,GACpC5c,EAAM,KAAM4c,EAAW,kBAAkB,GACzC5c,EAAM,KAAM4c,EAAW,sBAAsB,GAC7C5c,EAAM,KAAM4c,EAAW,iBAAiB,GACxC5c,EAAM,KAAM4c,EAAW,cAAc,GACrC5c,EAAM,KAAM4c,EAAW,OAAO,GAC9B5c,EAAM,KAAM4c,EAAW,OAAO,GAC9B5c,EAAM,KAAM4c,EAAW,eAAe,GACtC5c,EAAM,KAAM4c,EAAW,iBAAiB,GACxC5c,EAAM,KAAM4c,EAAW,mBAAmB,GAC1C5c,EAAM,KAAM4c,EAAW,YAAY,GACnC5c,EAAM,KAAM4c,EAAW,cAAc,GACrC5c,EAAM,KAAM4c,EAAW,aAAa,GACpC5c,EAAM,KAAM4c,EAAW,gBAAgB,GACvC5c,EAAM,KAAM4c,EAAW,aAAa,GACpC5c,EAAM,KAAM4c,EAAW,iBAAiB,GACxC5c,EAAM,KAAM4c,EAAW,kBAAkB,GACzC5c,EAAM,KAAM4c,EAAW,oBAAoB,GAC3C5c,EAAM,KAAM4c,EAAW,mBAAmB,GAC1C5c,EAAM,KAAM4c,EAAW,2BAA2B,GAClD5c,EAAM,KAAM4c,EAAW,cAAc,GACrC5c,EAAM,KAAM4c,EAAW,aAAa,GACpC5c,EAAM,KAAM4c,EAAW,WAAW,GAClC5c,EAAM,KAAM4c,EAAW,iBAAiB,GACxC5c,EAAM,KAAM4c,EAAW,mBAAmB,GAC1C5c,EAAM,KAAM4c,EAAW,YAAY;AAAA,EAEpC;AAEA,WAASy7B,EAA4Br4C,GAAO4c,GAAa;AAExD,IAAA83B,EAAe,WAAU,GAEpB93B,EAAW,YACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,0BACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,cACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,mBACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,UACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,UACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,wBACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,yBACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,aACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,eACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,aACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,gBACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,gBACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,cACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,cACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,cACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,kBACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,cACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,aACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,YACf83B,EAAe,OAAQ,EAAE,GAE1B10C,EAAM,KAAM00C,EAAe,IAAI,GAC/BA,EAAe,WAAU,GAEpB93B,EAAW,OACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,UACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,eACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,0BACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,YACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,gBACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,gBACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,eACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,sBACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,oBACf83B,EAAe,OAAQ,CAAC,GACpB93B,EAAW,mBACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,eACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,aACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,mBACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,aACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,gBACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,SACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,UACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,aACf83B,EAAe,OAAQ,EAAE,GACrB93B,EAAW,sBACf83B,EAAe,OAAQ,EAAE,GAE1B10C,EAAM,KAAM00C,EAAe,IAAI;AAAA,EAEhC;AAEA,WAAS4D,EAAaxxB,GAAW;AAEhC,UAAM0uB,IAAWT,EAAWjuB,EAAS,IAAI;AACzC,QAAI8C;AAEJ,QAAK4rB,GAAW;AAEf,YAAMrpB,IAASmN,GAAWkc,CAAQ;AAClC,MAAA5rB,IAAWK,GAAc,MAAOkC,EAAO,QAAQ;AAAA,IAEhD;AAEC,MAAAvC,IAAW9C,EAAS;AAIrB,WAAO8C;AAAA,EAER;AAEA,WAAS2uB,EAAgB37B,GAAYy1B,GAAW;AAE/C,QAAIhX;AAGJ,aAAU9gB,IAAI,GAAGi+B,KAAK5D,EAAS,QAAQr6B,IAAIi+B,IAAIj+B,KAAO;AAErD,YAAMk+B,IAAqB7D,EAAUr6B,CAAC;AAEtC,UAAKk+B,EAAmB,aAAapG,GAAW;AAE/C,QAAAhX,IAAUod,GACV,EAAGpd,EAAQ;AAEX;AAAA,MAED;AAAA,IAED;AAEA,WAAKA,MAAY,WAEhBA,IAAU,IAAI+W,GAAcpoB,GAAUqoB,GAAUz1B,GAAYme,CAAa,GACzE6Z,EAAS,KAAMvZ,CAAO,IAIhBA;AAAA,EAER;AAEA,WAASqd,EAAgBrd,GAAU;AAElC,QAAK,EAAGA,EAAQ,cAAc,GAAI;AAGjC,YAAMp7B,IAAI20C,EAAS,QAASvZ,CAAO;AACnC,MAAAuZ,EAAU30C,CAAC,IAAK20C,EAAUA,EAAS,SAAS,CAAC,GAC7CA,EAAS,IAAG,GAGZvZ,EAAQ,QAAO;AAAA,IAEhB;AAAA,EAED;AAEA,WAASsd,EAAoB7xB,GAAW;AAEvC,IAAA6tB,EAAe,OAAQ7tB,CAAQ;AAAA,EAEhC;AAEA,WAASwW,IAAU;AAElB,IAAAqX,EAAe,QAAO;AAAA,EAEvB;AAEA,SAAO;AAAA,IACN,eAAeM;AAAA,IACf,oBAAoBkD;AAAA,IACpB,aAAaG;AAAA,IACb,gBAAgBC;AAAA,IAChB,gBAAgBG;AAAA,IAChB,oBAAoBC;AAAA;AAAA,IAEpB,UAAU/D;AAAA,IACV,SAAStX;AAAA,EACX;AAEA;AAEA,SAASsb,KAAkB;AAE1B,MAAI9Y,IAAa,oBAAI,QAAO;AAE5B,WAAS/P,EAAKlf,GAAS;AAEtB,QAAIgoC,IAAM/Y,EAAW,IAAKjvB,CAAM;AAEhC,WAAKgoC,MAAQ,WAEZA,IAAM,CAAA,GACN/Y,EAAW,IAAKjvB,GAAQgoC,CAAG,IAIrBA;AAAA,EAER;AAEA,WAAS7oB,EAAQnf,GAAS;AAEzB,IAAAivB,EAAW,OAAQjvB,CAAM;AAAA,EAE1B;AAEA,WAASpE,EAAQoE,GAAQ8M,GAAK/c,GAAQ;AAErC,IAAAk/B,EAAW,IAAKjvB,GAAU8M,CAAG,IAAK/c;AAAA,EAEnC;AAEA,WAAS08B,IAAU;AAElB,IAAAwC,IAAa,oBAAI,QAAO;AAAA,EAEzB;AAEA,SAAO;AAAA,IACN,KAAK/P;AAAA,IACL,QAAQC;AAAA,IACR,QAAQvjB;AAAA,IACR,SAAS6wB;AAAA,EACX;AAEA;AAEA,SAASwb,GAAmBh3C,GAAGC,GAAI;AAElC,SAAKD,EAAE,eAAeC,EAAE,aAEhBD,EAAE,aAAaC,EAAE,aAEbD,EAAE,gBAAgBC,EAAE,cAExBD,EAAE,cAAcC,EAAE,cAEdD,EAAE,SAAS,OAAOC,EAAE,SAAS,KAEjCD,EAAE,SAAS,KAAKC,EAAE,SAAS,KAEvBD,EAAE,MAAMC,EAAE,IAEdD,EAAE,IAAIC,EAAE,IAIRD,EAAE,KAAKC,EAAE;AAIlB;AAEA,SAASg3C,GAA0Bj3C,GAAGC,GAAI;AAEzC,SAAKD,EAAE,eAAeC,EAAE,aAEhBD,EAAE,aAAaC,EAAE,aAEbD,EAAE,gBAAgBC,EAAE,cAExBD,EAAE,cAAcC,EAAE,cAEdD,EAAE,MAAMC,EAAE,IAEdA,EAAE,IAAID,EAAE,IAIRA,EAAE,KAAKC,EAAE;AAIlB;AAGA,SAASi3C,KAAkB;AAE1B,QAAMC,IAAc,CAAA;AACpB,MAAIC,IAAmB;AAEvB,QAAMC,IAAS,CAAA,GACTC,IAAe,CAAA,GACfC,IAAc,CAAA;AAEpB,WAASC,IAAO;AAEf,IAAAJ,IAAmB,GAEnBC,EAAO,SAAS,GAChBC,EAAa,SAAS,GACtBC,EAAY,SAAS;AAAA,EAEtB;AAEA,WAASE,EAAmB1oC,GAAQM,GAAU2V,GAAU0yB,GAAYjwC,GAAG8a,GAAQ;AAE9E,QAAIo1B,IAAaR,EAAaC,CAAgB;AAE9C,WAAKO,MAAe,UAEnBA,IAAa;AAAA,MACZ,IAAI5oC,EAAO;AAAA,MACX,QAAQA;AAAA,MACR,UAAUM;AAAA,MACV,UAAU2V;AAAA,MACV,YAAY0yB;AAAA,MACZ,aAAa3oC,EAAO;AAAA,MACpB,GAAGtH;AAAA,MACH,OAAO8a;AAAA,IACX,GAEG40B,EAAaC,CAAgB,IAAKO,MAIlCA,EAAW,KAAK5oC,EAAO,IACvB4oC,EAAW,SAAS5oC,GACpB4oC,EAAW,WAAWtoC,GACtBsoC,EAAW,WAAW3yB,GACtB2yB,EAAW,aAAaD,GACxBC,EAAW,cAAc5oC,EAAO,aAChC4oC,EAAW,IAAIlwC,GACfkwC,EAAW,QAAQp1B,IAIpB60B,KAEOO;AAAA,EAER;AAEA,WAASC,EAAM7oC,GAAQM,GAAU2V,GAAU0yB,GAAYjwC,GAAG8a,GAAQ;AAEjE,UAAMo1B,IAAaF,EAAmB1oC,GAAQM,GAAU2V,GAAU0yB,GAAYjwC,GAAG8a,CAAK;AAEtF,IAAKyC,EAAS,eAAe,IAE5BsyB,EAAa,KAAMK,CAAU,IAElB3yB,EAAS,gBAAgB,KAEpCuyB,EAAY,KAAMI,CAAU,IAI5BN,EAAO,KAAMM,CAAU;AAAA,EAIzB;AAEA,WAASE,EAAS9oC,GAAQM,GAAU2V,GAAU0yB,GAAYjwC,GAAG8a,GAAQ;AAEpE,UAAMo1B,IAAaF,EAAmB1oC,GAAQM,GAAU2V,GAAU0yB,GAAYjwC,GAAG8a,CAAK;AAEtF,IAAKyC,EAAS,eAAe,IAE5BsyB,EAAa,QAASK,CAAU,IAErB3yB,EAAS,gBAAgB,KAEpCuyB,EAAY,QAASI,CAAU,IAI/BN,EAAO,QAASM,CAAU;AAAA,EAI5B;AAEA,WAASG,EAAMC,GAAkBC,GAAwB;AAExD,IAAKX,EAAO,SAAS,KAAIA,EAAO,KAAMU,KAAoBf,EAAiB,GACtEM,EAAa,SAAS,KAAIA,EAAa,KAAMU,KAAyBf,EAAwB,GAC9FM,EAAY,SAAS,KAAIA,EAAY,KAAMS,KAAyBf,EAAwB;AAAA,EAElG;AAEA,WAASgB,IAAS;AAIjB,aAAU95C,IAAIi5C,GAAkB1oC,IAAKyoC,EAAY,QAAQh5C,IAAIuQ,GAAIvQ,KAAO;AAEvE,YAAMw5C,IAAaR,EAAah5C,CAAC;AAEjC,UAAKw5C,EAAW,OAAO,KAAO;AAE9B,MAAAA,EAAW,KAAK,MAChBA,EAAW,SAAS,MACpBA,EAAW,WAAW,MACtBA,EAAW,WAAW,MACtBA,EAAW,QAAQ;AAAA,IAEpB;AAAA,EAED;AAEA,SAAO;AAAA,IAEN,QAAQN;AAAA,IACR,cAAcC;AAAA,IACd,aAAaC;AAAA,IAEb,MAAMC;AAAA,IACN,MAAMI;AAAA,IACN,SAASC;AAAA,IACT,QAAQI;AAAA,IAER,MAAMH;AAAA,EACR;AAEA;AAEA,SAASI,KAAmB;AAE3B,MAAIC,IAAQ,oBAAI,QAAO;AAEvB,WAASlqB,EAAKtE,GAAOyuB,GAAkB;AAEtC,UAAMC,IAAYF,EAAM,IAAKxuB,CAAK;AAClC,QAAI2uB;AAEJ,WAAKD,MAAc,UAElBC,IAAO,IAAIpB,GAAe,GAC1BiB,EAAM,IAAKxuB,GAAO,CAAE2uB,CAAI,CAAE,KAIrBF,KAAmBC,EAAU,UAEjCC,IAAO,IAAIpB,GAAe,GAC1BmB,EAAU,KAAMC,CAAI,KAIpBA,IAAOD,EAAWD,CAAe,GAM5BE;AAAA,EAER;AAEA,WAAS9c,IAAU;AAElB,IAAA2c,IAAQ,oBAAI,QAAO;AAAA,EAEpB;AAEA,SAAO;AAAA,IACN,KAAKlqB;AAAA,IACL,SAASuN;AAAA,EACX;AAEA;AAEA,SAAS+c,KAAgB;AAExB,QAAMnF,IAAS,CAAA;AAEf,SAAO;AAAA,IAEN,KAAK,SAAWoF,GAAQ;AAEvB,UAAKpF,EAAQoF,EAAM,EAAE,MAAO;AAE3B,eAAOpF,EAAQoF,EAAM,EAAE;AAIxB,UAAI1wB;AAEJ,cAAS0wB,EAAM,MAAI;AAAA,QAElB,KAAK;AACJ,UAAA1wB,IAAW;AAAA,YACV,WAAW,IAAI/a,EAAO;AAAA,YACtB,OAAO,IAAIsR,GAAK;AAAA,UACtB;AACK;AAAA,QAED,KAAK;AACJ,UAAAyJ,IAAW;AAAA,YACV,UAAU,IAAI/a,EAAO;AAAA,YACrB,WAAW,IAAIA,EAAO;AAAA,YACtB,OAAO,IAAIsR,GAAK;AAAA,YAChB,UAAU;AAAA,YACV,SAAS;AAAA,YACT,aAAa;AAAA,YACb,OAAO;AAAA,UACb;AACK;AAAA,QAED,KAAK;AACJ,UAAAyJ,IAAW;AAAA,YACV,UAAU,IAAI/a,EAAO;AAAA,YACrB,OAAO,IAAIsR,GAAK;AAAA,YAChB,UAAU;AAAA,YACV,OAAO;AAAA,UACb;AACK;AAAA,QAED,KAAK;AACJ,UAAAyJ,IAAW;AAAA,YACV,WAAW,IAAI/a,EAAO;AAAA,YACtB,UAAU,IAAIsR,GAAK;AAAA,YACnB,aAAa,IAAIA,GAAK;AAAA,UAC5B;AACK;AAAA,QAED,KAAK;AACJ,UAAAyJ,IAAW;AAAA,YACV,OAAO,IAAIzJ,GAAK;AAAA,YAChB,UAAU,IAAItR,EAAO;AAAA,YACrB,WAAW,IAAIA,EAAO;AAAA,YACtB,YAAY,IAAIA,EAAO;AAAA,UAC7B;AACK;AAAA,MAEL;AAEG,aAAAqmC,EAAQoF,EAAM,EAAE,IAAK1wB,GAEdA;AAAA,IAER;AAAA,EAEF;AAEA;AAEA,SAAS2wB,KAAsB;AAE9B,QAAMrF,IAAS,CAAA;AAEf,SAAO;AAAA,IAEN,KAAK,SAAWoF,GAAQ;AAEvB,UAAKpF,EAAQoF,EAAM,EAAE,MAAO;AAE3B,eAAOpF,EAAQoF,EAAM,EAAE;AAIxB,UAAI1wB;AAEJ,cAAS0wB,EAAM,MAAI;AAAA,QAElB,KAAK;AACJ,UAAA1wB,IAAW;AAAA,YACV,YAAY;AAAA,YACZ,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,eAAe,IAAIloB,GAAO;AAAA,UAChC;AACK;AAAA,QAED,KAAK;AACJ,UAAAkoB,IAAW;AAAA,YACV,YAAY;AAAA,YACZ,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,eAAe,IAAIloB,GAAO;AAAA,UAChC;AACK;AAAA,QAED,KAAK;AACJ,UAAAkoB,IAAW;AAAA,YACV,YAAY;AAAA,YACZ,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,eAAe,IAAIloB,GAAO;AAAA,YAC1B,kBAAkB;AAAA,YAClB,iBAAiB;AAAA,UACvB;AACK;AAAA,MAIL;AAEG,aAAAwzC,EAAQoF,EAAM,EAAE,IAAK1wB,GAEdA;AAAA,IAER;AAAA,EAEF;AAEA;AAIA,IAAI4wB,KAAc;AAElB,SAASC,GAAsCC,GAAQC,GAAS;AAE/D,UAASA,EAAO,aAAa,IAAI,MAAQD,EAAO,aAAa,IAAI,MAAQC,EAAO,MAAM,IAAI,MAAQD,EAAO,MAAM,IAAI;AAEpH;AAEA,SAASE,GAAavwB,GAAY+E,GAAe;AAEhD,QAAM3R,IAAQ,IAAI48B,GAAa,GAEzBQ,IAAcN,GAAmB,GAEjC5gB,IAAQ;AAAA,IAEb,SAAS;AAAA,IAET,MAAM;AAAA,MACL,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,YAAY;AAAA,MAEZ,uBAAuB;AAAA,MACvB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,aAAa;AAAA,MAEb,gBAAgB;AAAA,IACnB;AAAA,IAEE,SAAS,CAAE,GAAG,GAAG,CAAC;AAAA,IAClB,OAAO,CAAA;AAAA,IACP,aAAa,CAAA;AAAA,IACb,mBAAmB,CAAA;AAAA,IACnB,sBAAsB,CAAA;AAAA,IACtB,yBAAyB,CAAA;AAAA,IACzB,MAAM,CAAA;AAAA,IACN,cAAc,CAAA;AAAA,IACd,YAAY,CAAA;AAAA,IACZ,eAAe,CAAA;AAAA,IACf,iBAAiB,CAAA;AAAA,IACjB,UAAU,CAAA;AAAA,IACV,cAAc;AAAA,IACd,cAAc;AAAA,IACd,OAAO,CAAA;AAAA,IACP,aAAa,CAAA;AAAA,IACb,gBAAgB,CAAA;AAAA,IAChB,mBAAmB,CAAA;AAAA,IACnB,MAAM,CAAA;AAAA,IACN,6BAA6B;AAAA,IAC7B,gBAAgB;AAAA,EAElB;AAEC,WAAU15B,IAAI,GAAGA,IAAI,GAAGA,IAAO,CAAA05B,EAAM,MAAM,KAAM,IAAI9qB,EAAO,CAAE;AAE9D,QAAMisC,IAAU,IAAIjsC,EAAO,GACrBhJ,IAAU,IAAIqQ,GAAO,GACrB6kC,IAAW,IAAI7kC,GAAO;AAE5B,WAASklB,EAAO8Z,GAAQ8F,GAAkB;AAEzC,QAAIl1C,IAAI,GAAGT,IAAI,GAAGtD,IAAI;AAEtB,aAAU9B,IAAI,GAAGA,IAAI,GAAGA,IAAO,CAAA05B,EAAM,MAAO15B,CAAC,EAAG,IAAK,GAAG,GAAG,CAAC;AAE5D,QAAIg7C,IAAoB,GACpBC,IAAc,GACdC,IAAa,GACbC,IAAiB,GACjBC,IAAa,GAEbC,IAAwB,GACxBC,IAAkB,GAClBC,IAAiB,GACjBC,IAAc,GACdC,IAAyB,GAEzBC,IAAiB;AAGrB,IAAAzG,EAAO,KAAMuF,EAAoC;AAGjD,UAAMmB,IAAgBZ,MAAoB,KAAS,KAAK,KAAK;AAE7D,aAAU/6C,IAAI,GAAGC,KAAIg1C,EAAO,QAAQj1C,IAAIC,IAAGD,KAAO;AAEjD,YAAMq6C,IAAQpF,EAAQj1C,CAAC,GAEjBkH,IAAQmzC,EAAM,OACduB,IAAYvB,EAAM,WAClBt+B,IAAWs+B,EAAM,UAEjBwB,IAAcxB,EAAM,UAAUA,EAAM,OAAO,MAAQA,EAAM,OAAO,IAAI,UAAU;AAEpF,UAAKA,EAAM;AAEV,QAAAx0C,KAAKqB,EAAM,IAAI00C,IAAYD,GAC3Bv2C,KAAK8B,EAAM,IAAI00C,IAAYD,GAC3B75C,KAAKoF,EAAM,IAAI00C,IAAYD;AAAA,eAEhBtB,EAAM,cAAe;AAEhC,iBAAU7nC,IAAI,GAAGA,IAAI,GAAGA;AAEvB,UAAAknB,EAAM,MAAOlnB,CAAC,EAAG,gBAAiB6nC,EAAM,GAAG,aAAc7nC,CAAC,GAAIopC,CAAS;AAIxE,QAAAF;AAAA,MAED,WAAYrB,EAAM,oBAAqB;AAEtC,cAAM1wB,IAAWnM,EAAM,IAAK68B,CAAK;AAIjC,YAFA1wB,EAAS,MAAM,KAAM0wB,EAAM,KAAK,EAAG,eAAgBA,EAAM,YAAYsB,CAAW,GAE3EtB,EAAM,YAAa;AAEvB,gBAAMyB,IAASzB,EAAM,QAEf0B,IAAiBnB,EAAY,IAAKP,CAAK;AAE7C,UAAA0B,EAAe,aAAaD,EAAO,MACnCC,EAAe,mBAAmBD,EAAO,YACzCC,EAAe,eAAeD,EAAO,QACrCC,EAAe,gBAAgBD,EAAO,SAEtCpiB,EAAM,kBAAmBshB,CAAiB,IAAKe,GAC/CriB,EAAM,qBAAsBshB,CAAiB,IAAKa,GAClDniB,EAAM,wBAAyBshB,CAAiB,IAAKX,EAAM,OAAO,QAElEgB;AAAA,QAED;AAEA,QAAA3hB,EAAM,YAAashB,CAAiB,IAAKrxB,GAEzCqxB;AAAA,MAED,WAAYX,EAAM,aAAc;AAE/B,cAAM1wB,IAAWnM,EAAM,IAAK68B,CAAK;AAEjC,QAAA1wB,EAAS,SAAS,sBAAuB0wB,EAAM,WAAW,GAE1D1wB,EAAS,MAAM,KAAMziB,CAAK,EAAG,eAAgB00C,IAAYD,CAAW,GACpEhyB,EAAS,WAAW5N,GAEpB4N,EAAS,UAAU,KAAK,IAAK0wB,EAAM,KAAK,GACxC1wB,EAAS,cAAc,KAAK,IAAK0wB,EAAM,SAAU,IAAIA,EAAM,SAAU,GACrE1wB,EAAS,QAAQ0wB,EAAM,OAEvB3gB,EAAM,KAAMwhB,CAAU,IAAKvxB;AAE3B,cAAMmyB,IAASzB,EAAM;AAiBrB,YAfKA,EAAM,QAEV3gB,EAAM,aAAc8hB,CAAW,IAAKnB,EAAM,KAC1CmB,KAIAM,EAAO,eAAgBzB,CAAK,GAEvBA,EAAM,cAAaoB,MAIzB/hB,EAAM,gBAAiBwhB,CAAU,IAAKY,EAAO,QAExCzB,EAAM,YAAa;AAEvB,gBAAM0B,IAAiBnB,EAAY,IAAKP,CAAK;AAE7C,UAAA0B,EAAe,aAAaD,EAAO,MACnCC,EAAe,mBAAmBD,EAAO,YACzCC,EAAe,eAAeD,EAAO,QACrCC,EAAe,gBAAgBD,EAAO,SAEtCpiB,EAAM,WAAYwhB,CAAU,IAAKa,GACjCriB,EAAM,cAAewhB,CAAU,IAAKW,GAEpCN;AAAA,QAED;AAEA,QAAAL;AAAA,MAED,WAAYb,EAAM,iBAAkB;AAEnC,cAAM1wB,IAAWnM,EAAM,IAAK68B,CAAK;AAEjC,QAAA1wB,EAAS,MAAM,KAAMziB,CAAK,EAAG,eAAgB00C,CAAS,GAEtDjyB,EAAS,UAAU,IAAK0wB,EAAM,QAAQ,KAAK,GAAK,CAAG,GACnD1wB,EAAS,WAAW,IAAK,GAAK0wB,EAAM,SAAS,KAAK,CAAG,GAErD3gB,EAAM,SAAUyhB,CAAc,IAAKxxB,GAEnCwxB;AAAA,MAED,WAAYd,EAAM,cAAe;AAEhC,cAAM1wB,IAAWnM,EAAM,IAAK68B,CAAK;AAMjC,YAJA1wB,EAAS,MAAM,KAAM0wB,EAAM,KAAK,EAAG,eAAgBA,EAAM,YAAYsB,CAAW,GAChFhyB,EAAS,WAAW0wB,EAAM,UAC1B1wB,EAAS,QAAQ0wB,EAAM,OAElBA,EAAM,YAAa;AAEvB,gBAAMyB,IAASzB,EAAM,QAEf0B,IAAiBnB,EAAY,IAAKP,CAAK;AAE7C,UAAA0B,EAAe,aAAaD,EAAO,MACnCC,EAAe,mBAAmBD,EAAO,YACzCC,EAAe,eAAeD,EAAO,QACrCC,EAAe,gBAAgBD,EAAO,SACtCC,EAAe,mBAAmBD,EAAO,OAAO,MAChDC,EAAe,kBAAkBD,EAAO,OAAO,KAE/CpiB,EAAM,YAAauhB,CAAW,IAAKc,GACnCriB,EAAM,eAAgBuhB,CAAW,IAAKY,GACtCniB,EAAM,kBAAmBuhB,CAAW,IAAKZ,EAAM,OAAO,QAEtDiB;AAAA,QAED;AAEA,QAAA5hB,EAAM,MAAOuhB,CAAW,IAAKtxB,GAE7BsxB;AAAA,MAED,WAAYZ,EAAM,mBAAoB;AAErC,cAAM1wB,IAAWnM,EAAM,IAAK68B,CAAK;AAEjC,QAAA1wB,EAAS,SAAS,KAAM0wB,EAAM,KAAK,EAAG,eAAgBuB,IAAYD,CAAW,GAC7EhyB,EAAS,YAAY,KAAM0wB,EAAM,WAAW,EAAG,eAAgBuB,IAAYD,CAAW,GAEtFjiB,EAAM,KAAM0hB,CAAU,IAAKzxB,GAE3ByxB;AAAA,MAED;AAAA,IAED;AAEA,IAAKD,IAAiB,MAEhBhsB,EAAa,WAIZ/E,EAAW,IAAK,0BAA0B,MAAO,MAErDsP,EAAM,eAAeN,GAAY,aACjCM,EAAM,eAAeN,GAAY,gBAIjCM,EAAM,eAAeN,GAAY,YACjCM,EAAM,eAAeN,GAAY,cAQ7BhP,EAAW,IAAK,0BAA0B,MAAO,MAErDsP,EAAM,eAAeN,GAAY,aACjCM,EAAM,eAAeN,GAAY,eAEtBhP,EAAW,IAAK,+BAA+B,MAAO,MAEjEsP,EAAM,eAAeN,GAAY,YACjCM,EAAM,eAAeN,GAAY,cAIjC,QAAQ,MAAO,6EAA6E,IAQ/FM,EAAM,QAAS,CAAC,IAAK7zB,GACrB6zB,EAAM,QAAS,CAAC,IAAKt0B,GACrBs0B,EAAM,QAAS,CAAC,IAAK53B;AAErB,UAAMk6C,IAAOtiB,EAAM;AAEnB,KAAKsiB,EAAK,sBAAsBhB,KAC/BgB,EAAK,gBAAgBf,KACrBe,EAAK,eAAed,KACpBc,EAAK,mBAAmBb,KACxBa,EAAK,eAAeZ,KACpBY,EAAK,0BAA0BX,KAC/BW,EAAK,oBAAoBV,KACzBU,EAAK,mBAAmBT,KACxBS,EAAK,gBAAgBR,KACrBQ,EAAK,mBAAmBN,OAExBhiB,EAAM,YAAY,SAASshB,GAC3BthB,EAAM,KAAK,SAASwhB,GACpBxhB,EAAM,SAAS,SAASyhB,GACxBzhB,EAAM,MAAM,SAASuhB,GACrBvhB,EAAM,KAAK,SAAS0hB,GAEpB1hB,EAAM,kBAAkB,SAAS2hB,GACjC3hB,EAAM,qBAAqB,SAAS2hB,GACpC3hB,EAAM,YAAY,SAAS4hB,GAC3B5hB,EAAM,eAAe,SAAS4hB,GAC9B5hB,EAAM,WAAW,SAAS6hB,GAC1B7hB,EAAM,cAAc,SAAS6hB,GAC7B7hB,EAAM,wBAAwB,SAAS2hB,GACvC3hB,EAAM,kBAAkB,SAAS4hB,GACjC5hB,EAAM,gBAAgB,SAAS6hB,IAAiBC,IAAcC,GAC9D/hB,EAAM,aAAa,SAAS8hB,GAC5B9hB,EAAM,8BAA8B+hB,GACpC/hB,EAAM,iBAAiBgiB,GAEvBM,EAAK,oBAAoBhB,GACzBgB,EAAK,cAAcf,GACnBe,EAAK,aAAad,GAClBc,EAAK,iBAAiBb,GACtBa,EAAK,aAAaZ,GAElBY,EAAK,wBAAwBX,GAC7BW,EAAK,kBAAkBV,GACvBU,EAAK,iBAAiBT,GACtBS,EAAK,cAAcR,GAEnBQ,EAAK,iBAAiBN,GAEtBhiB,EAAM,UAAU6gB;AAAA,EAIlB;AAEA,WAAS0B,EAAWhH,GAAQ3lC,GAAS;AAEpC,QAAI0rC,IAAoB,GACpBC,IAAc,GACdC,IAAa,GACbC,IAAiB,GACjBC,IAAa;AAEjB,UAAMla,IAAa5xB,EAAO;AAE1B,aAAUtP,IAAI,GAAGC,IAAIg1C,EAAO,QAAQj1C,IAAIC,GAAGD,KAAO;AAEjD,YAAMq6C,IAAQpF,EAAQj1C,CAAC;AAEvB,UAAKq6C,EAAM,oBAAqB;AAE/B,cAAM1wB,IAAW+P,EAAM,YAAashB,CAAiB;AAErD,QAAArxB,EAAS,UAAU,sBAAuB0wB,EAAM,WAAW,GAC3DQ,EAAQ,sBAAuBR,EAAM,OAAO,WAAW,GACvD1wB,EAAS,UAAU,IAAKkxB,CAAO,GAC/BlxB,EAAS,UAAU,mBAAoBuX,CAAU,GAEjD8Z;AAAA,MAED,WAAYX,EAAM,aAAc;AAE/B,cAAM1wB,IAAW+P,EAAM,KAAMwhB,CAAU;AAEvC,QAAAvxB,EAAS,SAAS,sBAAuB0wB,EAAM,WAAW,GAC1D1wB,EAAS,SAAS,aAAcuX,CAAU,GAE1CvX,EAAS,UAAU,sBAAuB0wB,EAAM,WAAW,GAC3DQ,EAAQ,sBAAuBR,EAAM,OAAO,WAAW,GACvD1wB,EAAS,UAAU,IAAKkxB,CAAO,GAC/BlxB,EAAS,UAAU,mBAAoBuX,CAAU,GAEjDga;AAAA,MAED,WAAYb,EAAM,iBAAkB;AAEnC,cAAM1wB,IAAW+P,EAAM,SAAUyhB,CAAc;AAE/C,QAAAxxB,EAAS,SAAS,sBAAuB0wB,EAAM,WAAW,GAC1D1wB,EAAS,SAAS,aAAcuX,CAAU,GAG1C4Z,EAAS,SAAQ,GACjBl1C,EAAQ,KAAMy0C,EAAM,WAAW,GAC/Bz0C,EAAQ,YAAas7B,CAAU,GAC/B4Z,EAAS,gBAAiBl1C,CAAO,GAEjC+jB,EAAS,UAAU,IAAK0wB,EAAM,QAAQ,KAAK,GAAK,CAAG,GACnD1wB,EAAS,WAAW,IAAK,GAAK0wB,EAAM,SAAS,KAAK,CAAG,GAErD1wB,EAAS,UAAU,aAAcmxB,CAAQ,GACzCnxB,EAAS,WAAW,aAAcmxB,CAAQ,GAE1CK;AAAA,MAED,WAAYd,EAAM,cAAe;AAEhC,cAAM1wB,IAAW+P,EAAM,MAAOuhB,CAAW;AAEzC,QAAAtxB,EAAS,SAAS,sBAAuB0wB,EAAM,WAAW,GAC1D1wB,EAAS,SAAS,aAAcuX,CAAU,GAE1C+Z;AAAA,MAED,WAAYZ,EAAM,mBAAoB;AAErC,cAAM1wB,IAAW+P,EAAM,KAAM0hB,CAAU;AAEvC,QAAAzxB,EAAS,UAAU,sBAAuB0wB,EAAM,WAAW,GAC3D1wB,EAAS,UAAU,mBAAoBuX,CAAU,GAEjDka;AAAA,MAED;AAAA,IAED;AAAA,EAED;AAEA,SAAO;AAAA,IACN,OAAOjgB;AAAA,IACP,WAAW8gB;AAAA,IACX,OAAOviB;AAAA,EACT;AAEA;AAEA,SAASwiB,GAAkB9xB,GAAY+E,GAAe;AAErD,QAAM8lB,IAAS,IAAI0F,GAAavwB,GAAY+E,CAAY,GAElDgtB,IAAc,CAAA,GACdC,IAAe,CAAA;AAErB,WAAS/C,IAAO;AAEf,IAAA8C,EAAY,SAAS,GACrBC,EAAa,SAAS;AAAA,EAEvB;AAEA,WAASC,EAAWhC,GAAQ;AAE3B,IAAA8B,EAAY,KAAM9B,CAAK;AAAA,EAExB;AAEA,WAASiC,EAAYC,GAAc;AAElC,IAAAH,EAAa,KAAMG,CAAW;AAAA,EAE/B;AAEA,WAASC,EAAazB,GAAkB;AAEvC,IAAA9F,EAAO,MAAOkH,GAAapB,CAAe;AAAA,EAE3C;AAEA,WAAS0B,EAAiBntC,GAAS;AAElC,IAAA2lC,EAAO,UAAWkH,GAAa7sC,CAAM;AAAA,EAEtC;AASA,SAAO;AAAA,IACN,MAAM+pC;AAAA,IACN,OATa;AAAA,MACb,aAAa8C;AAAA,MACb,cAAcC;AAAA,MAEd,QAAQnH;AAAA,IACV;AAAA,IAKE,aAAauH;AAAA,IACb,iBAAiBC;AAAA,IAEjB,WAAWJ;AAAA,IACX,YAAYC;AAAA,EACd;AAEA;AAEA,SAASI,GAAmBtyB,GAAY+E,GAAe;AAEtD,MAAIwtB,IAAe,oBAAI,QAAO;AAE9B,WAAS7sB,EAAKtE,GAAOyuB,IAAkB,GAAI;AAE1C,UAAM2C,IAAmBD,EAAa,IAAKnxB,CAAK;AAChD,QAAIqxB;AAEJ,WAAKD,MAAqB,UAEzBC,IAAc,IAAIX,GAAkB9xB,GAAY+E,CAAY,GAC5DwtB,EAAa,IAAKnxB,GAAO,CAAEqxB,CAAW,CAAE,KAInC5C,KAAmB2C,EAAiB,UAExCC,IAAc,IAAIX,GAAkB9xB,GAAY+E,CAAY,GAC5DytB,EAAiB,KAAMC,CAAW,KAIlCA,IAAcD,EAAkB3C,CAAe,GAM1C4C;AAAA,EAER;AAEA,WAASxf,IAAU;AAElB,IAAAsf,IAAe,oBAAI,QAAO;AAAA,EAE3B;AAEA,SAAO;AAAA,IACN,KAAK7sB;AAAA,IACL,SAASuN;AAAA,EACX;AAEA;AAEA,MAAMyf,WAA0B/7B,GAAS;AAAA,EAExC,YAAapE,GAAa;AAEzB,UAAK,GAEL,KAAK,sBAAsB,IAE3B,KAAK,OAAO,qBAEZ,KAAK,eAAe/e,IAEpB,KAAK,MAAM,MAEX,KAAK,WAAW,MAEhB,KAAK,kBAAkB,MACvB,KAAK,oBAAoB,GACzB,KAAK,mBAAmB,GAExB,KAAK,YAAY,IACjB,KAAK,qBAAqB,GAE1B,KAAK,UAAW+e,CAAU;AAAA,EAE3B;AAAA,EAEA,KAAMzT,GAAS;AAEd,iBAAM,KAAMA,CAAM,GAElB,KAAK,eAAeA,EAAO,cAE3B,KAAK,MAAMA,EAAO,KAElB,KAAK,WAAWA,EAAO,UAEvB,KAAK,kBAAkBA,EAAO,iBAC9B,KAAK,oBAAoBA,EAAO,mBAChC,KAAK,mBAAmBA,EAAO,kBAE/B,KAAK,YAAYA,EAAO,WACxB,KAAK,qBAAqBA,EAAO,oBAE1B;AAAA,EAER;AAED;AAEA,MAAM6zC,WAA6Bh8B,GAAS;AAAA,EAE3C,YAAapE,GAAa;AAEzB,UAAK,GAEL,KAAK,yBAAyB,IAE9B,KAAK,OAAO,wBAEZ,KAAK,MAAM,MAEX,KAAK,WAAW,MAEhB,KAAK,kBAAkB,MACvB,KAAK,oBAAoB,GACzB,KAAK,mBAAmB,GAExB,KAAK,UAAWA,CAAU;AAAA,EAE3B;AAAA,EAEA,KAAMzT,GAAS;AAEd,iBAAM,KAAMA,CAAM,GAElB,KAAK,MAAMA,EAAO,KAElB,KAAK,WAAWA,EAAO,UAEvB,KAAK,kBAAkBA,EAAO,iBAC9B,KAAK,oBAAoBA,EAAO,mBAChC,KAAK,mBAAmBA,EAAO,kBAExB;AAAA,EAER;AAED;AAEA,MAAM8zC,KAAS;AAAA;AAAA,IAETC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEjB,SAASC,GAAgBC,GAAWC,GAAUC,GAAgB;AAE7D,MAAIC,IAAW,IAAInwB,GAAO;AAE1B,QAAMowB,IAAiB,IAAI97C,GAAO,GACjC+7C,IAAgB,IAAI/7C,GAAO,GAE3Bg8C,IAAY,IAAIp0C,GAAO,GAEvBq0C,IAAiB,IAAIZ,GAAmB,EAAE,cAAcj/C,GAAgB,CAAE,GAC1E8/C,IAAoB,IAAIZ,GAAoB,GAE5Ca,IAAiB,CAAA,GAEjBC,IAAkBR,EAAc,gBAE3BS,IAAa,EAAE,CAAExnD,KAAaC,IAAU,CAAEA,KAAYD,IAAW,CAAEE,EAAU,GAAIA,GAAU,GAE3FunD,IAAyB,IAAI5zB,GAAgB;AAAA,IAClD,SAAS;AAAA,MACR,aAAa;AAAA,IAChB;AAAA,IACE,UAAU;AAAA,MACT,aAAa,EAAE,OAAO,KAAI;AAAA,MAC1B,YAAY,EAAE,OAAO,IAAI1oB,KAAS;AAAA,MAClC,QAAQ,EAAE,OAAO,EAAG;AAAA,IACvB;AAAA,IAEE,cAAcu7C;AAAA,IACd,gBAAgBC;AAAA,EAElB,CAAE,GAEKe,IAA2BD,EAAuB,MAAK;AAC7D,EAAAC,EAAyB,QAAQ,kBAAkB;AAEnD,QAAMC,IAAgB,IAAIx7B,GAAc;AACxC,EAAAw7B,EAAc;AAAA,IACb;AAAA,IACA,IAAI18B;AAAA,MACH,IAAI,aAAc,CAAE,IAAK,IAAK,KAAK,GAAG,IAAK,KAAK,IAAK,GAAG,GAAG,CAAE;AAAA,MAC7D;AAAA,IACH;AAAA,EACA;AAEC,QAAM28B,IAAiB,IAAIt3B,GAAMq3B,GAAeF,CAAsB,GAEhE51B,IAAQ;AAEd,OAAK,UAAU,IAEf,KAAK,aAAa,IAClB,KAAK,cAAc,IAEnB,KAAK,OAAOhyB;AACZ,MAAIgoD,IAAgB,KAAK;AAEzB,OAAK,SAAS,SAAWlJ,GAAQzpB,GAAOlc,GAAS;AAKhD,QAHK6Y,EAAM,YAAY,MAClBA,EAAM,eAAe,MAASA,EAAM,gBAAgB,MAEpD8sB,EAAO,WAAW,EAAI;AAE3B,UAAMvpB,IAAsByxB,EAAU,gBAAe,GAC/CiB,IAAiBjB,EAAU,kBAAiB,GAC5C1xB,IAAoB0xB,EAAU,qBAAoB,GAElDkB,IAASlB,EAAU;AAGzB,IAAAkB,EAAO,YAAa5nD,EAAU,GAC9B4nD,EAAO,QAAQ,MAAM,SAAU,GAAG,GAAG,GAAG,CAAC,GACzCA,EAAO,QAAQ,MAAM,QAAS,EAAI,GAClCA,EAAO,eAAgB,EAAK;AAI5B,UAAMC,KAAUH,MAAkB9nD,MAAgB,KAAK,SAASA,IAC1DkoD,IAAYJ,MAAkB9nD,MAAgB,KAAK,SAASA;AAIlE,aAAU2J,IAAI,GAAGuQ,IAAK0kC,EAAO,QAAQj1C,IAAIuQ,GAAIvQ,KAAO;AAEnD,YAAMq6C,IAAQpF,EAAQj1C,CAAC,GACjB87C,IAASzB,EAAM;AAErB,UAAKyB,MAAW,QAAY;AAE3B,gBAAQ,KAAM,yBAAyBzB,GAAO,gBAAgB;AAC9D;AAAA,MAED;AAEA,UAAKyB,EAAO,eAAe,MAASA,EAAO,gBAAgB,GAAQ;AAEnE,MAAAyB,EAAe,KAAMzB,EAAO,OAAO;AAEnC,YAAM0C,IAAqB1C,EAAO,gBAAe;AA0BjD,UAxBAyB,EAAe,SAAUiB,CAAkB,GAE3ChB,EAAc,KAAM1B,EAAO,OAAO,IAE7ByB,EAAe,IAAIM,KAAmBN,EAAe,IAAIM,OAExDN,EAAe,IAAIM,MAEvBL,EAAc,IAAI,KAAK,MAAOK,IAAkBW,EAAmB,CAAC,GACpEjB,EAAe,IAAIC,EAAc,IAAIgB,EAAmB,GACxD1C,EAAO,QAAQ,IAAI0B,EAAc,IAI7BD,EAAe,IAAIM,MAEvBL,EAAc,IAAI,KAAK,MAAOK,IAAkBW,EAAmB,CAAC,GACpEjB,EAAe,IAAIC,EAAc,IAAIgB,EAAmB,GACxD1C,EAAO,QAAQ,IAAI0B,EAAc,KAM9B1B,EAAO,QAAQ,QAAQwC,OAAU,MAAQC,MAAY,IAAO;AAEhE,cAAME,IAAS,KAAK,SAASpoD,KAAiB,EAAE,WAAWyD,IAAe,WAAWA,GAAa,IAAK,CAAA;AAEvG,QAAKgiD,EAAO,QAAQ,QAEnBA,EAAO,IAAI,QAAO,GAInBA,EAAO,MAAM,IAAIjxC,GAAmB0yC,EAAe,GAAGA,EAAe,GAAGkB,CAAI,GAC5E3C,EAAO,IAAI,QAAQ,OAAOzB,EAAM,OAAO,cAEvCyB,EAAO,OAAO,uBAAsB;AAAA,MAErC;AAEA,MAAAqB,EAAU,gBAAiBrB,EAAO,GAAG,GACrCqB,EAAU,MAAK;AAEf,YAAMuB,IAAgB5C,EAAO,iBAAgB;AAE7C,eAAU6C,IAAK,GAAGA,IAAKD,GAAeC,KAAQ;AAE7C,cAAMC,KAAW9C,EAAO,YAAa6C,CAAE;AAEvC,QAAAlB,EAAU;AAAA,UACTD,EAAc,IAAIoB,GAAS;AAAA,UAC3BpB,EAAc,IAAIoB,GAAS;AAAA,UAC3BpB,EAAc,IAAIoB,GAAS;AAAA,UAC3BpB,EAAc,IAAIoB,GAAS;AAAA,QAChC,GAEIP,EAAO,SAAUZ,CAAS,GAE1B3B,EAAO,eAAgBzB,GAAOsE,CAAE,GAEhCrB,IAAWxB,EAAO,WAAU,GAE5B+C,EAAcrzB,GAAOlc,GAAQwsC,EAAO,QAAQzB,GAAO,KAAK,IAAI;AAAA,MAE7D;AAIA,MAAKyB,EAAO,uBAAuB,MAAQ,KAAK,SAASzlD,MAExDyoD,EAAShD,GAAQxsC,CAAM,GAIxBwsC,EAAO,cAAc;AAAA,IAEtB;AAEA,IAAAqC,IAAgB,KAAK,MAErBh2B,EAAM,cAAc,IAEpBg1B,EAAU,gBAAiBzxB,GAAqB0yB,GAAgB3yB,CAAiB;AAAA,EAElF;AAEA,WAASqzB,EAAShD,GAAQxsC,GAAS;AAElC,UAAM4B,IAAWksC,EAAS,OAAQc,CAAc;AAEhD,IAAKH,EAAuB,QAAQ,gBAAgBjC,EAAO,gBAE1DiC,EAAuB,QAAQ,cAAcjC,EAAO,aACpDkC,EAAyB,QAAQ,cAAclC,EAAO,aAEtDiC,EAAuB,cAAc,IACrCC,EAAyB,cAAc,KAInClC,EAAO,YAAY,SAEvBA,EAAO,UAAU,IAAIjxC,GAAmB0yC,EAAe,GAAGA,EAAe,CAAC,IAM3EQ,EAAuB,SAAS,YAAY,QAAQjC,EAAO,IAAI,SAC/DiC,EAAuB,SAAS,WAAW,QAAQjC,EAAO,SAC1DiC,EAAuB,SAAS,OAAO,QAAQjC,EAAO,QACtDqB,EAAU,gBAAiBrB,EAAO,OAAO,GACzCqB,EAAU,MAAK,GACfA,EAAU,mBAAoB7tC,GAAQ,MAAM4B,GAAU6sC,GAAwBG,GAAgB,IAAI,GAIlGF,EAAyB,SAAS,YAAY,QAAQlC,EAAO,QAAQ,SACrEkC,EAAyB,SAAS,WAAW,QAAQlC,EAAO,SAC5DkC,EAAyB,SAAS,OAAO,QAAQlC,EAAO,QACxDqB,EAAU,gBAAiBrB,EAAO,GAAG,GACrCqB,EAAU,MAAK,GACfA,EAAU,mBAAoB7tC,GAAQ,MAAM4B,GAAU8sC,GAA0BE,GAAgB,IAAI;AAAA,EAErG;AAEA,WAASa,EAAkBnuC,GAAQiW,GAAUwzB,GAAO56C,GAAO;AAE1D,QAAIyc,IAAS;AAEb,UAAM8iC,IAAmB3E,EAAM,iBAAiB,KAASzpC,EAAO,yBAAyBA,EAAO;AAEhG,QAAKouC,MAAmB;AAEvB,MAAA9iC,IAAS8iC;AAAA,aAIT9iC,IAAWm+B,EAAM,iBAAiB,KAASsD,IAAoBD,GAExDP,EAAU,wBAAwBt2B,EAAS,gBAAgB,MAAQ,MAAM,QAASA,EAAS,cAAc,KAAMA,EAAS,eAAe,WAAW,KACtJA,EAAS,mBAAmBA,EAAS,sBAAsB,KAC3DA,EAAS,YAAYA,EAAS,YAAY,KAC1CA,EAAS,OAAOA,EAAS,YAAY,GAAM;AAK7C,YAAMo4B,IAAO/iC,EAAO,MAAMgjC,KAAOr4B,EAAS;AAE1C,UAAIs4B,IAAsBvB,EAAgBqB,CAAI;AAE9C,MAAKE,MAAwB,WAE5BA,IAAsB,CAAA,GACtBvB,EAAgBqB,CAAI,IAAKE;AAI1B,UAAIC,IAAiBD,EAAqBD,EAAI;AAE9C,MAAKE,MAAmB,WAEvBA,IAAiBljC,EAAO,MAAK,GAC7BijC,EAAqBD,EAAI,IAAKE,GAC9Bv4B,EAAS,iBAAkB,WAAWw4B,CAAiB,IAIxDnjC,IAASkjC;AAAA,IAEV;AAgCD,QA5BAljC,EAAO,UAAU2K,EAAS,SAC1B3K,EAAO,YAAY2K,EAAS,WAEvBpnB,MAASpJ,KAEb6lB,EAAO,OAAS2K,EAAS,eAAe,OAASA,EAAS,aAAaA,EAAS,OAIhF3K,EAAO,OAAS2K,EAAS,eAAe,OAASA,EAAS,aAAai3B,EAAYj3B,EAAS,IAAI,GAIjG3K,EAAO,WAAW2K,EAAS,UAC3B3K,EAAO,YAAY2K,EAAS,WAC5B3K,EAAO,MAAM2K,EAAS,KAEtB3K,EAAO,cAAc2K,EAAS,aAC9B3K,EAAO,iBAAiB2K,EAAS,gBACjC3K,EAAO,mBAAmB2K,EAAS,kBAEnC3K,EAAO,kBAAkB2K,EAAS,iBAClC3K,EAAO,oBAAoB2K,EAAS,mBACpC3K,EAAO,mBAAmB2K,EAAS,kBAEnC3K,EAAO,qBAAqB2K,EAAS,oBACrC3K,EAAO,YAAY2K,EAAS,WAEvBwzB,EAAM,iBAAiB,MAAQn+B,EAAO,2BAA2B,IAAO;AAE5E,YAAMwkB,IAAqByc,EAAU,WAAW,IAAKjhC,CAAM;AAC3D,MAAAwkB,EAAmB,QAAQ2Z;AAAA,IAE5B;AAEA,WAAOn+B;AAAA,EAER;AAEA,WAAS2iC,EAAcjuC,GAAQtB,GAAQgwC,GAAcjF,GAAO56C,GAAO;AAElE,QAAKmR,EAAO,YAAY,GAAQ;AAIhC,QAFgBA,EAAO,OAAO,KAAMtB,EAAO,MAAM,MAE/BsB,EAAO,UAAUA,EAAO,UAAUA,EAAO,cAEnDA,EAAO,cAAgBA,EAAO,iBAAiBnR,MAASpJ,QAAsB,CAAEua,EAAO,iBAAiB0sC,EAAS,iBAAkB1sC,CAAM,IAAO;AAEtJ,MAAAA,EAAO,gBAAgB,iBAAkB0uC,EAAa,oBAAoB1uC,EAAO,WAAW;AAE5F,YAAMM,KAAWksC,EAAS,OAAQxsC,CAAM,GAClCiW,IAAWjW,EAAO;AAExB,UAAK,MAAM,QAASiW,IAAa;AAEhC,cAAM1C,IAASjT,GAAS;AAExB,iBAAUquC,IAAI,GAAGC,IAAKr7B,EAAO,QAAQo7B,IAAIC,GAAID,KAAO;AAEnD,gBAAMn7B,IAAQD,EAAQo7B,CAAC,GACjB93B,IAAgBZ,EAAUzC,EAAM,aAAa;AAEnD,cAAKqD,KAAiBA,EAAc,SAAU;AAE7C,kBAAMg4B,IAAgBV,EAAkBnuC,GAAQ6W,GAAe4yB,GAAO56C,CAAI;AAE1E,YAAAmR,EAAO,eAAgBusC,GAAWvsC,GAAQtB,GAAQgwC,GAAcpuC,IAAUuuC,GAAer7B,CAAK,GAE9F+4B,EAAU,mBAAoBmC,GAAc,MAAMpuC,IAAUuuC,GAAe7uC,GAAQwT,CAAK,GAExFxT,EAAO,cAAeusC,GAAWvsC,GAAQtB,GAAQgwC,GAAcpuC,IAAUuuC,GAAer7B,CAAK;AAAA,UAE9F;AAAA,QAED;AAAA,MAED,WAAYyC,EAAS,SAAU;AAE9B,cAAM44B,IAAgBV,EAAkBnuC,GAAQiW,GAAUwzB,GAAO56C,CAAI;AAErE,QAAAmR,EAAO,eAAgBusC,GAAWvsC,GAAQtB,GAAQgwC,GAAcpuC,IAAUuuC,GAAe,IAAI,GAE7FtC,EAAU,mBAAoBmC,GAAc,MAAMpuC,IAAUuuC,GAAe7uC,GAAQ,IAAI,GAEvFA,EAAO,cAAeusC,GAAWvsC,GAAQtB,GAAQgwC,GAAcpuC,IAAUuuC,GAAe,IAAI;AAAA,MAE7F;AAAA,IAED;AAID,UAAMpuC,IAAWT,EAAO;AAExB,aAAU5Q,KAAI,GAAGC,IAAIoR,EAAS,QAAQrR,KAAIC,GAAGD;AAE5C,MAAA6+C,EAAcxtC,EAAUrR,EAAC,GAAIsP,GAAQgwC,GAAcjF,GAAO56C,CAAI;AAAA,EAIhE;AAEA,WAAS4/C,EAAmBv/C,GAAQ;AAInC,IAFiBA,EAAM,OAEd,oBAAqB,WAAWu/C,CAAiB;AAI1D,eAAYpjC,KAAM2hC,GAAiB;AAElC,YAAMpgC,IAAQogC,EAAgB3hC,CAAE,GAE1ByjC,IAAO5/C,EAAM,OAAO;AAE1B,MAAK4/C,KAAQliC,MAEWA,EAAOkiC,CAAI,EACnB,QAAO,GACtB,OAAOliC,EAAOkiC,CAAI;AAAA,IAIpB;AAAA,EAED;AAED;AAEA,SAASC,GAAYzwB,GAAI9E,GAAY+E,GAAe;AAEnD,QAAMC,IAAWD,EAAa;AAE9B,WAASywB,IAAc;AAEtB,QAAIC,IAAS;AAEb,UAAM34C,KAAQ,IAAImC,GAAO;AACzB,QAAIy2C,KAAmB;AACvB,UAAMC,KAAoB,IAAI12C,GAAS,GAAG,GAAG,GAAG,CAAC;AAEjD,WAAO;AAAA,MAEN,SAAS,SAAW22C,IAAY;AAE/B,QAAKF,OAAqBE,MAAa,CAAEH,MAExC3wB,EAAG,UAAW8wB,IAAWA,IAAWA,IAAWA,EAAS,GACxDF,KAAmBE;AAAA,MAIrB;AAAA,MAEA,WAAW,SAAWC,IAAO;AAE5B,QAAAJ,IAASI;AAAA,MAEV;AAAA,MAEA,UAAU,SAAWp6C,IAAGT,IAAGtD,IAAGD,IAAG+3B,IAAqB;AAErD,QAAKA,OAAuB,OAE3B/zB,MAAKhE,IAAGuD,MAAKvD,IAAGC,MAAKD,KAItBqF,GAAM,IAAKrB,IAAGT,IAAGtD,IAAGD,EAAC,GAEhBk+C,GAAkB,OAAQ74C,EAAK,MAAO,OAE1CgoB,EAAG,WAAYrpB,IAAGT,IAAGtD,IAAGD,EAAC,GACzBk+C,GAAkB,KAAM74C,EAAK;AAAA,MAI/B;AAAA,MAEA,OAAO,WAAY;AAElB,QAAA24C,IAAS,IAETC,KAAmB,MACnBC,GAAkB,IAAK,IAAK,GAAG,GAAG,CAAC;AAAA,MAEpC;AAAA,IAEH;AAAA,EAEC;AAEA,WAASG,IAAc;AAEtB,QAAIL,IAAS,IAETM,KAAmB,MACnBC,KAAmB,MACnBC,KAAoB;AAExB,WAAO;AAAA,MAEN,SAAS,SAAWC,IAAY;AAE/B,QAAKA,KAEJC,GAAQrxB,EAAG,UAAU,IAIrBsxB,GAAStxB,EAAG,UAAU;AAAA,MAIxB;AAAA,MAEA,SAAS,SAAWuxB,IAAY;AAE/B,QAAKN,OAAqBM,MAAa,CAAEZ,MAExC3wB,EAAG,UAAWuxB,EAAS,GACvBN,KAAmBM;AAAA,MAIrB;AAAA,MAEA,SAAS,SAAWC,IAAY;AAE/B,YAAKN,OAAqBM,IAAY;AAErC,kBAASA,IAAS;AAAA,YAEjB,KAAKvoD;AAEJ,cAAA+2B,EAAG,UAAWA,EAAG,KAAK;AACtB;AAAA,YAED,KAAK92B;AAEJ,cAAA82B,EAAG,UAAWA,EAAG,MAAM;AACvB;AAAA,YAED,KAAK72B;AAEJ,cAAA62B,EAAG,UAAWA,EAAG,IAAI;AACrB;AAAA,YAED,KAAK52B;AAEJ,cAAA42B,EAAG,UAAWA,EAAG,MAAM;AACvB;AAAA,YAED,KAAK32B;AAEJ,cAAA22B,EAAG,UAAWA,EAAG,KAAK;AACtB;AAAA,YAED,KAAK12B;AAEJ,cAAA02B,EAAG,UAAWA,EAAG,MAAM;AACvB;AAAA,YAED,KAAKz2B;AAEJ,cAAAy2B,EAAG,UAAWA,EAAG,OAAO;AACxB;AAAA,YAED,KAAKx2B;AAEJ,cAAAw2B,EAAG,UAAWA,EAAG,QAAQ;AACzB;AAAA,YAED;AAEC,cAAAA,EAAG,UAAWA,EAAG,MAAM;AAAA,UAE9B;AAEK,UAAAkxB,KAAmBM;AAAA,QAEpB;AAAA,MAED;AAAA,MAEA,WAAW,SAAWT,IAAO;AAE5B,QAAAJ,IAASI;AAAA,MAEV;AAAA,MAEA,UAAU,SAAWr1C,IAAQ;AAE5B,QAAKy1C,OAAsBz1C,OAE1BskB,EAAG,WAAYtkB,EAAK,GACpBy1C,KAAoBz1C;AAAA,MAItB;AAAA,MAEA,OAAO,WAAY;AAElB,QAAAi1C,IAAS,IAETM,KAAmB,MACnBC,KAAmB,MACnBC,KAAoB;AAAA,MAErB;AAAA,IAEH;AAAA,EAEC;AAEA,WAASM,IAAgB;AAExB,QAAId,IAAS,IAETe,KAAqB,MACrBC,KAAqB,MACrBC,KAAoB,MACpBC,KAAyB,MACzBC,KAAqB,MACrBC,KAAsB,MACtBC,KAAsB,MACtBC,KAAsB;AAE1B,WAAO;AAAA,MAEN,SAAS,SAAWC,IAAc;AAEjC,QAAOvB,MAEDuB,KAEJb,GAAQrxB,EAAG,YAAY,IAIvBsxB,GAAStxB,EAAG,YAAY;AAAA,MAM3B;AAAA,MAEA,SAAS,SAAWmyB,IAAc;AAEjC,QAAKT,OAAuBS,MAAe,CAAExB,MAE5C3wB,EAAG,YAAamyB,EAAW,GAC3BT,KAAqBS;AAAA,MAIvB;AAAA,MAEA,SAAS,SAAWC,IAAaC,IAAYF,IAAc;AAE1D,SAAKR,OAAuBS,MACvBR,OAAsBS,MACtBR,OAA2BM,QAE/BnyB,EAAG,YAAaoyB,IAAaC,IAAYF,EAAW,GAEpDR,KAAqBS,IACrBR,KAAoBS,IACpBR,KAAyBM;AAAA,MAI3B;AAAA,MAEA,OAAO,SAAWG,IAAaC,IAAcC,IAAe;AAE3D,SAAKV,OAAuBQ,MACvBP,OAAwBQ,MACxBP,OAAwBQ,QAE5BxyB,EAAG,UAAWsyB,IAAaC,IAAcC,EAAY,GAErDV,KAAqBQ,IACrBP,KAAsBQ,IACtBP,KAAsBQ;AAAA,MAIxB;AAAA,MAEA,WAAW,SAAWzB,IAAO;AAE5B,QAAAJ,IAASI;AAAA,MAEV;AAAA,MAEA,UAAU,SAAW5zB,IAAU;AAE9B,QAAK80B,OAAwB90B,OAE5B6C,EAAG,aAAc7C,EAAO,GACxB80B,KAAsB90B;AAAA,MAIxB;AAAA,MAEA,OAAO,WAAY;AAElB,QAAAwzB,IAAS,IAETe,KAAqB,MACrBC,KAAqB,MACrBC,KAAoB,MACpBC,KAAyB,MACzBC,KAAqB,MACrBC,KAAsB,MACtBC,KAAsB,MACtBC,KAAsB;AAAA,MAEvB;AAAA,IAEH;AAAA,EAEC;AAIA,QAAMQ,IAAc,IAAI/B,EAAW,GAC7BgC,IAAc,IAAI1B,EAAW,GAC7B2B,IAAgB,IAAIlB,EAAa,GAEjCmB,IAAc,oBAAI,QAAO,GACzBC,IAAgB,oBAAI,QAAO;AAEjC,MAAIC,IAAsB,CAAA,GAEtBC,IAA2B,CAAA,GAC3BC,IAAqB,oBAAI,QAAO,GAChCC,IAAqB,CAAA,GAErBC,IAAiB,MAEjBC,IAAyB,IACzBC,IAAkB,MAClBC,IAAuB,MACvBC,IAAkB,MAClBC,IAAkB,MAClBC,IAA4B,MAC5BC,IAAuB,MACvBC,IAAuB,MACvBC,IAAoB,IAAI3iC,GAAO,GAAG,GAAG,CAAC,GACtC4iC,IAAoB,GACpBC,IAA2B,IAE3BC,IAAmB,MACnBC,KAAkB,MAElBC,IAAmB,MAEnBC,IAA6B,MAC7BC,IAA4B;AAEhC,QAAMpkB,IAAc9P,EAAG,aAAcA,EAAG,gCAAgC;AAExE,MAAIm0B,IAAqB,IACrBnc,IAAU;AACd,QAAMoc,IAAYp0B,EAAG,aAAcA,EAAG,OAAO;AAE7C,EAAKo0B,EAAU,QAAS,OAAO,MAAO,MAErCpc,IAAU,WAAY,cAAc,KAAMoc,CAAS,EAAI,EAAG,GAC1DD,IAAuBnc,KAAW,KAEvBoc,EAAU,QAAS,WAAW,MAAO,OAEhDpc,IAAU,WAAY,kBAAkB,KAAMoc,CAAS,EAAI,EAAG,GAC9DD,IAAuBnc,KAAW;AAInC,MAAIqc,IAAqB,MACrBC,KAAuB,CAAA;AAE3B,QAAMC,IAAev0B,EAAG,aAAcA,EAAG,WAAW,GAC9Cw0B,IAAgBx0B,EAAG,aAAcA,EAAG,QAAQ,GAE5Cy0B,KAAiB,IAAIt6C,KAAU,UAAWo6C,CAAY,GACtDG,KAAkB,IAAIv6C,KAAU,UAAWq6C,CAAa;AAE9D,WAASG,GAAepkD,GAAMsR,IAAQ4Q,IAAOmiC,IAAa;AAEzD,UAAM77C,KAAO,IAAI,WAAY,IACvBgkB,KAAUiD,EAAG,cAAa;AAEhC,IAAAA,EAAG,YAAazvB,GAAMwsB,EAAO,GAC7BiD,EAAG,cAAezvB,GAAMyvB,EAAG,oBAAoBA,EAAG,OAAO,GACzDA,EAAG,cAAezvB,GAAMyvB,EAAG,oBAAoBA,EAAG,OAAO;AAEzD,aAAUlvB,KAAI,GAAGA,KAAI2hB,IAAO3hB;AAE3B,MAAKovB,MAAc3vB,MAASyvB,EAAG,cAAczvB,MAASyvB,EAAG,oBAExDA,EAAG,WAAYne,IAAQ,GAAGme,EAAG,MAAM,GAAG,GAAG40B,IAAY,GAAG50B,EAAG,MAAMA,EAAG,eAAejnB,EAAI,IAIvFinB,EAAG,WAAYne,KAAS/Q,IAAG,GAAGkvB,EAAG,MAAM,GAAG,GAAG,GAAGA,EAAG,MAAMA,EAAG,eAAejnB,EAAI;AAMjF,WAAOgkB;AAAA,EAER;AAEA,QAAM83B,KAAgB,CAAA;AACtB,EAAAA,GAAe70B,EAAG,UAAU,IAAK20B,GAAe30B,EAAG,YAAYA,EAAG,YAAY,CAAC,GAC/E60B,GAAe70B,EAAG,gBAAgB,IAAK20B,GAAe30B,EAAG,kBAAkBA,EAAG,6BAA6B,CAAC,GAEvGE,MAEJ20B,GAAe70B,EAAG,gBAAgB,IAAK20B,GAAe30B,EAAG,kBAAkBA,EAAG,kBAAkB,GAAG,CAAC,GACpG60B,GAAe70B,EAAG,UAAU,IAAK20B,GAAe30B,EAAG,YAAYA,EAAG,YAAY,GAAG,CAAC,IAMnFyyB,EAAY,SAAU,GAAG,GAAG,GAAG,CAAC,GAChCC,EAAY,SAAU,CAAC,GACvBC,EAAc,SAAU,CAAC,GAEzBtB,GAAQrxB,EAAG,UAAU,GACrB0yB,EAAY,QAAStpD,EAAc,GAEnC0rD,GAAc,EAAK,GACnBC,EAAahuD,EAAY,GACzBsqD,GAAQrxB,EAAG,SAAS,GAEpBg1B,GAAaztD,EAAU;AAIvB,WAAS8pD,GAAQtkC,GAAK;AAErB,IAAK+lC,EAAqB/lC,CAAE,MAAO,OAElCiT,EAAG,OAAQjT,CAAE,GACb+lC,EAAqB/lC,CAAE,IAAK;AAAA,EAI9B;AAEA,WAASukC,GAASvkC,GAAK;AAEtB,IAAK+lC,EAAqB/lC,CAAE,MAAO,OAElCiT,EAAG,QAASjT,CAAE,GACd+lC,EAAqB/lC,CAAE,IAAK;AAAA,EAI9B;AAEA,WAASkoC,GAAiBpzC,GAAQqzC,IAAc;AAE/C,WAAKnC,EAA0BlxC,CAAM,MAAOqzC,MAE3Cl1B,EAAG,gBAAiBne,GAAQqzC,EAAW,GAEvCnC,EAA0BlxC,CAAM,IAAKqzC,IAEhCh1B,MAICre,MAAWme,EAAG,qBAElB+yB,EAA0B/yB,EAAG,WAAW,IAAKk1B,KAIzCrzC,MAAWme,EAAG,gBAElB+yB,EAA0B/yB,EAAG,gBAAgB,IAAKk1B,MAM7C,MAID;AAAA,EAER;AAEA,WAAStlB,EAAa9T,GAAco5B,IAAc;AAEjD,QAAItlB,KAAcqjB,GAEd3mB,KAAc;AAElB,QAAKxQ;AAWJ,UATA8T,KAAcojB,EAAmB,IAAKkC,EAAW,GAE5CtlB,OAAgB,WAEpBA,KAAc,CAAA,GACdojB,EAAmB,IAAKkC,IAAatlB,EAAW,IAI5C9T,EAAa,8BAA+B;AAEhD,cAAM7N,KAAW6N,EAAa;AAE9B,YAAK8T,GAAY,WAAW3hB,GAAS,UAAU2hB,GAAa,CAAC,MAAO5P,EAAG,mBAAoB;AAE1F,mBAAUlvB,KAAI,GAAGuQ,KAAK4M,GAAS,QAAQnd,KAAIuQ,IAAIvQ;AAE9C,YAAA8+B,GAAa9+B,EAAC,IAAKkvB,EAAG,oBAAoBlvB;AAI3C,UAAA8+B,GAAY,SAAS3hB,GAAS,QAE9Bqe,KAAc;AAAA,QAEf;AAAA,MAED;AAEC,QAAKsD,GAAa,OAAQ5P,EAAG,sBAE5B4P,GAAa,KAAM5P,EAAG,mBAEtBsM,KAAc;AAAA;AAQhB,MAAKsD,GAAa,OAAQ5P,EAAG,SAE5B4P,GAAa,KAAM5P,EAAG,MAEtBsM,KAAc;AAMhB,IAAKA,OAECrM,EAAa,WAEjBD,EAAG,YAAa4P,EAAW,IAI3B1U,EAAW,IAAK,sBAAuB,iBAAkB0U,EAAW;AAAA,EAOvE;AAEA,WAASulB,GAAYjpB,GAAU;AAE9B,WAAKgnB,MAAmBhnB,KAEvBlM,EAAG,WAAYkM,CAAO,GAEtBgnB,IAAiBhnB,GAEV,MAID;AAAA,EAER;AAEA,QAAMkpB,KAAe;AAAA,IACpB,CAAEvtD,EAAW,GAAIm4B,EAAG;AAAA,IACpB,CAAEl4B,EAAgB,GAAIk4B,EAAG;AAAA,IACzB,CAAEj4B,EAAuB,GAAIi4B,EAAG;AAAA,EAClC;AAEC,MAAKE;AAEJ,IAAAk1B,GAAcptD,MAAgBg4B,EAAG,KACjCo1B,GAAcntD,MAAgB+3B,EAAG;AAAA,OAE3B;AAEN,UAAM0L,IAAYxQ,EAAW,IAAK,kBAAkB;AAEpD,IAAKwQ,MAAc,SAElB0pB,GAAcptD,MAAgB0jC,EAAU,SACxC0pB,GAAcntD,MAAgByjC,EAAU;AAAA,EAI1C;AAEA,QAAM2pB,KAAa;AAAA,IAClB,CAAEntD,EAAU,GAAI83B,EAAG;AAAA,IACnB,CAAE73B,EAAS,GAAI63B,EAAG;AAAA,IAClB,CAAE53B,EAAc,GAAI43B,EAAG;AAAA,IACvB,CAAE13B,EAAc,GAAI03B,EAAG;AAAA,IACvB,CAAEp3B,EAAsB,GAAIo3B,EAAG;AAAA,IAC/B,CAAEt3B,EAAc,GAAIs3B,EAAG;AAAA,IACvB,CAAEx3B,EAAc,GAAIw3B,EAAG;AAAA,IACvB,CAAE33B,EAAsB,GAAI23B,EAAG;AAAA,IAC/B,CAAEz3B,EAAsB,GAAIy3B,EAAG;AAAA,IAC/B,CAAEr3B,EAAsB,GAAIq3B,EAAG;AAAA,IAC/B,CAAEv3B,EAAsB,GAAIu3B,EAAG;AAAA,IAC/B,CAAEn3B,EAAmB,GAAIm3B,EAAG;AAAA,IAC5B,CAAEl3B,EAA2B,GAAIk3B,EAAG;AAAA,IACpC,CAAEj3B,EAAmB,GAAIi3B,EAAG;AAAA,IAC5B,CAAEh3B,EAA2B,GAAIg3B,EAAG;AAAA,EACtC;AAEC,WAASg1B,GAAaM,GAAUC,IAAeC,IAAUC,IAAUC,IAAoBC,IAAeC,IAAeC,IAAYC,IAAYprB,IAAqB;AAEjK,QAAK4qB,MAAa/tD,IAAa;AAE9B,MAAK4rD,MAA2B,OAE/B7B,GAAStxB,EAAG,KAAK,GACjBmzB,IAAyB;AAI1B;AAAA,IAED;AASA,QAPKA,MAA2B,OAE/B9B,GAAQrxB,EAAG,KAAK,GAChBmzB,IAAyB,KAIrBmC,MAAa1tD,IAAiB;AAElC,UAAK0tD,MAAalC,KAAmB1oB,OAAuBmpB,GAA2B;AAWtF,aATKR,MAAyBxrD,MAAe2rD,MAA8B3rD,QAE1Em4B,EAAG,cAAeA,EAAG,QAAQ,GAE7BqzB,IAAuBxrD,IACvB2rD,IAA4B3rD,KAIxB6iC;AAEJ,kBAAS4qB,GAAQ;AAAA,YAEhB,KAAK9tD;AACJ,cAAAw4B,EAAG,kBAAmBA,EAAG,KAAKA,EAAG,qBAAqBA,EAAG,KAAKA,EAAG,mBAAmB;AACpF;AAAA,YAED,KAAKv4B;AACJ,cAAAu4B,EAAG,UAAWA,EAAG,KAAKA,EAAG,GAAG;AAC5B;AAAA,YAED,KAAKt4B;AACJ,cAAAs4B,EAAG,kBAAmBA,EAAG,MAAMA,EAAG,qBAAqBA,EAAG,MAAMA,EAAG,GAAG;AACtE;AAAA,YAED,KAAKr4B;AACJ,cAAAq4B,EAAG,kBAAmBA,EAAG,MAAMA,EAAG,WAAWA,EAAG,MAAMA,EAAG,SAAS;AAClE;AAAA,YAED;AACC,sBAAQ,MAAO,wCAAwCs1B,CAAQ;AAC/D;AAAA,UAEP;AAAA;AAIK,kBAASA,GAAQ;AAAA,YAEhB,KAAK9tD;AACJ,cAAAw4B,EAAG,kBAAmBA,EAAG,WAAWA,EAAG,qBAAqBA,EAAG,KAAKA,EAAG,mBAAmB;AAC1F;AAAA,YAED,KAAKv4B;AACJ,cAAAu4B,EAAG,UAAWA,EAAG,WAAWA,EAAG,GAAG;AAClC;AAAA,YAED,KAAKt4B;AACJ,cAAAs4B,EAAG,kBAAmBA,EAAG,MAAMA,EAAG,qBAAqBA,EAAG,MAAMA,EAAG,GAAG;AACtE;AAAA,YAED,KAAKr4B;AACJ,cAAAq4B,EAAG,UAAWA,EAAG,MAAMA,EAAG,SAAS;AACnC;AAAA,YAED;AACC,sBAAQ,MAAO,wCAAwCs1B,CAAQ;AAC/D;AAAA,UAEP;AAII,QAAAhC,IAAkB,MAClBC,IAAkB,MAClBE,IAAuB,MACvBC,IAAuB,MACvBC,EAAkB,IAAK,GAAG,GAAG,CAAC,GAC9BC,IAAoB,GAEpBR,IAAkBkC,GAClBzB,IAA2BnpB;AAAA,MAE5B;AAEA;AAAA,IAED;AAIA,IAAAgrB,KAAqBA,MAAsBH,IAC3CI,KAAgBA,MAAiBH,IACjCI,KAAgBA,MAAiBH,KAE5BF,OAAkBlC,KAAwBqC,OAAuBlC,OAErExzB,EAAG,sBAAuBo1B,GAAcG,EAAa,GAAIH,GAAcM,GAAoB,GAE3FrC,IAAuBkC,IACvB/B,IAA4BkC,MAIxBF,OAAalC,KAAmBmC,OAAalC,KAAmBoC,OAAkBlC,KAAwBmC,OAAkBlC,OAEhI1zB,EAAG,kBAAmBq1B,GAAYG,EAAQ,GAAIH,GAAYI,EAAQ,GAAIJ,GAAYM,EAAa,GAAIN,GAAYO,EAAa,CAAE,GAE9HtC,IAAkBkC,IAClBjC,IAAkBkC,IAClBhC,IAAuBkC,IACvBjC,IAAuBkC,MAInBC,GAAW,OAAQlC,CAAiB,MAAO,MAASmC,OAAelC,OAEvE5zB,EAAG,WAAY61B,GAAW,GAAGA,GAAW,GAAGA,GAAW,GAAGC,EAAU,GAEnEnC,EAAkB,KAAMkC,EAAU,GAClCjC,IAAoBkC,KAIrB1C,IAAkBkC,GAClBzB,IAA2B;AAAA,EAE5B;AAEA,WAASkC,GAAap+B,GAAUq+B,IAAc;AAE7C,IAAAr+B,EAAS,SAASrwB,KACfgqD,GAAStxB,EAAG,SAAS,IACrBqxB,GAAQrxB,EAAG,SAAS;AAEvB,QAAIi2B,KAAct+B,EAAS,SAAStwB;AACpC,IAAK2uD,OAAcC,KAAY,CAAEA,KAEjCnB,GAAcmB,EAAS,GAErBt+B,EAAS,aAAanwB,MAAkBmwB,EAAS,gBAAgB,KAChEq9B,GAAaztD,EAAU,IACvBytD,GAAar9B,EAAS,UAAUA,EAAS,eAAeA,EAAS,UAAUA,EAAS,UAAUA,EAAS,oBAAoBA,EAAS,eAAeA,EAAS,eAAeA,EAAS,YAAYA,EAAS,YAAYA,EAAS,kBAAkB,GAEnP+6B,EAAY,QAAS/6B,EAAS,SAAS,GACvC+6B,EAAY,QAAS/6B,EAAS,SAAS,GACvC+6B,EAAY,QAAS/6B,EAAS,UAAU,GACxC86B,EAAY,QAAS96B,EAAS,UAAU;AAExC,UAAMu+B,KAAev+B,EAAS;AAC9B,IAAAg7B,EAAc,QAASuD,EAAY,GAC9BA,OAEJvD,EAAc,QAASh7B,EAAS,gBAAgB,GAChDg7B,EAAc,QAASh7B,EAAS,aAAaA,EAAS,YAAYA,EAAS,eAAe,GAC1Fg7B,EAAc,MAAOh7B,EAAS,aAAaA,EAAS,cAAcA,EAAS,YAAY,IAIxFw+B,EAAkBx+B,EAAS,eAAeA,EAAS,qBAAqBA,EAAS,kBAAkB,GAEnGA,EAAS,oBAAoB,KAC1B05B,GAAQrxB,EAAG,wBAAwB,IACnCsxB,GAAStxB,EAAG,wBAAwB;AAAA,EAExC;AAIA,WAAS80B,GAAcmB,GAAY;AAElC,IAAKnC,MAAqBmC,MAEpBA,IAEJj2B,EAAG,UAAWA,EAAG,EAAE,IAInBA,EAAG,UAAWA,EAAG,GAAG,GAIrB8zB,IAAmBmC;AAAA,EAIrB;AAEA,WAASlB,EAAaqB,GAAW;AAEhC,IAAKA,MAAatvD,MAEjBuqD,GAAQrxB,EAAG,SAAS,GAEfo2B,MAAarC,OAEZqC,MAAarvD,KAEjBi5B,EAAG,SAAUA,EAAG,IAAI,IAETo2B,MAAapvD,KAExBg5B,EAAG,SAAUA,EAAG,KAAK,IAIrBA,EAAG,SAAUA,EAAG,cAAc,MAQhCsxB,GAAStxB,EAAG,SAAS,GAItB+zB,KAAkBqC;AAAA,EAEnB;AAEA,WAASC,EAAc96C,GAAQ;AAE9B,IAAKA,MAAUy4C,MAETG,KAAqBn0B,EAAG,UAAWzkB,CAAK,GAE7Cy4C,IAAmBz4C;AAAA,EAIrB;AAEA,WAAS46C,EAAkBG,GAAeC,IAAQtY,IAAQ;AAEzD,IAAKqY,KAEJjF,GAAQrxB,EAAG,mBAAmB,IAEzBi0B,MAA+BsC,MAAUrC,MAA8BjW,QAE3Eje,EAAG,cAAeu2B,IAAQtY,EAAK,GAE/BgW,IAA6BsC,IAC7BrC,IAA4BjW,OAM7BqT,GAAStxB,EAAG,mBAAmB;AAAA,EAIjC;AAEA,WAASw2B,EAAgBC,GAAc;AAEtC,IAAKA,IAEJpF,GAAQrxB,EAAG,YAAY,IAIvBsxB,GAAStxB,EAAG,YAAY;AAAA,EAI1B;AAIA,WAAS02B,EAAeC,GAAY;AAEnC,IAAKA,MAAc,WAAYA,IAAY32B,EAAG,WAAW8P,IAAc,IAElEukB,MAAuBsC,MAE3B32B,EAAG,cAAe22B,CAAS,GAC3BtC,IAAqBsC;AAAA,EAIvB;AAEA,WAASC,EAAaC,GAAWC,IAAcH,IAAY;AAE1D,IAAKA,OAAc,WAEbtC,MAAuB,OAE3BsC,KAAY32B,EAAG,WAAW8P,IAAc,IAIxC6mB,KAAYtC;AAMd,QAAI0C,KAAezC,GAAsBqC,EAAS;AAElD,IAAKI,OAAiB,WAErBA,KAAe,EAAE,MAAM,QAAW,SAAS,OAAS,GACpDzC,GAAsBqC,EAAS,IAAKI,MAIhCA,GAAa,SAASF,KAAaE,GAAa,YAAYD,QAE3DzC,MAAuBsC,OAE3B32B,EAAG,cAAe22B,EAAS,GAC3BtC,IAAqBsC,KAItB32B,EAAG,YAAa62B,GAAWC,MAAgBjC,GAAegC,CAAS,CAAE,GAErEE,GAAa,OAAOF,GACpBE,GAAa,UAAUD;AAAA,EAIzB;AAEA,WAASE,KAAgB;AAExB,UAAMD,IAAezC,GAAsBD,CAAkB;AAE7D,IAAK0C,MAAiB,UAAaA,EAAa,SAAS,WAExD/2B,EAAG,YAAa+2B,EAAa,MAAM,IAAI,GAEvCA,EAAa,OAAO,QACpBA,EAAa,UAAU;AAAA,EAIzB;AAEA,WAASE,KAAuB;AAE/B,QAAI;AAEH,MAAAj3B,EAAG,qBAAqB,MAAOA,GAAI,SAAS;AAAA,IAE7C,SAAUk3B,GAAQ;AAEjB,cAAQ,MAAO,qBAAqBA,CAAK;AAAA,IAE1C;AAAA,EAED;AAEA,WAASC,KAAuB;AAE/B,QAAI;AAEH,MAAAn3B,EAAG,qBAAqB,MAAOA,GAAI,SAAS;AAAA,IAE7C,SAAUk3B,GAAQ;AAEjB,cAAQ,MAAO,qBAAqBA,CAAK;AAAA,IAE1C;AAAA,EAED;AAEA,WAASE,KAAgB;AAExB,QAAI;AAEH,MAAAp3B,EAAG,cAAc,MAAOA,GAAI,SAAS;AAAA,IAEtC,SAAUk3B,GAAQ;AAEjB,cAAQ,MAAO,qBAAqBA,CAAK;AAAA,IAE1C;AAAA,EAED;AAEA,WAASG,KAAgB;AAExB,QAAI;AAEH,MAAAr3B,EAAG,cAAc,MAAOA,GAAI,SAAS;AAAA,IAEtC,SAAUk3B,GAAQ;AAEjB,cAAQ,MAAO,qBAAqBA,CAAK;AAAA,IAE1C;AAAA,EAED;AAEA,WAASI,KAA0B;AAElC,QAAI;AAEH,MAAAt3B,EAAG,wBAAwB,MAAOA,GAAI,SAAS;AAAA,IAEhD,SAAUk3B,GAAQ;AAEjB,cAAQ,MAAO,qBAAqBA,CAAK;AAAA,IAE1C;AAAA,EAED;AAEA,WAASK,KAA0B;AAElC,QAAI;AAEH,MAAAv3B,EAAG,wBAAwB,MAAOA,GAAI,SAAS;AAAA,IAEhD,SAAUk3B,GAAQ;AAEjB,cAAQ,MAAO,qBAAqBA,CAAK;AAAA,IAE1C;AAAA,EAED;AAEA,WAASM,KAAe;AAEvB,QAAI;AAEH,MAAAx3B,EAAG,aAAa,MAAOA,GAAI,SAAS;AAAA,IAErC,SAAUk3B,GAAQ;AAEjB,cAAQ,MAAO,qBAAqBA,CAAK;AAAA,IAE1C;AAAA,EAED;AAEA,WAASO,KAAe;AAEvB,QAAI;AAEH,MAAAz3B,EAAG,aAAa,MAAOA,GAAI,SAAS;AAAA,IAErC,SAAUk3B,GAAQ;AAEjB,cAAQ,MAAO,qBAAqBA,CAAK;AAAA,IAE1C;AAAA,EAED;AAEA,WAASQ,KAAa;AAErB,QAAI;AAEH,MAAA13B,EAAG,WAAW,MAAOA,GAAI,SAAS;AAAA,IAEnC,SAAUk3B,GAAQ;AAEjB,cAAQ,MAAO,qBAAqBA,CAAK;AAAA,IAE1C;AAAA,EAED;AAEA,WAASS,KAAa;AAErB,QAAI;AAEH,MAAA33B,EAAG,WAAW,MAAOA,GAAI,SAAS;AAAA,IAEnC,SAAUk3B,GAAQ;AAEjB,cAAQ,MAAO,qBAAqBA,CAAK;AAAA,IAE1C;AAAA,EAED;AAIA,WAASU,EAASA,GAAU;AAE3B,IAAKnD,GAAe,OAAQmD,CAAO,MAAO,OAEzC53B,EAAG,QAAS43B,EAAQ,GAAGA,EAAQ,GAAGA,EAAQ,GAAGA,EAAQ,CAAC,GACtDnD,GAAe,KAAMmD,CAAO;AAAA,EAI9B;AAEA,WAASlI,GAAUA,GAAW;AAE7B,IAAKgF,GAAgB,OAAQhF,CAAQ,MAAO,OAE3C1vB,EAAG,SAAU0vB,EAAS,GAAGA,EAAS,GAAGA,EAAS,GAAGA,EAAS,CAAC,GAC3DgF,GAAgB,KAAMhF,CAAQ;AAAA,EAIhC;AAEA,WAASmI,GAAkBC,GAAe5rB,IAAU;AAEnD,QAAIzyB,KAAUo5C,EAAc,IAAK3mB,EAAO;AAExC,IAAKzyB,OAAY,WAEhBA,KAAU,oBAAI,QAAO,GAErBo5C,EAAc,IAAK3mB,IAASzyB,EAAO;AAIpC,QAAIs+C,KAAat+C,GAAQ,IAAKq+C,CAAa;AAE3C,IAAKC,OAAe,WAEnBA,KAAa/3B,EAAG,qBAAsBkM,IAAS4rB,EAAc,IAAI,GAEjEr+C,GAAQ,IAAKq+C,GAAeC,EAAU;AAAA,EAIxC;AAEA,WAASC,GAAqBF,GAAe5rB,IAAU;AAGtD,UAAM6rB,KADUlF,EAAc,IAAK3mB,EAAO,EACf,IAAK4rB,CAAa;AAE7C,IAAKlF,EAAY,IAAK1mB,EAAO,MAAO6rB,OAGnC/3B,EAAG,oBAAqBkM,IAAS6rB,IAAYD,EAAc,mBAAmB,GAE9ElF,EAAY,IAAK1mB,IAAS6rB,EAAU;AAAA,EAItC;AAIA,WAAS3pB,KAAQ;AAIhB,IAAApO,EAAG,QAASA,EAAG,KAAK,GACpBA,EAAG,QAASA,EAAG,SAAS,GACxBA,EAAG,QAASA,EAAG,UAAU,GACzBA,EAAG,QAASA,EAAG,mBAAmB,GAClCA,EAAG,QAASA,EAAG,YAAY,GAC3BA,EAAG,QAASA,EAAG,YAAY,GAC3BA,EAAG,QAASA,EAAG,wBAAwB,GAEvCA,EAAG,cAAeA,EAAG,QAAQ,GAC7BA,EAAG,UAAWA,EAAG,KAAKA,EAAG,IAAI,GAC7BA,EAAG,kBAAmBA,EAAG,KAAKA,EAAG,MAAMA,EAAG,KAAKA,EAAG,IAAI,GACtDA,EAAG,WAAY,GAAG,GAAG,GAAG,CAAC,GAEzBA,EAAG,UAAW,IAAM,IAAM,IAAM,EAAI,GACpCA,EAAG,WAAY,GAAG,GAAG,GAAG,CAAC,GAEzBA,EAAG,UAAW,EAAI,GAClBA,EAAG,UAAWA,EAAG,IAAI,GACrBA,EAAG,WAAY,CAAC,GAEhBA,EAAG,YAAa,UAAU,GAC1BA,EAAG,YAAaA,EAAG,QAAQ,GAAG,UAAU,GACxCA,EAAG,UAAWA,EAAG,MAAMA,EAAG,MAAMA,EAAG,IAAI,GACvCA,EAAG,aAAc,CAAC,GAElBA,EAAG,SAAUA,EAAG,IAAI,GACpBA,EAAG,UAAWA,EAAG,GAAG,GAEpBA,EAAG,cAAe,GAAG,CAAC,GAEtBA,EAAG,cAAeA,EAAG,QAAQ,GAE7BA,EAAG,gBAAiBA,EAAG,aAAa,IAAI,GAEnCE,MAAa,OAEjBF,EAAG,gBAAiBA,EAAG,kBAAkB,IAAI,GAC7CA,EAAG,gBAAiBA,EAAG,kBAAkB,IAAI,IAI9CA,EAAG,WAAY,IAAI,GAEnBA,EAAG,UAAW,CAAC,GAEfA,EAAG,QAAS,GAAG,GAAGA,EAAG,OAAO,OAAOA,EAAG,OAAO,MAAM,GACnDA,EAAG,SAAU,GAAG,GAAGA,EAAG,OAAO,OAAOA,EAAG,OAAO,MAAM,GAIpD8yB,IAAsB,CAAA,GAEtBuB,IAAqB,MACrBC,KAAuB,CAAA,GAEvBvB,IAA2B,CAAA,GAC3BC,IAAqB,oBAAI,QAAO,GAChCC,IAAqB,CAAA,GAErBC,IAAiB,MAEjBC,IAAyB,IACzBC,IAAkB,MAClBC,IAAuB,MACvBC,IAAkB,MAClBC,IAAkB,MAClBC,IAA4B,MAC5BC,IAAuB,MACvBC,IAAuB,MACvBC,IAAoB,IAAI3iC,GAAO,GAAG,GAAG,CAAC,GACtC4iC,IAAoB,GACpBC,IAA2B,IAE3BC,IAAmB,MACnBC,KAAkB,MAElBC,IAAmB,MAEnBC,IAA6B,MAC7BC,IAA4B,MAE5BO,GAAe,IAAK,GAAG,GAAGz0B,EAAG,OAAO,OAAOA,EAAG,OAAO,MAAM,GAC3D00B,GAAgB,IAAK,GAAG,GAAG10B,EAAG,OAAO,OAAOA,EAAG,OAAO,MAAM,GAE5DyyB,EAAY,MAAK,GACjBC,EAAY,MAAK,GACjBC,EAAc,MAAK;AAAA,EAEpB;AAEA,SAAO;AAAA,IAEN,SAAS;AAAA,MACR,OAAOF;AAAA,MACP,OAAOC;AAAA,MACP,SAASC;AAAA,IACZ;AAAA,IAEE,QAAQtB;AAAA,IACR,SAASC;AAAA,IAET,iBAAiB2D;AAAA,IACjB,aAAarlB;AAAA,IAEb,YAAYulB;AAAA,IAEZ,aAAaH;AAAA,IACb,aAAae;AAAA,IAEb,cAAcjB;AAAA,IACd,aAAaC;AAAA,IAEb,cAAcsB;AAAA,IACd,kBAAkBF;AAAA,IAElB,gBAAgBK;AAAA,IAEhB,eAAeE;AAAA,IACf,aAAaE;AAAA,IACb,eAAeI;AAAA,IACf,sBAAsBC;AAAA,IACtB,sBAAsBE;AAAA,IACtB,YAAYO;AAAA,IACZ,YAAYC;AAAA,IAEZ,kBAAkBE;AAAA,IAClB,qBAAqBG;AAAA,IAErB,cAAcR;AAAA,IACd,cAAcC;AAAA,IACd,eAAeL;AAAA,IACf,eAAeC;AAAA,IACf,yBAAyBC;AAAA,IACzB,yBAAyBC;AAAA,IAEzB,SAASK;AAAA,IACT,UAAUlI;AAAA,IAEV,OAAOthB;AAAA,EAET;AAEA;AAEA,SAAS6pB,GAAeC,GAAKh9B,GAAYsP,GAAOmG,GAAY1Q,GAAck4B,GAAOxpB,GAAO;AAEvF,QAAMzO,IAAWD,EAAa,UACxBm4B,IAAqBl9B,EAAW,IAAK,sCAAsC,IAAKA,EAAW,IAAK,sCAAsC,IAAK,MAC3Im9B,IAAgC,OAAO,YAAc,MAAc,KAAQ,iBAAiB,KAAM,UAAU,SAAS,GAErHC,IAAiB,oBAAI,QAAO;AAClC,MAAI5/C;AAEJ,QAAM6/C,IAAW,oBAAI;AAMrB,MAAIC,IAAqB;AAEzB,MAAI;AAEH,IAAAA,IAAqB,OAAO,kBAAoB,OAE1C,IAAI,gBAAiB,GAAG,CAAC,EAAG,WAAY,IAAI,MAAS;AAAA,EAE5D,QAAgB;AAAA,EAIhB;AAEA,WAASC,EAAcl9C,GAAOC,GAAS;AAItC,WAAOg9C;AAAA;AAAA,MAEN,IAAI,gBAAiBj9C,GAAOC,CAAM;AAAA,QAAKlE,GAAiB,QAAQ;AAAA,EAElE;AAEA,WAASohD,EAAa9/C,GAAO+/C,GAAiBC,GAAgBC,GAAU;AAEvE,QAAI3uC,IAAQ;AAYZ,SARKtR,EAAM,QAAQigD,KAAWjgD,EAAM,SAASigD,OAE5C3uC,IAAQ2uC,IAAU,KAAK,IAAKjgD,EAAM,OAAOA,EAAM,MAAM,IAMjDsR,IAAQ,KAAKyuC,MAAoB;AAIrC,UAAO,OAAO,mBAAqB,OAAe//C,aAAiB,oBAChE,OAAO,oBAAsB,OAAeA,aAAiB,qBAC7D,OAAO,cAAgB,OAAeA,aAAiB,aAAgB;AAEzE,cAAMkgD,IAAQH,IAAkBxmD,KAAkB,KAAK,OAEjDoJ,KAAQu9C,EAAO5uC,IAAQtR,EAAM,KAAK,GAClC4C,KAASs9C,EAAO5uC,IAAQtR,EAAM,MAAM;AAE1C,QAAKF,MAAY,WAAYA,IAAU+/C,EAAcl9C,IAAOC,EAAM;AAIlE,cAAM/D,KAASmhD,IAAiBH,EAAcl9C,IAAOC,EAAM,IAAK9C;AAEhE,eAAAjB,GAAO,QAAQ8D,IACf9D,GAAO,SAAS+D,IAEA/D,GAAO,WAAY,IAAI,EAC/B,UAAWmB,GAAO,GAAG,GAAG2C,IAAOC,EAAM,GAE7C,QAAQ,KAAM,yDAAyD5C,EAAM,QAAQ,MAAMA,EAAM,SAAS,WAAW2C,KAAQ,MAAMC,KAAS,IAAI,GAEzI/D;AAAA,MAER;AAEC,eAAK,UAAUmB,KAEd,QAAQ,KAAM,2DAA2DA,EAAM,QAAQ,MAAMA,EAAM,SAAS,IAAI,GAI1GA;AAMT,WAAOA;AAAA,EAER;AAEA,WAASmgD,EAAgBngD,GAAQ;AAEhC,WAAO1G,GAAc0G,EAAM,KAAK,KAAM1G,GAAc0G,EAAM,MAAM;AAAA,EAEjE;AAEA,WAASogD,EAAwBj8B,GAAU;AAE1C,WAAKmD,IAAkB,KAEdnD,EAAQ,UAAUryB,MAAuBqyB,EAAQ,UAAUryB,MACjEqyB,EAAQ,cAAcnyB,MAAiBmyB,EAAQ,cAAchyB;AAAA,EAEjE;AAEA,WAASkuD,EAA6Bl8B,GAASm8B,GAAe;AAE7D,WAAOn8B,EAAQ,mBAAmBm8B,KACjCn8B,EAAQ,cAAcnyB,MAAiBmyB,EAAQ,cAAchyB;AAAA,EAE/D;AAEA,WAASouD,EAAgBt3C,GAAS;AAEjC,IAAAq2C,EAAI,eAAgBr2C,CAAM;AAAA,EAE3B;AAEA,WAASu3C,EAAmBC,GAAoBC,GAAUC,GAAQphD,GAAYqhD,IAAsB,IAAQ;AAE3G,QAAKt5B,MAAa,GAAQ,QAAOo5B;AAEjC,QAAKD,MAAuB,MAAO;AAElC,UAAKnB,EAAKmB,CAAkB,MAAO,OAAY,QAAOnB,EAAKmB,CAAkB;AAE7E,cAAQ,KAAM,6EAA8EA,IAAqB,GAAI;AAAA,IAEtH;AAEA,QAAII,IAAiBH;AA6BrB,QA3BKA,MAAapB,EAAI,QAEhBqB,MAAWrB,EAAI,UAAQuB,IAAiBvB,EAAI,OAC5CqB,MAAWrB,EAAI,eAAauB,IAAiBvB,EAAI,OACjDqB,MAAWrB,EAAI,kBAAgBuB,IAAiBvB,EAAI,MAIrDoB,MAAapB,EAAI,gBAEhBqB,MAAWrB,EAAI,kBAAgBuB,IAAiBvB,EAAI,OACpDqB,MAAWrB,EAAI,mBAAiBuB,IAAiBvB,EAAI,QACrDqB,MAAWrB,EAAI,iBAAeuB,IAAiBvB,EAAI,QACnDqB,MAAWrB,EAAI,SAAOuB,IAAiBvB,EAAI,MAC3CqB,MAAWrB,EAAI,UAAQuB,IAAiBvB,EAAI,OAC5CqB,MAAWrB,EAAI,QAAMuB,IAAiBvB,EAAI,QAI3CoB,MAAapB,EAAI,OAEhBqB,MAAWrB,EAAI,UAAQuB,IAAiBvB,EAAI,QAC5CqB,MAAWrB,EAAI,eAAauB,IAAiBvB,EAAI,QACjDqB,MAAWrB,EAAI,kBAAgBuB,IAAiBvB,EAAI,OAIrDoB,MAAapB,EAAI,MAAO;AAE5B,YAAMwB,KAAWF,IAAsBrqD,KAAiB+I,GAAgB,YAAaC,CAAU;AAE/F,MAAKohD,MAAWrB,EAAI,UAAQuB,IAAiBvB,EAAI,UAC5CqB,MAAWrB,EAAI,eAAauB,IAAiBvB,EAAI,UACjDqB,MAAWrB,EAAI,kBAAgBuB,IAAmBC,OAAatqD,KAAiB8oD,EAAI,eAAeA,EAAI,QACvGqB,MAAWrB,EAAI,2BAAyBuB,IAAiBvB,EAAI,QAC7DqB,MAAWrB,EAAI,2BAAyBuB,IAAiBvB,EAAI;AAAA,IAEnE;AAEA,YAAKuB,MAAmBvB,EAAI,QAAQuB,MAAmBvB,EAAI,QAC1DuB,MAAmBvB,EAAI,SAASuB,MAAmBvB,EAAI,SACvDuB,MAAmBvB,EAAI,WAAWuB,MAAmBvB,EAAI,YAEzDh9B,EAAW,IAAK,wBAAwB,GAIlCu+B;AAAA,EAER;AAEA,WAASE,EAAc58B,GAASnkB,GAAOsgD,GAAe;AAErD,WAAKD,EAA6Bl8B,GAASm8B,CAAY,MAAO,MAAUn8B,EAAQ,wBAAwBA,EAAQ,cAAcnyB,MAAiBmyB,EAAQ,cAAchyB,KAE7J,KAAK,KAAM,KAAK,IAAK6N,EAAM,OAAOA,EAAM,MAAM,CAAE,IAAK,IAEjDmkB,EAAQ,YAAY,UAAaA,EAAQ,QAAQ,SAAS,IAI9DA,EAAQ,QAAQ,SAEZA,EAAQ,uBAAuB,MAAM,QAASA,EAAQ,SAE1DnkB,EAAM,QAAQ,SAMd;AAAA,EAIT;AAIA,WAASghD,EAAgB3jD,GAAI;AAE5B,WAAKA,MAAMrL,MAAiBqL,MAAMpL,MAA8BoL,MAAMnL,KAE9DotD,EAAI,UAILA,EAAI;AAAA,EAEZ;AAIA,WAAS7lB,EAAkBzhC,GAAQ;AAElC,UAAMmsB,IAAUnsB,EAAM;AAEtB,IAAAmsB,EAAQ,oBAAqB,WAAWsV,CAAgB,GAExDwnB,EAAmB98B,CAAO,GAErBA,EAAQ,kBAEZu7B,EAAe,OAAQv7B,CAAO;AAAA,EAIhC;AAEA,WAAS+8B,EAAuBlpD,GAAQ;AAEvC,UAAMkrB,IAAelrB,EAAM;AAE3B,IAAAkrB,EAAa,oBAAqB,WAAWg+B,CAAqB,GAElEC,EAAwBj+B,CAAY;AAAA,EAErC;AAIA,WAAS+9B,EAAmB98B,GAAU;AAErC,UAAMi9B,IAAoBrpB,EAAW,IAAK5T,CAAO;AAEjD,QAAKi9B,EAAkB,gBAAgB,OAAY;AAInD,UAAMhgD,IAAS+iB,EAAQ,QACjBk9B,IAAgB1B,EAAS,IAAKv+C,CAAM;AAE1C,QAAKigD,GAAgB;AAEpB,YAAMnD,IAAemD,EAAeD,EAAkB,UAAU;AAChE,MAAAlD,EAAa,aAIRA,EAAa,cAAc,KAE/BoD,EAAen9B,CAAO,GAMlB,OAAO,KAAMk9B,CAAa,EAAG,WAAW,KAE5C1B,EAAS,OAAQv+C,CAAM;AAAA,IAIzB;AAEA,IAAA22B,EAAW,OAAQ5T,CAAO;AAAA,EAE3B;AAEA,WAASm9B,EAAen9B,GAAU;AAEjC,UAAMi9B,IAAoBrpB,EAAW,IAAK5T,CAAO;AACjD,IAAAm7B,EAAI,cAAe8B,EAAkB,cAAc;AAEnD,UAAMhgD,IAAS+iB,EAAQ,QACjBk9B,IAAgB1B,EAAS,IAAKv+C,CAAM;AAC1C,WAAOigD,EAAeD,EAAkB,UAAU,GAElDrrB,EAAK,OAAO;AAAA,EAEb;AAEA,WAASorB,EAAwBj+B,GAAe;AAE/C,UAAMiB,IAAUjB,EAAa,SAEvBq+B,IAAyBxpB,EAAW,IAAK7U,CAAY,GACrDk+B,IAAoBrpB,EAAW,IAAK5T,CAAO;AAgBjD,QAdKi9B,EAAkB,mBAAmB,WAEzC9B,EAAI,cAAe8B,EAAkB,cAAc,GAEnDrrB,EAAK,OAAO,aAIR7S,EAAa,gBAEjBA,EAAa,aAAa,QAAO,GAI7BA,EAAa;AAEjB,eAAUhrB,IAAI,GAAGA,IAAI,GAAGA,KAAO;AAE9B,YAAK,MAAM,QAASqpD,EAAuB,mBAAoBrpD,CAAC,CAAE;AAEjE,mBAAUspD,IAAQ,GAAGA,IAAQD,EAAuB,mBAAoBrpD,GAAI,QAAQspD,IAAW,CAAAlC,EAAI,kBAAmBiC,EAAuB,mBAAoBrpD,CAAC,EAAIspD,EAAO;AAAA;AAI7K,UAAAlC,EAAI,kBAAmBiC,EAAuB,mBAAoBrpD,CAAC,CAAE;AAItE,QAAKqpD,EAAuB,sBAAqBjC,EAAI,mBAAoBiC,EAAuB,mBAAoBrpD,EAAG;AAAA,MAExH;AAAA,SAEM;AAEN,UAAK,MAAM,QAASqpD,EAAuB,kBAAkB;AAE5D,iBAAUC,IAAQ,GAAGA,IAAQD,EAAuB,mBAAmB,QAAQC,IAAW,CAAAlC,EAAI,kBAAmBiC,EAAuB,mBAAoBC,CAAK,CAAE;AAAA;AAInK,QAAAlC,EAAI,kBAAmBiC,EAAuB,kBAAkB;AAOjE,UAHKA,EAAuB,sBAAqBjC,EAAI,mBAAoBiC,EAAuB,kBAAkB,GAC7GA,EAAuB,kCAAiCjC,EAAI,kBAAmBiC,EAAuB,8BAA8B,GAEpIA,EAAuB;AAE3B,iBAAUrpD,IAAI,GAAGA,IAAIqpD,EAAuB,yBAAyB,QAAQrpD;AAE5E,UAAKqpD,EAAuB,yBAA0BrpD,MAAMonD,EAAI,mBAAoBiC,EAAuB,yBAA0BrpD,EAAG;AAM1I,MAAKqpD,EAAuB,4BAA2BjC,EAAI,mBAAoBiC,EAAuB,wBAAwB;AAAA,IAE/H;AAEA,QAAKr+B,EAAa;AAEjB,eAAUhrB,IAAI,GAAGuQ,IAAK0b,EAAQ,QAAQjsB,IAAIuQ,GAAIvQ,KAAO;AAEpD,cAAMupD,KAAuB1pB,EAAW,IAAK5T,EAASjsB,CAAC,CAAE;AAEzD,QAAKupD,GAAqB,mBAEzBnC,EAAI,cAAemC,GAAqB,cAAc,GAEtD1rB,EAAK,OAAO,aAIbgC,EAAW,OAAQ5T,EAASjsB,EAAG;AAAA,MAEhC;AAID,IAAA6/B,EAAW,OAAQ5T,CAAO,GAC1B4T,EAAW,OAAQ7U,CAAY;AAAA,EAEhC;AAIA,MAAIw+B,IAAe;AAEnB,WAASC,KAAoB;AAE5B,IAAAD,IAAe;AAAA,EAEhB;AAEA,WAASE,IAAsB;AAE9B,UAAMC,IAAcH;AAEpB,WAAKG,KAAex6B,EAAa,eAEhC,QAAQ,KAAM,wCAAwCw6B,IAAc,iDAAiDx6B,EAAa,WAAW,GAI9Iq6B,KAAgB,GAETG;AAAA,EAER;AAEA,WAASC,EAAoB39B,GAAU;AAEtC,UAAMlsB,IAAQ,CAAA;AAEd,WAAAA,EAAM,KAAMksB,EAAQ,KAAK,GACzBlsB,EAAM,KAAMksB,EAAQ,KAAK,GACzBlsB,EAAM,KAAMksB,EAAQ,SAAS,CAAC,GAC9BlsB,EAAM,KAAMksB,EAAQ,SAAS,GAC7BlsB,EAAM,KAAMksB,EAAQ,SAAS,GAC7BlsB,EAAM,KAAMksB,EAAQ,UAAU,GAC9BlsB,EAAM,KAAMksB,EAAQ,cAAc,GAClClsB,EAAM,KAAMksB,EAAQ,MAAM,GAC1BlsB,EAAM,KAAMksB,EAAQ,IAAI,GACxBlsB,EAAM,KAAMksB,EAAQ,eAAe,GACnClsB,EAAM,KAAMksB,EAAQ,gBAAgB,GACpClsB,EAAM,KAAMksB,EAAQ,KAAK,GACzBlsB,EAAM,KAAMksB,EAAQ,eAAe,GACnClsB,EAAM,KAAMksB,EAAQ,UAAU,GAEvBlsB,EAAM,KAAI;AAAA,EAElB;AAIA,WAAS8pD,EAAc59B,GAAS69B,GAAO;AAEtC,UAAMZ,IAAoBrpB,EAAW,IAAK5T,CAAO;AAIjD,QAFKA,EAAQ,kBAAiB89B,GAAoB99B,CAAO,GAEpDA,EAAQ,0BAA0B,MAASA,EAAQ,UAAU,KAAKi9B,EAAkB,cAAcj9B,EAAQ,SAAU;AAExH,YAAMnkB,IAAQmkB,EAAQ;AAEtB,UAAKnkB,MAAU;AAEd,gBAAQ,KAAM,yEAAyE;AAAA,eAE5EA,EAAM,aAAa;AAE9B,gBAAQ,KAAM,wEAAwE;AAAA,WAEhF;AAEN,QAAAkiD,GAAed,GAAmBj9B,GAAS69B,CAAI;AAC/C;AAAA,MAED;AAAA,IAED;AAEA,IAAApwB,EAAM,YAAa0tB,EAAI,YAAY8B,EAAkB,gBAAgB9B,EAAI,WAAW0C,CAAI;AAAA,EAEzF;AAEA,WAASG,EAAmBh+B,GAAS69B,GAAO;AAE3C,UAAMZ,IAAoBrpB,EAAW,IAAK5T,CAAO;AAEjD,QAAKA,EAAQ,UAAU,KAAKi9B,EAAkB,cAAcj9B,EAAQ,SAAU;AAE7E,MAAA+9B,GAAed,GAAmBj9B,GAAS69B,CAAI;AAC/C;AAAA,IAED;AAEA,IAAApwB,EAAM,YAAa0tB,EAAI,kBAAkB8B,EAAkB,gBAAgB9B,EAAI,WAAW0C,CAAI;AAAA,EAE/F;AAEA,WAASI,EAAcj+B,GAAS69B,GAAO;AAEtC,UAAMZ,IAAoBrpB,EAAW,IAAK5T,CAAO;AAEjD,QAAKA,EAAQ,UAAU,KAAKi9B,EAAkB,cAAcj9B,EAAQ,SAAU;AAE7E,MAAA+9B,GAAed,GAAmBj9B,GAAS69B,CAAI;AAC/C;AAAA,IAED;AAEA,IAAApwB,EAAM,YAAa0tB,EAAI,YAAY8B,EAAkB,gBAAgB9B,EAAI,WAAW0C,CAAI;AAAA,EAEzF;AAEA,WAASK,EAAgBl+B,GAAS69B,GAAO;AAExC,UAAMZ,IAAoBrpB,EAAW,IAAK5T,CAAO;AAEjD,QAAKA,EAAQ,UAAU,KAAKi9B,EAAkB,cAAcj9B,EAAQ,SAAU;AAE7E,MAAAm+B,GAAmBlB,GAAmBj9B,GAAS69B,CAAI;AACnD;AAAA,IAED;AAEA,IAAApwB,EAAM,YAAa0tB,EAAI,kBAAkB8B,EAAkB,gBAAgB9B,EAAI,WAAW0C,CAAI;AAAA,EAE/F;AAEA,QAAMO,IAAe;AAAA,IACpB,CAAE1wD,EAAc,GAAIytD,EAAI;AAAA,IACxB,CAAExtD,EAAmB,GAAIwtD,EAAI;AAAA,IAC7B,CAAEvtD,EAAsB,GAAIutD,EAAI;AAAA,EAClC,GAEOkD,IAAa;AAAA,IAClB,CAAExwD,EAAa,GAAIstD,EAAI;AAAA,IACvB,CAAErtD,EAA0B,GAAIqtD,EAAI;AAAA,IACpC,CAAEptD,EAAyB,GAAIotD,EAAI;AAAA,IAEnC,CAAEntD,EAAY,GAAImtD,EAAI;AAAA,IACtB,CAAEltD,EAAyB,GAAIktD,EAAI;AAAA,IACnC,CAAEjtD,EAAwB,GAAIitD,EAAI;AAAA,EACpC,GAEOmD,KAAc;AAAA,IACnB,CAAE5rD,EAAY,GAAIyoD,EAAI;AAAA,IACtB,CAAEloD,EAAa,GAAIkoD,EAAI;AAAA,IACvB,CAAExoD,EAAW,GAAIwoD,EAAI;AAAA,IACrB,CAAEtoD,EAAgB,GAAIsoD,EAAI;AAAA,IAC1B,CAAEvoD,EAAY,GAAIuoD,EAAI;AAAA,IACtB,CAAEnoD,EAAmB,GAAImoD,EAAI;AAAA,IAC7B,CAAEroD,EAAc,GAAIqoD,EAAI;AAAA,IACxB,CAAEpoD,EAAe,GAAIooD,EAAI;AAAA,EAC3B;AAEC,WAASoD,EAAsBC,GAAax+B,GAASm8B,GAAe;AAmDnE,QAjDKA,KAEJhB,EAAI,cAAeqD,GAAarD,EAAI,gBAAgBiD,EAAcp+B,EAAQ,MAAO,GACjFm7B,EAAI,cAAeqD,GAAarD,EAAI,gBAAgBiD,EAAcp+B,EAAQ,MAAO,IAE5Ew+B,MAAgBrD,EAAI,cAAcqD,MAAgBrD,EAAI,qBAE1DA,EAAI,cAAeqD,GAAarD,EAAI,gBAAgBiD,EAAcp+B,EAAQ,MAAO,GAIlFm7B,EAAI,cAAeqD,GAAarD,EAAI,oBAAoBkD,EAAYr+B,EAAQ,UAAW,GACvFm7B,EAAI,cAAeqD,GAAarD,EAAI,oBAAoBkD,EAAYr+B,EAAQ,UAAW,MAIvFm7B,EAAI,cAAeqD,GAAarD,EAAI,gBAAgBA,EAAI,aAAa,GACrEA,EAAI,cAAeqD,GAAarD,EAAI,gBAAgBA,EAAI,aAAa,IAEhEqD,MAAgBrD,EAAI,cAAcqD,MAAgBrD,EAAI,qBAE1DA,EAAI,cAAeqD,GAAarD,EAAI,gBAAgBA,EAAI,aAAa,IAIjEn7B,EAAQ,UAAUryB,MAAuBqyB,EAAQ,UAAUryB,OAE/D,QAAQ,KAAM,+HAA+H,GAI9IwtD,EAAI,cAAeqD,GAAarD,EAAI,oBAAoB0B,EAAgB78B,EAAQ,UAAW,GAC3Fm7B,EAAI,cAAeqD,GAAarD,EAAI,oBAAoB0B,EAAgB78B,EAAQ,UAAW,GAEtFA,EAAQ,cAAcnyB,MAAiBmyB,EAAQ,cAAchyB,MAEjE,QAAQ,KAAM,iIAAiI,IAM5IgyB,EAAQ,oBAEZm7B,EAAI,cAAeqD,GAAarD,EAAI,sBAAsBA,EAAI,sBAAsB,GACpFA,EAAI,cAAeqD,GAAarD,EAAI,sBAAsBmD,GAAat+B,EAAQ,gBAAiB,IAI5F7B,EAAW,IAAK,gCAAgC,MAAO,IAAO;AAElE,YAAMwQ,IAAYxQ,EAAW,IAAK,gCAAgC;AAKlE,UAHK6B,EAAQ,cAAcnyB,MACtBmyB,EAAQ,cAAcjyB,MAA6BiyB,EAAQ,cAAc9xB,MACzE8xB,EAAQ,SAASvxB,MAAa0vB,EAAW,IAAK,0BAA0B,MAAO,MAC/EgF,MAAa,MAAWnD,EAAQ,SAAStxB,MAAiByvB,EAAW,IAAK,qCAAsC,GAAU;AAE/H,OAAK6B,EAAQ,aAAa,KAAK4T,EAAW,IAAK5T,CAAO,EAAG,yBAExDm7B,EAAI,cAAeqD,GAAa7vB,EAAU,4BAA4B,KAAK,IAAK3O,EAAQ,YAAYkD,EAAa,iBAAgB,CAAE,CAAE,GACrI0Q,EAAW,IAAK5T,CAAO,EAAG,sBAAsBA,EAAQ;AAAA,IAI1D;AAAA,EAED;AAEA,WAASy+B,EAAaxB,GAAmBj9B,GAAU;AAElD,QAAI0+B,IAAc;AAElB,IAAKzB,EAAkB,gBAAgB,WAEtCA,EAAkB,cAAc,IAEhCj9B,EAAQ,iBAAkB,WAAWsV,CAAgB;AAMtD,UAAMr4B,IAAS+iB,EAAQ;AACvB,QAAIk9B,IAAgB1B,EAAS,IAAKv+C,CAAM;AAExC,IAAKigD,MAAkB,WAEtBA,IAAgB,CAAA,GAChB1B,EAAS,IAAKv+C,GAAQigD,CAAa;AAMpC,UAAMyB,IAAkBhB,EAAoB39B,CAAO;AAEnD,QAAK2+B,MAAoB1B,EAAkB,YAAa;AAIvD,MAAKC,EAAeyB,CAAe,MAAO,WAIzCzB,EAAeyB,CAAe,IAAK;AAAA,QAClC,SAASxD,EAAI,cAAa;AAAA,QAC1B,WAAW;AAAA,MAChB,GAEIvpB,EAAK,OAAO,YAKZ8sB,IAAc,KAIfxB,EAAeyB,CAAe,EAAG;AAKjC,YAAM5E,KAAemD,EAAeD,EAAkB,UAAU;AAEhE,MAAKlD,OAAiB,WAErBmD,EAAeD,EAAkB,UAAU,EAAG,aAEzClD,GAAa,cAAc,KAE/BoD,EAAen9B,CAAO,IAQxBi9B,EAAkB,aAAa0B,GAC/B1B,EAAkB,iBAAiBC,EAAeyB,CAAe,EAAG;AAAA,IAErE;AAEA,WAAOD;AAAA,EAER;AAEA,WAASX,GAAed,GAAmBj9B,GAAS69B,GAAO;AAE1D,QAAIW,IAAcrD,EAAI;AAEtB,KAAKn7B,EAAQ,sBAAsBA,EAAQ,8BAA2Bw+B,IAAcrD,EAAI,mBACnFn7B,EAAQ,oBAAkBw+B,IAAcrD,EAAI;AAEjD,UAAMuD,IAAcD,EAAaxB,GAAmBj9B,CAAO,GACrD/iB,IAAS+iB,EAAQ;AAEvB,IAAAyN,EAAM,YAAa+wB,GAAavB,EAAkB,gBAAgB9B,EAAI,WAAW0C,CAAI;AAErF,UAAMe,KAAmBhrB,EAAW,IAAK32B,CAAM;AAE/C,QAAKA,EAAO,YAAY2hD,GAAiB,aAAaF,MAAgB,IAAO;AAE5E,MAAAjxB,EAAM,cAAe0tB,EAAI,WAAW0C,CAAI;AAExC,YAAMza,KAAmBjoC,GAAgB,aAAcA,GAAgB,iBAAiB,GAClF0jD,KAAmB7+B,EAAQ,eAAejuB,KAAe,OAAOoJ,GAAgB,aAAc6kB,EAAQ,UAAU,GAChH8+B,KAAmB9+B,EAAQ,eAAejuB,MAAgBqxC,OAAqByb,KAAmB1D,EAAI,OAAOA,EAAI;AAEvH,MAAAA,EAAI,YAAaA,EAAI,qBAAqBn7B,EAAQ,KAAK,GACvDm7B,EAAI,YAAaA,EAAI,gCAAgCn7B,EAAQ,gBAAgB,GAC7Em7B,EAAI,YAAaA,EAAI,kBAAkBn7B,EAAQ,eAAe,GAC9Dm7B,EAAI,YAAaA,EAAI,oCAAoC2D,EAAgB;AAEzE,YAAMlD,KAAkBK,EAAwBj8B,CAAO,KAAMg8B,EAAgBh8B,EAAQ,KAAK,MAAO;AACjG,UAAInkB,KAAQ8/C,EAAa37B,EAAQ,OAAO47B,IAAiB,IAAO14B,EAAa,cAAc;AAC3F,MAAArnB,KAAQkjD,GAAkB/+B,GAASnkB,EAAK;AAExC,YAAMsgD,KAAeH,EAAgBngD,EAAK,KAAMsnB,GAC/Co5B,KAAWnB,EAAM,QAASp7B,EAAQ,QAAQA,EAAQ,UAAU;AAE7D,UAAIw8B,KAASpB,EAAM,QAASp7B,EAAQ,IAAI,GACvCg/B,KAAmB3C,EAAmBr8B,EAAQ,gBAAgBu8B,IAAUC,IAAQx8B,EAAQ,YAAYA,EAAQ,cAAc;AAE3H,MAAAu+B,EAAsBC,GAAax+B,GAASm8B,EAAY;AAExD,UAAI8C;AACJ,YAAMC,IAAUl/B,EAAQ,SAElBm/B,KAAkBh8B,KAAYnD,EAAQ,mBAAmB,MAAQg/B,OAAqB/uD,IACtFmvD,KAAmBR,GAAiB,cAAc,UAAiBF,MAAgB,IACnFW,KAASzC,EAAc58B,GAASnkB,IAAOsgD,EAAY;AAEzD,UAAKn8B,EAAQ;AAIZ,QAAAg/B,KAAmB7D,EAAI,iBAElBh4B,IAECnD,EAAQ,SAASvxB,KAErBuwD,KAAmB7D,EAAI,qBAEZn7B,EAAQ,SAASxxB,KAE5BwwD,KAAmB7D,EAAI,oBAEZn7B,EAAQ,SAASnxB,KAE5BmwD,KAAmB7D,EAAI,mBAIvB6D,KAAmB7D,EAAI,oBAMnBn7B,EAAQ,SAASvxB,MAErB,QAAQ,MAAO,8DAA8D,GAQ1EuxB,EAAQ,WAAW9wB,MAAe8vD,OAAqB7D,EAAI,mBAK1Dn7B,EAAQ,SAAS1xB,MAAqB0xB,EAAQ,SAASxxB,OAE3D,QAAQ,KAAM,6FAA6F,GAE3GwxB,EAAQ,OAAOxxB,IACfguD,KAASpB,EAAM,QAASp7B,EAAQ,IAAI,IAMjCA,EAAQ,WAAW7wB,MAAsB6vD,OAAqB7D,EAAI,oBAItE6D,KAAmB7D,EAAI,eAKlBn7B,EAAQ,SAASnxB,OAErB,QAAQ,KAAM,kFAAkF,GAEhGmxB,EAAQ,OAAOnxB,IACf2tD,KAASpB,EAAM,QAASp7B,EAAQ,IAAI,KAQjCo/B,OAECD,KAEJ1xB,EAAM,aAAc0tB,EAAI,YAAY,GAAG6D,IAAkBnjD,GAAM,OAAOA,GAAM,MAAM,IAIlF4xB,EAAM,WAAY0tB,EAAI,YAAY,GAAG6D,IAAkBnjD,GAAM,OAAOA,GAAM,QAAQ,GAAG0gD,IAAUC,IAAQ,IAAI;AAAA,eAMlGx8B,EAAQ;AAMnB,YAAKk/B,EAAQ,SAAS,KAAK/C,IAAe;AAEzC,UAAKgD,MAAiBC,MAErB3xB,EAAM,aAAc0tB,EAAI,YAAYkE,IAAQL,IAAkBE,EAAS,CAAC,EAAG,OAAOA,EAAS,CAAC,EAAG,MAAM;AAItG,mBAAUnrD,KAAI,GAAGuQ,IAAK46C,EAAQ,QAAQnrD,KAAIuQ,GAAIvQ;AAE7C,YAAAkrD,KAASC,EAASnrD,EAAC,GAEdorD,KAEJ1xB,EAAM,cAAe0tB,EAAI,YAAYpnD,IAAG,GAAG,GAAGkrD,GAAO,OAAOA,GAAO,QAAQ1C,IAAUC,IAAQyC,GAAO,IAAI,IAIxGxxB,EAAM,WAAY0tB,EAAI,YAAYpnD,IAAGirD,IAAkBC,GAAO,OAAOA,GAAO,QAAQ,GAAG1C,IAAUC,IAAQyC,GAAO,IAAI;AAMtH,UAAAj/B,EAAQ,kBAAkB;AAAA,QAE3B;AAEC,UAAKm/B,MAECC,MAEJ3xB,EAAM,aAAc0tB,EAAI,YAAYkE,IAAQL,IAAkBnjD,GAAM,OAAOA,GAAM,MAAM,GAIxF4xB,EAAM,cAAe0tB,EAAI,YAAY,GAAG,GAAG,GAAGt/C,GAAM,OAAOA,GAAM,QAAQ0gD,IAAUC,IAAQ3gD,GAAM,IAAI,KAIrG4xB,EAAM,WAAY0tB,EAAI,YAAY,GAAG6D,IAAkBnjD,GAAM,OAAOA,GAAM,QAAQ,GAAG0gD,IAAUC,IAAQ3gD,GAAM,IAAI;AAAA,eAMxGmkB,EAAQ;AAEnB,YAAKA,EAAQ,0BAA2B;AAEvC,UAAKm/B,MAAiBC,MAErB3xB,EAAM,aAAc0tB,EAAI,kBAAkBkE,IAAQL,IAAkBE,EAAS,CAAC,EAAG,OAAOA,EAAS,CAAC,EAAG,QAAQrjD,GAAM,KAAK;AAIzH,mBAAU9H,KAAI,GAAGuQ,IAAK46C,EAAQ,QAAQnrD,KAAIuQ,GAAIvQ;AAE7C,YAAAkrD,KAASC,EAASnrD,EAAC,GAEdisB,EAAQ,WAAWjxB,KAElBwtD,OAAa,OAEZ4C,KAEJ1xB,EAAM,wBAAyB0tB,EAAI,kBAAkBpnD,IAAG,GAAG,GAAG,GAAGkrD,GAAO,OAAOA,GAAO,QAAQpjD,GAAM,OAAO0gD,IAAU0C,GAAO,MAAM,GAAG,CAAC,IAItIxxB,EAAM,qBAAsB0tB,EAAI,kBAAkBpnD,IAAGirD,IAAkBC,GAAO,OAAOA,GAAO,QAAQpjD,GAAM,OAAO,GAAGojD,GAAO,MAAM,GAAG,CAAC,IAMtI,QAAQ,KAAM,gGAAgG,IAM1GE,KAEJ1xB,EAAM,cAAe0tB,EAAI,kBAAkBpnD,IAAG,GAAG,GAAG,GAAGkrD,GAAO,OAAOA,GAAO,QAAQpjD,GAAM,OAAO0gD,IAAUC,IAAQyC,GAAO,IAAI,IAI9HxxB,EAAM,WAAY0tB,EAAI,kBAAkBpnD,IAAGirD,IAAkBC,GAAO,OAAOA,GAAO,QAAQpjD,GAAM,OAAO,GAAG0gD,IAAUC,IAAQyC,GAAO,IAAI;AAAA,QAQ3I,OAAO;AAEN,UAAKE,MAAiBC,MAErB3xB,EAAM,aAAc0tB,EAAI,YAAYkE,IAAQL,IAAkBE,EAAS,CAAC,EAAG,OAAOA,EAAS,CAAC,EAAG,MAAM;AAItG,mBAAUnrD,KAAI,GAAGuQ,IAAK46C,EAAQ,QAAQnrD,KAAIuQ,GAAIvQ;AAE7C,YAAAkrD,KAASC,EAASnrD,EAAC,GAEdisB,EAAQ,WAAWjxB,KAElBwtD,OAAa,OAEZ4C,KAEJ1xB,EAAM,wBAAyB0tB,EAAI,YAAYpnD,IAAG,GAAG,GAAGkrD,GAAO,OAAOA,GAAO,QAAQ1C,IAAU0C,GAAO,IAAI,IAI1GxxB,EAAM,qBAAsB0tB,EAAI,YAAYpnD,IAAGirD,IAAkBC,GAAO,OAAOA,GAAO,QAAQ,GAAGA,GAAO,IAAI,IAM7G,QAAQ,KAAM,gGAAgG,IAM1GE,KAEJ1xB,EAAM,cAAe0tB,EAAI,YAAYpnD,IAAG,GAAG,GAAGkrD,GAAO,OAAOA,GAAO,QAAQ1C,IAAUC,IAAQyC,GAAO,IAAI,IAIxGxxB,EAAM,WAAY0tB,EAAI,YAAYpnD,IAAGirD,IAAkBC,GAAO,OAAOA,GAAO,QAAQ,GAAG1C,IAAUC,IAAQyC,GAAO,IAAI;AAAA,QAQxH;AAAA,eAEWj/B,EAAQ;AAEnB,QAAKm/B,MAECC,MAEJ3xB,EAAM,aAAc0tB,EAAI,kBAAkBkE,IAAQL,IAAkBnjD,GAAM,OAAOA,GAAM,QAAQA,GAAM,KAAK,GAI3G4xB,EAAM,cAAe0tB,EAAI,kBAAkB,GAAG,GAAG,GAAG,GAAGt/C,GAAM,OAAOA,GAAM,QAAQA,GAAM,OAAO0gD,IAAUC,IAAQ3gD,GAAM,IAAI,KAI3H4xB,EAAM,WAAY0tB,EAAI,kBAAkB,GAAG6D,IAAkBnjD,GAAM,OAAOA,GAAM,QAAQA,GAAM,OAAO,GAAG0gD,IAAUC,IAAQ3gD,GAAM,IAAI;AAAA,eAI1HmkB,EAAQ;AAEnB,QAAKm/B,MAECC,MAEJ3xB,EAAM,aAAc0tB,EAAI,YAAYkE,IAAQL,IAAkBnjD,GAAM,OAAOA,GAAM,QAAQA,GAAM,KAAK,GAIrG4xB,EAAM,cAAe0tB,EAAI,YAAY,GAAG,GAAG,GAAG,GAAGt/C,GAAM,OAAOA,GAAM,QAAQA,GAAM,OAAO0gD,IAAUC,IAAQ3gD,GAAM,IAAI,KAIrH4xB,EAAM,WAAY0tB,EAAI,YAAY,GAAG6D,IAAkBnjD,GAAM,OAAOA,GAAM,QAAQA,GAAM,OAAO,GAAG0gD,IAAUC,IAAQ3gD,GAAM,IAAI;AAAA,eAIpHmkB,EAAQ;AAEnB,YAAKo/B;AAEJ,cAAKD;AAEJ,YAAA1xB,EAAM,aAAc0tB,EAAI,YAAYkE,IAAQL,IAAkBnjD,GAAM,OAAOA,GAAM,MAAM;AAAA,eAEjF;AAEN,gBAAI2C,KAAQ3C,GAAM,OAAO4C,IAAS5C,GAAM;AAExC,qBAAU9H,KAAI,GAAGA,KAAIsrD,IAAQtrD;AAE5B,cAAA05B,EAAM,WAAY0tB,EAAI,YAAYpnD,IAAGirD,IAAkBxgD,IAAOC,GAAQ,GAAG89C,IAAUC,IAAQ,IAAI,GAE/Fh+C,OAAU,GACVC,MAAW;AAAA,UAIb;AAAA,iBAYIygD,EAAQ,SAAS,KAAK/C,IAAe;AAEzC,QAAKgD,MAAiBC,MAErB3xB,EAAM,aAAc0tB,EAAI,YAAYkE,IAAQL,IAAkBE,EAAS,CAAC,EAAG,OAAOA,EAAS,CAAC,EAAG,MAAM;AAItG,iBAAUnrD,KAAI,GAAGuQ,IAAK46C,EAAQ,QAAQnrD,KAAIuQ,GAAIvQ;AAE7C,UAAAkrD,KAASC,EAASnrD,EAAC,GAEdorD,KAEJ1xB,EAAM,cAAe0tB,EAAI,YAAYpnD,IAAG,GAAG,GAAGwoD,IAAUC,IAAQyC,EAAM,IAItExxB,EAAM,WAAY0tB,EAAI,YAAYpnD,IAAGirD,IAAkBzC,IAAUC,IAAQyC,EAAM;AAMjF,QAAAj/B,EAAQ,kBAAkB;AAAA,MAE3B;AAEC,QAAKm/B,MAECC,MAEJ3xB,EAAM,aAAc0tB,EAAI,YAAYkE,IAAQL,IAAkBnjD,GAAM,OAAOA,GAAM,MAAM,GAIxF4xB,EAAM,cAAe0tB,EAAI,YAAY,GAAG,GAAG,GAAGoB,IAAUC,IAAQ3gD,EAAK,KAIrE4xB,EAAM,WAAY0tB,EAAI,YAAY,GAAG6D,IAAkBzC,IAAUC,IAAQ3gD,EAAK;AAQjF,MAAKqgD,EAA6Bl8B,GAASm8B,OAE1CC,EAAgBoC,CAAW,GAI5BI,GAAiB,YAAY3hD,EAAO,SAE/B+iB,EAAQ,YAAWA,EAAQ,SAAUA,CAAO;AAAA,IAElD;AAEA,IAAAi9B,EAAkB,YAAYj9B,EAAQ;AAAA,EAEvC;AAEA,WAASm+B,GAAmBlB,GAAmBj9B,GAAS69B,GAAO;AAE9D,QAAK79B,EAAQ,MAAM,WAAW,EAAI;AAElC,UAAM0+B,IAAcD,EAAaxB,GAAmBj9B,CAAO,GACrD/iB,IAAS+iB,EAAQ;AAEvB,IAAAyN,EAAM,YAAa0tB,EAAI,kBAAkB8B,EAAkB,gBAAgB9B,EAAI,WAAW0C,CAAI;AAE9F,UAAMe,IAAmBhrB,EAAW,IAAK32B,CAAM;AAE/C,QAAKA,EAAO,YAAY2hD,EAAiB,aAAaF,MAAgB,IAAO;AAE5E,MAAAjxB,EAAM,cAAe0tB,EAAI,WAAW0C,CAAI;AAExC,YAAMza,KAAmBjoC,GAAgB,aAAcA,GAAgB,iBAAiB,GAClF0jD,KAAmB7+B,EAAQ,eAAejuB,KAAe,OAAOoJ,GAAgB,aAAc6kB,EAAQ,UAAU,GAChH8+B,KAAmB9+B,EAAQ,eAAejuB,MAAgBqxC,OAAqByb,KAAmB1D,EAAI,OAAOA,EAAI;AAEvH,MAAAA,EAAI,YAAaA,EAAI,qBAAqBn7B,EAAQ,KAAK,GACvDm7B,EAAI,YAAaA,EAAI,gCAAgCn7B,EAAQ,gBAAgB,GAC7Em7B,EAAI,YAAaA,EAAI,kBAAkBn7B,EAAQ,eAAe,GAC9Dm7B,EAAI,YAAaA,EAAI,oCAAoC2D,EAAgB;AAEzE,YAAMQ,KAAiBt/B,EAAQ,uBAAuBA,EAAQ,MAAO,CAAC,EAAG,qBACnEu/B,KAAkBv/B,EAAQ,MAAO,CAAC,KAAMA,EAAQ,MAAO,CAAC,EAAG,eAE3Dw/B,KAAY,CAAA;AAElB,eAAUzrD,KAAI,GAAGA,KAAI,GAAGA;AAEvB,QAAK,CAAEurD,MAAgB,CAAEC,KAExBC,GAAWzrD,EAAC,IAAK4nD,EAAa37B,EAAQ,MAAOjsB,EAAC,GAAI,IAAO,IAAMmvB,EAAa,cAAc,IAI1Fs8B,GAAWzrD,EAAC,IAAKwrD,KAAgBv/B,EAAQ,MAAOjsB,EAAC,EAAG,QAAQisB,EAAQ,MAAOjsB,EAAC,GAI7EyrD,GAAWzrD,EAAC,IAAKgrD,GAAkB/+B,GAASw/B,GAAWzrD,GAAG;AAI3D,YAAM8H,KAAQ2jD,GAAW,CAAC,GACzBrD,KAAeH,EAAgBngD,EAAK,KAAMsnB,GAC1Co5B,KAAWnB,EAAM,QAASp7B,EAAQ,QAAQA,EAAQ,UAAU,GAC5Dw8B,KAASpB,EAAM,QAASp7B,EAAQ,IAAI,GACpCg/B,KAAmB3C,EAAmBr8B,EAAQ,gBAAgBu8B,IAAUC,IAAQx8B,EAAQ,UAAU,GAE7Fm/B,IAAkBh8B,KAAYnD,EAAQ,mBAAmB,IACzDo/B,KAAmBR,EAAiB,cAAc,UAAiBF,MAAgB;AACzF,UAAIW,KAASzC,EAAc58B,GAASnkB,IAAOsgD,EAAY;AAEvD,MAAAoC,EAAsBpD,EAAI,kBAAkBn7B,GAASm8B,EAAY;AAEjE,UAAI+C;AAEJ,UAAKI,IAAe;AAEnB,QAAKH,KAAiBC,MAErB3xB,EAAM,aAAc0tB,EAAI,kBAAkBkE,IAAQL,IAAkBnjD,GAAM,OAAOA,GAAM,MAAM;AAI9F,iBAAU9H,KAAI,GAAGA,KAAI,GAAGA,MAAO;AAE9B,UAAAmrD,KAAUM,GAAWzrD,EAAC,EAAG;AAEzB,mBAAUwS,IAAI,GAAGA,IAAI24C,GAAQ,QAAQ34C,KAAO;AAE3C,kBAAM04C,KAASC,GAAS34C,CAAC;AAEzB,YAAKyZ,EAAQ,WAAWjxB,KAElBwtD,OAAa,OAEZ4C,IAEJ1xB,EAAM,wBAAyB0tB,EAAI,8BAA8BpnD,IAAGwS,GAAG,GAAG,GAAG04C,GAAO,OAAOA,GAAO,QAAQ1C,IAAU0C,GAAO,IAAI,IAI/HxxB,EAAM,qBAAsB0tB,EAAI,8BAA8BpnD,IAAGwS,GAAGy4C,IAAkBC,GAAO,OAAOA,GAAO,QAAQ,GAAGA,GAAO,IAAI,IAMlI,QAAQ,KAAM,iGAAiG,IAM3GE,IAEJ1xB,EAAM,cAAe0tB,EAAI,8BAA8BpnD,IAAGwS,GAAG,GAAG,GAAG04C,GAAO,OAAOA,GAAO,QAAQ1C,IAAUC,IAAQyC,GAAO,IAAI,IAI7HxxB,EAAM,WAAY0tB,EAAI,8BAA8BpnD,IAAGwS,GAAGy4C,IAAkBC,GAAO,OAAOA,GAAO,QAAQ,GAAG1C,IAAUC,IAAQyC,GAAO,IAAI;AAAA,UAM5I;AAAA,QAED;AAAA,MAED,OAAO;AAEN,QAAAC,KAAUl/B,EAAQ,SAEbm/B,KAAiBC,OAMhBF,GAAQ,SAAS,KAAIG,MAE1B5xB,EAAM,aAAc0tB,EAAI,kBAAkBkE,IAAQL,IAAkBQ,GAAW,CAAC,EAAG,OAAOA,GAAW,CAAC,EAAG,MAAM;AAIhH,iBAAUzrD,KAAI,GAAGA,KAAI,GAAGA;AAEvB,cAAKwrD,IAAgB;AAEpB,YAAKJ,IAEJ1xB,EAAM,cAAe0tB,EAAI,8BAA8BpnD,IAAG,GAAG,GAAG,GAAGyrD,GAAWzrD,EAAC,EAAG,OAAOyrD,GAAWzrD,EAAC,EAAG,QAAQwoD,IAAUC,IAAQgD,GAAWzrD,EAAC,EAAG,IAAI,IAIrJ05B,EAAM,WAAY0tB,EAAI,8BAA8BpnD,IAAG,GAAGirD,IAAkBQ,GAAWzrD,IAAI,OAAOyrD,GAAWzrD,EAAC,EAAG,QAAQ,GAAGwoD,IAAUC,IAAQgD,GAAWzrD,EAAC,EAAG,IAAI;AAIlK,qBAAUwS,IAAI,GAAGA,IAAI24C,GAAQ,QAAQ34C,KAAO;AAG3C,oBAAMk5C,KADSP,GAAS34C,CAAC,EACE,MAAOxS,EAAC,EAAG;AAEtC,cAAKorD,IAEJ1xB,EAAM,cAAe0tB,EAAI,8BAA8BpnD,IAAGwS,IAAI,GAAG,GAAG,GAAGk5C,GAAY,OAAOA,GAAY,QAAQlD,IAAUC,IAAQiD,GAAY,IAAI,IAIhJhyB,EAAM,WAAY0tB,EAAI,8BAA8BpnD,IAAGwS,IAAI,GAAGy4C,IAAkBS,GAAY,OAAOA,GAAY,QAAQ,GAAGlD,IAAUC,IAAQiD,GAAY,IAAI;AAAA,YAI9J;AAAA,UAED,OAAO;AAEN,YAAKN,IAEJ1xB,EAAM,cAAe0tB,EAAI,8BAA8BpnD,IAAG,GAAG,GAAG,GAAGwoD,IAAUC,IAAQgD,GAAWzrD,EAAC,CAAE,IAInG05B,EAAM,WAAY0tB,EAAI,8BAA8BpnD,IAAG,GAAGirD,IAAkBzC,IAAUC,IAAQgD,GAAWzrD,EAAC,CAAE;AAI7G,qBAAUwS,IAAI,GAAGA,IAAI24C,GAAQ,QAAQ34C,KAAO;AAE3C,oBAAM04C,KAASC,GAAS34C,CAAC;AAEzB,cAAK44C,IAEJ1xB,EAAM,cAAe0tB,EAAI,8BAA8BpnD,IAAGwS,IAAI,GAAG,GAAG,GAAGg2C,IAAUC,IAAQyC,GAAO,MAAOlrD,EAAC,CAAE,IAI1G05B,EAAM,WAAY0tB,EAAI,8BAA8BpnD,IAAGwS,IAAI,GAAGy4C,IAAkBzC,IAAUC,IAAQyC,GAAO,MAAOlrD,EAAC,CAAE;AAAA,YAIrH;AAAA,UAED;AAAA,MAIF;AAEA,MAAKmoD,EAA6Bl8B,GAASm8B,OAG1CC,EAAgBjB,EAAI,gBAAgB,GAIrCyD,EAAiB,YAAY3hD,EAAO,SAE/B+iB,EAAQ,YAAWA,EAAQ,SAAUA,CAAO;AAAA,IAElD;AAEA,IAAAi9B,EAAkB,YAAYj9B,EAAQ;AAAA,EAEvC;AAKA,WAAS0/B,GAAyBvH,GAAap5B,GAAciB,GAAS2/B,GAAYC,GAAevC,GAAQ;AAExG,UAAMd,KAAWnB,EAAM,QAASp7B,EAAQ,QAAQA,EAAQ,UAAU,GAC5Dw8B,KAASpB,EAAM,QAASp7B,EAAQ,IAAI,GACpCg/B,KAAmB3C,EAAmBr8B,EAAQ,gBAAgBu8B,IAAUC,IAAQx8B,EAAQ,UAAU;AAGxG,QAAK,CAF0B4T,EAAW,IAAK7U,CAAY,EAE7B,uBAAwB;AAErD,YAAMvgB,KAAQ,KAAK,IAAK,GAAGugB,EAAa,SAASs+B,CAAK,GAChD5+C,KAAS,KAAK,IAAK,GAAGsgB,EAAa,UAAUs+B,CAAK;AAExD,MAAKuC,MAAkBzE,EAAI,cAAcyE,MAAkBzE,EAAI,mBAE9D1tB,EAAM,WAAYmyB,GAAevC,GAAO2B,IAAkBxgD,IAAOC,IAAQsgB,EAAa,OAAO,GAAGw9B,IAAUC,IAAQ,IAAI,IAItH/uB,EAAM,WAAYmyB,GAAevC,GAAO2B,IAAkBxgD,IAAOC,IAAQ,GAAG89C,IAAUC,IAAQ,IAAI;AAAA,IAIpG;AAEA,IAAA/uB,EAAM,gBAAiB0tB,EAAI,aAAahD,CAAW,GAE9C0H,GAAoB9gC,KAExBs8B,EAAmB,mCAAoCF,EAAI,aAAawE,GAAYC,GAAehsB,EAAW,IAAK5T,CAAO,EAAG,gBAAgB,GAAG8/B,GAAwB/gC,CAAY,CAAE,KAE3K6gC,MAAkBzE,EAAI,cAAgByE,KAAiBzE,EAAI,+BAA+ByE,KAAiBzE,EAAI,gCAE1HA,EAAI,qBAAsBA,EAAI,aAAawE,GAAYC,GAAehsB,EAAW,IAAK5T,GAAU,gBAAgBq9B,CAAK,GAItH5vB,EAAM,gBAAiB0tB,EAAI,aAAa,IAAI;AAAA,EAE7C;AAIA,WAAS4E,GAA0BC,GAAcjhC,GAAckhC,GAAgB;AAI9E,QAFA9E,EAAI,iBAAkBA,EAAI,cAAc6E,CAAY,GAE/CjhC,EAAa,eAAe,CAAEA,EAAa,eAAgB;AAE/D,UAAIigC,IAAqB77B,MAAa,KAASg4B,EAAI,oBAAoBA,EAAI;AAE3E,UAAK8E,KAAiBJ,GAAoB9gC,IAAiB;AAE1D,cAAMmhC,IAAenhC,EAAa;AAElC,QAAKmhC,KAAgBA,EAAa,mBAE5BA,EAAa,SAASzxD,KAE1BuwD,IAAmB7D,EAAI,qBAEZ+E,EAAa,SAAS1xD,OAEjCwwD,IAAmB7D,EAAI;AAMzB,cAAMtiB,IAAUinB,GAAwB/gC,CAAY;AAEpD,QAAK8gC,GAAoB9gC,KAExBs8B,EAAmB,kCAAmCF,EAAI,cAActiB,GAASmmB,GAAkBjgC,EAAa,OAAOA,EAAa,MAAM,IAI1Io8B,EAAI,+BAAgCA,EAAI,cAActiB,GAASmmB,GAAkBjgC,EAAa,OAAOA,EAAa,MAAM;AAAA,MAI1H;AAEC,QAAAo8B,EAAI,oBAAqBA,EAAI,cAAc6D,GAAkBjgC,EAAa,OAAOA,EAAa,MAAM;AAIrG,MAAAo8B,EAAI,wBAAyBA,EAAI,aAAaA,EAAI,kBAAkBA,EAAI,cAAc6E,CAAY;AAAA,IAEnG,WAAYjhC,EAAa,eAAeA,EAAa,eAAgB;AAEpE,YAAM8Z,IAAUinB,GAAwB/gC,CAAY;AAEpD,MAAKkhC,KAAiBJ,GAAoB9gC,CAAY,MAAO,KAE5Do8B,EAAI,+BAAgCA,EAAI,cAActiB,GAASsiB,EAAI,kBAAkBp8B,EAAa,OAAOA,EAAa,MAAM,IAEjH8gC,GAAoB9gC,KAE/Bs8B,EAAmB,kCAAmCF,EAAI,cAActiB,GAASsiB,EAAI,kBAAkBp8B,EAAa,OAAOA,EAAa,MAAM,IAI9Io8B,EAAI,oBAAqBA,EAAI,cAAcA,EAAI,eAAep8B,EAAa,OAAOA,EAAa,MAAM,GAKtGo8B,EAAI,wBAAyBA,EAAI,aAAaA,EAAI,0BAA0BA,EAAI,cAAc6E,CAAY;AAAA,IAE3G,OAAO;AAEN,YAAM9uC,IAAW6N,EAAa,iCAAiC,KAAOA,EAAa,UAAU,CAAEA,EAAa,OAAO;AAEnH,eAAUhrB,IAAI,GAAGA,IAAImd,EAAS,QAAQnd,KAAO;AAE5C,cAAMisB,IAAU9O,EAAUnd,CAAC,GAErBwoD,KAAWnB,EAAM,QAASp7B,EAAQ,QAAQA,EAAQ,UAAU,GAC5Dw8B,KAASpB,EAAM,QAASp7B,EAAQ,IAAI,GACpCg/B,KAAmB3C,EAAmBr8B,EAAQ,gBAAgBu8B,IAAUC,IAAQx8B,EAAQ,UAAU,GAClG6Y,KAAUinB,GAAwB/gC,CAAY;AAEpD,QAAKkhC,KAAiBJ,GAAoB9gC,CAAY,MAAO,KAE5Do8B,EAAI,+BAAgCA,EAAI,cAActiB,IAASmmB,IAAkBjgC,EAAa,OAAOA,EAAa,MAAM,IAE7G8gC,GAAoB9gC,KAE/Bs8B,EAAmB,kCAAmCF,EAAI,cAActiB,IAASmmB,IAAkBjgC,EAAa,OAAOA,EAAa,MAAM,IAI1Io8B,EAAI,oBAAqBA,EAAI,cAAc6D,IAAkBjgC,EAAa,OAAOA,EAAa,MAAM;AAAA,MAItG;AAAA,IAED;AAEA,IAAAo8B,EAAI,iBAAkBA,EAAI,cAAc,IAAI;AAAA,EAE7C;AAGA,WAASgF,GAAmBhI,GAAap5B,GAAe;AAGvD,QADiBA,KAAgBA,EAAa,wBAChC,OAAM,IAAI,MAAO,yDAAyD;AAIxF,QAFA0O,EAAM,gBAAiB0tB,EAAI,aAAahD,CAAW,GAE9C,EAAIp5B,EAAa,gBAAgBA,EAAa,aAAa;AAE/D,YAAM,IAAI,MAAO,qEAAqE;AAKvF,KAAK,CAAE6U,EAAW,IAAK7U,EAAa,YAAY,EAAG,kBACjDA,EAAa,aAAa,MAAM,UAAUA,EAAa,SACvDA,EAAa,aAAa,MAAM,WAAWA,EAAa,YAEzDA,EAAa,aAAa,MAAM,QAAQA,EAAa,OACrDA,EAAa,aAAa,MAAM,SAASA,EAAa,QACtDA,EAAa,aAAa,cAAc,KAIzC6+B,EAAc7+B,EAAa,cAAc,CAAC;AAE1C,UAAMqhC,IAAoBxsB,EAAW,IAAK7U,EAAa,YAAY,EAAG,gBAChE8Z,IAAUinB,GAAwB/gC,CAAY;AAEpD,QAAKA,EAAa,aAAa,WAAW7vB;AAEzC,MAAK2wD,GAAoB9gC,KAExBs8B,EAAmB,mCAAoCF,EAAI,aAAaA,EAAI,kBAAkBA,EAAI,YAAYiF,GAAmB,GAAGvnB,CAAO,IAI3IsiB,EAAI,qBAAsBA,EAAI,aAAaA,EAAI,kBAAkBA,EAAI,YAAYiF,GAAmB,CAAC;AAAA,aAI3FrhC,EAAa,aAAa,WAAW5vB;AAEhD,MAAK0wD,GAAoB9gC,KAExBs8B,EAAmB,mCAAoCF,EAAI,aAAaA,EAAI,0BAA0BA,EAAI,YAAYiF,GAAmB,GAAGvnB,CAAO,IAInJsiB,EAAI,qBAAsBA,EAAI,aAAaA,EAAI,0BAA0BA,EAAI,YAAYiF,GAAmB,CAAC;AAAA;AAM9G,YAAM,IAAI,MAAO,6BAA6B;AAAA,EAIhD;AAGA,WAASC,GAAwBthC,GAAe;AAE/C,UAAMq+B,IAAyBxpB,EAAW,IAAK7U,CAAY,GACrDuhC,IAAWvhC,EAAa,4BAA4B;AAE1D,QAAKA,EAAa,gBAAgB,CAAEq+B,EAAuB,2BAA4B;AAEtF,UAAKkD,EAAS,OAAM,IAAI,MAAO,0DAA0D;AAEzF,MAAAH,GAAmB/C,EAAuB,oBAAoBr+B,CAAY;AAAA,IAE3E,WAEMuhC,GAAS;AAEb,MAAAlD,EAAuB,qBAAqB,CAAA;AAE5C,eAAUrpD,IAAI,GAAGA,IAAI,GAAGA;AAEvB,QAAA05B,EAAM,gBAAiB0tB,EAAI,aAAaiC,EAAuB,mBAAoBrpD,EAAG,GACtFqpD,EAAuB,mBAAoBrpD,KAAMonD,EAAI,mBAAkB,GACvE4E,GAA0B3C,EAAuB,mBAAoBrpD,CAAC,GAAIgrB,GAAc,EAAK;AAAA,IAI/F;AAEC,MAAA0O,EAAM,gBAAiB0tB,EAAI,aAAaiC,EAAuB,kBAAkB,GACjFA,EAAuB,qBAAqBjC,EAAI,mBAAkB,GAClE4E,GAA0B3C,EAAuB,oBAAoBr+B,GAAc,EAAK;AAM1F,IAAA0O,EAAM,gBAAiB0tB,EAAI,aAAa,IAAI;AAAA,EAE7C;AAGA,WAASoF,GAAgBxhC,GAAcyhC,GAAcN,GAAe;AAEnE,UAAM9C,IAAyBxpB,EAAW,IAAK7U,CAAY;AAE3D,IAAKyhC,MAAiB,UAErBd,GAAyBtC,EAAuB,oBAAoBr+B,GAAcA,EAAa,SAASo8B,EAAI,mBAAmBA,EAAI,YAAY,CAAC,GAI5I+E,MAAiB,UAErBG,GAAwBthC,CAAY;AAAA,EAItC;AAGA,WAAS0hC,EAAmB1hC,GAAe;AAE1C,UAAMiB,IAAUjB,EAAa,SAEvBq+B,IAAyBxpB,EAAW,IAAK7U,CAAY,GACrDk+B,IAAoBrpB,EAAW,IAAK5T,CAAO;AAEjD,IAAAjB,EAAa,iBAAkB,WAAWg+B,CAAqB,GAE1Dh+B,EAAa,iCAAiC,OAE7Ck+B,EAAkB,mBAAmB,WAEzCA,EAAkB,iBAAiB9B,EAAI,cAAa,IAIrD8B,EAAkB,YAAYj9B,EAAQ,SACtC4R,EAAK,OAAO;AAIb,UAAM0uB,IAAWvhC,EAAa,4BAA4B,IACpD2hC,IAA4B3hC,EAAa,iCAAiC,IAC1Eo9B,KAAeH,EAAgBj9B,CAAY,KAAMoE;AAIvD,QAAKm9B,GAAS;AAEb,MAAAlD,EAAuB,qBAAqB,CAAA;AAE5C,eAAUrpD,KAAI,GAAGA,KAAI,GAAGA;AAEvB,YAAKovB,KAAYnD,EAAQ,WAAWA,EAAQ,QAAQ,SAAS,GAAI;AAEhE,UAAAo9B,EAAuB,mBAAoBrpD,EAAC,IAAK,CAAA;AAEjD,mBAAUspD,KAAQ,GAAGA,KAAQr9B,EAAQ,QAAQ,QAAQq9B;AAEpD,YAAAD,EAAuB,mBAAoBrpD,EAAC,EAAIspD,EAAK,IAAKlC,EAAI,kBAAiB;AAAA,QAIjF;AAEC,UAAAiC,EAAuB,mBAAoBrpD,MAAMonD,EAAI,kBAAiB;AAAA,IAMzE,OAAO;AAEN,UAAKh4B,KAAYnD,EAAQ,WAAWA,EAAQ,QAAQ,SAAS,GAAI;AAEhE,QAAAo9B,EAAuB,qBAAqB,CAAA;AAE5C,iBAAUC,KAAQ,GAAGA,KAAQr9B,EAAQ,QAAQ,QAAQq9B;AAEpD,UAAAD,EAAuB,mBAAoBC,MAAUlC,EAAI,kBAAiB;AAAA,MAI5E;AAEC,QAAAiC,EAAuB,qBAAqBjC,EAAI,kBAAiB;AAIlE,UAAKuF;AAEJ,YAAKx9B,EAAa,aAAc;AAE/B,gBAAMhS,KAAW6N,EAAa;AAE9B,mBAAUhrB,KAAI,GAAGuQ,KAAK4M,GAAS,QAAQnd,KAAIuQ,IAAIvQ,MAAO;AAErD,kBAAMupD,KAAuB1pB,EAAW,IAAK1iB,GAAUnd,EAAC,CAAE;AAE1D,YAAKupD,GAAqB,mBAAmB,WAE5CA,GAAqB,iBAAiBnC,EAAI,cAAa,GAEvDvpB,EAAK,OAAO;AAAA,UAId;AAAA,QAED;AAEC,kBAAQ,KAAM,+GAA+G;AAM/H,UAAOzO,KAAYpE,EAAa,UAAU,KAAO8gC,GAAoB9gC,CAAY,MAAO,IAAQ;AAE/F,cAAM7N,KAAWwvC,IAA0B1gC,IAAU,CAAEA,CAAO;AAE9D,QAAAo9B,EAAuB,iCAAiCjC,EAAI,kBAAiB,GAC7EiC,EAAuB,2BAA2B,CAAA,GAElD3vB,EAAM,gBAAiB0tB,EAAI,aAAaiC,EAAuB,8BAA8B;AAE7F,iBAAUrpD,KAAI,GAAGA,KAAImd,GAAS,QAAQnd,MAAO;AAE5C,gBAAMisB,KAAU9O,GAAUnd,EAAC;AAC3B,UAAAqpD,EAAuB,yBAA0BrpD,MAAMonD,EAAI,mBAAkB,GAE7EA,EAAI,iBAAkBA,EAAI,cAAciC,EAAuB,yBAA0BrpD,GAAG;AAE5F,gBAAMwoD,KAAWnB,EAAM,QAASp7B,GAAQ,QAAQA,GAAQ,UAAU,GAC5Dw8B,KAASpB,EAAM,QAASp7B,GAAQ,IAAI,GACpCg/B,KAAmB3C,EAAmBr8B,GAAQ,gBAAgBu8B,IAAUC,IAAQx8B,GAAQ,YAAYjB,EAAa,qBAAqB,EAAI,GAC1I8Z,KAAUinB,GAAwB/gC,CAAY;AACpD,UAAAo8B,EAAI,+BAAgCA,EAAI,cAActiB,IAASmmB,IAAkBjgC,EAAa,OAAOA,EAAa,MAAM,GAExHo8B,EAAI,wBAAyBA,EAAI,aAAaA,EAAI,oBAAoBpnD,IAAGonD,EAAI,cAAciC,EAAuB,yBAA0BrpD,EAAC,CAAE;AAAA,QAEhJ;AAEA,QAAAonD,EAAI,iBAAkBA,EAAI,cAAc,IAAI,GAEvCp8B,EAAa,gBAEjBq+B,EAAuB,2BAA2BjC,EAAI,mBAAkB,GACxE4E,GAA0B3C,EAAuB,0BAA0Br+B,GAAc,EAAI,IAI9F0O,EAAM,gBAAiB0tB,EAAI,aAAa,IAAI;AAAA,MAE7C;AAAA,IAED;AAIA,QAAKmF,GAAS;AAEb,MAAA7yB,EAAM,YAAa0tB,EAAI,kBAAkB8B,EAAkB,cAAc,GACzEsB,EAAsBpD,EAAI,kBAAkBn7B,GAASm8B,EAAY;AAEjE,eAAUpoD,KAAI,GAAGA,KAAI,GAAGA;AAEvB,YAAKovB,KAAYnD,EAAQ,WAAWA,EAAQ,QAAQ,SAAS;AAE5D,mBAAUq9B,KAAQ,GAAGA,KAAQr9B,EAAQ,QAAQ,QAAQq9B;AAEpD,YAAAqC,GAAyBtC,EAAuB,mBAAoBrpD,EAAC,EAAIspD,EAAK,GAAIt+B,GAAciB,GAASm7B,EAAI,mBAAmBA,EAAI,8BAA8BpnD,IAAGspD,EAAK;AAAA;AAM3K,UAAAqC,GAAyBtC,EAAuB,mBAAoBrpD,EAAC,GAAIgrB,GAAciB,GAASm7B,EAAI,mBAAmBA,EAAI,8BAA8BpnD,IAAG,CAAC;AAM/J,MAAKmoD,EAA6Bl8B,GAASm8B,OAE1CC,EAAgBjB,EAAI,gBAAgB,GAIrC1tB,EAAM,cAAa;AAAA,IAEpB,WAAYizB,GAA0B;AAErC,YAAMxvC,KAAW6N,EAAa;AAE9B,eAAUhrB,KAAI,GAAGuQ,KAAK4M,GAAS,QAAQnd,KAAIuQ,IAAIvQ,MAAO;AAErD,cAAM4rD,KAAazuC,GAAUnd,EAAC,GACxBupD,KAAuB1pB,EAAW,IAAK+rB,EAAU;AAEvD,QAAAlyB,EAAM,YAAa0tB,EAAI,YAAYmC,GAAqB,cAAc,GACtEiB,EAAsBpD,EAAI,YAAYwE,IAAYxD,EAAY,GAC9DuD,GAAyBtC,EAAuB,oBAAoBr+B,GAAc4gC,IAAYxE,EAAI,oBAAoBpnD,IAAGonD,EAAI,YAAY,CAAC,GAErIe,EAA6ByD,IAAYxD,OAE7CC,EAAgBjB,EAAI,UAAU;AAAA,MAIhC;AAEA,MAAA1tB,EAAM,cAAa;AAAA,IAEpB,OAAO;AAEN,UAAIkzB,KAAgBxF,EAAI;AAmBxB,WAjBKp8B,EAAa,yBAAyBA,EAAa,8BAElDoE,IAEJw9B,KAAgB5hC,EAAa,wBAAwBo8B,EAAI,aAAaA,EAAI,mBAI1E,QAAQ,MAAO,iGAAiG,IAMlH1tB,EAAM,YAAakzB,IAAe1D,EAAkB,cAAc,GAClEsB,EAAsBoC,IAAe3gC,GAASm8B,EAAY,GAErDh5B,KAAYnD,EAAQ,WAAWA,EAAQ,QAAQ,SAAS;AAE5D,iBAAUq9B,KAAQ,GAAGA,KAAQr9B,EAAQ,QAAQ,QAAQq9B;AAEpD,UAAAqC,GAAyBtC,EAAuB,mBAAoBC,KAASt+B,GAAciB,GAASm7B,EAAI,mBAAmBwF,IAAetD,EAAK;AAAA;AAMhJ,QAAAqC,GAAyBtC,EAAuB,oBAAoBr+B,GAAciB,GAASm7B,EAAI,mBAAmBwF,IAAe,CAAC;AAInI,MAAKzE,EAA6Bl8B,GAASm8B,OAE1CC,EAAgBuE,EAAa,GAI9BlzB,EAAM,cAAa;AAAA,IAEpB;AAIA,IAAK1O,EAAa,eAEjBshC,GAAwBthC,CAAY;AAAA,EAItC;AAEA,WAAS6hC,GAA0B7hC,GAAe;AAEjD,UAAMo9B,IAAeH,EAAgBj9B,CAAY,KAAMoE,GAEjDjS,IAAW6N,EAAa,iCAAiC,KAAOA,EAAa,UAAU,CAAEA,EAAa,OAAO;AAEnH,aAAUhrB,IAAI,GAAGuQ,IAAK4M,EAAS,QAAQnd,IAAIuQ,GAAIvQ,KAAO;AAErD,YAAMisB,IAAU9O,EAAUnd,CAAC;AAE3B,UAAKmoD,EAA6Bl8B,GAASm8B,IAAiB;AAE3D,cAAMr3C,KAASia,EAAa,0BAA0Bo8B,EAAI,mBAAmBA,EAAI,YAC3EpB,KAAenmB,EAAW,IAAK5T,CAAO,EAAG;AAE/C,QAAAyN,EAAM,YAAa3oB,IAAQi1C,EAAY,GACvCqC,EAAgBt3C,EAAM,GACtB2oB,EAAM,cAAa;AAAA,MAEpB;AAAA,IAED;AAAA,EAED;AAEA,WAASozB,GAA+B9hC,GAAe;AAEtD,QAAOoE,KAAYpE,EAAa,UAAU,KAAO8gC,GAAoB9gC,CAAY,MAAO,IAAQ;AAE/F,YAAM7N,IAAW6N,EAAa,+BAA+BA,EAAa,UAAU,CAAEA,EAAa,OAAO,GACpGvgB,IAAQugB,EAAa,OACrBtgB,IAASsgB,EAAa;AAC5B,UAAI+hC,IAAO3F,EAAI;AACf,YAAM4F,IAAoB,CAAA,GACpBC,KAAajiC,EAAa,gBAAgBo8B,EAAI,2BAA2BA,EAAI,kBAC7EiC,KAAyBxpB,EAAW,IAAK7U,CAAY,GACrD2hC,KAA4B3hC,EAAa,iCAAiC;AAGhF,UAAK2hC;AAEJ,iBAAU3sD,KAAI,GAAGA,KAAImd,EAAS,QAAQnd;AAErC,UAAA05B,EAAM,gBAAiB0tB,EAAI,aAAaiC,GAAuB,8BAA8B,GAC7FjC,EAAI,wBAAyBA,EAAI,aAAaA,EAAI,oBAAoBpnD,IAAGonD,EAAI,cAAc,IAAI,GAE/F1tB,EAAM,gBAAiB0tB,EAAI,aAAaiC,GAAuB,kBAAkB,GACjFjC,EAAI,qBAAsBA,EAAI,kBAAkBA,EAAI,oBAAoBpnD,IAAGonD,EAAI,YAAY,MAAM,CAAC;AAMpG,MAAA1tB,EAAM,gBAAiB0tB,EAAI,kBAAkBiC,GAAuB,8BAA8B,GAClG3vB,EAAM,gBAAiB0tB,EAAI,kBAAkBiC,GAAuB,kBAAkB;AAEtF,eAAUrpD,KAAI,GAAGA,KAAImd,EAAS,QAAQnd,MAAO;AAE5C,QAAAgtD,EAAkB,KAAM5F,EAAI,oBAAoBpnD,EAAC,GAE5CgrB,EAAa,eAEjBgiC,EAAkB,KAAMC,EAAU;AAInC,cAAMC,KAAsB7D,GAAuB,wBAAwB,SAAcA,GAAuB,sBAAsB;AAsBtI,YApBK6D,OAAsB,OAErBliC,EAAa,gBAAc+hC,KAAQ3F,EAAI,mBACvCp8B,EAAa,kBAAgB+hC,KAAQ3F,EAAI,sBAI1CuF,MAEJvF,EAAI,wBAAyBA,EAAI,kBAAkBA,EAAI,mBAAmBA,EAAI,cAAciC,GAAuB,yBAA0BrpD,EAAC,CAAE,GAI5IktD,OAAsB,OAE1B9F,EAAI,sBAAuBA,EAAI,kBAAkB,CAAE6F,EAAU,CAAE,GAC/D7F,EAAI,sBAAuBA,EAAI,kBAAkB,CAAE6F,EAAU,CAAE,IAI3DN,IAA0B;AAE9B,gBAAM3G,KAAenmB,EAAW,IAAK1iB,EAAUnd,EAAC,CAAE,EAAG;AACrD,UAAAonD,EAAI,qBAAsBA,EAAI,kBAAkBA,EAAI,mBAAmBA,EAAI,YAAYpB,IAAc,CAAC;AAAA,QAEvG;AAEA,QAAAoB,EAAI,gBAAiB,GAAG,GAAG38C,GAAOC,GAAQ,GAAG,GAAGD,GAAOC,GAAQqiD,GAAM3F,EAAI,OAAO,GAE3EG,KAEJH,EAAI,sBAAuBA,EAAI,kBAAkB4F,CAAiB;AAAA,MAKpE;AAMA,UAJAtzB,EAAM,gBAAiB0tB,EAAI,kBAAkB,IAAI,GACjD1tB,EAAM,gBAAiB0tB,EAAI,kBAAkB,IAAI,GAG5CuF;AAEJ,iBAAU3sD,KAAI,GAAGA,KAAImd,EAAS,QAAQnd,MAAO;AAE5C,UAAA05B,EAAM,gBAAiB0tB,EAAI,aAAaiC,GAAuB,8BAA8B,GAC7FjC,EAAI,wBAAyBA,EAAI,aAAaA,EAAI,oBAAoBpnD,IAAGonD,EAAI,cAAciC,GAAuB,yBAA0BrpD,EAAC,CAAE;AAE/I,gBAAMgmD,KAAenmB,EAAW,IAAK1iB,EAAUnd,EAAC,CAAE,EAAG;AAErD,UAAA05B,EAAM,gBAAiB0tB,EAAI,aAAaiC,GAAuB,kBAAkB,GACjFjC,EAAI,qBAAsBA,EAAI,kBAAkBA,EAAI,oBAAoBpnD,IAAGonD,EAAI,YAAYpB,IAAc,CAAC;AAAA,QAE3G;AAID,MAAAtsB,EAAM,gBAAiB0tB,EAAI,kBAAkBiC,GAAuB,8BAA8B;AAAA,IAEnG;AAAA,EAED;AAEA,WAAS0C,GAAwB/gC,GAAe;AAE/C,WAAO,KAAK,IAAKmE,EAAa,YAAYnE,EAAa,OAAO;AAAA,EAE/D;AAEA,WAAS8gC,GAAoB9gC,GAAe;AAE3C,UAAMq+B,IAAyBxpB,EAAW,IAAK7U,CAAY;AAE3D,WAAOoE,KAAYpE,EAAa,UAAU,KAAKZ,EAAW,IAAK,4CAA6C,MAAQi/B,EAAuB,yBAAyB;AAAA,EAErK;AAEA,WAASU,GAAoB99B,GAAU;AAEtC,UAAM+C,IAAQ6O,EAAK,OAAO;AAI1B,IAAK2pB,EAAe,IAAKv7B,CAAO,MAAO+C,MAEtCw4B,EAAe,IAAKv7B,GAAS+C,CAAK,GAClC/C,EAAQ,OAAM;AAAA,EAIhB;AAEA,WAAS++B,GAAkB/+B,GAASnkB,GAAQ;AAE3C,UAAMT,IAAa4kB,EAAQ,YACrBjjB,IAASijB,EAAQ,QACjBxsB,IAAOwsB,EAAQ;AAErB,WAAKA,EAAQ,wBAAwB,MAAQA,EAAQ,mBAAmB,MAAQA,EAAQ,WAAW5sB,MAE9FgI,MAAenJ,MAAwBmJ,MAAerJ,OAIrDoJ,GAAgB,YAAaC,CAAU,MAAO/I,KAE7C8wB,MAAa,KAIZhF,EAAW,IAAK,UAAU,MAAO,MAAQphB,MAAWhO,MAExDixB,EAAQ,SAAS5sB,IAIjB4sB,EAAQ,YAAYhyB,IACpBgyB,EAAQ,kBAAkB,MAM1BnkB,IAAQD,GAAW,aAAcC,CAAK,KAQlCkB,MAAWhO,MAAcyE,MAASrF,OAEtC,QAAQ,KAAM,yFAAyF,IAQzG,QAAQ,MAAO,yDAAyDiN,CAAU,IAM7ES;AAAA,EAER;AAIA,OAAK,sBAAsB4hD,GAC3B,KAAK,oBAAoBD,IAEzB,KAAK,eAAeI,GACpB,KAAK,oBAAoBI,GACzB,KAAK,eAAeC,GACpB,KAAK,iBAAiBC,GACtB,KAAK,iBAAiBqC,IACtB,KAAK,oBAAoBE,GACzB,KAAK,2BAA2BG,IAChC,KAAK,gCAAgCC,IACrC,KAAK,yBAAyBR,IAC9B,KAAK,0BAA0BX,IAC/B,KAAK,qBAAqBG;AAE3B;AAEA,SAASqB,GAAYj+B,GAAI9E,GAAY+E,GAAe;AAEnD,QAAMC,IAAWD,EAAa;AAE9B,WAASi+B,EAAS9yC,GAAGjT,IAAarJ,IAAe;AAEhD,QAAI48B;AAEJ,UAAMguB,IAAWxhD,GAAgB,YAAaC,CAAU;AAExD,QAAKiT,MAAMlgB,GAAmB,QAAO80B,EAAG;AACxC,QAAK5U,MAAM1f,GAAwB,QAAOs0B,EAAG;AAC7C,QAAK5U,MAAMzf,GAAwB,QAAOq0B,EAAG;AAE7C,QAAK5U,MAAMjgB,GAAW,QAAO60B,EAAG;AAChC,QAAK5U,MAAMhgB,GAAY,QAAO40B,EAAG;AACjC,QAAK5U,MAAM/f,GAAoB,QAAO20B,EAAG;AACzC,QAAK5U,MAAM9f,GAAU,QAAO00B,EAAG;AAC/B,QAAK5U,MAAM7f,GAAkB,QAAOy0B,EAAG;AACvC,QAAK5U,MAAM5f,GAAY,QAAOw0B,EAAG;AAEjC,QAAK5U,MAAM3f;AAEV,aAAKy0B,IAAkBF,EAAG,cAE1B0L,IAAYxQ,EAAW,IAAK,wBAAwB,GAE/CwQ,MAAc,OAEXA,EAAU,iBAIV;AAMT,QAAKtgB,MAAMvf,GAAc,QAAOm0B,EAAG;AACnC,QAAK5U,MAAMtf,GAAa,QAAOk0B,EAAG;AAClC,QAAK5U,MAAMrf,GAAkB,QAAOi0B,EAAG;AACvC,QAAK5U,MAAMpf,GAAuB,QAAOg0B,EAAG;AAC5C,QAAK5U,MAAMnf,GAAc,QAAO+zB,EAAG;AACnC,QAAK5U,MAAMlf,GAAqB,QAAO8zB,EAAG;AAI1C,QAAK5U,MAAMjb;AAIV,aAFAu7B,IAAYxQ,EAAW,IAAK,UAAU,GAEjCwQ,MAAc,OAEXA,EAAU,iBAIV;AAQT,QAAKtgB,MAAMjf,GAAY,QAAO6zB,EAAG;AACjC,QAAK5U,MAAMhf,GAAmB,QAAO4zB,EAAG;AACxC,QAAK5U,MAAM/e,GAAW,QAAO2zB,EAAG;AAChC,QAAK5U,MAAM9e,GAAkB,QAAO0zB,EAAG;AACvC,QAAK5U,MAAM7e,GAAoB,QAAOyzB,EAAG;AAIzC,QAAK5U,MAAM5e,MAAwB4e,MAAM3e,MAAyB2e,MAAM1e,MAAyB0e,MAAMze;AAEtG,UAAK+sD,MAAatqD;AAIjB,YAFAs8B,IAAYxQ,EAAW,IAAK,oCAAoC,GAE3DwQ,MAAc,MAAO;AAEzB,cAAKtgB,MAAM5e,GAAuB,QAAOk/B,EAAU;AACnD,cAAKtgB,MAAM3e,GAAwB,QAAOi/B,EAAU;AACpD,cAAKtgB,MAAM1e,GAAwB,QAAOg/B,EAAU;AACpD,cAAKtgB,MAAMze,GAAwB,QAAO++B,EAAU;AAAA,QAErD;AAEC,iBAAO;AAAA,eAMRA,IAAYxQ,EAAW,IAAK,+BAA+B,GAEtDwQ,MAAc,MAAO;AAEzB,YAAKtgB,MAAM5e,GAAuB,QAAOk/B,EAAU;AACnD,YAAKtgB,MAAM3e,GAAwB,QAAOi/B,EAAU;AACpD,YAAKtgB,MAAM1e,GAAwB,QAAOg/B,EAAU;AACpD,YAAKtgB,MAAMze,GAAwB,QAAO++B,EAAU;AAAA,MAErD;AAEC,eAAO;AAUV,QAAKtgB,MAAMxe,MAA2Bwe,MAAMve,MAA2Bue,MAAMte,MAA4Bse,MAAMre;AAI9G,UAFA2+B,IAAYxQ,EAAW,IAAK,gCAAgC,GAEvDwQ,MAAc,MAAO;AAEzB,YAAKtgB,MAAMxe,GAA0B,QAAO8+B,EAAU;AACtD,YAAKtgB,MAAMve,GAA0B,QAAO6+B,EAAU;AACtD,YAAKtgB,MAAMte,GAA2B,QAAO4+B,EAAU;AACvD,YAAKtgB,MAAMre,GAA2B,QAAO2+B,EAAU;AAAA,MAExD;AAEC,eAAO;AAQT,QAAKtgB,MAAMpe;AAIV,aAFA0+B,IAAYxQ,EAAW,IAAK,+BAA+B,GAEtDwQ,MAAc,OAEXA,EAAU,4BAIV;AAQT,QAAKtgB,MAAMne,MAAmBme,MAAMle;AAInC,UAFAw+B,IAAYxQ,EAAW,IAAK,8BAA8B,GAErDwQ,MAAc,MAAO;AAEzB,YAAKtgB,MAAMne,GAAkB,QAASysD,MAAatqD,KAAiBs8B,EAAU,wBAAwBA,EAAU;AAChH,YAAKtgB,MAAMle,GAAuB,QAASwsD,MAAatqD,KAAiBs8B,EAAU,mCAAmCA,EAAU;AAAA,MAEjI;AAEC,eAAO;AAQT,QAAKtgB,MAAMje,MAAwBie,MAAMhe,MAAwBge,MAAM/d,MACtE+d,MAAM9d,MAAwB8d,MAAM7d,MAAwB6d,MAAM5d,MAClE4d,MAAM3d,MAAwB2d,MAAM1d,MAAwB0d,MAAMzd,MAClEyd,MAAMxd,MAAyBwd,MAAMvd,MAAyBud,MAAMtd,MACpEsd,MAAMrd,MAA0Bqd,MAAMpd;AAItC,UAFA09B,IAAYxQ,EAAW,IAAK,+BAA+B,GAEtDwQ,MAAc,MAAO;AAEzB,YAAKtgB,MAAMje,GAAuB,QAASusD,MAAatqD,KAAiBs8B,EAAU,uCAAuCA,EAAU;AACpI,YAAKtgB,MAAMhe,GAAuB,QAASssD,MAAatqD,KAAiBs8B,EAAU,uCAAuCA,EAAU;AACpI,YAAKtgB,MAAM/d,GAAuB,QAASqsD,MAAatqD,KAAiBs8B,EAAU,uCAAuCA,EAAU;AACpI,YAAKtgB,MAAM9d,GAAuB,QAASosD,MAAatqD,KAAiBs8B,EAAU,uCAAuCA,EAAU;AACpI,YAAKtgB,MAAM7d,GAAuB,QAASmsD,MAAatqD,KAAiBs8B,EAAU,uCAAuCA,EAAU;AACpI,YAAKtgB,MAAM5d,GAAuB,QAASksD,MAAatqD,KAAiBs8B,EAAU,uCAAuCA,EAAU;AACpI,YAAKtgB,MAAM3d,GAAuB,QAASisD,MAAatqD,KAAiBs8B,EAAU,uCAAuCA,EAAU;AACpI,YAAKtgB,MAAM1d,GAAuB,QAASgsD,MAAatqD,KAAiBs8B,EAAU,uCAAuCA,EAAU;AACpI,YAAKtgB,MAAMzd,GAAwB,QAAS+rD,MAAatqD,KAAiBs8B,EAAU,wCAAwCA,EAAU;AACtI,YAAKtgB,MAAMxd,GAAwB,QAAS8rD,MAAatqD,KAAiBs8B,EAAU,wCAAwCA,EAAU;AACtI,YAAKtgB,MAAMvd,GAAwB,QAAS6rD,MAAatqD,KAAiBs8B,EAAU,wCAAwCA,EAAU;AACtI,YAAKtgB,MAAMtd,GAAyB,QAAS4rD,MAAatqD,KAAiBs8B,EAAU,yCAAyCA,EAAU;AACxI,YAAKtgB,MAAMrd,GAAyB,QAAS2rD,MAAatqD,KAAiBs8B,EAAU,yCAAyCA,EAAU;AACxI,YAAKtgB,MAAMpd,GAAyB,QAAS0rD,MAAatqD,KAAiBs8B,EAAU,yCAAyCA,EAAU;AAAA,MAEzI;AAEC,eAAO;AAQT,QAAKtgB,MAAMnd,MAAoBmd,MAAMld,MAA0Bkd,MAAMjd;AAIpE,UAFAu9B,IAAYxQ,EAAW,IAAK,8BAA8B,GAErDwQ,MAAc,MAAO;AAEzB,YAAKtgB,MAAMnd,GAAmB,QAASyrD,MAAatqD,KAAiBs8B,EAAU,uCAAuCA,EAAU;AAChI,YAAKtgB,MAAMld,GAAyB,QAAOw9B,EAAU;AACrD,YAAKtgB,MAAMjd,GAA2B,QAAOu9B,EAAU;AAAA,MAExD;AAEC,eAAO;AAQT,QAAKtgB,MAAMhd,MAAoBgd,MAAM/c,MAA2B+c,MAAM9c,MAA0B8c,MAAM7c;AAIrG,UAFAm9B,IAAYxQ,EAAW,IAAK,8BAA8B,GAErDwQ,MAAc,MAAO;AAEzB,YAAKtgB,MAAMnd,GAAmB,QAAOy9B,EAAU;AAC/C,YAAKtgB,MAAM/c,GAA0B,QAAOq9B,EAAU;AACtD,YAAKtgB,MAAM9c,GAAyB,QAAOo9B,EAAU;AACrD,YAAKtgB,MAAM7c,GAAgC,QAAOm9B,EAAU;AAAA,MAE7D;AAEC,eAAO;AAQT,WAAKtgB,MAAMxf,KAELs0B,IAAkBF,EAAG,qBAE1B0L,IAAYxQ,EAAW,IAAK,qBAAqB,GAE5CwQ,MAAc,OAEXA,EAAU,0BAIV,QAQA1L,EAAI5U,CAAC,MAAO,SAAc4U,EAAI5U,CAAC,IAAK;AAAA,EAE9C;AAEA,SAAO,EAAE,SAAS8yC,EAAO;AAE1B;AAEA,MAAMC,WAAoB/iC,GAAkB;AAAA,EAE3C,YAAavqB,IAAQ,IAAK;AAEzB,UAAK,GAEL,KAAK,gBAAgB,IAErB,KAAK,UAAUA;AAAA,EAEhB;AAED;AAEA,MAAMutD,WAAc1xC,GAAS;AAAA,EAE5B,cAAc;AAEb,UAAK,GAEL,KAAK,UAAU,IAEf,KAAK,OAAO;AAAA,EAEb;AAED;AAEA,MAAM2xC,KAAa,EAAE,MAAM,OAAM;AAEjC,MAAMC,GAAgB;AAAA,EAErB,cAAc;AAEb,SAAK,aAAa,MAClB,KAAK,QAAQ,MACb,KAAK,QAAQ;AAAA,EAEd;AAAA,EAEA,eAAe;AAEd,WAAK,KAAK,UAAU,SAEnB,KAAK,QAAQ,IAAIF,GAAK,GACtB,KAAK,MAAM,mBAAmB,IAC9B,KAAK,MAAM,UAAU,IAErB,KAAK,MAAM,SAAS,CAAA,GACpB,KAAK,MAAM,aAAa,EAAE,UAAU,GAAK,IAInC,KAAK;AAAA,EAEb;AAAA,EAEA,oBAAoB;AAEnB,WAAK,KAAK,eAAe,SAExB,KAAK,aAAa,IAAIA,GAAK,GAC3B,KAAK,WAAW,mBAAmB,IACnC,KAAK,WAAW,UAAU,IAC1B,KAAK,WAAW,oBAAoB,IACpC,KAAK,WAAW,iBAAiB,IAAI1+C,EAAO,GAC5C,KAAK,WAAW,qBAAqB,IACrC,KAAK,WAAW,kBAAkB,IAAIA,EAAO,IAIvC,KAAK;AAAA,EAEb;AAAA,EAEA,eAAe;AAEd,WAAK,KAAK,UAAU,SAEnB,KAAK,QAAQ,IAAI0+C,GAAK,GACtB,KAAK,MAAM,mBAAmB,IAC9B,KAAK,MAAM,UAAU,IACrB,KAAK,MAAM,oBAAoB,IAC/B,KAAK,MAAM,iBAAiB,IAAI1+C,EAAO,GACvC,KAAK,MAAM,qBAAqB,IAChC,KAAK,MAAM,kBAAkB,IAAIA,EAAO,IAIlC,KAAK;AAAA,EAEb;AAAA,EAEA,cAAe9O,GAAQ;AAEtB,WAAK,KAAK,eAAe,QAExB,KAAK,WAAW,cAAeA,CAAK,GAIhC,KAAK,UAAU,QAEnB,KAAK,MAAM,cAAeA,CAAK,GAI3B,KAAK,UAAU,QAEnB,KAAK,MAAM,cAAeA,CAAK,GAIzB;AAAA,EAER;AAAA,EAEA,QAAS2tD,GAAc;AAEtB,QAAKA,KAAeA,EAAY,MAAO;AAEtC,YAAMC,IAAO,KAAK;AAElB,UAAKA;AAEJ,mBAAYC,KAAcF,EAAY,KAAK,OAAM;AAGhD,eAAK,cAAeC,GAAMC,CAAU;AAAA,IAMvC;AAEA,gBAAK,cAAe,EAAE,MAAM,aAAa,MAAMF,GAAa,GAErD;AAAA,EAER;AAAA,EAEA,WAAYA,GAAc;AAEzB,gBAAK,cAAe,EAAE,MAAM,gBAAgB,MAAMA,GAAa,GAE1D,KAAK,eAAe,SAExB,KAAK,WAAW,UAAU,KAItB,KAAK,UAAU,SAEnB,KAAK,MAAM,UAAU,KAIjB,KAAK,UAAU,SAEnB,KAAK,MAAM,UAAU,KAIf;AAAA,EAER;AAAA,EAEA,OAAQA,GAAaz+B,GAAO4+B,GAAiB;AAE5C,QAAIC,IAAY,MACZC,IAAW,MACXC,IAAW;AAEf,UAAMC,IAAY,KAAK,YACjBC,IAAO,KAAK,OACZP,IAAO,KAAK;AAElB,QAAKD,KAAez+B,EAAM,QAAQ,oBAAoB,mBAAoB;AAEzE,UAAK0+B,KAAQD,EAAY,MAAO;AAE/B,QAAAM,IAAW;AAEX,mBAAYJ,KAAcF,EAAY,KAAK,OAAM,GAAK;AAGrD,gBAAMS,IAAYl/B,EAAM,aAAc2+B,GAAYC,CAAc,GAG1DO,IAAQ,KAAK,cAAeT,GAAMC,CAAU;AAElD,UAAKO,MAAc,SAElBC,EAAM,OAAO,UAAWD,EAAU,UAAU,MAAM,GAClDC,EAAM,OAAO,UAAWA,EAAM,UAAUA,EAAM,UAAUA,EAAM,KAAK,GACnEA,EAAM,yBAAyB,IAC/BA,EAAM,cAAcD,EAAU,SAI/BC,EAAM,UAAUD,MAAc;AAAA,QAE/B;AAKA,cAAME,IAAWV,EAAK,OAAQ,kBAAkB,GAC1CW,IAAWX,EAAK,OAAQ,WAAW,GACnC3xC,IAAWqyC,EAAS,SAAS,WAAYC,EAAS,QAAQ,GAE1DC,IAAkB,MAClBC,IAAY;AAElB,QAAKb,EAAK,WAAW,YAAY3xC,IAAWuyC,IAAkBC,KAE7Db,EAAK,WAAW,WAAW,IAC3B,KAAK,cAAe;AAAA,UACnB,MAAM;AAAA,UACN,YAAYD,EAAY;AAAA,UACxB,QAAQ;AAAA,QACd,CAAM,KAEU,CAAEC,EAAK,WAAW,YAAY3xC,KAAYuyC,IAAkBC,MAEvEb,EAAK,WAAW,WAAW,IAC3B,KAAK,cAAe;AAAA,UACnB,MAAM;AAAA,UACN,YAAYD,EAAY;AAAA,UACxB,QAAQ;AAAA,QACd,CAAM;AAAA,MAIH;AAEC,QAAKQ,MAAS,QAAQR,EAAY,cAEjCK,IAAW9+B,EAAM,QAASy+B,EAAY,WAAWG,CAAc,GAE1DE,MAAa,SAEjBG,EAAK,OAAO,UAAWH,EAAS,UAAU,MAAM,GAChDG,EAAK,OAAO,UAAWA,EAAK,UAAUA,EAAK,UAAUA,EAAK,KAAK,GAC/DA,EAAK,yBAAyB,IAEzBH,EAAS,kBAEbG,EAAK,oBAAoB,IACzBA,EAAK,eAAe,KAAMH,EAAS,cAAc,KAIjDG,EAAK,oBAAoB,IAIrBH,EAAS,mBAEbG,EAAK,qBAAqB,IAC1BA,EAAK,gBAAgB,KAAMH,EAAS,eAAe,KAInDG,EAAK,qBAAqB;AAU9B,MAAKD,MAAc,SAElBH,IAAY7+B,EAAM,QAASy+B,EAAY,gBAAgBG,CAAc,GAGhEC,MAAc,QAAQC,MAAa,SAEvCD,IAAYC,IAIRD,MAAc,SAElBG,EAAU,OAAO,UAAWH,EAAU,UAAU,MAAM,GACtDG,EAAU,OAAO,UAAWA,EAAU,UAAUA,EAAU,UAAUA,EAAU,KAAK,GACnFA,EAAU,yBAAyB,IAE9BH,EAAU,kBAEdG,EAAU,oBAAoB,IAC9BA,EAAU,eAAe,KAAMH,EAAU,cAAc,KAIvDG,EAAU,oBAAoB,IAI1BH,EAAU,mBAEdG,EAAU,qBAAqB,IAC/BA,EAAU,gBAAgB,KAAMH,EAAU,eAAe,KAIzDG,EAAU,qBAAqB,IAIhC,KAAK,cAAeT,EAAU;AAAA,IAOjC;AAEA,WAAKS,MAAc,SAElBA,EAAU,UAAYH,MAAc,OAIhCI,MAAS,SAEbA,EAAK,UAAYH,MAAa,OAI1BJ,MAAS,SAEbA,EAAK,UAAYK,MAAa,OAIxB;AAAA,EAER;AAAA;AAAA,EAIA,cAAeL,GAAMC,GAAa;AAEjC,QAAKD,EAAK,OAAQC,EAAW,SAAS,MAAO,QAAY;AAExD,YAAMQ,IAAQ,IAAIb,GAAK;AACvB,MAAAa,EAAM,mBAAmB,IACzBA,EAAM,UAAU,IAChBT,EAAK,OAAQC,EAAW,SAAS,IAAKQ,GAEtCT,EAAK,IAAKS,CAAK;AAAA,IAEhB;AAEA,WAAOT,EAAK,OAAQC,EAAW,SAAS;AAAA,EAEzC;AAED;AAEA,MAAMa,WAAqBhvD,GAAgB;AAAA,EAE1C,YAAauqB,GAAUmF,GAAK;AAE3B,UAAK;AAEL,UAAM/G,IAAQ;AAEd,QAAIsmC,IAAU,MAEVC,IAAyB,GAEzBd,IAAiB,MACjBe,IAAqB,eAErBC,IAAY,GACZC,IAAuB,MAEvBC,IAAO,MACPC,IAAY,MACZC,IAAc,MACdC,IAAc,MACdC,IAAU;AACd,UAAMjsC,IAAaiM,EAAG,qBAAoB;AAC1C,QAAIigC,IAAsB,MACtBC,IAAkB;AAEtB,UAAMC,IAAc,CAAA,GACdC,IAAyB,CAAA,GAEzBC,IAAc,IAAI9tD,GAAO;AAC/B,QAAI+tD,IAAoB;AAIxB,UAAMC,IAAU,IAAInlC,GAAiB;AACrC,IAAAmlC,EAAQ,OAAO,OAAQ,CAAC,GACxBA,EAAQ,WAAW,IAAIpmD,GAAO;AAE9B,UAAMqmD,IAAU,IAAIplC,GAAiB;AACrC,IAAAolC,EAAQ,OAAO,OAAQ,CAAC,GACxBA,EAAQ,WAAW,IAAIrmD,GAAO;AAE9B,UAAMkiB,IAAU,CAAEkkC,GAASC,CAAO,GAE5BC,IAAW,IAAItC,GAAW;AAChC,IAAAsC,EAAS,OAAO,OAAQ,CAAC,GACzBA,EAAS,OAAO,OAAQ,CAAC;AAEzB,QAAIC,IAAoB,MACpBC,IAAmB;AAIvB,SAAK,mBAAmB,IACxB,KAAK,UAAU,IAEf,KAAK,eAAe,IAEpB,KAAK,gBAAgB,SAAWhwD,GAAQ;AAEvC,UAAIiwD,IAAaT,EAAaxvD,CAAK;AAEnC,aAAKiwD,MAAe,WAEnBA,IAAa,IAAItC,GAAe,GAChC6B,EAAaxvD,CAAK,IAAKiwD,IAIjBA,EAAW,kBAAiB;AAAA,IAEpC,GAEA,KAAK,oBAAoB,SAAWjwD,GAAQ;AAE3C,UAAIiwD,IAAaT,EAAaxvD,CAAK;AAEnC,aAAKiwD,MAAe,WAEnBA,IAAa,IAAItC,GAAe,GAChC6B,EAAaxvD,CAAK,IAAKiwD,IAIjBA,EAAW,aAAY;AAAA,IAE/B,GAEA,KAAK,UAAU,SAAWjwD,GAAQ;AAEjC,UAAIiwD,IAAaT,EAAaxvD,CAAK;AAEnC,aAAKiwD,MAAe,WAEnBA,IAAa,IAAItC,GAAe,GAChC6B,EAAaxvD,CAAK,IAAKiwD,IAIjBA,EAAW,aAAY;AAAA,IAE/B;AAIA,aAASC,EAAgBjwD,GAAQ;AAEhC,YAAMkwD,IAAkBV,EAAuB,QAASxvD,EAAM,WAAW;AAEzE,UAAKkwD,MAAoB;AAExB;AAID,YAAMF,KAAaT,EAAaW,CAAe;AAE/C,MAAKF,OAAe,WAEnBA,GAAW,OAAQhwD,EAAM,aAAaA,EAAM,OAAO+uD,KAAwBjB,CAAc,GACzFkC,GAAW,cAAe,EAAE,MAAMhwD,EAAM,MAAM,MAAMA,EAAM,aAAa;AAAA,IAIzE;AAEA,aAASmwD,KAAe;AAEvB,MAAAxB,EAAQ,oBAAqB,UAAUsB,CAAc,GACrDtB,EAAQ,oBAAqB,eAAesB,CAAc,GAC1DtB,EAAQ,oBAAqB,aAAasB,CAAc,GACxDtB,EAAQ,oBAAqB,WAAWsB,CAAc,GACtDtB,EAAQ,oBAAqB,gBAAgBsB,CAAc,GAC3DtB,EAAQ,oBAAqB,cAAcsB,CAAc,GACzDtB,EAAQ,oBAAqB,OAAOwB,EAAY,GAChDxB,EAAQ,oBAAqB,sBAAsByB,CAAoB;AAEvE,eAAUlwD,IAAI,GAAGA,IAAIqvD,EAAY,QAAQrvD,KAAO;AAE/C,cAAMytD,IAAc6B,EAAwBtvD,CAAC;AAE7C,QAAKytD,MAAgB,SAErB6B,EAAwBtvD,CAAC,IAAK,MAE9BqvD,EAAarvD,CAAC,EAAG,WAAYytD,CAAW;AAAA,MAEzC;AAEA,MAAAmC,IAAoB,MACpBC,IAAmB,MAInB9lC,EAAS,gBAAiBolC,CAAmB,GAE7CF,IAAc,MACdD,IAAc,MACdD,IAAY,MACZN,IAAU,MACVW,IAAkB,MAIlBryC,GAAU,KAAI,GAEdoL,EAAM,eAAe,IAErB4B,EAAS,cAAeylC,CAAiB,GACzCzlC,EAAS,QAASwlC,EAAY,OAAOA,EAAY,QAAQ,EAAK,GAE9DpnC,EAAM,cAAe,EAAE,MAAM,aAAY,CAAE;AAAA,IAE5C;AAEA,SAAK,4BAA4B,SAAWxnB,GAAQ;AAEnD,MAAA+tD,IAAyB/tD,GAEpBwnB,EAAM,iBAAiB,MAE3B,QAAQ,KAAM,uEAAuE;AAAA,IAIvF,GAEA,KAAK,wBAAwB,SAAWxnB,GAAQ;AAE/C,MAAAguD,IAAqBhuD,GAEhBwnB,EAAM,iBAAiB,MAE3B,QAAQ,KAAM,0EAA0E;AAAA,IAI1F,GAEA,KAAK,oBAAoB,WAAY;AAEpC,aAAO0mC,KAAwBjB;AAAA,IAEhC,GAEA,KAAK,oBAAoB,SAAWuC,GAAQ;AAE3C,MAAAtB,IAAuBsB;AAAA,IAExB,GAEA,KAAK,eAAe,WAAY;AAE/B,aAAOnB,MAAgB,OAAOA,IAAcC;AAAA,IAE7C,GAEA,KAAK,aAAa,WAAY;AAE7B,aAAOF;AAAA,IAER,GAEA,KAAK,WAAW,WAAY;AAE3B,aAAOG;AAAA,IAER,GAEA,KAAK,aAAa,WAAY;AAE7B,aAAOT;AAAA,IAER,GAEA,KAAK,aAAa,eAAiB9tD,GAAQ;AAI1C,UAFA8tD,IAAU9tD,GAEL8tD,MAAY,MAAO;AAsBvB,YApBAU,IAAsBplC,EAAS,gBAAe,GAE9C0kC,EAAQ,iBAAkB,UAAUsB,CAAc,GAClDtB,EAAQ,iBAAkB,eAAesB,CAAc,GACvDtB,EAAQ,iBAAkB,aAAasB,CAAc,GACrDtB,EAAQ,iBAAkB,WAAWsB,CAAc,GACnDtB,EAAQ,iBAAkB,gBAAgBsB,CAAc,GACxDtB,EAAQ,iBAAkB,cAAcsB,CAAc,GACtDtB,EAAQ,iBAAkB,OAAOwB,EAAY,GAC7CxB,EAAQ,iBAAkB,sBAAsByB,CAAoB,GAE/DjtC,EAAW,iBAAiB,MAEhC,MAAMiM,EAAG,iBAAgB,GAI1BsgC,IAAoBzlC,EAAS,cAAa,GAC1CA,EAAS,QAASwlC,CAAW,GAEtBd,EAAQ,YAAY,WAAW,UAAiB1kC,EAAS,aAAa,aAAa,IAAU;AAEnG,gBAAMqmC,IAAY;AAAA,YACjB,WAAa3B,EAAQ,YAAY,WAAW,SAAcxrC,EAAW,YAAY;AAAA,YACjF,OAAO;AAAA,YACP,OAAOA,EAAW;AAAA,YAClB,SAASA,EAAW;AAAA,YACpB,wBAAwByrC;AAAA,UAC9B;AAEK,UAAAO,IAAc,IAAI,aAAcR,GAASv/B,GAAIkhC,CAAS,GAEtD3B,EAAQ,kBAAmB,EAAE,WAAWQ,EAAW,CAAE,GAErDllC,EAAS,cAAe,CAAC,GACzBA,EAAS,QAASklC,EAAY,kBAAkBA,EAAY,mBAAmB,EAAK,GAEpFG,IAAkB,IAAIvkD;AAAA,YACrBokD,EAAY;AAAA,YACZA,EAAY;AAAA,YACZ;AAAA,cACC,QAAQj0D;AAAA,cACR,MAAMZ;AAAA,cACN,YAAY2vB,EAAS;AAAA,cACrB,eAAe9G,EAAW;AAAA,YACjC;AAAA,UACA;AAAA,QAEI,OAAO;AAEN,cAAIotC,IAAc,MACdC,KAAY,MACZC,KAAgB;AAEpB,UAAKttC,EAAW,UAEfstC,KAAgBttC,EAAW,UAAUiM,EAAG,mBAAmBA,EAAG,mBAC9DmhC,IAAcptC,EAAW,UAAU7nB,KAAqBD,IACxDm1D,KAAYrtC,EAAW,UAAUnoB,KAAqBL;AAIvD,gBAAM+1D,KAAsB;AAAA,YAC3B,aAAathC,EAAG;AAAA,YAChB,aAAaqhC;AAAA,YACb,aAAa7B;AAAA,UACnB;AAEK,UAAAK,IAAY,IAAI,eAAgBN,GAASv/B,CAAE,GAE3C8/B,IAAcD,EAAU,sBAAuByB,EAAmB,GAElE/B,EAAQ,kBAAmB,EAAE,QAAQ,CAAEO,CAAW,EAAE,CAAE,GAEtDjlC,EAAS,cAAe,CAAC,GACzBA,EAAS,QAASilC,EAAY,cAAcA,EAAY,eAAe,EAAK,GAE5EI,IAAkB,IAAIvkD;AAAA,YACrBmkD,EAAY;AAAA,YACZA,EAAY;AAAA,YACZ;AAAA,cACC,QAAQh0D;AAAA,cACR,MAAMZ;AAAA,cACN,cAAc,IAAIsvC,GAAcslB,EAAY,cAAcA,EAAY,eAAesB,IAAW,QAAW,QAAW,QAAW,QAAW,QAAW,QAAWD,CAAW;AAAA,cAC7K,eAAeptC,EAAW;AAAA,cAC1B,YAAY8G,EAAS;AAAA,cACrB,SAAS9G,EAAW,YAAY,IAAI;AAAA,YAC3C;AAAA,UAAO;AAEF,gBAAMomC,KAAyBt/B,EAAS,WAAW,IAAKqlC,CAAe;AACvE,UAAA/F,GAAuB,sBAAsB2F,EAAY;AAAA,QAE1D;AAEA,QAAAI,EAAgB,mBAAmB,IAEnC,KAAK,aAAcR,CAAS,GAE5BC,IAAuB,MACvBjB,IAAiB,MAAMa,EAAQ,sBAAuBE,CAAkB,GAExE5xC,GAAU,WAAY0xC,CAAO,GAC7B1xC,GAAU,MAAK,GAEfoL,EAAM,eAAe,IAErBA,EAAM,cAAe,EAAE,MAAM,eAAc,CAAE;AAAA,MAE9C;AAAA,IAED,GAEA,KAAK,0BAA0B,WAAY;AAE1C,UAAKsmC,MAAY;AAEhB,eAAOA,EAAQ;AAAA,IAIjB;AAEA,aAASyB,EAAsBpwD,GAAQ;AAItC,eAAUE,IAAI,GAAGA,IAAIF,EAAM,QAAQ,QAAQE,KAAO;AAEjD,cAAMytD,KAAc3tD,EAAM,QAASE,CAAC,GAC9BH,KAAQyvD,EAAuB,QAAS7B,EAAW;AAEzD,QAAK5tD,MAAS,MAEbyvD,EAAwBzvD,EAAK,IAAK,MAClCwvD,EAAaxvD,EAAK,EAAG,WAAY4tD,EAAW;AAAA,MAI9C;AAIA,eAAUztD,IAAI,GAAGA,IAAIF,EAAM,MAAM,QAAQE,KAAO;AAE/C,cAAMytD,KAAc3tD,EAAM,MAAOE,CAAC;AAElC,YAAIgwD,KAAkBV,EAAuB,QAAS7B,EAAW;AAEjE,YAAKuC,OAAoB,IAAM;AAI9B,mBAAUhwD,KAAI,GAAGA,KAAIqvD,EAAY,QAAQrvD;AAExC,gBAAKA,MAAKsvD,EAAuB,QAAS;AAEzC,cAAAA,EAAuB,KAAM7B,EAAW,GACxCuC,KAAkBhwD;AAClB;AAAA,YAED,WAAYsvD,EAAwBtvD,EAAC,MAAO,MAAO;AAElD,cAAAsvD,EAAwBtvD,EAAC,IAAKytD,IAC9BuC,KAAkBhwD;AAClB;AAAA,YAED;AAMD,cAAKgwD,OAAoB,GAAM;AAAA,QAEhC;AAEA,cAAMF,KAAaT,EAAaW,EAAe;AAE/C,QAAKF,MAEJA,GAAW,QAASrC,EAAW;AAAA,MAIjC;AAAA,IAED;AAIA,UAAMgD,IAAa,IAAI7hD,EAAO,GACxB8hD,IAAa,IAAI9hD,EAAO;AAQ9B,aAAS+hD,EAAwBrhD,GAAQmgD,GAASC,IAAU;AAE3D,MAAAe,EAAW,sBAAuBhB,EAAQ,WAAW,GACrDiB,EAAW,sBAAuBhB,GAAQ,WAAW;AAErD,YAAMkB,KAAMH,EAAW,WAAYC,CAAU,GAEvCG,KAAQpB,EAAQ,iBAAiB,UACjCqB,KAAQpB,GAAQ,iBAAiB,UAKjCv1C,KAAO02C,GAAO,EAAE,KAAOA,GAAO,EAAE,IAAK,IACrCz2C,KAAMy2C,GAAO,EAAE,KAAOA,GAAO,EAAE,IAAK,IACpCE,MAAWF,GAAO,CAAC,IAAK,KAAMA,GAAO,CAAC,GACtCG,KAAcH,GAAO,CAAC,IAAK,KAAMA,GAAO,CAAC,GAEzCI,MAAYJ,GAAO,CAAC,IAAK,KAAMA,GAAO,CAAC,GACvCK,MAAaJ,GAAO,CAAC,IAAK,KAAMA,GAAO,CAAC,GACxC/2C,KAAOI,KAAO82C,IACdj3C,KAAQG,KAAO+2C,IAIfC,KAAUP,MAAQ,CAAEK,KAAUC,KAC9BE,KAAUD,KAAU,CAAEF;AAG5B,MAAAxB,EAAQ,YAAY,UAAWngD,EAAO,UAAUA,EAAO,YAAYA,EAAO,KAAK,GAC/EA,EAAO,WAAY8hD,EAAO,GAC1B9hD,EAAO,WAAY6hD,EAAO,GAC1B7hD,EAAO,YAAY,QAASA,EAAO,UAAUA,EAAO,YAAYA,EAAO,KAAK,GAC5EA,EAAO,mBAAmB,KAAMA,EAAO,WAAW,EAAG,OAAM;AAK3D,YAAM+hD,IAAQl3C,KAAOg3C,IACfG,IAAOl3C,KAAM+2C,IACbI,IAAQx3C,KAAOq3C,IACfI,IAASx3C,MAAU42C,KAAMQ,KACzBK,IAAOV,KAAS32C,KAAMk3C,IAAOD,GAC7BK,IAAUV,IAAY52C,KAAMk3C,IAAOD;AAEzC,MAAA/hD,EAAO,iBAAiB,gBAAiBiiD,GAAOC,GAAQC,GAAMC,GAASL,GAAOC,CAAI,GAClFhiD,EAAO,wBAAwB,KAAMA,EAAO,gBAAgB,EAAG,OAAM;AAAA,IAEtE;AAEA,aAASqiD,EAAcriD,GAAQ0M,GAAS;AAEvC,MAAKA,MAAW,OAEf1M,EAAO,YAAY,KAAMA,EAAO,MAAM,IAItCA,EAAO,YAAY,iBAAkB0M,EAAO,aAAa1M,EAAO,MAAM,GAIvEA,EAAO,mBAAmB,KAAMA,EAAO,WAAW,EAAG,OAAM;AAAA,IAE5D;AAEA,SAAK,eAAe,SAAWA,GAAS;AAEvC,UAAKm/C,MAAY,KAAO;AAExB,MAAAkB,EAAS,OAAOD,EAAQ,OAAOD,EAAQ,OAAOngD,EAAO,MACrDqgD,EAAS,MAAMD,EAAQ,MAAMD,EAAQ,MAAMngD,EAAO,MAE7CsgD,MAAsBD,EAAS,QAAQE,MAAqBF,EAAS,SAIzElB,EAAQ,kBAAmB;AAAA,QAC1B,WAAWkB,EAAS;AAAA,QACpB,UAAUA,EAAS;AAAA,MACxB,CAAK,GAEDC,IAAoBD,EAAS,MAC7BE,IAAmBF,EAAS;AAI7B,YAAM3zC,IAAS1M,EAAO,QAChBic,KAAUokC,EAAS;AAEzB,MAAAgC,EAAchC,GAAU3zC,CAAM;AAE9B,eAAUhc,KAAI,GAAGA,KAAIurB,GAAQ,QAAQvrB;AAEpC,QAAA2xD,EAAcpmC,GAASvrB,EAAC,GAAIgc,CAAM;AAMnC,MAAKuP,GAAQ,WAAW,IAEvBolC,EAAwBhB,GAAUF,GAASC,CAAO,IAMlDC,EAAS,iBAAiB,KAAMF,EAAQ,gBAAgB,GAMzDmC,EAAkBtiD,GAAQqgD,GAAU3zC,CAAM;AAAA,IAE3C;AAEA,aAAS41C,EAAkBtiD,GAAQqgD,GAAU3zC,IAAS;AAErD,MAAKA,OAAW,OAEf1M,EAAO,OAAO,KAAMqgD,EAAS,WAAW,KAIxCrgD,EAAO,OAAO,KAAM0M,GAAO,WAAW,GACtC1M,EAAO,OAAO,OAAM,GACpBA,EAAO,OAAO,SAAUqgD,EAAS,WAAW,IAI7CrgD,EAAO,OAAO,UAAWA,EAAO,UAAUA,EAAO,YAAYA,EAAO,KAAK,GACzEA,EAAO,kBAAmB,EAAI,GAE9BA,EAAO,iBAAiB,KAAMqgD,EAAS,gBAAgB,GACvDrgD,EAAO,wBAAwB,KAAMqgD,EAAS,uBAAuB,GAEhErgD,EAAO,wBAEXA,EAAO,MAAMlP,KAAU,IAAI,KAAK,KAAM,IAAIkP,EAAO,iBAAiB,SAAU,CAAC,CAAE,GAC/EA,EAAO,OAAO;AAAA,IAIhB;AAEA,SAAK,YAAY,WAAY;AAE5B,aAAOqgD;AAAA,IAER,GAEA,KAAK,eAAe,WAAY;AAE/B,UAAK,EAAAX,MAAgB,QAAQC,MAAgB;AAM7C,eAAOL;AAAA,IAER,GAEA,KAAK,eAAe,SAAWjuD,GAAQ;AAKtC,MAAAiuD,IAAYjuD,GAEPquD,MAAgB,SAEpBA,EAAY,iBAAiBruD,IAIzBsuD,MAAgB,QAAQA,EAAY,mBAAmB,WAE3DA,EAAY,iBAAiBtuD;AAAA,IAI/B;AAIA,QAAIkxD,IAA2B;AAE/B,aAAS/iC,EAAkBC,GAAMC,GAAQ;AAKxC,UAHA8/B,IAAO9/B,EAAM,cAAe6/B,KAAwBjB,CAAc,GAClEsB,IAAUlgC,GAEL8/B,MAAS,MAAO;AAEpB,cAAMgD,KAAQhD,EAAK;AAEnB,QAAKG,MAAgB,SAEpBllC,EAAS,2BAA4BqlC,GAAiBH,EAAY,WAAW,GAC7EllC,EAAS,gBAAiBqlC,CAAe;AAI1C,YAAI2C,KAAsB;AAI1B,QAAKD,GAAM,WAAWnC,EAAS,QAAQ,WAEtCA,EAAS,QAAQ,SAAS,GAC1BoC,KAAsB;AAIvB,iBAAU/xD,KAAI,GAAGA,KAAI8xD,GAAM,QAAQ9xD,MAAO;AAEzC,gBAAM6qB,KAAOinC,GAAO9xD,EAAC;AAErB,cAAI4+C,KAAW;AAEf,cAAKqQ,MAAgB;AAEpB,YAAArQ,KAAWqQ,EAAY,YAAapkC,EAAI;AAAA,eAElC;AAEN,kBAAMmnC,KAAajD,EAAU,gBAAiBC,GAAankC,EAAI;AAC/D,YAAA+zB,KAAWoT,GAAW,UAGjBhyD,OAAM,MAEV+pB,EAAS;AAAA,cACRqlC;AAAA,cACA4C,GAAW;AAAA,cACXhD,EAAY,oBAAoB,SAAYgD,GAAW;AAAA,YAAmB,GAE3EjoC,EAAS,gBAAiBqlC,CAAe;AAAA,UAI3C;AAEA,cAAI9/C,KAASic,EAASvrB,EAAC;AAEvB,UAAKsP,OAAW,WAEfA,KAAS,IAAIgb,GAAiB,GAC9Bhb,GAAO,OAAO,OAAQtP,EAAC,GACvBsP,GAAO,WAAW,IAAIjG,GAAO,GAC7BkiB,EAASvrB,EAAC,IAAKsP,KAIhBA,GAAO,OAAO,UAAWub,GAAK,UAAU,MAAM,GAC9Cvb,GAAO,OAAO,UAAWA,GAAO,UAAUA,GAAO,YAAYA,GAAO,KAAK,GACzEA,GAAO,iBAAiB,UAAWub,GAAK,gBAAgB,GACxDvb,GAAO,wBAAwB,KAAMA,GAAO,gBAAgB,EAAG,OAAM,GACrEA,GAAO,SAAS,IAAKsvC,GAAS,GAAGA,GAAS,GAAGA,GAAS,OAAOA,GAAS,MAAM,GAEvE5+C,OAAM,MAEV2vD,EAAS,OAAO,KAAMrgD,GAAO,MAAM,GACnCqgD,EAAS,OAAO,UAAWA,EAAS,UAAUA,EAAS,YAAYA,EAAS,KAAK,IAI7EoC,OAAwB,MAE5BpC,EAAS,QAAQ,KAAMrgD,EAAM;AAAA,QAI/B;AAAA,MAED;AAIA,eAAUtP,KAAI,GAAGA,KAAIqvD,EAAY,QAAQrvD,MAAO;AAE/C,cAAMytD,KAAc6B,EAAwBtvD,EAAC,GACvC8vD,KAAaT,EAAarvD,EAAC;AAEjC,QAAKytD,OAAgB,QAAQqC,OAAe,UAE3CA,GAAW,OAAQrC,IAAaz+B,GAAO6/B,KAAwBjB,CAAc;AAAA,MAI/E;AAEA,MAAKiE,KAA2BA,EAA0B9iC,GAAMC,CAAK,GAEhEA,EAAM,kBAEV7G,EAAM,cAAe,EAAE,MAAM,kBAAkB,MAAM6G,GAAO,GAI7DkgC,IAAU;AAAA,IAEX;AAEA,UAAMnyC,KAAY,IAAI2R,GAAc;AAEpC,IAAA3R,GAAU,iBAAkB+R,CAAgB,GAE5C,KAAK,mBAAmB,SAAWngB,GAAW;AAE7C,MAAAkjD,IAA2BljD;AAAA,IAE5B,GAEA,KAAK,UAAU,WAAY;AAAA,IAAC;AAAA,EAE7B;AAED;AAEA,SAASsjD,GAAgBloC,GAAU8V,GAAa;AAE/C,WAASqyB,EAAyBtZ,GAAKzY,GAAU;AAEhD,IAAKyY,EAAI,qBAAqB,MAE7BA,EAAI,aAAY,GAIjBzY,EAAQ,MAAM,KAAMyY,EAAI,MAAM;AAAA,EAE/B;AAEA,WAASuZ,EAAoBxoC,GAAUwrB,GAAM;AAE5C,IAAAA,EAAI,MAAM,OAAQxrB,EAAS,SAAS,OAAOG,GAA2BC,EAAU,GAE3EorB,EAAI,SAERxrB,EAAS,QAAQ,QAAQwrB,EAAI,MAC7BxrB,EAAS,OAAO,QAAQwrB,EAAI,OAEjBA,EAAI,cAEfxrB,EAAS,WAAW,QAAQwrB,EAAI;AAAA,EAIlC;AAEA,WAASid,EAAyBzoC,GAAU9C,GAAUwrC,GAAY3nD,GAAQ4nD,GAA2B;AAEpG,IAAKzrC,EAAS,uBAIFA,EAAS,wBAFpB0rC,EAAuB5oC,GAAU9C,CAAQ,IAM9BA,EAAS,sBAEpB0rC,EAAuB5oC,GAAU9C,CAAQ,GACzC2rC,EAAqB7oC,GAAU9C,CAAQ,KAE5BA,EAAS,uBAEpB0rC,EAAuB5oC,GAAU9C,CAAQ,GACzC4rC,EAAsB9oC,GAAU9C,CAAQ,KAE7BA,EAAS,0BAEpB0rC,EAAuB5oC,GAAU9C,CAAQ,GACzC6rC,EAAyB/oC,GAAU9C,CAAQ,GAEtCA,EAAS,0BAEb8rC,EAAyBhpC,GAAU9C,GAAUyrC,CAAwB,KAI3DzrC,EAAS,wBAEpB0rC,EAAuB5oC,GAAU9C,CAAQ,GACzC+rC,EAAuBjpC,GAAU9C,CAAQ,KAE9BA,EAAS,sBAEpB0rC,EAAuB5oC,GAAU9C,CAAQ,IAE9BA,EAAS,0BAEpB0rC,EAAuB5oC,GAAU9C,CAAQ,GACzCgsC,EAAyBlpC,GAAU9C,CAAQ,KAEhCA,EAAS,uBAEpB0rC,EAAuB5oC,GAAU9C,CAAQ,IAE9BA,EAAS,uBAEpBisC,EAAqBnpC,GAAU9C,CAAQ,GAElCA,EAAS,wBAEbksC,EAAqBppC,GAAU9C,CAAQ,KAI7BA,EAAS,mBAEpBmsC,EAAuBrpC,GAAU9C,GAAUwrC,GAAY3nD,CAAM,IAElDmc,EAAS,mBAEpBosC,EAAwBtpC,GAAU9C,CAAQ,IAE/BA,EAAS,oBAEpB8C,EAAS,MAAM,MAAM,KAAM9C,EAAS,KAAK,GACzC8C,EAAS,QAAQ,QAAQ9C,EAAS,WAEvBA,EAAS,qBAEpBA,EAAS,qBAAqB;AAAA,EAIhC;AAEA,WAAS0rC,EAAuB5oC,GAAU9C,GAAW;AAEpD,IAAA8C,EAAS,QAAQ,QAAQ9C,EAAS,SAE7BA,EAAS,SAEb8C,EAAS,QAAQ,MAAM,KAAM9C,EAAS,KAAK,GAIvCA,EAAS,YAEb8C,EAAS,SAAS,MAAM,KAAM9C,EAAS,UAAW,eAAgBA,EAAS,iBAAiB,GAIxFA,EAAS,QAEb8C,EAAS,IAAI,QAAQ9C,EAAS,KAE9BqrC,EAAyBrrC,EAAS,KAAK8C,EAAS,YAAY,IAIxD9C,EAAS,aAEb8C,EAAS,SAAS,QAAQ9C,EAAS,UAEnCqrC,EAAyBrrC,EAAS,UAAU8C,EAAS,iBAAiB,IAIlE9C,EAAS,YAEb8C,EAAS,QAAQ,QAAQ9C,EAAS,SAElCqrC,EAAyBrrC,EAAS,SAAS8C,EAAS,gBAAgB,GAEpEA,EAAS,UAAU,QAAQ9C,EAAS,WAE/BA,EAAS,SAAStwB,OAEtBozB,EAAS,UAAU,SAAS,MAMzB9C,EAAS,cAEb8C,EAAS,UAAU,QAAQ9C,EAAS,WAEpCqrC,EAAyBrrC,EAAS,WAAW8C,EAAS,kBAAkB,GAExEA,EAAS,YAAY,MAAM,KAAM9C,EAAS,WAAW,GAEhDA,EAAS,SAAStwB,MAEtBozB,EAAS,YAAY,MAAM,OAAM,IAM9B9C,EAAS,oBAEb8C,EAAS,gBAAgB,QAAQ9C,EAAS,iBAE1CqrC,EAAyBrrC,EAAS,iBAAiB8C,EAAS,wBAAwB,GAEpFA,EAAS,kBAAkB,QAAQ9C,EAAS,mBAC5C8C,EAAS,iBAAiB,QAAQ9C,EAAS,mBAIvCA,EAAS,gBAEb8C,EAAS,YAAY,QAAQ9C,EAAS,aAEtCqrC,EAAyBrrC,EAAS,aAAa8C,EAAS,oBAAoB,IAIxE9C,EAAS,gBAEb8C,EAAS,YAAY,QAAQ9C,EAAS,aAEtCqrC,EAAyBrrC,EAAS,aAAa8C,EAAS,oBAAoB,IAIxE9C,EAAS,YAAY,MAEzB8C,EAAS,UAAU,QAAQ9C,EAAS;AAIrC,UAAMwuB,IAASxV,EAAW,IAAKhZ,CAAQ,EAAG;AAc1C,QAZKwuB,MAEJ1rB,EAAS,OAAO,QAAQ0rB,GAExB1rB,EAAS,WAAW,QAAU0rB,EAAO,iBAAiBA,EAAO,0BAA0B,KAAU,KAAM,GAEvG1rB,EAAS,aAAa,QAAQ9C,EAAS,cACvC8C,EAAS,IAAI,QAAQ9C,EAAS,KAC9B8C,EAAS,gBAAgB,QAAQ9C,EAAS,kBAItCA,EAAS,UAAW;AAExB,MAAA8C,EAAS,SAAS,QAAQ9C,EAAS;AAGnC,YAAM80B,IAAgB5xB,EAAS,qBAAqB,KAAS,KAAK,KAAK;AAEvE,MAAAJ,EAAS,kBAAkB,QAAQ9C,EAAS,oBAAoB80B,GAEhEuW,EAAyBrrC,EAAS,UAAU8C,EAAS,iBAAiB;AAAA,IAEvE;AAEA,IAAK9C,EAAS,UAEb8C,EAAS,MAAM,QAAQ9C,EAAS,OAChC8C,EAAS,eAAe,QAAQ9C,EAAS,gBAEzCqrC,EAAyBrrC,EAAS,OAAO8C,EAAS,cAAc;AAAA,EAIlE;AAEA,WAASmpC,EAAqBnpC,GAAU9C,GAAW;AAElD,IAAA8C,EAAS,QAAQ,MAAM,KAAM9C,EAAS,KAAK,GAC3C8C,EAAS,QAAQ,QAAQ9C,EAAS,SAE7BA,EAAS,QAEb8C,EAAS,IAAI,QAAQ9C,EAAS,KAE9BqrC,EAAyBrrC,EAAS,KAAK8C,EAAS,YAAY;AAAA,EAI9D;AAEA,WAASopC,EAAqBppC,GAAU9C,GAAW;AAElD,IAAA8C,EAAS,SAAS,QAAQ9C,EAAS,UACnC8C,EAAS,UAAU,QAAQ9C,EAAS,WAAWA,EAAS,SACxD8C,EAAS,MAAM,QAAQ9C,EAAS;AAAA,EAEjC;AAEA,WAASmsC,EAAuBrpC,GAAU9C,GAAUwrC,GAAY3nD,GAAS;AAExE,IAAAif,EAAS,QAAQ,MAAM,KAAM9C,EAAS,KAAK,GAC3C8C,EAAS,QAAQ,QAAQ9C,EAAS,SAClC8C,EAAS,KAAK,QAAQ9C,EAAS,OAAOwrC,GACtC1oC,EAAS,MAAM,QAAQjf,IAAS,KAE3Bmc,EAAS,QAEb8C,EAAS,IAAI,QAAQ9C,EAAS,KAE9BqrC,EAAyBrrC,EAAS,KAAK8C,EAAS,WAAW,IAIvD9C,EAAS,aAEb8C,EAAS,SAAS,QAAQ9C,EAAS,UAEnCqrC,EAAyBrrC,EAAS,UAAU8C,EAAS,iBAAiB,IAIlE9C,EAAS,YAAY,MAEzB8C,EAAS,UAAU,QAAQ9C,EAAS;AAAA,EAItC;AAEA,WAASosC,EAAwBtpC,GAAU9C,GAAW;AAErD,IAAA8C,EAAS,QAAQ,MAAM,KAAM9C,EAAS,KAAK,GAC3C8C,EAAS,QAAQ,QAAQ9C,EAAS,SAClC8C,EAAS,SAAS,QAAQ9C,EAAS,UAE9BA,EAAS,QAEb8C,EAAS,IAAI,QAAQ9C,EAAS,KAE9BqrC,EAAyBrrC,EAAS,KAAK8C,EAAS,YAAY,IAIxD9C,EAAS,aAEb8C,EAAS,SAAS,QAAQ9C,EAAS,UAEnCqrC,EAAyBrrC,EAAS,UAAU8C,EAAS,iBAAiB,IAIlE9C,EAAS,YAAY,MAEzB8C,EAAS,UAAU,QAAQ9C,EAAS;AAAA,EAItC;AAEA,WAAS4rC,EAAsB9oC,GAAU9C,GAAW;AAEnD,IAAA8C,EAAS,SAAS,MAAM,KAAM9C,EAAS,QAAQ,GAC/C8C,EAAS,UAAU,QAAQ,KAAK,IAAK9C,EAAS,WAAW;EAE1D;AAEA,WAAS2rC,EAAqB7oC,GAAU9C,GAAW;AAElD,IAAKA,EAAS,gBAEb8C,EAAS,YAAY,QAAQ9C,EAAS;AAAA,EAIxC;AAEA,WAAS6rC,EAAyB/oC,GAAU9C,GAAW;AAEtD,IAAA8C,EAAS,UAAU,QAAQ9C,EAAS,WAE/BA,EAAS,iBAEb8C,EAAS,aAAa,QAAQ9C,EAAS,cAEvCqrC,EAAyBrrC,EAAS,cAAc8C,EAAS,qBAAqB,IAI/EA,EAAS,UAAU,QAAQ9C,EAAS,WAE/BA,EAAS,iBAEb8C,EAAS,aAAa,QAAQ9C,EAAS,cAEvCqrC,EAAyBrrC,EAAS,cAAc8C,EAAS,qBAAqB,IAIhEkW,EAAW,IAAKhZ,CAAQ,EAAG,WAKzC8C,EAAS,gBAAgB,QAAQ9C,EAAS;AAAA,EAI5C;AAEA,WAAS8rC,EAAyBhpC,GAAU9C,GAAUyrC,GAA2B;AAEhF,IAAA3oC,EAAS,IAAI,QAAQ9C,EAAS,KAEzBA,EAAS,QAAQ,MAErB8C,EAAS,WAAW,MAAM,KAAM9C,EAAS,YAAa,eAAgBA,EAAS,KAAK,GAEpF8C,EAAS,eAAe,QAAQ9C,EAAS,gBAEpCA,EAAS,kBAEb8C,EAAS,cAAc,QAAQ9C,EAAS,eAExCqrC,EAAyBrrC,EAAS,eAAe8C,EAAS,sBAAsB,IAI5E9C,EAAS,sBAEb8C,EAAS,kBAAkB,QAAQ9C,EAAS,mBAE5CqrC,EAAyBrrC,EAAS,mBAAmB8C,EAAS,0BAA0B,KAMrF9C,EAAS,YAAY,MAEzB8C,EAAS,UAAU,QAAQ9C,EAAS,WACpC8C,EAAS,mBAAmB,QAAQ9C,EAAS,oBAExCA,EAAS,iBAEb8C,EAAS,aAAa,QAAQ9C,EAAS,cAEvCqrC,EAAyBrrC,EAAS,cAAc8C,EAAS,qBAAqB,IAI1E9C,EAAS,0BAEb8C,EAAS,sBAAsB,QAAQ9C,EAAS,uBAEhDqrC,EAAyBrrC,EAAS,uBAAuB8C,EAAS,8BAA8B,IAI5F9C,EAAS,uBAEb8C,EAAS,mBAAmB,QAAQ9C,EAAS,oBAE7CqrC,EAAyBrrC,EAAS,oBAAoB8C,EAAS,2BAA2B,GAE1FA,EAAS,qBAAqB,MAAM,KAAM9C,EAAS,oBAAoB,GAElEA,EAAS,SAAStwB,MAEtBozB,EAAS,qBAAqB,MAAM,OAAM,KAQxC9C,EAAS,cAAc,MAE3B8C,EAAS,YAAY,QAAQ9C,EAAS,aACtC8C,EAAS,eAAe,QAAQ9C,EAAS,gBACzC8C,EAAS,4BAA4B,QAAQ9C,EAAS,0BAA2B,CAAC,GAClF8C,EAAS,4BAA4B,QAAQ9C,EAAS,0BAA2B,CAAC,GAE7EA,EAAS,mBAEb8C,EAAS,eAAe,QAAQ9C,EAAS,gBAEzCqrC,EAAyBrrC,EAAS,gBAAgB8C,EAAS,uBAAuB,IAI9E9C,EAAS,4BAEb8C,EAAS,wBAAwB,QAAQ9C,EAAS,yBAElDqrC,EAAyBrrC,EAAS,yBAAyB8C,EAAS,gCAAgC,KAMjG9C,EAAS,eAAe,MAE5B8C,EAAS,aAAa,QAAQ9C,EAAS,cACvC8C,EAAS,uBAAuB,QAAQ2oC,EAAyB,SACjE3oC,EAAS,wBAAwB,MAAM,IAAK2oC,EAAyB,OAAOA,EAAyB,MAAM,GAEtGzrC,EAAS,oBAEb8C,EAAS,gBAAgB,QAAQ9C,EAAS,iBAE1CqrC,EAAyBrrC,EAAS,iBAAiB8C,EAAS,wBAAwB,IAIrFA,EAAS,UAAU,QAAQ9C,EAAS,WAE/BA,EAAS,iBAEb8C,EAAS,aAAa,QAAQ9C,EAAS,cAEvCqrC,EAAyBrrC,EAAS,cAAc8C,EAAS,qBAAqB,IAI/EA,EAAS,oBAAoB,QAAQ9C,EAAS,qBAC9C8C,EAAS,iBAAiB,MAAM,KAAM9C,EAAS,gBAAgB,IAI3DA,EAAS,aAAa,MAE1B8C,EAAS,iBAAiB,MAAM,IAAK9C,EAAS,aAAa,KAAK,IAAKA,EAAS,kBAAkB,GAAIA,EAAS,aAAa,KAAK,IAAKA,EAAS,mBAAoB,GAE5JA,EAAS,kBAEb8C,EAAS,cAAc,QAAQ9C,EAAS,eAExCqrC,EAAyBrrC,EAAS,eAAe8C,EAAS,sBAAsB,KAMlFA,EAAS,kBAAkB,QAAQ9C,EAAS,mBAC5C8C,EAAS,cAAc,MAAM,KAAM9C,EAAS,aAAa,GAEpDA,EAAS,qBAEb8C,EAAS,iBAAiB,QAAQ9C,EAAS,kBAE3CqrC,EAAyBrrC,EAAS,kBAAkB8C,EAAS,yBAAyB,IAIlF9C,EAAS,yBAEb8C,EAAS,qBAAqB,QAAQ9C,EAAS,sBAE/CqrC,EAAyBrrC,EAAS,sBAAsB8C,EAAS,6BAA6B;AAAA,EAIhG;AAEA,WAASipC,EAAuBjpC,GAAU9C,GAAW;AAEpD,IAAKA,EAAS,WAEb8C,EAAS,OAAO,QAAQ9C,EAAS;AAAA,EAInC;AAEA,WAASgsC,EAAyBlpC,GAAU9C,GAAW;AAEtD,UAAMwzB,IAAQxa,EAAW,IAAKhZ,CAAQ,EAAG;AAEzC,IAAA8C,EAAS,kBAAkB,MAAM,sBAAuB0wB,EAAM,WAAW,GACzE1wB,EAAS,aAAa,QAAQ0wB,EAAM,OAAO,OAAO,MAClD1wB,EAAS,YAAY,QAAQ0wB,EAAM,OAAO,OAAO;AAAA,EAElD;AAEA,SAAO;AAAA,IACN,oBAAoB8X;AAAA,IACpB,yBAAyBC;AAAA,EAC3B;AAEA;AAEA,SAASc,GAAqBhkC,GAAI2O,GAAM1O,GAAcuK,GAAQ;AAE7D,MAAIrK,IAAU,CAAA,GACV8jC,IAAa,CAAA,GACbC,IAAyB,CAAA;AAE7B,QAAMC,IAAqBlkC,EAAa,WAAaD,EAAG,aAAcA,EAAG,2BAA2B,IAAK;AAEzG,WAASokC,EAAMtM,GAAe5rB,GAAU;AAEvC,UAAMm4B,IAAen4B,EAAQ;AAC7B,IAAA1B,EAAM,oBAAqBstB,GAAeuM,CAAY;AAAA,EAEvD;AAEA,WAAS/mD,EAAQw6C,GAAe5rB,GAAU;AAEzC,QAAI3L,IAASJ,EAAS23B,EAAc,EAAE;AAEtC,IAAKv3B,MAAW,WAEf+jC,EAAsBxM,CAAa,GAEnCv3B,IAASH,EAAc03B,CAAa,GACpC33B,EAAS23B,EAAc,EAAE,IAAKv3B,GAE9Bu3B,EAAc,iBAAkB,WAAWyM,CAAuB;AAMnE,UAAMF,IAAen4B,EAAQ;AAC7B,IAAA1B,EAAM,iBAAkBstB,GAAeuM,CAAY;AAInD,UAAMvkC,IAAQ6O,EAAK,OAAO;AAE1B,IAAKs1B,EAAYnM,EAAc,EAAE,MAAOh4B,MAEvC0kC,EAAkB1M,CAAa,GAE/BmM,EAAYnM,EAAc,EAAE,IAAKh4B;AAAA,EAInC;AAEA,WAASM,EAAc03B,GAAgB;AAItC,UAAM2M,IAAoBC,EAAyB;AACnD,IAAA5M,EAAc,sBAAsB2M;AAEpC,UAAMlkC,IAASP,EAAG,aAAY,GACxBxe,IAAOs2C,EAAc,QACrBx3B,IAAQw3B,EAAc;AAE5B,WAAA93B,EAAG,WAAYA,EAAG,gBAAgBO,CAAM,GACxCP,EAAG,WAAYA,EAAG,gBAAgBxe,GAAM8e,CAAK,GAC7CN,EAAG,WAAYA,EAAG,gBAAgB,IAAI,GACtCA,EAAG,eAAgBA,EAAG,gBAAgBykC,GAAmBlkC,CAAM,GAExDA;AAAA,EAER;AAEA,WAASmkC,IAA4B;AAEpC,aAAU5zD,IAAI,GAAGA,IAAIqzD,GAAkBrzD;AAEtC,UAAKozD,EAAuB,QAASpzD,CAAC,MAAO;AAE5C,eAAAozD,EAAuB,KAAMpzD,CAAC,GACvBA;AAMT,mBAAQ,MAAO,uFAAuF,GAE/F;AAAA,EAER;AAEA,WAAS0zD,EAAkB1M,GAAgB;AAE1C,UAAMv3B,IAASJ,EAAS23B,EAAc,EAAE,GAClCr9B,IAAWq9B,EAAc,UACzBxpC,IAAQwpC,EAAc;AAE5B,IAAA93B,EAAG,WAAYA,EAAG,gBAAgBO,CAAM;AAExC,aAAUzvB,IAAI,GAAGuQ,IAAKoZ,EAAS,QAAQ3pB,IAAIuQ,GAAIvQ,KAAO;AAErD,YAAM6zD,IAAe,MAAM,QAASlqC,EAAU3pB,CAAC,KAAO2pB,EAAU3pB,CAAC,IAAK,CAAE2pB,EAAU3pB,CAAC,CAAE;AAErF,eAAUwS,IAAI,GAAGwQ,IAAK6wC,EAAa,QAAQrhD,IAAIwQ,GAAIxQ,KAAO;AAEzD,cAAM2tB,IAAU0zB,EAAcrhD,CAAC;AAE/B,YAAKshD,EAAmB3zB,GAASngC,GAAGwS,GAAGgL,CAAK,MAAO,IAAO;AAEzD,gBAAM9a,IAASy9B,EAAQ,UAEjB1iB,KAAS,MAAM,QAAS0iB,EAAQ,SAAUA,EAAQ,QAAQ,CAAEA,EAAQ,KAAK;AAE/E,cAAI4zB,IAAc;AAElB,mBAAUxU,IAAI,GAAGA,IAAI9hC,GAAO,QAAQ8hC,KAAO;AAE1C,kBAAM5+C,IAAQ8c,GAAQ8hC,CAAC,GAEjB1hB,IAAOm2B,EAAgBrzD,CAAK;AAGlC,YAAK,OAAOA,KAAU,YAAY,OAAOA,KAAU,aAElDw/B,EAAQ,OAAQ,CAAC,IAAKx/B,GACtBuuB,EAAG,cAAeA,EAAG,gBAAgBxsB,IAASqxD,GAAa5zB,EAAQ,MAAM,KAE9Dx/B,EAAM,aAIjBw/B,EAAQ,OAAQ,CAAC,IAAKx/B,EAAM,SAAU,CAAC,GACvCw/B,EAAQ,OAAQ,CAAC,IAAKx/B,EAAM,SAAU,CAAC,GACvCw/B,EAAQ,OAAQ,CAAC,IAAKx/B,EAAM,SAAU,CAAC,GACvCw/B,EAAQ,OAAQ,CAAC,IAAK,GACtBA,EAAQ,OAAQ,CAAC,IAAKx/B,EAAM,SAAU,CAAC,GACvCw/B,EAAQ,OAAQ,CAAC,IAAKx/B,EAAM,SAAU,CAAC,GACvCw/B,EAAQ,OAAQ,CAAC,IAAKx/B,EAAM,SAAU,CAAC,GACvCw/B,EAAQ,OAAQ,CAAC,IAAK,GACtBA,EAAQ,OAAQ,CAAC,IAAKx/B,EAAM,SAAU,CAAC,GACvCw/B,EAAQ,OAAQ,CAAC,IAAKx/B,EAAM,SAAU,CAAC,GACvCw/B,EAAQ,OAAQ,EAAE,IAAKx/B,EAAM,SAAU,CAAC,GACxCw/B,EAAQ,OAAQ,EAAE,IAAK,MAIvBx/B,EAAM,QAASw/B,EAAQ,QAAQ4zB,CAAW,GAE1CA,KAAel2B,EAAK,UAAU,aAAa;AAAA,UAI7C;AAEA,UAAA3O,EAAG,cAAeA,EAAG,gBAAgBxsB,GAAQy9B,EAAQ,MAAM;AAAA,QAE5D;AAAA,MAED;AAAA,IAED;AAEA,IAAAjR,EAAG,WAAYA,EAAG,gBAAgB,IAAI;AAAA,EAEvC;AAEA,WAAS4kC,EAAmB3zB,GAAStgC,GAAOo0D,GAAYz2C,GAAQ;AAE/D,UAAM7c,IAAQw/B,EAAQ,OAChB+zB,IAAcr0D,IAAQ,MAAMo0D;AAElC,QAAKz2C,EAAO02C,CAAW,MAAO;AAI7B,aAAK,OAAOvzD,KAAU,YAAY,OAAOA,KAAU,YAElD6c,EAAO02C,CAAW,IAAKvzD,IAIvB6c,EAAO02C,CAAW,IAAKvzD,EAAM,MAAK,GAI5B;AAED;AAEN,YAAMwzD,IAAe32C,EAAO02C,CAAW;AAIvC,UAAK,OAAOvzD,KAAU,YAAY,OAAOA,KAAU;AAElD,YAAKwzD,MAAiBxzD;AAErB,iBAAA6c,EAAO02C,CAAW,IAAKvzD,GAChB;AAAA,iBAMHwzD,EAAa,OAAQxzD,CAAK,MAAO;AAErC,eAAAwzD,EAAa,KAAMxzD,CAAK,GACjB;AAAA,IAMV;AAEA,WAAO;AAAA,EAER;AAEA,WAAS6yD,EAAsBxM,GAAgB;AAK9C,UAAMr9B,IAAWq9B,EAAc;AAE/B,QAAItkD,IAAS;AACb,UAAM0xD,IAAY;AAElB,aAAUp0D,IAAI,GAAGC,IAAI0pB,EAAS,QAAQ3pB,IAAIC,GAAGD,KAAO;AAEnD,YAAM6zD,IAAe,MAAM,QAASlqC,EAAU3pB,CAAC,KAAO2pB,EAAU3pB,CAAC,IAAK,CAAE2pB,EAAU3pB,CAAC,CAAE;AAErF,eAAUwS,IAAI,GAAGwQ,IAAK6wC,EAAa,QAAQrhD,IAAIwQ,GAAIxQ,KAAO;AAEzD,cAAM2tB,IAAU0zB,EAAcrhD,CAAC,GAEzBiL,KAAS,MAAM,QAAS0iB,EAAQ,SAAUA,EAAQ,QAAQ,CAAEA,EAAQ,KAAK;AAE/E,iBAAUof,IAAI,GAAGC,IAAK/hC,GAAO,QAAQ8hC,IAAIC,GAAID,KAAO;AAEnD,gBAAM5+C,IAAQ8c,GAAQ8hC,CAAC,GAEjB1hB,IAAOm2B,EAAgBrzD,CAAK,GAG5B0zD,IAAqB3xD,IAAS0xD;AAGpC,UAAKC,MAAuB,KAAOD,IAAYC,IAAuBx2B,EAAK,aAG1En7B,KAAY0xD,IAAYC,IAMzBl0B,EAAQ,SAAS,IAAI,aAActC,EAAK,UAAU,aAAa,iBAAiB,GAChFsC,EAAQ,WAAWz9B,GAInBA,KAAUm7B,EAAK;AAAA,QAGhB;AAAA,MAED;AAAA,IAED;AAIA,UAAMy2B,IAAc5xD,IAAS0xD;AAE7B,WAAKE,IAAc,MAAI5xD,KAAY0xD,IAAYE,IAI/CtN,EAAc,SAAStkD,GACvBskD,EAAc,UAAU,CAAA,GAEjB;AAAA,EAER;AAEA,WAASgN,EAAgBrzD,GAAQ;AAEhC,UAAMk9B,IAAO;AAAA,MACZ,UAAU;AAAA;AAAA,MACV,SAAS;AAAA;AAAA,IACZ;AAIE,WAAK,OAAOl9B,KAAU,YAAY,OAAOA,KAAU,aAIlDk9B,EAAK,WAAW,GAChBA,EAAK,UAAU,KAEJl9B,EAAM,aAIjBk9B,EAAK,WAAW,GAChBA,EAAK,UAAU,KAEJl9B,EAAM,aAAaA,EAAM,WAIpCk9B,EAAK,WAAW,IAChBA,EAAK,UAAU,MAEJl9B,EAAM,aAIjBk9B,EAAK,WAAW,IAChBA,EAAK,UAAU,MAEJl9B,EAAM,aAIjBk9B,EAAK,WAAW,IAChBA,EAAK,UAAU,MAEJl9B,EAAM,aAIjBk9B,EAAK,WAAW,IAChBA,EAAK,UAAU,MAEJl9B,EAAM,YAEjB,QAAQ,KAAM,6EAA6E,IAI3F,QAAQ,KAAM,wDAAwDA,CAAK,GAIrEk9B;AAAA,EAER;AAEA,WAAS41B,EAAyB3zD,GAAQ;AAEzC,UAAMknD,IAAgBlnD,EAAM;AAE5B,IAAAknD,EAAc,oBAAqB,WAAWyM,CAAuB;AAErE,UAAM5zD,IAAQuzD,EAAuB,QAASpM,EAAc,mBAAmB;AAC/E,IAAAoM,EAAuB,OAAQvzD,GAAO,CAAC,GAEvCqvB,EAAG,aAAcG,EAAS23B,EAAc,EAAE,CAAE,GAE5C,OAAO33B,EAAS23B,EAAc,EAAE,GAChC,OAAOmM,EAAYnM,EAAc,EAAE;AAAA,EAEpC;AAEA,WAAS3pB,IAAU;AAElB,eAAYphB,KAAMoT;AAEjB,MAAAH,EAAG,aAAcG,EAASpT,EAAI;AAI/B,IAAAm3C,IAAyB,CAAA,GACzB/jC,IAAU,CAAA,GACV8jC,IAAa,CAAA;AAAA,EAEd;AAEA,SAAO;AAAA,IAEN,MAAMG;AAAA,IACN,QAAQ9mD;AAAA,IAER,SAAS6wB;AAAA,EAEX;AAEA;AAEA,MAAMk3B,GAAc;AAAA,EAEnB,YAAa53C,IAAa,IAAK;AAE9B,UAAM;AAAA,MACL,QAAAhW,IAASD,GAAmB;AAAA,MAC5B,SAAAqB,IAAU;AAAA,MACV,OAAA6C,IAAQ;AAAA,MACR,SAAAyhB,IAAU;AAAA,MACV,OAAA9pB,IAAQ;AAAA,MACR,WAAAiyD,IAAY;AAAA,MACZ,oBAAA56B,IAAqB;AAAA,MACrB,uBAAA66B,IAAwB;AAAA,MACxB,iBAAAC,IAAkB;AAAA,MAClB,8BAAAC,IAA+B;AAAA,IAClC,IAAMh4C;AAEJ,SAAK,kBAAkB;AAEvB,QAAIi4C;AAEJ,IAAK7sD,MAAY,OAEhB6sD,IAAS7sD,EAAQ,qBAAoB,EAAG,QAIxC6sD,IAASryD;AAIV,UAAMsyD,IAAiB,IAAI,YAAa,CAAC,GACnCC,IAAgB,IAAI,WAAY,CAAC;AAEvC,QAAIC,IAAoB,MACpBC,IAAqB;AAKzB,UAAMC,IAAkB,CAAA,GAClBC,IAAmB,CAAA;AAIzB,SAAK,aAAavuD,GAGlB,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,MAMZ,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKnB,eAAe;AAAA,IAClB,GAIE,KAAK,YAAY,IACjB,KAAK,iBAAiB,IACtB,KAAK,iBAAiB,IACtB,KAAK,mBAAmB,IAIxB,KAAK,cAAc,IAInB,KAAK,iBAAiB,CAAA,GACtB,KAAK,uBAAuB,IAI5B,KAAK,oBAAoB1I,IAIzB,KAAK,mBAAmB,IAIxB,KAAK,cAAcnF,IACnB,KAAK,sBAAsB;AAI3B,UAAMq8D,IAAQ;AAEd,QAAIC,IAAiB,IAIjBC,IAAyB,GACzBC,IAA4B,GAC5BC,IAAuB,MACvBC,IAAqB,IAErBC,IAAiB;AAErB,UAAMC,IAAmB,IAAIrsD,GAAO,GAC9BssD,IAAkB,IAAItsD,GAAO;AACnC,QAAIusD,IAAsB;AAE1B,UAAMC,KAAqB,IAAI31C,GAAO,CAAQ;AAC9C,QAAI41C,IAAqB,GAIrBC,IAASpvD,EAAO,OAChBqvD,IAAUrvD,EAAO,QAEjBsvD,IAAc,GACdC,IAAc,MACdC,IAAmB;AAEvB,UAAM1Y,IAAY,IAAIp0C,GAAS,GAAG,GAAG0sD,GAAQC,CAAO,GAC9CI,IAAW,IAAI/sD,GAAS,GAAG,GAAG0sD,GAAQC,CAAO;AACnD,QAAIK,KAAe;AAInB,UAAM/Y,IAAW,IAAInwB,GAAO;AAI5B,QAAImpC,IAAmB,IACnBC,KAAwB,IAIxBC,KAA4B;AAIhC,UAAMC,KAAoB,IAAIxgD,GAAO,GAE/BsW,KAAW,IAAI9qB,GAAO,GACtBi1D,KAAW,IAAI9nD,EAAO,GAEtB+nD,KAAc,EAAE,YAAY,MAAM,KAAK,MAAM,aAAa,MAAM,kBAAkB,MAAM,SAAS,GAAI;AAE3G,aAASC,KAAsB;AAE9B,aAAOrB,MAAyB,OAAOU,IAAc;AAAA,IAEtD;AAIA,QAAI7O,IAAMr/C;AAEV,aAAS8uD,GAAYC,GAAcC,GAAoB;AAEtD,eAAU/2D,IAAI,GAAGA,IAAI82D,EAAa,QAAQ92D,KAAO;AAEhD,cAAMg3D,IAAcF,EAAc92D,CAAC,GAC7B+H,IAAUpB,EAAO,WAAYqwD,GAAaD,CAAiB;AACjE,YAAKhvD,MAAY,KAAO,QAAOA;AAAA,MAEhC;AAEA,aAAO;AAAA,IAER;AAEA,QAAI;AAEH,YAAMgvD,IAAoB;AAAA,QACzB,OAAO;AAAA,QACP,OAAAnsD;AAAA,QACA,SAAAyhB;AAAA,QACA,WAAAmoC;AAAA,QACA,oBAAA56B;AAAA,QACA,uBAAA66B;AAAA,QACA,iBAAAC;AAAA,QACA,8BAAAC;AAAA,MACJ;AAUG,UAPK,kBAAkBhuD,KAASA,EAAO,aAAc,eAAe,aAAa9Q,EAAQ,EAAE,GAG3F8Q,EAAO,iBAAkB,oBAAoBswD,IAAe,EAAK,GACjEtwD,EAAO,iBAAkB,wBAAwBuwD,GAAkB,EAAK,GACxEvwD,EAAO,iBAAkB,6BAA6BwwD,IAAwB,EAAK,GAE9E/P,MAAQ,MAAO;AAEnB,cAAM0P,IAAe,CAAE,UAAU,SAAS,oBAAoB;AAU9D,YARK3B,EAAM,qBAAqB,MAE/B2B,EAAa,MAAK,GAInB1P,IAAMyP,GAAYC,GAAcC,CAAiB,GAE5C3P,MAAQ;AAEZ,gBAAKyP,GAAYC,KAEV,IAAI,MAAO,6DAA6D,IAIxE,IAAI,MAAO,+BAA+B;AAAA,MAMnD;AAEA,MAAK,OAAO,wBAA0B,OAAe1P,aAAe,yBAEnE,QAAQ,KAAM,0FAA0F,GAMpGA,EAAI,6BAA6B,WAErCA,EAAI,2BAA2B,WAAY;AAE1C,eAAO,EAAE,UAAY,GAAG,UAAY,GAAG,WAAa,EAAC;AAAA,MAEtD;AAAA,IAIF,SAAUhB,GAAQ;AAEjB,oBAAQ,MAAO,0BAA0BA,EAAM,OAAO,GAChDA;AAAA,IAEP;AAEA,QAAIh8B,IAAY+E,IAAcuK,IAAOmE,IACjCgC,IAAY1iB,GAAUqc,GAAUC,GAAYxW,GAAYjG,GAAY2c,GACpEy9B,IAAcl6C,IAAWm6C,IAAa1a,IAAcnI,IAAUqH,IAE9DthB,IAAY+8B,IAAcC,IAAgBC,IAE1CnQ,IAAOvsB,GAAe28B;AAE1B,aAASC,KAAgB;AAExB,MAAAttC,KAAa,IAAIsc,GAAiB0gB,CAAG,GAErCj4B,KAAe,IAAIqP,GAAmB4oB,GAAKh9B,IAAYzN,CAAU,GAEjEyN,GAAW,KAAM+E,EAAY,GAE7Bk4B,KAAQ,IAAI8F,GAAY/F,GAAKh9B,IAAY+E,EAAY,GAErDuK,KAAQ,IAAIimB,GAAYyH,GAAKh9B,IAAY+E,EAAY,GAErD0O,KAAO,IAAI2J,GAAW4f,CAAG,GACzBvnB,KAAa,IAAI8Y,GAAe,GAChCx7B,IAAW,IAAIgqC,GAAeC,GAAKh9B,IAAYsP,IAAOmG,IAAY1Q,IAAck4B,IAAOxpB,EAAI,GAC3FrE,IAAW,IAAI4H,GAAe+zB,CAAK,GACnC17B,IAAa,IAAI0M,GAAiBgvB,CAAK,GACvClyC,IAAa,IAAIgM,GAAiBm4B,GAAKj4B,EAAY,GACnD2L,IAAgB,IAAIJ,GAAoB0sB,GAAKh9B,IAAYnH,GAAYkM,EAAY,GACjFnS,IAAa,IAAI4pB,GAAiBwgB,GAAKnkC,GAAY4a,IAAM/C,CAAa,GACtEnB,IAAU,IAAIyP,GAAcge,GAAKpqC,GAAYiG,GAAY4a,EAAI,GAC7Dy5B,KAAe,IAAIzvB,GAAmBuf,GAAKj4B,IAAchS,CAAQ,GACjEq3B,KAAW,IAAI5U,GAAeC,EAAU,GACxCu3B,KAAe,IAAI7iB,GAAe4gB,GAAO37B,GAAUC,GAAYrP,IAAY+E,IAAc2L,GAAe0Z,EAAQ,GAChHt3B,KAAY,IAAI+0C,GAAgBkD,GAAOt1B,EAAU,GACjDw3B,KAAc,IAAItd,GAAgB,GAClC4C,KAAe,IAAID,GAAmBtyB,IAAY+E,EAAY,GAC9DoL,KAAa,IAAIhB,GAAiB47B,GAAO37B,GAAUC,GAAYC,IAAOC,GAASi7B,GAAQh7B,CAAkB,GACzGiiB,KAAY,IAAIqB,GAAgBiY,GAAOx7B,GAASxK,EAAY,GAC5DsoC,KAAiB,IAAIvE,GAAqB9L,GAAKvpB,IAAM1O,IAAcuK,EAAK,GAExE69B,KAAiB,IAAI35B,GAAqBwpB,GAAKh9B,IAAYyT,IAAM1O,EAAY,GAC7EqoC,KAAwB,IAAIlwB,GAA4B8f,GAAKh9B,IAAYyT,IAAM1O,EAAY,GAE3F0O,GAAK,WAAWu5B,GAAa,UAE7BjC,EAAM,eAAehmC,IACrBgmC,EAAM,aAAa/qC,IACnB+qC,EAAM,aAAat1B,IACnBs1B,EAAM,cAAckC,IACpBlC,EAAM,YAAYtZ,IAClBsZ,EAAM,QAAQz7B,IACdy7B,EAAM,OAAOt3B;AAAA,IAEd;AAEA,IAAA65B,GAAa;AAIb,UAAMC,KAAK,IAAInJ,GAAc2G,GAAO/N,CAAG;AAEvC,SAAK,KAAKuQ,IAIV,KAAK,aAAa,WAAY;AAE7B,aAAOvQ;AAAA,IAER,GAEA,KAAK,uBAAuB,WAAY;AAEvC,aAAOA,EAAI,qBAAoB;AAAA,IAEhC,GAEA,KAAK,mBAAmB,WAAY;AAEnC,YAAMxsB,IAAYxQ,GAAW,IAAK,oBAAoB;AACtD,MAAKwQ,KAAYA,EAAU,YAAW;AAAA,IAEvC,GAEA,KAAK,sBAAsB,WAAY;AAEtC,YAAMA,IAAYxQ,GAAW,IAAK,oBAAoB;AACtD,MAAKwQ,KAAYA,EAAU,eAAc;AAAA,IAE1C,GAEA,KAAK,gBAAgB,WAAY;AAEhC,aAAOq7B;AAAA,IAER,GAEA,KAAK,gBAAgB,SAAWt1D,GAAQ;AAEvC,MAAKA,MAAU,WAEfs1D,IAAct1D,GAEd,KAAK,QAASo1D,GAAQC,GAAS,EAAK;AAAA,IAErC,GAEA,KAAK,UAAU,SAAWjlD,GAAS;AAElC,aAAOA,EAAO,IAAKglD,GAAQC,CAAO;AAAA,IAEnC,GAEA,KAAK,UAAU,SAAWvrD,GAAOC,GAAQktD,IAAc,IAAO;AAE7D,UAAKD,GAAG,cAAe;AAEtB,gBAAQ,KAAM,uEAAwE;AACtF;AAAA,MAED;AAEA,MAAA5B,IAAStrD,GACTurD,IAAUtrD,GAEV/D,EAAO,QAAQ,KAAK,MAAO8D,IAAQwrD,CAAW,GAC9CtvD,EAAO,SAAS,KAAK,MAAO+D,IAASurD,CAAW,GAE3C2B,MAAgB,OAEpBjxD,EAAO,MAAM,QAAQ8D,IAAQ,MAC7B9D,EAAO,MAAM,SAAS+D,IAAS,OAIhC,KAAK,YAAa,GAAG,GAAGD,GAAOC,CAAM;AAAA,IAEtC,GAEA,KAAK,uBAAuB,SAAWqG,GAAS;AAE/C,aAAOA,EAAO,IAAKglD,IAASE,GAAaD,IAAUC,CAAW,EAAG,MAAK;AAAA,IAEvE,GAEA,KAAK,uBAAuB,SAAWxrD,GAAOC,GAAQ2nD,GAAa;AAElE,MAAA0D,IAAStrD,GACTurD,IAAUtrD,GAEVurD,IAAc5D,GAEd1rD,EAAO,QAAQ,KAAK,MAAO8D,IAAQ4nD,CAAU,GAC7C1rD,EAAO,SAAS,KAAK,MAAO+D,IAAS2nD,CAAU,GAE/C,KAAK,YAAa,GAAG,GAAG5nD,GAAOC,CAAM;AAAA,IAEtC,GAEA,KAAK,qBAAqB,SAAWqG,GAAS;AAE7C,aAAOA,EAAO,KAAM2kD,CAAgB;AAAA,IAErC,GAEA,KAAK,cAAc,SAAW3kD,GAAS;AAEtC,aAAOA,EAAO,KAAM0sC,CAAS;AAAA,IAE9B,GAEA,KAAK,cAAc,SAAWv8C,GAAGC,GAAGsJ,GAAOC,GAAS;AAEnD,MAAKxJ,EAAE,YAENu8C,EAAU,IAAKv8C,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,IAIjCu8C,EAAU,IAAKv8C,GAAGC,GAAGsJ,GAAOC,CAAM,GAInCgvB,GAAM,SAAUg8B,EAAiB,KAAMjY,CAAS,EAAG,eAAgBwY,GAAc,OAAO;AAAA,IAEzF,GAEA,KAAK,aAAa,SAAWllD,GAAS;AAErC,aAAOA,EAAO,KAAMqlD,CAAQ;AAAA,IAE7B,GAEA,KAAK,aAAa,SAAWl1D,GAAGC,GAAGsJ,GAAOC,GAAS;AAElD,MAAKxJ,EAAE,YAENk1D,EAAS,IAAKl1D,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,IAIhCk1D,EAAS,IAAKl1D,GAAGC,GAAGsJ,GAAOC,CAAM,GAIlCgvB,GAAM,QAASi8B,EAAgB,KAAMS,CAAQ,EAAG,eAAgBH,GAAc,OAAO;AAAA,IAEtF,GAEA,KAAK,iBAAiB,WAAY;AAEjC,aAAOI;AAAA,IAER,GAEA,KAAK,iBAAiB,SAAWwB,GAAU;AAE1C,MAAAn+B,GAAM,eAAgB28B,KAAewB,CAAO;AAAA,IAE7C,GAEA,KAAK,gBAAgB,SAAWC,GAAS;AAExC,MAAA5B,IAAc4B;AAAA,IAEf,GAEA,KAAK,qBAAqB,SAAWA,GAAS;AAE7C,MAAA3B,IAAmB2B;AAAA,IAEpB,GAIA,KAAK,gBAAgB,SAAW/mD,GAAS;AAExC,aAAOA,EAAO,KAAMwpB,GAAW,cAAa,CAAE;AAAA,IAE/C,GAEA,KAAK,gBAAgB,WAAY;AAEhC,MAAAA,GAAW,cAAc,MAAOA,IAAY,SAAS;AAAA,IAEtD,GAEA,KAAK,gBAAgB,WAAY;AAEhC,aAAOA,GAAW,cAAa;AAAA,IAEhC,GAEA,KAAK,gBAAgB,WAAY;AAEhC,MAAAA,GAAW,cAAc,MAAOA,IAAY,SAAS;AAAA,IAEtD,GAEA,KAAK,QAAQ,SAAWrzB,IAAQ,IAAM0D,IAAQ,IAAMyhB,IAAU,IAAO;AAEpE,UAAI0rC,IAAO;AAEX,UAAK7wD,GAAQ;AAGZ,YAAI8wD,IAAkB;AACtB,YAAKzC,MAAyB,MAAO;AAEpC,gBAAM0C,KAAe1C,EAAqB,QAAQ;AAClD,UAAAyC,IAAkBC,OAAiBx8D,MAClCw8D,OAAiBz8D,MACjBy8D,OAAiB38D;AAAA,QAEnB;AAIA,YAAK08D,GAAkB;AAEtB,gBAAME,KAAa3C,EAAqB,QAAQ,MAC1C4C,KAAiBD,OAAe99D,MACrC89D,OAAez9D,MACfy9D,OAAe39D,MACf29D,OAAep9D,MACfo9D,OAAet9D,MACfs9D,OAAer9D,IAEVg/B,KAAaU,GAAW,cAAa,GACrC14B,KAAI04B,GAAW,cAAa,GAC5B10B,KAAIg0B,GAAW,GACfz0B,KAAIy0B,GAAW,GACf/3B,KAAI+3B,GAAW;AAErB,UAAKs+B,MAEJtD,EAAgB,CAAC,IAAKhvD,IACtBgvD,EAAgB,CAAC,IAAKzvD,IACtByvD,EAAgB,CAAC,IAAK/yD,IACtB+yD,EAAgB,CAAC,IAAKhzD,IACtBulD,EAAI,eAAgBA,EAAI,OAAO,GAAGyN,CAAc,MAIhDC,EAAe,CAAC,IAAKjvD,IACrBivD,EAAe,CAAC,IAAK1vD,IACrB0vD,EAAe,CAAC,IAAKhzD,IACrBgzD,EAAe,CAAC,IAAKjzD,IACrBulD,EAAI,cAAeA,EAAI,OAAO,GAAG0N,CAAa;AAAA,QAIhD;AAEC,UAAAiD,KAAQ3Q,EAAI;AAAA,MAId;AAEA,MAAKx8C,MAAQmtD,KAAQ3Q,EAAI,mBACpB/6B,MAEJ0rC,KAAQ3Q,EAAI,oBACZ,KAAK,MAAM,QAAQ,QAAQ,QAAS,UAAU,IAI/CA,EAAI,MAAO2Q,CAAI;AAAA,IAEhB,GAEA,KAAK,aAAa,WAAY;AAE7B,WAAK,MAAO,IAAM,IAAO,EAAK;AAAA,IAE/B,GAEA,KAAK,aAAa,WAAY;AAE7B,WAAK,MAAO,IAAO,IAAM,EAAK;AAAA,IAE/B,GAEA,KAAK,eAAe,WAAY;AAE/B,WAAK,MAAO,IAAO,IAAO,EAAI;AAAA,IAE/B,GAIA,KAAK,UAAU,WAAY;AAE1B,MAAApxD,EAAO,oBAAqB,oBAAoBswD,IAAe,EAAK,GACpEtwD,EAAO,oBAAqB,wBAAwBuwD,GAAkB,EAAK,GAC3EvwD,EAAO,oBAAqB,6BAA6BwwD,IAAwB,EAAK,GAEtFE,GAAY,QAAO,GACnB1a,GAAa,QAAO,GACpB9c,GAAW,QAAO,GAClBrG,EAAS,QAAO,GAChBC,EAAW,QAAO,GAClBE,EAAQ,QAAO,GACfmB,EAAc,QAAO,GACrB28B,GAAe,QAAO,GACtBL,GAAa,QAAO,GAEpBO,GAAG,QAAO,GAEVA,GAAG,oBAAqB,gBAAgBS,EAAgB,GACxDT,GAAG,oBAAqB,cAAcU,EAAc,GAE/C7B,OAEJA,GAA0B,QAAO,GACjCA,KAA4B,OAI7Bz5C,GAAU,KAAI;AAAA,IAEf;AAIA,aAASk6C,GAAen3D,GAAQ;AAE/B,MAAAA,EAAM,eAAc,GAEpB,QAAQ,IAAK,oCAAoC,GAEjDs1D,IAAiB;AAAA,IAElB;AAEA,aAAS8B,IAAgC;AAExC,cAAQ,IAAK,wCAAwC,GAErD9B,IAAiB;AAEjB,YAAMkD,IAAgBz6B,GAAK,WACrB06B,IAAmB1c,GAAU,SAC7B2c,IAAsB3c,GAAU,YAChC4c,IAAuB5c,GAAU,aACjC6c,IAAgB7c,GAAU;AAEhC,MAAA6b,GAAa,GAEb75B,GAAK,YAAYy6B,GACjBzc,GAAU,UAAU0c,GACpB1c,GAAU,aAAa2c,GACvB3c,GAAU,cAAc4c,GACxB5c,GAAU,OAAO6c;AAAA,IAElB;AAEA,aAASvB,GAAwBr3D,GAAQ;AAExC,cAAQ,MAAO,uEAAuEA,EAAM,aAAa;AAAA,IAE1G;AAEA,aAASu/C,GAAmBv/C,GAAQ;AAEnC,YAAM+mB,IAAW/mB,EAAM;AAEvB,MAAA+mB,EAAS,oBAAqB,WAAWw4B,EAAiB,GAE1DsZ,GAAoB9xC,CAAQ;AAAA,IAE7B;AAIA,aAAS8xC,GAAoB9xC,GAAW;AAEvC,MAAA+xC,GAAkC/xC,CAAQ,GAE1CgZ,GAAW,OAAQhZ,CAAQ;AAAA,IAE5B;AAGA,aAAS+xC,GAAkC/xC,GAAW;AAErD,YAAM8tB,IAAW9U,GAAW,IAAKhZ,CAAQ,EAAG;AAE5C,MAAK8tB,MAAa,WAEjBA,EAAS,QAAS,SAAWvZ,GAAU;AAEtC,QAAAg8B,GAAa,eAAgBh8B,CAAO;AAAA,MAErC,CAAC,GAEIvU,EAAS,oBAEbuwC,GAAa,mBAAoBvwC,CAAQ;AAAA,IAM5C;AAIA,SAAK,qBAAqB,SAAWvX,GAAQkc,GAAOta,GAAU2V,GAAUjW,GAAQwT,IAAQ;AAEvF,MAAKoH,MAAU,SAAOA,IAAQmrC;AAE9B,YAAMzR,KAAgBt0C,EAAO,UAAUA,EAAO,YAAY,YAAW,IAAK,GAEpEwqB,KAAUy9B,GAAYvpD,GAAQkc,GAAOta,GAAU2V,GAAUjW,CAAM;AAErE,MAAA8oB,GAAM,YAAa7S,GAAUq+B,EAAW;AAIxC,UAAIrlD,KAAQqR,EAAS,OACjB4nD,KAAc;AAElB,UAAKjyC,EAAS,cAAc,IAAO;AAIlC,YAFAhnB,KAAQmd,EAAW,sBAAuB9L,CAAQ,GAE7CrR,OAAU,OAAY;AAE3B,QAAAi5D,KAAc;AAAA,MAEf;AAIA,YAAMtxC,KAAYtW,EAAS,WACrBiI,KAAWjI,EAAS,WAAW;AAErC,UAAI6nD,KAAYvxC,GAAU,QAAQsxC,IAC9BE,MAAYxxC,GAAU,QAAQA,GAAU,SAAUsxC;AAEtD,MAAK10C,OAAU,SAEd20C,KAAY,KAAK,IAAKA,IAAW30C,GAAM,QAAQ00C,EAAW,GAC1DE,KAAU,KAAK,IAAKA,KAAW50C,GAAM,QAAQA,GAAM,SAAU00C,EAAW,IAIpEj5D,OAAU,QAEdk5D,KAAY,KAAK,IAAKA,IAAW,CAAC,GAClCC,KAAU,KAAK,IAAKA,IAASn5D,GAAM,KAAK,KAEHsZ,MAAa,SAElD4/C,KAAY,KAAK,IAAKA,IAAW,CAAC,GAClCC,KAAU,KAAK,IAAKA,IAAS7/C,GAAS,KAAK;AAI5C,YAAMmlB,KAAY06B,KAAUD;AAE5B,UAAKz6B,KAAY,KAAKA,OAAc,MAAW;AAI/C,MAAAxD,EAAc,MAAOlqB,GAAQiW,GAAUuU,IAASlqB,GAAUrR,EAAK;AAE/D,UAAI8C,IACAonB,KAAWwtC;AAaf,UAXK13D,OAAU,SAEd8C,KAAYsgB,EAAW,IAAKpjB,EAAK,GAEjCkqB,KAAWytC,IACXztC,GAAS,SAAUpnB,EAAS,IAMxBiO,EAAO;AAEX,QAAKiW,EAAS,cAAc,MAE3B6S,GAAM,aAAc7S,EAAS,qBAAqB+vC,GAAmB,CAAE,GACvE7sC,GAAS,QAASq9B,EAAI,KAAK,KAI3Br9B,GAAS,QAASq9B,EAAI,SAAS;AAAA,eAIrBx2C,EAAO,QAAS;AAE3B,YAAIqoD,KAAYpyC,EAAS;AAEzB,QAAKoyC,OAAc,WAAYA,KAAY,IAE3Cv/B,GAAM,aAAcu/B,KAAYrC,IAAqB,GAEhDhmD,EAAO,iBAEXmZ,GAAS,QAASq9B,EAAI,KAAK,IAEhBx2C,EAAO,aAElBmZ,GAAS,QAASq9B,EAAI,SAAS,IAI/Br9B,GAAS,QAASq9B,EAAI,UAAU;AAAA,MAIlC,MAAO,CAAKx2C,EAAO,WAElBmZ,GAAS,QAASq9B,EAAI,MAAM,IAEjBx2C,EAAO,YAElBmZ,GAAS,QAASq9B,EAAI,SAAS;AAIhC,UAAKx2C,EAAO;AAEX,QAAAmZ,GAAS,gBAAiBnZ,EAAO,kBAAkBA,EAAO,kBAAkBA,EAAO,eAAe;AAAA,eAEvFA,EAAO;AAElB,QAAAmZ,GAAS,gBAAiBgvC,IAAWz6B,IAAW1tB,EAAO,KAAK;AAAA,eAEjDM,EAAS,2BAA4B;AAEhD,cAAMgoD,KAAmBhoD,EAAS,sBAAsB,SAAYA,EAAS,oBAAoB,OAC3Fw2B,KAAgB,KAAK,IAAKx2B,EAAS,eAAegoD,EAAgB;AAExE,QAAAnvC,GAAS,gBAAiBgvC,IAAWz6B,IAAWoJ,EAAa;AAAA,MAE9D;AAEC,QAAA3d,GAAS,OAAQgvC,IAAWz6B,EAAS;AAAA,IAIvC;AAIA,aAAS66B,GAAiBtyC,GAAU2E,GAAO5a,GAAS;AAEnD,MAAKiW,EAAS,gBAAgB,MAAQA,EAAS,SAASrwB,MAAcqwB,EAAS,oBAAoB,MAElGA,EAAS,OAAOtwB,IAChBswB,EAAS,cAAc,IACvBuyC,GAAYvyC,GAAU2E,GAAO5a,CAAM,GAEnCiW,EAAS,OAAOvwB,IAChBuwB,EAAS,cAAc,IACvBuyC,GAAYvyC,GAAU2E,GAAO5a,CAAM,GAEnCiW,EAAS,OAAOrwB,MAIhB4iE,GAAYvyC,GAAU2E,GAAO5a,CAAM;AAAA,IAIrC;AAEA,SAAK,UAAU,SAAW4a,GAAOlc,GAAQ+pD,IAAc,MAAO;AAE7D,MAAKA,MAAgB,SAAOA,IAAc7tC,IAE1CwpC,IAAqBrY,GAAa,IAAK0c,CAAW,GAClDrE,EAAmB,KAAI,GAEvBE,EAAiB,KAAMF,CAAkB,GAIzCqE,EAAY,gBAAiB,SAAWzoD,GAAS;AAEhD,QAAKA,EAAO,WAAWA,EAAO,OAAO,KAAMtB,EAAO,YAEjD0lD,EAAmB,UAAWpkD,CAAM,GAE/BA,EAAO,cAEXokD,EAAmB,WAAYpkD,CAAM;AAAA,MAMxC,CAAC,GAEI4a,MAAU6tC,KAEd7tC,EAAM,gBAAiB,SAAW5a,GAAS;AAE1C,QAAKA,EAAO,WAAWA,EAAO,OAAO,KAAMtB,EAAO,YAEjD0lD,EAAmB,UAAWpkD,CAAM,GAE/BA,EAAO,cAEXokD,EAAmB,WAAYpkD,CAAM;AAAA,MAMxC,CAAC,GAIFokD,EAAmB,YAAaG,EAAM,gBAAgB;AAItD,YAAMj4C,IAAY,oBAAI,IAAG;AAEzB,aAAAsO,EAAM,SAAU,SAAW5a,GAAS;AAEnC,cAAMiW,KAAWjW,EAAO;AAExB,YAAKiW;AAEJ,cAAK,MAAM,QAASA;AAEnB,qBAAU7mB,KAAI,GAAGA,KAAI6mB,GAAS,QAAQ7mB,MAAO;AAE5C,oBAAMs5D,KAAYzyC,GAAU7mB,EAAC;AAE7B,cAAAm5D,GAAiBG,IAAWD,GAAazoD,CAAM,GAC/CsM,EAAU,IAAKo8C,EAAS;AAAA,YAEzB;AAAA;AAIA,YAAAH,GAAiBtyC,IAAUwyC,GAAazoD,CAAM,GAC9CsM,EAAU,IAAK2J,EAAQ;AAAA,MAM1B,CAAC,GAEDquC,EAAiB,IAAG,GACpBF,IAAqB,MAEd93C;AAAA,IAER,GAIA,KAAK,eAAe,SAAWsO,GAAOlc,GAAQ+pD,IAAc,MAAO;AAElE,YAAMn8C,IAAY,KAAK,QAASsO,GAAOlc,GAAQ+pD,CAAW;AAK1D,aAAO,IAAI,QAAS,CAAEE,MAAa;AAElC,iBAASC,KAAsB;AAkB9B,cAhBAt8C,EAAU,QAAS,SAAW2J,IAAW;AAKxC,YAH2BgZ,GAAW,IAAKhZ,EAAQ,EAChB,eAEtB,aAGZ3J,EAAU,OAAQ2J,EAAQ;AAAA,UAI5B,CAAC,GAII3J,EAAU,SAAS,GAAI;AAE3B,YAAAq8C,EAAS/tC,CAAK;AACd;AAAA,UAED;AAIA,qBAAYguC,IAAqB,EAAE;AAAA,QAEpC;AAEA,QAAKpvC,GAAW,IAAK,6BAA6B,MAAO,OAKxDovC,GAAmB,IAOnB,WAAYA,IAAqB,EAAE;AAAA,MAIrC,CAAC;AAAA,IAEF;AAIA,QAAI3H,KAA2B;AAE/B,aAAS/iC,GAAkBC,GAAO;AAEjC,MAAK8iC,MAA2BA,GAA0B9iC,CAAI;AAAA,IAE/D;AAEA,aAASqpC,KAAmB;AAE3B,MAAAr7C,GAAU,KAAI;AAAA,IAEf;AAEA,aAASs7C,KAAiB;AAEzB,MAAAt7C,GAAU,MAAK;AAAA,IAEhB;AAEA,UAAMA,KAAY,IAAI2R,GAAc;AACpC,IAAA3R,GAAU,iBAAkB+R,EAAgB,GAEvC,OAAO,OAAS,OAAc/R,GAAU,WAAY,IAAI,GAE7D,KAAK,mBAAmB,SAAWpO,GAAW;AAE7C,MAAAkjD,KAA2BljD,GAC3BgpD,GAAG,iBAAkBhpD,CAAQ,GAE3BA,MAAa,OAASoO,GAAU,KAAI,IAAKA,GAAU,MAAK;AAAA,IAE3D,GAEA46C,GAAG,iBAAkB,gBAAgBS,EAAgB,GACrDT,GAAG,iBAAkB,cAAcU,EAAc,GAIjD,KAAK,SAAS,SAAW7sC,GAAOlc,GAAS;AAExC,UAAKA,MAAW,UAAaA,EAAO,aAAa,IAAO;AAEvD,gBAAQ,MAAO,wEAAwE;AACvF;AAAA,MAED;AAEA,UAAK8lD,MAAmB,GAAO;AAI/B,MAAK5pC,EAAM,0BAA0B,MAAOA,EAAM,kBAAiB,GAI9Dlc,EAAO,WAAW,QAAQA,EAAO,0BAA0B,MAAOA,EAAO,kBAAiB,GAE1FqoD,GAAG,YAAY,MAAQA,GAAG,iBAAiB,OAE1CA,GAAG,qBAAqB,MAAOA,GAAG,aAAcroD,CAAM,GAE3DA,IAASqoD,GAAG,cAKRnsC,EAAM,YAAY,MAAOA,EAAM,eAAgB2pC,GAAO3pC,GAAOlc,GAAQimD,CAAoB,GAE9FP,IAAqBrY,GAAa,IAAKnxB,GAAO0pC,EAAiB,MAAM,GACrEF,EAAmB,KAAI,GAEvBE,EAAiB,KAAMF,CAAkB,GAEzCyB,GAAkB,iBAAkBnnD,EAAO,kBAAkBA,EAAO,kBAAkB,GACtFguC,EAAS,wBAAyBmZ,EAAiB,GAEnDF,KAAwB,KAAK,sBAC7BD,IAAmB9hB,GAAS,KAAM,KAAK,gBAAgB+hB,EAAqB,GAE5ExB,IAAoBsC,GAAY,IAAK7rC,GAAOypC,EAAgB,MAAM,GAClEF,EAAkB,KAAI,GAEtBE,EAAgB,KAAMF,CAAiB,GAEvC0E,GAAejuC,GAAOlc,GAAQ,GAAG6lD,EAAM,WAAW,GAElDJ,EAAkB,OAAM,GAEnBI,EAAM,gBAAgB,MAE1BJ,EAAkB,KAAMmB,GAAaC,CAAgB,GAMtD,KAAK,KAAK,OAAO,SAEZG,MAAqB,MAAO9hB,GAAS,aAAY;AAEtD,YAAM4H,IAAe4Y,EAAmB,MAAM;AAmB9C,UAjBAnZ,GAAU,OAAQO,GAAc5wB,GAAOlc,CAAM,GAExCgnD,MAAqB,MAAO9hB,GAAS,WAAU,GAI/C,KAAK,KAAK,cAAc,MAAO,KAAK,KAAK,MAAK,GAKnDja,GAAW,OAAQw6B,GAAmBvpC,CAAK,GAI3CwpC,EAAmB,YAAaG,EAAM,gBAAgB,GAEjD7lD,EAAO,eAAgB;AAE3B,cAAMic,IAAUjc,EAAO;AAEvB,iBAAUtP,IAAI,GAAGC,KAAIsrB,EAAQ,QAAQvrB,IAAIC,IAAGD,KAAO;AAElD,gBAAM05D,KAAUnuC,EAASvrB,CAAC;AAE1B,UAAA25D,GAAa5E,GAAmBvpC,GAAOkuC,IAASA,GAAQ,QAAQ;AAAA,QAEjE;AAAA,MAED;AAEC,QAAAC,GAAa5E,GAAmBvpC,GAAOlc,CAAM;AAM9C,MAAKimD,MAAyB,SAI7Bp4C,EAAS,8BAA+Bo4C,CAAoB,GAI5Dp4C,EAAS,yBAA0Bo4C,CAAoB,IAMnD/pC,EAAM,YAAY,MAAOA,EAAM,cAAe2pC,GAAO3pC,GAAOlc,CAAM,GAIvEwrB,EAAc,kBAAiB,GAC/B06B,IAAqB,IACrBC,IAAiB,MAEjBP,EAAiB,IAAG,GAEfA,EAAiB,SAAS,IAE9BF,IAAqBE,EAAkBA,EAAiB,SAAS,CAAC,IAIlEF,IAAqB,MAItBC,EAAgB,IAAG,GAEdA,EAAgB,SAAS,IAE7BF,IAAoBE,EAAiBA,EAAgB,SAAS,CAAC,IAI/DF,IAAoB;AAAA,IAItB;AAEA,aAAS0E,GAAe7oD,GAAQtB,GAAQiqC,GAAYqgB,GAAc;AAEjE,UAAKhpD,EAAO,YAAY,GAAQ;AAIhC,UAFgBA,EAAO,OAAO,KAAMtB,EAAO,MAAM;AAIhD,YAAKsB,EAAO;AAEX,UAAA2oC,IAAa3oC,EAAO;AAAA,iBAETA,EAAO;AAElB,UAAKA,EAAO,eAAe,MAAOA,EAAO,OAAQtB,CAAM;AAAA,iBAE5CsB,EAAO;AAElB,UAAAokD,EAAmB,UAAWpkD,CAAM,GAE/BA,EAAO,cAEXokD,EAAmB,WAAYpkD,CAAM;AAAA,iBAI3BA,EAAO;AAElB,cAAK,CAAEA,EAAO,iBAAiB0sC,EAAS,iBAAkB1sC,CAAM,GAAK;AAEpE,YAAKgpD,KAEJlD,GAAS,sBAAuB9lD,EAAO,WAAW,EAChD,aAAc6lD,EAAiB;AAIlC,kBAAMvlD,KAAWyoB,EAAQ,OAAQ/oB,CAAM,GACjCiW,KAAWjW,EAAO;AAExB,YAAKiW,GAAS,WAEbkuC,EAAkB,KAAMnkD,GAAQM,IAAU2V,IAAU0yB,GAAYmd,GAAS,GAAG,IAAI;AAAA,UAIlF;AAAA,oBAEW9lD,EAAO,UAAUA,EAAO,UAAUA,EAAO,cAE/C,CAAEA,EAAO,iBAAiB0sC,EAAS,iBAAkB1sC,CAAM,IAAK;AAEpE,gBAAMM,KAAWyoB,EAAQ,OAAQ/oB,CAAM,GACjCiW,KAAWjW,EAAO;AAsBxB,cApBKgpD,MAEChpD,EAAO,mBAAmB,UAEzBA,EAAO,mBAAmB,QAAOA,EAAO,sBAAqB,GAClE8lD,GAAS,KAAM9lD,EAAO,eAAe,MAAM,MAItCM,GAAS,mBAAmB,QAAOA,GAAS,sBAAqB,GACtEwlD,GAAS,KAAMxlD,GAAS,eAAe,MAAM,IAI9CwlD,GACE,aAAc9lD,EAAO,WAAW,EAChC,aAAc6lD,EAAiB,IAI7B,MAAM,QAAS5vC,KAAa;AAEhC,kBAAM1C,KAASjT,GAAS;AAExB,qBAAUlR,KAAI,GAAGC,KAAIkkB,GAAO,QAAQnkB,KAAIC,IAAGD,MAAO;AAEjD,oBAAMokB,KAAQD,GAAQnkB,EAAC,GACjBynB,KAAgBZ,GAAUzC,GAAM,aAAa;AAEnD,cAAKqD,MAAiBA,GAAc,WAEnCstC,EAAkB,KAAMnkD,GAAQM,IAAUuW,IAAe8xB,GAAYmd,GAAS,GAAGtyC,EAAK;AAAA,YAIxF;AAAA,UAED,MAAO,CAAKyC,GAAS,WAEpBkuC,EAAkB,KAAMnkD,GAAQM,IAAU2V,IAAU0yB,GAAYmd,GAAS,GAAG,IAAI;AAAA,QAIlF;AAAA;AAMF,YAAMrlD,KAAWT,EAAO;AAExB,eAAU5Q,KAAI,GAAGC,KAAIoR,GAAS,QAAQrR,KAAIC,IAAGD;AAE5C,QAAAy5D,GAAepoD,GAAUrR,EAAC,GAAIsP,GAAQiqC,GAAYqgB,CAAW;AAAA,IAI/D;AAEA,aAASD,GAAa5E,GAAmBvpC,GAAOlc,GAAQsvC,GAAW;AAElE,YAAMib,IAAgB9E,EAAkB,QAClC+E,KAAsB/E,EAAkB,cACxCgF,KAAqBhF,EAAkB;AAE7C,MAAAC,EAAmB,gBAAiB1lD,CAAM,GAErCgnD,MAAqB,MAAO9hB,GAAS,eAAgB2gB,EAAM,gBAAgB7lD,CAAM,GAEjFwqD,GAAoB,SAAS,KAAIE,GAAwBH,GAAeC,IAAqBtuC,GAAOlc,CAAM,GAE1GsvC,KAAWllB,GAAM,SAAUg8B,EAAiB,KAAM9W,EAAU,GAE5Dib,EAAc,SAAS,KAAII,GAAeJ,GAAeruC,GAAOlc,CAAM,GACtEwqD,GAAoB,SAAS,KAAIG,GAAeH,IAAqBtuC,GAAOlc,CAAM,GAClFyqD,GAAmB,SAAS,KAAIE,GAAeF,IAAoBvuC,GAAOlc,CAAM,GAIrFoqB,GAAM,QAAQ,MAAM,QAAS,EAAI,GACjCA,GAAM,QAAQ,MAAM,QAAS,EAAI,GACjCA,GAAM,QAAQ,MAAM,QAAS,EAAI,GAEjCA,GAAM,iBAAkB,EAAK;AAAA,IAE9B;AAEA,aAASsgC,GAAwBH,GAAeC,GAAqBtuC,GAAOlc,GAAS;AAIpF,WAFyBkc,EAAM,YAAY,KAAOA,EAAM,mBAAmB,UAEjD;AAEzB;AAID,YAAM4D,KAAWD,GAAa;AAE9B,MAAKqnC,OAA8B,SAElCA,KAA4B,IAAI3rD,GAAmB,GAAG,GAAG;AAAA,QACxD,iBAAiB;AAAA,QACjB,MAAMuf,GAAW,IAAK,6BAA6B,IAAKzvB,KAAgBP;AAAA,QACxE,WAAWD;AAAA,QACX,SAAWi1B,KAAa,IAAI;AAAA,MACjC,CAAK,IAcF+lC,EAAM,qBAAsB5oC,EAAQ,GAE/B6C,KAEJonC,GAA0B,QAASjqC,GAAS,GAAGA,GAAS,CAAC,IAIzDiqC,GAA0B,QAASn1D,GAAiBkrB,GAAS,CAAC,GAAIlrB,GAAiBkrB,GAAS,EAAG;AAMhG,YAAMb,KAAsBypC,EAAM,gBAAe;AACjD,MAAAA,EAAM,gBAAiBqB,EAAyB,GAEhDrB,EAAM,cAAeU,EAAkB,GACvCC,IAAqBX,EAAM,cAAa,GACnCW,IAAqB,KAAIX,EAAM,cAAe,UAAU,GAAG,GAEhEA,EAAM,MAAK;AAIX,YAAM+E,KAAqB/E,EAAM;AACjC,MAAAA,EAAM,cAAcr8D,IAEpBmhE,GAAeJ,GAAeruC,GAAOlc,CAAM,GAE3C6N,EAAS,8BAA+Bq5C,EAAyB,GACjEr5C,EAAS,yBAA0Bq5C,EAAyB;AAE5D,UAAI2D,KAA0B;AAE9B,eAAUn6D,KAAI,GAAGC,KAAI65D,EAAoB,QAAQ95D,KAAIC,IAAGD,MAAO;AAE9D,cAAMw5C,KAAasgB,EAAqB95D,EAAC,GAEnC4Q,KAAS4oC,GAAW,QACpBtoC,KAAWsoC,GAAW,UACtB3yB,KAAW2yB,GAAW,UACtBp1B,KAAQo1B,GAAW;AAEzB,YAAK3yB,GAAS,SAASrwB,MAAcoa,GAAO,OAAO,KAAMtB,EAAO,SAAW;AAE1E,gBAAM8qD,KAAcvzC,GAAS;AAE7B,UAAAA,GAAS,OAAOtwB,IAChBswB,GAAS,cAAc,IAEvBg4B,GAAcjuC,IAAQ4a,GAAOlc,GAAQ4B,IAAU2V,IAAUzC,EAAK,GAE9DyC,GAAS,OAAOuzC,IAChBvzC,GAAS,cAAc,IAEvBszC,KAA0B;AAAA,QAE3B;AAAA,MAED;AAEA,MAAKA,OAA4B,OAEhCh9C,EAAS,8BAA+Bq5C,EAAyB,GACjEr5C,EAAS,yBAA0Bq5C,EAAyB,IAI7DrB,EAAM,gBAAiBzpC,EAAmB,GAE1CypC,EAAM,cAAeU,IAAoBC,CAAkB,GAE3DX,EAAM,cAAc+E;AAAA,IAErB;AAEA,aAASD,GAAe5/B,GAAY7O,GAAOlc,GAAS;AAEnD,YAAM+qD,IAAmB7uC,EAAM,YAAY,KAAOA,EAAM,mBAAmB;AAE3E,eAAUxrB,IAAI,GAAGC,KAAIo6B,EAAW,QAAQr6B,IAAIC,IAAGD,KAAO;AAErD,cAAMw5C,KAAanf,EAAYr6B,CAAC,GAE1B4Q,KAAS4oC,GAAW,QACpBtoC,KAAWsoC,GAAW,UACtB3yB,KAAWwzC,MAAqB,OAAO7gB,GAAW,WAAW6gB,GAC7Dj2C,KAAQo1B,GAAW;AAEzB,QAAK5oC,GAAO,OAAO,KAAMtB,EAAO,MAAM,KAErCuvC,GAAcjuC,IAAQ4a,GAAOlc,GAAQ4B,IAAU2V,IAAUzC,EAAK;AAAA,MAIhE;AAAA,IAED;AAEA,aAASy6B,GAAcjuC,GAAQ4a,GAAOlc,GAAQ4B,GAAU2V,GAAUzC,IAAQ;AAEzE,MAAAxT,EAAO,eAAgBukD,GAAO3pC,GAAOlc,GAAQ4B,GAAU2V,GAAUzC,EAAK,GAEtExT,EAAO,gBAAgB,iBAAkBtB,EAAO,oBAAoBsB,EAAO,WAAW,GACtFA,EAAO,aAAa,gBAAiBA,EAAO,eAAe,GAE3DiW,EAAS,eAAgBsuC,GAAO3pC,GAAOlc,GAAQ4B,GAAUN,GAAQwT,EAAK,GAEjEyC,EAAS,gBAAgB,MAAQA,EAAS,SAASrwB,MAAcqwB,EAAS,oBAAoB,MAElGA,EAAS,OAAOtwB,IAChBswB,EAAS,cAAc,IACvBsuC,EAAM,mBAAoB7lD,GAAQkc,GAAOta,GAAU2V,GAAUjW,GAAQwT,EAAK,GAE1EyC,EAAS,OAAOvwB,IAChBuwB,EAAS,cAAc,IACvBsuC,EAAM,mBAAoB7lD,GAAQkc,GAAOta,GAAU2V,GAAUjW,GAAQwT,EAAK,GAE1EyC,EAAS,OAAOrwB,MAIhB2+D,EAAM,mBAAoB7lD,GAAQkc,GAAOta,GAAU2V,GAAUjW,GAAQwT,EAAK,GAI3ExT,EAAO,cAAeukD,GAAO3pC,GAAOlc,GAAQ4B,GAAU2V,GAAUzC,EAAK;AAAA,IAEtE;AAEA,aAASg1C,GAAYvyC,GAAU2E,GAAO5a,GAAS;AAE9C,MAAK4a,EAAM,YAAY,OAAOA,IAAQmrC;AAEtC,YAAMj2B,IAAqBb,GAAW,IAAKhZ,CAAQ,GAE7CouB,IAAS+f,EAAmB,MAAM,QAClC5Y,KAAe4Y,EAAmB,MAAM,cAExCsF,KAAqBrlB,EAAO,MAAM,SAElCt4B,KAAay6C,GAAa,cAAevwC,GAAUouB,EAAO,OAAOmH,IAAc5wB,GAAO5a,CAAM,GAC5F2pD,KAAkBnD,GAAa,mBAAoBz6C,EAAU;AAEnE,UAAIg4B,KAAWjU,EAAmB;AAIlC,MAAAA,EAAmB,cAAc7Z,EAAS,yBAAyB2E,EAAM,cAAc,MACvFkV,EAAmB,MAAMlV,EAAM,KAC/BkV,EAAmB,UAAW7Z,EAAS,yBAAyB4S,IAAaD,GAAW,IAAK3S,EAAS,UAAU6Z,EAAmB,WAAW,GAEzIiU,OAAa,WAIjB9tB,EAAS,iBAAkB,WAAWw4B,EAAiB,GAEvD1K,KAAW,oBAAI,IAAG,GAClBjU,EAAmB,WAAWiU;AAI/B,UAAIvZ,KAAUuZ,GAAS,IAAK4lB,EAAe;AAE3C,UAAKn/B,OAAY;AAIhB,YAAKsF,EAAmB,mBAAmBtF,MAAWsF,EAAmB,uBAAuB45B;AAE/F,iBAAAE,GAAgC3zC,GAAUlK,EAAU,GAE7Cye;AAAA;AAMR,QAAAze,GAAW,WAAWy6C,GAAa,YAAavwC,CAAQ,GAExDA,EAAS,QAASjW,GAAQ+L,IAAYw4C,CAAK,GAE3CtuC,EAAS,gBAAiBlK,IAAYw4C,CAAK,GAE3C/5B,KAAUg8B,GAAa,eAAgBz6C,IAAY49C,EAAe,GAClE5lB,GAAS,IAAK4lB,IAAiBn/B,EAAO,GAEtCsF,EAAmB,WAAW/jB,GAAW;AAI1C,YAAMgN,KAAW+W,EAAmB;AAEpC,cAAO,CAAE7Z,EAAS,oBAAoB,CAAEA,EAAS,uBAAyBA,EAAS,aAAa,QAE/F8C,GAAS,iBAAiB6qB,GAAS,UAIpCgmB,GAAgC3zC,GAAUlK,EAAU,GAIpD+jB,EAAmB,cAAc+5B,GAAqB5zC,CAAQ,GAC9D6Z,EAAmB,qBAAqB45B,IAEnC55B,EAAmB,gBAIvB/W,GAAS,kBAAkB,QAAQsrB,EAAO,MAAM,SAChDtrB,GAAS,WAAW,QAAQsrB,EAAO,MAAM,OACzCtrB,GAAS,kBAAkB,QAAQsrB,EAAO,MAAM,aAChDtrB,GAAS,wBAAwB,QAAQsrB,EAAO,MAAM,mBACtDtrB,GAAS,WAAW,QAAQsrB,EAAO,MAAM,MACzCtrB,GAAS,iBAAiB,QAAQsrB,EAAO,MAAM,YAC/CtrB,GAAS,eAAe,QAAQsrB,EAAO,MAAM,UAC7CtrB,GAAS,MAAM,QAAQsrB,EAAO,MAAM,cACpCtrB,GAAS,MAAM,QAAQsrB,EAAO,MAAM,cACpCtrB,GAAS,YAAY,QAAQsrB,EAAO,MAAM,OAC1CtrB,GAAS,kBAAkB,QAAQsrB,EAAO,MAAM,aAChDtrB,GAAS,iBAAiB,QAAQsrB,EAAO,MAAM,MAE/CtrB,GAAS,qBAAqB,QAAQsrB,EAAO,MAAM,sBACnDtrB,GAAS,wBAAwB,QAAQsrB,EAAO,MAAM,yBACtDtrB,GAAS,cAAc,QAAQsrB,EAAO,MAAM,eAC5CtrB,GAAS,gBAAgB,QAAQsrB,EAAO,MAAM,iBAC9CtrB,GAAS,aAAa,QAAQsrB,EAAO,MAAM,cAC3CtrB,GAAS,eAAe,QAAQsrB,EAAO,MAAM,gBAC7CtrB,GAAS,kBAAkB,QAAQsrB,EAAO,MAAM,oBAKjDvU,EAAmB,iBAAiBtF,IACpCsF,EAAmB,eAAe,MAE3BtF;AAAA,IAER;AAEA,aAASs/B,GAAgBh6B,GAAqB;AAE7C,UAAKA,EAAmB,iBAAiB,MAAO;AAE/C,cAAMi6B,IAAej6B,EAAmB,eAAe,YAAW;AAClE,QAAAA,EAAmB,eAAegO,GAAc,aAAcisB,EAAa,KAAKj6B,EAAmB,QAAQ;AAAA,MAE5G;AAEA,aAAOA,EAAmB;AAAA,IAE3B;AAEA,aAAS85B,GAAgC3zC,GAAUlK,GAAa;AAE/D,YAAM+jB,IAAqBb,GAAW,IAAKhZ,CAAQ;AAEnD,MAAA6Z,EAAmB,mBAAmB/jB,EAAW,kBACjD+jB,EAAmB,WAAW/jB,EAAW,UACzC+jB,EAAmB,aAAa/jB,EAAW,YAC3C+jB,EAAmB,kBAAkB/jB,EAAW,iBAChD+jB,EAAmB,WAAW/jB,EAAW,UACzC+jB,EAAmB,eAAe/jB,EAAW,cAC7C+jB,EAAmB,eAAe/jB,EAAW,cAC7C+jB,EAAmB,cAAc/jB,EAAW,aAC5C+jB,EAAmB,oBAAoB/jB,EAAW,mBAClD+jB,EAAmB,oBAAoB/jB,EAAW,mBAClD+jB,EAAmB,kBAAkB/jB,EAAW,qBAChD+jB,EAAmB,eAAe/jB,EAAW,cAC7C+jB,EAAmB,iBAAiB/jB,EAAW,gBAC/C+jB,EAAmB,cAAc/jB,EAAW;AAAA,IAE7C;AAEA,aAASk8C,GAAYvpD,GAAQkc,GAAOta,GAAU2V,GAAUjW,GAAS;AAEhE,MAAK4a,EAAM,YAAY,OAAOA,IAAQmrC,KAEtCx5C,EAAS,kBAAiB;AAE1B,YAAMg4B,KAAM3pB,EAAM,KACZ4pB,KAAcvuB,EAAS,yBAAyB2E,EAAM,cAAc,MACpEnkB,KAAekuD,MAAyB,OAASJ,EAAM,mBAAqBI,EAAqB,qBAAqB,KAAOA,EAAqB,QAAQ,aAAar3D,IACvKm3C,MAAWxuB,EAAS,yBAAyB4S,IAAaD,GAAW,IAAK3S,EAAS,UAAUuuB,EAAW,GACxGwlB,KAAe/zC,EAAS,iBAAiB,MAAQ,CAAC,CAAE3V,EAAS,WAAW,SAASA,EAAS,WAAW,MAAM,aAAa,GACxH2pD,KAAiB,CAAC,CAAE3pD,EAAS,WAAW,YAAa,CAAC,CAAE2V,EAAS,aAAaA,EAAS,aAAa,IACpG4hB,KAAe,CAAC,CAAEv3B,EAAS,gBAAgB,UAC3Cw3B,KAAe,CAAC,CAAEx3B,EAAS,gBAAgB,QAC3Cy3B,KAAc,CAAC,CAAEz3B,EAAS,gBAAgB;AAEhD,UAAIuyB,KAAc3qC;AAElB,MAAK+tB,EAAS,eAER0uC,MAAyB,QAAQA,EAAqB,qBAAqB,QAE/E9xB,KAAc0xB,EAAM;AAMtB,YAAMryC,KAAiB5R,EAAS,gBAAgB,YAAYA,EAAS,gBAAgB,UAAUA,EAAS,gBAAgB,OAClHi3B,KAAsBrlB,OAAmB,SAAcA,GAAe,SAAS,GAE/E4d,KAAqBb,GAAW,IAAKhZ,CAAQ,GAC7CouB,KAAS+f,EAAmB,MAAM;AAExC,UAAKsB,MAAqB,OAEpBC,OAA0B,MAAQjnD,MAAWmmD,IAAiB;AAElE,cAAMl1B,KACLjxB,MAAWmmD,KACX5uC,EAAS,OAAO2uC;AAKjB,QAAAhhB,GAAS,SAAU3tB,GAAUvX,GAAQixB,EAAQ;AAAA,MAE9C;AAMD,UAAIu6B,KAAqB;AAEzB,MAAKj0C,EAAS,YAAY6Z,GAAmB,aAEvCA,GAAmB,eAAiBA,GAAmB,uBAAuBuU,GAAO,MAAM,WAIpFvU,GAAmB,qBAAqBr5B,MAIxCuJ,EAAO,iBAAiB8vB,GAAmB,aAAa,MAIxD,CAAE9vB,EAAO,iBAAiB8vB,GAAmB,aAAa,MAI1D9vB,EAAO,mBAAmB8vB,GAAmB,eAAe,MAI5D,CAAE9vB,EAAO,mBAAmB8vB,GAAmB,eAAe,MAI9D9vB,EAAO,iBAAiB8vB,GAAmB,aAAa,MAIxD,CAAE9vB,EAAO,iBAAiB8vB,GAAmB,aAAa,MAI1D9vB,EAAO,mBAAmB8vB,GAAmB,oBAAoB,MAAQ9vB,EAAO,kBAAkB,QAIlGA,EAAO,mBAAmB8vB,GAAmB,oBAAoB,MAAS9vB,EAAO,kBAAkB,QAInG8vB,GAAmB,WAAW2U,MAI9BxuB,EAAS,QAAQ,MAAQ6Z,GAAmB,QAAQyU,MAIpDzU,GAAmB,sBAAsB,WAClDA,GAAmB,sBAAsB8T,GAAS,aACpD9T,GAAmB,oBAAoB8T,GAAS,oBAIrC9T,GAAmB,iBAAiBk6B,MAIpCl6B,GAAmB,mBAAmBm6B,MAItCn6B,GAAmB,iBAAiB+H,MAIpC/H,GAAmB,iBAAiBgI,MAIpChI,GAAmB,gBAAgBiI,MAInCjI,GAAmB,gBAAgB+C,MAInCtU,GAAa,aAAa,MAAQuR,GAAmB,sBAAsByH,QAEtF2yB,KAAqB,OAMtBA,KAAqB,IACrBp6B,GAAmB,YAAY7Z,EAAS;AAMzC,UAAIuU,KAAUsF,GAAmB;AAEjC,MAAKo6B,OAAuB,OAE3B1/B,KAAUg+B,GAAYvyC,GAAU2E,GAAO5a,CAAM;AAI9C,UAAImqD,KAAiB,IACjBC,KAAkB,IAClBC,KAAgB;AAEpB,YAAMC,KAAa9/B,GAAQ,YAAW,GACrC+/B,KAAaz6B,GAAmB;AAkBjC,UAhBKhH,GAAM,WAAY0B,GAAQ,OAAO,MAErC2/B,KAAiB,IACjBC,KAAkB,IAClBC,KAAgB,KAIZp0C,EAAS,OAAO2uC,MAEpBA,IAAqB3uC,EAAS,IAE9Bm0C,KAAkB,KAIdD,MAAkBtF,MAAmBnmD,GAAS;AAIlD,QAAA4rD,GAAW,SAAU9T,GAAK,oBAAoB93C,EAAO,gBAAgB,GACrE4rD,GAAW,SAAU9T,GAAK,cAAc93C,EAAO,kBAAkB;AAEjE,cAAM8rD,KAAUF,GAAW,IAAI;AAE/B,QAAKE,OAAY,UAEhBA,GAAQ,SAAUhU,GAAKsP,GAAS,sBAAuBpnD,EAAO,YAAa,GAIvE6f,GAAa,0BAEjB+rC,GAAW;AAAA,UAAU9T;AAAA,UAAK;AAAA,UACzB,KAAQ,KAAK,IAAK93C,EAAO,MAAM,CAAG,IAAK,KAAK;AAAA,QAAK,IAM9CuX,EAAS,uBACbA,EAAS,sBACTA,EAAS,yBACTA,EAAS,uBACTA,EAAS,0BACTA,EAAS,qBAETq0C,GAAW,SAAU9T,GAAK,kBAAkB93C,EAAO,yBAAyB,EAAI,GAI5EmmD,MAAmBnmD,MAEvBmmD,IAAiBnmD,GAMjB0rD,KAAkB,IAClBC,KAAgB;AAAA,MAIlB;AAMA,UAAKrqD,EAAO,eAAgB;AAE3B,QAAAsqD,GAAW,YAAa9T,GAAKx2C,GAAQ,YAAY,GACjDsqD,GAAW,YAAa9T,GAAKx2C,GAAQ,mBAAmB;AAExD,cAAM44B,KAAW54B,EAAO;AAExB,QAAK44B,OAECra,GAAa,uBAEZqa,GAAS,gBAAgB,QAAOA,GAAS,mBAAkB,GAEhE0xB,GAAW,SAAU9T,GAAK,eAAe5d,GAAS,aAAarsB,CAAQ,KAIvE,QAAQ,KAAM,yIAAyI;AAAA,MAM1J;AAEA,MAAKvM,EAAO,kBAEXsqD,GAAW,YAAa9T,GAAKx2C,GAAQ,iBAAiB,GACtDsqD,GAAW,SAAU9T,GAAK,mBAAmBx2C,EAAO,kBAAkBuM,CAAQ;AAI/E,YAAMkI,KAAkBnU,EAAS;AA+EjC,WA7EKmU,GAAgB,aAAa,UAAaA,GAAgB,WAAW,UAAeA,GAAgB,UAAU,UAAa8J,GAAa,aAAa,OAEzJmoC,GAAa,OAAQ1mD,GAAQM,GAAUkqB,EAAO,IAI1C4/B,MAAmBt6B,GAAmB,kBAAkB9vB,EAAO,mBAEnE8vB,GAAmB,gBAAgB9vB,EAAO,eAC1CsqD,GAAW,SAAU9T,GAAK,iBAAiBx2C,EAAO,aAAa,IAM3DiW,EAAS,yBAAyBA,EAAS,WAAW,SAE1Ds0C,GAAW,OAAO,QAAQ9lB,IAE1B8lB,GAAW,WAAW,QAAU9lB,GAAO,iBAAiBA,GAAO,0BAA0B,KAAU,KAAM,IAIrG2lB,OAEJE,GAAW,SAAU9T,GAAK,uBAAuB+N,EAAM,mBAAmB,GAErEz0B,GAAmB,eAWvB26B,GAA+BF,IAAYF,EAAa,GAMpD9lB,MAAOtuB,EAAS,QAAQ,MAE5B3J,GAAU,mBAAoBi+C,IAAYhmB,EAAG,GAI9Cj4B,GAAU,wBAAyBi+C,IAAYt0C,GAAUovC,GAAaD,GAASQ,EAAyB,GAExG9nB,GAAc,OAAQ0Y,GAAKsT,GAAgBh6B,EAAkB,GAAIy6B,IAAYh+C,CAAQ,IAIjF0J,EAAS,oBAAoBA,EAAS,uBAAuB,OAEjE6nB,GAAc,OAAQ0Y,GAAKsT,GAAgBh6B,EAAkB,GAAIy6B,IAAYh+C,CAAQ,GACrF0J,EAAS,qBAAqB,KAI1BA,EAAS,oBAEbq0C,GAAW,SAAU9T,GAAK,UAAUx2C,EAAO,MAAM,GAMlDsqD,GAAW,SAAU9T,GAAK,mBAAmBx2C,EAAO,eAAe,GACnEsqD,GAAW,SAAU9T,GAAK,gBAAgBx2C,EAAO,YAAY,GAC7DsqD,GAAW,SAAU9T,GAAK,eAAex2C,EAAO,WAAW,GAItDiW,EAAS,oBAAoBA,EAAS,qBAAsB;AAEhE,cAAM1C,KAAS0C,EAAS;AAExB,iBAAU7mB,KAAI,GAAGC,KAAIkkB,GAAO,QAAQnkB,KAAIC,IAAGD;AAE1C,cAAKmvB,GAAa,UAAW;AAE5B,kBAAM/K,KAAQD,GAAQnkB,EAAC;AAEvB,YAAAy3D,GAAe,OAAQrzC,IAAOgX,EAAO,GACrCq8B,GAAe,KAAMrzC,IAAOgX,EAAO;AAAA,UAEpC;AAEC,oBAAQ,KAAM,4EAA4E;AAAA,MAM7F;AAEA,aAAOA;AAAA,IAER;AAIA,aAASigC,GAA+B1xC,GAAUhpB,GAAQ;AAEzD,MAAAgpB,EAAS,kBAAkB,cAAchpB,GACzCgpB,EAAS,WAAW,cAAchpB,GAElCgpB,EAAS,kBAAkB,cAAchpB,GACzCgpB,EAAS,wBAAwB,cAAchpB,GAC/CgpB,EAAS,YAAY,cAAchpB,GACnCgpB,EAAS,kBAAkB,cAAchpB,GACzCgpB,EAAS,WAAW,cAAchpB,GAClCgpB,EAAS,iBAAiB,cAAchpB,GACxCgpB,EAAS,eAAe,cAAchpB,GACtCgpB,EAAS,iBAAiB,cAAchpB;AAAA,IAEzC;AAEA,aAAS85D,GAAqB5zC,GAAW;AAExC,aAAOA,EAAS,yBAAyBA,EAAS,sBAAsBA,EAAS,uBAChFA,EAAS,0BAA0BA,EAAS,oBAC1CA,EAAS,oBAAoBA,EAAS,WAAW;AAAA,IAErD;AAEA,SAAK,oBAAoB,WAAY;AAEpC,aAAOwuC;AAAA,IAER,GAEA,KAAK,uBAAuB,WAAY;AAEvC,aAAOC;AAAA,IAER,GAEA,KAAK,kBAAkB,WAAY;AAElC,aAAOC;AAAA,IAER,GAEA,KAAK,0BAA0B,SAAWvqC,GAAcyhC,GAAcN,GAAe;AAEpF,MAAAtsB,GAAW,IAAK7U,EAAa,OAAO,EAAG,iBAAiByhC,GACxD5sB,GAAW,IAAK7U,EAAa,YAAY,EAAG,iBAAiBmhC;AAE7D,YAAM9C,IAAyBxpB,GAAW,IAAK7U,CAAY;AAC3D,MAAAq+B,EAAuB,wBAAwB,IAE1CA,EAAuB,0BAE3BA,EAAuB,4BAA4B8C,MAAiB,QAE7D9C,EAAuB,6BAIxBj/B,GAAW,IAAK,sCAAsC,MAAO,OAEjE,QAAQ,KAAM,wGAAwG,GACtHi/B,EAAuB,uBAAuB;AAAA,IAQlD,GAEA,KAAK,6BAA6B,SAAWr+B,GAAcswC,GAAqB;AAE/E,YAAMjS,IAAyBxpB,GAAW,IAAK7U,CAAY;AAC3D,MAAAq+B,EAAuB,qBAAqBiS,GAC5CjS,EAAuB,0BAA0BiS,MAAuB;AAAA,IAEzE,GAEA,KAAK,kBAAkB,SAAWtwC,GAAcozB,IAAiB,GAAG3yB,IAAoB,GAAI;AAE3F,MAAA8pC,IAAuBvqC,GACvBqqC,IAAyBjX,GACzBkX,IAA4B7pC;AAE5B,UAAI8vC,IAAwB,IACxBnX,IAAc,MACdmI,KAAS,IACTiP,KAAmB;AAEvB,UAAKxwC,GAAe;AAEnB,cAAMq+B,KAAyBxpB,GAAW,IAAK7U,CAAY;AAE3D,QAAKq+B,GAAuB,4BAA4B,UAGvD3vB,GAAM,gBAAiB0tB,EAAI,aAAa,IAAI,GAC5CmU,IAAwB,MAEblS,GAAuB,uBAAuB,SAEzDlsC,EAAS,kBAAmB6N,CAAY,IAE7Bq+B,GAAuB,yBAGlClsC,EAAS,eAAgB6N,GAAc6U,GAAW,IAAK7U,EAAa,OAAO,EAAG,gBAAgB6U,GAAW,IAAK7U,EAAa,YAAY,EAAG,cAAc;AAIzJ,cAAMiB,KAAUjB,EAAa;AAE7B,SAAKiB,GAAQ,mBAAmBA,GAAQ,sBAAsBA,GAAQ,8BAErEuvC,KAAmB;AAIpB,cAAMC,KAAqB57B,GAAW,IAAK7U,CAAY,EAAG;AAE1D,QAAKA,EAAa,2BAEZ,MAAM,QAASywC,GAAoBrd,CAAc,CAAE,IAEvDgG,IAAcqX,GAAoBrd,CAAc,EAAI3yB,CAAiB,IAIrE24B,IAAcqX,GAAoBrd,CAAc,GAIjDmO,KAAS,MAEIp9B,GAAa,YAAYnE,EAAa,UAAU,KAAO7N,EAAS,mBAAoB6N,CAAY,MAAO,KAEpHo5B,IAAcvkB,GAAW,IAAK7U,CAAY,EAAG,iCAIxC,MAAM,QAASywC,MAEnBrX,IAAcqX,GAAoBhwC,CAAiB,IAInD24B,IAAcqX,IAMhB/F,EAAiB,KAAM1qC,EAAa,QAAQ,GAC5C2qC,EAAgB,KAAM3qC,EAAa,OAAO,GAC1C4qC,IAAsB5qC,EAAa;AAAA,MAEpC;AAEC,QAAA0qC,EAAiB,KAAMjY,CAAS,EAAG,eAAgBwY,CAAW,EAAG,MAAK,GACtEN,EAAgB,KAAMS,CAAQ,EAAG,eAAgBH,CAAW,EAAG,MAAK,GACpEL,IAAsBS;AAgBvB,UAZyB38B,GAAM,gBAAiB0tB,EAAI,aAAahD,CAAW,KAEnDj1B,GAAa,eAAeosC,KAEpD7hC,GAAM,YAAa1O,GAAco5B,CAAW,GAI7C1qB,GAAM,SAAUg8B,CAAgB,GAChCh8B,GAAM,QAASi8B,CAAe,GAC9Bj8B,GAAM,eAAgBk8B,CAAmB,GAEpCrJ,IAAS;AAEb,cAAMrD,KAAoBrpB,GAAW,IAAK7U,EAAa,OAAO;AAC9D,QAAAo8B,EAAI,qBAAsBA,EAAI,aAAaA,EAAI,mBAAmBA,EAAI,8BAA8BhJ,GAAgB8K,GAAkB,gBAAgBz9B,CAAiB;AAAA,MAExK,WAAY+vC,IAAmB;AAE9B,cAAMtS,KAAoBrpB,GAAW,IAAK7U,EAAa,OAAO,GACxD0wC,KAAQtd,KAAkB;AAChC,QAAAgJ,EAAI,wBAAyBA,EAAI,aAAaA,EAAI,mBAAmB8B,GAAkB,gBAAgBz9B,KAAqB,GAAGiwC,EAAK;AAAA,MAErI;AAEA,MAAAlG,IAAqB;AAAA,IAEtB,GAEA,KAAK,yBAAyB,SAAWxqC,GAAc9pB,GAAGC,GAAGsJ,GAAOC,GAAQ+kB,IAAQksC,IAAsB;AAEzG,UAAK,EAAI3wC,KAAgBA,EAAa,sBAAwB;AAE7D,gBAAQ,MAAO,0FAA0F;AACzG;AAAA,MAED;AAEA,UAAIo5B,KAAcvkB,GAAW,IAAK7U,CAAY,EAAG;AAQjD,UANKA,EAAa,2BAA2B2wC,OAAwB,WAEpEvX,KAAcA,GAAauX,EAAmB,IAI1CvX,IAAc;AAElB,QAAA1qB,GAAM,gBAAiB0tB,EAAI,aAAahD,EAAW;AAEnD,YAAI;AAEH,gBAAMn4B,KAAUjB,EAAa,SACvB4wC,KAAgB3vC,GAAQ,QACxBw+B,KAAcx+B,GAAQ;AAE5B,cAAK2vC,OAAkB5gE,MAAcqsD,GAAM,QAASuU,QAAoBxU,EAAI,aAAcA,EAAI,mCAAqC;AAElI,oBAAQ,MAAO,2GAA2G;AAC1H;AAAA,UAED;AAEA,gBAAMyU,KAA4BpR,OAAgB9vD,OAAqByvB,GAAW,IAAK,kCAAqC+E,GAAa,YAAY/E,GAAW,IAAK,wBAAwB;AAE7L,cAAKqgC,OAAgBrwD,MAAoBitD,GAAM,QAASoD,EAAW,MAAOrD,EAAI,aAAcA,EAAI,8BAA8B;AAAA,UAC7H,EAAIqD,OAAgB/vD,OAAey0B,GAAa,YAAY/E,GAAW,IAAK,mBAAmB,KAAMA,GAAW,IAAK,0BAA0B;AAAA,UAC/I,CAAEyxC,IAA0B;AAE5B,oBAAQ,MAAO,qHAAqH;AACpI;AAAA,UAED;AAIA,UAAO36D,KAAK,KAAKA,KAAO8pB,EAAa,QAAQvgB,KAAetJ,KAAK,KAAKA,KAAO6pB,EAAa,SAAStgB,KAElG08C,EAAI,WAAYlmD,GAAGC,GAAGsJ,GAAOC,GAAQ28C,GAAM,QAASuU,EAAa,GAAIvU,GAAM,QAASoD,EAAW,GAAIh7B,EAAM;AAAA,QAI3G,UAAC;AAIA,gBAAM20B,KAAgBmR,MAAyB,OAAS11B,GAAW,IAAK01B,GAAuB,qBAAqB;AACpH,UAAA77B,GAAM,gBAAiB0tB,EAAI,aAAahD,EAAW;AAAA,QAEpD;AAAA,MAED;AAAA,IAED,GAEA,KAAK,2BAA2B,SAAWjrC,GAAU8S,GAASq9B,IAAQ,GAAI;AAEzE,YAAMwS,IAAa,KAAK,IAAK,GAAG,CAAExS,CAAK,GACjC7+C,IAAQ,KAAK,MAAOwhB,EAAQ,MAAM,QAAQ6vC,CAAU,GACpDpxD,KAAS,KAAK,MAAOuhB,EAAQ,MAAM,SAAS6vC,CAAU;AAE5D,MAAA3+C,EAAS,aAAc8O,GAAS,CAAC,GAEjCm7B,EAAI,kBAAmBA,EAAI,YAAYkC,GAAO,GAAG,GAAGnwC,EAAS,GAAGA,EAAS,GAAG1O,GAAOC,EAAM,GAEzFgvB,GAAM,cAAa;AAAA,IAEpB,GAEA,KAAK,uBAAuB,SAAWvgB,GAAU4iD,GAAYC,GAAY1S,IAAQ,GAAI;AAEpF,YAAM7+C,IAAQsxD,EAAW,MAAM,OACzBrxD,KAASqxD,EAAW,MAAM,QAC1BvT,KAAWnB,GAAM,QAAS2U,EAAW,MAAM,GAC3CvT,KAASpB,GAAM,QAAS2U,EAAW,IAAI;AAE7C,MAAA7+C,EAAS,aAAc6+C,GAAY,CAAC,GAIpC5U,EAAI,YAAaA,EAAI,qBAAqB4U,EAAW,KAAK,GAC1D5U,EAAI,YAAaA,EAAI,gCAAgC4U,EAAW,gBAAgB,GAChF5U,EAAI,YAAaA,EAAI,kBAAkB4U,EAAW,eAAe,GAE5DD,EAAW,gBAEf3U,EAAI,cAAeA,EAAI,YAAYkC,GAAOnwC,EAAS,GAAGA,EAAS,GAAG1O,GAAOC,IAAQ89C,IAAUC,IAAQsT,EAAW,MAAM,IAAI,IAInHA,EAAW,sBAEf3U,EAAI,wBAAyBA,EAAI,YAAYkC,GAAOnwC,EAAS,GAAGA,EAAS,GAAG4iD,EAAW,QAAS,GAAI,OAAOA,EAAW,QAAS,GAAI,QAAQvT,IAAUuT,EAAW,QAAS,CAAC,EAAG,IAAI,IAIjL3U,EAAI,cAAeA,EAAI,YAAYkC,GAAOnwC,EAAS,GAAGA,EAAS,GAAGqvC,IAAUC,IAAQsT,EAAW,KAAK,GAOjGzS,MAAU,KAAK0S,EAAW,mBAAkB5U,EAAI,eAAgBA,EAAI,UAAU,GAEnF1tB,GAAM,cAAa;AAAA,IAEpB,GAEA,KAAK,yBAAyB,SAAWuiC,GAAW9iD,GAAU4iD,GAAYC,GAAY1S,IAAQ,GAAI;AAEjG,UAAK6L,EAAM,kBAAmB;AAE7B,gBAAQ,KAAM,2EAA2E;AACzF;AAAA,MAED;AAEA,YAAM1qD,KAAQwxD,EAAU,IAAI,IAAIA,EAAU,IAAI,IAAI,GAC5CvxD,KAASuxD,EAAU,IAAI,IAAIA,EAAU,IAAI,IAAI,GAC7CrxD,KAAQqxD,EAAU,IAAI,IAAIA,EAAU,IAAI,IAAI,GAC5CzT,KAAWnB,GAAM,QAAS2U,EAAW,MAAM,GAC3CvT,KAASpB,GAAM,QAAS2U,EAAW,IAAI;AAC7C,UAAIE;AAEJ,UAAKF,EAAW;AAEf,QAAA7+C,EAAS,aAAc6+C,GAAY,CAAC,GACpCE,KAAW9U,EAAI;AAAA,eAEJ4U,EAAW,sBAAsBA,EAAW;AAEvD,QAAA7+C,EAAS,kBAAmB6+C,GAAY,CAAC,GACzCE,KAAW9U,EAAI;AAAA,WAET;AAEN,gBAAQ,KAAM,6GAA6G;AAC3H;AAAA,MAED;AAEA,MAAAA,EAAI,YAAaA,EAAI,qBAAqB4U,EAAW,KAAK,GAC1D5U,EAAI,YAAaA,EAAI,gCAAgC4U,EAAW,gBAAgB,GAChF5U,EAAI,YAAaA,EAAI,kBAAkB4U,EAAW,eAAe;AAEjE,YAAMG,KAAe/U,EAAI,aAAcA,EAAI,iBAAiB,GACtDgV,KAAoBhV,EAAI,aAAcA,EAAI,mBAAmB,GAC7DiV,KAAmBjV,EAAI,aAAcA,EAAI,kBAAkB,GAC3DkV,KAAiBlV,EAAI,aAAcA,EAAI,gBAAgB,GACvDmV,KAAmBnV,EAAI,aAAcA,EAAI,kBAAkB,GAE3Dt/C,KAAQi0D,EAAW,sBAAsBA,EAAW,QAASzS,CAAK,IAAKyS,EAAW;AAExF,MAAA3U,EAAI,YAAaA,EAAI,mBAAmBt/C,GAAM,KAAK,GACnDs/C,EAAI,YAAaA,EAAI,qBAAqBt/C,GAAM,MAAM,GACtDs/C,EAAI,YAAaA,EAAI,oBAAoB6U,EAAU,IAAI,CAAC,GACxD7U,EAAI,YAAaA,EAAI,kBAAkB6U,EAAU,IAAI,CAAC,GACtD7U,EAAI,YAAaA,EAAI,oBAAoB6U,EAAU,IAAI,CAAC,GAEnDF,EAAW,iBAAiBA,EAAW,kBAE3C3U,EAAI,cAAe8U,IAAU5S,GAAOnwC,EAAS,GAAGA,EAAS,GAAGA,EAAS,GAAG1O,IAAOC,IAAQE,IAAO49C,IAAUC,IAAQ3gD,GAAM,IAAI,IAIrHi0D,EAAW,4BAEf,QAAQ,KAAM,yFAAyF,GACvG3U,EAAI,wBAAyB8U,IAAU5S,GAAOnwC,EAAS,GAAGA,EAAS,GAAGA,EAAS,GAAG1O,IAAOC,IAAQE,IAAO49C,IAAU1gD,GAAM,IAAI,KAI5Hs/C,EAAI,cAAe8U,IAAU5S,GAAOnwC,EAAS,GAAGA,EAAS,GAAGA,EAAS,GAAG1O,IAAOC,IAAQE,IAAO49C,IAAUC,IAAQ3gD,EAAK,GAMvHs/C,EAAI,YAAaA,EAAI,mBAAmB+U,EAAY,GACpD/U,EAAI,YAAaA,EAAI,qBAAqBgV,EAAiB,GAC3DhV,EAAI,YAAaA,EAAI,oBAAoBiV,EAAgB,GACzDjV,EAAI,YAAaA,EAAI,kBAAkBkV,EAAc,GACrDlV,EAAI,YAAaA,EAAI,oBAAoBmV,EAAgB,GAGpDjT,MAAU,KAAK0S,EAAW,mBAAkB5U,EAAI,eAAgB8U,EAAQ,GAE7ExiC,GAAM,cAAa;AAAA,IAEpB,GAEA,KAAK,cAAc,SAAWzN,GAAU;AAEvC,MAAKA,EAAQ,gBAEZ9O,EAAS,eAAgB8O,GAAS,CAAC,IAExBA,EAAQ,kBAEnB9O,EAAS,aAAc8O,GAAS,CAAC,IAEtBA,EAAQ,sBAAsBA,EAAQ,2BAEjD9O,EAAS,kBAAmB8O,GAAS,CAAC,IAItC9O,EAAS,aAAc8O,GAAS,CAAC,GAIlCyN,GAAM,cAAa;AAAA,IAEpB,GAEA,KAAK,aAAa,WAAY;AAE7B,MAAA27B,IAAyB,GACzBC,IAA4B,GAC5BC,IAAuB,MAEvB77B,GAAM,MAAK,GACXoB,EAAc,MAAK;AAAA,IAEpB,GAEK,OAAO,qBAAuB,OAElC,mBAAmB,cAAe,IAAI,YAAa,WAAW,EAAE,QAAQ,KAAI,EAAI;AAAA,EAIlF;AAAA,EAEA,IAAI,mBAAmB;AAEtB,WAAOx7B;AAAA,EAER;AAAA,EAEA,IAAI,mBAAmB;AAEtB,WAAO,KAAK;AAAA,EAEb;AAAA,EAEA,IAAI,iBAAkB+H,GAAa;AAElC,SAAK,oBAAoBA;AAEzB,UAAM6nB,IAAK,KAAK,WAAU;AAC1B,IAAAA,EAAG,0BAA0B7nB,MAAelJ,KAAsB,eAAe,QACjF+wB,EAAG,mBAAmB9nB,GAAgB,sBAAsBhJ,KAA4B,eAAe;AAAA,EAExG;AAAA,EAEA,IAAI,iBAAiB;AAEpB,mBAAQ,KAAM,gGAAgG,GACvG,KAAK,qBAAqBH,KAAiBN,KAAeD;AAAA,EAElE;AAAA,EAEA,IAAI,eAAgB0L,GAAW;AAE9B,YAAQ,KAAM,gGAAgG,GAC9G,KAAK,mBAAmBA,MAAazL,KAAeM,KAAiBC;AAAA,EAEtE;AAAA,EAEA,IAAI,kBAAkB;AAErB,mBAAQ,KAAM,6MAA6M,GACpN,KAAK;AAAA,EAEb;AAAA,EAEA,IAAI,gBAAiByC,GAAQ;AAE5B,YAAQ,KAAM,6MAA6M,GAC3N,KAAK,mBAAmBA;AAAA,EAEzB;AAED;AAEA,MAAM67D,WAAuBjI,GAAc;AAAA;AAE3CiI,GAAe,UAAU,mBAAmB;AAE5C,MAAMC,GAAQ;AAAA,EAEb,YAAav1D,GAAOw1D,IAAU,OAAU;AAEvC,SAAK,YAAY,IAEjB,KAAK,OAAO,IAEZ,KAAK,QAAQ,IAAIx8C,GAAOhZ,CAAK,GAC7B,KAAK,UAAUw1D;AAAA,EAEhB;AAAA,EAEA,QAAQ;AAEP,WAAO,IAAID,GAAS,KAAK,OAAO,KAAK,OAAO;AAAA,EAE7C;AAAA,EAEA,SAAqB;AAEpB,WAAO;AAAA,MACN,MAAM;AAAA,MACN,MAAM,KAAK;AAAA,MACX,OAAO,KAAK,MAAM,OAAM;AAAA,MACxB,SAAS,KAAK;AAAA,IACjB;AAAA,EAEC;AAED;AAqCA,MAAME,WAAc/gD,GAAS;AAAA,EAE5B,cAAc;AAEb,UAAK,GAEL,KAAK,UAAU,IAEf,KAAK,OAAO,SAEZ,KAAK,aAAa,MAClB,KAAK,cAAc,MACnB,KAAK,MAAM,MAEX,KAAK,uBAAuB,GAC5B,KAAK,sBAAsB,GAE3B,KAAK,mBAAmB,MAEnB,OAAO,qBAAuB,OAElC,mBAAmB,cAAe,IAAI,YAAa,WAAW,EAAE,QAAQ,KAAI,EAAI;AAAA,EAIlF;AAAA,EAEA,KAAM1S,GAAQyU,GAAY;AAEzB,iBAAM,KAAMzU,GAAQyU,CAAS,GAExBzU,EAAO,eAAe,SAAO,KAAK,aAAaA,EAAO,WAAW,MAAK,IACtEA,EAAO,gBAAgB,SAAO,KAAK,cAAcA,EAAO,YAAY,MAAK,IACzEA,EAAO,QAAQ,SAAO,KAAK,MAAMA,EAAO,IAAI,MAAK,IAEtD,KAAK,uBAAuBA,EAAO,sBACnC,KAAK,sBAAsBA,EAAO,qBAE7BA,EAAO,qBAAqB,SAAO,KAAK,mBAAmBA,EAAO,iBAAiB,MAAK,IAE7F,KAAK,mBAAmBA,EAAO,kBAExB;AAAA,EAER;AAAA,EAEA,OAAQd,GAAO;AAEd,UAAMH,IAAO,MAAM,OAAQG,CAAI;AAE/B,WAAK,KAAK,QAAQ,SAAOH,EAAK,OAAO,MAAM,KAAK,IAAI,OAAM,IACrD,KAAK,uBAAuB,MAAIA,EAAK,OAAO,uBAAuB,KAAK,uBACxE,KAAK,wBAAwB,MAAIA,EAAK,OAAO,sBAAsB,KAAK,sBAEtEA;AAAA,EAER;AAED;AA+7CA,MAAM20D,WAAiCr7C,GAAgB;AAAA,EAEtD,YAAaxhB,GAAOyhB,GAAUC,GAAYob,IAAmB,GAAI;AAEhE,UAAO98B,GAAOyhB,GAAUC,CAAU,GAElC,KAAK,6BAA6B,IAElC,KAAK,mBAAmBob;AAAA,EAEzB;AAAA,EAEA,KAAM3zB,GAAS;AAEd,iBAAM,KAAMA,CAAM,GAElB,KAAK,mBAAmBA,EAAO,kBAExB;AAAA,EAER;AAAA,EAEA,SAAS;AAER,UAAMjB,IAAO,MAAM,OAAM;AAEzB,WAAAA,EAAK,mBAAmB,KAAK,kBAE7BA,EAAK,6BAA6B,IAE3BA;AAAA,EAER;AAED;AAEA,MAAM40D,KAAqC,oBAAI5mD,GAAO,GAChD6mD,KAAqC,oBAAI7mD,GAAO,GAEhD8mD,KAAsB,CAAA,GAEtBC,KAAsB,oBAAI1sD,GAAI,GAC9B2sD,KAA0B,oBAAIhnD,GAAO,GACrCinD,KAAwB,oBAAIt2C,GAAI,GAChCu2C,KAA0B,oBAAIpqD,GAAM;AAE1C,MAAMqqD,WAAsBx2C,GAAK;AAAA,EAEhC,YAAa1V,GAAU2V,GAAUlF,GAAQ;AAExC,UAAOzQ,GAAU2V,CAAQ,GAEzB,KAAK,kBAAkB,IAEvB,KAAK,iBAAiB,IAAI+1C,GAA0B,IAAI,aAAcj7C,IAAQ,EAAE,GAAI,EAAE,GACtF,KAAK,gBAAgB,MAErB,KAAK,QAAQA,GAEb,KAAK,cAAc,MACnB,KAAK,iBAAiB;AAEtB,aAAU3hB,IAAI,GAAGA,IAAI2hB,GAAO3hB;AAE3B,WAAK,YAAaA,GAAGi9D,EAAS;AAAA,EAIhC;AAAA,EAEA,qBAAqB;AAEpB,UAAM/rD,IAAW,KAAK,UAChByQ,IAAQ,KAAK;AAEnB,IAAK,KAAK,gBAAgB,SAEzB,KAAK,cAAc,IAAIrR,GAAI,IAIvBY,EAAS,gBAAgB,QAE7BA,EAAS,mBAAkB,GAI5B,KAAK,YAAY,UAAS;AAE1B,aAAUlR,IAAI,GAAGA,IAAI2hB,GAAO3hB;AAE3B,WAAK,YAAaA,GAAG68D,EAAoB,GAEzCG,GAAM,KAAM9rD,EAAS,WAAW,EAAG,aAAc2rD,EAAoB,GAErE,KAAK,YAAY,MAAOG,EAAK;AAAA,EAI/B;AAAA,EAEA,wBAAwB;AAEvB,UAAM9rD,IAAW,KAAK,UAChByQ,IAAQ,KAAK;AAEnB,IAAK,KAAK,mBAAmB,SAE5B,KAAK,iBAAiB,IAAI5O,GAAM,IAI5B7B,EAAS,mBAAmB,QAEhCA,EAAS,sBAAqB,GAI/B,KAAK,eAAe,UAAS;AAE7B,aAAUlR,IAAI,GAAGA,IAAI2hB,GAAO3hB;AAE3B,WAAK,YAAaA,GAAG68D,EAAoB,GAEzCM,GAAU,KAAMjsD,EAAS,cAAc,EAAG,aAAc2rD,EAAoB,GAE5E,KAAK,eAAe,MAAOM,EAAS;AAAA,EAItC;AAAA,EAEA,KAAMj0D,GAAQyU,GAAY;AAEzB,iBAAM,KAAMzU,GAAQyU,CAAS,GAE7B,KAAK,eAAe,KAAMzU,EAAO,cAAc,GAE1CA,EAAO,kBAAkB,SAAO,KAAK,gBAAgBA,EAAO,cAAc,MAAK,IAEpF,KAAK,QAAQA,EAAO,OAEfA,EAAO,gBAAgB,SAAO,KAAK,cAAcA,EAAO,YAAY,MAAK,IACzEA,EAAO,mBAAmB,SAAO,KAAK,iBAAiBA,EAAO,eAAe,MAAK,IAEhF;AAAA,EAER;AAAA,EAEA,WAAYrJ,GAAOqH,GAAQ;AAE1B,IAAAA,EAAM,UAAW,KAAK,cAAc,OAAOrH,IAAQ,CAAC;AAAA,EAErD;AAAA,EAEA,YAAaA,GAAOyG,GAAS;AAE5B,IAAAA,EAAO,UAAW,KAAK,eAAe,OAAOzG,IAAQ,EAAE;AAAA,EAExD;AAAA,EAEA,QAASsnB,GAAWC,GAAa;AAEhC,UAAMC,IAAc,KAAK,aACnBg2C,IAAe,KAAK;AAK1B,QAHAH,GAAQ,WAAW,KAAK,UACxBA,GAAQ,WAAW,KAAK,UAEnBA,GAAQ,aAAa,WAIrB,KAAK,mBAAmB,QAAO,KAAK,sBAAqB,GAE9DC,GAAU,KAAM,KAAK,cAAc,GACnCA,GAAU,aAAc91C,CAAW,GAE9BF,EAAU,IAAI,iBAAkBg2C,EAAS,MAAO;AAIrD,eAAUG,IAAa,GAAGA,IAAaD,GAAcC,KAAgB;AAIpE,aAAK,YAAaA,GAAYT,EAAoB,GAElDC,GAAqB,iBAAkBz1C,GAAaw1C,EAAoB,GAIxEK,GAAQ,cAAcJ,IAEtBI,GAAQ,QAAS/1C,GAAW41C,EAAmB;AAI/C,iBAAU/8D,IAAI,GAAGC,IAAI88D,GAAoB,QAAQ/8D,IAAIC,GAAGD,KAAO;AAE9D,gBAAM6nB,IAAYk1C,GAAqB/8D,CAAC;AACxC,UAAA6nB,EAAU,aAAay1C,GACvBz1C,EAAU,SAAS,MACnBT,EAAW,KAAMS,CAAS;AAAA,QAE3B;AAEA,QAAAk1C,GAAoB,SAAS;AAAA,MAE9B;AAAA,EAED;AAAA,EAEA,WAAYl9D,GAAOqH,GAAQ;AAE1B,IAAK,KAAK,kBAAkB,SAE3B,KAAK,gBAAgB,IAAI01D,GAA0B,IAAI,aAAc,KAAK,eAAe,QAAQ,CAAC,GAAI,CAAC,IAIxG11D,EAAM,QAAS,KAAK,cAAc,OAAOrH,IAAQ,CAAC;AAAA,EAEnD;AAAA,EAEA,YAAaA,GAAOyG,GAAS;AAE5B,IAAAA,EAAO,QAAS,KAAK,eAAe,OAAOzG,IAAQ,EAAE;AAAA,EAEtD;AAAA,EAEA,qBAAqB;AAAA,EAErB;AAAA,EAEA,UAAU;AAET,SAAK,cAAe,EAAE,MAAM,UAAS,CAAE;AAAA,EAExC;AAED;AAu3NA,MAAM09D,WAAsB96C,GAAe;AAAA,EAE1C,YAAaxS,IAAS,GAAGutD,IAAO,KAAKC,IAAiB,IAAIC,IAAkB,IAAIC,IAAM,KAAK,KAAK,GAAI;AAEnG,UAAK,GAEL,KAAK,OAAO,iBAEZ,KAAK,aAAa;AAAA,MACjB,QAAQ1tD;AAAA,MACR,MAAMutD;AAAA,MACN,gBAAgBC;AAAA,MAChB,iBAAiBC;AAAA,MACjB,KAAKC;AAAA,IACR,GAEEF,IAAiB,KAAK,MAAOA,CAAc,GAC3CC,IAAkB,KAAK,MAAOA,CAAe;AAI7C,UAAMx6C,IAAU,CAAA,GACVkF,IAAW,CAAA,GACXhF,IAAU,CAAA,GACVC,IAAM,CAAA,GAINzgB,IAAS,IAAIgM,EAAO,GACpBouC,IAAS,IAAIpuC,EAAO,GACpBmB,IAAS,IAAInB,EAAO;AAI1B,aAAU4D,IAAI,GAAGA,KAAKirD,GAAgBjrD;AAErC,eAAUxS,IAAI,GAAGA,KAAK09D,GAAiB19D,KAAO;AAE7C,cAAMqQ,IAAIrQ,IAAI09D,IAAkBC,GAC1Bh8D,IAAI6Q,IAAIirD,IAAiB,KAAK,KAAK;AAIzC,QAAAzgB,EAAO,KAAM/sC,IAASutD,IAAO,KAAK,IAAK77D,CAAC,KAAO,KAAK,IAAK0O,CAAC,GAC1D2sC,EAAO,KAAM/sC,IAASutD,IAAO,KAAK,IAAK77D,CAAC,KAAO,KAAK,IAAK0O,CAAC,GAC1D2sC,EAAO,IAAIwgB,IAAO,KAAK,IAAK77D,CAAC,GAE7BymB,EAAS,KAAM40B,EAAO,GAAGA,EAAO,GAAGA,EAAO,CAAC,GAI3Cp6C,EAAO,IAAIqN,IAAS,KAAK,IAAKI,CAAC,GAC/BzN,EAAO,IAAIqN,IAAS,KAAK,IAAKI,CAAC,GAC/BN,EAAO,WAAYitC,GAAQp6C,CAAM,EAAG,UAAS,GAE7CwgB,EAAQ,KAAMrT,EAAO,GAAGA,EAAO,GAAGA,EAAO,CAAC,GAI1CsT,EAAI,KAAMrjB,IAAI09D,CAAe,GAC7Br6C,EAAI,KAAM7Q,IAAIirD,CAAc;AAAA,MAE7B;AAMD,aAAUjrD,IAAI,GAAGA,KAAKirD,GAAgBjrD;AAErC,eAAUxS,IAAI,GAAGA,KAAK09D,GAAiB19D,KAAO;AAI7C,cAAM6B,KAAM67D,IAAkB,KAAMlrD,IAAIxS,IAAI,GACtC8B,KAAM47D,IAAkB,MAAQlrD,IAAI,KAAMxS,IAAI,GAC9C8C,KAAM46D,IAAkB,MAAQlrD,IAAI,KAAMxS,GAC1CkF,KAAMw4D,IAAkB,KAAMlrD,IAAIxS;AAIxC,QAAAkjB,EAAQ,KAAMrhB,GAAGC,GAAGoD,CAAC,GACrBge,EAAQ,KAAMphB,GAAGgB,GAAGoC,CAAC;AAAA,MAEtB;AAMD,SAAK,SAAUge,CAAO,GACtB,KAAK,aAAc,YAAY,IAAIjB,GAAwBmG,GAAU,EAAG,GACxE,KAAK,aAAc,UAAU,IAAInG,GAAwBmB,GAAS,EAAG,GACrE,KAAK,aAAc,MAAM,IAAInB,GAAwBoB,GAAK,EAAG;AAAA,EAE9D;AAAA,EAEA,KAAMna,GAAS;AAEd,iBAAM,KAAMA,CAAM,GAElB,KAAK,aAAa,OAAO,OAAQ,CAAA,GAAIA,EAAO,UAAU,GAE/C;AAAA,EAER;AAAA,EAEA,OAAO,SAAUjB,GAAO;AAEvB,WAAO,IAAIs1D,GAAet1D,EAAK,QAAQA,EAAK,MAAMA,EAAK,gBAAgBA,EAAK,iBAAiBA,EAAK,GAAG;AAAA,EAEtG;AAED;AA4jBA,MAAM21D,WAA6B78C,GAAS;AAAA,EAE3C,YAAapE,GAAa;AAEzB,UAAK,GAEL,KAAK,yBAAyB,IAE9B,KAAK,UAAU,EAAE,UAAY,GAAE,GAE/B,KAAK,OAAO,wBAEZ,KAAK,QAAQ,IAAIuD,GAAO,QAAQ,GAChC,KAAK,YAAY,GACjB,KAAK,YAAY,GAEjB,KAAK,MAAM,MAEX,KAAK,WAAW,MAChB,KAAK,oBAAoB,GAEzB,KAAK,QAAQ,MACb,KAAK,iBAAiB,GAEtB,KAAK,WAAW,IAAIA,GAAO,CAAQ,GACnC,KAAK,oBAAoB,GACzB,KAAK,cAAc,MAEnB,KAAK,UAAU,MACf,KAAK,YAAY,GAEjB,KAAK,YAAY,MACjB,KAAK,gBAAgBpiB,IACrB,KAAK,cAAc,IAAI2D,GAAS,GAAG,CAAC,GAEpC,KAAK,kBAAkB,MACvB,KAAK,oBAAoB,GACzB,KAAK,mBAAmB,GAExB,KAAK,eAAe,MAEpB,KAAK,eAAe,MAEpB,KAAK,WAAW,MAEhB,KAAK,SAAS,MACd,KAAK,kBAAkB,GAEvB,KAAK,YAAY,IACjB,KAAK,qBAAqB,GAC1B,KAAK,mBAAmB,SACxB,KAAK,oBAAoB,SAEzB,KAAK,cAAc,IAEnB,KAAK,MAAM,IAEX,KAAK,UAAWkb,CAAU;AAAA,EAE3B;AAAA,EAEA,KAAMzT,GAAS;AAEd,iBAAM,KAAMA,CAAM,GAElB,KAAK,UAAU,EAAE,UAAY,GAAE,GAE/B,KAAK,MAAM,KAAMA,EAAO,KAAK,GAC7B,KAAK,YAAYA,EAAO,WACxB,KAAK,YAAYA,EAAO,WAExB,KAAK,MAAMA,EAAO,KAElB,KAAK,WAAWA,EAAO,UACvB,KAAK,oBAAoBA,EAAO,mBAEhC,KAAK,QAAQA,EAAO,OACpB,KAAK,iBAAiBA,EAAO,gBAE7B,KAAK,SAAS,KAAMA,EAAO,QAAQ,GACnC,KAAK,cAAcA,EAAO,aAC1B,KAAK,oBAAoBA,EAAO,mBAEhC,KAAK,UAAUA,EAAO,SACtB,KAAK,YAAYA,EAAO,WAExB,KAAK,YAAYA,EAAO,WACxB,KAAK,gBAAgBA,EAAO,eAC5B,KAAK,YAAY,KAAMA,EAAO,WAAW,GAEzC,KAAK,kBAAkBA,EAAO,iBAC9B,KAAK,oBAAoBA,EAAO,mBAChC,KAAK,mBAAmBA,EAAO,kBAE/B,KAAK,eAAeA,EAAO,cAE3B,KAAK,eAAeA,EAAO,cAE3B,KAAK,WAAWA,EAAO,UAEvB,KAAK,SAASA,EAAO,QACrB,KAAK,kBAAkBA,EAAO,iBAE9B,KAAK,YAAYA,EAAO,WACxB,KAAK,qBAAqBA,EAAO,oBACjC,KAAK,mBAAmBA,EAAO,kBAC/B,KAAK,oBAAoBA,EAAO,mBAEhC,KAAK,cAAcA,EAAO,aAE1B,KAAK,MAAMA,EAAO,KAEX;AAAA,EAER;AAED;AAs7GA,MAAM20D,WAAcjiD,GAAS;AAAA,EAE5B,YAAa1U,GAAO00C,IAAY,GAAI;AAEnC,UAAK,GAEL,KAAK,UAAU,IAEf,KAAK,OAAO,SAEZ,KAAK,QAAQ,IAAI17B,GAAOhZ,CAAK,GAC7B,KAAK,YAAY00C;AAAA,EAElB;AAAA,EAEA,UAAU;AAAA,EAIV;AAAA,EAEA,KAAM1yC,GAAQyU,GAAY;AAEzB,iBAAM,KAAMzU,GAAQyU,CAAS,GAE7B,KAAK,MAAM,KAAMzU,EAAO,KAAK,GAC7B,KAAK,YAAYA,EAAO,WAEjB;AAAA,EAER;AAAA,EAEA,OAAQd,GAAO;AAEd,UAAMH,IAAO,MAAM,OAAQG,CAAI;AAE/B,WAAAH,EAAK,OAAO,QAAQ,KAAK,MAAM,OAAM,GACrCA,EAAK,OAAO,YAAY,KAAK,WAExB,KAAK,gBAAgB,WAAYA,EAAK,OAAO,cAAc,KAAK,YAAY,OAAM,IAElF,KAAK,aAAa,WAAYA,EAAK,OAAO,WAAW,KAAK,WAC1D,KAAK,UAAU,WAAYA,EAAK,OAAO,QAAQ,KAAK,QACpD,KAAK,UAAU,WAAYA,EAAK,OAAO,QAAQ,KAAK,QACpD,KAAK,aAAa,WAAYA,EAAK,OAAO,WAAW,KAAK,WAE1D,KAAK,WAAW,WAAYA,EAAK,OAAO,SAAS,KAAK,OAAO,OAAM,IAEjEA;AAAA,EAER;AAED;AA+BA,MAAM61D,KAAoC,oBAAI7nD,GAAO,GAC/C8nD,KAAsC,oBAAInvD,EAAO,GACjDovD,KAA8B,oBAAIpvD,EAAO;AAE/C,MAAMqvD,GAAY;AAAA,EAEjB,YAAa3uD,GAAS;AAErB,SAAK,SAASA,GAEd,KAAK,OAAO,GACZ,KAAK,aAAa,GAClB,KAAK,SAAS,GACd,KAAK,cAAc,GAEnB,KAAK,UAAU,IAAI7N,GAAS,KAAK,GAAG,GAEpC,KAAK,MAAM,MACX,KAAK,UAAU,MACf,KAAK,SAAS,IAAIwU,GAAO,GAEzB,KAAK,aAAa,IAClB,KAAK,cAAc,IAEnB,KAAK,WAAW,IAAIkX,GAAO,GAC3B,KAAK,gBAAgB,IAAI1rB,GAAS,GAAG,CAAC,GAEtC,KAAK,iBAAiB,GAEtB,KAAK,aAAa;AAAA,MAEjB,IAAI4H,GAAS,GAAG,GAAG,GAAG,CAAC;AAAA,IAE1B;AAAA,EAEC;AAAA,EAEA,mBAAmB;AAElB,WAAO,KAAK;AAAA,EAEb;AAAA,EAEA,aAAa;AAEZ,WAAO,KAAK;AAAA,EAEb;AAAA,EAEA,eAAgBgxC,GAAQ;AAEvB,UAAMiF,IAAe,KAAK,QACpB4e,IAAe,KAAK;AAE1B,IAAAH,GAAsB,sBAAuB1jB,EAAM,WAAW,GAC9DiF,EAAa,SAAS,KAAMye,EAAqB,GAEjDC,GAAc,sBAAuB3jB,EAAM,OAAO,WAAW,GAC7DiF,EAAa,OAAQ0e,EAAa,GAClC1e,EAAa,kBAAiB,GAE9Bwe,GAAoB,iBAAkBxe,EAAa,kBAAkBA,EAAa,kBAAkB,GACpG,KAAK,SAAS,wBAAyBwe,EAAmB,GAE1DI,EAAa;AAAA,MACZ;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACf;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACf;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACf;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,IAClB,GAEEA,EAAa,SAAUJ,EAAmB;AAAA,EAE3C;AAAA,EAEA,YAAaK,GAAgB;AAE5B,WAAO,KAAK,WAAYA,CAAa;AAAA,EAEtC;AAAA,EAEA,kBAAkB;AAEjB,WAAO,KAAK;AAAA,EAEb;AAAA,EAEA,UAAU;AAET,IAAK,KAAK,OAET,KAAK,IAAI,QAAO,GAIZ,KAAK,WAET,KAAK,QAAQ,QAAO;AAAA,EAItB;AAAA,EAEA,KAAMj1D,GAAS;AAEd,gBAAK,SAASA,EAAO,OAAO,MAAK,GAEjC,KAAK,OAAOA,EAAO,MACnB,KAAK,SAASA,EAAO,QAErB,KAAK,QAAQ,KAAMA,EAAO,OAAO,GAE1B;AAAA,EAER;AAAA,EAEA,QAAQ;AAEP,WAAO,IAAI,KAAK,cAAc,KAAM,IAAI;AAAA,EAEzC;AAAA,EAEA,SAAS;AAER,UAAM0H,IAAS,CAAA;AAEf,WAAK,KAAK,SAAS,MAAIA,EAAO,OAAO,KAAK,OACrC,KAAK,eAAe,MAAIA,EAAO,aAAa,KAAK,aACjD,KAAK,WAAW,MAAIA,EAAO,SAAS,KAAK,UACzC,KAAK,QAAQ,MAAM,OAAO,KAAK,QAAQ,MAAM,SAAMA,EAAO,UAAU,KAAK,QAAQ,QAAO,IAE7FA,EAAO,SAAS,KAAK,OAAO,OAAQ,EAAK,EAAG,QAC5C,OAAOA,EAAO,OAAO,QAEdA;AAAA,EAER;AAED;AAiHA,MAAM6lD,KAAkC,oBAAIxgD,GAAO,GAC7CmoD,KAAoC,oBAAIxvD,EAAO,GAC/CyvD,KAA4B,oBAAIzvD,EAAO;AAE7C,MAAM0vD,WAAyBL,GAAY;AAAA,EAE1C,cAAc;AAEb,UAAO,IAAI3zC,GAAmB,IAAI,GAAG,KAAK,IAAK,GAE/C,KAAK,qBAAqB,IAE1B,KAAK,gBAAgB,IAAI7oB,GAAS,GAAG,CAAC,GAEtC,KAAK,iBAAiB,GAEtB,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAejB,IAAI4H,GAAS,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,MAEvB,IAAIA,GAAS,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,MAEvB,IAAIA,GAAS,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,MAEvB,IAAIA,GAAS,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,MAEvB,IAAIA,GAAS,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,MAEvB,IAAIA,GAAS,GAAG,GAAG,GAAG,CAAC;AAAA,IAC1B,GAEE,KAAK,kBAAkB;AAAA,MACtB,IAAIuF,EAAS,GAAG,GAAG,CAAC;AAAA,MAAI,IAAIA,EAAS,IAAK,GAAG,CAAC;AAAA,MAAI,IAAIA,EAAS,GAAG,GAAG,CAAC;AAAA,MACtE,IAAIA,EAAS,GAAG,GAAG,EAAG;AAAA,MAAI,IAAIA,EAAS,GAAG,GAAG,CAAC;AAAA,MAAI,IAAIA,EAAS,GAAG,IAAK,CAAC;AAAA,IAC3E,GAEE,KAAK,WAAW;AAAA,MACf,IAAIA,EAAS,GAAG,GAAG,CAAC;AAAA,MAAI,IAAIA,EAAS,GAAG,GAAG,CAAC;AAAA,MAAI,IAAIA,EAAS,GAAG,GAAG,CAAC;AAAA,MACpE,IAAIA,EAAS,GAAG,GAAG,CAAC;AAAA,MAAI,IAAIA,EAAS,GAAG,GAAG,CAAC;AAAA,MAAI,IAAIA,EAAS,GAAG,GAAG,EAAG;AAAA,IACzE;AAAA,EAEC;AAAA,EAEA,eAAgByrC,GAAO8jB,IAAgB,GAAI;AAE1C,UAAM7uD,IAAS,KAAK,QACd4uD,IAAe,KAAK,QAEpB9jD,IAAMigC,EAAM,YAAY/qC,EAAO;AAErC,IAAK8K,MAAQ9K,EAAO,QAEnBA,EAAO,MAAM8K,GACb9K,EAAO,uBAAsB,IAI9B8uD,GAAoB,sBAAuB/jB,EAAM,WAAW,GAC5D/qC,EAAO,SAAS,KAAM8uD,EAAmB,GAEzCC,GAAY,KAAM/uD,EAAO,QAAQ,GACjC+uD,GAAY,IAAK,KAAK,gBAAiBF,CAAa,CAAE,GACtD7uD,EAAO,GAAG,KAAM,KAAK,SAAU6uD,CAAa,CAAE,GAC9C7uD,EAAO,OAAQ+uD,EAAW,GAC1B/uD,EAAO,kBAAiB,GAExB4uD,EAAa,gBAAiB,CAAEE,GAAoB,GAAG,CAAEA,GAAoB,GAAG,CAAEA,GAAoB,CAAC,GAEvG3H,GAAkB,iBAAkBnnD,EAAO,kBAAkBA,EAAO,kBAAkB,GACtF,KAAK,SAAS,wBAAyBmnD,EAAiB;AAAA,EAEzD;AAED;AAEA,MAAM8H,WAAmBV,GAAM;AAAA,EAE9B,YAAa32D,GAAO00C,GAAW7/B,IAAW,GAAGyiD,IAAQ,GAAI;AAExD,UAAOt3D,GAAO00C,CAAS,GAEvB,KAAK,eAAe,IAEpB,KAAK,OAAO,cAEZ,KAAK,WAAW7/B,GAChB,KAAK,QAAQyiD,GAEb,KAAK,SAAS,IAAIF,GAAgB;AAAA,EAEnC;AAAA,EAEA,IAAI,QAAQ;AAIX,WAAO,KAAK,YAAY,IAAI,KAAK;AAAA,EAElC;AAAA,EAEA,IAAI,MAAOG,GAAQ;AAGlB,SAAK,YAAYA,KAAU,IAAI,KAAK;AAAA,EAErC;AAAA,EAEA,UAAU;AAET,SAAK,OAAO,QAAO;AAAA,EAEpB;AAAA,EAEA,KAAMv1D,GAAQyU,GAAY;AAEzB,iBAAM,KAAMzU,GAAQyU,CAAS,GAE7B,KAAK,WAAWzU,EAAO,UACvB,KAAK,QAAQA,EAAO,OAEpB,KAAK,SAASA,EAAO,OAAO,MAAK,GAE1B;AAAA,EAER;AAED;AAEA,MAAMw1D,WAA+BT,GAAY;AAAA,EAEhD,cAAc;AAEb,UAAO,IAAIz8B,GAAoB,IAAK,GAAG,GAAG,IAAK,KAAK,IAAK,GAEzD,KAAK,2BAA2B;AAAA,EAEjC;AAED;AAEA,MAAMm9B,WAAyBd,GAAM;AAAA,EAEpC,YAAa32D,GAAO00C,GAAY;AAE/B,UAAO10C,GAAO00C,CAAS,GAEvB,KAAK,qBAAqB,IAE1B,KAAK,OAAO,oBAEZ,KAAK,SAAS,KAAMhgC,GAAS,UAAU,GACvC,KAAK,aAAY,GAEjB,KAAK,SAAS,IAAIA,GAAQ,GAE1B,KAAK,SAAS,IAAI8iD,GAAsB;AAAA,EAEzC;AAAA,EAEA,UAAU;AAET,SAAK,OAAO,QAAO;AAAA,EAEpB;AAAA,EAEA,KAAMx1D,GAAS;AAEd,iBAAM,KAAMA,CAAM,GAElB,KAAK,SAASA,EAAO,OAAO,MAAK,GACjC,KAAK,SAASA,EAAO,OAAO,MAAK,GAE1B;AAAA,EAER;AAED;AAEA,MAAM01D,WAAqBf,GAAM;AAAA,EAEhC,YAAa32D,GAAO00C,GAAY;AAE/B,UAAO10C,GAAO00C,CAAS,GAEvB,KAAK,iBAAiB,IAEtB,KAAK,OAAO;AAAA,EAEb;AAED;AAktMA,MAAMijB,GAAU;AAAA,EAEf,YAAa5uD,IAAS,GAAGC,IAAM,GAAG9N,IAAQ,GAAI;AAE7C,gBAAK,SAAS6N,GACd,KAAK,MAAMC,GACX,KAAK,QAAQ9N,GAEN;AAAA,EAER;AAAA,EAEA,IAAK6N,GAAQC,GAAK9N,GAAQ;AAEzB,gBAAK,SAAS6N,GACd,KAAK,MAAMC,GACX,KAAK,QAAQ9N,GAEN;AAAA,EAER;AAAA,EAEA,KAAM08D,GAAQ;AAEb,gBAAK,SAASA,EAAM,QACpB,KAAK,MAAMA,EAAM,KACjB,KAAK,QAAQA,EAAM,OAEZ;AAAA,EAER;AAAA;AAAA,EAGA,WAAW;AAGV,gBAAK,MAAM,KAAK,IAAK,MAAK,KAAK,IAAK,KAAK,KAAK,MAAK,KAAK,GAAG,CAAE,GAEtD;AAAA,EAER;AAAA,EAEA,eAAgBn9D,GAAI;AAEnB,WAAO,KAAK,uBAAwBA,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC;AAAA,EAElD;AAAA,EAEA,uBAAwBT,GAAGC,GAAGmI,GAAI;AAEjC,gBAAK,SAAS,KAAK,KAAMpI,IAAIA,IAAIC,IAAIA,IAAImI,IAAIA,CAAC,GAEzC,KAAK,WAAW,KAEpB,KAAK,QAAQ,GACb,KAAK,MAAM,MAIX,KAAK,QAAQ,KAAK,MAAOpI,GAAGoI,CAAC,GAC7B,KAAK,MAAM,KAAK,KAAM5I,GAAOS,IAAI,KAAK,QAAQ,IAAK,EAAG,IAIhD;AAAA,EAER;AAAA,EAEA,QAAQ;AAEP,WAAO,IAAI,KAAK,cAAc,KAAM,IAAI;AAAA,EAEzC;AAED;AAo1DK,OAAO,qBAAuB,OAElC,mBAAmB,cAAe,IAAI,YAAa,YAAY,EAAE,QAAQ;AAAA,EACxE,UAAUtL;AACZ,EAAE,EAAI;AAID,OAAO,SAAW,QAEjB,OAAO,YAEX,QAAQ,KAAM,yDAAyD,IAIvE,OAAO,YAAYA;ACzxnDrB,MAAMkpE,KAAe,EAAE,MAAM,SAAQ,GAC/BC,KAAc,EAAE,MAAM,QAAO,GAC7BC,KAAY,EAAE,MAAM,MAAK,GACzBC,KAAO,IAAIrrD,GAAG,GACdsrD,KAAS,IAAI1yC,GAAK,GAClB2yC,KAAa,KAAK,IAAK,KAAK59D,GAAU,OAAO;AAEnD,MAAM69D,WAAsB7/D,GAAgB;AAAA,EAE3C,YAAaoR,GAAQ0uD,GAAa;AAEjC,UAAK,GAEL,KAAK,SAAS1uD,GACd,KAAK,aAAa0uD,GAClB,KAAK,WAAW,MAAM,cAAc,QAGpC,KAAK,UAAU,IAGf,KAAK,SAAS,IAAI1wD,EAAO,GAGzB,KAAK,SAAS,IAAIA,EAAO,GAGzB,KAAK,cAAc,GACnB,KAAK,cAAc,OAGnB,KAAK,UAAU,GACf,KAAK,UAAU,OAGf,KAAK,kBAAkB,GACvB,KAAK,kBAAkB,OAIvB,KAAK,gBAAgB,GACrB,KAAK,gBAAgB,KAAK,IAI1B,KAAK,kBAAkB,QACvB,KAAK,kBAAkB,OAIvB,KAAK,gBAAgB,IACrB,KAAK,gBAAgB,MAIrB,KAAK,aAAa,IAClB,KAAK,YAAY,GAGjB,KAAK,eAAe,IACpB,KAAK,cAAc,GAGnB,KAAK,YAAY,IACjB,KAAK,WAAW,GAChB,KAAK,qBAAqB,IAC1B,KAAK,cAAc,GACnB,KAAK,eAAe,IAIpB,KAAK,aAAa,IAClB,KAAK,kBAAkB,GAGvB,KAAK,OAAO,EAAE,MAAM,aAAa,IAAI,WAAW,OAAO,cAAc,QAAQ,YAAW,GAGxF,KAAK,eAAe,EAAE,MAAM9Y,GAAM,QAAQ,QAAQA,GAAM,OAAO,OAAOA,GAAM,IAAG,GAG/E,KAAK,UAAU,EAAE,KAAKC,GAAM,QAAQ,KAAKA,GAAM,UAAS,GAGxD,KAAK,UAAU,KAAK,OAAO,MAAK,GAChC,KAAK,YAAY,KAAK,OAAO,SAAS,MAAK,GAC3C,KAAK,QAAQ,KAAK,OAAO,MAGzB,KAAK,uBAAuB,MAM5B,KAAK,gBAAgB,WAAY;AAEhC,aAAOwpE,EAAU;AAAA,IAElB,GAEA,KAAK,oBAAoB,WAAY;AAEpC,aAAOA,EAAU;AAAA,IAElB,GAEA,KAAK,cAAc,WAAY;AAE9B,aAAO,KAAK,OAAO,SAAS,WAAY,KAAK,MAAM;AAAA,IAEpD,GAEA,KAAK,oBAAoB,SAAWD,GAAa;AAEhD,MAAAA,EAAW,iBAAkB,WAAWE,EAAS,GACjD,KAAK,uBAAuBF;AAAA,IAE7B,GAEA,KAAK,wBAAwB,WAAY;AAExC,WAAK,qBAAqB,oBAAqB,WAAWE,EAAS,GACnE,KAAK,uBAAuB;AAAA,IAE7B,GAEA,KAAK,YAAY,WAAY;AAE5B,MAAAr3C,EAAM,QAAQ,KAAMA,EAAM,MAAM,GAChCA,EAAM,UAAU,KAAMA,EAAM,OAAO,QAAQ,GAC3CA,EAAM,QAAQA,EAAM,OAAO;AAAA,IAE5B,GAEA,KAAK,QAAQ,WAAY;AAExB,MAAAA,EAAM,OAAO,KAAMA,EAAM,OAAO,GAChCA,EAAM,OAAO,SAAS,KAAMA,EAAM,SAAS,GAC3CA,EAAM,OAAO,OAAOA,EAAM,OAE1BA,EAAM,OAAO,uBAAsB,GACnCA,EAAM,cAAe42C,EAAY,GAEjC52C,EAAM,OAAM,GAEZuR,IAAQ+lC,EAAM;AAAA,IAEf,GAGA,KAAK,SAAS,WAAY;AAEzB,YAAM/8D,IAAS,IAAIkM,EAAO,GAGpB8wD,KAAO,IAAI10D,GAAU,EAAG,mBAAoB4F,EAAO,IAAI,IAAIhC,EAAS,GAAG,GAAG,CAAC,CAAE,GAC7E+wD,KAAcD,GAAK,MAAK,EAAG,OAAM,GAEjCE,KAAe,IAAIhxD,EAAO,GAC1BixD,KAAiB,IAAI70D,GAAU,GAC/B80D,IAAqB,IAAIlxD,EAAO,GAEhCmxD,KAAQ,IAAI,KAAK;AAEvB,aAAO,SAAiBC,KAAY,MAAO;AAE1C,cAAM7mD,KAAWgP,EAAM,OAAO;AAE9B,QAAAzlB,EAAO,KAAMyW,EAAQ,EAAG,IAAKgP,EAAM,MAAM,GAGzCzlB,EAAO,gBAAiBg9D,EAAI,GAG5BH,EAAU,eAAgB78D,CAAM,GAE3BylB,EAAM,cAAcuR,MAAU+lC,EAAM,QAExCQ,EAAYC,EAAsBF,GAAW,GAIzC73C,EAAM,iBAEVo3C,EAAU,SAASY,EAAe,QAAQh4C,EAAM,eAChDo3C,EAAU,OAAOY,EAAe,MAAMh4C,EAAM,kBAI5Co3C,EAAU,SAASY,EAAe,OAClCZ,EAAU,OAAOY,EAAe;AAMjC,YAAIv/D,KAAMunB,EAAM,iBACZtnB,KAAMsnB,EAAM;AAEhB,QAAK,SAAUvnB,EAAG,KAAM,SAAUC,EAAG,MAE/BD,KAAM,CAAE,KAAK,KAAKA,MAAOm/D,KAAiBn/D,KAAM,KAAK,OAAKA,MAAOm/D,KAEjEl/D,KAAM,CAAE,KAAK,KAAKA,MAAOk/D,KAAiBl/D,KAAM,KAAK,OAAKA,MAAOk/D,KAEjEn/D,MAAOC,KAEX0+D,EAAU,QAAQ,KAAK,IAAK3+D,IAAK,KAAK,IAAKC,IAAK0+D,EAAU,MAAO,IAIjEA,EAAU,QAAUA,EAAU,SAAU3+D,KAAMC,MAAQ,IACrD,KAAK,IAAKD,IAAK2+D,EAAU,KAAK,IAC9B,KAAK,IAAK1+D,IAAK0+D,EAAU,KAAK,IAOjCA,EAAU,MAAM,KAAK,IAAKp3C,EAAM,eAAe,KAAK,IAAKA,EAAM,eAAeo3C,EAAU,GAAG,CAAE,GAE7FA,EAAU,SAAQ,GAKbp3C,EAAM,kBAAkB,KAE5BA,EAAM,OAAO,gBAAiBi4C,GAAWj4C,EAAM,aAAa,IAI5DA,EAAM,OAAO,IAAKi4C,CAAS,GAK5Bj4C,EAAM,OAAO,IAAKA,EAAM,MAAM,GAC9BA,EAAM,OAAO,YAAaA,EAAM,iBAAiBA,EAAM,eAAe,GACtEA,EAAM,OAAO,IAAKA,EAAM,MAAM,GAIzBA,EAAM,gBAAgBk4C,KAAqBl4C,EAAM,OAAO,uBAE5Do3C,EAAU,SAASe,EAAef,EAAU,MAAM,IAIlDA,EAAU,SAASe,EAAef,EAAU,SAASnmD,CAAK,GAI3D1W,EAAO,iBAAkB68D,CAAS,GAGlC78D,EAAO,gBAAiBi9D,EAAW,GAEnCxmD,GAAS,KAAMgP,EAAM,MAAM,EAAG,IAAKzlB,CAAM,GAEzCylB,EAAM,OAAO,OAAQA,EAAM,MAAM,GAE5BA,EAAM,kBAAkB,MAE5Bg4C,EAAe,SAAW,IAAIh4C,EAAM,eACpCg4C,EAAe,OAAS,IAAIh4C,EAAM,eAElCi4C,EAAU,eAAgB,IAAIj4C,EAAM,aAAa,MAIjDg4C,EAAe,IAAK,GAAG,GAAG,CAAC,GAE3BC,EAAU,IAAK,GAAG,GAAG,CAAC;AAKvB,YAAIG,KAAc;AAClB,YAAKp4C,EAAM,gBAAgBk4C,GAAoB;AAE9C,cAAIG,KAAY;AAChB,cAAKr4C,EAAM,OAAO,qBAAsB;AAIvC,kBAAMs4C,KAAa/9D,EAAO,OAAM;AAChC,YAAA89D,KAAYF,EAAeG,KAAarnD,CAAK;AAE7C,kBAAMsnD,KAAcD,KAAaD;AACjC,YAAAr4C,EAAM,OAAO,SAAS,gBAAiBw4C,GAAgBD,EAAW,GAClEv4C,EAAM,OAAO,kBAAiB;AAAA,UAE/B,WAAYA,EAAM,OAAO,sBAAuB;AAG/C,kBAAMy4C,KAAc,IAAIhyD,EAASiyD,EAAM,GAAGA,EAAM,GAAG,CAAC;AACpD,YAAAD,GAAY,UAAWz4C,EAAM,MAAM,GAEnCA,EAAM,OAAO,OAAO,KAAK,IAAKA,EAAM,SAAS,KAAK,IAAKA,EAAM,SAASA,EAAM,OAAO,OAAO/O,EAAO,GACjG+O,EAAM,OAAO,uBAAsB,GACnCo4C,KAAc;AAEd,kBAAMO,KAAa,IAAIlyD,EAASiyD,EAAM,GAAGA,EAAM,GAAG,CAAC;AACnD,YAAAC,GAAW,UAAW34C,EAAM,MAAM,GAElCA,EAAM,OAAO,SAAS,IAAK24C,EAAU,EAAG,IAAKF,EAAW,GACxDz4C,EAAM,OAAO,kBAAiB,GAE9Bq4C,KAAY99D,EAAO,OAAM;AAAA,UAE1B;AAEC,oBAAQ,KAAM,yFAAyF,GACvGylB,EAAM,eAAe;AAKtB,UAAKq4C,OAAc,SAEb,KAAK,qBAGTr4C,EAAM,OAAO,IAAK,GAAG,GAAG,EAAG,EACzB,mBAAoBA,EAAM,OAAO,MAAM,EACvC,eAAgBq4C,EAAS,EACzB,IAAKr4C,EAAM,OAAO,QAAQ,KAK5B+2C,GAAK,OAAO,KAAM/2C,EAAM,OAAO,QAAQ,GACvC+2C,GAAK,UAAU,IAAK,GAAG,GAAG,EAAG,EAAG,mBAAoB/2C,EAAM,OAAO,MAAM,GAIlE,KAAK,IAAKA,EAAM,OAAO,GAAG,IAAK+2C,GAAK,UAAW,IAAKE,KAExDxuD,EAAO,OAAQuX,EAAM,MAAM,KAI3Bg3C,GAAO,8BAA+Bh3C,EAAM,OAAO,IAAIA,EAAM,MAAM,GACnE+2C,GAAK,eAAgBC,IAAQh3C,EAAM,MAAM;AAAA,QAQ7C,MAAO,CAAKA,EAAM,OAAO,yBAExBA,EAAM,OAAO,OAAO,KAAK,IAAKA,EAAM,SAAS,KAAK,IAAKA,EAAM,SAASA,EAAM,OAAO,OAAO/O,EAAO,GACjG+O,EAAM,OAAO,uBAAsB,GACnCo4C,KAAc;AAWf,eAPAnnD,IAAQ,GACRinD,IAAoB,IAMfE,MACJX,GAAa,kBAAmBz3C,EAAM,OAAO,QAAQ,IAAK44C,KAC1D,KAAM,IAAIlB,GAAe,IAAK13C,EAAM,OAAO,UAAU,KAAO44C,KAC5DjB,EAAmB,kBAAmB33C,EAAM,MAAM,IAAK,KAEvDA,EAAM,cAAe42C,EAAY,GAEjCa,GAAa,KAAMz3C,EAAM,OAAO,QAAQ,GACxC03C,GAAe,KAAM13C,EAAM,OAAO,UAAU,GAC5C23C,EAAmB,KAAM33C,EAAM,MAAM,GAE9B,MAID;AAAA,MAER;AAAA,IAED,EAAC,GAED,KAAK,UAAU,WAAY;AAE1B,MAAAA,EAAM,WAAW,oBAAqB,eAAe64C,EAAa,GAElE74C,EAAM,WAAW,oBAAqB,eAAe84C,CAAa,GAClE94C,EAAM,WAAW,oBAAqB,iBAAiB+4C,CAAW,GAClE/4C,EAAM,WAAW,oBAAqB,SAASg5C,CAAY,GAE3Dh5C,EAAM,WAAW,oBAAqB,eAAei5C,CAAa,GAClEj5C,EAAM,WAAW,oBAAqB,aAAa+4C,CAAW,GAGzD/4C,EAAM,yBAAyB,SAEnCA,EAAM,qBAAqB,oBAAqB,WAAWq3C,EAAS,GACpEr3C,EAAM,uBAAuB;AAAA,IAM/B;AAMA,UAAMA,IAAQ,MAERs3C,IAAQ;AAAA,MACb,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,KAAK;AAAA,MACL,cAAc;AAAA,MACd,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,oBAAoB;AAAA,IACvB;AAEE,QAAI/lC,IAAQ+lC,EAAM;AAElB,UAAMsB,IAAM,MAGNxB,IAAY,IAAIV,GAAS,GACzBsB,IAAiB,IAAItB,GAAS;AAEpC,QAAIzlD,IAAQ;AACZ,UAAMgnD,IAAY,IAAIxxD,EAAO,GAEvByyD,IAAc,IAAI5/D,GAAO,GACzB6/D,IAAY,IAAI7/D,GAAO,GACvB8/D,IAAc,IAAI9/D,GAAO,GAEzB+/D,IAAW,IAAI//D,GAAO,GACtBggE,IAAS,IAAIhgE,GAAO,GACpBigE,IAAW,IAAIjgE,GAAO,GAEtBkgE,IAAa,IAAIlgE,GAAO,GACxBmgE,IAAW,IAAIngE,GAAO,GACtBogE,IAAa,IAAIpgE,GAAO,GAExBk/D,IAAiB,IAAI/xD,EAAO,GAC5BiyD,IAAQ,IAAIp/D,GAAO;AACzB,QAAI4+D,IAAoB;AAExB,UAAMyB,IAAW,CAAA,GACXC,IAAmB,CAAA;AAEzB,QAAIC,IAAgB;AAEpB,aAAS9B,EAAsBF,GAAY;AAE1C,aAAKA,MAAc,OAET,IAAI,KAAK,KAAK,KAAK73C,EAAM,kBAAoB63C,IAI/C,IAAI,KAAK,KAAK,KAAK,KAAK73C,EAAM;AAAA,IAIvC;AAEA,aAAS85C,EAAc5uD,GAAQ;AAE9B,YAAM6uD,KAAkB,KAAK,IAAK7uD,IAAQ,IAAI;AAC9C,aAAO,KAAK,IAAK,MAAM8U,EAAM,YAAY+5C,EAAe;AAAA,IAEzD;AAEA,aAASjC,EAAYp9D,GAAQ;AAE5B,MAAAs9D,EAAe,SAASt9D;AAAA,IAEzB;AAEA,aAASs/D,GAAUt/D,GAAQ;AAE1B,MAAAs9D,EAAe,OAAOt9D;AAAA,IAEvB;AAEA,UAAMu/D,IAAU,WAAY;AAE3B,YAAMzgE,IAAI,IAAIiN,EAAO;AAErB,aAAO,SAAkBmN,IAAUsmD,IAAe;AAEjD,QAAA1gE,EAAE,oBAAqB0gE,IAAc,IACrC1gE,EAAE,eAAgB,CAAEoa,EAAQ,GAE5BqkD,EAAU,IAAKz+D,CAAC;AAAA,MAEjB;AAAA,IAED,EAAC,GAEK2gE,IAAQ,WAAY;AAEzB,YAAM3gE,IAAI,IAAIiN,EAAO;AAErB,aAAO,SAAgBmN,IAAUsmD,IAAe;AAE/C,QAAKl6C,EAAM,uBAAuB,KAEjCxmB,EAAE,oBAAqB0gE,IAAc,CAAC,KAItC1gE,EAAE,oBAAqB0gE,IAAc,CAAC,GACtC1gE,EAAE,aAAcwmB,EAAM,OAAO,IAAIxmB,CAAC,IAInCA,EAAE,eAAgBoa,EAAQ,GAE1BqkD,EAAU,IAAKz+D,CAAC;AAAA,MAEjB;AAAA,IAED,EAAC,GAGK4gE,IAAM,WAAY;AAEvB,YAAM7/D,IAAS,IAAIkM,EAAO;AAE1B,aAAO,SAAc4zD,IAAQC,IAAS;AAErC,cAAM/lD,KAAUyL,EAAM;AAEtB,YAAKA,EAAM,OAAO,qBAAsB;AAGvC,gBAAMhP,IAAWgP,EAAM,OAAO;AAC9B,UAAAzlB,EAAO,KAAMyW,CAAQ,EAAG,IAAKgP,EAAM,MAAM;AACzC,cAAIu6C,KAAiBhgE,EAAO,OAAM;AAGlC,UAAAggE,MAAkB,KAAK,IAAOv6C,EAAM,OAAO,MAAM,IAAM,KAAK,KAAK,GAAK,GAGtEi6C,EAAS,IAAII,KAASE,KAAiBhmD,GAAQ,cAAcyL,EAAM,OAAO,MAAM,GAChFm6C,EAAO,IAAIG,KAASC,KAAiBhmD,GAAQ,cAAcyL,EAAM,OAAO,MAAM;AAAA,QAE/E,MAAO,CAAKA,EAAM,OAAO,wBAGxBi6C,EAASI,MAAWr6C,EAAM,OAAO,QAAQA,EAAM,OAAO,QAASA,EAAM,OAAO,OAAOzL,GAAQ,aAAayL,EAAM,OAAO,MAAM,GAC3Hm6C,EAAOG,MAAWt6C,EAAM,OAAO,MAAMA,EAAM,OAAO,UAAWA,EAAM,OAAO,OAAOzL,GAAQ,cAAcyL,EAAM,OAAO,MAAM,MAK1H,QAAQ,KAAM,8EAA8E,GAC5FA,EAAM,YAAY;AAAA,MAIpB;AAAA,IAED,EAAC;AAED,aAASw6C,EAAUC,GAAa;AAE/B,MAAKz6C,EAAM,OAAO,uBAAuBA,EAAM,OAAO,uBAErD/O,KAASwpD,KAIT,QAAQ,KAAM,qFAAqF,GACnGz6C,EAAM,aAAa;AAAA,IAIrB;AAEA,aAAS06C,EAASD,GAAa;AAE9B,MAAKz6C,EAAM,OAAO,uBAAuBA,EAAM,OAAO,uBAErD/O,KAASwpD,KAIT,QAAQ,KAAM,qFAAqF,GACnGz6C,EAAM,aAAa;AAAA,IAIrB;AAEA,aAAS26C,EAAsB5hE,GAAGC,IAAI;AAErC,UAAK,CAAEgnB,EAAM;AAEZ;AAID,MAAAk4C,IAAoB;AAEpB,YAAM0C,KAAO56C,EAAM,WAAW,sBAAqB,GAC7C9lB,KAAKnB,IAAI6hE,GAAK,MACdzgE,KAAKnB,KAAI4hE,GAAK,KACd,IAAIA,GAAK,OACT19D,KAAI09D,GAAK;AAEf,MAAAlC,EAAM,IAAMx+D,KAAK,IAAM,IAAI,GAC3Bw+D,EAAM,IAAI,EAAIv+D,KAAK+C,MAAM,IAAI,GAE7Bs7D,EAAe,IAAKE,EAAM,GAAGA,EAAM,GAAG,GAAI,UAAW14C,EAAM,MAAM,EAAG,IAAKA,EAAM,OAAO,QAAQ,EAAG,UAAS;AAAA,IAE3G;AAEA,aAASm4C,EAAe0C,GAAO;AAE9B,aAAO,KAAK,IAAK76C,EAAM,aAAa,KAAK,IAAKA,EAAM,aAAa66C,EAAM;AAAA,IAExE;AAMA,aAASC,EAAuBnjE,GAAQ;AAEvC,MAAAuhE,EAAY,IAAKvhE,EAAM,SAASA,EAAM,OAAO;AAAA,IAE9C;AAEA,aAASojE,GAAsBpjE,GAAQ;AAEtC,MAAAgjE,EAAsBhjE,EAAM,SAASA,EAAM,OAAO,GAClD6hE,EAAW,IAAK7hE,EAAM,SAASA,EAAM,OAAO;AAAA,IAE7C;AAEA,aAASqjE,EAAoBrjE,GAAQ;AAEpC,MAAA0hE,EAAS,IAAK1hE,EAAM,SAASA,EAAM,OAAO;AAAA,IAE3C;AAEA,aAASsjE,EAAuBtjE,GAAQ;AAEvC,MAAAwhE,EAAU,IAAKxhE,EAAM,SAASA,EAAM,OAAO,GAE3CyhE,EAAY,WAAYD,GAAWD,CAAW,EAAG,eAAgBl5C,EAAM,WAAW;AAElF,YAAMzL,KAAUyL,EAAM;AAEtB,MAAA83C,EAAY,IAAI,KAAK,KAAKsB,EAAY,IAAI7kD,GAAQ,eAElDylD,GAAU,IAAI,KAAK,KAAKZ,EAAY,IAAI7kD,GAAQ,YAAY,GAE5D2kD,EAAY,KAAMC,CAAS,GAE3Bn5C,EAAM,OAAM;AAAA,IAEb;AAEA,aAASk7C,GAAsBvjE,GAAQ;AAEtC,MAAA8hE,EAAS,IAAK9hE,EAAM,SAASA,EAAM,OAAO,GAE1C+hE,EAAW,WAAYD,GAAUD,CAAU,GAEtCE,EAAW,IAAI,IAEnBc,EAAUV,EAAcJ,EAAW,EAAG,IAE3BA,EAAW,IAAI,KAE1BgB,EAASZ,EAAcJ,EAAW,EAAG,GAItCF,EAAW,KAAMC,CAAQ,GAEzBz5C,EAAM,OAAM;AAAA,IAEb;AAEA,aAASm7C,GAAoBxjE,GAAQ;AAEpC,MAAA2hE,EAAO,IAAK3hE,EAAM,SAASA,EAAM,OAAO,GAExC4hE,EAAS,WAAYD,GAAQD,CAAQ,EAAG,eAAgBr5C,EAAM,QAAQ,GAEtEo6C,EAAKb,EAAS,GAAGA,EAAS,CAAC,GAE3BF,EAAS,KAAMC,CAAM,GAErBt5C,EAAM,OAAM;AAAA,IAEb;AAEA,aAASo7C,GAAkBzjE,GAAQ;AAElC,MAAAgjE,EAAsBhjE,EAAM,SAASA,EAAM,OAAO,GAE7CA,EAAM,SAAS,IAEnB+iE,EAASZ,EAAcniE,EAAM,OAAQ,IAE1BA,EAAM,SAAS,KAE1B6iE,EAAUV,EAAcniE,EAAM,OAAQ,GAIvCqoB,EAAM,OAAM;AAAA,IAEb;AAEA,aAASq7C,GAAe1jE,GAAQ;AAE/B,UAAI07B,KAAc;AAElB,cAAS17B,EAAM,MAAI;AAAA,QAElB,KAAKqoB,EAAM,KAAK;AAEf,UAAKroB,EAAM,WAAWA,EAAM,WAAWA,EAAM,WAE5CqiE,GAAU,IAAI,KAAK,KAAKh6C,EAAM,cAAcA,EAAM,WAAW,YAAY,IAIzEo6C,EAAK,GAAGp6C,EAAM,WAAW,GAI1BqT,KAAc;AACd;AAAA,QAED,KAAKrT,EAAM,KAAK;AAEf,UAAKroB,EAAM,WAAWA,EAAM,WAAWA,EAAM,WAE5CqiE,GAAU,KAAM,KAAK,KAAKh6C,EAAM,cAAcA,EAAM,WAAW,YAAY,IAI3Eo6C,EAAK,GAAG,CAAEp6C,EAAM,WAAW,GAI5BqT,KAAc;AACd;AAAA,QAED,KAAKrT,EAAM,KAAK;AAEf,UAAKroB,EAAM,WAAWA,EAAM,WAAWA,EAAM,WAE5CmgE,EAAY,IAAI,KAAK,KAAK93C,EAAM,cAAcA,EAAM,WAAW,YAAY,IAI3Eo6C,EAAKp6C,EAAM,aAAa,CAAC,GAI1BqT,KAAc;AACd;AAAA,QAED,KAAKrT,EAAM,KAAK;AAEf,UAAKroB,EAAM,WAAWA,EAAM,WAAWA,EAAM,WAE5CmgE,EAAY,KAAM,KAAK,KAAK93C,EAAM,cAAcA,EAAM,WAAW,YAAY,IAI7Eo6C,EAAK,CAAEp6C,EAAM,aAAa,CAAC,GAI5BqT,KAAc;AACd;AAAA,MAEL;AAEG,MAAKA,OAGJ17B,EAAM,eAAc,GAEpBqoB,EAAM,OAAM;AAAA,IAKd;AAEA,aAASs7C,GAAwB3jE,GAAQ;AAExC,UAAKgiE,EAAS,WAAW;AAExB,QAAAT,EAAY,IAAKvhE,EAAM,OAAOA,EAAM,KAAK;AAAA,WAEnC;AAEN,cAAMqZ,KAAWuqD,GAA0B5jE,CAAK,GAE1CoB,KAAI,OAAQpB,EAAM,QAAQqZ,GAAS,IACnChY,KAAI,OAAQrB,EAAM,QAAQqZ,GAAS;AAEzC,QAAAkoD,EAAY,IAAKngE,IAAGC,EAAC;AAAA,MAEtB;AAAA,IAED;AAEA,aAASwiE,GAAqB7jE,GAAQ;AAErC,UAAKgiE,EAAS,WAAW;AAExB,QAAAN,EAAS,IAAK1hE,EAAM,OAAOA,EAAM,KAAK;AAAA,WAEhC;AAEN,cAAMqZ,KAAWuqD,GAA0B5jE,CAAK,GAE1CoB,KAAI,OAAQpB,EAAM,QAAQqZ,GAAS,IACnChY,KAAI,OAAQrB,EAAM,QAAQqZ,GAAS;AAEzC,QAAAqoD,EAAS,IAAKtgE,IAAGC,EAAC;AAAA,MAEnB;AAAA,IAED;AAEA,aAASyiE,GAAuB9jE,GAAQ;AAEvC,YAAMqZ,KAAWuqD,GAA0B5jE,CAAK,GAE1CuC,KAAKvC,EAAM,QAAQqZ,GAAS,GAC5B7W,KAAKxC,EAAM,QAAQqZ,GAAS,GAE5B4C,KAAW,KAAK,KAAM1Z,KAAKA,KAAKC,KAAKA,EAAE;AAE7C,MAAAq/D,EAAW,IAAK,GAAG5lD,EAAQ;AAAA,IAE5B;AAEA,aAAS8nD,EAA0B/jE,GAAQ;AAE1C,MAAKqoB,EAAM,cAAay7C,GAAuB9jE,CAAK,GAE/CqoB,EAAM,aAAYw7C,GAAqB7jE,CAAK;AAAA,IAElD;AAEA,aAASgkE,GAA6BhkE,GAAQ;AAE7C,MAAKqoB,EAAM,cAAay7C,GAAuB9jE,CAAK,GAE/CqoB,EAAM,gBAAes7C,GAAwB3jE,CAAK;AAAA,IAExD;AAEA,aAASikE,GAAuBjkE,GAAQ;AAEvC,UAAKgiE,EAAS,UAAU;AAEvB,QAAAR,EAAU,IAAKxhE,EAAM,OAAOA,EAAM,KAAK;AAAA,WAEjC;AAEN,cAAMqZ,KAAWuqD,GAA0B5jE,CAAK,GAE1CoB,KAAI,OAAQpB,EAAM,QAAQqZ,GAAS,IACnChY,KAAI,OAAQrB,EAAM,QAAQqZ,GAAS;AAEzC,QAAAmoD,EAAU,IAAKpgE,IAAGC,EAAC;AAAA,MAEpB;AAEA,MAAAogE,EAAY,WAAYD,GAAWD,CAAW,EAAG,eAAgBl5C,EAAM,WAAW;AAElF,YAAMzL,KAAUyL,EAAM;AAEtB,MAAA83C,EAAY,IAAI,KAAK,KAAKsB,EAAY,IAAI7kD,GAAQ,eAElDylD,GAAU,IAAI,KAAK,KAAKZ,EAAY,IAAI7kD,GAAQ,YAAY,GAE5D2kD,EAAY,KAAMC,CAAS;AAAA,IAE5B;AAEA,aAAS0C,GAAoBlkE,GAAQ;AAEpC,UAAKgiE,EAAS,WAAW;AAExB,QAAAL,EAAO,IAAK3hE,EAAM,OAAOA,EAAM,KAAK;AAAA,WAE9B;AAEN,cAAMqZ,KAAWuqD,GAA0B5jE,CAAK,GAE1CoB,KAAI,OAAQpB,EAAM,QAAQqZ,GAAS,IACnChY,KAAI,OAAQrB,EAAM,QAAQqZ,GAAS;AAEzC,QAAAsoD,EAAO,IAAKvgE,IAAGC,EAAC;AAAA,MAEjB;AAEA,MAAAugE,EAAS,WAAYD,GAAQD,CAAQ,EAAG,eAAgBr5C,EAAM,QAAQ,GAEtEo6C,EAAKb,EAAS,GAAGA,EAAS,CAAC,GAE3BF,EAAS,KAAMC,CAAM;AAAA,IAEtB;AAEA,aAASwC,GAAsBnkE,GAAQ;AAEtC,YAAMqZ,KAAWuqD,GAA0B5jE,CAAK,GAE1CuC,KAAKvC,EAAM,QAAQqZ,GAAS,GAC5B7W,KAAKxC,EAAM,QAAQqZ,GAAS,GAE5B4C,KAAW,KAAK,KAAM1Z,KAAKA,KAAKC,KAAKA,EAAE;AAE7C,MAAAs/D,EAAS,IAAK,GAAG7lD,EAAQ,GAEzB8lD,EAAW,IAAK,GAAG,KAAK,IAAKD,EAAS,IAAID,EAAW,GAAGx5C,EAAM,SAAS,CAAE,GAEzEw6C,EAAUd,EAAW,CAAC,GAEtBF,EAAW,KAAMC,CAAQ;AAEzB,YAAMsC,KAAYpkE,EAAM,QAAQqZ,GAAS,KAAM,KACzCgrD,MAAYrkE,EAAM,QAAQqZ,GAAS,KAAM;AAE/C,MAAA2pD,EAAsBoB,GAASC,EAAO;AAAA,IAEvC;AAEA,aAASC,GAAyBtkE,GAAQ;AAEzC,MAAKqoB,EAAM,cAAa87C,GAAsBnkE,CAAK,GAE9CqoB,EAAM,aAAY67C,GAAoBlkE,CAAK;AAAA,IAEjD;AAEA,aAASukE,GAA4BvkE,GAAQ;AAE5C,MAAKqoB,EAAM,cAAa87C,GAAsBnkE,CAAK,GAE9CqoB,EAAM,gBAAe47C,GAAuBjkE,CAAK;AAAA,IAEvD;AAMA,aAASmhE,EAAenhE,GAAQ;AAE/B,MAAKqoB,EAAM,YAAY,OAElB25C,EAAS,WAAW,MAExB35C,EAAM,WAAW,kBAAmBroB,EAAM,SAAS,GAEnDqoB,EAAM,WAAW,iBAAkB,eAAei5C,CAAa,GAC/Dj5C,EAAM,WAAW,iBAAkB,aAAa+4C,CAAW,IAM5DoD,GAAYxkE,CAAK,GAEZA,EAAM,gBAAgB,UAE1BykE,GAAczkE,CAAK,IAInB0kE,EAAa1kE,CAAK;AAAA,IAIpB;AAEA,aAASshE,EAAethE,GAAQ;AAE/B,MAAKqoB,EAAM,YAAY,OAElBroB,EAAM,gBAAgB,UAE1B2kE,GAAa3kE,CAAK,IAIlB4kE,EAAa5kE,CAAK;AAAA,IAIpB;AAEA,aAASohE,EAAaphE,GAAQ;AAE7B,MAAA6kE,GAAe7kE,CAAK,GAEfgiE,EAAS,WAAW,MAExB35C,EAAM,WAAW,sBAAuBroB,EAAM,SAAS,GAEvDqoB,EAAM,WAAW,oBAAqB,eAAei5C,CAAa,GAClEj5C,EAAM,WAAW,oBAAqB,aAAa+4C,CAAW,IAI/D/4C,EAAM,cAAe82C,EAAS,GAE9BvlC,IAAQ+lC,EAAM;AAAA,IAEf;AAEA,aAAS+E,EAAa1kE,GAAQ;AAE7B,UAAI8kE;AAEJ,cAAS9kE,EAAM,QAAM;AAAA,QAEpB,KAAK;AAEJ,UAAA8kE,KAAcz8C,EAAM,aAAa;AACjC;AAAA,QAED,KAAK;AAEJ,UAAAy8C,KAAcz8C,EAAM,aAAa;AACjC;AAAA,QAED,KAAK;AAEJ,UAAAy8C,KAAcz8C,EAAM,aAAa;AACjC;AAAA,QAED;AAEC,UAAAy8C,KAAc;AAAA,MAEnB;AAEG,cAASA,IAAW;AAAA,QAEnB,KAAK9uE,GAAM;AAEV,cAAKqyB,EAAM,eAAe,GAAQ;AAElC,UAAA+6C,GAAsBpjE,CAAK,GAE3B45B,IAAQ+lC,EAAM;AAEd;AAAA,QAED,KAAK3pE,GAAM;AAEV,cAAKgK,EAAM,WAAWA,EAAM,WAAWA,EAAM,UAAW;AAEvD,gBAAKqoB,EAAM,cAAc,GAAQ;AAEjC,YAAAg7C,EAAoBrjE,CAAK,GAEzB45B,IAAQ+lC,EAAM;AAAA,UAEf,OAAO;AAEN,gBAAKt3C,EAAM,iBAAiB,GAAQ;AAEpC,YAAA86C,EAAuBnjE,CAAK,GAE5B45B,IAAQ+lC,EAAM;AAAA,UAEf;AAEA;AAAA,QAED,KAAK3pE,GAAM;AAEV,cAAKgK,EAAM,WAAWA,EAAM,WAAWA,EAAM,UAAW;AAEvD,gBAAKqoB,EAAM,iBAAiB,GAAQ;AAEpC,YAAA86C,EAAuBnjE,CAAK,GAE5B45B,IAAQ+lC,EAAM;AAAA,UAEf,OAAO;AAEN,gBAAKt3C,EAAM,cAAc,GAAQ;AAEjC,YAAAg7C,EAAoBrjE,CAAK,GAEzB45B,IAAQ+lC,EAAM;AAAA,UAEf;AAEA;AAAA,QAED;AAEC,UAAA/lC,IAAQ+lC,EAAM;AAAA,MAEnB;AAEG,MAAK/lC,MAAU+lC,EAAM,QAEpBt3C,EAAM,cAAe62C,EAAW;AAAA,IAIlC;AAEA,aAAS0F,EAAa5kE,GAAQ;AAE7B,cAAS45B,GAAK;AAAA,QAEb,KAAK+lC,EAAM;AAEV,cAAKt3C,EAAM,iBAAiB,GAAQ;AAEpC,UAAAi7C,EAAuBtjE,CAAK;AAE5B;AAAA,QAED,KAAK2/D,EAAM;AAEV,cAAKt3C,EAAM,eAAe,GAAQ;AAElC,UAAAk7C,GAAsBvjE,CAAK;AAE3B;AAAA,QAED,KAAK2/D,EAAM;AAEV,cAAKt3C,EAAM,cAAc,GAAQ;AAEjC,UAAAm7C,GAAoBxjE,CAAK;AAEzB;AAAA,MAEL;AAAA,IAEE;AAEA,aAASqhE,EAAcrhE,GAAQ;AAE9B,MAAKqoB,EAAM,YAAY,MAASA,EAAM,eAAe,MAASuR,MAAU+lC,EAAM,SAE9E3/D,EAAM,eAAc,GAEpBqoB,EAAM,cAAe62C,EAAW,GAEhCuE,GAAkBsB,GAAkB/kE,EAAO,GAE3CqoB,EAAM,cAAe82C,EAAS;AAAA,IAE/B;AAEA,aAAS4F,GAAkB/kE,GAAQ;AAElC,YAAMg+B,KAAOh+B,EAAM,WAGbglE,KAAW;AAAA,QAChB,SAAShlE,EAAM;AAAA,QACf,SAASA,EAAM;AAAA,QACf,QAAQA,EAAM;AAAA,MAClB;AAEG,cAASg+B,IAAI;AAAA,QAEZ,KAAK;AACJ,UAAAgnC,GAAS,UAAU;AACnB;AAAA,QAED,KAAK;AACJ,UAAAA,GAAS,UAAU;AACnB;AAAA,MAEL;AAGG,aAAKhlE,EAAM,WAAW,CAACkiE,MAEtB8C,GAAS,UAAU,KAIbA;AAAA,IAER;AAEA,aAASC,GAAsBjlE,GAAQ;AAEtC,MAAKA,EAAM,QAAQ,cAElBkiE,IAAgB,IAEhB,SAAS,iBAAiB,SAASgD,IAAoB,EAAE,SAAS,IAAM,SAAS,IAAM;AAAA,IAIzF;AAEA,aAASA,GAAoBllE,GAAQ;AAEpC,MAAKA,EAAM,QAAQ,cAElBkiE,IAAgB,IAEhB,SAAS,oBAAoB,SAASgD,IAAoB,EAAE,SAAS,IAAM,SAAS,IAAM;AAAA,IAI5F;AAEA,aAASxF,GAAW1/D,GAAQ;AAE3B,MAAKqoB,EAAM,YAAY,MAASA,EAAM,cAAc,MAEpDq7C,GAAe1jE,CAAK;AAAA,IAErB;AAEA,aAASykE,GAAczkE,GAAQ;AAI9B,cAFAmlE,GAAcnlE,CAAK,GAEVgiE,EAAS,QAAM;AAAA,QAEvB,KAAK;AAEJ,kBAAS35C,EAAM,QAAQ,KAAG;AAAA,YAEzB,KAAKpyB,GAAM;AAEV,kBAAKoyB,EAAM,iBAAiB,GAAQ;AAEpC,cAAAs7C,GAAwB3jE,CAAK,GAE7B45B,IAAQ+lC,EAAM;AAEd;AAAA,YAED,KAAK1pE,GAAM;AAEV,kBAAKoyB,EAAM,cAAc,GAAQ;AAEjC,cAAAw7C,GAAqB7jE,CAAK,GAE1B45B,IAAQ+lC,EAAM;AAEd;AAAA,YAED;AAEC,cAAA/lC,IAAQ+lC,EAAM;AAAA,UAErB;AAEK;AAAA,QAED,KAAK;AAEJ,kBAASt3C,EAAM,QAAQ,KAAG;AAAA,YAEzB,KAAKpyB,GAAM;AAEV,kBAAKoyB,EAAM,eAAe,MAASA,EAAM,cAAc,GAAQ;AAE/D,cAAA07C,EAA0B/jE,CAAK,GAE/B45B,IAAQ+lC,EAAM;AAEd;AAAA,YAED,KAAK1pE,GAAM;AAEV,kBAAKoyB,EAAM,eAAe,MAASA,EAAM,iBAAiB,GAAQ;AAElE,cAAA27C,GAA6BhkE,CAAK,GAElC45B,IAAQ+lC,EAAM;AAEd;AAAA,YAED;AAEC,cAAA/lC,IAAQ+lC,EAAM;AAAA,UAErB;AAEK;AAAA,QAED;AAEC,UAAA/lC,IAAQ+lC,EAAM;AAAA,MAEnB;AAEG,MAAK/lC,MAAU+lC,EAAM,QAEpBt3C,EAAM,cAAe62C,EAAW;AAAA,IAIlC;AAEA,aAASyF,GAAa3kE,GAAQ;AAI7B,cAFAmlE,GAAcnlE,CAAK,GAEV45B,GAAK;AAAA,QAEb,KAAK+lC,EAAM;AAEV,cAAKt3C,EAAM,iBAAiB,GAAQ;AAEpC,UAAA47C,GAAuBjkE,CAAK,GAE5BqoB,EAAM,OAAM;AAEZ;AAAA,QAED,KAAKs3C,EAAM;AAEV,cAAKt3C,EAAM,cAAc,GAAQ;AAEjC,UAAA67C,GAAoBlkE,CAAK,GAEzBqoB,EAAM,OAAM;AAEZ;AAAA,QAED,KAAKs3C,EAAM;AAEV,cAAKt3C,EAAM,eAAe,MAASA,EAAM,cAAc,GAAQ;AAE/D,UAAAi8C,GAAyBtkE,CAAK,GAE9BqoB,EAAM,OAAM;AAEZ;AAAA,QAED,KAAKs3C,EAAM;AAEV,cAAKt3C,EAAM,eAAe,MAASA,EAAM,iBAAiB,GAAQ;AAElE,UAAAk8C,GAA4BvkE,CAAK,GAEjCqoB,EAAM,OAAM;AAEZ;AAAA,QAED;AAEC,UAAAuR,IAAQ+lC,EAAM;AAAA,MAEnB;AAAA,IAEE;AAEA,aAASuB,GAAelhE,GAAQ;AAE/B,MAAKqoB,EAAM,YAAY,MAEvBroB,EAAM,eAAc;AAAA,IAErB;AAEA,aAASwkE,GAAYxkE,GAAQ;AAE5B,MAAAgiE,EAAS,KAAMhiE,EAAM,SAAS;AAAA,IAE/B;AAEA,aAAS6kE,GAAe7kE,GAAQ;AAE/B,aAAOiiE,EAAkBjiE,EAAM,SAAS;AAExC,eAAUE,KAAI,GAAGA,KAAI8hE,EAAS,QAAQ9hE;AAErC,YAAK8hE,EAAU9hE,OAAOF,EAAM,WAAY;AAEvC,UAAAgiE,EAAS,OAAQ9hE,IAAG,CAAC;AACrB;AAAA,QAED;AAAA,IAIF;AAEA,aAASilE,GAAcnlE,GAAQ;AAE9B,UAAIqZ,KAAW4oD,EAAkBjiE,EAAM,SAAS;AAEhD,MAAKqZ,OAAa,WAEjBA,KAAW,IAAI1X,GAAO,GACtBsgE,EAAkBjiE,EAAM,SAAS,IAAKqZ,KAIvCA,GAAS,IAAKrZ,EAAM,OAAOA,EAAM,KAAK;AAAA,IAEvC;AAEA,aAAS4jE,GAA0B5jE,GAAQ;AAE1C,YAAMolE,KAAcplE,EAAM,cAAcgiE,EAAU,CAAC,IAAOA,EAAU,KAAMA,EAAU,CAAC;AAErF,aAAOC,EAAkBmD,EAAS;AAAA,IAEnC;AAIA,IAAA/8C,EAAM,WAAW,iBAAkB,eAAe64C,EAAa,GAE/D74C,EAAM,WAAW,iBAAkB,eAAe84C,CAAa,GAC/D94C,EAAM,WAAW,iBAAkB,iBAAiB+4C,CAAW,GAC/D/4C,EAAM,WAAW,iBAAkB,SAASg5C,GAAc,EAAE,SAAS,IAAO,GAE5E,SAAS,iBAAkB,WAAW4D,IAAsB,EAAE,SAAS,IAAM,SAAS,IAAM,GAI5F,KAAK,OAAM;AAAA,EAEZ;AAED;;;;;;;;;;;;GC77CMI,KAAoB,IACpBC,KAA0B,IAAIC,EAAc,IAAI,IAAI,EAAE,GACtDC,KAAwB,IAAID,EAAc,GAAG,GAAG,CAAC,GACjDE,KAAiB,KACjBC,KAAmB,WAcnB9kE,KAAQ,CAACC,GAAeC,GAAaC,MAAgB,KAAK,IAAIA,GAAK,KAAK,IAAID,GAAKD,CAAK,CAAC,GAEvF8kE,KAAiB,CAAC9kE,GAAgB+kE,GAAkB9kE,GAAaC,GAAawM,IAAO,MAAM;AAC/F,MAAI,OAAO1M,KAAU,YAAY,OAAO,MAAMA,CAAK,EAAG,QAAO+kE;AAC7D,QAAMC,IAAU,KAAK,MAAMhlE,IAAQ0M,CAAI,IAAIA;AAC3C,SAAO3M,GAAMilE,GAAS/kE,GAAKC,CAAG;AAChC;AAEA,SAAS27C,GAAY6c,GAA0B;AAC7C,QAAMuM,IAAe,IAAIC,GAAmB,UAAU,IAAI;AAC1D,EAAAxM,EAAY,IAAIuM,CAAY;AAE5B,QAAME,IAAmB,IAAIC,GAAuB,UAAU,GAAG;AACjE,EAAAD,EAAiB,SAAS,IAAI,IAAI,IAAI,EAAE,GACxCA,EAAiB,aAAa,IAC9BA,EAAiB,OAAO,QAAQ,QAAQ,MACxCA,EAAiB,OAAO,QAAQ,SAAS,MACzCzM,EAAY,IAAIyM,CAAgB;AAEhC,QAAME,IAAY,IAAIC,GAAiB,SAAU,KAAK,EAAE;AACxD,EAAAD,EAAU,SAAS,IAAI,KAAK,IAAI,GAAG,GACnC3M,EAAY,IAAI2M,CAAS;AAEzB,QAAME,IAAY,IAAID,GAAiB,UAAU,KAAK,EAAE;AACxD,EAAAC,EAAU,SAAS,IAAI,IAAI,KAAK,EAAE,GAClC7M,EAAY,IAAI6M,CAAS;AAC3B;AAEA,SAASC,GAAgBt/C,GAA6C;AACpE,MAAI,MAAM,QAAQA,CAAQ,GAAG;AAC3B,IAAAA,EAAS,QAAQ,CAACu/C,MAASA,EAAK,SAAS;AACzC;AAAA,EACF;AAEA,EAAAv/C,EAAS,QAAA;AACX;AAEA,SAASw/C,GAAa76C,GAAoB;AACxC,EAAAA,EAAM,SAAS,CAAC5a,MAAW;AACzB,UAAMub,IAAOvb;AAKb,IAAIub,EAAK,YACPA,EAAK,SAAS,QAAA,GAGZA,EAAK,YACPg6C,GAAgBh6C,EAAK,QAAQ;AAAA,EAEjC,CAAC;AACH;AAEA,SAAwBm6C,GAAU;AAAA,EAChC,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AACF,GAAyB;AACvB,QAAM5jC,IAAUwjC,EAAO,UAAU,CAAA,GAC3BK,IAAWnB,GAAe1iC,EAAO,UAAU,IAAI,IAAI,IAAI,CAAC,GACxD8jC,IAAcpB,GAAe1iC,EAAO,aAAa,GAAG,GAAG,IAAI,GAAG,GAC9D+jC,IAAcrB,GAAe1iC,EAAO,aAAa,GAAG,GAAG,GAAG,IAAI,GAE9D,CAACgkC,GAAYC,CAAa,IAAIC,GAASL,CAAQ,GAC/C,CAAC53C,GAAOk4C,CAAQ,IAAID,GAAuB;AAAA,IAC/C,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA,CACT,GAEKE,IAAaC,GAA8B,IAAI,GAC/CC,IAAqBD,GAA8B,IAAI,GACvDE,IAAeF,GAAO,EAAK;AAEjC,EAAAG,GAAU,MAAM;AACd,UAAMC,IAAcL,EAAW;AAC/B,QAAI,CAACK,EAAa;AAElB,UAAMC,IAAc,MAAM;AACxB,YAAMC,IAAiBF,EAAY,aAC7BG,IAAkBH,EAAY;AAEpC,UAAI,CAACE,KAAkB,CAACC,EAAiB;AAEzC,YAAMC,IAASF,KAAkBC,IAAkB,cAAc;AACjE,UAAIl9D,IAAQi9D,GACRh9D,IAASi9D;AAEb,MAAIC,MAAW,eACbl9D,IAAS,KAAK,IAAIi9D,GAAiBD,KAAkB,IAAI,GAAG,GAC5Dj9D,IAAQC,KAAU,KAAK,OAEvBD,IAAQ,KAAK,IAAIi9D,GAAgBC,IAAkB,CAAC,GACpDj9D,IAASD,IAAQ,IAGnBy8D,EAAS;AAAA,QACP,QAAAU;AAAA,QACA,OAAAn9D;AAAA,QACA,QAAAC;AAAA,MAAA,CACD;AAAA,IACH,GAEMm9D,IAAiB,IAAI,eAAeJ,CAAW;AACrD,WAAAI,EAAe,QAAQL,CAAW,GAClCC,EAAA,GAEO,MAAM;AACX,MAAAI,EAAe,WAAA;AAAA,IACjB;AAAA,EACF,GAAG,CAAA,CAAE,GAELN,GAAU,MAAM;AACd,IAAAP,EAAcJ,CAAQ,GACtBU,EAAa,UAAU;AAAA,EACzB,GAAG,CAACf,EAAO,IAAIK,GAAUC,GAAaC,CAAW,CAAC;AAElD,QAAMgB,IAAcC;AAAA,IAClB,MAAM,KAAK,IAAI5C,KAAoB0B,IAAcC,IAAc,OAAO,CAAC;AAAA,IACvE,CAACD,GAAaC,CAAW;AAAA,EAAA,GAErBkB,IAAYD,GAAQ,MAAMD,IAAcf,GAAY,CAACe,GAAaf,CAAU,CAAC;AAEnF,EAAAQ,GAAU,MAAM;AACd,IAAAd,KAAA,QAAAA,EAAaM,MAAeH,IAAW,IAAI;AAAA,EAC7C,GAAG,CAACA,GAAUH,GAAYM,CAAU,CAAC,GAErCQ,GAAU,MAAM;AACd,IAAIR,MAAeH,KAAYU,EAAa,YAE5CA,EAAa,UAAU,IACvBd,EAAW;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,QACJ,UAAUD,EAAO;AAAA,QACjB,cAAa,oBAAI,KAAA,GAAO,YAAA;AAAA,QACxB,QAAQ;AAAA,UACN,UAAUQ;AAAA,UACV,aAAAF;AAAA,UACA,aAAAC;AAAA,QAAA;AAAA,MACF;AAAA,IACF,CACD;AAAA,EACH,GAAG,CAACP,EAAO,IAAIK,GAAUC,GAAaC,GAAaN,GAAYO,CAAU,CAAC,GAE1EQ,GAAU,MAAM;AACd,UAAMU,IAAYZ,EAAmB;AACrC,QAAI,CAACY,EAAW;AAEhB,UAAMC,IAAkB,IAAIC,GAAM,GAC5BC,IAAgB,IAAID,GAAM,GAC1BE,IAAkB,IAAIC,GAAY9C,EAAgB;AAExD,IAAA0C,EAAgB,aAAaG,GAC7BH,EAAgB,MAAM,IAAIK,GAAc/C,IAAkB,IAAI,GAC9D4C,EAAc,aAAaC,GAC3BD,EAAc,MAAM,IAAIG,GAAc/C,IAAkB,IAAI,GAE5DhpB,GAAY0rB,CAAe,GAC3B1rB,GAAY4rB,CAAa;AAEzB,UAAM94D,IAAS,IAAIk5D,GAAwB,IAAI,GAAG,KAAK,GAAI;AAC3D,IAAAl5D,EAAO,SAAS,KAAK81D,EAAuB;AAE5C,UAAMr7C,IAAW,IAAI0+C,GAAoB,EAAE,WAAW,IAAM,OAAO,IAAM;AACzE,IAAA1+C,EAAS,UAAU,UAAU,IAC7BA,EAAS,UAAU,OAAO2+C,IAC1B3+C,EAAS,cAAc,KAAK,IAAI,OAAO,kBAAkB,CAAC,CAAC,GAC3DA,EAAS,eAAe,EAAI,GAC5Bk+C,EAAU,YAAYl+C,EAAS,UAAU;AAEzC,UAAM4+C,IAAW,IAAItJ,GAAc/vD,GAAQya,EAAS,UAAU;AAC9D,IAAA4+C,EAAS,gBAAgB,IACzBA,EAAS,gBAAgB,MACzBA,EAAS,cAAc,GACvBA,EAAS,cAAc,KACvBA,EAAS,OAAO,KAAKrD,EAAqB;AAE1C,UAAMsD,IAAgB,IAAIC,GAAoBhC,GAAaC,GAAa,IAAI,GAAG,GACzEgC,IAAgB,IAAIC,GAA2B;AAAA,MACnD,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAW;AAAA,IAAA,CACZ,GACKC,KAAY,IAAIC,GAAWL,GAAeE,CAAa;AAC7D,IAAAE,GAAU,aAAa,IACvBA,GAAU,gBAAgB,IAC1BA,GAAU,SAAS,IAAI,CAAC,KAAK,KAAK,GAClCd,EAAgB,IAAIc,EAAS;AAE7B,UAAME,IAAWlB,IAAY,MACvBmB,IAAY,KAAK,IAAInB,IAAYkB,GAAUlB,IAAY,GAAG,GAC1DoB,IAAgB,IAAIC,GAAkBF,GAAWA,GAAWA,CAAS,GACrEG,IAAgB,IAAIP,GAA2B;AAAA,MACnD,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAW;AAAA,IAAA,CACZ,GACKQ,IAAgB,IAAIC,GAAwB;AAAA,MAChD,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAW;AAAA,IAAA,CACZ,GAEKC,IAAc,KAAK,IAAI1C,GAAY,CAAC,GACpC2C,IAAY,IAAIC,GAAoBP,GAAeE,GAAeG,CAAW,GAC7EG,IAAY,IAAID,GAAoBP,GAAeG,GAAeE,CAAW,GAC7EI,MAAgB9C,IAAa,KAAKiB,IAAa,GAC/C8B,IAAQ,IAAIC,GAAM;AAExB,IAAAL,EAAU,aAAa,IACvBA,EAAU,gBAAgB,IAC1BtB,EAAc,IAAIsB,CAAS,GAC3BtB,EAAc,IAAIwB,CAAS;AAE3B,QAAII,IAAa,GACbC,KAAa;AAEjB,aAAS/oE,KAAI,GAAGA,KAAI6lE,GAAY7lE,MAAK;AACnC,eAASC,IAAI,GAAGA,IAAI4lE,GAAY5lE,KAAK;AACnC,iBAASmI,IAAI,GAAGA,IAAIy9D,GAAYz9D,KAAK,GAAG;AACtC,gBAAM4gE,IAAKhpE,KAAI8mE,IAAY6B,IACrBM,IAAKhpE,IAAI6mE,IAAY6B,IACrBO,IAAK9gE,IAAI0+D,IAAY6B,IACrBQ,IAAiB,KAAK,KAAKH,IAAKA,IAAKE,IAAKA,CAAE,IAAIvD,GAEhDyD,KADcD,IAAiBA,IAAiBF,IAAKA,IAC7BrD,IAAcA;AAK5C,cAHAgD,EAAM,SAAS,IAAII,GAAIC,GAAIC,CAAE,GAC7BN,EAAM,aAAA,GAEFQ,IAAS;AACX,YAAAZ,EAAU,YAAYM,GAAYF,EAAM,MAAM;AAC9C,kBAAM5iE,KAAQ,IAAIohE,GAAM,GAClB7nD,KAAM,OAAQ0pD,IAAK,KAAK,IAAIpD,GAAY,CAAC,IAAK;AACpD,YAAA7/D,GAAM,OAAOuZ,IAAK,MAAM,IAAI,GAC5BipD,EAAU,WAAWM,GAAY9iE,EAAK,GACtC8iE,KAAc;AACd;AAAA,UACF;AAEA,UAAAJ,EAAU,YAAYK,IAAYH,EAAM,MAAM,GAC9CG,MAAc;AAAA,QAChB;AAIJ,IAAAP,EAAU,QAAQM,GAClBJ,EAAU,QAAQK,IAClBP,EAAU,eAAe,cAAc,IACvCE,EAAU,eAAe,cAAc,IACnCF,EAAU,kBACZA,EAAU,cAAc,cAAc;AAGxC,UAAMa,KAAuBnF,GAAwB,MAAA,GAC/CoF,KAAyBlF,GAAsB,MAAA;AACrD,QAAImF,KAAgB,IAChBC,KAA4B,MAC5BjgE,KAAQ,GACRC,KAAS;AAEb,UAAMigE,IAAS,MAAM;AAInB,MAHAlgE,KAAQw9D,EAAU,aAClBv9D,KAASu9D,EAAU,cAEf,GAACx9D,MAAS,CAACC,QAEf4E,EAAO,SAAS,GAChBA,EAAO,uBAAA,GACPya,EAAS,QAAQtf,IAAOC,IAAQ,EAAK;AAAA,IACvC,GAEMm9D,KAAiB,IAAI,eAAe8C,CAAM;AAChD,IAAA9C,GAAe,QAAQI,CAAS,GAChC0C,EAAA;AAEA,UAAMC,KAAsB,MAAM;AAChC,MAAAH,KAAgB,IACZC,OAAe,SACjB,OAAO,aAAaA,EAAU,GAC9BA,KAAa;AAAA,IAEjB,GAEMG,KAAoB,MAAM;AAC9B,MAAAH,KAAa,OAAO,WAAW,MAAM;AACnC,QAAAD,KAAgB;AAAA,MAClB,GAAGlF,EAAc;AAAA,IACnB;AAEA,IAAAoD,EAAS,iBAAiB,SAASiC,EAAmB,GACtDjC,EAAS,iBAAiB,OAAOkC,EAAiB;AAElD,QAAIC,KAAiB;AAErB,UAAMC,KAAc,MAAM;AAsBxB,UArBAD,KAAiB,OAAO,sBAAsBC,EAAW,GAErDN,OACFn7D,EAAO,SAAS,KAAKi7D,IAAsB,IAAI,GAC/C5B,EAAS,OAAO,KAAK6B,IAAwB,IAAI,GAG/Cl7D,EAAO,SAAS,WAAWi7D,EAAoB,IAAI,OACnD5B,EAAS,OAAO,WAAW6B,EAAsB,IAAI,QAErDC,KAAgB,MAIpBzB,GAAU,SAAS,KAAK,MACxBU,EAAU,SAAS,KAAK,MACxBE,EAAU,SAAS,KAAK,MACxBA,EAAU,UAAU,IAEpBjB,EAAS,OAAA,GAEL,CAACl+D,MAAS,CAACC,GAAQ;AAEvB,YAAMsgE,KAAcvgE,MAASC,IACvBugE,IAAaD,KAAc,KAAK,IAAIvgE,KAAQ,GAAGC,EAAM,IAAI,KAAK,IAAID,IAAOC,KAAS,CAAC,GACnFwgE,IAASF,MAAevgE,KAAQwgE,IAAa,KAAK,KAAKxgE,KAAQwgE,KAAc,GAC7EE,IAASH,MAAetgE,KAASugE,KAAc,KAAKvgE,KAASugE,IAAa,KAAK,GAE/EG,IAAcF,GACdG,IAAcL,KAAcG,IAASA,IAASF,GAC9CK,IAAYN,KAAcE,IAASD,IAAaC,GAChDK,KAAYJ;AAElB,MAAAphD,EAAS,WAAWqhD,GAAaC,GAAaJ,GAAYA,CAAU,GACpElhD,EAAS,YAAYqhD,GAAaC,GAAaJ,GAAYA,CAAU,GACrElhD,EAAS,OAAOm+C,GAAiB54D,CAAM,GAEvCya,EAAS,WAAWuhD,GAAWC,IAAWN,GAAYA,CAAU,GAChElhD,EAAS,YAAYuhD,GAAWC,IAAWN,GAAYA,CAAU,GACjElhD,EAAS,OAAOq+C,GAAe94D,CAAM;AAAA,IACvC;AAEA,WAAAy7D,GAAA,GAEO,MAAM;AACX,aAAO,qBAAqBD,EAAc,GACtCJ,OAAe,QACjB,OAAO,aAAaA,EAAU,GAEhC7C,GAAe,WAAA,GACfc,EAAS,oBAAoB,SAASiC,EAAmB,GACzDjC,EAAS,oBAAoB,OAAOkC,EAAiB,GACrDlC,EAAS,QAAA,GACT5+C,EAAS,QAAA,GACTs8C,GAAa6B,CAAe,GAC5B7B,GAAa+B,CAAa,GAC1BH,EAAU,YAAYl+C,EAAS,UAAU;AAAA,IAC3C;AAAA,EACF,GAAG,CAAC88C,GAAaC,GAAaC,GAAYiB,CAAS,CAAC;AAEpD,QAAMwD,IAAUzD;AAAA,IACd,OACG;AAAA,MACC,iBAAgBrB,KAAA,gBAAAA,EAAO,YAAW;AAAA,MAClC,gBAAeA,KAAA,gBAAAA,EAAO,WAAU;AAAA,MAChC,YAAWA,KAAA,gBAAAA,EAAO,OAAM;AAAA,MACxB,sBAAqBA,KAAA,gBAAAA,EAAO,gBAAe;AAAA,MAC3C,cAAaA,KAAA,gBAAAA,EAAO,SAAQ;AAAA,MAC5B,oBAAmBA,KAAA,gBAAAA,EAAO,cAAa;AAAA,MACvC,gBAAeA,KAAA,gBAAAA,EAAO,WAAU;AAAA,IAAA;AAAA,IAEpC,CAACA,CAAK;AAAA,EAAA,GAGF+E,IAAyB,CAAC3rE,MAAyC;AACvE,IAAAknE,EAAc,OAAOlnE,EAAM,OAAO,KAAK,CAAC;AAAA,EAC1C;AAEA,4BACG,OAAA,EAAI,WAAW,CAAC4rE,GAAO,SAAS/E,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,OAAO6E,GAAS,KAAKrE,GAC1F,UAAA,gBAAAwE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWD,GAAO;AAAA,MAClB,eAAa18C,EAAM;AAAA,MACnB,OAAO;AAAA,QACL,OAAOA,EAAM,QAAQ,GAAGA,EAAM,KAAK,OAAO;AAAA,QAC1C,QAAQA,EAAM,SAAS,GAAGA,EAAM,MAAM,OAAO;AAAA,MAAA;AAAA,MAG/C,UAAA;AAAA,QAAA,gBAAA48C,GAAC,OAAA,EAAI,WAAWF,GAAO,QAAQ,KAAKrE,GAAoB;AAAA,2BACvD,OAAA,EAAI,WAAWqE,GAAO,gBAAgB,eAAa18C,EAAM,QACxD,UAAA;AAAA,UAAA,gBAAA48C,GAAC,OAAA,EAAI,WAAWF,GAAO,YAAY,UAAA,cAAU;AAAA,UAC7C,gBAAAE,GAAC,OAAA,EAAI,WAAWF,GAAO,YAAY,UAAA,WAAA,CAAQ;AAAA,QAAA,GAC7C;AAAA,QACA,gBAAAE,GAAC,OAAA,EAAI,WAAWF,GAAO,gBACrB,UAAA,gBAAAE,GAAC,SAAA,EAAM,WAAWF,GAAO,gBACvB,UAAA,gBAAAC,GAAC,QAAA,EAAK,WAAWD,GAAO,mBACtB,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWF,GAAO;AAAA,cAClB,MAAK;AAAA,cACL,KAAI;AAAA,cACJ,KAAI;AAAA,cACJ,MAAK;AAAA,cACL,OAAO3E;AAAA,cACP,UAAU0E;AAAA,YAAA;AAAA,UAAA;AAAA,UAEZ,gBAAAE,GAAC,QAAA,EAAK,WAAWD,GAAO,aAAc,UAAA;AAAA,YAAA1D,EAAU,QAAQ,CAAC;AAAA,YAAE;AAAA,UAAA,EAAA,CAAC;AAAA,QAAA,EAAA,CAC9D,GACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AClbO,MAAM6D,KAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,IACX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,IAAA;AAAA,IAER,aAAa;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,IAAA;AAAA,IAER,aAAa;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,aAAa;AAAA,EAAA;AAEjB;","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist/vendor/gnommoplayer.css b/dist/vendor/gnommoplayer.css new file mode 100644 index 0000000..6fa161b --- /dev/null +++ b/dist/vendor/gnommoplayer.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Russo+One&display=swap";:root{color-scheme:light;font-family:Russo One,Avenir Next,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#102542;background:radial-gradient(circle at top,rgba(240,199,135,.34),transparent 28%),linear-gradient(180deg,#f7f3e9,#f2ebe0 48%,#e8eef2);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--surface: rgba(255, 255, 255, .78);--surface-strong: rgba(255, 255, 255, .92);--ink: #102542;--muted: #4f647d;--accent: #de6b48;--accent-soft: #f2cc8f;--outline: rgba(16, 37, 66, .12);--shadow: 0 24px 80px rgba(36, 40, 74, .16);--radius-xl: 32px;--radius-lg: 24px;--radius-md: 18px}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-height:100vh;color:var(--ink)}button,input,textarea,select{font:inherit}button{cursor:pointer}.app-shell{display:grid;gap:1.25rem;min-height:100vh;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left))}.app-shell--player-only{display:block;min-height:100vh;padding:0}.app-panel{background:var(--surface);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--outline);border-radius:var(--radius-xl);box-shadow:var(--shadow);padding:1.25rem}.app-panel--player-only{display:grid;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;min-height:100vh}.app-panel--fallback{margin:1rem;border-radius:0}.app-panel--player{display:grid;gap:1.25rem}.app-header{display:grid;gap:1rem}.app-header h1{margin:.25rem 0 .5rem;font-size:clamp(1.8rem,3vw,3rem);line-height:1.04}.app-header p{margin:0;max-width:70ch;color:var(--muted)}.app-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin:0}.app-stats div{border-radius:var(--radius-md);padding:.9rem 1rem;background:var(--surface-strong)}.app-stats dt{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.app-stats dd{margin:.35rem 0 0;font-size:1.5rem;font-weight:700}.eyebrow{margin:0;font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:var(--accent)}.lecture-player{display:grid;place-items:center;container-type:size;gap:0;--stage-width-ratio: 16;--stage-height-ratio: 9;--player-font-size: clamp(10px, 1.45cqi, 18px);--square-header-size: 300%;--header-gap: 1rem;--stage-gap: 0rem;--video-size: 30.5%;width:100%;height:100%;min-width:0;min-height:0;padding:0;border:0;border-radius:0;background:#6c6c6c;box-shadow:none;overflow:hidden}.lecture-player__stage{position:relative;container-type:inline-size;width:min(calc(100cqw - 16px),calc((100cqh - 16px) * var(--stage-width-ratio) / var(--stage-height-ratio)));aspect-ratio:var(--stage-width-ratio) / var(--stage-height-ratio);max-width:100%;max-height:100%;min-height:0}.lecture-player__stage-frame{position:relative;width:100%;height:100%;min-height:0;overflow:hidden;background:#000;font-size:var(--player-font-size)}.lecture-player__slide-shell{position:absolute;top:var(--stage-gap);right:var(--stage-gap);bottom:var(--stage-gap);left:calc(var(--video-size) + (var(--stage-gap) * 2));min-height:0;overflow:hidden;margin:1%}.lecture-player__fullscreen-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;overflow:hidden}.lecture-player__square-header{position:absolute;z-index:4;left:var(--stage-gap);top:var(--header-gap);width:var(--video-size);padding:0 .3rem;color:#ffbd16;font-family:Russo One,Avenir Next,Segoe UI,sans-serif;font-size:var(--square-header-size);line-height:1.1;letter-spacing:.04em;text-align:center;text-transform:uppercase;text-wrap:balance;text-shadow:0 3px 14px rgba(0,0,0,.52)}.lecture-player__gesture-layer{position:relative;height:100%;overflow:hidden;touch-action:none}.lecture-player__empty{display:grid;place-items:center;width:100%;height:100%;min-height:0;padding:clamp(1.5rem,4vw,3rem);border-radius:0;border:0;background:#ffbd16;text-align:center;color:#111;overflow:hidden}.lecture-player__empty p{margin:0;max-width:24ch;font-size:96%;line-height:1.08}.lecture-player__empty .eyebrow{color:#111111ad}.video-stage{position:absolute;z-index:2;display:grid;gap:.75rem;left:var(--stage-gap);top:73%;transform:translateY(-50%);width:var(--video-size)}.video-stage__window{position:relative;aspect-ratio:1 / 1;overflow:hidden;border-radius:0;background:#000;border:1px solid rgba(255,255,255,.26);box-shadow:0 18px 42px #10254261}.video-stage__video,.video-stage__placeholder{width:100%;height:100%;object-fit:cover}.video-stage__placeholder{display:grid;place-items:center;padding:1rem;text-align:center;color:#fdfdfd}.video-stage__meta{position:absolute;inset:auto .8rem .8rem .8rem;display:flex;justify-content:space-between;color:#102542;z-index:3}.video-stage__meta span,.video-stage__next{padding:.38rem .65rem;border-radius:0;background:#ffffffa6;border:1px solid rgba(16,37,66,.08);font-size:72%;letter-spacing:.03em}.video-stage__next{justify-self:center}.slide-host{position:relative;z-index:1;display:grid;align-items:center;container-type:inline-size;min-height:100%;height:100%;font-size:clamp(8px,2cqi,20px);overflow:hidden;transition:transform .18s ease,opacity .18s ease;--slide-padding: clamp(.6em, 3.6cqi, 1.4em);--slide-gap: clamp(.35em, 1.8cqi, .9em);--slide-kicker-size: .78em;--slide-meta-size: .86em;--slide-body-size: 1em;--slide-title-size: 1.7em;--slide-title-compact-size: 1.45em;--slide-quote-size: 2.4em;--slide-equation-size: 2.8em}.slide-host--square{min-height:0;padding:.25rem;font-size:clamp(8px,2.55cqi,22px);--slide-body-size: .98em;--slide-title-size: 1.58em;--slide-title-compact-size: 1.34em;--slide-quote-size: 2.1em;--slide-equation-size: 2.45em}.slide-host--fullscreen{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;padding:.5rem;font-size:clamp(9px,1.75cqi,22px)}.slide-host--inspect{transform:scale(.985)}.slide-host__viewport{position:relative;width:100%;height:100%;overflow:hidden}.slide-host__track{width:100%;height:100%;will-change:transform}.slide-host__track--settling{transition:transform .22s cubic-bezier(.2,.9,.2,1)}.slide-host__track--horizontal{display:grid;grid-auto-flow:column;grid-auto-columns:100%}.slide-host__track--vertical{display:grid;grid-auto-flow:row;grid-auto-rows:100%}.slide-host__item{width:100%;height:100%;min-height:0}.glitch-slide-renderer{position:relative;width:100%;height:100%;min-height:0}.glitch-slide-thumbnail{display:grid;container-type:inline-size;gap:.45rem;width:100%;min-width:0;font-size:clamp(7px,2.1cqi,16px);color:#111}.glitch-slide-thumbnail__header{margin:0;color:#ffbd16;font-size:.92em;line-height:.9;letter-spacing:.045em;text-transform:uppercase;text-wrap:balance}.glitch-slide-thumbnail__surface{position:relative;width:100%;overflow:hidden;background:#000}.glitch-slide-thumbnail--square .glitch-slide-thumbnail__surface{aspect-ratio:1 / 1}.glitch-slide-thumbnail--fullscreen .glitch-slide-thumbnail__surface{aspect-ratio:16 / 9}.glitch-slide-thumbnail__surface>.glitch-slide-renderer{position:absolute;top:0;right:0;bottom:0;left:0}.slide-card,.split-slide,.fallback-slide,.basic-slide,.fullscreen-split{width:100%;height:100%;min-height:100%;border-radius:0;background:#ffbd16;color:#111;border:0;box-shadow:none;overflow:hidden}.square-slide{display:grid;place-items:center;width:100%;height:100%;min-height:100%;padding:var(--slide-padding);overflow:hidden}.square-slide--yellow{background:#ffbd16}.square-slide--paused{filter:saturate(.92)}.square-slide__image-frame{width:min(100%,100cqh);max-width:100%;max-height:100%;aspect-ratio:1 / 1;overflow:hidden;background:#ffffff29}.square-slide__image{width:100%;height:100%;display:block;object-fit:cover;aspect-ratio:1 / 1}.square-video{display:grid;place-items:center;width:100%;height:100%;min-height:100%;padding:var(--slide-padding);background:#ffbd16}.square-video--paused{filter:saturate(.92)}.square-video__frame{width:min(100%,100cqh);max-width:100%;max-height:100%;aspect-ratio:1 / 1;overflow:hidden;background:#ffffff29}.square-video__media{display:block;width:100%;height:100%;object-fit:cover;object-position:center;background:#000}.equation-focus,.quote-image,.chart-single,.process-flow,.definition-card,.glitch-component-frame{width:100%;height:100%;min-height:100%;background:#ffbd16;color:#111;overflow:hidden}.equation-focus__content,.chart-single__content,.process-flow__content,.definition-card__content,.glitch-component-frame__content{display:grid;height:100%;padding:var(--slide-padding)}.equation-focus__eyebrow,.quote-image__eyebrow,.chart-single__eyebrow,.process-flow__eyebrow,.definition-card__eyebrow,.glitch-component-frame__eyebrow{margin:0;font-size:var(--slide-kicker-size);letter-spacing:.12em;text-transform:uppercase;color:#111111a3}.equation-focus__title,.chart-single__title,.process-flow__title,.definition-card__term,.glitch-component-frame__title{margin:0;font-size:var(--slide-title-size);line-height:1.1;text-transform:uppercase}.chart-single__title{font-size:calc(var(--slide-title-size) * 1.05)}.equation-focus__content{align-content:center;gap:var(--slide-gap)}.equation-focus--square .equation-focus__content{align-content:stretch;justify-items:center;text-align:center;padding:var(--slide-padding);gap:var(--slide-gap)}.equation-focus--square .equation-focus__eyebrow{font-size:calc(var(--slide-kicker-size) * .92)}.equation-focus--square .equation-focus__title{max-width:10ch;font-size:var(--slide-title-compact-size)}.equation-focus__equation-frame{padding:calc(var(--slide-padding) * .9);border:1px solid rgba(17,17,17,.24);background:#ffffff2e}.equation-focus--square .equation-focus__equation-frame{width:100%;padding:calc(var(--slide-padding) * .7)}.equation-focus__equation{display:block;overflow-wrap:anywhere;font-family:Times New Roman,serif;font-size:var(--slide-equation-size);font-style:italic;line-height:1.02;text-align:center}.equation-focus__equation--mathjax{min-height:clamp(5rem,12vw,8.5rem);display:grid;place-items:center;padding:.4rem;font-style:normal;overflow:hidden}.equation-focus--square .equation-focus__equation{font-size:calc(var(--slide-equation-size) * .82)}.equation-focus--square .equation-focus__equation--mathjax{min-height:clamp(3.8rem,9vw,5.8rem)}.equation-focus__equation--mathjax mjx-container{margin:0;max-width:100%;overflow-x:auto;overflow-y:hidden}.equation-focus__equation--loading,.equation-focus__equation--error{font-size:calc(var(--slide-body-size) * 1.08);line-height:1.08;color:#111111db}.equation-focus__equation--loading:before{content:"Loading equation…"}.equation-focus__annotation,.chart-single__body,.definition-card__definition,.definition-card__example{margin:0;max-width:30ch;font-size:var(--slide-body-size);line-height:1.08}.equation-focus--square .equation-focus__annotation{max-width:22ch;font-size:calc(var(--slide-body-size) * .94)}.chart-single__body{font-size:calc(var(--slide-body-size) * 1.08)}.quote-image{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.quote-image--image-right .quote-image__panel--image{order:2}.quote-image--image-right .quote-image__panel--quote{order:1}.quote-image__panel{min-width:0;min-height:0}.quote-image__panel--image{background:#ffffff24}.quote-image__image{width:100%;height:100%;display:block;object-fit:cover}.quote-image__panel--quote{display:grid;place-items:center;padding:var(--slide-padding)}.quote-image__content{display:grid;gap:var(--slide-gap);width:100%}.quote-image__quote{margin:0;max-width:14ch;font-size:var(--slide-quote-size);line-height:.94}.quote-image__attribution{margin:0;font-size:calc(var(--slide-body-size) * 1.3);letter-spacing:.06em;text-transform:uppercase}.chart-single__content{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:var(--slide-gap);align-items:center}.chart-single__copy{display:grid;gap:1.1rem;align-content:center}.chart-single__plot{display:grid;gap:1rem;align-content:center}.chart-single__row{display:grid;grid-template-columns:minmax(0,5.8rem) minmax(0,1fr) auto;gap:.75rem;align-items:center}.chart-single__label,.chart-single__value{font-size:var(--slide-body-size);letter-spacing:.06em;text-transform:uppercase}.chart-single__bar-track{height:1.2rem;background:#11111124;overflow:hidden}.chart-single__bar-fill{height:100%}.process-flow__content{align-content:center;gap:var(--slide-gap)}.process-flow__steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.8rem}.process-flow__step{display:grid;gap:.7rem;align-content:start;min-height:8.5rem;padding:1rem;background:#ffffff2e;border:1px solid rgba(17,17,17,.18)}.process-flow__index{display:inline-grid;place-items:center;width:2rem;height:2rem;background:#111;color:#ffbd16;font-size:var(--slide-meta-size)}.process-flow__label{margin:0;font-size:var(--slide-body-size);line-height:1.04}.definition-card__content{align-content:center;gap:clamp(.8rem,1.5vw,1.2rem)}.definition-card__term{max-width:10ch}.definition-card__definition{max-width:22ch}.definition-card__example{max-width:24ch;padding-top:.8rem;border-top:1px solid rgba(17,17,17,.24);color:#111c}.glitch-component-frame{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:clamp(.75rem,1.6vw,1.1rem);padding:clamp(.85rem,2vw,1.4rem)}.glitch-component-frame--fullscreen{position:relative;display:block;padding:0}.glitch-component-frame__chrome{display:flex;justify-content:space-between;align-items:end;gap:.75rem}.glitch-component-frame--fullscreen .glitch-component-frame__chrome{position:absolute;top:clamp(.6rem,1.5vw,1rem);left:clamp(.6rem,1.5vw,1rem);right:clamp(.6rem,1.5vw,1rem);z-index:2;pointer-events:none}.glitch-component-frame--fullscreen .glitch-component-frame__eyebrow,.glitch-component-frame--fullscreen .glitch-component-frame__id{padding:.28rem .5rem;background:#0000008f;color:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.glitch-component-frame__id{margin:0;font-size:var(--slide-kicker-size);letter-spacing:.08em;text-transform:uppercase;color:#111111bd}.glitch-component-frame__viewport{position:relative;min-height:0;overflow:hidden;border:1px solid rgba(17,17,17,.24);background:#ffffff29}.glitch-component-frame--fullscreen .glitch-component-frame__viewport{position:absolute;top:0;right:0;bottom:0;left:0;border:0;background:#000}.glitch-component-frame__iframe{display:block;width:100%;height:100%;min-height:100%;border:0;background:#000}.glitch-component-frame__caption{margin:0;max-width:28ch;font-size:var(--slide-body-size);line-height:1.08;color:#111111d6}.glitch-component-frame--fullscreen .glitch-component-frame__caption{position:absolute;left:clamp(.6rem,1.5vw,1rem);right:auto;bottom:clamp(.6rem,1.5vw,1rem);z-index:2;max-width:32ch;padding:.36rem .56rem;background:#0000008f;color:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none}.equation-focus--paused,.quote-image--paused,.chart-single--paused,.process-flow--paused,.definition-card--paused,.glitch-component-frame--paused{filter:saturate(.92)}.fullscreen-video{position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;background:#000}.fullscreen-video__media{display:block;width:100%;height:100%;object-fit:cover;background:#000}.fullscreen-video__chrome{position:absolute;top:clamp(.6rem,1.5vw,1rem);left:clamp(.6rem,1.5vw,1rem);right:clamp(.6rem,1.5vw,1rem);z-index:2;pointer-events:none}.fullscreen-video__header{display:inline-block;margin:0;padding:.28rem .5rem;background:#0000008f;color:#ffffffeb;font-size:var(--slide-kicker-size);letter-spacing:.12em;text-transform:uppercase;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.fullscreen-video__caption{position:absolute;left:clamp(.6rem,1.5vw,1rem);right:auto;bottom:clamp(.6rem,1.5vw,1rem);z-index:2;margin:0;max-width:32ch;padding:.36rem .56rem;background:#0000008f;color:#ffffffeb;font-size:var(--slide-body-size);line-height:1.08;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none}.fullscreen-video--paused{filter:saturate(.92)}.fullscreen-video-title{position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;background:#000}.fullscreen-video-title__media{display:block;width:100%;height:100%;object-fit:cover;background:#000}.fullscreen-video-title__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--slide-padding);background:linear-gradient(to bottom,#0000002e,#00000014 35%,#0000004d);pointer-events:none}.fullscreen-video-title__title{margin:0;max-width:10ch;color:#ffbd16;font-size:5em;line-height:.9;letter-spacing:.02em;text-align:center;text-transform:uppercase;text-wrap:balance;text-shadow:0 .08em .24em rgba(0,0,0,.65),0 0 .5em rgba(0,0,0,.2)}.fullscreen-video-title--paused{filter:saturate(.92)}.fullscreen-video-center-caption{position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;background:#000}.fullscreen-video-center-caption__media{display:block;width:100%;height:100%;object-fit:cover;background:#000}.fullscreen-video-center-caption__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--slide-padding);pointer-events:none}.fullscreen-video-center-caption__caption{margin:0;max-width:12ch;color:#ffbd16;font-size:5em;line-height:1.1;letter-spacing:.01em;text-align:center;text-wrap:balance;text-shadow:0 .08em .26em rgba(0,0,0,.7),0 0 .5em rgba(0,0,0,.24)}.fullscreen-video-center-caption--paused{filter:saturate(.92)}.fullscreen-split{display:grid;place-items:center;padding:var(--slide-padding)}.fullscreen-split__panel{overflow:hidden;aspect-ratio:1 / 1}.fullscreen-split__panel--image{background:#ffffff1f}.fullscreen-split__panel--text{display:grid;place-items:center;padding:var(--slide-padding);background:#f5b008}.fullscreen-split__image{width:100%;height:100%;display:block;object-fit:cover}.fullscreen-split__text{display:grid;align-content:center;gap:var(--slide-gap);width:100%;height:100%}.fullscreen-split__eyebrow{margin:0;font-size:calc(var(--slide-kicker-size) * 1.18);letter-spacing:.12em;text-transform:uppercase;color:#111111ad}.fullscreen-split__title{margin:0;max-width:11ch;font-size:var(--slide-title-size);line-height:1.1;letter-spacing:.01em;text-transform:uppercase}.fullscreen-split__body{margin:0;max-width:24ch;font-size:calc(var(--slide-body-size) * 1.15);line-height:1.08}.slide-card,.fallback-slide,.basic-slide{display:grid;align-content:center;gap:var(--slide-gap);padding:var(--slide-padding)}.slide-card h2,.fallback-slide h3,.basic-slide__title{margin:0;font-size:var(--slide-title-size);line-height:1.1;text-transform:uppercase}.slide-card p,.fallback-slide p,.basic-slide__body,.basic-slide__eyebrow,.basic-slide__kicker{margin:0;max-width:28ch;font-size:var(--slide-body-size)}.slide-card--paused,.split-slide--paused,.basic-slide--paused{filter:saturate(.92)}.slide-card--kinetic{position:relative;overflow:hidden;background:radial-gradient(circle at 18% 20%,rgba(255,243,196,.86),transparent 24%),radial-gradient(circle at 80% 72%,rgba(255,255,255,.18),transparent 26%),linear-gradient(135deg,#ffbd16,#f5b008);color:#111;transform-style:preserve-3d}.slide-card__orbs{position:absolute;inset:auto -3rem -2rem auto;display:grid;gap:1rem}.slide-card__orbs span{width:5rem;height:5rem;border-radius:50%;background:#1111111f;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.slide-card .eyebrow,.fallback-slide .eyebrow{color:#111111ad}.split-slide{display:grid;grid-template-columns:1fr auto 1fr;overflow:hidden}.split-slide__panel{display:grid;align-content:center;justify-items:center;gap:var(--slide-gap);padding:var(--slide-padding)}.split-slide__panel span{font-size:var(--slide-kicker-size);letter-spacing:.12em;text-transform:uppercase;color:#111111ad}.split-slide__panel strong{font-size:var(--slide-title-size);text-align:center;line-height:1.02;text-transform:uppercase}.split-slide__panel--left{background:linear-gradient(180deg,#ffc72c,#ffbd16)}.split-slide__panel--right{background:linear-gradient(180deg,#f7b61f,#eaa300)}.split-slide__divider{width:1px;background:#11111152}.fallback-slide{background:linear-gradient(180deg,#ffc72c,#ffbd16)}.fallback-slide code{overflow-wrap:anywhere;color:#111111ad}.basic-slide{padding:var(--slide-padding)}.basic-slide__content{display:grid;align-content:center;gap:var(--slide-gap);height:100%}.basic-slide__eyebrow,.basic-slide__kicker{font-size:var(--slide-kicker-size);letter-spacing:.12em;text-transform:uppercase;color:#111111ad}.basic-slide__title{max-width:10ch}.basic-slide__body{max-width:26ch;line-height:1.12}.basic-slide__accent-bar{width:min(18rem,54%);height:.7rem;background:#111}.carousel-hud{position:absolute;inset:auto 1rem 1rem 1rem;z-index:6;display:grid;gap:.35rem;justify-items:center;max-width:min(24rem,calc(100% - 2rem));padding:.55rem .75rem;border-radius:0;background:#0000009e;color:#fff;box-shadow:0 12px 24px #0000003d;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.carousel-hud--inspect{background:#000c}.carousel-hud__header,.carousel-hud__footer{display:flex;justify-content:space-between;gap:.75rem;width:100%;font-size:82%}.carousel-hud__cue,.carousel-hud__detail{display:grid;gap:.25rem;width:100%}.carousel-hud__author{margin:0;width:100%;font-size:78%;line-height:1.1;text-align:center;color:#ffffffdb}.carousel-hud__cue{justify-items:center;font-size:76%;letter-spacing:.08em;text-transform:uppercase}.carousel-hud__swipe{color:#ffbd16;font-size:84%}.carousel-hud__swipe--vertical{line-height:1}.carousel-hud__track{display:flex;gap:.5rem;justify-content:center}.carousel-hud__dot{display:inline-grid;place-items:center;width:.55rem;height:.55rem;min-width:0;min-height:0;padding:0;border-radius:0;background:#ffffff24;font-size:0}.carousel-hud__dot--active{background:#ffbd16;color:transparent}.resume-control{display:grid;place-items:center;width:100%;height:100%}.resume-control__button{display:grid;place-items:center;width:clamp(3.6rem,11vw,5.4rem);aspect-ratio:1 / 1;padding:0;border:1px solid rgba(255,255,255,.34);border-radius:999px;background:#0000009e;color:#fff;box-shadow:0 16px 28px #00000047;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.resume-control__button:hover{background:#000000c2}.resume-control__button:focus-visible{outline:3px solid rgb(255,189,22);outline-offset:4px}.resume-control__icon{display:block}.resume-control__icon--play{width:0;height:0;margin-left:.18rem;border-top:.85rem solid transparent;border-bottom:.85rem solid transparent;border-left:1.4rem solid #fff}.resume-control__icon--pause{width:1.35rem;height:1.7rem;background:linear-gradient(90deg,#fff 0 36%,transparent 36% 64%,#fff 64% 100%)}kbd{padding:.1rem .4rem;border-radius:0;background:#ffffff2e;border:1px solid rgba(255,255,255,.28)}.lecture-player__alert{padding:.9rem 1rem;border-radius:0;background:#fff0f0eb;border:1px solid rgba(194,45,58,.16)}.lecture-player__alert--overlay{position:absolute;left:1rem;right:1rem;bottom:1rem;z-index:8}.lecture-player__overlay-control{position:absolute;z-index:7;left:var(--stage-gap);top:calc(67% - (var(--video-size) / 2));width:var(--video-size);height:var(--video-size);display:grid;place-items:center;pointer-events:none}.lecture-player__overlay-control .resume-control__button{pointer-events:auto}.lecture-player__scrubber{position:absolute;left:.65rem;right:.65rem;bottom:.35rem;z-index:9;display:grid;gap:.28rem;padding:.28rem .5rem .34rem;background:#000000b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.lecture-player__scrubber-input{width:100%;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;touch-action:none;position:relative;z-index:1}.lecture-player__scrubber-input:focus-visible{outline:none}.lecture-player__scrubber-input::-webkit-slider-runnable-track{height:.28rem;background:linear-gradient(90deg,rgb(255,189,22) 0 var(--scrub-progress),rgba(255,255,255,.24) var(--scrub-progress) 100%)}.lecture-player__scrubber-input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.05rem;height:1.05rem;margin-top:-.39rem;border:1px solid #111;border-radius:999px;background:#ffbd16;box-shadow:0 0 0 2px #00000047}.lecture-player__scrubber-input::-moz-range-track{height:.28rem;background:#ffffff3d}.lecture-player__scrubber-input::-moz-range-progress{height:.28rem;background:#ffbd16}.lecture-player__scrubber-input::-moz-range-thumb{width:1.05rem;height:1.05rem;border:1px solid #111;border-radius:999px;background:#ffbd16;box-shadow:0 0 0 2px #00000047}.lecture-player__scrubber-markers{position:relative;height:1.1rem;z-index:2}.lecture-player__scrubber-marker{position:absolute;left:var(--marker-progress);top:0;transform:translate(-50%);display:grid;gap:.12rem;justify-items:center;min-width:2rem;padding:0;border:0;background:transparent;color:#ffffffd1}.lecture-player__scrubber-marker:before{content:"";width:.12rem;height:.4rem;background:#ffbd16c7}.lecture-player__scrubber-marker-label{display:inline-grid;place-items:center;min-width:1.6rem;padding:.08rem .28rem;background:#ffffff1f;font-size:58%;letter-spacing:.08em;text-transform:uppercase}.lecture-player__scrubber-marker:hover .lecture-player__scrubber-marker-label,.lecture-player__scrubber-marker:focus-visible .lecture-player__scrubber-marker-label{background:#ffbd1661;color:#fff}.lecture-player__scrubber-marker--active .lecture-player__scrubber-marker-label{background:#ffbd16;color:#111}.lecture-player__scrubber-marker:focus-visible{outline:2px solid rgba(255,189,22,.82);outline-offset:2px}.lecture-player__scrubber-marker--active:before{background:#ffbd16}.lecture-player__empty--muted{opacity:0;pointer-events:none}.lecture-player__vote-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;display:grid;place-items:center;padding:clamp(1rem,2.6vw,2rem);background:#0000008f;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.lecture-player__vote-overlay--square,.lecture-player__vote-overlay--fullscreen{top:0;right:0;bottom:0;left:0}.lecture-player__vote-panel{display:grid;gap:clamp(.8rem,1.8vw,1.2rem);justify-items:center;width:min(100%,28rem);padding:clamp(1rem,2.4vw,1.6rem);background:#000000b8;border:1px solid rgba(255,255,255,.14);box-shadow:0 16px 36px #00000057}.lecture-player__vote-label{margin:0;color:#ffbd16;font-size:102%;letter-spacing:.08em;text-transform:uppercase;text-align:center}.lecture-player__vote-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.8rem;width:100%}.lecture-player__vote-button{min-width:clamp(8.25rem,20vw,10.5rem);padding:.68rem .95rem;border:1px solid rgba(255,255,255,.28);background:#ffffff14;color:#fff;font-size:86%;text-transform:uppercase;letter-spacing:.05em;transition:background .14s ease,border-color .14s ease,color .14s ease}.lecture-player__vote-button:hover:not(:disabled){background:#ffbd162e;border-color:#ffbd1694}.lecture-player__vote-button:focus-visible{outline:2px solid rgb(255,189,22);outline-offset:2px}.lecture-player__vote-button:disabled{opacity:.6;cursor:progress}.lecture-player__vote-button--active{background:#ffbd16;border-color:#ffbd16;color:#111}.lecture-player--mobile-landscape{--stage-gap: .75rem;--square-header-size: 300%}.lecture-player--mobile-landscape .video-stage{top:auto;bottom:var(--stage-gap);left:var(--stage-gap);transform:none;width:var(--video-size)}.lecture-player--mobile-landscape .lecture-player__slide-shell{top:var(--stage-gap);right:var(--stage-gap);bottom:var(--stage-gap);left:auto;width:calc((100% - (var(--stage-gap) * 2)) * .67);height:auto;transform:none}.lecture-player--mobile-landscape .lecture-player__overlay-control{left:var(--stage-gap);top:auto;bottom:var(--stage-gap);width:var(--video-size);height:var(--video-size)}.lecture-player--mobile-landscape .lecture-player__scrubber{left:.55rem;right:.55rem;bottom:.3rem}.lecture-player--mobile-landscape .lecture-player__square-header{top:var(--stage-gap);left:var(--stage-gap);width:var(--video-size);padding:0 .25rem;line-height:.9;letter-spacing:.05em}.lecture-player--mobile-landscape .slide-host,.lecture-player--mobile-landscape .slide-host--square,.lecture-player--mobile-landscape .lecture-player__gesture-layer{width:100%;height:100%;min-height:0}.lecture-player--mobile-landscape .slide-host--square{padding:0}.lecture-player--desktop .fullscreen-split,.lecture-player--mobile-landscape .fullscreen-split{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);align-content:center;justify-content:center;gap:clamp(1rem,2.2vw,1.6rem)}.lecture-player--desktop .fullscreen-split--image-right .fullscreen-split__panel--image,.lecture-player--mobile-landscape .fullscreen-split--image-right .fullscreen-split__panel--image{order:2}.lecture-player--desktop .fullscreen-split--image-right .fullscreen-split__panel--text,.lecture-player--mobile-landscape .fullscreen-split--image-right .fullscreen-split__panel--text{order:1}.lecture-player--desktop .quote-image,.lecture-player--mobile-landscape .quote-image{grid-template-columns:repeat(2,minmax(0,1fr))}.lecture-player--mobile-portrait{--stage-width-ratio: 1;--stage-height-ratio: 2;--stage-gap: 0;--player-font-size: clamp(9px, 2.5cqi, 16px);--square-header-size: 300%;--video-size: 100%}.lecture-player--mobile-portrait .video-stage{top:auto;bottom:0;left:50%;transform:none;width:var(--video-size);height:50%;gap:0;margin-left:-50%}.lecture-player--mobile-portrait .video-stage__window{width:100%;height:100%}.lecture-player--mobile-portrait .video-stage__next{display:none}.lecture-player--mobile-portrait .lecture-player__slide-shell{top:0;left:0;right:0;bottom:50%}.lecture-player--mobile-portrait .lecture-player__gesture-layer,.lecture-player--mobile-portrait .slide-host,.lecture-player--mobile-portrait .slide-host--square{width:100%;height:100%;min-height:0;padding:0}.lecture-player--mobile-portrait .slide-host--fullscreen{top:0;right:0;bottom:0;left:0;padding:0}.lecture-player--mobile-portrait .lecture-player__fullscreen-layer{top:0;right:0;bottom:0;left:0}.lecture-player--mobile-portrait .lecture-player__square-header{top:auto;left:.9rem;right:.9rem;width:auto;top:calc(52% - .1rem);line-height:.88;letter-spacing:.045em}.lecture-player--mobile-portrait .lecture-player__overlay-control{left:0;right:0;top:auto;bottom:0;width:100%;height:50%}.lecture-player--mobile-portrait .lecture-player__scrubber{left:.35rem;right:.35rem;bottom:.18rem;padding-bottom:calc(.28rem + env(safe-area-inset-bottom))}.lecture-player--mobile-portrait .lecture-player__scrubber-marker-label{min-width:1.4rem;font-size:54%}.lecture-player--mobile-portrait .slide-card,.lecture-player--mobile-portrait .split-slide,.lecture-player--mobile-portrait .fallback-slide,.lecture-player--mobile-portrait .fullscreen-split,.lecture-player--mobile-portrait .equation-focus,.lecture-player--mobile-portrait .quote-image,.lecture-player--mobile-portrait .chart-single,.lecture-player--mobile-portrait .process-flow,.lecture-player--mobile-portrait .definition-card,.lecture-player--mobile-portrait .glitch-component-frame,.lecture-player--mobile-portrait .lecture-player__empty{border-radius:0;box-shadow:none}.lecture-player--mobile-portrait .quote-image,.lecture-player--mobile-portrait .chart-single__content{grid-template-columns:1fr}.lecture-player--mobile-portrait .quote-image__panel--quote,.lecture-player--mobile-portrait .equation-focus__content,.lecture-player--mobile-portrait .chart-single__content,.lecture-player--mobile-portrait .process-flow__content,.lecture-player--mobile-portrait .definition-card__content,.lecture-player--mobile-portrait .glitch-component-frame__content{padding:.9rem}.lecture-player--mobile-portrait .quote-image__quote{max-width:12ch;font-size:var(--slide-quote-size)}.lecture-player--mobile-portrait .equation-focus__equation--mathjax{min-height:4.6rem;padding:.2rem}.lecture-player--mobile-portrait .equation-focus__title,.lecture-player--mobile-portrait .chart-single__title,.lecture-player--mobile-portrait .process-flow__title,.lecture-player--mobile-portrait .definition-card__term,.lecture-player--mobile-portrait .glitch-component-frame__title{font-size:var(--slide-title-size)}.lecture-player--mobile-portrait .equation-focus__annotation,.lecture-player--mobile-portrait .chart-single__body,.lecture-player--mobile-portrait .definition-card__definition,.lecture-player--mobile-portrait .definition-card__example,.lecture-player--mobile-portrait .process-flow__label,.lecture-player--mobile-portrait .glitch-component-frame__caption{font-size:var(--slide-body-size)}.lecture-player--mobile-portrait .chart-single__row{grid-template-columns:minmax(0,4.8rem) minmax(0,1fr) auto;gap:.5rem}.lecture-player--mobile-portrait .process-flow__steps{grid-template-columns:repeat(2,minmax(0,1fr))}.lecture-player--mobile-portrait .slide-card,.lecture-player--mobile-portrait .fallback-slide{align-content:center}.lecture-player--mobile-portrait .split-slide__panel{min-height:0}.lecture-player--mobile-portrait .fullscreen-split{align-content:center;gap:.9rem;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,1.5fr)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}} diff --git a/dist/vendor/gnommoplayer.js b/dist/vendor/gnommoplayer.js new file mode 100644 index 0000000..9133b5c --- /dev/null +++ b/dist/vendor/gnommoplayer.js @@ -0,0 +1,2425 @@ +var ct = Object.defineProperty; +var at = (t, r, e) => r in t ? ct(t, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[r] = e; +var Ae = (t, r, e) => at(t, typeof r != "symbol" ? r + "" : r, e); +import { jsxs as f, jsx as l } from "react/jsx-runtime"; +import { Component as ot, useState as q, useEffect as y, useRef as O } from "react"; +function fe(t) { + return t === "mobile-portrait" ? "horizontal" : "vertical"; +} +function nt({ + baselineIndex: t, + dragDistance: r, + totalCandidates: e, + dragSpan: i +}) { + if (e <= 1) + return 0; + const c = Math.max(i, 120), a = c * 0.25, n = Math.abs(r), u = Math.sign(r), s = n < a ? 0 : u * (1 + Math.floor((n - a) / c)), d = t + s; + return Math.min(e - 1, Math.max(0, d)); +} +function ut(t, r) { + return !!(t && r && t !== r); +} +function dt({ + candidates: t, + displayMode: r, + activeGlitchSlide: e, + isInspecting: i, + isDragging: c, + viewportMode: a +}) { + if (t.length <= 1) + return null; + const n = t.findIndex( + (u) => u.id === e.id + ); + return /* @__PURE__ */ f( + "div", + { + className: `carousel-hud ${i ? "carousel-hud--inspect" : ""}`, + "aria-live": "polite", + children: [ + /* @__PURE__ */ l("div", { className: "carousel-hud__track", "aria-label": "Glitch slide candidates", children: t.map((u, s) => /* @__PURE__ */ l( + "span", + { + className: `carousel-hud__dot ${u.id === e.id ? "carousel-hud__dot--active" : ""}`, + title: `${u.id} (${Math.round(u.score * 100)} score)`, + children: s + 1 + }, + u.id + )) }), + i ? /* @__PURE__ */ f("div", { className: "carousel-hud__detail", children: [ + /* @__PURE__ */ f("div", { className: "carousel-hud__header", children: [ + /* @__PURE__ */ l("span", { children: r === "fullscreen" ? "Fullscreen" : "Square" }), + /* @__PURE__ */ l("span", { children: c ? "Browsing alternates" : "Inspecting" }) + ] }), + e.authorName ? /* @__PURE__ */ f("p", { className: "carousel-hud__author", children: [ + "By ", + e.authorName + ] }) : null, + /* @__PURE__ */ f("div", { className: "carousel-hud__footer", children: [ + /* @__PURE__ */ l("strong", { children: e.id }), + /* @__PURE__ */ f("span", { children: [ + n + 1, + "/", + t.length + ] }) + ] }) + ] }) : null + ] + } + ); +} +function pt({ + pauseMode: t, + pendingVote: r, + onResume: e, + onPause: i +}) { + const c = t === "playing", a = c ? "Pause playback" : r ? "Resume playback and record vote" : "Resume playback"; + return /* @__PURE__ */ l("div", { className: "resume-control", children: /* @__PURE__ */ l( + "button", + { + type: "button", + className: "resume-control__button", + "aria-label": a, + title: a, + onClick: c ? i : e, + children: /* @__PURE__ */ l( + "span", + { + className: `resume-control__icon ${c ? "resume-control__icon--pause" : "resume-control__icon--play"}`, + "aria-hidden": "true" + } + ) + } + ) }); +} +const Re = /* @__PURE__ */ new Map(), Ir = { + ChartSingle: () => Promise.resolve().then(() => Bt), + DefinitionCard: () => Promise.resolve().then(() => Yt), + EquationFocus: () => Promise.resolve().then(() => Xt), + FullscreenSplit: () => Promise.resolve().then(() => Zt), + FullscreenVideo: () => Promise.resolve().then(() => Ct), + FullscreenVideoCenterCaption: () => Promise.resolve().then(() => er), + FullscreenVideoTitle: () => Promise.resolve().then(() => lr), + GlitchComponentFrame: () => Promise.resolve().then(() => nr), + ProcessFlow: () => Promise.resolve().then(() => pr), + QuoteImage: () => Promise.resolve().then(() => fr), + SquareVideo: () => Promise.resolve().then(() => Sr), + SquareYellow: () => Promise.resolve().then(() => br) +}; +function Je(t, r) { + const e = Re.get(r); + if (e) + return e; + const i = t[r]; + if (!i) + return Promise.reject(new Error(`Unknown slide component: ${r}`)); + const c = i(); + return Re.set(r, c), c; +} +async function je(t, r) { + const e = /* @__PURE__ */ new Set(); + r.forEach((i) => { + i.glitchSlides.forEach((c) => { + e.add(c.componentKey); + }); + }), await Promise.allSettled( + [...e].map( + (i) => Je(t, i) + ) + ); +} +class mt extends ot { + constructor() { + super(...arguments); + Ae(this, "state", { + hasError: !1 + }); + } + static getDerivedStateFromError() { + return { + hasError: !0 + }; + } + componentDidCatch(e, i) { + console.error("Slide runtime crashed", e, i); + } + componentDidUpdate(e) { + e.children !== this.props.children && this.state.hasError && this.setState({ hasError: !1 }); + } + render() { + return this.state.hasError ? this.props.fallback : this.props.children; + } +} +function te({ reason: t }) { + return /* @__PURE__ */ f("article", { className: "fallback-slide", children: [ + /* @__PURE__ */ l("p", { className: "eyebrow", children: "Fallback slide" }), + /* @__PURE__ */ l("h3", { children: "Component unavailable" }), + /* @__PURE__ */ l("p", { children: "The player kept running even though this candidate could not render." }), + t ? /* @__PURE__ */ l("code", { children: t }) : null + ] }); +} +function he({ + lectureId: t, + slide: r, + glitchSlide: e, + slideRegistry: i, + paused: c, + onMediaLoadingChange: a +}) { + const [n, u] = q(null), [s, d] = q(null); + y(() => { + let v = !1; + return d(null), u(null), Je(i, e.componentKey).then((S) => { + v || (d(null), u(() => S.default)); + }).catch((S) => { + v || (u(null), d( + S instanceof Error ? S.message : "Failed to load slide component." + )); + }), () => { + v = !0; + }; + }, [e.componentKey, i]); + const P = { + lectureId: t, + slideId: r.id, + glitchSlideId: e.id, + displayMode: r.displayMode, + props: e.props, + latexString: e.latexString, + paused: c, + onMediaLoadingChange: a + }; + return /* @__PURE__ */ l(mt, { fallback: /* @__PURE__ */ l(te, { reason: s }), children: n ? /* @__PURE__ */ l(n, { ...P }) : s ? /* @__PURE__ */ l(te, { reason: s }) : /* @__PURE__ */ l(te, { reason: "Loading candidate module..." }) }); +} +function ft({ + lectureId: t, + slide: r, + glitchSlide: e, + candidates: i, + slideRegistry: c, + paused: a, + isInspecting: n, + isSettling: u, + viewportMode: s, + dragBaselineGlitchSlideId: d, + dragOffsetPx: P, + onMediaLoadingChange: v +}) { + const S = fe(s), b = i.findIndex( + (E) => E.id === e.id + ), N = i.findIndex( + (E) => E.id === d + ), _ = i.length > 1, A = n && N !== -1 ? N : Math.max(b, 0), j = n ? P : 0, V = S === "horizontal" ? `translate3d(calc(${-A * 100}% + ${j}px), 0, 0)` : `translate3d(0, calc(${-A * 100}% + ${j}px), 0)`; + return /* @__PURE__ */ l( + "div", + { + className: `slide-host slide-host--${r.displayMode} ${n ? "slide-host--inspect" : ""}`, + "data-testid": `slide-host-${r.displayMode}`, + children: _ ? /* @__PURE__ */ l("div", { className: "slide-host__viewport", children: /* @__PURE__ */ l( + "div", + { + className: `slide-host__track slide-host__track--${S} ${u ? "slide-host__track--settling" : ""}`, + style: { transform: V }, + children: i.map((E) => /* @__PURE__ */ l( + "div", + { + className: `slide-host__item ${E.id === e.id ? "slide-host__item--active" : ""}`, + children: /* @__PURE__ */ l( + he, + { + lectureId: t, + slide: r, + glitchSlide: E, + slideRegistry: c, + paused: a || E.id !== e.id, + onMediaLoadingChange: E.id === e.id ? v : void 0 + } + ) + }, + E.id + )) + } + ) }) : /* @__PURE__ */ l( + he, + { + lectureId: t, + slide: r, + glitchSlide: e, + slideRegistry: c, + paused: a, + onMediaLoadingChange: v + } + ) + } + ); +} +function Ue(t, r) { + return Math.min(r, Math.max(0, t)); +} +function ht(t, r) { + for (const e of t) + if (r >= e.startTimeSec && r < e.startTimeSec + e.durationSec) + return e; + return t[t.length - 1] ?? null; +} +function St(t, r) { + const e = t.findIndex((i) => i.id === r); + return e === -1 ? null : t[e + 1] ?? null; +} +function yt(t, r) { + return Math.min( + t.durationSec, + Math.max(0, r - t.startTimeSec) + ); +} +function bt(t, r, e) { + var a; + const i = t.findIndex((n) => n.id === r); + if (i === -1) + return e; + const c = t[i]; + return c.endTimeSec != null ? c.endTimeSec : ((a = t[i + 1]) == null ? void 0 : a.startTimeSec) ?? e; +} +function Se(t, r, e) { + for (const i of t) { + if (i.startTimeSec == null) + continue; + const c = bt(t, i.id, e); + if (r >= i.startTimeSec && r < c) + return i; + } + return null; +} +function ve(t, r) { + const e = t.glitchSlides.filter( + (c) => c.orientation === r + ); + if (e.length > 0) + return e; + const i = t.glitchSlides.filter( + (c) => !c.orientation || c.orientation === "any" + ); + return i.length > 0 ? i : t.glitchSlides; +} +function _e(t, r, e) { + const i = ve(t, r); + if (e) { + const a = i.find( + (n) => n.id === e + ); + if (a) + return a; + } + return [...i].sort( + (a, n) => n.score - a.score + )[0]; +} +function vt(t, r, e, i) { + const c = Se(t, r, e), a = c ? t.findIndex((n) => n.id === c.id) : -1; + return t.slice(a + 1, a + 1 + i); +} +function Ke(t, r) { + try { + const e = t.play(); + e && typeof e.catch == "function" && e.catch(() => { + r(); + }); + } catch { + r(); + } +} +function _t({ + segment: t, + nextSegment: r, + globalTimeSec: e, + lectureDurationSec: i, + pauseMode: c, + viewportMode: a, + onGlobalTimeChange: n, + onSegmentError: u, + onAutoplayBlocked: s, + onTogglePlayback: d +}) { + const P = O(null), v = O(0), S = t ? yt(t, e) : 0; + return y(() => { + const b = P.current; + if (!b || !t) + return; + Math.abs(b.currentTime - S) > 0.45 && (b.currentTime = S, v.current = S); + }, [S, t == null ? void 0 : t.id]), y(() => { + const b = P.current; + if (b) { + if (c === "playing") { + Ke(b, s); + return; + } + b.pause(); + } + }, [s, c, t == null ? void 0 : t.id]), t ? /* @__PURE__ */ f("div", { className: `video-stage video-stage--${a}`, children: [ + /* @__PURE__ */ f( + "div", + { + className: "video-stage__window", + role: "button", + tabIndex: 0, + "aria-label": c === "playing" ? "Pause video" : "Resume video", + onClick: d, + onKeyDown: (b) => { + (b.key === " " || b.key === "Enter") && (b.preventDefault(), d()); + }, + children: [ + /* @__PURE__ */ l( + "video", + { + ref: P, + className: "video-stage__video", + preload: "auto", + autoPlay: !0, + muted: !0, + playsInline: !0, + controls: !1, + poster: t.poster, + src: t.src, + onLoadedMetadata: (b) => { + const N = b.currentTarget; + N.currentTime = S, v.current = S, c === "playing" && Ke(N, s); + }, + onTimeUpdate: (b) => { + const N = b.currentTarget, _ = Math.min(N.currentTime, t.durationSec); + v.current = _, n(t.startTimeSec + _), _ >= t.durationSec - 0.08 && t.startTimeSec + t.durationSec < i && n(t.startTimeSec + t.durationSec); + }, + onEnded: () => { + n(t.startTimeSec + t.durationSec); + }, + onError: () => { + u(`Failed to load ${t.id}. Retry by resuming playback.`); + } + }, + t.id + ), + /* @__PURE__ */ f("div", { className: "video-stage__meta", children: [ + /* @__PURE__ */ l("span", { children: t.id }), + /* @__PURE__ */ f("span", { children: [ + Math.min(v.current, t.durationSec).toFixed(1), + " /", + " ", + t.durationSec.toFixed(1), + "s" + ] }) + ] }) + ] + } + ), + /* @__PURE__ */ f("div", { className: "video-stage__next", children: [ + /* @__PURE__ */ l("span", { children: "Up next" }), + /* @__PURE__ */ l("strong", { children: (r == null ? void 0 : r.id) ?? "End of lecture" }) + ] }) + ] }) : /* @__PURE__ */ l("div", { className: `video-stage video-stage--${a}`, children: /* @__PURE__ */ f("div", { className: "video-stage__placeholder", children: [ + /* @__PURE__ */ l("p", { className: "eyebrow", children: "Video pending" }), + /* @__PURE__ */ l("p", { children: "No active segment is available at this lecture time." }) + ] }) }); +} +function B(t, r) { + console.log("[player-event]", r), t == null || t(r); +} +const ze = /* @__PURE__ */ new Set(); +function ye(t) { + if (typeof document > "u" || ze.has(t.id)) + return; + const r = document.createElement("video"); + r.preload = "metadata", r.src = t.src, ze.add(t.id); +} +function xt(t) { + t.forEach((r) => { + ye(r); + }); +} +function qr() { + return typeof crypto < "u" && "randomUUID" in crypto ? crypto.randomUUID() : `sess-${Math.random().toString(36).slice(2, 10)}`; +} +function Be(t) { + var e; + if (typeof navigator > "u") + return { + viewportMode: t, + userAgent: "server", + platform: "server" + }; + const r = navigator; + return { + viewportMode: t, + userAgent: navigator.userAgent, + platform: ((e = r.userAgentData) == null ? void 0 : e.platform) ?? navigator.platform + }; +} +const wt = 220, Nt = 1600; +function me(t, r) { + return `${t}:${r}`; +} +function He(t, r) { + return t <= 900 ? r >= t ? "mobile-portrait" : "mobile-landscape" : "desktop"; +} +function Ye(t, r, e) { + const i = Qe( + t, + r, + e + ); + return !i || i.startTimeSec == null ? 0 : i.startTimeSec; +} +function Qe(t, r, e) { + return r ? t.slides.find((i) => i.id === r) ?? null : typeof e == "number" && e >= 0 && e < t.slides.length ? t.slides[e] : null; +} +function Xe({ + presentation: t, + slideRegistry: r, + mode: e = "playback", + targetSlideId: i, + targetSlideIndex: c, + onEvent: a, + onVoteCommit: n, + initialSessionId: u +}) { + const s = t, [d, P] = q( + () => Ye(s, i, c) + ), [v, S] = q( + e === "slide-preview" + ), [b, N] = q({}), [_, A] = q(null), [j, V] = q(!1), [E, re] = q(null), [le, xe] = q(!1), [$, Q] = q(!1), [Ze, ie] = q(!1), [we, Me] = q(null), [D, Ce] = q( + () => typeof window > "u" || typeof document > "u" ? "desktop" : He( + document.documentElement.clientWidth, + document.documentElement.clientHeight + ) + ), [Ne] = q( + () => u ?? `sess-${Math.random().toString(36).slice(2, 10)}` + ), [U, g] = q({ + isScrubbing: !1, + previewTimeSec: 0, + resumeWasManuallyPaused: !1 + }), [h, Y] = q({ + pointerId: null, + startX: 0, + startY: 0, + dragSpan: 320, + dragOffsetPx: 0, + isSettling: !1, + resumeWasManuallyPaused: !1, + baselineGlitchSlideId: null, + previewGlitchSlideId: null + }), [Le, Pe] = q(!0), Ie = O(null), se = O(null), ce = O(null), qe = O(!1), k = O(null), W = O(null), G = ht(s.segments, d), Z = G ? St(s.segments, G.id) : null, p = (e === "slide-preview" ? Qe(s, i, c) : null) ?? Se(s.slides, d, s.durationSec), K = p ? ve(p, D) : [], et = p ? b[me(p.id, D)] : void 0, I = p ? _e(p, D, et) : null, x = (p ? K.find( + (o) => o.id === h.previewGlitchSlideId + ) ?? null : null) ?? I, J = v ? "full-paused" : U.isScrubbing || $ || h.isSettling || Ze ? "soft-paused" : "playing", ae = U.isScrubbing ? U.previewTimeSec : d, oe = Se( + s.slides, + ae, + s.durationSec + ), Te = $ || h.isSettling, tt = v || U.isScrubbing || $ || h.isSettling || Le, rt = (p == null ? void 0 : p.displayMode) === "fullscreen", Fe = (p == null ? void 0 : p.displayMode) === "square" && x && (x.componentKey === "SquareYellow" || x.componentKey === "SquareVideo") && typeof x.props.header == "string" ? x.props.header : null; + p && b[me(p.id, D)], y(() => { + const o = Ie.current; + if (!o || typeof ResizeObserver > "u") + return; + const m = new ResizeObserver((w) => { + const z = w[0]; + z && Ce( + He(z.contentRect.width, z.contentRect.height) + ); + }); + return m.observe(o), () => { + m.disconnect(); + }; + }, []), y(() => { + const o = Ye( + s, + i, + c + ); + P(o), S(e === "slide-preview"), V(!1), re(null), A(null), ie(!1); + }, [s.id, s.slides, e, i, c]), y(() => { + ie(!1); + }, [p == null ? void 0 : p.id, x == null ? void 0 : x.id]), y(() => { + B(a, { + type: "lecture_loaded", + lectureId: s.id + }); + }, [s.id, a]), y(() => { + G && (ye(G), Z && ye(Z)); + }, [G, Z]), y(() => { + xt(s.segments.slice(0, 2)); + }, [s.segments]), y(() => { + if (!p) + return; + je(r, [p]); + const o = vt( + s.slides, + d, + s.durationSec, + 2 + ); + je(r, o); + }, [p, d, s.durationSec, s.slides, r]), y(() => { + if (!G) { + se.current = null; + return; + } + se.current !== G.id && (se.current = G.id, B(a, { + type: "segment_changed", + lectureId: s.id, + segmentId: G.id, + atSec: Number(d.toFixed(2)) + })); + }, [G, d, s.id, a]), y(() => { + const o = p && x ? `${p.id}:${x.id}` : null; + if (!o) { + ce.current = null; + return; + } + ce.current !== o && (p && x && B(a, { + type: "slide_activated", + lectureId: s.id, + slideId: p.id, + glitchSlideId: x.id, + atSec: Number(d.toFixed(2)) + }), ce.current = o); + }, [x, p, d, s.id, a]), y(() => { + Y((o) => ({ + ...o, + dragOffsetPx: 0, + isSettling: !1, + baselineGlitchSlideId: (I == null ? void 0 : I.id) ?? null, + previewGlitchSlideId: null + })), Q(!1); + }, [p == null ? void 0 : p.id]), y(() => { + h.pointerId !== null || h.isSettling || $ || Y((o) => ({ + ...o, + baselineGlitchSlideId: (I == null ? void 0 : I.id) ?? null, + previewGlitchSlideId: null + })); + }, [ + I == null ? void 0 : I.id, + h.pointerId, + h.isSettling, + $ + ]), y(() => { + const o = (m) => { + if (m.key !== " " && m.key.toLowerCase() !== "k") + return; + const w = document.activeElement; + w && ["INPUT", "TEXTAREA", "BUTTON"].includes(w.tagName) || (m.preventDefault(), J === "playing" ? S(!0) : de()); + }; + return window.addEventListener("keydown", o), () => { + window.removeEventListener("keydown", o); + }; + }, [J, _, p, x, d]), y(() => () => { + k.current !== null && window.clearTimeout(k.current), W.current !== null && window.clearTimeout(W.current); + }, []); + function H() { + Pe(!0), W.current !== null && (window.clearTimeout(W.current), W.current = null), !(v || U.isScrubbing || $ || h.isSettling) && (W.current = window.setTimeout(() => { + Pe(!1), W.current = null; + }, Nt)); + } + y(() => { + H(); + }, [v, U.isScrubbing, $, h.isSettling]); + function ne(o) { + P(Ue(o, s.durationSec)); + } + function $e() { + H(), V(!1), S(!0), g({ + isScrubbing: !0, + previewTimeSec: d, + resumeWasManuallyPaused: v + }); + } + function lt(o) { + const m = Ue(Number(o), s.durationSec); + g((w) => ({ + ...w, + previewTimeSec: m + })), ne(m); + } + function M() { + g((o) => ({ + ...o, + isScrubbing: !1 + })); + } + function De(o) { + H(), V(!1), S(!0), k.current !== null && (window.clearTimeout(k.current), k.current = null), Q(!1), g((m) => ({ + ...m, + isScrubbing: !1, + previewTimeSec: o + })), Y((m) => ({ + ...m, + pointerId: null, + dragOffsetPx: 0, + isSettling: !1, + previewGlitchSlideId: null + })), ne(o); + } + function X() { + k.current !== null && (window.clearTimeout(k.current), k.current = null), Y((o) => ({ + ...o, + pointerId: null, + dragOffsetPx: 0, + isSettling: !1, + previewGlitchSlideId: null + })), Q(!1); + } + function Oe(o, m) { + k.current !== null && window.clearTimeout(k.current), Q(!1), Y((w) => ({ + ...w, + pointerId: null, + dragOffsetPx: o, + isSettling: !0 + })), k.current = window.setTimeout(() => { + k.current = null, m(); + }, wt); + } + function it(o) { + if (!p || !I) + return; + H(), V(!1); + const m = o.currentTarget.getBoundingClientRect(); + typeof o.currentTarget.setPointerCapture == "function" && o.currentTarget.setPointerCapture(o.pointerId); + const w = fe(D); + Y({ + pointerId: o.pointerId, + startX: o.clientX, + startY: o.clientY, + dragSpan: Math.max(w === "horizontal" ? m.width : m.height, 240), + dragOffsetPx: 0, + isSettling: !1, + resumeWasManuallyPaused: v, + baselineGlitchSlideId: I.id, + previewGlitchSlideId: null + }); + } + function st(o) { + if (!p || h.pointerId !== o.pointerId) + return; + const m = fe(D), w = o.clientX - h.startX, z = o.clientY - h.startY, R = m === "horizontal" ? w : z; + if (!$ && Math.abs(R) < 24) + return; + H(), $ || (Q(!0), h.resumeWasManuallyPaused || B(a, { + type: "soft_pause_started", + lectureId: s.id, + slideId: p.id, + atSec: Number(d.toFixed(2)) + })); + const T = K.findIndex( + (pe) => pe.id === h.baselineGlitchSlideId + ), C = Math.min( + Math.max( + R, + -(K.length - 1 - Math.max(T, 0)) * h.dragSpan + ), + Math.max(T, 0) * h.dragSpan + ), L = nt({ + baselineIndex: T === -1 ? 0 : T, + dragDistance: -C, + totalCandidates: K.length, + dragSpan: h.dragSpan + }), F = K[L]; + F && F.id !== h.previewGlitchSlideId && F.id !== h.baselineGlitchSlideId && B(a, { + type: "glitch_slide_changed", + lectureId: s.id, + slideId: p.id, + from: h.previewGlitchSlideId ?? h.baselineGlitchSlideId ?? F.id, + to: F.id, + atSec: Number(d.toFixed(2)) + }), Y((pe) => ({ + ...pe, + dragOffsetPx: C, + previewGlitchSlideId: (F == null ? void 0 : F.id) ?? null + })); + } + function ue(o) { + if (!p || h.pointerId !== o) { + X(); + return; + } + const m = h.previewGlitchSlideId ?? h.baselineGlitchSlideId ?? (I == null ? void 0 : I.id) ?? null, w = h.baselineGlitchSlideId ?? (I == null ? void 0 : I.id) ?? null, z = ut( + w, + m + ); + if (!$) { + if (p.displayMode === "fullscreen") { + X(), ke(); + return; + } + X(); + return; + } + if (!z) { + const R = h.resumeWasManuallyPaused; + Oe(0, () => { + R || B(a, { + type: "soft_pause_ended", + lectureId: s.id, + slideId: p.id, + atSec: Number(d.toFixed(2)) + }), R || A(null), X(); + }); + return; + } + if (w && m) { + N((F) => ({ + ...F, + [me(p.id, D)]: m + })); + const R = K.findIndex( + (F) => F.id === w + ), T = K.findIndex( + (F) => F.id === m + ), C = R === -1 || T === -1 ? 0 : (R - T) * h.dragSpan, L = h.resumeWasManuallyPaused; + Oe(C, () => { + L || B(a, { + type: "soft_pause_ended", + lectureId: s.id, + slideId: p.id, + atSec: Number(d.toFixed(2)) + }), L || A(null), X(); + }); + } + } + async function de() { + if (V(!1), _) { + const o = { + lectureId: _.lectureId, + slideId: _.slideId, + previousGlitchSlideId: _.previousGlitchSlideId, + selectedGlitchSlideId: _.selectedGlitchSlideId, + sessionId: Ne, + timestamp: (/* @__PURE__ */ new Date()).toISOString(), + deviceContext: Be(D) + }; + await (n == null ? void 0 : n(o)), B(a, { + type: "vote_committed", + lectureId: o.lectureId, + slideId: o.slideId, + selectedGlitchSlideId: o.selectedGlitchSlideId, + previousGlitchSlideId: o.previousGlitchSlideId, + atSec: Number(d.toFixed(2)) + }), A(null); + } + S(!1); + } + async function Ee(o) { + if (!p || !x || le) + return; + xe(!0), re(o); + const m = { + lectureId: s.id, + slideId: p.id, + previousGlitchSlideId: x.id, + selectedGlitchSlideId: x.id, + voteDirection: o, + sessionId: Ne, + timestamp: (/* @__PURE__ */ new Date()).toISOString(), + deviceContext: Be(D) + }; + try { + await (n == null ? void 0 : n(m)), B(a, { + type: "vote_committed", + lectureId: m.lectureId, + slideId: m.slideId, + selectedGlitchSlideId: m.selectedGlitchSlideId, + previousGlitchSlideId: m.previousGlitchSlideId, + voteDirection: o, + atSec: Number(d.toFixed(2)) + }); + } finally { + xe(!1); + } + } + function ke() { + if (H(), J === "playing") { + S(!0), re(null), V(!0); + return; + } + v && de(); + } + function Ve(o) { + return !j || !p || !x || p.displayMode !== o ? null : /* @__PURE__ */ l( + "div", + { + className: `lecture-player__vote-overlay lecture-player__vote-overlay--${o}`, + role: "dialog", + "aria-label": "Vote on slide", + onClick: (m) => m.stopPropagation(), + children: /* @__PURE__ */ f("div", { className: "lecture-player__vote-panel", children: [ + /* @__PURE__ */ l("p", { className: "lecture-player__vote-label", children: "Rate This Slide" }), + /* @__PURE__ */ f("div", { className: "lecture-player__vote-actions", children: [ + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `lecture-player__vote-button ${E === "up" ? "lecture-player__vote-button--active" : ""}`, + onClick: (m) => { + m.stopPropagation(), Ee("up"); + }, + disabled: le, + children: "Upvote" + } + ), + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `lecture-player__vote-button ${E === "down" ? "lecture-player__vote-button--active" : ""}`, + onClick: (m) => { + m.stopPropagation(), Ee("down"); + }, + disabled: le, + children: "Downvote" + } + ) + ] }) + ] }) + } + ); + } + function Ge(o) { + return !p || !x ? o === "fullscreen" ? null : /* @__PURE__ */ f("div", { className: "lecture-player__empty", children: [ + /* @__PURE__ */ l("p", { className: "eyebrow", children: "No slide available" }), + /* @__PURE__ */ l("p", { children: "Enroll at glitch.university, and help make this slide!." }) + ] }) : p.displayMode !== o ? o === "fullscreen" ? null : /* @__PURE__ */ l( + "div", + { + className: "lecture-player__empty lecture-player__empty--muted", + "aria-hidden": "true" + } + ) : /* @__PURE__ */ f( + "div", + { + className: "lecture-player__gesture-layer", + onPointerDown: it, + onPointerMove: st, + onPointerUp: (m) => ue(m.pointerId), + onPointerCancel: (m) => ue(m.pointerId), + onPointerLeave: (m) => { + $ && ue(m.pointerId); + }, + children: [ + /* @__PURE__ */ l( + ft, + { + lectureId: s.id, + slide: p, + glitchSlide: x, + candidates: K, + slideRegistry: r, + paused: J !== "playing", + isInspecting: Te, + isSettling: h.isSettling, + viewportMode: D, + dragBaselineGlitchSlideId: h.baselineGlitchSlideId, + dragOffsetPx: h.dragOffsetPx, + onMediaLoadingChange: ie + } + ), + /* @__PURE__ */ l( + dt, + { + candidates: K, + displayMode: p.displayMode, + activeGlitchSlide: x, + isInspecting: Te, + isDragging: $, + viewportMode: D + } + ) + ] + } + ); + } + return /* @__PURE__ */ l( + "div", + { + ref: Ie, + className: `lecture-player lecture-player--${D} ${(p == null ? void 0 : p.displayMode) === "fullscreen" ? "lecture-player--fullscreen" : ""}`, + "data-testid": "lecture-player", + children: /* @__PURE__ */ l("div", { className: "lecture-player__stage", children: /* @__PURE__ */ f( + "div", + { + className: "lecture-player__stage-frame", + onPointerMove: () => { + !$ && !U.isScrubbing && H(); + }, + onPointerDown: () => H(), + children: [ + /* @__PURE__ */ l( + _t, + { + segment: G, + nextSegment: Z, + globalTimeSec: d, + lectureDurationSec: s.durationSec, + pauseMode: J, + viewportMode: D, + onTogglePlayback: ke, + onAutoplayBlocked: () => { + qe.current || (qe.current = !0, S(!0)); + }, + onSegmentError: (o) => Me(o), + onGlobalTimeChange: ne + } + ), + Fe ? /* @__PURE__ */ l("div", { className: "lecture-player__square-header", "aria-live": "polite", children: Fe }) : null, + /* @__PURE__ */ f("div", { className: "lecture-player__slide-shell", children: [ + Ge("square"), + Ve("square") + ] }), + rt ? /* @__PURE__ */ f("div", { className: "lecture-player__fullscreen-layer", children: [ + Ge("fullscreen"), + Ve("fullscreen") + ] }) : null, + J !== "playing" ? /* @__PURE__ */ l("div", { className: "lecture-player__overlay-control", children: /* @__PURE__ */ l( + pt, + { + pauseMode: J, + pendingVote: _, + onResume: () => { + de(); + }, + onPause: () => S(!0) + } + ) }) : null, + tt ? /* @__PURE__ */ f( + "div", + { + className: "lecture-player__scrubber", + style: { + "--scrub-progress": `${s.durationSec > 0 ? ae / s.durationSec * 100 : 0}%` + }, + children: [ + /* @__PURE__ */ l("div", { className: "lecture-player__scrubber-markers", "aria-label": "Slide markers", children: s.slides.map((o, m) => { + const w = o.startTimeSec; + if (w == null) + return null; + const z = s.durationSec > 0 ? w / s.durationSec * 100 : 0, R = (oe == null ? void 0 : oe.id) === o.id; + return /* @__PURE__ */ l( + "button", + { + type: "button", + className: `lecture-player__scrubber-marker ${R ? "lecture-player__scrubber-marker--active" : ""}`, + style: { + "--marker-progress": `${z}%` + }, + "aria-label": `S${m + 1}`, + onPointerDown: (T) => { + T.preventDefault(), T.stopPropagation(), De(w); + }, + onPointerUp: (T) => { + T.preventDefault(), T.stopPropagation(); + }, + onClick: (T) => { + T.preventDefault(), T.stopPropagation(), De(w); + }, + children: /* @__PURE__ */ f("span", { className: "lecture-player__scrubber-marker-label", children: [ + "S", + m + 1 + ] }) + }, + o.id + ); + }) }), + /* @__PURE__ */ l( + "input", + { + type: "range", + min: 0, + max: s.durationSec, + step: 0.01, + value: ae, + className: "lecture-player__scrubber-input", + "aria-label": "Lecture timeline", + onPointerDown: (o) => { + o.stopPropagation(), $e(); + }, + onChange: (o) => lt(o.currentTarget.value), + onPointerUp: () => M(), + onPointerCancel: () => M(), + onBlur: () => { + U.isScrubbing && M(); + }, + onKeyDown: () => { + U.isScrubbing || $e(); + }, + onKeyUp: () => M() + } + ) + ] + } + ) : null, + we ? /* @__PURE__ */ f("div", { className: "lecture-player__alert lecture-player__alert--overlay", role: "alert", children: [ + /* @__PURE__ */ l("strong", { children: "Segment error:" }), + " ", + we + ] }) : null + ] + } + ) }) + } + ); +} +const Tr = Xe, Fr = Xe; +function Pt({ + presentationId: t, + slide: r, + slideRegistry: e, + viewportMode: i = "desktop", + preferredGlitchSlideId: c, + paused: a = !0, + className: n +}) { + const u = ve(r, i), s = _e( + r, + i, + c + ); + return !s || u.length === 0 ? /* @__PURE__ */ l( + "div", + { + className: [ + "glitch-slide-renderer", + `glitch-slide-renderer--${i}`, + n + ].filter(Boolean).join(" "), + children: /* @__PURE__ */ l("div", { className: `slide-host slide-host--${r.displayMode}`, children: /* @__PURE__ */ l(te, { reason: "No compatible slide variant available." }) }) + } + ) : /* @__PURE__ */ l( + "div", + { + className: [ + "glitch-slide-renderer", + `glitch-slide-renderer--${i}`, + `lecture-player--${i}`, + n + ].filter(Boolean).join(" "), + "data-testid": `glitch-slide-renderer-${r.displayMode}`, + children: /* @__PURE__ */ l("div", { className: `slide-host slide-host--${r.displayMode}`, children: /* @__PURE__ */ l( + he, + { + lectureId: t, + slide: r, + glitchSlide: s, + slideRegistry: e, + paused: a + } + ) }) + } + ); +} +function $r({ + presentationId: t, + slide: r, + slideRegistry: e, + viewportMode: i = "desktop", + preferredGlitchSlideId: c, + className: a, + showSquareHeader: n = !0 +}) { + const u = _e( + r, + i, + c + ), s = n && r.displayMode === "square" && (u == null ? void 0 : u.componentKey) === "SquareYellow" && typeof u.props.header == "string" ? String(u.props.header) : null; + return /* @__PURE__ */ f( + "div", + { + className: [ + "glitch-slide-thumbnail", + `glitch-slide-thumbnail--${r.displayMode}`, + `glitch-slide-thumbnail--${i}`, + a + ].filter(Boolean).join(" "), + children: [ + s ? /* @__PURE__ */ l("div", { className: "glitch-slide-thumbnail__header", children: s }) : null, + /* @__PURE__ */ l("div", { className: "glitch-slide-thumbnail__surface", children: /* @__PURE__ */ l( + Pt, + { + presentationId: t, + slide: r, + slideRegistry: e, + viewportMode: i, + preferredGlitchSlideId: c, + paused: !0 + } + ) }) + ] + } + ); +} +var Dr = [ + "SquareYellow", + "SquareVideo", + "FullscreenSplit", + "FullscreenVideo", + "FullscreenVideoTitle", + "FullscreenVideoCenterCaption", + "EquationFocus", + "QuoteImage", + "ChartSingle", + "ProcessFlow", + "DefinitionCard", + "GlitchComponentFrame" +], Or = { + SquareYellow: { + template: "SquareYellow", + description: "One image plus one short header.", + fields: { + header: { targetMin: 8, targetMax: 24, hardMax: 32 }, + imageAlt: { targetMin: 12, targetMax: 60, hardMax: 100 } + } + }, + SquareVideo: { + template: "SquareVideo", + description: "One video plus one short header.", + fields: { + header: { targetMin: 8, targetMax: 24, hardMax: 32 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + } + } + }, + FullscreenSplit: { + template: "FullscreenSplit", + description: "One image, one short text block.", + fields: { + eyebrow: { targetMin: 6, targetMax: 14, hardMax: 24 }, + title: { targetMin: 12, targetMax: 34, hardMax: 44 }, + body: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + }, + FullscreenVideo: { + template: "FullscreenVideo", + description: "Full-bleed video with optional short overlay text.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + }, + caption: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + }, + FullscreenVideoTitle: { + template: "FullscreenVideoTitle", + description: "Full-bleed video with one large overlaid title.", + fields: { + title: { targetMin: 12, targetMax: 26, hardMax: 36 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + } + } + }, + FullscreenVideoCenterCaption: { + template: "FullscreenVideoCenterCaption", + description: "Full-bleed video with one oversized centered caption.", + fields: { + caption: { targetMin: 12, targetMax: 30, hardMax: 42 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + } + } + }, + EquationFocus: { + template: "EquationFocus", + description: "One display equation plus one short annotation.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + title: { targetMin: 12, targetMax: 32, hardMax: 48 }, + latexString: { + targetMin: 8, + targetMax: 60, + hardMax: 120, + notes: "One expression only." + }, + annotation: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + }, + QuoteImage: { + template: "QuoteImage", + description: "One quote plus one image.", + fields: { + quote: { targetMin: 18, targetMax: 50, hardMax: 72 }, + attribution: { targetMin: 4, targetMax: 18, hardMax: 24 } + } + }, + ChartSingle: { + template: "ChartSingle", + description: "One chart and one short framing line.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + title: { targetMin: 12, targetMax: 30, hardMax: 40 }, + body: { targetMin: 12, targetMax: 36, hardMax: 48 }, + pointLabel: { targetMin: 4, targetMax: 10, hardMax: 14 } + } + }, + ProcessFlow: { + template: "ProcessFlow", + description: "Short pipeline with 3-5 steps.", + fields: { + title: { targetMin: 12, targetMax: 34, hardMax: 44 }, + step: { targetMin: 8, targetMax: 22, hardMax: 30 } + } + }, + DefinitionCard: { + template: "DefinitionCard", + description: "One term, one definition, one concrete example.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + term: { targetMin: 6, targetMax: 22, hardMax: 28 }, + definition: { targetMin: 18, targetMax: 50, hardMax: 65 }, + example: { targetMin: 12, targetMax: 40, hardMax: 52 } + } + }, + GlitchComponentFrame: { + template: "GlitchComponentFrame", + description: "Interactive hosted component plus one short framing line.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + componentId: { targetMin: 4, targetMax: 24, hardMax: 40 }, + componentUrl: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted component URL." + }, + caption: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + } +}, It = { + header: "", + imageSrc: "", + imageAlt: "" +}, qt = { + header: "", + videoSrc: "", + posterSrc: "" +}, Tt = { + eyebrow: "", + title: "", + body: "", + imageSrc: "", + imageAlt: "", + imagePosition: "left" +}, Ft = { + header: "", + videoSrc: "", + posterSrc: "", + caption: "" +}, $t = { + title: "No need to be discrete", + videoSrc: "", + posterSrc: "" +}, Dt = { + caption: "", + videoSrc: "", + posterSrc: "" +}, Ot = { + header: "", + eyebrow: "", + title: "", + annotation: "" +}, Et = { + eyebrow: "", + quote: "", + attribution: "", + imageSrc: "", + imageAlt: "", + imagePosition: "left" +}, kt = { + header: "", + eyebrow: "", + title: "", + body: "", + points: [] +}, Vt = { + eyebrow: "", + title: "", + steps: [] +}, Gt = { + header: "", + eyebrow: "", + term: "", + definition: "", + example: "" +}, At = { + header: "", + componentId: "", + componentUrl: "", + caption: "" +}, ge = { + SquareYellow: { + componentKey: "SquareYellow", + label: "Square image + header", + description: "Square image with a short external header.", + displayMode: "square", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short headline", + required: !0 + }, + { + name: "imageSrc", + type: "image", + label: "Image", + placeholder: "https://...", + required: !0 + }, + { + name: "imageAlt", + type: "text", + label: "Alt text", + placeholder: "Describe the image", + required: !0 + } + ] + }, + SquareVideo: { + componentKey: "SquareVideo", + label: "Square video + header", + description: "Square video inside a framed square slide with a short header.", + displayMode: "square", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short headline", + required: !0 + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: !0 + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + } + ] + }, + FullscreenSplit: { + componentKey: "FullscreenSplit", + label: "Fullscreen split", + description: "Two-panel fullscreen slide with image and text.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "Main title", + required: !0 + }, + { + name: "body", + type: "textarea", + label: "Body", + placeholder: "Short supporting text", + required: !0 + }, + { + name: "imageSrc", + type: "image", + label: "Image", + placeholder: "https://...", + required: !0 + }, + { + name: "imageAlt", + type: "text", + label: "Alt text", + placeholder: "Describe the image", + required: !0 + }, + { + name: "imagePosition", + type: "text", + label: "Image position", + placeholder: "left or right" + } + ] + }, + FullscreenVideo: { + componentKey: "FullscreenVideo", + label: "Fullscreen video", + description: "Full-bleed video slide with optional overlay text.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: !0 + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + }, + { + name: "caption", + type: "textarea", + label: "Caption", + placeholder: "Short framing note" + } + ] + }, + FullscreenVideoTitle: { + componentKey: "FullscreenVideoTitle", + label: "Fullscreen video + title", + description: "Full-bleed video with one oversized overlaid title.", + displayMode: "fullscreen", + fields: [ + { + name: "title", + type: "text", + label: "Title", + placeholder: "No need to be discrete" + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: !0 + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + } + ] + }, + FullscreenVideoCenterCaption: { + componentKey: "FullscreenVideoCenterCaption", + label: "Fullscreen video + centered caption", + description: "Full-bleed video with one oversized centered caption.", + displayMode: "fullscreen", + fields: [ + { + name: "caption", + type: "text", + label: "Caption", + placeholder: "Short centered statement" + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: !0 + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + } + ] + }, + EquationFocus: { + componentKey: "EquationFocus", + label: "Equation focus", + description: "One display equation with a short annotation.", + displayMode: "fullscreen", + supportedDisplayModes: ["square", "fullscreen"], + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "What does the equation show?", + required: !0 + }, + { + name: "latexString", + type: "latex", + label: "LaTeX equation", + placeholder: "\\bar{x} = \\frac{1}{N}\\sum_{i=0}^{N} x_i", + required: !0 + }, + { + name: "annotation", + type: "textarea", + label: "Annotation", + placeholder: "One short explanation" + } + ] + }, + QuoteImage: { + componentKey: "QuoteImage", + label: "Quote + image", + description: "Strong quote paired with one image.", + displayMode: "fullscreen", + fields: [ + { + name: "eyebrow", + type: "text", + label: "Eyebrow", + placeholder: "Optional eyebrow" + }, + { + name: "quote", + type: "textarea", + label: "Quote", + placeholder: "Short quote", + required: !0 + }, + { + name: "attribution", + type: "text", + label: "Attribution", + placeholder: "Person or source" + }, + { + name: "imageSrc", + type: "image", + label: "Image", + placeholder: "https://...", + required: !0 + }, + { + name: "imageAlt", + type: "text", + label: "Alt text", + placeholder: "Describe the image", + required: !0 + }, + { + name: "imagePosition", + type: "text", + label: "Image position", + placeholder: "left or right" + } + ] + }, + ChartSingle: { + componentKey: "ChartSingle", + label: "Single chart", + description: "One compact chart with a short framing line.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "Chart title", + required: !0 + }, + { + name: "body", + type: "textarea", + label: "Body", + placeholder: "Short interpretation" + }, + { + name: "points", + type: "lines", + label: "Data points", + placeholder: "Label: value", + description: "One point per line. Format each line as label: value." + } + ] + }, + ProcessFlow: { + componentKey: "ProcessFlow", + label: "Process flow", + description: "Short pipeline with 3 to 5 steps.", + displayMode: "fullscreen", + fields: [ + { + name: "eyebrow", + type: "text", + label: "Eyebrow", + placeholder: "Optional eyebrow" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "Process title", + required: !0 + }, + { + name: "steps", + type: "lines", + label: "Steps", + placeholder: "One step per line", + required: !0 + } + ] + }, + DefinitionCard: { + componentKey: "DefinitionCard", + label: "Definition card", + description: "Term, definition, and optional example.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "term", + type: "text", + label: "Term", + placeholder: "Key term", + required: !0 + }, + { + name: "definition", + type: "textarea", + label: "Definition", + placeholder: "Short definition", + required: !0 + }, + { + name: "example", + type: "textarea", + label: "Example", + placeholder: "Optional example" + } + ] + }, + GlitchComponentFrame: { + componentKey: "GlitchComponentFrame", + label: "Interactive Glitch component", + description: "Hosted Glitch component embedded inside the slide surface.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "componentId", + type: "text", + label: "Component id", + placeholder: "lightlane", + required: !0 + }, + { + name: "componentUrl", + type: "text", + label: "Component URL", + placeholder: "Optional hosted URL", + description: "Optional URL for iframe-hosted components. Leave empty for known local component ids." + }, + { + name: "caption", + type: "textarea", + label: "Caption", + placeholder: "Short framing note" + } + ] + } +}, Rt = Object.values(ge), be = Rt.flatMap(function(t) { + var r, e = (r = t.supportedDisplayModes) !== null && r !== void 0 ? r : [t.displayMode]; + return e.map(function(i) { + return { + componentKey: t.componentKey, + label: t.label, + description: t.description, + displayMode: i, + fields: t.fields + }; + }); +}), jt = { + square: be.filter(function(t) { + return t.displayMode === "square"; + }), + fullscreen: be.filter(function(t) { + return t.displayMode === "fullscreen"; + }) +}, Ut = { + SquareYellow: { + props: It + }, + SquareVideo: { + props: qt + }, + FullscreenSplit: { + props: Tt + }, + FullscreenVideo: { + props: Ft + }, + FullscreenVideoTitle: { + props: $t + }, + FullscreenVideoCenterCaption: { + props: Dt + }, + EquationFocus: { + props: Ot, + latexString: "" + }, + QuoteImage: { + props: Et + }, + ChartSingle: { + props: kt + }, + ProcessFlow: { + props: Vt + }, + DefinitionCard: { + props: Gt + }, + GlitchComponentFrame: { + props: At + } +}; +function Er(t) { + return ge[t]; +} +function kr(t) { + return t ? jt[t] : be; +} +function Vr(t) { + return Ut[t]; +} +function Kt(t) { + if (!Array.isArray(t) || t.length === 0) + return [ + { label: "Security", value: 72, color: "#111" }, + { label: "Trust", value: 58, color: "rgba(17, 17, 17, 0.72)" }, + { label: "Growth", value: 44, color: "rgba(17, 17, 17, 0.52)" } + ]; + const r = []; + return t.forEach((e, i) => { + if (!e || typeof e != "object") + return; + const c = e, a = Number(c.value); + r.push({ + label: String(c.label ?? `Series ${i + 1}`), + value: Number.isFinite(a) ? Math.max(0, a) : 0, + color: typeof c.color == "string" ? c.color : void 0 + }); + }), r.length > 0 ? r : [ + { label: "Security", value: 72, color: "#111" }, + { label: "Trust", value: 58, color: "rgba(17, 17, 17, 0.72)" }, + { label: "Growth", value: 44, color: "rgba(17, 17, 17, 0.52)" } + ]; +} +function zt({ props: t, paused: r }) { + const e = t, i = String(e.header ?? e.eyebrow ?? "Chart single"), c = String(e.title ?? "One chart, one comparison"), a = String(e.body ?? "Use one chart for one contrast."), n = Kt(e.points), u = Math.max(...n.map((s) => s.value), 1); + return /* @__PURE__ */ l("article", { className: `chart-single ${r ? "chart-single--paused" : ""}`, children: /* @__PURE__ */ f("div", { className: "chart-single__content", children: [ + /* @__PURE__ */ f("div", { className: "chart-single__copy", children: [ + /* @__PURE__ */ l("p", { className: "chart-single__eyebrow", children: i }), + /* @__PURE__ */ l("h2", { className: "chart-single__title", children: c }), + /* @__PURE__ */ l("p", { className: "chart-single__body", children: a }) + ] }), + /* @__PURE__ */ l("div", { className: "chart-single__plot", role: "img", "aria-label": c, children: n.map((s) => /* @__PURE__ */ f("div", { className: "chart-single__row", children: [ + /* @__PURE__ */ l("span", { className: "chart-single__label", children: s.label }), + /* @__PURE__ */ l("div", { className: "chart-single__bar-track", children: /* @__PURE__ */ l( + "div", + { + className: "chart-single__bar-fill", + style: { + width: `${s.value / u * 100}%`, + background: s.color ?? "#111" + } + } + ) }), + /* @__PURE__ */ l("span", { className: "chart-single__value", children: s.value }) + ] }, s.label)) }) + ] }) }); +} +const Bt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: zt +}, Symbol.toStringTag, { value: "Module" })); +function Ht({ props: t, paused: r }) { + const e = t, i = String(e.header ?? e.eyebrow ?? "Definition"), c = String(e.term ?? "Crystallization"), a = String( + e.definition ?? "An interactive talk becomes a fixed video." + ), n = String( + e.example ?? "Same source. Cleaner final cut." + ); + return /* @__PURE__ */ l( + "article", + { + className: `definition-card ${r ? "definition-card--paused" : ""}`, + children: /* @__PURE__ */ f("div", { className: "definition-card__content", children: [ + /* @__PURE__ */ l("p", { className: "definition-card__eyebrow", children: i }), + /* @__PURE__ */ l("h2", { className: "definition-card__term", children: c }), + /* @__PURE__ */ l("p", { className: "definition-card__definition", children: a }), + /* @__PURE__ */ l("p", { className: "definition-card__example", children: n }) + ] }) + } + ); +} +const Yt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: Ht +}, Symbol.toStringTag, { value: "Module" })), We = "glitch-player-mathjax", Wt = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"; +let ee = null; +function Jt() { + var t; + return typeof window > "u" || typeof document > "u" || (t = window.MathJax) != null && t.typesetPromise ? Promise.resolve() : ee || (ee = new Promise((r, e) => { + var n; + window.MathJax = window.MathJax ?? {}; + const i = document.getElementById( + We + ), c = () => { + var s, d; + i && (i.dataset.loaded = "true"); + const u = (d = (s = window.MathJax) == null ? void 0 : s.startup) == null ? void 0 : d.promise; + if (u) { + u.then(() => r()).catch(e); + return; + } + r(); + }; + if (i) { + if (i.dataset.loaded === "true" || (n = window.MathJax) != null && n.typesetPromise) { + c(); + return; + } + i.addEventListener("load", c, { once: !0 }), i.addEventListener( + "error", + () => e(new Error("Failed to load MathJax.")), + { once: !0 } + ); + return; + } + const a = document.createElement("script"); + a.id = We, a.async = !0, a.src = Wt, a.addEventListener( + "load", + () => { + a.dataset.loaded = "true", c(); + }, + { once: !0 } + ), a.addEventListener( + "error", + () => e(new Error("Failed to load MathJax.")), + { once: !0 } + ), document.head.appendChild(a); + }), ee); +} +function Qt({ + props: t, + latexString: r, + displayMode: e, + paused: i +}) { + const c = t, a = String(c.header ?? c.eyebrow ?? "Equation focus"), n = String(c.title ?? "Definition of the mean"), u = String( + c.annotation ?? "The mean is the total of all observations divided by the number of observations." + ), s = O(null), [d, P] = q( + "loading" + ); + return y(() => { + const v = s.current, S = r ?? String.raw`\bar{x} = \frac{1}{N}\sum_{i=0}^{N} x_i`; + if (!v) + return; + let b = !1; + return P("loading"), Jt().then(async () => { + var _, A, j, V; + if (b || !s.current) + return; + const N = s.current; + N.textContent = `\\[${S}\\]`, (A = (_ = window.MathJax) == null ? void 0 : _.typesetClear) == null || A.call(_, [N]), await ((V = (j = window.MathJax) == null ? void 0 : j.typesetPromise) == null ? void 0 : V.call(j, [N])), b || P("ready"); + }).catch(() => { + !b && s.current && (s.current.textContent = S, P("error")); + }), () => { + var N, _; + b = !0, s.current && ((_ = (N = window.MathJax) == null ? void 0 : N.typesetClear) == null || _.call(N, [s.current])); + }; + }, [r]), /* @__PURE__ */ l( + "article", + { + className: `equation-focus equation-focus--${e} ${i ? "equation-focus--paused" : ""}`, + children: /* @__PURE__ */ f("div", { className: "equation-focus__content", children: [ + /* @__PURE__ */ l("p", { className: "equation-focus__eyebrow", children: a }), + /* @__PURE__ */ l("h2", { className: "equation-focus__title", children: n }), + /* @__PURE__ */ l("div", { className: "equation-focus__equation-frame", children: /* @__PURE__ */ l( + "div", + { + ref: s, + className: `equation-focus__equation equation-focus__equation--mathjax ${d === "loading" ? "equation-focus__equation--loading" : ""} ${d === "error" ? "equation-focus__equation--error" : ""}`, + "aria-live": "polite" + } + ) }), + /* @__PURE__ */ l("p", { className: "equation-focus__annotation", children: u }) + ] }) + } + ); +} +const Xt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: Qt +}, Symbol.toStringTag, { value: "Module" })); +function gt({ props: t, paused: r }) { + const e = t, i = String(e.eyebrow ?? "Fullscreen split"), c = String(e.title ?? "One image. One idea."), a = String(e.body ?? "Fullscreen keeps the seam invisible."), n = String( + e.imageSrc ?? "https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=1200&q=80" + ), u = String(e.imageAlt ?? c), s = e.imagePosition === "right" ? "right" : "left"; + return /* @__PURE__ */ f( + "article", + { + className: `fullscreen-split ${r ? "fullscreen-split--paused" : ""} fullscreen-split--image-${s}`, + children: [ + /* @__PURE__ */ l("div", { className: "fullscreen-split__panel fullscreen-split__panel--image", children: /* @__PURE__ */ l("img", { className: "fullscreen-split__image", src: n, alt: u }) }), + /* @__PURE__ */ l("div", { className: "fullscreen-split__panel fullscreen-split__panel--text", children: /* @__PURE__ */ f("div", { className: "fullscreen-split__text", children: [ + /* @__PURE__ */ l("p", { className: "fullscreen-split__eyebrow", children: i }), + /* @__PURE__ */ l("h2", { className: "fullscreen-split__title", children: c }), + /* @__PURE__ */ l("p", { className: "fullscreen-split__body", children: a }) + ] }) }) + ] + } + ); +} +const Zt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: gt +}, Symbol.toStringTag, { value: "Module" })); +function Mt({ + props: t, + paused: r, + onMediaLoadingChange: e +}) { + const i = t, c = String(i.header ?? "").trim(), a = String(i.caption ?? "").trim(), n = String(i.videoSrc ?? "").trim(), u = String(i.posterSrc ?? "").trim(), s = O(null); + return y(() => { + const d = s.current; + if (!d) + return; + if (r) { + d.pause(); + return; + } + const P = d.play(); + P && typeof P.catch == "function" && P.catch(() => { + }); + }, [r, n]), y(() => { + if (!n) { + e == null || e(!1); + return; + } + return e == null || e(!0), () => { + e == null || e(!1); + const d = s.current; + d && (d.pause(), d.currentTime = 0); + }; + }, [e, n]), /* @__PURE__ */ f( + "article", + { + className: `fullscreen-video ${r ? "fullscreen-video--paused" : ""}`, + children: [ + /* @__PURE__ */ l( + "video", + { + ref: s, + className: "fullscreen-video__media", + src: n, + poster: u || void 0, + autoPlay: !0, + playsInline: !0, + preload: "metadata", + controls: !1, + onLoadedData: () => e == null ? void 0 : e(!1), + onCanPlay: () => e == null ? void 0 : e(!1), + onPlaying: () => e == null ? void 0 : e(!1), + onLoadStart: () => e == null ? void 0 : e(!0), + onWaiting: () => e == null ? void 0 : e(!0), + onStalled: () => e == null ? void 0 : e(!0), + onSuspend: () => e == null ? void 0 : e(!1), + onEnded: () => e == null ? void 0 : e(!1), + onError: () => e == null ? void 0 : e(!1) + } + ), + c ? /* @__PURE__ */ l("div", { className: "fullscreen-video__chrome", children: /* @__PURE__ */ l("p", { className: "fullscreen-video__header", children: c }) }) : null, + a ? /* @__PURE__ */ l("p", { className: "fullscreen-video__caption", children: a }) : null + ] + } + ); +} +const Ct = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: Mt +}, Symbol.toStringTag, { value: "Module" })); +function Lt({ + props: t, + paused: r, + onMediaLoadingChange: e +}) { + const i = t, c = String(i.caption ?? "").trim(), a = String(i.videoSrc ?? "").trim(), n = String(i.posterSrc ?? "").trim(), u = O(null); + return y(() => { + const s = u.current; + if (!s) + return; + if (r) { + s.pause(); + return; + } + const d = s.play(); + d && typeof d.catch == "function" && d.catch(() => { + }); + }, [r, a]), y(() => { + if (!a) { + e == null || e(!1); + return; + } + return e == null || e(!0), () => { + e == null || e(!1); + const s = u.current; + s && (s.pause(), s.currentTime = 0); + }; + }, [e, a]), /* @__PURE__ */ f( + "article", + { + className: `fullscreen-video-center-caption ${r ? "fullscreen-video-center-caption--paused" : ""}`, + children: [ + /* @__PURE__ */ l( + "video", + { + ref: u, + className: "fullscreen-video-center-caption__media", + src: a, + poster: n || void 0, + autoPlay: !0, + playsInline: !0, + preload: "metadata", + controls: !1, + onLoadedData: () => e == null ? void 0 : e(!1), + onCanPlay: () => e == null ? void 0 : e(!1), + onPlaying: () => e == null ? void 0 : e(!1), + onLoadStart: () => e == null ? void 0 : e(!0), + onWaiting: () => e == null ? void 0 : e(!0), + onStalled: () => e == null ? void 0 : e(!0), + onSuspend: () => e == null ? void 0 : e(!1), + onEnded: () => e == null ? void 0 : e(!1), + onError: () => e == null ? void 0 : e(!1) + } + ), + c ? /* @__PURE__ */ l("div", { className: "fullscreen-video-center-caption__overlay", children: /* @__PURE__ */ l("p", { className: "fullscreen-video-center-caption__caption", children: c }) }) : null + ] + } + ); +} +const er = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: Lt +}, Symbol.toStringTag, { value: "Module" })), tr = "No need to be discrete"; +function rr({ + props: t, + paused: r, + onMediaLoadingChange: e +}) { + const i = t, c = String(i.title ?? "").trim() || tr, a = String(i.videoSrc ?? "").trim(), n = String(i.posterSrc ?? "").trim(), u = O(null); + return y(() => { + const s = u.current; + if (!s) + return; + if (r) { + s.pause(); + return; + } + const d = s.play(); + d && typeof d.catch == "function" && d.catch(() => { + }); + }, [r, a]), y(() => { + if (!a) { + e == null || e(!1); + return; + } + return e == null || e(!0), () => { + e == null || e(!1); + const s = u.current; + s && (s.pause(), s.currentTime = 0); + }; + }, [e, a]), /* @__PURE__ */ f( + "article", + { + className: `fullscreen-video-title ${r ? "fullscreen-video-title--paused" : ""}`, + children: [ + /* @__PURE__ */ l( + "video", + { + ref: u, + className: "fullscreen-video-title__media", + src: a, + poster: n || void 0, + autoPlay: !0, + playsInline: !0, + preload: "metadata", + controls: !1, + onLoadedData: () => e == null ? void 0 : e(!1), + onCanPlay: () => e == null ? void 0 : e(!1), + onPlaying: () => e == null ? void 0 : e(!1), + onLoadStart: () => e == null ? void 0 : e(!0), + onWaiting: () => e == null ? void 0 : e(!0), + onStalled: () => e == null ? void 0 : e(!0), + onSuspend: () => e == null ? void 0 : e(!1), + onEnded: () => e == null ? void 0 : e(!1), + onError: () => e == null ? void 0 : e(!1) + } + ), + /* @__PURE__ */ l("div", { className: "fullscreen-video-title__overlay", children: /* @__PURE__ */ l("h2", { className: "fullscreen-video-title__title", children: c }) }) + ] + } + ); +} +const lr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: rr +}, Symbol.toStringTag, { value: "Module" })); +function ir(t) { + return t.replace(/\/+$/, ""); +} +function sr() { + return ir( + "/glitch" + ); +} +function cr(t) { + return `glitch_${t.replace(/-/g, "_")}`; +} +function ar(t, r) { + const e = r == null ? void 0 : r.trim(); + if (e) + return e; + const i = sr(), c = cr(t); + return `${i}/${c}/index.html`; +} +function or({ + props: t, + displayMode: r, + paused: e +}) { + const i = t, c = String(i.header ?? "Interactive component"), a = String(i.componentId ?? "glitch-component"), n = ar( + a, + String(i.componentUrl ?? "").trim() + ), u = String( + i.caption ?? "Explore the model directly inside the slide." + ); + return /* @__PURE__ */ f( + "article", + { + className: `glitch-component-frame glitch-component-frame--${r} ${e ? "glitch-component-frame--paused" : ""}`, + children: [ + /* @__PURE__ */ f("div", { className: "glitch-component-frame__chrome", children: [ + /* @__PURE__ */ l("p", { className: "glitch-component-frame__eyebrow", children: c }), + /* @__PURE__ */ l("p", { className: "glitch-component-frame__id", children: a }) + ] }), + /* @__PURE__ */ l("div", { className: "glitch-component-frame__viewport", children: /* @__PURE__ */ l( + "iframe", + { + className: "glitch-component-frame__iframe", + src: n, + title: c || a, + loading: "lazy", + allow: "fullscreen; autoplay; xr-spatial-tracking", + sandbox: "allow-scripts allow-same-origin allow-pointer-lock allow-popups allow-forms" + } + ) }), + /* @__PURE__ */ l("p", { className: "glitch-component-frame__caption", children: u }) + ] + } + ); +} +const nr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: or +}, Symbol.toStringTag, { value: "Module" })); +function ur(t) { + return !Array.isArray(t) || t.length === 0 ? [ + "Record talking-head segments", + "Align transcript to timeline", + "Generate slide variants", + "Play, compare, and refine" + ] : t.map((r) => String(r)); +} +function dr({ props: t, paused: r }) { + const e = t, i = String(e.eyebrow ?? "Process flow"), c = String(e.title ?? "How it becomes a video"), a = ur(e.steps); + return /* @__PURE__ */ l("article", { className: `process-flow ${r ? "process-flow--paused" : ""}`, children: /* @__PURE__ */ f("div", { className: "process-flow__content", children: [ + /* @__PURE__ */ l("p", { className: "process-flow__eyebrow", children: i }), + /* @__PURE__ */ l("h2", { className: "process-flow__title", children: c }), + /* @__PURE__ */ l("div", { className: "process-flow__steps", children: a.map((n, u) => /* @__PURE__ */ f("div", { className: "process-flow__step", children: [ + /* @__PURE__ */ l("span", { className: "process-flow__index", children: u + 1 }), + /* @__PURE__ */ l("p", { className: "process-flow__label", children: n }) + ] }, `${u}-${n}`)) }) + ] }) }); +} +const pr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: dr +}, Symbol.toStringTag, { value: "Module" })); +function mr({ props: t, paused: r }) { + const e = t, i = String(e.eyebrow ?? "Quote image"), c = String( + e.quote ?? "Good explanation makes hard ideas feel graspable." + ), a = String(e.attribution ?? "Glitch University"), n = String( + e.imageSrc ?? "https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=1200&q=80" + ), u = String(e.imageAlt ?? c), s = e.imagePosition === "right" ? "right" : "left"; + return /* @__PURE__ */ f( + "article", + { + className: `quote-image ${r ? "quote-image--paused" : ""} quote-image--image-${s}`, + children: [ + /* @__PURE__ */ l("div", { className: "quote-image__panel quote-image__panel--image", children: /* @__PURE__ */ l("img", { className: "quote-image__image", src: n, alt: u }) }), + /* @__PURE__ */ l("div", { className: "quote-image__panel quote-image__panel--quote", children: /* @__PURE__ */ f("div", { className: "quote-image__content", children: [ + /* @__PURE__ */ l("p", { className: "quote-image__eyebrow", children: i }), + /* @__PURE__ */ f("blockquote", { className: "quote-image__quote", children: [ + '"', + c, + '"' + ] }), + /* @__PURE__ */ l("p", { className: "quote-image__attribution", children: a }) + ] }) }) + ] + } + ); +} +const fr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: mr +}, Symbol.toStringTag, { value: "Module" })); +function hr({ + props: t, + paused: r, + onMediaLoadingChange: e +}) { + const i = t, c = String(i.videoSrc ?? "").trim(), a = String(i.posterSrc ?? "").trim(), n = O(null); + return y(() => { + const u = n.current; + if (!u) + return; + if (r) { + u.pause(); + return; + } + const s = u.play(); + s && typeof s.catch == "function" && s.catch(() => { + }); + }, [r, c]), y(() => { + if (!c) { + e == null || e(!1); + return; + } + return e == null || e(!0), () => { + e == null || e(!1); + const u = n.current; + u && (u.pause(), u.currentTime = 0); + }; + }, [e, c]), /* @__PURE__ */ l( + "article", + { + className: `square-video ${r ? "square-video--paused" : ""}`, + children: /* @__PURE__ */ l("div", { className: "square-video__frame", children: /* @__PURE__ */ l( + "video", + { + ref: n, + className: "square-video__media", + src: c, + poster: a || void 0, + autoPlay: !0, + preload: "metadata", + playsInline: !0, + controls: !1, + onLoadedData: () => e == null ? void 0 : e(!1), + onCanPlay: () => e == null ? void 0 : e(!1), + onPlaying: () => e == null ? void 0 : e(!1), + onLoadStart: () => e == null ? void 0 : e(!0), + onWaiting: () => e == null ? void 0 : e(!0), + onStalled: () => e == null ? void 0 : e(!0), + onSuspend: () => e == null ? void 0 : e(!1), + onEnded: () => e == null ? void 0 : e(!1), + onError: () => e == null ? void 0 : e(!1) + } + ) }) + } + ); +} +const Sr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: hr +}, Symbol.toStringTag, { value: "Module" })); +function yr({ props: t, paused: r }) { + const e = t, i = String(e.header ?? "Square yellow"), c = String( + e.imageSrc ?? "https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=1200&q=80" + ), a = String(e.imageAlt ?? i); + return /* @__PURE__ */ l( + "article", + { + className: `square-slide square-slide--yellow ${r ? "square-slide--paused" : ""}`, + children: /* @__PURE__ */ l("div", { className: "square-slide__image-frame", children: /* @__PURE__ */ l("img", { className: "square-slide__image", src: c, alt: a }) }) + } + ); +} +const br = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + default: yr +}, Symbol.toStringTag, { value: "Module" })); +export { + Xe as GlitchPlayer, + Pt as GlitchSlideRenderer, + $r as GlitchSlideThumbnail, + Fr as LecturePlayer, + Tr as PresentationPlayer, + Be as createDeviceContext, + qr as createSessionId, + Ir as defaultSlideRegistry, + kr as getSlideTemplateAvailability, + Er as getSlideTemplateDefinition, + Vr as getSlideTemplateDraft, + jt as slideTemplateAvailabilityByDisplayMode, + be as slideTemplateAvailabilityList, + Or as slideTemplateBudgets, + Rt as slideTemplateDefinitionList, + ge as slideTemplateDefinitions, + Ut as slideTemplateDrafts, + Dr as slideTemplateKeys +}; diff --git a/dist/vendor/lectures/rethinking-econ-ep1.json b/dist/vendor/lectures/rethinking-econ-ep1.json new file mode 100644 index 0000000..347646d --- /dev/null +++ b/dist/vendor/lectures/rethinking-econ-ep1.json @@ -0,0 +1,309 @@ +{ + "id": "rethinking-econ-ep1", + "title": "Why economics feels fake, even when it's working", + "version": "0.4.2", + "durationSec": 24, + "segments": [ + { + "id": "seg-1", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 0, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1501004318641-b39e6451bec6?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-2", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 4, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1465146344425-f00d5f5c8f07?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-3", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 8, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1490750967868-88aa4486c946?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-4", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 12, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1493246507139-91e8fad9978e?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-5", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 16, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1520607162513-77705c0f0d4a?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-6", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 20, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1529156069898-49953e39b3ac?auto=format&fit=crop&w=800&q=80" + } + ], + "slides": [ + { + "id": "slide-01-square-yellow", + "startTimeSec": 0, + "endTimeSec": 3.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-01-a", + "score": 0.86, + "componentKey": "SquareYellow", + "authorName": "Amina", + "orientation": "any", + "props": { + "header": "GROWTH LOOKS FINE", + "imageSrc": "https://images.unsplash.com/photo-1520607162513-77705c0f0d4a?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "Crowd moving through an urban square" + } + }, + { + "id": "slide-01-b", + "score": 0.62, + "componentKey": "SquareYellow", + "authorName": "Jonas", + "orientation": "any", + "props": { + "header": "LIFE FEELS TIGHT", + "imageSrc": "https://images.unsplash.com/photo-1529156069898-49953e39b3ac?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "Blurred commuters moving through a city crowd" + } + } + ] + }, + { + "id": "slide-02-fullscreen-split", + "startTimeSec": 3.2, + "endTimeSec": 4.8, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-02-a", + "score": 0.88, + "componentKey": "FullscreenSplit", + "authorName": "Editor Bot", + "orientation": "any", + "props": { + "eyebrow": "Seam mask", + "title": "Fullscreen hides the stitch.", + "body": "The talk keeps moving underneath.", + "imageSrc": "https://images.unsplash.com/photo-1552664730-d307ca884978?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "People collaborating around a table", + "imagePosition": "left" + } + } + ] + }, + { + "id": "slide-03-equation-focus", + "startTimeSec": 4.8, + "endTimeSec": 7.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-03-a", + "score": 0.82, + "componentKey": "EquationFocus", + "authorName": "Mira", + "latexString": "\\bar{x} = \\frac{1}{N}\\sum_{i=0}^{N} x_i", + "orientation": "any", + "props": { + "eyebrow": "Equation focus", + "title": "Definition of the mean", + "annotation": "Add values. Divide by count." + } + } + ] + }, + { + "id": "slide-04-quote-image", + "startTimeSec": 7.2, + "endTimeSec": 8.8, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-04-a", + "score": 0.8, + "componentKey": "QuoteImage", + "authorName": "Luca", + "orientation": "any", + "props": { + "eyebrow": "Narrative framing", + "quote": "People live inside stress, not averages.", + "attribution": "Draft note", + "imageSrc": "https://images.unsplash.com/photo-1516321497487-e288fb19713f?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "Hands gesturing over a tablet", + "imagePosition": "right" + } + } + ] + }, + { + "id": "slide-05-chart-single", + "startTimeSec": 8.8, + "endTimeSec": 11.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-05-a", + "score": 0.78, + "componentKey": "ChartSingle", + "authorName": "Nora", + "orientation": "any", + "props": { + "eyebrow": "Chart single", + "title": "Three signals diverge", + "body": "Growth up. Calm down.", + "points": [ + { "label": "GDP", "value": 76, "color": "#111111" }, + { "label": "Trust", "value": 49, "color": "rgba(17,17,17,0.72)" }, + { "label": "Calm", "value": 33, "color": "rgba(17,17,17,0.48)" } + ] + } + }, + { + "id": "slide-05-b", + "score": 0.61, + "componentKey": "ChartSingle", + "authorName": "Kai", + "orientation": "any", + "props": { + "eyebrow": "Alternate framing", + "title": "Growth hides fragility", + "body": "Same chart. Sharper framing.", + "points": [ + { "label": "Output", "value": 72, "color": "#111111" }, + { "label": "Security", "value": 41, "color": "rgba(17,17,17,0.72)" }, + { "label": "Optimism", "value": 28, "color": "rgba(17,17,17,0.48)" } + ] + } + } + ] + }, + { + "id": "slide-06-process-flow", + "startTimeSec": 11.2, + "endTimeSec": 12.8, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-06-b", + "score": 0.84, + "componentKey": "GlitchComponentFrame", + "authorName": "Voxel Lab", + "orientation": "any", + "interactionMode": "interactive-3d", + "props": { + "header": "Interactive component", + "componentId": "voxel-universe", + "caption": "Rotate the voxel torus and inspect the geometry." + } + }, + { + "id": "slide-06-a", + "score": 0.79, + "componentKey": "ProcessFlow", + "authorName": "Sofia", + "orientation": "any", + "props": { + "eyebrow": "Pipeline", + "title": "How it becomes a Glitch talk", + "steps": [ + "Write the script", + "Record the talk", + "Align slide cues", + "Compare variants" + ] + } + } + ] + }, + { + "id": "slide-07-definition-card", + "startTimeSec": 12.8, + "endTimeSec": 14.4, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-07-a", + "score": 0.83, + "componentKey": "DefinitionCard", + "authorName": "Theo", + "orientation": "any", + "props": { + "eyebrow": "Definition", + "term": "CRYSTALLIZATION", + "definition": "An interactive talk becomes a fixed video.", + "example": "Same source. Cleaner final cut." + } + } + ] + }, + { + "id": "slide-08-square-video", + "startTimeSec": 14.4, + "endTimeSec": 17.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-08-a", + "score": 0.88, + "componentKey": "SquareVideo", + "authorName": "Clip Forge", + "orientation": "any", + "props": { + "header": "SQUARE VIDEO TEST", + "videoSrc": "http://localhost:9000/glitch-university/assets/video/1774943368113-c61afb5d-17555904-hd_1080_1920_30fps.mp4" + } + } + ] + }, + { + "id": "slide-09-fullscreen-video", + "startTimeSec": 17.2, + "endTimeSec": 20, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-09-a", + "score": 0.9, + "componentKey": "FullscreenVideo", + "authorName": "Orbit Studio", + "orientation": "any", + "props": { + "header": "FULLSCREEN VIDEO TEST", + "videoSrc": "http://localhost:9000/glitch-university/assets/video/1774943368170-543f54fe-CGI_Animation_Of_Space.mp4", + "caption": "Fullscreen video test caption." + } + } + ] + }, + { + "id": "slide-10-fullscreen-video-center-caption", + "startTimeSec": 20, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-10-a", + "score": 0.92, + "componentKey": "FullscreenVideoCenterCaption", + "authorName": "Orbit Studio", + "orientation": "any", + "props": { + "caption": "NO NEED TO BE DISCRETE", + "videoSrc": "http://localhost:9000/glitch-university/assets/video/1774943368170-543f54fe-CGI_Animation_Of_Space.mp4" + } + } + ] + } + ] +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..dce46da --- /dev/null +++ b/index.html @@ -0,0 +1,15 @@ + + + + + + Glitch Presentation Layer POC + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a1b6485 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2898 @@ +{ + "name": "gnommoplayer", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "gnommoplayer", + "version": "0.1.0", + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@vitejs/plugin-react": "^4.3.4", + "jsdom": "^26.1.0", + "typescript": "^5.8.3", + "vite": "^5.4.18", + "vitest": "^2.1.9" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz", + "integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz", + "integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz", + "integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz", + "integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz", + "integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz", + "integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz", + "integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz", + "integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz", + "integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz", + "integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz", + "integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz", + "integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz", + "integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz", + "integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz", + "integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz", + "integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz", + "integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz", + "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.0.tgz", + "integrity": "sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz", + "integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz", + "integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz", + "integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz", + "integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz", + "integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz", + "integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@testing-library/user-event": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz", + "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@vitest/expect": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz", + "integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "2.1.9", + "@vitest/utils": "2.1.9", + "chai": "^5.1.2", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz", + "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "2.1.9", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz", + "integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "2.1.9", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", + "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "2.1.9", + "magic-string": "^0.30.12", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz", + "integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "2.1.9", + "loupe": "^3.1.2", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.11", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.11.tgz", + "integrity": "sha512-DAKrHphkJyiGuau/cFieRYhcTFeK/lBuD++C7cZ6KZHbMhBrisoi+EvhQ5RZrIfV5qwsW8kgQ07JIC+MDJRAhg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001781", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", + "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/check-error": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", + "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.328", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.328.tgz", + "integrity": "sha512-QNQ5l45DzYytThO21403XN3FvK0hOkWDG8viNf6jqS42msJ8I4tGDSpBCgvDRRPnkffafiwAym2X2eHeGD2V0w==", + "dev": true, + "license": "ISC" + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.1.1", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.1", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nwsapi": { + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz", + "integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.0", + "@rollup/rollup-android-arm64": "4.60.0", + "@rollup/rollup-darwin-arm64": "4.60.0", + "@rollup/rollup-darwin-x64": "4.60.0", + "@rollup/rollup-freebsd-arm64": "4.60.0", + "@rollup/rollup-freebsd-x64": "4.60.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.0", + "@rollup/rollup-linux-arm-musleabihf": "4.60.0", + "@rollup/rollup-linux-arm64-gnu": "4.60.0", + "@rollup/rollup-linux-arm64-musl": "4.60.0", + "@rollup/rollup-linux-loong64-gnu": "4.60.0", + "@rollup/rollup-linux-loong64-musl": "4.60.0", + "@rollup/rollup-linux-ppc64-gnu": "4.60.0", + "@rollup/rollup-linux-ppc64-musl": "4.60.0", + "@rollup/rollup-linux-riscv64-gnu": "4.60.0", + "@rollup/rollup-linux-riscv64-musl": "4.60.0", + "@rollup/rollup-linux-s390x-gnu": "4.60.0", + "@rollup/rollup-linux-x64-gnu": "4.60.0", + "@rollup/rollup-linux-x64-musl": "4.60.0", + "@rollup/rollup-openbsd-x64": "4.60.0", + "@rollup/rollup-openharmony-arm64": "4.60.0", + "@rollup/rollup-win32-arm64-msvc": "4.60.0", + "@rollup/rollup-win32-ia32-msvc": "4.60.0", + "@rollup/rollup-win32-x64-gnu": "4.60.0", + "@rollup/rollup-win32-x64-msvc": "4.60.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.86" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz", + "integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.7", + "es-module-lexer": "^1.5.4", + "pathe": "^1.1.2", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz", + "integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "2.1.9", + "@vitest/mocker": "2.1.9", + "@vitest/pretty-format": "^2.1.9", + "@vitest/runner": "2.1.9", + "@vitest/snapshot": "2.1.9", + "@vitest/spy": "2.1.9", + "@vitest/utils": "2.1.9", + "chai": "^5.1.2", + "debug": "^4.3.7", + "expect-type": "^1.1.0", + "magic-string": "^0.30.12", + "pathe": "^1.1.2", + "std-env": "^3.8.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.1", + "tinypool": "^1.0.1", + "tinyrainbow": "^1.2.0", + "vite": "^5.0.0", + "vite-node": "2.1.9", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "2.1.9", + "@vitest/ui": "2.1.9", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ffb239b --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "gnommoplayer", + "private": true, + "version": "0.1.0", + "type": "module", + "workspaces": [ + "packages/*" + ], + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build && npm run build:lib", + "build:lib": "vite build --config vite.lib.config.ts", + "deploy:editor": "node scripts/deploy-vendor.mjs editor", + "deploy:web": "node scripts/deploy-vendor.mjs web", + "deploy:all": "node scripts/deploy-vendor.mjs all", + "preview": "vite preview", + "test": "vitest run", + "test:watch": "vitest" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@vitejs/plugin-react": "^4.3.4", + "jsdom": "^26.1.0", + "typescript": "^5.8.3", + "vite": "^5.4.18", + "vitest": "^2.1.9" + } +} diff --git a/packages/slide-contracts/package.json b/packages/slide-contracts/package.json new file mode 100644 index 0000000..11eedc8 --- /dev/null +++ b/packages/slide-contracts/package.json @@ -0,0 +1,9 @@ +{ + "name": "@gnommo/slide-contracts", + "private": true, + "version": "0.1.0", + "type": "module", + "exports": { + ".": "./src/index.ts" + } +} diff --git a/packages/slide-contracts/src/budgets.d.ts b/packages/slide-contracts/src/budgets.d.ts new file mode 100644 index 0000000..3d9d6fb --- /dev/null +++ b/packages/slide-contracts/src/budgets.d.ts @@ -0,0 +1,13 @@ +import type { SlideTemplateKey } from "./templates"; +export interface FieldBudget { + targetMin?: number; + targetMax: number; + hardMax: number; + notes?: string; +} +export interface SlideTemplateBudget { + template: SlideTemplateKey; + description: string; + fields: Record; +} +export declare const slideTemplateBudgets: Record; diff --git a/packages/slide-contracts/src/budgets.js b/packages/slide-contracts/src/budgets.js new file mode 100644 index 0000000..b97d87e --- /dev/null +++ b/packages/slide-contracts/src/budgets.js @@ -0,0 +1,138 @@ +export var slideTemplateBudgets = { + SquareYellow: { + template: "SquareYellow", + description: "One image plus one short header.", + fields: { + header: { targetMin: 8, targetMax: 24, hardMax: 32 }, + imageAlt: { targetMin: 12, targetMax: 60, hardMax: 100 } + } + }, + SquareVideo: { + template: "SquareVideo", + description: "One video plus one short header.", + fields: { + header: { targetMin: 8, targetMax: 24, hardMax: 32 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + } + } + }, + FullscreenSplit: { + template: "FullscreenSplit", + description: "One image, one short text block.", + fields: { + eyebrow: { targetMin: 6, targetMax: 14, hardMax: 24 }, + title: { targetMin: 12, targetMax: 34, hardMax: 44 }, + body: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + }, + FullscreenVideo: { + template: "FullscreenVideo", + description: "Full-bleed video with optional short overlay text.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + }, + caption: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + }, + FullscreenVideoTitle: { + template: "FullscreenVideoTitle", + description: "Full-bleed video with one large overlaid title.", + fields: { + title: { targetMin: 12, targetMax: 26, hardMax: 36 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + } + } + }, + FullscreenVideoCenterCaption: { + template: "FullscreenVideoCenterCaption", + description: "Full-bleed video with one oversized centered caption.", + fields: { + caption: { targetMin: 12, targetMax: 30, hardMax: 42 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + } + } + }, + EquationFocus: { + template: "EquationFocus", + description: "One display equation plus one short annotation.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + title: { targetMin: 12, targetMax: 32, hardMax: 48 }, + latexString: { + targetMin: 8, + targetMax: 60, + hardMax: 120, + notes: "One expression only." + }, + annotation: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + }, + QuoteImage: { + template: "QuoteImage", + description: "One quote plus one image.", + fields: { + quote: { targetMin: 18, targetMax: 50, hardMax: 72 }, + attribution: { targetMin: 4, targetMax: 18, hardMax: 24 } + } + }, + ChartSingle: { + template: "ChartSingle", + description: "One chart and one short framing line.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + title: { targetMin: 12, targetMax: 30, hardMax: 40 }, + body: { targetMin: 12, targetMax: 36, hardMax: 48 }, + pointLabel: { targetMin: 4, targetMax: 10, hardMax: 14 } + } + }, + ProcessFlow: { + template: "ProcessFlow", + description: "Short pipeline with 3-5 steps.", + fields: { + title: { targetMin: 12, targetMax: 34, hardMax: 44 }, + step: { targetMin: 8, targetMax: 22, hardMax: 30 } + } + }, + DefinitionCard: { + template: "DefinitionCard", + description: "One term, one definition, one concrete example.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + term: { targetMin: 6, targetMax: 22, hardMax: 28 }, + definition: { targetMin: 18, targetMax: 50, hardMax: 65 }, + example: { targetMin: 12, targetMax: 40, hardMax: 52 } + } + }, + GlitchComponentFrame: { + template: "GlitchComponentFrame", + description: "Interactive hosted component plus one short framing line.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + componentId: { targetMin: 4, targetMax: 24, hardMax: 40 }, + componentUrl: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted component URL." + }, + caption: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + } +}; diff --git a/packages/slide-contracts/src/budgets.ts b/packages/slide-contracts/src/budgets.ts new file mode 100644 index 0000000..6dd82b5 --- /dev/null +++ b/packages/slide-contracts/src/budgets.ts @@ -0,0 +1,153 @@ +import type { SlideTemplateKey } from "./templates"; + +export interface FieldBudget { + targetMin?: number; + targetMax: number; + hardMax: number; + notes?: string; +} + +export interface SlideTemplateBudget { + template: SlideTemplateKey; + description: string; + fields: Record; +} + +export const slideTemplateBudgets: Record = { + SquareYellow: { + template: "SquareYellow", + description: "One image plus one short header.", + fields: { + header: { targetMin: 8, targetMax: 24, hardMax: 32 }, + imageAlt: { targetMin: 12, targetMax: 60, hardMax: 100 } + } + }, + SquareVideo: { + template: "SquareVideo", + description: "One video plus one short header.", + fields: { + header: { targetMin: 8, targetMax: 24, hardMax: 32 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + } + } + }, + FullscreenSplit: { + template: "FullscreenSplit", + description: "One image, one short text block.", + fields: { + eyebrow: { targetMin: 6, targetMax: 14, hardMax: 24 }, + title: { targetMin: 12, targetMax: 34, hardMax: 44 }, + body: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + }, + FullscreenVideo: { + template: "FullscreenVideo", + description: "Full-bleed video with optional short overlay text.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + }, + caption: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + }, + FullscreenVideoTitle: { + template: "FullscreenVideoTitle", + description: "Full-bleed video with one large overlaid title.", + fields: { + title: { targetMin: 12, targetMax: 26, hardMax: 36 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + } + } + }, + FullscreenVideoCenterCaption: { + template: "FullscreenVideoCenterCaption", + description: "Full-bleed video with one oversized centered caption.", + fields: { + caption: { targetMin: 12, targetMax: 30, hardMax: 42 }, + videoSrc: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted or CDN video URL." + } + } + }, + EquationFocus: { + template: "EquationFocus", + description: "One display equation plus one short annotation.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + title: { targetMin: 12, targetMax: 32, hardMax: 48 }, + latexString: { + targetMin: 8, + targetMax: 60, + hardMax: 120, + notes: "One expression only." + }, + annotation: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + }, + QuoteImage: { + template: "QuoteImage", + description: "One quote plus one image.", + fields: { + quote: { targetMin: 18, targetMax: 50, hardMax: 72 }, + attribution: { targetMin: 4, targetMax: 18, hardMax: 24 } + } + }, + ChartSingle: { + template: "ChartSingle", + description: "One chart and one short framing line.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + title: { targetMin: 12, targetMax: 30, hardMax: 40 }, + body: { targetMin: 12, targetMax: 36, hardMax: 48 }, + pointLabel: { targetMin: 4, targetMax: 10, hardMax: 14 } + } + }, + ProcessFlow: { + template: "ProcessFlow", + description: "Short pipeline with 3-5 steps.", + fields: { + title: { targetMin: 12, targetMax: 34, hardMax: 44 }, + step: { targetMin: 8, targetMax: 22, hardMax: 30 } + } + }, + DefinitionCard: { + template: "DefinitionCard", + description: "One term, one definition, one concrete example.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + term: { targetMin: 6, targetMax: 22, hardMax: 28 }, + definition: { targetMin: 18, targetMax: 50, hardMax: 65 }, + example: { targetMin: 12, targetMax: 40, hardMax: 52 } + } + }, + GlitchComponentFrame: { + template: "GlitchComponentFrame", + description: "Interactive hosted component plus one short framing line.", + fields: { + header: { targetMin: 6, targetMax: 20, hardMax: 28 }, + componentId: { targetMin: 4, targetMax: 24, hardMax: 40 }, + componentUrl: { + targetMin: 12, + targetMax: 160, + hardMax: 300, + notes: "Prefer a stable hosted component URL." + }, + caption: { targetMin: 12, targetMax: 42, hardMax: 56 } + } + } +}; diff --git a/packages/slide-contracts/src/index.d.ts b/packages/slide-contracts/src/index.d.ts new file mode 100644 index 0000000..a0551dd --- /dev/null +++ b/packages/slide-contracts/src/index.d.ts @@ -0,0 +1,3 @@ +export * from "./templates"; +export * from "./budgets"; +export * from "./metadata"; diff --git a/packages/slide-contracts/src/index.js b/packages/slide-contracts/src/index.js new file mode 100644 index 0000000..a0551dd --- /dev/null +++ b/packages/slide-contracts/src/index.js @@ -0,0 +1,3 @@ +export * from "./templates"; +export * from "./budgets"; +export * from "./metadata"; diff --git a/packages/slide-contracts/src/index.ts b/packages/slide-contracts/src/index.ts new file mode 100644 index 0000000..a0551dd --- /dev/null +++ b/packages/slide-contracts/src/index.ts @@ -0,0 +1,3 @@ +export * from "./templates"; +export * from "./budgets"; +export * from "./metadata"; diff --git a/packages/slide-contracts/src/metadata.d.ts b/packages/slide-contracts/src/metadata.d.ts new file mode 100644 index 0000000..1dedd07 --- /dev/null +++ b/packages/slide-contracts/src/metadata.d.ts @@ -0,0 +1,40 @@ +import type { SlideTemplateKey, SlideTemplateProps } from "./templates"; +export type SlideTemplateFieldType = "text" | "textarea" | "lines" | "image" | "video" | "latex"; +export interface SlideTemplateFieldDefinition { + name: string; + type: SlideTemplateFieldType; + label: string; + placeholder?: string; + description?: string; + required?: boolean; +} +export interface SlideTemplateDefinition { + componentKey: SlideTemplateKey; + label: string; + description: string; + displayMode: "square" | "fullscreen"; + supportedDisplayModes?: Array<"square" | "fullscreen">; + fields: SlideTemplateFieldDefinition[]; +} +export interface SlideTemplateAvailability { + componentKey: SlideTemplateKey; + label: string; + description: string; + displayMode: "square" | "fullscreen"; + fields: SlideTemplateFieldDefinition[]; +} +export interface SlideTemplateDraft { + props: SlideTemplateProps; + latexString?: string; +} +export declare const slideTemplateDefinitions: Record; +export declare const slideTemplateDefinitionList: SlideTemplateDefinition[]; +export declare const slideTemplateAvailabilityList: SlideTemplateAvailability[]; +export declare const slideTemplateAvailabilityByDisplayMode: { + square: SlideTemplateAvailability[]; + fullscreen: SlideTemplateAvailability[]; +}; +export declare const slideTemplateDrafts: Record; +export declare function getSlideTemplateDefinition(componentKey: SlideTemplateKey): SlideTemplateDefinition; +export declare function getSlideTemplateAvailability(displayMode?: "square" | "fullscreen"): SlideTemplateAvailability[]; +export declare function getSlideTemplateDraft(componentKey: SlideTemplateKey): SlideTemplateDraft; diff --git a/packages/slide-contracts/src/metadata.js b/packages/slide-contracts/src/metadata.js new file mode 100644 index 0000000..1dc06d0 --- /dev/null +++ b/packages/slide-contracts/src/metadata.js @@ -0,0 +1,546 @@ +var squareYellowDefaults = { + header: "", + imageSrc: "", + imageAlt: "" +}; +var squareVideoDefaults = { + header: "", + videoSrc: "", + posterSrc: "" +}; +var fullscreenSplitDefaults = { + eyebrow: "", + title: "", + body: "", + imageSrc: "", + imageAlt: "", + imagePosition: "left" +}; +var fullscreenVideoDefaults = { + header: "", + videoSrc: "", + posterSrc: "", + caption: "" +}; +var fullscreenVideoTitleDefaults = { + title: "No need to be discrete", + videoSrc: "", + posterSrc: "" +}; +var fullscreenVideoCenterCaptionDefaults = { + caption: "", + videoSrc: "", + posterSrc: "" +}; +var equationFocusDefaults = { + header: "", + eyebrow: "", + title: "", + annotation: "" +}; +var quoteImageDefaults = { + eyebrow: "", + quote: "", + attribution: "", + imageSrc: "", + imageAlt: "", + imagePosition: "left" +}; +var chartSingleDefaults = { + header: "", + eyebrow: "", + title: "", + body: "", + points: [] +}; +var processFlowDefaults = { + eyebrow: "", + title: "", + steps: [] +}; +var definitionCardDefaults = { + header: "", + eyebrow: "", + term: "", + definition: "", + example: "" +}; +var glitchComponentFrameDefaults = { + header: "", + componentId: "", + componentUrl: "", + caption: "" +}; +export var slideTemplateDefinitions = { + SquareYellow: { + componentKey: "SquareYellow", + label: "Square image + header", + description: "Square image with a short external header.", + displayMode: "square", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short headline", + required: true + }, + { + name: "imageSrc", + type: "image", + label: "Image", + placeholder: "https://...", + required: true + }, + { + name: "imageAlt", + type: "text", + label: "Alt text", + placeholder: "Describe the image", + required: true + } + ] + }, + SquareVideo: { + componentKey: "SquareVideo", + label: "Square video + header", + description: "Square video inside a framed square slide with a short header.", + displayMode: "square", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short headline", + required: true + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: true + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + } + ] + }, + FullscreenSplit: { + componentKey: "FullscreenSplit", + label: "Fullscreen split", + description: "Two-panel fullscreen slide with image and text.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "Main title", + required: true + }, + { + name: "body", + type: "textarea", + label: "Body", + placeholder: "Short supporting text", + required: true + }, + { + name: "imageSrc", + type: "image", + label: "Image", + placeholder: "https://...", + required: true + }, + { + name: "imageAlt", + type: "text", + label: "Alt text", + placeholder: "Describe the image", + required: true + }, + { + name: "imagePosition", + type: "text", + label: "Image position", + placeholder: "left or right" + } + ] + }, + FullscreenVideo: { + componentKey: "FullscreenVideo", + label: "Fullscreen video", + description: "Full-bleed video slide with optional overlay text.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: true + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + }, + { + name: "caption", + type: "textarea", + label: "Caption", + placeholder: "Short framing note" + } + ] + }, + FullscreenVideoTitle: { + componentKey: "FullscreenVideoTitle", + label: "Fullscreen video + title", + description: "Full-bleed video with one oversized overlaid title.", + displayMode: "fullscreen", + fields: [ + { + name: "title", + type: "text", + label: "Title", + placeholder: "No need to be discrete" + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: true + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + } + ] + }, + FullscreenVideoCenterCaption: { + componentKey: "FullscreenVideoCenterCaption", + label: "Fullscreen video + centered caption", + description: "Full-bleed video with one oversized centered caption.", + displayMode: "fullscreen", + fields: [ + { + name: "caption", + type: "text", + label: "Caption", + placeholder: "Short centered statement" + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: true + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + } + ] + }, + EquationFocus: { + componentKey: "EquationFocus", + label: "Equation focus", + description: "One display equation with a short annotation.", + displayMode: "fullscreen", + supportedDisplayModes: ["square", "fullscreen"], + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "What does the equation show?", + required: true + }, + { + name: "latexString", + type: "latex", + label: "LaTeX equation", + placeholder: "\\bar{x} = \\frac{1}{N}\\sum_{i=0}^{N} x_i", + required: true + }, + { + name: "annotation", + type: "textarea", + label: "Annotation", + placeholder: "One short explanation" + } + ] + }, + QuoteImage: { + componentKey: "QuoteImage", + label: "Quote + image", + description: "Strong quote paired with one image.", + displayMode: "fullscreen", + fields: [ + { + name: "eyebrow", + type: "text", + label: "Eyebrow", + placeholder: "Optional eyebrow" + }, + { + name: "quote", + type: "textarea", + label: "Quote", + placeholder: "Short quote", + required: true + }, + { + name: "attribution", + type: "text", + label: "Attribution", + placeholder: "Person or source" + }, + { + name: "imageSrc", + type: "image", + label: "Image", + placeholder: "https://...", + required: true + }, + { + name: "imageAlt", + type: "text", + label: "Alt text", + placeholder: "Describe the image", + required: true + }, + { + name: "imagePosition", + type: "text", + label: "Image position", + placeholder: "left or right" + } + ] + }, + ChartSingle: { + componentKey: "ChartSingle", + label: "Single chart", + description: "One compact chart with a short framing line.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "Chart title", + required: true + }, + { + name: "body", + type: "textarea", + label: "Body", + placeholder: "Short interpretation" + }, + { + name: "points", + type: "lines", + label: "Data points", + placeholder: "Label: value", + description: "One point per line. Format each line as label: value." + } + ] + }, + ProcessFlow: { + componentKey: "ProcessFlow", + label: "Process flow", + description: "Short pipeline with 3 to 5 steps.", + displayMode: "fullscreen", + fields: [ + { + name: "eyebrow", + type: "text", + label: "Eyebrow", + placeholder: "Optional eyebrow" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "Process title", + required: true + }, + { + name: "steps", + type: "lines", + label: "Steps", + placeholder: "One step per line", + required: true + } + ] + }, + DefinitionCard: { + componentKey: "DefinitionCard", + label: "Definition card", + description: "Term, definition, and optional example.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "term", + type: "text", + label: "Term", + placeholder: "Key term", + required: true + }, + { + name: "definition", + type: "textarea", + label: "Definition", + placeholder: "Short definition", + required: true + }, + { + name: "example", + type: "textarea", + label: "Example", + placeholder: "Optional example" + } + ] + }, + GlitchComponentFrame: { + componentKey: "GlitchComponentFrame", + label: "Interactive Glitch component", + description: "Hosted Glitch component embedded inside the slide surface.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "componentId", + type: "text", + label: "Component id", + placeholder: "lightlane", + required: true + }, + { + name: "componentUrl", + type: "text", + label: "Component URL", + placeholder: "Optional hosted URL", + description: "Optional URL for iframe-hosted components. Leave empty for known local component ids." + }, + { + name: "caption", + type: "textarea", + label: "Caption", + placeholder: "Short framing note" + } + ] + } +}; +export var slideTemplateDefinitionList = Object.values(slideTemplateDefinitions); +export var slideTemplateAvailabilityList = slideTemplateDefinitionList.flatMap(function (definition) { + var _a; + var supportedDisplayModes = (_a = definition.supportedDisplayModes) !== null && _a !== void 0 ? _a : [definition.displayMode]; + return supportedDisplayModes.map(function (displayMode) { return ({ + componentKey: definition.componentKey, + label: definition.label, + description: definition.description, + displayMode: displayMode, + fields: definition.fields + }); }); +}); +export var slideTemplateAvailabilityByDisplayMode = { + square: slideTemplateAvailabilityList.filter(function (definition) { return definition.displayMode === "square"; }), + fullscreen: slideTemplateAvailabilityList.filter(function (definition) { return definition.displayMode === "fullscreen"; }) +}; +export var slideTemplateDrafts = { + SquareYellow: { + props: squareYellowDefaults + }, + SquareVideo: { + props: squareVideoDefaults + }, + FullscreenSplit: { + props: fullscreenSplitDefaults + }, + FullscreenVideo: { + props: fullscreenVideoDefaults + }, + FullscreenVideoTitle: { + props: fullscreenVideoTitleDefaults + }, + FullscreenVideoCenterCaption: { + props: fullscreenVideoCenterCaptionDefaults + }, + EquationFocus: { + props: equationFocusDefaults, + latexString: "" + }, + QuoteImage: { + props: quoteImageDefaults + }, + ChartSingle: { + props: chartSingleDefaults + }, + ProcessFlow: { + props: processFlowDefaults + }, + DefinitionCard: { + props: definitionCardDefaults + }, + GlitchComponentFrame: { + props: glitchComponentFrameDefaults + } +}; +export function getSlideTemplateDefinition(componentKey) { + return slideTemplateDefinitions[componentKey]; +} +export function getSlideTemplateAvailability(displayMode) { + if (!displayMode) { + return slideTemplateAvailabilityList; + } + return slideTemplateAvailabilityByDisplayMode[displayMode]; +} +export function getSlideTemplateDraft(componentKey) { + return slideTemplateDrafts[componentKey]; +} diff --git a/packages/slide-contracts/src/metadata.ts b/packages/slide-contracts/src/metadata.ts new file mode 100644 index 0000000..7a86d32 --- /dev/null +++ b/packages/slide-contracts/src/metadata.ts @@ -0,0 +1,633 @@ +import type { + ChartSingleData, + DefinitionCardData, + EquationFocusData, + FullscreenVideoData, + FullscreenVideoCenterCaptionData, + FullscreenVideoTitleData, + FullscreenSplitData, + GlitchComponentFrameData, + ProcessFlowData, + QuoteImageData, + SlideTemplateKey, + SlideTemplateProps, + SquareVideoData, + SquareYellowData +} from "./templates"; + +export type SlideTemplateFieldType = + | "text" + | "textarea" + | "lines" + | "image" + | "video" + | "latex"; + +export interface SlideTemplateFieldDefinition { + name: string; + type: SlideTemplateFieldType; + label: string; + placeholder?: string; + description?: string; + required?: boolean; +} + +export interface SlideTemplateDefinition { + componentKey: SlideTemplateKey; + label: string; + description: string; + displayMode: "square" | "fullscreen"; + supportedDisplayModes?: Array<"square" | "fullscreen">; + fields: SlideTemplateFieldDefinition[]; +} + +export interface SlideTemplateAvailability { + componentKey: SlideTemplateKey; + label: string; + description: string; + displayMode: "square" | "fullscreen"; + fields: SlideTemplateFieldDefinition[]; +} + +export interface SlideTemplateDraft { + props: SlideTemplateProps; + latexString?: string; +} + +const squareYellowDefaults: SquareYellowData = { + header: "", + imageSrc: "", + imageAlt: "" +}; + +const squareVideoDefaults: SquareVideoData = { + header: "", + videoSrc: "", + posterSrc: "" +}; + +const fullscreenSplitDefaults: FullscreenSplitData = { + eyebrow: "", + title: "", + body: "", + imageSrc: "", + imageAlt: "", + imagePosition: "left" +}; + +const fullscreenVideoDefaults: FullscreenVideoData = { + header: "", + videoSrc: "", + posterSrc: "", + caption: "" +}; + +const fullscreenVideoTitleDefaults: FullscreenVideoTitleData = { + title: "No need to be discrete", + videoSrc: "", + posterSrc: "" +}; + +const fullscreenVideoCenterCaptionDefaults: FullscreenVideoCenterCaptionData = { + caption: "", + videoSrc: "", + posterSrc: "" +}; + +const equationFocusDefaults: EquationFocusData = { + header: "", + eyebrow: "", + title: "", + annotation: "" +}; + +const quoteImageDefaults: QuoteImageData = { + eyebrow: "", + quote: "", + attribution: "", + imageSrc: "", + imageAlt: "", + imagePosition: "left" +}; + +const chartSingleDefaults: ChartSingleData = { + header: "", + eyebrow: "", + title: "", + body: "", + points: [] +}; + +const processFlowDefaults: ProcessFlowData = { + eyebrow: "", + title: "", + steps: [] +}; + +const definitionCardDefaults: DefinitionCardData = { + header: "", + eyebrow: "", + term: "", + definition: "", + example: "" +}; + +const glitchComponentFrameDefaults: GlitchComponentFrameData = { + header: "", + componentId: "", + componentUrl: "", + caption: "" +}; + +export const slideTemplateDefinitions: Record< + SlideTemplateKey, + SlideTemplateDefinition +> = { + SquareYellow: { + componentKey: "SquareYellow", + label: "Square image + header", + description: "Square image with a short external header.", + displayMode: "square", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short headline", + required: true + }, + { + name: "imageSrc", + type: "image", + label: "Image", + placeholder: "https://...", + required: true + }, + { + name: "imageAlt", + type: "text", + label: "Alt text", + placeholder: "Describe the image", + required: true + } + ] + }, + SquareVideo: { + componentKey: "SquareVideo", + label: "Square video + header", + description: "Square video inside a framed square slide with a short header.", + displayMode: "square", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short headline", + required: true + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: true + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + } + ] + }, + FullscreenSplit: { + componentKey: "FullscreenSplit", + label: "Fullscreen split", + description: "Two-panel fullscreen slide with image and text.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "Main title", + required: true + }, + { + name: "body", + type: "textarea", + label: "Body", + placeholder: "Short supporting text", + required: true + }, + { + name: "imageSrc", + type: "image", + label: "Image", + placeholder: "https://...", + required: true + }, + { + name: "imageAlt", + type: "text", + label: "Alt text", + placeholder: "Describe the image", + required: true + }, + { + name: "imagePosition", + type: "text", + label: "Image position", + placeholder: "left or right" + } + ] + }, + FullscreenVideo: { + componentKey: "FullscreenVideo", + label: "Fullscreen video", + description: "Full-bleed video slide with optional overlay text.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: true + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + }, + { + name: "caption", + type: "textarea", + label: "Caption", + placeholder: "Short framing note" + } + ] + }, + FullscreenVideoTitle: { + componentKey: "FullscreenVideoTitle", + label: "Fullscreen video + title", + description: "Full-bleed video with one oversized overlaid title.", + displayMode: "fullscreen", + fields: [ + { + name: "title", + type: "text", + label: "Title", + placeholder: "No need to be discrete" + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: true + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + } + ] + }, + FullscreenVideoCenterCaption: { + componentKey: "FullscreenVideoCenterCaption", + label: "Fullscreen video + centered caption", + description: "Full-bleed video with one oversized centered caption.", + displayMode: "fullscreen", + fields: [ + { + name: "caption", + type: "text", + label: "Caption", + placeholder: "Short centered statement" + }, + { + name: "videoSrc", + type: "video", + label: "Video", + placeholder: "https://...", + required: true + }, + { + name: "posterSrc", + type: "image", + label: "Poster image", + placeholder: "https://..." + } + ] + }, + EquationFocus: { + componentKey: "EquationFocus", + label: "Equation focus", + description: "One display equation with a short annotation.", + displayMode: "fullscreen", + supportedDisplayModes: ["square", "fullscreen"], + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "What does the equation show?", + required: true + }, + { + name: "latexString", + type: "latex", + label: "LaTeX equation", + placeholder: "\\bar{x} = \\frac{1}{N}\\sum_{i=0}^{N} x_i", + required: true + }, + { + name: "annotation", + type: "textarea", + label: "Annotation", + placeholder: "One short explanation" + } + ] + }, + QuoteImage: { + componentKey: "QuoteImage", + label: "Quote + image", + description: "Strong quote paired with one image.", + displayMode: "fullscreen", + fields: [ + { + name: "eyebrow", + type: "text", + label: "Eyebrow", + placeholder: "Optional eyebrow" + }, + { + name: "quote", + type: "textarea", + label: "Quote", + placeholder: "Short quote", + required: true + }, + { + name: "attribution", + type: "text", + label: "Attribution", + placeholder: "Person or source" + }, + { + name: "imageSrc", + type: "image", + label: "Image", + placeholder: "https://...", + required: true + }, + { + name: "imageAlt", + type: "text", + label: "Alt text", + placeholder: "Describe the image", + required: true + }, + { + name: "imagePosition", + type: "text", + label: "Image position", + placeholder: "left or right" + } + ] + }, + ChartSingle: { + componentKey: "ChartSingle", + label: "Single chart", + description: "One compact chart with a short framing line.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "Chart title", + required: true + }, + { + name: "body", + type: "textarea", + label: "Body", + placeholder: "Short interpretation" + }, + { + name: "points", + type: "lines", + label: "Data points", + placeholder: "Label: value", + description: "One point per line. Format each line as label: value." + } + ] + }, + ProcessFlow: { + componentKey: "ProcessFlow", + label: "Process flow", + description: "Short pipeline with 3 to 5 steps.", + displayMode: "fullscreen", + fields: [ + { + name: "eyebrow", + type: "text", + label: "Eyebrow", + placeholder: "Optional eyebrow" + }, + { + name: "title", + type: "text", + label: "Title", + placeholder: "Process title", + required: true + }, + { + name: "steps", + type: "lines", + label: "Steps", + placeholder: "One step per line", + required: true + } + ] + }, + DefinitionCard: { + componentKey: "DefinitionCard", + label: "Definition card", + description: "Term, definition, and optional example.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "term", + type: "text", + label: "Term", + placeholder: "Key term", + required: true + }, + { + name: "definition", + type: "textarea", + label: "Definition", + placeholder: "Short definition", + required: true + }, + { + name: "example", + type: "textarea", + label: "Example", + placeholder: "Optional example" + } + ] + }, + GlitchComponentFrame: { + componentKey: "GlitchComponentFrame", + label: "Interactive Glitch component", + description: "Hosted Glitch component embedded inside the slide surface.", + displayMode: "fullscreen", + fields: [ + { + name: "header", + type: "text", + label: "Header", + placeholder: "Short header" + }, + { + name: "componentId", + type: "text", + label: "Component id", + placeholder: "lightlane", + required: true + }, + { + name: "componentUrl", + type: "text", + label: "Component URL", + placeholder: "Optional hosted URL", + description: "Optional URL for iframe-hosted components. Leave empty for known local component ids." + }, + { + name: "caption", + type: "textarea", + label: "Caption", + placeholder: "Short framing note" + } + ] + } +}; + +export const slideTemplateDefinitionList = Object.values( + slideTemplateDefinitions +); + +export const slideTemplateAvailabilityList: SlideTemplateAvailability[] = + slideTemplateDefinitionList.flatMap((definition) => { + const supportedDisplayModes = + definition.supportedDisplayModes ?? [definition.displayMode]; + + return supportedDisplayModes.map((displayMode) => ({ + componentKey: definition.componentKey, + label: definition.label, + description: definition.description, + displayMode, + fields: definition.fields + })); + }); + +export const slideTemplateAvailabilityByDisplayMode = { + square: slideTemplateAvailabilityList.filter( + (definition) => definition.displayMode === "square" + ), + fullscreen: slideTemplateAvailabilityList.filter( + (definition) => definition.displayMode === "fullscreen" + ) +} satisfies Record<"square" | "fullscreen", SlideTemplateAvailability[]>; + +export const slideTemplateDrafts: Record = { + SquareYellow: { + props: squareYellowDefaults + }, + SquareVideo: { + props: squareVideoDefaults + }, + FullscreenSplit: { + props: fullscreenSplitDefaults + }, + FullscreenVideo: { + props: fullscreenVideoDefaults + }, + FullscreenVideoTitle: { + props: fullscreenVideoTitleDefaults + }, + FullscreenVideoCenterCaption: { + props: fullscreenVideoCenterCaptionDefaults + }, + EquationFocus: { + props: equationFocusDefaults, + latexString: "" + }, + QuoteImage: { + props: quoteImageDefaults + }, + ChartSingle: { + props: chartSingleDefaults + }, + ProcessFlow: { + props: processFlowDefaults + }, + DefinitionCard: { + props: definitionCardDefaults + }, + GlitchComponentFrame: { + props: glitchComponentFrameDefaults + } +}; + +export function getSlideTemplateDefinition(componentKey: SlideTemplateKey) { + return slideTemplateDefinitions[componentKey]; +} + +export function getSlideTemplateAvailability(displayMode?: "square" | "fullscreen") { + if (!displayMode) { + return slideTemplateAvailabilityList; + } + + return slideTemplateAvailabilityByDisplayMode[displayMode]; +} + +export function getSlideTemplateDraft(componentKey: SlideTemplateKey) { + return slideTemplateDrafts[componentKey]; +} diff --git a/packages/slide-contracts/src/templates.d.ts b/packages/slide-contracts/src/templates.d.ts new file mode 100644 index 0000000..a838649 --- /dev/null +++ b/packages/slide-contracts/src/templates.d.ts @@ -0,0 +1,144 @@ +export declare const slideTemplateKeys: readonly ["SquareYellow", "SquareVideo", "FullscreenSplit", "FullscreenVideo", "FullscreenVideoTitle", "FullscreenVideoCenterCaption", "EquationFocus", "QuoteImage", "ChartSingle", "ProcessFlow", "DefinitionCard", "GlitchComponentFrame"]; +export type SlideTemplateKey = (typeof slideTemplateKeys)[number]; +export type SlideTemplateVersion = 1; +export interface SquareYellowData { + header: string; + imageSrc: string; + imageAlt: string; +} +export interface SquareVideoData { + header: string; + videoSrc: string; + posterSrc?: string; +} +export interface FullscreenSplitData { + eyebrow?: string; + title: string; + body: string; + imageSrc: string; + imageAlt: string; + imagePosition?: "left" | "right"; +} +export interface FullscreenVideoData { + header?: string; + videoSrc: string; + posterSrc?: string; + caption?: string; +} +export interface FullscreenVideoTitleData { + title?: string; + videoSrc: string; + posterSrc?: string; +} +export interface FullscreenVideoCenterCaptionData { + caption?: string; + videoSrc: string; + posterSrc?: string; +} +export interface EquationFocusData { + header?: string; + eyebrow?: string; + title: string; + annotation?: string; +} +export interface QuoteImageData { + eyebrow?: string; + quote: string; + attribution?: string; + imageSrc: string; + imageAlt: string; + imagePosition?: "left" | "right"; +} +export interface ChartSinglePoint { + label: string; + value: number; + color?: string; +} +export interface ChartSingleData { + header?: string; + eyebrow?: string; + title: string; + body?: string; + points: ChartSinglePoint[]; +} +export interface ProcessFlowData { + eyebrow?: string; + title: string; + steps: string[]; +} +export interface DefinitionCardData { + header?: string; + eyebrow?: string; + term: string; + definition: string; + example?: string; +} +export interface GlitchComponentFrameData { + header?: string; + componentId: string; + componentUrl?: string; + caption?: string; +} +export interface SquareYellowContract { + componentKey: "SquareYellow"; + version: 1; + props: SquareYellowData; +} +export interface SquareVideoContract { + componentKey: "SquareVideo"; + version: 1; + props: SquareVideoData; +} +export interface FullscreenSplitContract { + componentKey: "FullscreenSplit"; + version: 1; + props: FullscreenSplitData; +} +export interface FullscreenVideoContract { + componentKey: "FullscreenVideo"; + version: 1; + props: FullscreenVideoData; +} +export interface FullscreenVideoTitleContract { + componentKey: "FullscreenVideoTitle"; + version: 1; + props: FullscreenVideoTitleData; +} +export interface FullscreenVideoCenterCaptionContract { + componentKey: "FullscreenVideoCenterCaption"; + version: 1; + props: FullscreenVideoCenterCaptionData; +} +export interface EquationFocusContract { + componentKey: "EquationFocus"; + version: 1; + props: EquationFocusData; + latexString: string; +} +export interface QuoteImageContract { + componentKey: "QuoteImage"; + version: 1; + props: QuoteImageData; +} +export interface ChartSingleContract { + componentKey: "ChartSingle"; + version: 1; + props: ChartSingleData; +} +export interface ProcessFlowContract { + componentKey: "ProcessFlow"; + version: 1; + props: ProcessFlowData; +} +export interface DefinitionCardContract { + componentKey: "DefinitionCard"; + version: 1; + props: DefinitionCardData; +} +export interface GlitchComponentFrameContract { + componentKey: "GlitchComponentFrame"; + version: 1; + props: GlitchComponentFrameData; +} +export type SupportedSlideContract = SquareYellowContract | SquareVideoContract | FullscreenSplitContract | FullscreenVideoContract | FullscreenVideoTitleContract | FullscreenVideoCenterCaptionContract | EquationFocusContract | QuoteImageContract | ChartSingleContract | ProcessFlowContract | DefinitionCardContract | GlitchComponentFrameContract; +export type SlideTemplateProps = SupportedSlideContract["props"]; diff --git a/packages/slide-contracts/src/templates.js b/packages/slide-contracts/src/templates.js new file mode 100644 index 0000000..f8eafb3 --- /dev/null +++ b/packages/slide-contracts/src/templates.js @@ -0,0 +1,14 @@ +export var slideTemplateKeys = [ + "SquareYellow", + "SquareVideo", + "FullscreenSplit", + "FullscreenVideo", + "FullscreenVideoTitle", + "FullscreenVideoCenterCaption", + "EquationFocus", + "QuoteImage", + "ChartSingle", + "ProcessFlow", + "DefinitionCard", + "GlitchComponentFrame" +]; diff --git a/packages/slide-contracts/src/templates.ts b/packages/slide-contracts/src/templates.ts new file mode 100644 index 0000000..cf5109b --- /dev/null +++ b/packages/slide-contracts/src/templates.ts @@ -0,0 +1,197 @@ +export const slideTemplateKeys = [ + "SquareYellow", + "SquareVideo", + "FullscreenSplit", + "FullscreenVideo", + "FullscreenVideoTitle", + "FullscreenVideoCenterCaption", + "EquationFocus", + "QuoteImage", + "ChartSingle", + "ProcessFlow", + "DefinitionCard", + "GlitchComponentFrame" +] as const; + +export type SlideTemplateKey = (typeof slideTemplateKeys)[number]; +export type SlideTemplateVersion = 1; + +export interface SquareYellowData { + header: string; + imageSrc: string; + imageAlt: string; +} + +export interface SquareVideoData { + header: string; + videoSrc: string; + posterSrc?: string; +} + +export interface FullscreenSplitData { + eyebrow?: string; + title: string; + body: string; + imageSrc: string; + imageAlt: string; + imagePosition?: "left" | "right"; +} + +export interface FullscreenVideoData { + header?: string; + videoSrc: string; + posterSrc?: string; + caption?: string; +} + +export interface FullscreenVideoTitleData { + title?: string; + videoSrc: string; + posterSrc?: string; +} + +export interface FullscreenVideoCenterCaptionData { + caption?: string; + videoSrc: string; + posterSrc?: string; +} + +export interface EquationFocusData { + header?: string; + eyebrow?: string; + title: string; + annotation?: string; +} + +export interface QuoteImageData { + eyebrow?: string; + quote: string; + attribution?: string; + imageSrc: string; + imageAlt: string; + imagePosition?: "left" | "right"; +} + +export interface ChartSinglePoint { + label: string; + value: number; + color?: string; +} + +export interface ChartSingleData { + header?: string; + eyebrow?: string; + title: string; + body?: string; + points: ChartSinglePoint[]; +} + +export interface ProcessFlowData { + eyebrow?: string; + title: string; + steps: string[]; +} + +export interface DefinitionCardData { + header?: string; + eyebrow?: string; + term: string; + definition: string; + example?: string; +} + +export interface GlitchComponentFrameData { + header?: string; + componentId: string; + componentUrl?: string; + caption?: string; +} + +export interface SquareYellowContract { + componentKey: "SquareYellow"; + version: 1; + props: SquareYellowData; +} + +export interface SquareVideoContract { + componentKey: "SquareVideo"; + version: 1; + props: SquareVideoData; +} + +export interface FullscreenSplitContract { + componentKey: "FullscreenSplit"; + version: 1; + props: FullscreenSplitData; +} + +export interface FullscreenVideoContract { + componentKey: "FullscreenVideo"; + version: 1; + props: FullscreenVideoData; +} + +export interface FullscreenVideoTitleContract { + componentKey: "FullscreenVideoTitle"; + version: 1; + props: FullscreenVideoTitleData; +} + +export interface FullscreenVideoCenterCaptionContract { + componentKey: "FullscreenVideoCenterCaption"; + version: 1; + props: FullscreenVideoCenterCaptionData; +} + +export interface EquationFocusContract { + componentKey: "EquationFocus"; + version: 1; + props: EquationFocusData; + latexString: string; +} + +export interface QuoteImageContract { + componentKey: "QuoteImage"; + version: 1; + props: QuoteImageData; +} + +export interface ChartSingleContract { + componentKey: "ChartSingle"; + version: 1; + props: ChartSingleData; +} + +export interface ProcessFlowContract { + componentKey: "ProcessFlow"; + version: 1; + props: ProcessFlowData; +} + +export interface DefinitionCardContract { + componentKey: "DefinitionCard"; + version: 1; + props: DefinitionCardData; +} + +export interface GlitchComponentFrameContract { + componentKey: "GlitchComponentFrame"; + version: 1; + props: GlitchComponentFrameData; +} + +export type SupportedSlideContract = + | SquareYellowContract + | SquareVideoContract + | FullscreenSplitContract + | FullscreenVideoContract + | FullscreenVideoTitleContract + | FullscreenVideoCenterCaptionContract + | EquationFocusContract + | QuoteImageContract + | ChartSingleContract + | ProcessFlowContract + | DefinitionCardContract + | GlitchComponentFrameContract; + +export type SlideTemplateProps = SupportedSlideContract["props"]; diff --git a/public/glitch/glitch_assumption_toggle/.DS_Store b/public/glitch/glitch_assumption_toggle/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e1383dedac9e61c80d39cb7dc3bbe2f39d97c2d8 GIT binary patch literal 8196 zcmeHMU2GIp6u#fIlo>kE0g9Bm6BZVNkOkUO((-4ve+mc`*p~iKSax?tIxss^c4oIg zX>3e>&N;YH&Qpf4thCK%%bQRB}8KKP>Y;F-Czgtk;)41qW|nS1WN z=bU@*Irlqr_slZJ&|1*y8LMH8iS&3>sif*Q#p8R=q#^_(5>b#oV;XZZ!_H8~v@?^W z!-3EPp$9?_gdPYz5PINl@BrP}UJ<9b_c=GLLl1-=_+NU!dp|_!@n|BTW1RZ04yybV zfM_`l`-R$+2lzVCfF=Su#;LDLbMou~fhvL&16-Z>QBRy`BA{cOa&-o-&Je7OAVYz_ zI_X7yafSq^VI6uP^uS~fc)5E8bC}Hv%$ktDU&suZhU3=NeGQ?kd|JhHQ4}l1eaS(4 zIO(R{g43GL@AZ0Jwryrg?Q~|3p%15&>NeYQ(}tzzeFa0)No1hMurzzP)h<|?Np1*&mjRnO z!LU;ktMf?3G>+>u zR^?>#wrTFP9mAWZuh-R&x*l&5tGC~=^KP3zSxQj~j=o!`xs0OTPBS{a1}*6+R^MWn z*MxL-*8GJ_9$4AXv@y}KW&5rxRm$u+bE{>!pAN!ujYkbV-#u(-?qFZq$?BG7SO=mR42W?=8D6?YNyoxF02$*2~9$?uwK|8 z><~JIULh?U5^Ny|E1?vp`${HrDjXv^G2DW$hr-$0hg;;~&0Dt0+wPfgyE=;p*u4AZ zN0+Wx-PpXTyu@5UpmL<&wt@Vjz-WQ{~2sFd+;JklhI3V3I|yiuZHRLXf* zl@pSrFuxONi*$$-P>T3pA^j@5#(rYIu^WW+S(u9&EJGdP`$25R4nnwx?{4fz3Tb4Z zAqNXXI6_!Ifl)k$F+7f^2ipjiX+SWmu zyR^6QTbsI9##uF9{@*e6_y4IU2sxn#LJ!>Y9zc0}vb~kenCb=M<=Rnt4$$KjPi~A; vUxg|^9VhCi<3w-%VMy&LiF!JTfR1rWBUJAAhk!f$b345M!~6eky#N0OC;`Vb literal 0 HcmV?d00001 diff --git a/public/glitch/glitch_assumption_toggle/Component.d.ts b/public/glitch/glitch_assumption_toggle/Component.d.ts new file mode 100644 index 0000000..8531372 --- /dev/null +++ b/public/glitch/glitch_assumption_toggle/Component.d.ts @@ -0,0 +1,2 @@ +import type { GlitchComponentProps } from './types'; +export default function AssumptionToggle({ config, onComplete, onProgress, theme, className, host }: GlitchComponentProps): import("react/jsx-runtime").JSX.Element; diff --git a/public/glitch/glitch_assumption_toggle/assumption-toggle.js b/public/glitch/glitch_assumption_toggle/assumption-toggle.js new file mode 100644 index 0000000..61be7ec --- /dev/null +++ b/public/glitch/glitch_assumption_toggle/assumption-toggle.js @@ -0,0 +1,560 @@ +(function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode('.gc-assumption-toggle{--shell-bg: radial-gradient(circle at top, rgba(40, 58, 34, .35), transparent 42%), linear-gradient(180deg, #070a08, #0f160f 58%, #090b09);--screen-bg: #616161;--screen-error: #7f1d1d;--screen-glow: rgba(0, 0, 0, .5);--text-primary: var(--gc-text, #0f172a);--text-secondary: var(--gc-text-muted, #6bff5b);--accent-color: var(--gc-accent, #1c6a00);--panel-green: var(--gc-primary, #248a00);--panel-white: rgba(255, 255, 255, .92);--font-display: "Russo One", sans-serif;--font-ui: "VT323", sans-serif;color:var(--text-primary);width:100%}.gc-assumption-toggle *,.gc-assumption-toggle *:before,.gc-assumption-toggle *:after{box-sizing:border-box}.gc-assumption-toggle .component-shell{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px 0;background:var(--shell-bg)}.gc-assumption-toggle .main-wrapper{width:min(100%,1000px);aspect-ratio:1000 / 678;background-image:var(--assumption-frame-image);background-position:center;background-repeat:no-repeat;background-size:100% 100%;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .crt-screen{position:relative;width:51.8%;height:66.3%;transform:translateY(.6%);background:var(--screen-bg);border-radius:7.5%;display:flex;justify-content:center;align-items:center;overflow:hidden;box-shadow:inset 0 0 40px var(--screen-glow);transition:background-color .4s ease}.gc-assumption-toggle .crt-screen.paradox-errors{background:var(--screen-error)}.gc-assumption-toggle .crt-screen:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(rgba(18,16,16,0) 50%,rgba(0,0,0,.24) 50%),linear-gradient(90deg,rgba(255,0,0,.05),rgba(0,255,0,.02),rgba(0,0,255,.05));background-size:100% 2px,3px 100%;pointer-events:none;z-index:20}.gc-assumption-toggle .slides-wrapper{width:100%;height:100%;display:flex;justify-content:center;align-items:center;transform-origin:center}.gc-assumption-toggle .slide{width:100%;height:100%;padding:20px;display:flex;flex-direction:column;justify-content:center;align-items:center}.gc-assumption-toggle .slide-splash{text-align:center}.gc-assumption-toggle .splash-content h1{margin:0 0 18px;font-size:clamp(1.4rem,2.7vw,2.2rem);line-height:1.3;color:var(--text-primary);font-family:var(--font-display);font-weight:400;text-transform:uppercase;text-shadow:0 0 4px rgba(0,0,0,.35)}.gc-assumption-toggle .splash-content h2{margin:0 0 42px;color:var(--text-secondary);font-size:clamp(1rem,1.5vw,1.2rem);font-weight:400;letter-spacing:.08em;font-family:var(--font-ui)}.gc-assumption-toggle .widget-header h1{margin:0 0 18px;color:var(--text-secondary);font-size:clamp(1.4rem,2.5vw,1.8rem);font-weight:400;letter-spacing:.05em;text-transform:uppercase;font-family:var(--font-display);text-shadow:0 0 5px rgba(255,255,255,.35)}.gc-assumption-toggle .switch-group{width:100%;display:flex;flex-direction:column;gap:18px;padding:0 24px}.gc-assumption-toggle .switch-item{width:100%}.gc-assumption-toggle .switch-input{position:absolute;opacity:0;pointer-events:none}.gc-assumption-toggle .toggle-track{position:relative;width:100%;min-height:58px;padding:4px;display:flex;align-items:stretch;justify-content:space-between;gap:8px;border-radius:28px;cursor:pointer;overflow:hidden;border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.4)}.gc-assumption-toggle .toggle-track:before{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:calc(50% - 4px);border-radius:24px;background:var(--panel-green);transition:transform .35s cubic-bezier(.16,1,.3,1)}.gc-assumption-toggle .switch-input:checked+.toggle-track:before{transform:translate(100%)}.gc-assumption-toggle .option-left,.gc-assumption-toggle .option-right{position:relative;z-index:1;flex:1;display:flex;align-items:center;justify-content:center;text-align:center;padding:10px 8px;color:#ffffff9e;font-size:clamp(.78rem,2vw,1.4rem);font-weight:500;letter-spacing:.04em;line-height:1.15;font-family:var(--font-ui);transition:color .25s ease,font-weight .25s ease}.gc-assumption-toggle .switch-input:not(:checked)+.toggle-track .option-left,.gc-assumption-toggle .switch-input:checked+.toggle-track .option-right{color:#fff;font-weight:700}.gc-assumption-toggle .action-button{margin-top:24px;border:none;border-radius:8px;padding:12px 32px;background:var(--accent-color);color:#fff;cursor:pointer;text-transform:uppercase;font-family:var(--font-display);font-size:clamp(1rem,2vw,1.35rem);font-weight:400;letter-spacing:.06em;box-shadow:0 4px #00000047;transition:transform .12s ease,box-shadow .12s ease,opacity .2s ease}.gc-assumption-toggle .action-button:hover{opacity:.92}.gc-assumption-toggle .action-button:active{transform:translateY(3px);box-shadow:none}.gc-assumption-toggle .action-button.secondary{font-size:1rem;padding:7px 88px;color:var(--text-secondary);background:transparent;border:2px solid var(--text-secondary);box-shadow:none}.gc-assumption-toggle .bottom-container{width:100%;height:100%;display:flex;flex-direction:column;gap:16px}.gc-assumption-toggle .slide-processing{justify-content:flex-start;padding:26px 20px 20px}.gc-assumption-toggle .processing-shell{width:100%;height:100%;display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:18px;background:linear-gradient(180deg,rgba(4,18,7,.96),rgba(7,24,12,.92)),radial-gradient(circle at top,rgba(87,255,143,.14),transparent 40%);border:1px solid rgba(120,255,154,.22);box-shadow:inset 0 0 28px #00000047}.gc-assumption-toggle .processing-header{display:flex;align-items:center;gap:10px}.gc-assumption-toggle .processing-led{width:10px;height:10px;border-radius:999px;background:#5cff8b;box-shadow:0 0 10px #5cff8be6;animation:assumption-led-pulse 1.2s ease-in-out infinite}.gc-assumption-toggle .processing-header h2{margin:0;color:#dfffe7;font-family:var(--font-display);font-size:clamp(1.05rem,2vw,1.3rem);font-weight:400;letter-spacing:.06em;text-transform:uppercase}.gc-assumption-toggle .processing-subtitle{color:#b6ffc6b8;font-family:var(--font-ui);font-size:clamp(.88rem,1.6vw,1rem);letter-spacing:.05em;text-transform:uppercase}.gc-assumption-toggle .processing-terminal{flex:1;min-height:0;padding:14px 16px;border-radius:14px;background:linear-gradient(180deg,rgba(3,9,4,.94),rgba(7,16,8,.96)),repeating-linear-gradient(180deg,rgba(255,255,255,.02) 0,rgba(255,255,255,.02) 1px,transparent 1px,transparent 18px);border:1px solid rgba(120,255,154,.12);overflow:hidden}.gc-assumption-toggle .processing-line{display:flex;align-items:baseline;gap:8px;min-height:1.45em;color:#b7ffca;font-family:var(--font-ui);font-size:clamp(1rem,1.8vw,1.18rem);letter-spacing:.04em;line-height:1.35;word-break:break-word}.gc-assumption-toggle .processing-line+.processing-line{margin-top:4px}.gc-assumption-toggle .processing-line-active{color:#edfff2}.gc-assumption-toggle .processing-prompt{flex:0 0 auto;color:#5cff8b;font-family:var(--font-display)}.gc-assumption-toggle .processing-cursor{display:inline-block;width:9px;height:1.05em;margin-left:2px;vertical-align:text-bottom;background:#74ff97;box-shadow:0 0 8px #74ff97a6;animation:assumption-cursor-blink .9s steps(1) infinite}.gc-assumption-toggle .visualization-container,.gc-assumption-toggle .result-container{width:100%;border-radius:16px}.gc-assumption-toggle .visualization-container{flex:1.5;min-height:0;display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(255,255,255,.05);background:rgba(0,0,0,.32)}.gc-assumption-toggle .result-container{position:relative;flex:1;min-height:0;padding:18px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:rgba(255,255,255,.32);border:1px solid rgba(0,0,0,.08);text-align:center}.gc-assumption-toggle .summary-box{width:100%}.gc-assumption-toggle .summary-label{display:block;margin-bottom:8px;color:var(--text-secondary);font-size:.84rem;letter-spacing:.08em;text-transform:uppercase;font-family:var(--font-display)}.gc-assumption-toggle .summary-value{display:block;color:var(--text-primary);font-size:clamp(.9rem,1.5vw,1rem);letter-spacing:.04em;line-height:1.4;font-family:var(--font-ui)}.gc-assumption-toggle .result-value{display:block;width:100%;margin-top:4px;font-size:clamp(1.7rem,3vw,2rem);font-weight:400;letter-spacing:.05em;background-clip:text;-webkit-background-clip:text;color:transparent;font-family:var(--font-display)}.gc-assumption-toggle .result-stable{background-image:linear-gradient(90deg,#064e3b,#16a34a)}.gc-assumption-toggle .result-warning{background-image:linear-gradient(90deg,#7c2d12,#d97706)}.gc-assumption-toggle .result-paradox{background-image:linear-gradient(90deg,#831843,#be185d)}.gc-assumption-toggle .result-uncertain{background-image:linear-gradient(90deg,#4338ca,#7c3aed)}.gc-assumption-toggle .result-description{display:block;width:100%;margin-top:4px;color:#000;font-size:clamp(.96rem,1.8vw,1.08rem);letter-spacing:.03em;line-height:1.35;font-family:var(--font-ui)}.gc-assumption-toggle .intermediate-result{margin-top:14px;color:var(--text-secondary);font-size:.76rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-family:var(--font-display)}.gc-assumption-toggle .art-canvas{position:relative;width:100%;height:100%;min-height:160px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .art-canvas:after{content:"";position:absolute;width:8px;height:8px;border-radius:999px;background:#ffffff;box-shadow:0 0 12px #ffffffe6}.gc-assumption-toggle .art-canvas.paradox-point:after,.gc-assumption-toggle .art-canvas.paradox-chunk:after{display:none}.gc-assumption-toggle .cube-wrapper{position:relative;width:64px;height:64px;perspective:400px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .cube{position:relative;width:64px;height:64px;transform-style:preserve-3d;animation:assumption-slow-spin 10s linear infinite}.gc-assumption-toggle .face{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.05)}.gc-assumption-toggle .cube .front{transform:translateZ(32px)}.gc-assumption-toggle .cube .back{transform:rotateY(180deg) translateZ(32px)}.gc-assumption-toggle .cube .right{transform:rotateY(90deg) translateZ(32px)}.gc-assumption-toggle .cube .left{transform:rotateY(-90deg) translateZ(32px)}.gc-assumption-toggle .cube .top{transform:rotateX(90deg) translateZ(32px)}.gc-assumption-toggle .cube .bottom{transform:rotateX(-90deg) translateZ(32px)}.gc-assumption-toggle .particle-point{position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:999px;transform:translate(-50%,-50%);background:#a10356;box-shadow:0 0 12px #a10356}.gc-assumption-toggle .info-arrow{position:absolute;left:-70px;top:50%;transform:translateY(-50%);display:flex;align-items:center;opacity:0;animation:assumption-arrow-enter .9s ease forwards .3s}.gc-assumption-toggle .arrow-line{width:34px;height:2px;background:#a10356;box-shadow:0 0 5px #a10356}.gc-assumption-toggle .arrow-head{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid #a10356}.gc-assumption-toggle .infinite-symbol{position:absolute;top:-25px;left:8px;color:#a10356;font-size:1.4rem;font-weight:700;text-shadow:0 0 10px rgba(161,3,86,.45)}.gc-assumption-toggle .chakana-wrapper{position:relative;width:90px;height:90px;transform-style:preserve-3d;transform:rotateX(-30deg) rotateY(45deg);animation:assumption-float 6s ease-in-out infinite}.gc-assumption-toggle .gold-cube{position:absolute;width:42px;height:42px;transform-style:preserve-3d}.gc-assumption-toggle .gold-cube.center{transform:translate(24px,24px)}.gc-assumption-toggle .gold-cube.top-arm{transform:translate(24px,-14px)}.gc-assumption-toggle .gold-cube.bottom-arm{transform:translate(24px,62px)}.gc-assumption-toggle .gold-cube.left-arm{transform:translate(-14px,24px)}.gc-assumption-toggle .gold-cube.right-arm{transform:translate(62px,24px)}.gc-assumption-toggle .gold-cube .face{background:linear-gradient(135deg,#fcd34d 0%,#fbbf24 50%,#d97706 100%);border-color:#0000002e}.gc-assumption-toggle .gold-cube .front{transform:translateZ(21px)}.gc-assumption-toggle .gold-cube .back{transform:rotateY(180deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .right{transform:rotateY(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .left{transform:rotateY(-90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .top{transform:rotateX(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .bottom{transform:rotateX(-90deg) translateZ(21px)}.gc-assumption-toggle .chaos-wrapper{position:relative;width:120px;height:120px;perspective:600px}.gc-assumption-toggle .central-source{position:absolute;left:50%;top:50%;width:22px;height:22px;transform-style:preserve-3d;transform:translate(-50%,-50%);animation:assumption-pulsar 2.1s ease-out infinite}.gc-assumption-toggle .central-source .face{background:#a10356;border:1px solid rgba(255,255,255,.78);box-shadow:0 0 15px #c084fc}.gc-assumption-toggle .central-source .front{transform:translateZ(11px)}.gc-assumption-toggle .central-source .back{transform:rotateY(180deg) translateZ(11px)}.gc-assumption-toggle .central-source .right{transform:rotateY(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .left{transform:rotateY(-90deg) translateZ(11px)}.gc-assumption-toggle .central-source .top{transform:rotateX(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .bottom{transform:rotateX(-90deg) translateZ(11px)}.gc-assumption-toggle .debris-cube{position:absolute;left:50%;top:50%;width:10px;height:10px;transform-style:preserve-3d}.gc-assumption-toggle .debris-cube .face{background:linear-gradient(45deg,#c084fc,#a10356);border:1px solid rgba(255,255,255,.4)}.gc-assumption-toggle .debris-cube .front{transform:translateZ(5px)}.gc-assumption-toggle .debris-cube .back{transform:rotateY(180deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .right{transform:rotateY(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .left{transform:rotateY(-90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .top{transform:rotateX(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .bottom{transform:rotateX(-90deg) translateZ(5px)}.gc-assumption-toggle .d-0{animation:assumption-explode-0 2.1s linear infinite}.gc-assumption-toggle .d-1{animation:assumption-explode-1 2.3s linear infinite .2s}.gc-assumption-toggle .d-2{animation:assumption-explode-2 1.9s linear infinite .4s}.gc-assumption-toggle .d-3{animation:assumption-explode-3 2.4s linear infinite .1s}.gc-assumption-toggle .d-4{animation:assumption-explode-4 2.1s linear infinite .5s}.gc-assumption-toggle .d-5{animation:assumption-explode-5 1.9s linear infinite .25s}.gc-assumption-toggle .d-6{animation:assumption-explode-6 2.25s linear infinite .45s}.gc-assumption-toggle .d-7{animation:assumption-explode-7 2.4s linear infinite .15s}.gc-assumption-toggle .d-8{animation:assumption-explode-8 1.75s linear infinite .65s}.gc-assumption-toggle .d-9{animation:assumption-explode-9 2.5s linear infinite .1s}.gc-assumption-toggle .signal-orbit,.gc-assumption-toggle .field-node{position:relative;width:112px;height:112px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .signal-ring,.gc-assumption-toggle .field-ring{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-ring{top:22px;right:22px;bottom:22px;left:22px;border:2px dashed rgba(255,255,255,.45);animation:assumption-rotate 7s linear infinite}.gc-assumption-toggle .signal-axis{position:absolute;width:100px;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent);transform:rotate(-25deg)}.gc-assumption-toggle .signal-dot,.gc-assumption-toggle .field-core{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-dot{width:14px;height:14px;background:#ffcc66;box-shadow:0 0 18px #ffcc66b3}.gc-assumption-toggle .signal-cube{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#f5d565,#e08e18);box-shadow:0 0 22px #e08e1899}.gc-assumption-toggle .signal-orbit-point .signal-dot{animation:assumption-jitter .22s infinite}.gc-assumption-toggle .signal-orbit-chunk .signal-cube{animation:assumption-tilt 2.8s ease-in-out infinite}.gc-assumption-toggle .field-ring-outer{top:10px;right:10px;bottom:10px;left:10px;border:1px solid rgba(123,245,186,.38)}.gc-assumption-toggle .field-ring-inner{top:28px;right:28px;bottom:28px;left:28px;border:1px dashed rgba(123,245,186,.55);animation:assumption-rotate 9s linear infinite reverse}.gc-assumption-toggle .field-core{width:16px;height:16px;background:#4ade80;box-shadow:0 0 18px #4ade80cc}.gc-assumption-toggle .field-core-chunk{width:30px;height:30px;border-radius:10px;background:linear-gradient(135deg,#4ade80,#16a34a)}.gc-assumption-toggle .field-question{position:absolute;top:12px;right:16px;color:#ffffffd9;font-size:1.4rem;font-weight:700}.gc-assumption-toggle .crt-collapse{animation:assumption-crt-collapse .1s cubic-bezier(.25,.46,.45,.94) forwards}.gc-assumption-toggle .crt-expand{animation:assumption-crt-expand .1s cubic-bezier(.25,.46,.45,.94) forwards}@keyframes assumption-crt-collapse{0%{transform:scaleY(1)}60%{transform:scaleY(.1)}to{transform:scaleY(.005)}}@keyframes assumption-crt-expand{0%{transform:scaleY(.005)}60%{transform:scaleY(.1)}to{transform:scaleY(1)}}@keyframes assumption-slow-spin{0%{transform:rotateX(-20deg) rotateY(0)}to{transform:rotateX(-20deg) rotateY(360deg)}}@keyframes assumption-arrow-enter{0%{opacity:0;transform:translate(-12px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes assumption-float{0%{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}50%{transform:rotateX(-30deg) rotateY(45deg) translateY(-10px)}to{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}}@keyframes assumption-pulsar{0%{transform:translate(-50%,-50%) scale3d(.15,.15,.15) rotate(0);opacity:0}50%{transform:translate(-50%,-50%) scale3d(1.45,1.45,1.45) rotate(180deg);opacity:1}to{transform:translate(-50%,-50%) scale3d(3,3,3) rotate(360deg);opacity:0}}@keyframes assumption-explode-0{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(56px,54px) rotate(360deg)}}@keyframes assumption-explode-1{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-72px,48px) rotate(-180deg)}}@keyframes assumption-explode-2{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(30px,-84px) rotate(90deg)}}@keyframes assumption-explode-3{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-58px,-44px) rotate(-270deg)}}@keyframes assumption-explode-4{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(12px,74px) rotate(45deg)}}@keyframes assumption-explode-5{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-92px,6px) rotate(-45deg)}}@keyframes assumption-explode-6{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(48px,-54px) rotate(120deg)}}@keyframes assumption-explode-7{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-64px,58px) rotate(200deg)}}@keyframes assumption-explode-8{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(74px,18px) rotate(-100deg)}}@keyframes assumption-explode-9{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-26px,-82px) rotate(60deg)}}@keyframes assumption-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes assumption-jitter{0%{transform:translate(0)}25%{transform:translate(1px,1px)}50%{transform:translate(-1px,-1px)}75%{transform:translate(-1px,1px)}to{transform:translate(1px,-1px)}}@keyframes assumption-tilt{0%{transform:rotate(0) scale(1)}50%{transform:rotate(18deg) scale(1.08)}to{transform:rotate(0) scale(1)}}@keyframes assumption-cursor-blink{0%,45%{opacity:1}46%,to{opacity:0}}@keyframes assumption-led-pulse{0%,to{opacity:.5;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}@media (max-width: 900px){.gc-assumption-toggle .component-shell{padding:12px 0}.gc-assumption-toggle .switch-group{gap:12px;padding:0 14px}.gc-assumption-toggle .toggle-track{min-height:50px}.gc-assumption-toggle .action-button{padding:10px 22px}.gc-assumption-toggle .action-button.secondary{padding:6px 36px}.gc-assumption-toggle .result-container{padding:14px}.gc-assumption-toggle .intermediate-result{margin-top:10px;font-size:.68rem}.gc-assumption-toggle .slide-processing{padding:18px 14px 14px}.gc-assumption-toggle .processing-shell,.gc-assumption-toggle .processing-terminal{padding:12px}}.gc-assumption-toggle .visualization-container{background:radial-gradient(circle at 50% 30%,rgba(156,255,197,.12),transparent 42%),linear-gradient(180deg,rgba(9,19,13,.9),rgba(6,12,8,.96))}.gc-assumption-toggle .result-container{background:linear-gradient(180deg,rgba(247,252,248,.92),rgba(220,237,226,.94));border:1px solid rgba(8,33,18,.12);box-shadow:inset 0 1px #ffffff59}.gc-assumption-toggle .summary-box{padding:4px 0}.gc-assumption-toggle .summary-value{color:#0f2d18}.gc-assumption-toggle .intermediate-result{padding:7px 12px;border-radius:999px;color:#d9ffe5;background:linear-gradient(180deg,rgba(7,27,14,.92),rgba(12,40,20,.94));border:1px solid rgba(120,255,154,.18);box-shadow:inset 0 1px #ffffff14,0 8px 20px #0000001f;opacity:1}.gc-assumption-toggle .digital-lattice{position:relative;width:150px;height:150px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .digital-grid{position:absolute;top:20px;right:20px;bottom:20px;left:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;transform:rotate(45deg)}.gc-assumption-toggle .digital-cell{border-radius:10px;background:linear-gradient(135deg,rgba(246,203,77,.25),rgba(201,128,16,.68)),linear-gradient(180deg,rgba(255,255,255,.14),rgba(0,0,0,.1));border:1px solid rgba(255,222,118,.35);box-shadow:inset 0 1px #ffffff1a,0 0 18px #f6b7311f;animation:assumption-digital-flicker 2.6s ease-in-out infinite}.gc-assumption-toggle .digital-cell-core{background:linear-gradient(135deg,rgba(255,235,142,.8),rgba(240,156,22,.92)),linear-gradient(180deg,rgba(255,255,255,.18),rgba(0,0,0,.06));box-shadow:0 0 26px #ffd86ba6,inset 0 0 12px #fff3}.gc-assumption-toggle .digital-cell-0{animation-delay:.05s}.gc-assumption-toggle .digital-cell-1{animation-delay:.25s}.gc-assumption-toggle .digital-cell-2{animation-delay:.55s}.gc-assumption-toggle .digital-cell-3{animation-delay:.35s}.gc-assumption-toggle .digital-cell-4{animation-delay:.12s}.gc-assumption-toggle .digital-cell-5{animation-delay:.68s}.gc-assumption-toggle .digital-cell-6{animation-delay:.44s}.gc-assumption-toggle .digital-cell-7{animation-delay:.2s}.gc-assumption-toggle .digital-cell-8{animation-delay:.78s}.gc-assumption-toggle .digital-core{position:relative;z-index:2;width:54px;height:54px;border-radius:16px;border:1px solid rgba(255,230,136,.45);background:radial-gradient(circle at 35% 35%,rgba(255,248,202,.45),transparent 55%),linear-gradient(145deg,rgba(98,64,8,.92),rgba(236,167,24,.92));box-shadow:0 0 34px #efb83c5c,inset 0 0 20px #fff6ae33;transform:rotate(45deg)}.gc-assumption-toggle .digital-core-dot{position:absolute;top:18px;right:18px;bottom:18px;left:18px;border-radius:12px;background:rgba(255,248,210,.94);box-shadow:0 0 18px #fff5be99}.gc-assumption-toggle .digital-scan{position:absolute;z-index:1;border-radius:999px;background:rgba(145,255,191,.18)}.gc-assumption-toggle .digital-scan-horizontal{width:132px;height:2px;animation:assumption-digital-scan-x 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-scan-vertical{width:2px;height:132px;animation:assumption-digital-scan-y 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-aura{position:absolute;top:6px;right:6px;bottom:6px;left:6px;border-radius:28px;border:1px solid rgba(255,226,118,.18);box-shadow:0 0 34px #f5bc3f26}.gc-assumption-toggle .physics-observatory{position:relative;width:158px;height:158px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .physics-grid{position:absolute;top:10px;right:10px;bottom:10px;left:10px;border-radius:999px;background:radial-gradient(circle,rgba(151,244,209,.09),transparent 58%),repeating-radial-gradient(circle,rgba(255,255,255,.09) 0 1px,transparent 1px 18px);-webkit-mask-image:radial-gradient(circle,black 58%,transparent 78%);mask-image:radial-gradient(circle,black 58%,transparent 78%);opacity:.75}.gc-assumption-toggle .physics-halo{position:absolute;border-radius:999px;border:1px solid rgba(157,253,224,.28)}.gc-assumption-toggle .physics-halo-outer{top:8px;right:8px;bottom:8px;left:8px;animation:assumption-rotate 18s linear infinite}.gc-assumption-toggle .physics-halo-inner{top:28px;right:28px;bottom:28px;left:28px;border-style:dashed;border-color:#76edc68a;animation:assumption-rotate 12s linear infinite reverse}.gc-assumption-toggle .physics-core-shell{position:absolute;width:54px;height:54px;border-radius:999px;background:radial-gradient(circle at 35% 35%,rgba(255,255,255,.4),transparent 52%),linear-gradient(180deg,rgba(27,92,69,.88),rgba(10,36,28,.95));box-shadow:inset 0 0 22px #b2ffe429,0 0 34px #54d9a452}.gc-assumption-toggle .physics-core-shell-chunk{border-radius:18px;transform:rotate(45deg)}.gc-assumption-toggle .physics-core-point{position:absolute;top:17px;right:17px;bottom:17px;left:17px;border-radius:999px;background:radial-gradient(circle,#baffe6 0%,#4ade80 48%,#16825b 100%);box-shadow:0 0 22px #85ffcca6,0 0 42px #5adca242}.gc-assumption-toggle .physics-core-chunk{border-radius:9px}.gc-assumption-toggle .physics-orbit{position:absolute;width:10px;height:10px;border-radius:999px;background:linear-gradient(180deg,#f2fff9,#89ffd0);box-shadow:0 0 16px #89ffd094}.gc-assumption-toggle .physics-orbit-1{animation:assumption-orbit-one 6.4s linear infinite}.gc-assumption-toggle .physics-orbit-2{width:8px;height:8px;background:linear-gradient(180deg,#fff6d7,#ffcf69);box-shadow:0 0 14px #ffcf698c;animation:assumption-orbit-two 8.2s linear infinite reverse}.gc-assumption-toggle .physics-orbit-3{width:6px;height:6px;background:linear-gradient(180deg,#dffcff,#73d4ff);box-shadow:0 0 12px #73d4ff80;animation:assumption-orbit-three 10s linear infinite}.gc-assumption-toggle .physics-question-ring{position:absolute;top:44px;right:44px;bottom:44px;left:44px;display:flex;justify-content:center;align-items:center;border-radius:999px;border:1px dashed rgba(255,241,171,.28)}.gc-assumption-toggle .physics-question{color:#fff8d2f0;font-size:1.2rem;font-weight:700;text-shadow:0 0 12px rgba(255,226,130,.35)}@keyframes assumption-digital-flicker{0%,to{opacity:.72;transform:scale(1)}35%{opacity:1;transform:scale(1.04)}60%{opacity:.84;transform:scale(.98)}}@keyframes assumption-digital-scan-x{0%,to{transform:translateY(-48px);opacity:.2}50%{transform:translateY(48px);opacity:.9}}@keyframes assumption-digital-scan-y{0%,to{transform:translate(-48px);opacity:.18}50%{transform:translate(48px);opacity:.88}}@keyframes assumption-orbit-one{0%{transform:rotate(0) translate(54px) rotate(0)}to{transform:rotate(360deg) translate(54px) rotate(-360deg)}}@keyframes assumption-orbit-two{0%{transform:rotate(40deg) translate(34px) translateY(-14px) rotate(0)}to{transform:rotate(400deg) translate(34px) translateY(-14px) rotate(-360deg)}}@keyframes assumption-orbit-three{0%{transform:rotate(-20deg) translate(64px) translateY(4px) rotate(0)}to{transform:rotate(340deg) translate(64px) translateY(4px) rotate(-360deg)}}')),document.head.appendChild(t)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})(); +import { jsx as A, jsxs as B } from "react/jsx-runtime"; +import { useState as h, useRef as O, useEffect as a } from "react"; +const HA = "data:image/png;base64,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", cA = "glitch:play-sound", QA = "glitch:stop-sound", FA = "glitch:host:", P = { + click: "ui.button_click", + hover: "ui.button_hover", + computeStart: "machine.compute_start", + computeStep: "machine.compute_step", + computeDone: "machine.compute_done", + verdictStable: "machine.verdict_stable", + verdictAlert: "machine.verdict_alert" +}; +function J(w, C) { + typeof window > "u" || window.dispatchEvent(new CustomEvent(w, { detail: C })); +} +function o(w, C, D) { + try { + if (w != null && w.playSound) { + w.playSound(C, D); + return; + } + } catch { + } + J(cA, { id: C, payload: D }); +} +function Z(w, C, D) { + try { + if (w != null && w.stopSound) { + w.stopSound(C, D); + return; + } + } catch { + } + J(QA, { id: C, payload: D }); +} +function z(w, C, D) { + try { + if (w != null && w.emit) { + w.emit(C, D); + return; + } + } catch { + } + J(`${FA}${C}`, D); +} +const v = { + continuousUniverse: !0, + infinitePrecision: !0, + chunkParticles: !1 +}, E = { + "000": { + outcome: "Paradoxical", + intermediate: "Very very much information.", + description: "Space is supposed to be discrete, but each cell must contain ar arbitrary amount of information.", + visualClass: "paradox-point", + tone: "paradox" + }, + "001": { + outcome: "Digital Physics", + intermediate: "Instruction programs remain finite.", + description: "Stable but requires continuous rotational symmetry to be emergent", + visualClass: "stable-chunk", + tone: "stable" + }, + "010": { + outcome: "#1 Memory Paradox", + intermediate: "Move sets can scale to infinite length", + description: "Infinte memory per cell", + visualClass: "paradox-point", + tone: "paradox" + }, + "011": { + outcome: "#2 Memory Paradox", + intermediate: "Move sets can scale to infinite length", + description: "Chunky particles must grow without bound to hold infinite move set", + visualClass: "paradox-chunk", + tone: "paradox" + }, + 100: { + outcome: "Paradoxical", + intermediate: "Chunky geometry implies discrete space", + description: "A continuous universe with chunky particles spanning fundamental cells is a constadiction.", + visualClass: "non-standard-particle-point", + tone: "warning" + }, + 101: { + outcome: "Paradoxical", + intermediate: "The geometry breaks isotropy.", + description: "Continuous universe plus chunk particles that imply discrete space is a constradiction.", + visualClass: "non-standard-particle-chunk", + tone: "warning" + }, + 110: { + outcome: "Standard Physics", + intermediate: "The model remains isotropic.", + description: "Continuous space with infinite precision preserves the canonical picture.", + visualClass: "standard-particle-point", + tone: "stable" + }, + 111: { + outcome: "Contradictory", + intermediate: "Continuous universe cannot be combined with chunk particles.", + description: "Chunky cannot be not chunky", + visualClass: "standard-particle-chunk", + tone: "uncertain" + } +}, p = { + "000": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Point state exceeds single-cell information budget" }, + { label: "Verdict trace", value: "Single cell must have arbitrary information capacity" } + ], + "001": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Chunk particle geometry engaged" }, + { label: "Consistency check", value: "State remains compressible under finite instruction length" }, + { label: "Verdict trace", value: "Digital physics interpretation remains internally stable" } + ], + "010": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Each lattice cell requires unbounded memory" }, + { label: "Verdict trace", value: "Inconsistent with isotropy" } + ], + "011": [ + { label: "Universe model", value: "Discrete" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Chunk particle" }, + { label: "Consistency check", value: "Particles grow to express information" }, + { label: "Verdict trace", value: "Chunk particles grow to infinite size" } + ], + 100: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Severely demotivated" }, + { label: "Verdict trace", value: "No explanation for rejecting CRS. Smell detected." } + ], + 101: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Finite (Rejects CRS!)" }, + { label: "Requirement", value: "Isotropy is emergent" }, + { label: "Particle mode", value: "Chunk particle geometry engaged" }, + { label: "Consistency check", value: "Space is quantized but cells infinitely small" }, + { label: "Verdict trace", value: "Non-standard hybrid geometry. Smell detected" } + ], + 110: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Point particle" }, + { label: "Consistency check", value: "Canonical isotropic field picture remains intact" }, + { label: "Verdict trace", value: "Standard physics baseline recovered successfully" } + ], + 111: [ + { label: "Universe model", value: "Continuous manifold" }, + { label: "Precision model", value: "Infinite (CRS)" }, + { label: "Particle mode", value: "Chunk particle geometry engaged" }, + { label: "Consistency check", value: "Inconsistent." }, + { label: "Verdict trace", value: "Chunk particle cannot be not chunky" } + ] +}; +function r(w, C) { + return typeof w == "boolean" ? w : C; +} +function f(w) { + return { + continuousUniverse: r(w == null ? void 0 : w.continuousUniverse, v.continuousUniverse), + infinitePrecision: r(w == null ? void 0 : w.infinitePrecision, v.infinitePrecision), + chunkParticles: r(w == null ? void 0 : w.chunkParticles, v.chunkParticles) + }; +} +function t(w) { + return [ + w.continuousUniverse ? "1" : "0", + w.infinitePrecision ? "1" : "0", + w.chunkParticles ? "1" : "0" + ].join(""); +} +function R(w) { + const C = w.continuousUniverse ? "Continuous universe" : "Discrete universe", D = w.infinitePrecision ? "Infinite precision" : "Finite precision", s = w.chunkParticles ? "Chunk particles" : "Point particles"; + return `${C} + ${D} + ${s}`; +} +function PA(w) { + return w.tone === "stable" ? 100 : w.tone === "uncertain" ? 60 : w.tone === "warning" ? 40 : 20; +} +function MA({ visualClass: w }) { + return w === "paradox-point" ? /* @__PURE__ */ B("div", { className: "cube-wrapper", children: [ + /* @__PURE__ */ B("div", { className: "cube", children: [ + /* @__PURE__ */ A("div", { className: "face front" }), + /* @__PURE__ */ A("div", { className: "face back" }), + /* @__PURE__ */ A("div", { className: "face right" }), + /* @__PURE__ */ A("div", { className: "face left" }), + /* @__PURE__ */ A("div", { className: "face top" }), + /* @__PURE__ */ A("div", { className: "face bottom" }), + /* @__PURE__ */ A("div", { className: "particle-point" }) + ] }), + /* @__PURE__ */ B("div", { className: "info-arrow", children: [ + /* @__PURE__ */ A("div", { className: "arrow-line" }), + /* @__PURE__ */ A("div", { className: "arrow-head" }), + /* @__PURE__ */ A("span", { className: "infinite-symbol", children: "∞" }) + ] }) + ] }) : w === "stable-chunk" ? /* @__PURE__ */ B("div", { className: "digital-lattice", children: [ + /* @__PURE__ */ A("div", { className: "digital-grid", children: Array.from({ length: 9 }, (C, D) => /* @__PURE__ */ A( + "span", + { + className: `digital-cell digital-cell-${D}${D === 4 ? " digital-cell-core" : ""}` + }, + D + )) }), + /* @__PURE__ */ A("div", { className: "digital-core", children: /* @__PURE__ */ A("span", { className: "digital-core-dot" }) }), + /* @__PURE__ */ A("div", { className: "digital-scan digital-scan-horizontal" }), + /* @__PURE__ */ A("div", { className: "digital-scan digital-scan-vertical" }), + /* @__PURE__ */ A("div", { className: "digital-aura" }) + ] }) : w === "paradox-chunk" ? /* @__PURE__ */ B("div", { className: "chaos-wrapper", children: [ + /* @__PURE__ */ B("div", { className: "central-source", children: [ + /* @__PURE__ */ A("div", { className: "face front" }), + /* @__PURE__ */ A("div", { className: "face back" }), + /* @__PURE__ */ A("div", { className: "face right" }), + /* @__PURE__ */ A("div", { className: "face left" }), + /* @__PURE__ */ A("div", { className: "face top" }), + /* @__PURE__ */ A("div", { className: "face bottom" }) + ] }), + Array.from({ length: 10 }, (C, D) => /* @__PURE__ */ B("div", { className: `debris-cube d-${D}`, children: [ + /* @__PURE__ */ A("div", { className: "face front" }), + /* @__PURE__ */ A("div", { className: "face back" }), + /* @__PURE__ */ A("div", { className: "face right" }), + /* @__PURE__ */ A("div", { className: "face left" }), + /* @__PURE__ */ A("div", { className: "face top" }), + /* @__PURE__ */ A("div", { className: "face bottom" }) + ] }, D)) + ] }) : w === "non-standard-particle-point" ? /* @__PURE__ */ B("div", { className: "signal-orbit signal-orbit-point", children: [ + /* @__PURE__ */ A("div", { className: "signal-ring" }), + /* @__PURE__ */ A("div", { className: "signal-dot" }), + /* @__PURE__ */ A("div", { className: "signal-axis" }) + ] }) : w === "non-standard-particle-chunk" ? /* @__PURE__ */ B("div", { className: "signal-orbit signal-orbit-chunk", children: [ + /* @__PURE__ */ A("div", { className: "signal-ring" }), + /* @__PURE__ */ A("div", { className: "signal-cube" }), + /* @__PURE__ */ A("div", { className: "signal-axis" }) + ] }) : w === "standard-particle-point" ? /* @__PURE__ */ B("div", { className: "physics-observatory", children: [ + /* @__PURE__ */ A("div", { className: "physics-grid" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-outer" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-inner" }), + /* @__PURE__ */ A("div", { className: "physics-core-shell", children: /* @__PURE__ */ A("div", { className: "physics-core-point" }) }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-1" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-2" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-3" }) + ] }) : /* @__PURE__ */ B("div", { className: "physics-observatory physics-observatory-chunk", children: [ + /* @__PURE__ */ A("div", { className: "physics-grid" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-outer" }), + /* @__PURE__ */ A("div", { className: "physics-halo physics-halo-inner" }), + /* @__PURE__ */ A("div", { className: "physics-core-shell physics-core-shell-chunk", children: /* @__PURE__ */ A("div", { className: "physics-core-point physics-core-chunk" }) }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-1" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-2" }), + /* @__PURE__ */ A("span", { className: "physics-orbit physics-orbit-3" }), + /* @__PURE__ */ A("div", { className: "physics-question-ring", children: /* @__PURE__ */ A("span", { className: "physics-question", children: "?" }) }) + ] }); +} +function xA({ + config: w, + onComplete: C, + onProgress: D, + theme: s, + className: d, + host: c +}) { + const [G, S] = h(() => f(w.params)), [x, q] = h("splash"), [T, N] = h(""), [j, $] = h(() => E[t(f(w.params))]), [H, _] = h(() => t(f(w.params))), [X, AA] = h( + () => R(f(w.params)) + ), [wA, V] = h([]), [DA, K] = h(""), k = O([]), i = O(c), b = O(C), W = O(D); + a(() => { + S(f(w.params)); + }, [w.params]), a(() => { + i.current = c, b.current = C, W.current = D; + }, [c, C, D]), a(() => { + if (x !== "processing") + return; + const g = p[H] ?? []; + let Y = !1; + V([]), K(""); + const Q = (e, y) => { + if (Y) + return; + if (e >= g.length) { + L(() => { + if (Y) + return; + const F = E[H]; + o(i.current, P.computeDone, { state: H }), I("result", () => { + var m; + (m = W.current) == null || m.call(W, 100), o( + i.current, + F.tone === "stable" ? P.verdictStable : P.verdictAlert, + { state: H, outcome: F.outcome } + ), z(i.current, "verdict-ready", { + state: H, + outcome: F.outcome, + tone: F.tone + }), b.current({ + success: !0, + score: PA(F), + data: { + assumptions: X, + state: H, + outcome: F.outcome, + intermediate: F.intermediate, + description: F.description, + processingTrace: p[H].map((u) => `${u.label}: ${u.value}`) + } + }); + }); + }, 520); + return; + } + const U = `${g[e].label}: ${g[e].value}`; + if (y <= U.length) { + y === 0 && o(i.current, P.computeStep, { state: H, lineIndex: e }), K(U.slice(0, y)), L(() => Q(e, y + 1), 24); + return; + } + V((F) => [...F, U]), K(""), e === g.length - 1 && Z(i.current, P.computeStep, { state: H, lineIndex: e }), L(() => Q(e + 1, 0), 170); + }; + return L(() => Q(0, 0), 180), () => { + Y = !0, Z(i.current, P.computeStep, { state: H }); + }; + }, [X, H, x]), a(() => () => { + n(); + }, []); + function n() { + for (const g of k.current) + window.clearTimeout(g); + k.current = []; + } + function L(g, Y) { + const Q = window.setTimeout(g, Y); + k.current.push(Q); + } + function I(g, Y) { + n(), N("crt-collapse"), L(() => { + q(g), Y == null || Y(), N("crt-expand"), L(() => { + N(""); + }, 110); + }, 110); + } + function l(g, Y) { + S((Q) => ({ ...Q, [g]: Y })), o(c, P.click, { control: g, value: Y }); + } + function M(g) { + o(c, P.hover, { target: g }); + } + function gA() { + z(c, "session-started", { component: w.name, id: w.id }), D == null || D(10), I("controls"); + } + function BA() { + const g = t(G), Y = E[g], Q = R(G); + _(g), AA(Q), $(Y), o(c, P.computeStart, { state: g }), z(c, "processing-started", { + state: g, + assumptions: Q + }), D == null || D(45), I("processing", () => { + D == null || D(70); + }); + } + function sA() { + n(), Z(c, P.computeStep, { state: H }), z(c, "returned-to-controls", { state: H }), D == null || D(20), I("controls"); + } + R(G); + const CA = x === "result" && j.visualClass.includes("paradox"), YA = { + "--gc-primary": (s == null ? void 0 : s.primary) || "#248a00", + "--gc-accent": (s == null ? void 0 : s.accent) || "#1c6a00", + "--gc-bg": (s == null ? void 0 : s.bg) || "#ffffff", + "--gc-bg-secondary": (s == null ? void 0 : s.bgSecondary) || "#616161", + "--gc-text": (s == null ? void 0 : s.text) || "#0f172a", + "--gc-text-muted": (s == null ? void 0 : s.textMuted) || "#eaffd8", + "--gc-border": (s == null ? void 0 : s.border) || "rgba(255,255,255,0.12)", + "--assumption-frame-image": `url(${HA})` + }; + return /* @__PURE__ */ A("div", { className: `gc-assumption-toggle ${d || ""}`.trim(), style: YA, children: /* @__PURE__ */ A("div", { className: "component-shell", children: /* @__PURE__ */ A("div", { className: "main-wrapper", children: /* @__PURE__ */ A("div", { className: `crt-screen ${CA ? "paradox-errors" : ""}`, children: /* @__PURE__ */ B("div", { className: `slides-wrapper ${T}`, children: [ + x === "splash" && /* @__PURE__ */ A("div", { className: "slide slide-splash", children: /* @__PURE__ */ B("div", { className: "splash-content", children: [ + /* @__PURE__ */ A("h1", { children: "Foundational Assumption Recombinator Tool" }), + /* @__PURE__ */ A("h2", { children: "v1.0" }), + /* @__PURE__ */ A( + "button", + { + type: "button", + className: "action-button", + onClick: gA, + onMouseEnter: () => M("initialize"), + onFocus: () => M("initialize"), + children: "Initialize" + } + ) + ] }) }), + x === "controls" && /* @__PURE__ */ B("div", { className: "slide slide-controls", children: [ + /* @__PURE__ */ A("div", { className: "widget-header", children: /* @__PURE__ */ A("h1", { children: "Settings" }) }), + /* @__PURE__ */ B("div", { className: "switch-group", children: [ + /* @__PURE__ */ B("div", { className: "switch-item", children: [ + /* @__PURE__ */ A( + "input", + { + id: `${w.id}-toggle-universe`, + className: "switch-input", + type: "checkbox", + checked: G.continuousUniverse, + onChange: (g) => l("continuousUniverse", g.target.checked) + } + ), + /* @__PURE__ */ B( + "label", + { + className: "toggle-track", + htmlFor: `${w.id}-toggle-universe`, + onMouseEnter: () => M("toggle-universe"), + children: [ + /* @__PURE__ */ A("span", { className: "option-left", children: "Discrete Universe" }), + /* @__PURE__ */ A("span", { className: "option-right", children: "Continuous Universe" }) + ] + } + ) + ] }), + /* @__PURE__ */ B("div", { className: "switch-item", children: [ + /* @__PURE__ */ A( + "input", + { + id: `${w.id}-toggle-precision`, + className: "switch-input", + type: "checkbox", + checked: G.infinitePrecision, + onChange: (g) => l("infinitePrecision", g.target.checked) + } + ), + /* @__PURE__ */ B( + "label", + { + className: "toggle-track", + htmlFor: `${w.id}-toggle-precision`, + onMouseEnter: () => M("toggle-precision"), + children: [ + /* @__PURE__ */ A("span", { className: "option-left", children: "Finite Precision" }), + /* @__PURE__ */ A("span", { className: "option-right", children: "Infinite Precision" }) + ] + } + ) + ] }), + /* @__PURE__ */ B("div", { className: "switch-item", children: [ + /* @__PURE__ */ A( + "input", + { + id: `${w.id}-toggle-particles`, + className: "switch-input", + type: "checkbox", + checked: G.chunkParticles, + onChange: (g) => l("chunkParticles", g.target.checked) + } + ), + /* @__PURE__ */ B( + "label", + { + className: "toggle-track", + htmlFor: `${w.id}-toggle-particles`, + onMouseEnter: () => M("toggle-particles"), + children: [ + /* @__PURE__ */ A("span", { className: "option-left", children: "Point Particles" }), + /* @__PURE__ */ A("span", { className: "option-right", children: "Chunk Particles" }) + ] + } + ) + ] }) + ] }), + /* @__PURE__ */ A( + "button", + { + type: "button", + className: "action-button", + onClick: BA, + onMouseEnter: () => M("simulate"), + onFocus: () => M("simulate"), + children: "Simulate" + } + ) + ] }), + x === "result" && /* @__PURE__ */ B("div", { className: "slide slide-result", children: [ + /* @__PURE__ */ B("div", { className: "bottom-container", children: [ + /* @__PURE__ */ A("div", { className: "visualization-container", children: /* @__PURE__ */ A("div", { className: `art-canvas ${j.visualClass}`, children: /* @__PURE__ */ A(MA, { visualClass: j.visualClass }) }) }), + /* @__PURE__ */ B("div", { className: "result-container", children: [ + /* @__PURE__ */ A("div", { className: "summary-box", children: /* @__PURE__ */ A("span", { className: `result-value result-${j.tone}`, children: j.outcome }) }), + /* @__PURE__ */ A("div", { className: "summary-box", children: /* @__PURE__ */ A("div", { className: "intermediate-result", children: j.intermediate }) }), + /* @__PURE__ */ A("span", { className: "result-description", children: j.description }) + ] }) + ] }), + /* @__PURE__ */ A( + "button", + { + type: "button", + className: "action-button secondary", + onClick: sA, + onMouseEnter: () => M("back"), + onFocus: () => M("back"), + children: "Back" + } + ) + ] }), + x === "processing" && /* @__PURE__ */ A("div", { className: "slide slide-processing", children: /* @__PURE__ */ B("div", { className: "processing-shell", children: [ + /* @__PURE__ */ B("div", { className: "processing-header", children: [ + /* @__PURE__ */ A("span", { className: "processing-led" }), + /* @__PURE__ */ A("h2", { children: "Computing Assumption Matrix" }) + ] }), + /* @__PURE__ */ A("div", { className: "processing-subtitle", children: "Applying Constructor Theoretic Constraints" }), + /* @__PURE__ */ B("div", { className: "processing-terminal", children: [ + wA.map((g, Y) => /* @__PURE__ */ B("div", { className: "processing-line", children: [ + /* @__PURE__ */ A("span", { className: "processing-prompt", children: ">" }), + /* @__PURE__ */ A("span", { children: g }) + ] }, `${g}-${Y}`)), + /* @__PURE__ */ B("div", { className: "processing-line processing-line-active", children: [ + /* @__PURE__ */ A("span", { className: "processing-prompt", children: ">" }), + /* @__PURE__ */ A("span", { children: DA }), + /* @__PURE__ */ A("span", { className: "processing-cursor" }) + ] }) + ] }) + ] }) }) + ] }) }) }) }) }); +} +const jA = { + name: "assumption-toggle", + displayName: "Assumption Toggle", + version: "1.0.0", + paramSchema: { + continuousUniverse: { + type: "boolean", + label: "Continuous Universe", + description: "Toggle between a discrete and continuous universe model.", + default: !0 + }, + infinitePrecision: { + type: "boolean", + label: "Infinite Precision", + description: "Toggle between finite and infinite precision.", + default: !0 + }, + chunkParticles: { + type: "boolean", + label: "Chunk Particles", + description: "Toggle between point particles and chunk particles.", + default: !1 + } + }, + defaultParams: { + continuousUniverse: !0, + infinitePrecision: !0, + chunkParticles: !1 + } +}; +export { + xA as default, + jA as metadata +}; +//# sourceMappingURL=assumption-toggle.js.map diff --git a/public/glitch/glitch_assumption_toggle/assumption-toggle.js.map b/public/glitch/glitch_assumption_toggle/assumption-toggle.js.map new file mode 100644 index 0000000..d52bfd3 --- /dev/null +++ b/public/glitch/glitch_assumption_toggle/assumption-toggle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assumption-toggle.js","sources":["../technoborder.png","../src/hostBridge.ts","../src/Component.tsx","../src/index.tsx"],"sourcesContent":["export default \"data:image/png;base64,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\"","import type { GlitchHostBridge } from './types';\n\nexport const HOST_SOUND_EVENT = 'glitch:play-sound';\nexport const HOST_STOP_SOUND_EVENT = 'glitch:stop-sound';\nexport const HOST_EMIT_PREFIX = 'glitch:host:';\n\nexport const SOUND_IDS = {\n click: 'ui.button_click',\n hover: 'ui.button_hover',\n computeStart: 'machine.compute_start',\n computeStep: 'machine.compute_step',\n computeDone: 'machine.compute_done',\n verdictStable: 'machine.verdict_stable',\n verdictAlert: 'machine.verdict_alert'\n} as const;\n\nexport type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS];\n\nfunction dispatchWindowEvent(type: string, detail: T) {\n if (typeof window === 'undefined') return;\n window.dispatchEvent(new CustomEvent(type, { detail }));\n}\n\nexport function safePlaySound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.playSound) {\n host.playSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_SOUND_EVENT, { id, payload });\n}\n\nexport function safeStopSound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.stopSound) {\n host.stopSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_STOP_SOUND_EVENT, { id, payload });\n}\n\nexport function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown) {\n try {\n if (host?.emit) {\n host.emit(type, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(`${HOST_EMIT_PREFIX}${type}`, payload);\n}\n","import { useEffect, useRef, useState, type CSSProperties } from 'react';\nimport frameImage from '../technoborder.png';\nimport { SOUND_IDS, safeEmit, safePlaySound, safeStopSound } from './hostBridge';\nimport type { GlitchComponentProps } from './types';\n\ntype Screen = 'splash' | 'controls' | 'processing' | 'result';\ntype ProcessingLine = {\n label: string;\n value: string;\n};\ntype TransitionState = '' | 'crt-collapse' | 'crt-expand';\ntype VisualClass =\n | 'paradox-point'\n | 'stable-chunk'\n | 'paradox-chunk'\n | 'non-standard-particle-point'\n | 'non-standard-particle-chunk'\n | 'standard-particle-point'\n | 'standard-particle-chunk';\ntype OutcomeTone = 'stable' | 'warning' | 'paradox' | 'uncertain';\n\ntype ToggleState = {\n continuousUniverse: boolean;\n infinitePrecision: boolean;\n chunkParticles: boolean;\n};\n\ntype OutcomeDefinition = {\n outcome: string;\n description: string;\n intermediate: string;\n visualClass: VisualClass;\n tone: OutcomeTone;\n};\n\nconst DEFAULT_STATE: ToggleState = {\n continuousUniverse: true,\n infinitePrecision: true,\n chunkParticles: false\n};\n\nconst OUTCOMES: Record = {\n '000': {\n outcome: 'Paradoxical',\n intermediate: 'Very very much information.',\n description: 'Space is supposed to be discrete, but each cell must contain ar arbitrary amount of information.',\n visualClass: 'paradox-point',\n tone: 'paradox'\n },\n '001': {\n outcome: 'Digital Physics',\n intermediate: 'Instruction programs remain finite.',\n description: 'Stable but requires continuous rotational symmetry to be emergent',\n visualClass: 'stable-chunk',\n tone: 'stable'\n },\n '010': {\n outcome: '#1 Memory Paradox',\n intermediate: 'Move sets can scale to infinite length',\n description: 'Infinte memory per cell',\n visualClass: 'paradox-point',\n tone: 'paradox'\n },\n '011': {\n outcome: '#2 Memory Paradox',\n intermediate: 'Move sets can scale to infinite length',\n description: 'Chunky particles must grow without bound to hold infinite move set',\n visualClass: 'paradox-chunk',\n tone: 'paradox'\n },\n '100': {\n outcome: 'Paradoxical',\n intermediate: 'Chunky geometry implies discrete space',\n description: 'A continuous universe with chunky particles spanning fundamental cells is a constadiction.',\n visualClass: 'non-standard-particle-point',\n tone: 'warning'\n },\n '101': {\n outcome: 'Paradoxical',\n intermediate: 'The geometry breaks isotropy.',\n description: 'Continuous universe plus chunk particles that imply discrete space is a constradiction.',\n visualClass: 'non-standard-particle-chunk',\n tone: 'warning'\n },\n '110': {\n outcome: 'Standard Physics',\n intermediate: 'The model remains isotropic.',\n description: 'Continuous space with infinite precision preserves the canonical picture.',\n visualClass: 'standard-particle-point',\n tone: 'stable'\n },\n '111': {\n outcome: 'Contradictory',\n intermediate: 'Continuous universe cannot be combined with chunk particles.',\n description: 'Chunky cannot be not chunky',\n visualClass: 'standard-particle-chunk',\n tone: 'uncertain'\n }\n};\n\nconst PROCESSING_LOGS: Record = {\n \"000\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Point state exceeds single-cell information budget\" },\n { label: \"Verdict trace\", value: \"Single cell must have arbitrary information capacity\" }\n ],\n \"001\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Chunk particle geometry engaged\" },\n { label: \"Consistency check\", value: \"State remains compressible under finite instruction length\" },\n { label: \"Verdict trace\", value: \"Digital physics interpretation remains internally stable\" }\n ],\n \"010\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Each lattice cell requires unbounded memory\" },\n { label: \"Verdict trace\", value: \"Inconsistent with isotropy\" }\n ],\n \"011\": [\n { label: \"Universe model\", value: \"Discrete\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Chunk particle\" },\n { label: \"Consistency check\", value: \"Particles grow to express information\" },\n { label: \"Verdict trace\", value: \"Chunk particles grow to infinite size\" }\n ],\n \"100\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Severely demotivated\" },\n { label: \"Verdict trace\", value: \"No explanation for rejecting CRS. Smell detected.\" }\n ],\n \"101\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Finite (Rejects CRS!)\" },\n { label: \"Requirement\", value: \"Isotropy is emergent\" },\n { label: \"Particle mode\", value: \"Chunk particle geometry engaged\" },\n { label: \"Consistency check\", value: \"Space is quantized but cells infinitely small\" },\n { label: \"Verdict trace\", value: \"Non-standard hybrid geometry. Smell detected\" }\n ],\n \"110\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Point particle\" },\n { label: \"Consistency check\", value: \"Canonical isotropic field picture remains intact\" },\n { label: \"Verdict trace\", value: \"Standard physics baseline recovered successfully\" }\n ],\n \"111\": [\n { label: \"Universe model\", value: \"Continuous manifold\" },\n { label: \"Precision model\", value: \"Infinite (CRS)\" },\n { label: \"Particle mode\", value: \"Chunk particle geometry engaged\" },\n { label: \"Consistency check\", value: \"Inconsistent.\" },\n { label: \"Verdict trace\", value: \"Chunk particle cannot be not chunky\" }\n ]\n};\n\nfunction coerceBoolean(value: unknown, fallback: boolean) {\n if (typeof value === 'boolean') return value;\n return fallback;\n}\n\nfunction readToggleState(params: Record | undefined): ToggleState {\n return {\n continuousUniverse: coerceBoolean(params?.continuousUniverse, DEFAULT_STATE.continuousUniverse),\n infinitePrecision: coerceBoolean(params?.infinitePrecision, DEFAULT_STATE.infinitePrecision),\n chunkParticles: coerceBoolean(params?.chunkParticles, DEFAULT_STATE.chunkParticles)\n };\n}\n\nfunction buildStateKey(state: ToggleState) {\n return [\n state.continuousUniverse ? '1' : '0',\n state.infinitePrecision ? '1' : '0',\n state.chunkParticles ? '1' : '0'\n ].join('');\n}\n\nfunction buildAssumptionsText(state: ToggleState) {\n const universe = state.continuousUniverse ? 'Continuous universe' : 'Discrete universe';\n const precision = state.infinitePrecision ? 'Infinite precision' : 'Finite precision';\n const particles = state.chunkParticles ? 'Chunk particles' : 'Point particles';\n return `${universe} + ${precision} + ${particles}`;\n}\n\nfunction getScore(outcome: OutcomeDefinition) {\n if (outcome.tone === 'stable') return 100;\n if (outcome.tone === 'uncertain') return 60;\n if (outcome.tone === 'warning') return 40;\n return 20;\n}\n\nfunction Visualization({ visualClass }: { visualClass: VisualClass }) {\n if (visualClass === 'paradox-point') {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n );\n }\n\n if (visualClass === 'stable-chunk') {\n return (\n
\n
\n {Array.from({ length: 9 }, (_, index) => (\n \n ))}\n
\n
\n \n
\n
\n
\n
\n
\n );\n }\n\n if (visualClass === 'paradox-chunk') {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n {Array.from({ length: 10 }, (_, index) => (\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n );\n }\n\n if (visualClass === 'non-standard-particle-point') {\n return (\n
\n
\n
\n
\n
\n );\n }\n\n if (visualClass === 'non-standard-particle-chunk') {\n return (\n
\n
\n
\n
\n
\n );\n }\n\n if (visualClass === 'standard-particle-point') {\n return (\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n );\n }\n\n return (\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n ?\n
\n
\n );\n}\n\nexport default function AssumptionToggle({\n config,\n onComplete,\n onProgress,\n theme,\n className,\n host\n}: GlitchComponentProps) {\n const [toggleState, setToggleState] = useState(() => readToggleState(config.params));\n const [screen, setScreen] = useState('splash');\n const [transitionState, setTransitionState] = useState('');\n const [result, setResult] = useState(() => OUTCOMES[buildStateKey(readToggleState(config.params))]);\n const [processingKey, setProcessingKey] = useState(() => buildStateKey(readToggleState(config.params)));\n const [processingAssumptions, setProcessingAssumptions] = useState(() =>\n buildAssumptionsText(readToggleState(config.params))\n );\n const [completedLines, setCompletedLines] = useState([]);\n const [activeLine, setActiveLine] = useState('');\n const timeoutsRef = useRef([]);\n const hostRef = useRef(host);\n const onCompleteRef = useRef(onComplete);\n const onProgressRef = useRef(onProgress);\n\n useEffect(() => {\n setToggleState(readToggleState(config.params));\n }, [config.params]);\n\n useEffect(() => {\n hostRef.current = host;\n onCompleteRef.current = onComplete;\n onProgressRef.current = onProgress;\n }, [host, onComplete, onProgress]);\n\n useEffect(() => {\n if (screen !== 'processing') return;\n\n const lines = PROCESSING_LOGS[processingKey] ?? [];\n let cancelled = false;\n\n setCompletedLines([]);\n setActiveLine('');\n\n const typeLine = (lineIndex: number, charIndex: number) => {\n if (cancelled) return;\n\n if (lineIndex >= lines.length) {\n queueTimeout(() => {\n if (cancelled) return;\n const finalResult = OUTCOMES[processingKey];\n safePlaySound(hostRef.current, SOUND_IDS.computeDone, { state: processingKey });\n runTransition('result', () => {\n onProgressRef.current?.(100);\n safePlaySound(\n hostRef.current,\n finalResult.tone === 'stable' ? SOUND_IDS.verdictStable : SOUND_IDS.verdictAlert,\n { state: processingKey, outcome: finalResult.outcome }\n );\n safeEmit(hostRef.current, 'verdict-ready', {\n state: processingKey,\n outcome: finalResult.outcome,\n tone: finalResult.tone\n });\n onCompleteRef.current({\n success: true,\n score: getScore(finalResult),\n data: {\n assumptions: processingAssumptions,\n state: processingKey,\n outcome: finalResult.outcome,\n intermediate: finalResult.intermediate,\n description: finalResult.description,\n processingTrace: PROCESSING_LOGS[processingKey].map((entry) => `${entry.label}: ${entry.value}`)\n }\n });\n });\n }, 520);\n return;\n }\n\n const fullLine = `${lines[lineIndex].label}: ${lines[lineIndex].value}`;\n\n if (charIndex <= fullLine.length) {\n if (charIndex === 0) {\n safePlaySound(hostRef.current, SOUND_IDS.computeStep, { state: processingKey, lineIndex });\n }\n setActiveLine(fullLine.slice(0, charIndex));\n queueTimeout(() => typeLine(lineIndex, charIndex + 1), 24);\n return;\n }\n\n setCompletedLines((current) => [...current, fullLine]);\n setActiveLine('');\n if (lineIndex === lines.length - 1) {\n safeStopSound(hostRef.current, SOUND_IDS.computeStep, { state: processingKey, lineIndex });\n }\n queueTimeout(() => typeLine(lineIndex + 1, 0), 170);\n };\n\n queueTimeout(() => typeLine(0, 0), 180);\n\n return () => {\n cancelled = true;\n safeStopSound(hostRef.current, SOUND_IDS.computeStep, { state: processingKey });\n };\n }, [processingAssumptions, processingKey, screen]);\n\n useEffect(() => {\n return () => {\n clearQueuedTimeouts();\n };\n }, []);\n\n function clearQueuedTimeouts() {\n for (const timeout of timeoutsRef.current) {\n window.clearTimeout(timeout);\n }\n timeoutsRef.current = [];\n }\n\n function queueTimeout(callback: () => void, delay: number) {\n const timeout = window.setTimeout(callback, delay);\n timeoutsRef.current.push(timeout);\n }\n\n function runTransition(nextScreen: Screen, onSwapped?: () => void) {\n clearQueuedTimeouts();\n setTransitionState('crt-collapse');\n queueTimeout(() => {\n setScreen(nextScreen);\n onSwapped?.();\n setTransitionState('crt-expand');\n queueTimeout(() => {\n setTransitionState('');\n }, 110);\n }, 110);\n }\n\n function setToggle(key: K, value: ToggleState[K]) {\n setToggleState(current => ({ ...current, [key]: value }));\n safePlaySound(host, SOUND_IDS.click, { control: key, value });\n }\n\n function handleUiHover(target: string) {\n safePlaySound(host, SOUND_IDS.hover, { target });\n }\n\n function handleInitialize() {\n safeEmit(host, 'session-started', { component: config.name, id: config.id });\n onProgress?.(10);\n runTransition('controls');\n }\n\n function handleSimulate() {\n const nextKey = buildStateKey(toggleState);\n const nextResult = OUTCOMES[nextKey];\n const nextAssumptions = buildAssumptionsText(toggleState);\n setProcessingKey(nextKey);\n setProcessingAssumptions(nextAssumptions);\n setResult(nextResult);\n safePlaySound(host, SOUND_IDS.computeStart, { state: nextKey });\n safeEmit(host, 'processing-started', {\n state: nextKey,\n assumptions: nextAssumptions\n });\n onProgress?.(45);\n runTransition('processing', () => {\n onProgress?.(70);\n });\n }\n\n function handleBack() {\n clearQueuedTimeouts();\n safeStopSound(host, SOUND_IDS.computeStep, { state: processingKey });\n safeEmit(host, 'returned-to-controls', { state: processingKey });\n onProgress?.(20);\n runTransition('controls');\n }\n\n const assumptionsText = buildAssumptionsText(toggleState);\n const showParadoxScreen = screen === 'result' && result.visualClass.includes('paradox');\n const rootStyle = {\n '--gc-primary': theme?.primary || '#248a00',\n '--gc-accent': theme?.accent || '#1c6a00',\n '--gc-bg': theme?.bg || '#ffffff',\n '--gc-bg-secondary': theme?.bgSecondary || '#616161',\n '--gc-text': theme?.text || '#0f172a',\n '--gc-text-muted': theme?.textMuted || '#eaffd8',\n '--gc-border': theme?.border || 'rgba(255,255,255,0.12)',\n '--assumption-frame-image': `url(${frameImage})`\n } as CSSProperties;\n\n return (\n
\n
\n
\n
\n
\n {screen === 'splash' && (\n
\n
\n

Foundational Assumption Recombinator Tool

\n

v1.0

\n handleUiHover('initialize')}\n onFocus={() => handleUiHover('initialize')}\n >\n Initialize\n \n
\n
\n )}\n\n {screen === 'controls' && (\n
\n
\n

Settings

\n
\n\n
\n
\n setToggle('continuousUniverse', event.target.checked)}\n />\n handleUiHover('toggle-universe')}\n >\n Discrete Universe\n Continuous Universe\n \n
\n\n
\n setToggle('infinitePrecision', event.target.checked)}\n />\n handleUiHover('toggle-precision')}\n >\n Finite Precision\n Infinite Precision\n \n
\n\n
\n setToggle('chunkParticles', event.target.checked)}\n />\n handleUiHover('toggle-particles')}\n >\n Point Particles\n Chunk Particles\n \n
\n
\n\n handleUiHover('simulate')}\n onFocus={() => handleUiHover('simulate')}\n >\n Simulate\n \n
\n )}\n\n {screen === 'result' && (\n
\n
\n
\n
\n \n
\n
\n\n
\n \n
\n {result.outcome}\n
\n\n
\n \n
{result.intermediate}
\n
\n {result.description}\n
\n\n \n
\n\n handleUiHover('back')}\n onFocus={() => handleUiHover('back')}\n >\n Back\n \n
\n )}\n\n {screen === 'processing' && (\n
\n
\n
\n \n

Computing Assumption Matrix

\n
\n
Applying Constructor Theoretic Constraints
\n
\n {completedLines.map((line, index) => (\n
\n >\n {line}\n
\n ))}\n
\n >\n {activeLine}\n \n
\n
\n
\n
\n )}\n
\n
\n
\n
\n
\n );\n}\n","import './styles.css';\nimport Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'assumption-toggle',\n displayName: 'Assumption Toggle',\n version: '1.0.0',\n paramSchema: {\n continuousUniverse: {\n type: 'boolean',\n label: 'Continuous Universe',\n description: 'Toggle between a discrete and continuous universe model.',\n default: true\n },\n infinitePrecision: {\n type: 'boolean',\n label: 'Infinite Precision',\n description: 'Toggle between finite and infinite precision.',\n default: true\n },\n chunkParticles: {\n type: 'boolean',\n label: 'Chunk Particles',\n description: 'Toggle between point particles and chunk particles.',\n default: false\n }\n },\n defaultParams: {\n continuousUniverse: true,\n infinitePrecision: true,\n chunkParticles: false\n }\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult\n} from './types';\n"],"names":["frameImage","HOST_SOUND_EVENT","HOST_STOP_SOUND_EVENT","HOST_EMIT_PREFIX","SOUND_IDS","dispatchWindowEvent","type","detail","safePlaySound","host","id","payload","safeStopSound","safeEmit","DEFAULT_STATE","OUTCOMES","PROCESSING_LOGS","coerceBoolean","value","fallback","readToggleState","params","buildStateKey","state","buildAssumptionsText","universe","precision","particles","getScore","outcome","Visualization","visualClass","jsxs","jsx","_","index","AssumptionToggle","config","onComplete","onProgress","theme","className","toggleState","setToggleState","useState","screen","setScreen","transitionState","setTransitionState","result","setResult","processingKey","setProcessingKey","processingAssumptions","setProcessingAssumptions","completedLines","setCompletedLines","activeLine","setActiveLine","timeoutsRef","useRef","hostRef","onCompleteRef","onProgressRef","useEffect","lines","cancelled","typeLine","lineIndex","charIndex","queueTimeout","finalResult","runTransition","_a","entry","fullLine","current","clearQueuedTimeouts","timeout","callback","delay","nextScreen","onSwapped","setToggle","key","handleUiHover","target","handleInitialize","handleSimulate","nextKey","nextResult","nextAssumptions","handleBack","showParadoxScreen","rootStyle","event","line","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/public/glitch/glitch_assumption_toggle/dev.d.ts b/public/glitch/glitch_assumption_toggle/dev.d.ts new file mode 100644 index 0000000..2c068e0 --- /dev/null +++ b/public/glitch/glitch_assumption_toggle/dev.d.ts @@ -0,0 +1 @@ +import './dev-theme.css'; diff --git a/public/glitch/glitch_assumption_toggle/devHostBridge.d.ts b/public/glitch/glitch_assumption_toggle/devHostBridge.d.ts new file mode 100644 index 0000000..3fba17e --- /dev/null +++ b/public/glitch/glitch_assumption_toggle/devHostBridge.d.ts @@ -0,0 +1,8 @@ +import type { GlitchHostBridge } from './types'; +export type DevHostBridgeOptions = { + isMuted?: () => boolean; + onSound?: (id: string, payload?: Record) => void; + onEmit?: (type: string, payload?: unknown) => void; +}; +export declare function createDevHostBridge(options?: DevHostBridgeOptions): GlitchHostBridge; +export declare function attachWindowSoundBridge(host: GlitchHostBridge): () => void; diff --git a/public/glitch/glitch_assumption_toggle/glitch.manifest.json b/public/glitch/glitch_assumption_toggle/glitch.manifest.json new file mode 100644 index 0000000..15df320 --- /dev/null +++ b/public/glitch/glitch_assumption_toggle/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "assumption-toggle", + "displayName": "Assumption Toggle", + "version": "1.0.0", + "folderName": "glitch_assumption_toggle", + "packageName": "@nommo/assumption-toggle", + "entry": "dist/assumption-toggle.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "crt", + "logic" + ] +} diff --git a/public/glitch/glitch_assumption_toggle/hostBridge.d.ts b/public/glitch/glitch_assumption_toggle/hostBridge.d.ts new file mode 100644 index 0000000..fa85f46 --- /dev/null +++ b/public/glitch/glitch_assumption_toggle/hostBridge.d.ts @@ -0,0 +1,17 @@ +import type { GlitchHostBridge } from './types'; +export declare const HOST_SOUND_EVENT = "glitch:play-sound"; +export declare const HOST_STOP_SOUND_EVENT = "glitch:stop-sound"; +export declare const HOST_EMIT_PREFIX = "glitch:host:"; +export declare const SOUND_IDS: { + readonly click: "ui.button_click"; + readonly hover: "ui.button_hover"; + readonly computeStart: "machine.compute_start"; + readonly computeStep: "machine.compute_step"; + readonly computeDone: "machine.compute_done"; + readonly verdictStable: "machine.verdict_stable"; + readonly verdictAlert: "machine.verdict_alert"; +}; +export type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS]; +export declare function safePlaySound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeStopSound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown): void; diff --git a/public/glitch/glitch_assumption_toggle/index.d.ts b/public/glitch/glitch_assumption_toggle/index.d.ts new file mode 100644 index 0000000..40a25ac --- /dev/null +++ b/public/glitch/glitch_assumption_toggle/index.d.ts @@ -0,0 +1,6 @@ +import './styles.css'; +import Component from './Component'; +import type { GlitchComponentMetadata } from './types'; +export default Component; +export declare const metadata: GlitchComponentMetadata; +export type { GlitchComponentProps, GlitchComponentConfig, GlitchComponentResult } from './types'; diff --git a/public/glitch/glitch_assumption_toggle/sounds/.DS_Store b/public/glitch/glitch_assumption_toggle/sounds/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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πA 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
    vP_xtjRC)WswnK?KpNVbL2B3LYa;e*g4 z1iisx0)Z_+A_u9R;E^26sHr^!-$<1#4c|{J&+j25vfMjxIo)^^5@QeGEg@Nq`elv+ zM371A%J8rlcB!%K8s(VvQt0)@uBjDRhqC{PES!vU2OtcH0S~havZg8V6~KDFf`7zRC!tVk3wY~$d{?Fm^@vog8m@M4&Zq*72`NG1I~ zy3o`3tzi%|T)&e0`4K?0;eN)Y`?ZI6ilZL<`<}$lc|01PdFjsL*q@0aMA0MKbKW0W zg99WmfJNgMoRG{N#Ar40NN z5PAxK3X@Vv-JDdo-aD{yVqRQr8)=~Qh`@P!0i%Pqawrq z`b2KnmSO8BMQBiZ?sXv(Hcd4r!zt$z7LV8@UMF-JsaF4&a1q$hsK!r+o9@vMoMO@T z#O!agl3Jjgjp_5Sd;foNc@qGe8MM0#=@kGi_%}c!xmcvr0^d0%w(33z>Gbui3WXBr zCs6A;_EtAO*x{BBS%Wf4?);5%A|rxGhnWG$@_=rT;6b+lOe5(EfOl|y%1Le_kapi= zWM1L7K}4sQXz!B!-a&6Qf0lqZju3dTAlks}?#7telL@LQ7rqm(P>TMq#>O9}nzih<#)2y!)x|R`gMRW8^ zHcdI|*|;H2ys=k%YFvqzahP7E&;O%T(z|uXg~9g+L3GpZ!r=Pym>*DyWxA@`Ycp@} z!_BbGS7q`IWzso{meiVOQ{uRLoBW+W8b;SGB666R_ln*sdUD8OO?svqEy1273l+cL zZdMzgN+vUOt@7Tr3mFfBmK=70q3NdKOmWj1(#*Wit!W%JP z+rB?i+xP}%U-2Am8@nRcZL*HH;&WZafB*mh05|~=RLfVlsc_jsq8Og|xP|7CwBoy)^eY~IHQaJWy)Y(9U zl0M+a!JV7p@`x*`e@)ikK_GYGGy~CzKnV~QfFB}Y;N;>aE)Ymii4c{u?X@6D!KB#muKY$j=S z_dzy!sl@AyEl_Hh!k+5yL(LSt0|pkwxGwN+P95Hv1vUhCE(0k2ajuo`WK(vcji!-R zS?gUm`rG1k$J@T!hI;oa*%q03gRoG`gwdanEf*Dl&KgBa=8^oF472SrwN^^zFed%bDl}g8N4gbX&rjUZq8|AX_`|g zDuMGD?pWX;Tt$@t>QcHbDx#%NR{SKMWnYCwWoCtODM1bvL{#EQsbcjy%B@z8jGilH zS|c87LA4xeNFvni*(FqD+Fuad0%E^stE?+Zq?25P0Um1*4Ush`rJjY3?IgOCV3^xy zKh448VL$)?000Ak0T!M9{DOo__4e~zQu4E&&^opMfP@*4C6{eMpSKl3K&dd~;_S%V z9RI<|wB%u5qVi-SXGvpGJ8-gC&=9Pz;aQ`)g+i`bK_ifgOIShjauZqF#54>bMiAtZ ziADs=7p}PJtE2tS?lC7Eh?PD+uBDY=V|fRrLFKw%_z-Q2 zdn8L8s3j^v3^or2UP2YmXBTpi5;)e9BsF&@yy_dYpZENG6f_fT(o+%X6cC63ScWno zf-ZJ7h*|Iic>WBHvQ`fw5bL{CJ)`wWveyjPvON!C{;A!{{I}ZJtBO0w`Maqvjdu9< z3|pHZJHn?9LV=Jf;DDGc!+X}}iDas;WaiDA?itG^W!Z)!mpv+()YmT?c#mUzSDa`R zstIs9>*_y%syN%Qe*)aQ31TAv5hrHJ8j&fq?xN4ZnB9E6oFHv86!l&x!kn*BmThB2 ze_M`WbDCNJvd5jl06%KX$*BzAJDsk?JrRIV}a#WiDhYYgreqC zM99PI+-Q#|tsO*k9@7-WQE#+wM^i~RlEV{{8EFf{zxFeuzf6+E7-0}jvzf;c)*~Hg z1m`$TXVx>hY6;$1XA&w&Uxe_%CaO@sjM>njRBGJsP*AH;9b4y;;fFepM&%Xai^l-m zz_+i!#3TR!ARs&gfB_iTujQfGU^FWf3c}%6f7f3fe;$3Wjc1=fZaz2V%Rb+)obAuv zuMw<>q=Uw*gOY;6MoA!?l9`Lvi6rxV_>>e-O3=iH$gwm70cRGGK{Z3fSLjGEb1V+g zka?EH9hzDoGV3o0D@-2s-d;du;$-(qDd};O>}&;EuEFl zOpnXn8=@-P4;=~5t*CApj`KekR*31`894=(aQ_q7{}cUwtkN|gWYf>Kk7|syt;R? z-pv(6zxlMYtnjTEC3TDkN2ASPJEZ-a?<$o5_}x)@qi>k1;?zKvX#;63iB`;iF)(Gg z+4~H`vu3}8ux!2YO33oq;aQNzunZ(DAqWLxoRv}Q>>R-%krk@0xHf!42G>{1q?j4V zX)v@)VrJp941b^A-3xDOF3oY5YP|j2kJ+j1ChX=6_l38s>PJj&J~ykR2s_td%mZ;u zvRMNq)a_H6W;!)wj(q)vUVUIK*rB1@Iu8YL!BFy@>0h?vcUeo+zJ`}+qrNNv00001 zzyTB(ui>FssE|7p3WA|;pXv4S->)<4R=ekqt@O+B@5kN07sRz%WK1sxShE4s-tXWT zJRD4ugK4XpNgXu&QQL2jj395=;ayW3j=1A4l+>ZpJ!7hT*YR~U5C3`Rs~rriaCtRC zi5BL{Rt>+5REUOlr-fJBJgKE#Pnig4t6B2 zTc8sAy>iW7(#p^+@sTlXQ0*^t`*{))rU?+hpu_ka1U|)eCb4vyaxeuyfQnBtCslFf zzB&N}f^W4>;OdGLlRC&P#FGZ66YDK^2YKaS5i{kH<{_72_s6RAr}nfL8*<5`Yz*Ck z!ux*aXxeokm*64Jpv)13WZjelf|Q93)|@CvfLb@*|5QbVmqtYntx3dvALXo3catsU zqrV<7t;O7glAUBoV$Q}SvDxSALT4csLbFG&Zjofs?hbG7LPQ5^N8HO;j=Kfe@=Qk0 zA^_wNb4M#+!Q+0dR}e2W`>>1lBL z1x1+CZxBJ8w>U*2%U7oGcAFAxGbb}Q7HFyRGzo0~B&#qH-_cg&w2ej?tFx@(kVxw< zrGaE!`33urlKwK}jZtiM9q3nOH@Y{9=_@6o6>FS~H6@7{?oAL$s77E}1PsW&h1BgU zk#JQI@tX90D`wdK#Uu`{43bBA^!hqtKmY&$01g2V7_Z@=*yxNH9R>y=PJj6ReBX|q z(^EKCwso4D_xQ6VYEW+GUhZP$XF&WC04jlm7)ubOj|+|D=4eU`q^5#S2jB8u&L=Wi zFu=*rAVp`s#F$CPmQET79b|}mxlzyM?BL1-&Vl^T`5g3`Dh-@ZiOS)t{J*KXXY_3p zNrL)eC_~DwqQP{oUKMD`rzg*%yz%=jHWQ!figFQ`-grF12|+Z)$FQ!E;8Dp9^Z?1KB$*!o z26j;g8g-8*GKGRpYA*3sX#dA4U;rg3q(X}{KJ8nU>kf8N5GU^Z{R6L_@7N)KEGwONzTt@6-m{E0F&oG|7496sgt`8YCQNR&44{(6c}n_yzlmQbGE#fWan<1W^{6&5}(_luJSbuXq2Nej>p6gVH8t^fq{SIqag@Rm8aGdwO1t zYMr|KhRC_HT(Ay+@m{0Z{k!pw$2NpeI~eJQHm&LZTaj;1)_1mH?4RECA5IbhJ%1_N zRKvf}O2L8SJsBBu61OGB5zDM;zP84@S=lU-5)wKEw*8&ApN);HWAlo<5bB%Uo!sWP zCq=+($)K*xWo@3T$mqYIQ~SFjLk^NC-ee zlv;xM#9S@YMZ0xH!+KzACQu=^@M!C&{l2}vj_%)AHtrc6HUIztzyS;xujZk#C@?h& z`Tx_;>(}-ASJt(YTh2cm>mA>dmZL7|kylj$qIL-4FhepECc6ZermIB~L3Z@4cXn1G z7R>Pia*aUC*scY?P})S^440{0FSxCKL@KUFpEmuGkW@xmNRb32g0T{|)%x#Xy-kE- zh>WQADHt-(D3HMPmKs zVGjV6>lK0QaLn-~L&<|ACrgmC6wGo=mHPK~yq1BTPiUBnB;6~t7b(Q83`u5}q5bEaDU=NsFu9GSTmCmH62&6VByKs=hS0$a0NW&r$5;*O^&_tC1K@)?LK(5Js z7eorgg<=;-_VE;pz-%g*WQYj@-C+_F9z?Mkvy`*3^06a{SRDo0-j|Oo5VsX?Xx^>R2 z!9}SjQ2SrQWaM~sd700BvP}jPs&UtKWFULqF1)!~{o<%T zt2)=<7TNyZ@@4tqw(VNkA(I=PV(C;(AEoWq;+wJ2a5kPhVW=#B<<52RGC%_mrg;~4 z|I@4Av%;Ng?)c64^m#D+eg7VZyHB z+SX(=z8j|;sMN6(8_<+^i3tfwu{D=~0kr&Pqj06w2zgTCGF1v@p>_A~m;e9(001}v z3K*~EfiR$UDiDQz|Htc|-^aF|b*$GviSzo=bt<(=(wNJIvQW6UE2!ZHM%08sS*EAd!YAxqhde!A4pIz#k#l zFUg8|%;e1%P27Z*8DMoY_=Y98$gq<*ZFodsI(Cjl=AC9#CNZk->1{0SBy0 z$@_IJM{|07Hq9T!c)tR$X;ldy6`4Uw!oBuuBn1+Z>X4NvXYg}onaYZlODB@2m(|si z_&oT$4b>3|!G#B&Z4*!+A|a6gNR}Zt6Pq-5*|^F^fs+8w_wTAxcp<*!XoosW(O1Y(r(al$?CV8WS4Gyh0fx0Tv;Kh9eo>jUf0&@$6)81W3vtVjo}bS zHxGUjLJOa*=<9VU4Od&>a``@p> z6?W^I>)RD%sS_@+%~XuA!D$eMfg?icFgl}%NY_1b)SymVyGtvoxFHb3CZgc==mC*9 zdkfp3_DwM;OtYhLybAWiKO^=+I2Cfw!@6fvA|?Ri=$H&AMlaCB20VZ{PH6>1C4w&- zU_hb8Z`UUx*#cVQ&Pl0(J0tfNA|%=531)(kk-q)WAD*#DNNFWZdwy6ukV=HRC_ z8c5%Ulm~>PoSKT1O>3C9Im;*2#>%0zt`ymZ?SxevonUW@m|t2}sRf+Y%>GnN^cjwF_)y5vdPl~4C!~2MX~S;^1QwrsqgQ%&z`g4bQbMLJ z`-LWP|BnB2RV>CD%L!S$e~sbHS2R_nL8YU!@A*Ig00000Z~+b&ui>Jw%rJEeU#GwN zak|!*HumFvUyd%2h{}~Jm8^&do{^t-9z@72 znJ^@aYSSILK#U>yuK*(&ff}_)wuZ$dbla}LDoOFk9oi(5DiDA&R;l1)AsT@Q?fB_J z5i0}W1j3%>nT0O8>s~^aEvN7`6e-a72rV*6_i!bA_74I~DKm_k!I!9*BK3wrWMSRZ zKsIM#eVR48h1e8tJJTM!|579!&_Yt1Yp%5$u!{*<2lKuU&>szQckTo$xbv{;+7y%V zt=4nBIojSEokPc-wts@qz?D&bHqZc%3Mp%4A9*eGWjD4p)AQMv@F6%Yu=oJv}I+>p^`AdW^IsC~aj<;{jh<|@RW zE#q(u4685wWMZg;BoWDFNYybs)-Z`4PcRyn0z#f-mIFChSpR_{oQ@IIrSfiG1rUZ} zF*`8`3RyW7Wo4Zt2H9k^H;Grr5)HdGJ)e-1E3lI>#O_lgVu=(7ZxV+fg7Cz#QVBW% z9EAchE|J4bCkP}X&?hRfIEAc~Ni?k#5Miz9L`GVKeIckY5Nde79ePj+B(c<_$Va+I zkVVlnQ2>b`OwuqB;K#^L=^1Dl*rbCB-xf~=iwEnZ03t{{zK+cxGZH*MTAwJ;P>8r> z5`N_UK@vr?SV2P6I{&=oBoZMA3Jn&@7_`f-uX1L z>TnU-@2OqSTHETM9nI@Keq!C3YpV9nN$j6e;>z)r*YOKNetsROk>X5 z)eE&&0n@#aPDCzBN_pF~eLuOf-&{zY|GghvJ1_ooFl?LA-G*;{&9D3}+OE>uYlz4) zJc!X6z#9ZhC-yVs<>_)wm_Hg) zyv7z12E9K9OXR^=5*k$Wux6`ojO;?LDfRg@6U8j33cGqX)$+Pq43t3YL~G!+%|n#E z+-{iu|68N*#{Sz;$JQ$+U=la!qyjSGJmDT-8W~klOHY`nX+)bMA#7veCv!S=7ovuC zNJLaIRLcxlep$HqkDGqgP!J@gh=>%uFtV(xu28uK938M0000002~1X7_Zbj z4H*K*aI4?@|Lv~6XZmlg*0Wbx4Q13!sTnBVs1`6o6Tei2Ys4Fj{~Ya%B!JR0yfQ;Y zL`=0&OC?2l-X+;TxO4F+7s%n{5}jP0QT2qv5kN#v!AW%xnqv|*LO?knx?9AMG(vTu z`(Zg^CzB-;dd&t5y=#+&D8eIJX&Dvpd!%B>nc{ruDVVZ%55Qk;y{ zSgN9-5TKG0k>x#Ek0BCaJLr=YpR%H=C(4SgU(2`%XoK*9$RnUj4%VN5lImmTSEz<5 z{eSvO%k@hc9P5+BK`WvIiqg|wIvh`HY;Kdwjttj92m0O}^ZwHo$VmGRPgAykArOPJ zII51+KC{p=4&&}u{mjFdd#izXj&X;7XY7x!p5^UD@4QnWMSaaC8OZ$`ppF&GF_r(7C_dFQ-4v z!&ou@KG2E_?py43KamB>%rt7OPpEY4DE&!ciYtXI^=8P}MwTMlAW z*^cDqrfy+WJ192qYE!<}?50$$B-_~q&XBn{W2#yk%!o^p0FyyyxgmU9GODcb`T18o>Wq0GW)aY z!G|q^eJ1u-BSVWzaz9_1S)|uonr43nC;$Ke000~S{1~s~qQV>}k6*o&`0v{{ttwMl zGU`eRTe_HviDK%^k-{*BrDX0bgk+Hh;EqQ{Vq-~ZZV`J)LB2>tCn^CZ5R7{lW&5b) z1fqEs5)Hx187PkCOaqE7>;Cxu=C1eO;@OIlJoG?934B9Xs5m1%_J z)|Lc7=_iS>PKn7@$dZYGC6mUG#NY@=!Q=_Henga)OxQATRpIri^P>os0V05dMKeGr z9=RM{GHMYhab;Q999yJB#_WXr2n5~^?-;D?__MDvHewOh5AMWB8_w*0G&X6lBg-eC zf<*(Re|wi>55a0~h1EQ(&58~E8yRG`*F82T;5PO;N^Z>6L9{I^KlZ zHa%>7hP<&VNeRe&R17aCqS))RBOWTmqtYw+ogLUzSDd>L(*02lDN1)eK()OPwY45I zdAK~3jK$FPWdP;qQzXce`<$SxOtEQEmf`4}JDXX-Mz9%La%Cjdq1*egdVrcrR@y?5s|5+0N}|`IjI1%^5n5=FEYd4=Gi6=X$H*-kqUTi= zw2X_Gy*^J`>yH<*t?ss8jr{z!KmY&$00V#l3|Ox;OEndPL4!D7U4Gwr-RItMDk|!l z%1Ve*D5|vt7%&NAfvBgvxuWWPgN|GqmsLUAuo7NK6k`>THHXB4;{7Q`yQdjmeYOjz~ zLK8>~QsO9t%kt$k)-k40&(JDz5ENd;Ckh0wgrMONMe;3!x`@SJ+^kS!Bv(*vbmVMw z@o{}|$)mGn1Pa_&51ntlU){PZ50SaV_x!0@dTQRg;L@1*m}d9G|PK;iCt9|`WT++O1Uxke@Ws$XF3Um*$5eLqY=+_m<4))8p~ zJpbF#cLiTpqQ`d*hw_I@$28=we(A0%p+2F%%GecyWFasPF~BW}{fGgGG7 z=Go!-J#tPRoMd|=4%IE!CfLol2zNwt2O6y_Y z^7L}ce=tC*&^LN1S2__YYZ<+iHmLJz*BbC)MxU^vHDYAraxlC8d%_Rk|b9 zGC1=hM?=Pl@m(Q59dUviC^g+;dhB^TH7h)Xw(yBkF)A3ca;Fi<#33emJp95}ump`q z_Gl`(*10iah)3|9u7buq91m|=9_evm5d^8C&c~+%r(+V zl$K;mbVOsIkkfZT_j<~dppG<((smtG?(ZJ5tc7gH+BU)DMyVrJ;+ZFnw*4_6YmW5g z8!O>x6MAkwMT`@!1yv>P+CA>sbF80p#Z}mwkbCY0VLq+CxZD~O&N||L2gS_i=J?6V z;+vq%mXz8jnE`DrKanZF(4(MRIZsKsZHa{wvlP*nv!CkDr;QOjc%0HmXzSFXtRF8N zk)|gO!fi&dw*e>Kt^^~RPAoD6X{`d`ZZpR4C`T>y^pPC;|E zmy1%8O&E4Fzw#U{t(=Xlb>wph*bw<9nYPwsC5Y3K>A4b?;*U%7D8G}_v7KO_tJ}b$ z2Xuo-Hc-8YQTL?<7|DS%;kwv)n!*zxd2N)~b;Dn`^9_&l<@sh0jFR%3+mkqPrg7mLP0ps(mm3aVCT|80%tje5}xOLIAwH*m#WTTu5jM zDE9g=1&sc}X+&{6BfN@);hp1*hZw_hlrhOI(g0*0l*zz?M>5P{JQAM;K_!+%-Ttr3 zbIIDu?8dxKz9yLKg~q`Dnt{Lp1fBl;qXkQjBTCYsNfwX2!A)2Mis@t+1jKwCgkr)Y0!b7^ClLhhGVYNtE?OOmvSA$-2h|rBCj^|6 zP+}umHM2}7#hVRc$l4`9d=lx6RWXc*H81$rC z8U&vM)l$fvB*ZCbR6sY4m)aW^`lowpHk#|KvaIOO96}X}a{dvTJA$NSJ;CTSAt6%uv}Ft)b^Onc=j_`Bwm6sIE>G#$4(HRHiQy0` zZ1-`~_7r#Gxb8l;3D|PDXV%o}v<+6}P{Fo7LpMHo=5OWcOdm}BYzss4&9^F*_018R zo98`|XOSCmK%Sz!EE~R1yIRh&|!BH788_x7Xj21g;6W^`H3V`j9UAhLh&vnk>M6`GA*TCXP#sNzzX3A`kV4M9xXPHXGq^ruR3 zRqcAmk?nRrijsYTS_fasdGwQ2C>#6#ll|ozG`$0RX5G@Zn{;e;?2c{QPRDlc*tTuk z>Daby+qUhUXT9J459d*H%&H4X8UB!Qi!Ob{LtRY0%pgs~w+a4Tx|L$T$4Yy^OuE11 zGn)(uZIX;07KD>09T8)Hzp;`(>gavnE6oz-A}NAhj-pv9fe;M83tO(KSM*5u=iu?r zkQzAQR$QlE_d&t=`J$9U0=dB^dvuO9Q?S*Sl%=r#&7J-%r^D>}cPq^M>KI%P zvBG1RS@OsJA|jf_ChSBP>46MnuraMJMMxd5bNi*6WQb?8jlJxIX19ZLn9JXUW{VE{ z>K8ynSRK6CSN5k}HhyKJD_B6f0xIN-SJP(&XSknEox1+RMje8yA`@lG|8DC09S5@{Sgy}rZy;OguwUm$y}LHfy)?qT5o8{;)#HLE^D_^N*Biy zWKOJpktKT<+ZiRD`H;hXf0sTfSF+xKvmPzk;E=UlHNq9nE_LLvF%)xjBFSz>&orl~ zC3m?&fxp*K7Y*uXiZ6B+gPsVbFvAj6;UF zN(-Q7A8`VQ%(oo%6j71_T-eowPg0PM{W zkg^-kgSVNxx+psM7Po1Ts$A58=yslu+Lu4o(@BtKVBeZ`4@4oWQ6VA5Y#kIM+pTTqVwo6j!QbS?~j)& z4+qxoC*M;Q&o-H<97-D=UZ!E<4?^(D){Ck*CcH7RSl8iYjpPeOrSnSm=ydc#q#eh( zyogv{)F{dZTld6(5~bZqlH4JRRd$nsO^|Q7es7^W^?q2790Yy{60V5I@|XPw^VNz7 zm`syy=}&Ll3)qd*k8SdM8?(Jq7(41A=v8!mK*sX2VUQaL!{PMdoX_8w#-*e#Tq@aQ z;wj>R=tid^mJZh5BqwMN%K}u;3XZi=J#`pOO3gnKTHH15fYDnGRCxQn;K>ZD0iz1# zG>jYiGI7xTOzmzNPx6r`21$@CQgd>*y@5Ffu{0n{G_~3*Hu|H{2=2%?uRlG-FF)c{r zougbl=|LDyX(Q@`(FdW?1kUUx!9aB&6Z#0YiaWRh691F{XqykrfL7C+9~db%W8|k4 z)~_U4GO|0bfq;`-!}h>UNMdw+$B;Cmu9RTjGD_u16!ErlN13zGITwI(Msfr{b22nLCl_pstP>+8DX_<*;%r0wmF`CBE##x?#Zs9or=d z+wo!6=Xi5y9IGj=_N&8I@}gpF?#BXA$9ht(M?wcJ?C2<7uK`qf@`bGfx{zmdu>OzS z13Awa4%`KzTyD5`{1h*Z5w8}Z%`U;_zB|0CH@PHmQ=oR|Fa5j3x+yJ;tX|$~%w@lw z9>LR=#E`f>6d9X$JTtP43$(1&RMgmBih9S#@se>gncJwE2|uj&7V&@-Y%j7>SlLUm zgViD%TGUA6if3Qy37)jPHD#ecb4DG6aFgSw_?!elVZSRCk%hoh1Yk7 z8Qv_$z0}*69=vLUnX`v^-1*H#MNts5}p_1TAW6(mB<+;|G_Ea4i`@G=&ez6N% zbsOa~*QhhJH&l)kwE&~ZQ86q#NTD<@()CWF6Z4$~V}ps|9*)sM%~zAjoqPpVYH;=m z#ZlRH7P<%v#JA^)oN% zfAR8Rr)0bSscJn_y5%?z-Y}#+V>3t)a{GHnYC9G=LPFYFXEYt$i(h8Bfa0F5okS5P z6%v#4z@1{_KY?Dl(wk8D*ZL!5da2;$on6so+SBNZx;SQ%F8l-&sQeecxFL_#a18K! zI5=Fif^C#K2&oVuxH=?x+kS$hzim?1XaX$%;Mp(xbQw@m66C=2S!Y9Ag@=tRf5x$m zJd}5P0D7}_>4?GSk9h4ZRXu$7l#|>D2GLjBnK$XhJ9Q5E1d>tPnyz(7V;t|77DB=W zoLeli0Nm3reK+PP4#9DRq?{SU3&Q5|F(-3RrTWdBf+KvA{V@*IiSNA?yn zW^d}uKMC~Bz~Ho@=r#v8dd5lPz7X_|pbauUo4Rg+oL_h*s4oy!T{h<^77a34zb@FO z|L(<;+R6iej3^z~@g9=GUxwVeM+e9$A_AFFUsZTfr!Cq*JSU0J*hHImvD z{o5I;Kon(%6!W7kDsZf_Xvk#T;5{AQCq)#v>^1CD=VP0EtsdevWFENgyndBCV}5?6 zhY&g}Ij6tsVw>REm2?|k_&#o4DxGd}u)4$sctyA91(yOt|q4#vSPShR?Ogct3UD+P92Tq5(W#CHW|2h6)SjAK>au zc2T@BWz;K;nb*UZYHWQ$H<(! zKG3+tCy->DqBY&jJQ{LEpkhxQQBfKSL6*hAYboWWovk+hRhk>CQ%1=}t8fj%B4IF? zAlA@>&vzApu2aWmOebNO5{Y=egs}kd2yf#fLWo?JUfb*ce}M$Se~kWwMXJJ-eGgw( z@o~FlsdIhVx3pcoUq7}L))AdDQmRpblgMfUeKVK?`zBix06$ty_Nlt$*4s!eN?nMHn;2Yn&=%ng} z0TA6AMKz37@c#6((x6e_j(mshQ%K{t_e7mE0+Z~BxQnT%1ttmz{MxU%rCn+OaYkV- zFpo*}u=R`T!M{-D=XB}}Q}S>23tPm-N-AV_Rva=0F)W|*foo2@HXb@T^r?DAFtViW zn`0Uxi5ka9LxhN6a$a5EHf)!xsO7T7~j19J)j0VQ2+m5IIq|ji48K%F^w!zwM*5*CG4o zVZ+2=_q~dXt>tFI((m=!-fhKQwfVA6i9H&_!#JgHIpa=A&C4b4*UhK?h|a>awF_)} z%~kAk=xH^3g>+!Hx(aS0%p%x+>kyYKh>V8xvX~-(!W{g@YfA)JNwnNECy0sRsL3v* zbYaGug*VCrq%QI|aRJO(dv#N{>i1)Ly?z0_bD54>;fwZLfA}#n!KjEc^_dgJZv@XR z*3;$K3*(%_QiO8F;UM4tM&M7P-p~8a|F51S8_f7O*30?Zr)ta-+w%JL$9-A(YnP9c zadSmvdwCg&fT;E!0eQ}=ydViiR6Ida<(gaP?b8(H_1KV6$)**-5ILb6yohYP5FhvM zNG8iFlr#*EOv}24O3tc4kYGu`T%%!XILq3klLrKL*3_aY z%tDU6@k=>p#XflR#5}uX!sxhe6y)kweUg{?Bvd^_B(Cu^iAc5UI_4&Fmba=gy{Z)hO0D zAb5}o=lF{p_Q3~uSUy?HKl&o`4PO>E*h<|*Oe~I49Iy3&>-6uqjqw@=ZPA z)sHh~+TeeGR)b-_%Jj!M^4|)@pFcdO!BC5iu4+{Z7CJz5CtUUY?#`u9rG|LO8?2g(;6@LbWDhwvXL( zP3i@z>Kd$#(n~q*kCbup;2XgQg1Qkh&58P?XZZx0UhE30`sII>2!OD=Wxhpd71g$8 zAuVUbG8Z-$ig|q55$8|xz3AocwT0dTlT4-&I$|Hb7BYRj0!2c)r4KU03&a@1NT}*# zBb-LucWhjd5D7I4eW~B53P{XZFkMxoLZ{NW7V%ObN^M2P=G!uEqDscHC}VHIkcCEu zbq9=R+tp;~IP7si$|m0TMumFICZ%sqYRP657p>7!m%>P#i#;U|QVGr=HXDT>&T@2Z z;u>%wqi-_vtyw94<(HjsFeXZP#I3p_UMe{ zu42KYQX<_-mk^QhG&*CX{wk1%43%i{5SsE>hnn3CT8qn0ig96M=6hMMOskwgMdUL- zHk+E zziTXx9B~mo&psuCL_gQzdd_gZnC9?>4U|mbqA4tj0kY3sP6+RfhsgKE`)wjY z%y%f7vdw}5=M#*ZX(*X@5RHsouXW9YE7BrWg^7-p*}tXBOWI7nc>qt1_NO*tM{T~< z?qbuRxJl=J{OW}j%1W35t{bIo^}0J=iS*y`MuO*b(3(~w_K0Y!X0u4Qq)#nyTWY_G zu1*%};u2>E_Fv1=v8wVpR}Xl86|rHXQNh0~!qQ@cTsmS!?Z}nHWvge>R zI}9jBbfH~KCSZ)2Tor*7 zz^qW@YMaHxKsq$>s=K7gO;f_HH1mxh*%UgDlGg%JbDH$&3pb)cWT~=z&5F8~ANMY3TE8++~=#*M9$-&XGejZS8$#NRmm9qj}$ z=ZK>M-8hEDRQQrNEO#R)B~L(}CMgT_hW}}&9V?0H^{#yQo%8Fu15eo+PH}$a0iU|C z))q+;Ft%G8@Xr&A%psP(h+pQVFRp0>MlX=iU#6w__ z{i~z^Yr=21DJ@wu%xgGU>Cp@jZ zuQn>QWIICC0L&i`>f8ozNz3_4Ti8YUUN|U?hpJ}6(RrIqi}ot}t-93}J^}H+p$Odb zzb|#bO74GCG3VXW)8^?V2iMyC{r>rQ>hXHJ(L)llqJ1R3%+k!}!xqv-fYQWub3hQs zCfs{EpcHA#2>eu7iMg67^^eo@=8A#BzqrHo2^2l1dbCG`yX?pb|!i89)Ju{B&i(_6 zhfoI^N$?lYuLph~BXCEjh$F_AzwaJj+07YWb@^8c?~VJog^&4wuJ`D@vx9o*Hkj2P z+xOPzc}Sx&<&oCWN0JG3yz8{>ZM{djC<7=gfgc zIFN0Z@$-Jg4Pm<2YGLi^wd|9}^sZZSYNirVY0cKN!W{k40QW?A;vEwPnX|TfdKW!W z*z9gx)_Ltk&1Mq|Kk>YWpYvwtCn15{(5(+GK|3+JT_FxYF)*AzoV*ON;cFc&AKts6 zW!^AnU#5#gmVC|vg`0lwY&FP;jyQ5mFu=I5L=XGhix&Eu9a+(+^?v-~c1TlzXctp= z-b}tBFKyuqGX)zSWFa-qje0`1fKjof@3zOG4H5R*m(J9fK9*Hkm`U&t1q-$P;ksyv z7m-o;$bLC_d|rm&E`G{|Eq6}m}4D37msIXn~Djk9~7h z2$T9AtG=>C3uiu29CeV`QQoVB55vdxV2?@dj; z5FCGJ$#%a36f1Z)Ctl?ha=p0J9#T+7C<&onH_*tdVqa{6K2QIEh6}}vt!KMij4wJW zn?j%@==a_t%*O&VwVxBk(LbV^C5g+J<-!@JoUzC#L!L!`X5VK`&nnDxplzVvt(q^ol5d$_{_ggcSu|DuvYFfXP6#X8jp*KIOwG03cRik9UtU(`Nx!6q>j`Oz`IXtD4k|7jYwj&HD=dSy$`PJwXZ zOfjvz=cWS|s&S(san|2@aYy?fi8#O*Km8y7R;1}-@E<;%s$bsry}hfCcR!|c!n>!} zqgfuAx+&BttAk)yeB<=Q>7RUSr~M;EdOp8wSu2Xm0biD59wf^o?PMf~{^jf=lBlCi zGnhzO^)P;dHMJf@;UED2#HiazYflfDltfbl6(RzV4Cj>K*+0$FF{FHW=t!iCQV@=c z)>i^8M!Qls-m8*bOQ`z+Fuo^ z>wz7GsQW<>dn1XOWOf_ojYmqpqClpxyjYlYV@848{%~ib%t#?*y~MkVh%_-Z+spiA ze~&5f*3SXKF zd?|3rgRf~bU;ESvXLMO^5Rpe%94auOCrJ_lx}BplVfi>WWnSS2J+-KE`w!epBDAC(ZYLHcU1cKQ=D1_S3Q%CWN`C-xN*O9i81A z^|MFZuLDkB8O5CIO)be_;O#Wo*e#5eOlnlLG`hE(3M&mkk#q*b7Pd?qnKN!x<6}#3h zA}j2dYH$58Z>!I+KKQvS6c(0shyv1dB8vK|63$)aKwNh&8)cZm2aa&YvyJYkO^qq^ zb_WdOly+^XN!eq}nv+b`NRl1WNB0I>)#;~d+$2_3`Ro>U-Hek#SCSgEi5|fdD$CD4 z=RZ*XbbtKsDQP+*0;BwW`Nd23=4p`=CBt&@ciz#=l3_H^IKe&C887jGwe$ID3 z@cmS_Vb6F4U8BW0)H;-}jA(hUOqLQotuA=3ApPl^*@N!Ey4j1OPYWi&?=CwhDS*z2 z761dn0;?E#I|ZLv@iil>M$y{?J_Av_DuvBL z?eCa6s7Q!PTFB7R#_I3NDmf>u@nG%G3~@ZK$8WgJoZoNmpqda|Ab<}9wU=cImuvse z2wYoTfv@Mh^}NDSAT-<3Ys7oGpQ`o0-(vFDZX11wN0-W0C$dl?jZ_;jrBO_-1X20?zRpqb^Jtpa~S63CcWE0X^=J}0CvTm_%p zQwpB{S#$m|;8_fkYaiF46(hG4hTDNJ>rq?x9n=p5Jnq5H02+!hdB*4*H4e%pA8z<< z{?tcp^o|PS+0Hre3}FogsSZ?-VRz{#NP%RX%6+9T4P?2F|4}&1Qv(Hxo);nSQwnfw zhN+|7VIUIl-h@+yL3&JDi)3Gz;wTfhsYV~#h`A;ID_#}7a5dyYyH$<9CqjTXWwMiD zaK856s+J;E&SiGUOyJN)DH&;O=qy$A1P3EtgN_R>f0$N7FB1ydURkV`tg@fM@Iyui zN7*$J1bygld!@Yh;Lg{hhufXkx`z-~*xMZQE{_+RA`7zsdrc}IkVFPZmin=d_Tppe zPil~XTWX>BKQUb#hIAlRF_Ud;35Rkbh1}q|)GzLn8DbqH=_DK2p3T#G@}?P&+&%mK zw_EW!P-~eMtKRI_rz>oir>7C^`mK8mYnwr?8*R&Saftz_sIR**#EzD&)qfb{-S%{0CO*-Jvm)wVd`XwrLO8S!jMMT^!91YeIiH)hpnU-#{)q{T>BSo-qNZl~prq zkB%9aRSm6|{|Eu`utnOU(DtUV#|YZ!NRZGaa<^*=scNTz znm5>k##(@lZErMgwUr z@#BhUO1LbV@&A4!{S?QL!OH=YiNuC+S_>qUmf7_ZFy1_ZrP4X&frx1n9JHDyyGgXE zBju>Qi{@U$o4OdIxPB9cdvHT7CbBdEeF8E*_KVl+!g%c?{-88&@&OyB`C#zcflBebK0M%2M=Q9nMmqawG=PyDqP zM4rq)n?a?x!f|>2rQk0uNes4nJXTgJF~cnIX}H!dmVR8Fwu%{zP8wXOGkLr1cO;ck z%wWu>Z7K@UxcLkBx%4!p|^= zplN9d(LkYpdJMrJpTA0~(k`x2<0H1nJmA+)l6vd%td-ebZHXlqtGUa?Wi+b+eqGFD zB=FoSoWw+zcTgd*+Mij+1k(MQl^_)d)xy-_o{+OT$&nx>ywh<;fb{4{Zu#(yJJ5#f zou&a1+AKf)P0hw}Krjyc;!X3I`T0nB!cxN7Dl6ze{P!FSD&8u>^;A4acR&9HBcq`@ z<4>HP`H%1ZdPy1vs`#m7IJEuVcw~F{I=T*|&xL(O0Ja4`PF5$Ic;pCBDkDzQ60BB6 zZ9{p`au{k0z0s24BH;mTGHvJrMbmZPV-fyfOCLqPzUEsdA$$MEIkt)#Y2;GThS#w& zHr6mW6-_|(2%{>M5Juh1_Jl*q9kX6#6&Kp$0w0q}vn+fDw<(wI``;w}xm5q>wE9{9 z*kiDO^~HR6dh%7{nk;MF_CI%PyFWd5$K({5U=|6FE0+}o1&hboPs)%%KoRjrN|eE& z;A(2UG}c$UV3Hr`yH4L6sEx9_I7(}Gvv>cxl z4lN9r{{9_1vj6b91keNHwWx&{CUhUlBcZNSh)lBkl2DR{Tm0tY&>-E!5@yUg6Pn9R z6b=}0i{1Ds@LTH6{e#Lgh~<130Fu?O^=A}A3o{v{KRdJx0KXkdfUPDv{~!W-f)_$GXEtNm=$J`EF0&??0@jLrxL03 zGik37CmqKF0|iehsHGFr>Pkd+g1S=)BCg%g$zz%|J|{jXLYSm|Dr z4=BpClU{&9`eI(GKCqSFO<6r8#j5OEo9X(gPjvNa`Jv{i?(%nnWH+U(3j(6%i(ykV zyb5Z&W>)CDcyNxexB>`!0BvHh)iHo|fD?*F`2w!p;y z2_#m@Eiq`I`o87xpYGp}FK>rcN$tp*KAWrD>=qe~OSF~e{!Id#D*Qz;&DAC*Fl^jk zUK@V#*NZw_Bt|xfFpc&17iA}}KNfU}jA^AUVP~>+Jfdqo=`(?c+@p>ma;|oAwFy{Z zbRb7<=zCD+#{&#N!VUZ?uh5jZ9o$mC@G_SbHUNqtAI~8{3eD&LU5sTC%kMR#4;>CI?MOEae9sz_TT7A%^-jYYfX($T;69Ku-kVU=N*`ITO-! zrLpIPCdusZ)JzbP+yDG%2@l;=pZqZ6i%73C7-571hF^r(x+8wmet@e&NMyJWjnD-((@^P@R)zeROugzvmx|x+vuIi*^F;Z-$00xt0W>w zQ17me4buFT%T{HoHjZ>MWqu%wJZgV6bd(Q-eQx1b6+8ioFXHu9ae>G3di>XBl2mB~zP# z5VtG66#t?BP<5+1)XiBNFomJCX?-++~ zfZ1e4Tr!Fu1%enUG&2Cvk34NmV3a8D$)&y!K{kJ69?@PF@t2mK^OU}Lv-3FE56BTcDUWJy_|>zR8TN`7<-lnOLrcv zw#|kTz(arwPbhaBaLB*g*ut6}&~RKy*m8x?BDHg+6-Zn8fw3LdrjP7P$y^(nwlI^ctjb0RPlwaAt5?ckN ztQeO7N3SsVONHh-fgWX3MrSr~lJFlhCOMF9Sy@@ixM~!QniGdx_wVu%(545 zTbP(q-rd&X-Y=OTlm8J2@!z;S^2@bkHiNnOo_|ew^P>9k!aln04-Z#eUY1v$I&RjN z{VO#P?+F$^>`Bw;I@5@jlgG@vCLba`8&7p3KWLl;i8)Sb$c3M5`zs6la}BaTKR3Rqa~Q=CKmDZ6 zQJv*~@pSMNzQCFgRb)>lpF)<2zXOHr46qzfqLL`*r|6}4O28!i)jev?;L(Lbhrkex9P=2MtJf- z{Blq;y(ILu&L~p3hfO@b@EP@H!N;?Z{2Y_8h=RoElvqKuWO_`_EeGN^s-9fn7&8bE z$-wQkeYoEkfwLKGUFf3AEPOzAfXWrl$Is>DO-2hlqWGbEiR(v)vMSby*=Q$2M zbv`V_=Bm<35r$~u)Zkt8ii;7LvOP>81}EG_|FKC!j{jC7L6NO0&`;KcEEb3_d7zmEz9DbG`roxl!*>-KNIoCW|op24jRs#8b#(T%zI)^jWlPl}kh+)TRD0j10KX(A@Zw#*~U(N}0Z@ z-n@je6)dT&UP%`O{~Wrkv$SOp=ELl_|-s3`(0IaX2%dtAwfe=)dm$i&* ztU2_W7C`dKl|#$Xwj|>eK0R`5mq1Swu8@%=>QC?aV@-Wc<%R~X@l1J|)(dt%3`hS} zIko-{R>a%XcZ)uO_xqmjzBGj|fHHy;L~U)L6qqwMZ8(z_ZzkkJS5Jk$l4x_FV5hBk z<;loj5Q?n*850d1UjPC{c3OQ%RjyK?izqL8w+8clGeUYbJSXgB7QV6|2k1TsB8N64Zp}k zc9-pt_to0$nDfEXd|fX$co^Dw9PZ$3pmfz*dpIfk{7L63<9Nshi;Hjd@~!xFwM43< z0py*qA6_IL9)Qp58f@_KdeIYV)?xJbUw)L%40*wRb7%ZzM!`*RW?Wu zl$g|Y*!g8B>a7`A`!toteXp!m{448^sn9Th!aB{0LkwBUOvIBS&JQhC8FAF2Eaue7 z5cz4V&)0QCIGm#Cfx)pf7F-LuWyLTSEK~~O6DY?oZmjF!7_)(6HF8dV8+~X z%qO>*`yYruXY2oT6nZnM%x*9hKkJ_;?=8URx#lvy>QuqfQT_Vx?|$N=M|lNGuoWZ; zX`}3NC6-q5KK_^(;AH2kUm@aHJJhVr9VZsN5!UXYN-3%w17C=ZWyoCXR8JEf&#?*Nfpn*+3(K=Hj zV+Doi%e7DFBCq6NT=V-?HIxE$qw zy3775Nq=tt9VCn9?4=9^mqP(B1mbiJ}m2wg|~sQu)(ZH_i$=++jzV ziriDbdEW0)d{fLMQU>RK9y9#4h1 zMg98bZWER?pI*VenLS!4+}?_bmNoxT`*Z025r+Rr(k__UU^0KO)%MYi=JkHtcV9m5 ze5A^D<$mLAWIWU+5k}jAjF$M5KslC@LJ21akzi2HLTScvKrc$YOS zj4~w5;WtzNXgnMMq_MvA)U$uroZj$$Egp(^d$G(oJzNoXigt7lOXj%9K1KS?spGrx z(6n=w355(R9IPWy*+@l5iRBTO-4YX{;}kSpOQKGKke$)o!12IYfJwZ^UwmlIG5AWa zupPwYA0UA_)smA=3uMnh)G}EWuxl0$}kr zh|!jc{aYJYKB;8#Zxn{aUu9m`fL7QgR)(O1SdFzYOk!Ivtbcg)&ve`}?38waOj|q2 zsLTd3>*q2D-kK(^5}DwRH1dh@qNs{cv*O9tG=H1>^zPht+u`G zCoGUi_XQ&f&=YKF5VwTE(ACG}_B25TzVdE3w;Ixd#BK{|#~@4tBS$j#A9REOgI&V$ z#4bMYgG5Z8;=V-*4qO;3!>;Pq`TR)icR#6Le0@@gVM9rVK)&03RAryoYcx4z#1hDk z8f+Bnz9S!4*I?OMIHJH*^q;b_e{c%HizU$G3w1YlH0H%NcV1VfSrybhMnltDn~EUF z9)tHAe1+{fgT0JZfqy|v_*5%~M(VFtCymF%6|I1ArXbk zNeUX;NU87{e}rnnY%c-2GHqtiUzB50cevrf?yak#5<(7PoO0@zBcju@`!xDR4G%(! zU76LnocF3)rwi}R*vBbYkSNM+z_87jBDTH4*h->&EmyQr7Um4V%jZHM3~nJ%t6(L6 zD{!;{UV2r+uN-0EN%;pb_;k7M5OVPrE8AYf-gPX$#+dagsddaDYhk)-IMVdO;P|?n z=VMZu-c1v7ig1$1TYCJ^v|c8DOT2|^0c2lHVs7@&y^$Xx; zMo)7m85xpZcq6fi9;oZv^l%Krt~7^qL_kkC)~*}DBv5NyqzQ#L1yyBPPyoYe?ghg< z$WJikjYp!r%P~-Sf6x)ATj@{_?oGxJ;<-}SAfg>Qy)VbBe-!@Pyzx;qDqrV36{MLo zRrgd2{zalv(-Z4U&pFbgIIM&|50uqH141&-1m~A6U1Y7u#UZ55F!cBM<@?k2g`?*` zCVyro-v6yA%`rHGE_I*IAFKDLx(bWF?hdP$tD`=Y_o|dOw;n*TG)~dLOZC|iC88Qi zf2T}rptRhfSRo@B-Vz}qux2b{PE`>9+SwbCUiP#YVEQe}NH1iVYz!8Vp_gM#{OkQU zlMK%QL1npVAQ}?;!QkrNCk?Xn#k5?5pg<3C()u3Jo>8A>PcNc~U_pzrq<^}Sesjk2 zSdfkcA6h#p6%P;g;P>1dWL59{IxvNW}gt`wtziPO@9G*O3_8InBNB!%iPhlc(&Pa@(jC?=O)n>0q+Wq{^J5;?uhuINCbmE+QB4ZC>EP+1tCB z#g#hl#S|>C{aHrVf|KmLCi{;t7jO>^_|-#NUuhhgE1#I!Ji^#qo~9>t*Cuewso1{h zY60>}Ql%2pukz^Ju{SPZJsRf86GFMn;~1ma1B)kffM19GPL^2*(X5iRfpT0SBk|?z z$)gfxMGn`8iz*;2VRT8|@`M+D1fG7D;;XW&Cm?|v(oo%~ZU987eMIv^h0*XlQ&ttL z$xpb_3x>yTE{?~DRVSCYfeC0;J0r_^bMK~WEL}T+a9Ytar*kUz@k-VdV4K1HmD;{M zxTeoU>5>HJ#O`ixLxTSh{MnNKTyy^0k|$#PMizYXxqa^9t8Ui*st@dLA5O3G-m+LP zt2~37Vm!gZGZnY&*;|cj2wAxC7t8R4sQD=$BZEy9*#p&)fr44x^a3bs#r%6ufjdts zY0ir`DEbh}B)y_IxhTcE4xih(uyMRCPoGK<6fUdXvw9(p<{X0FY-8k?Zicweyc3V5 z$Kc=z4bOV-!e=Zf&1R=l^hyWQFsQ zG@mIV@S$6^&e}rlZCTnzrCtiOkU{Bp>J=Pb`hiL23x^4xf~P2u@!oV z?8p3{DAZOBwlL{^L&a~|LE!;GF(E9b-T2kI**omg9dvA=`dJILf#fCvBzomsno*`(RsMWxl<5Qh@bi_SeBQ3crS=(;X(XaSX7Iks%ha)%GKalHH+_r*v&i?jx0!A$k<0*N z?GazXn%cf$b|g!mI`vuOzulV|Wv3|yqm5AWZ(EG_TrEouqoQ&LWel+lj7I*pGv7pJ zfqEcn4^AuTVkf$+v5X}iA!U$=nB2%E7td0VMDr>}^+<13<`->&+{@a*1F$v^<-+l& zgz3jNZjnBZc>hWxWOP!4)MjJlO?$Q~WOM2z@?JOm@!k|TEHjU&D}G6k@+NFLA@Ny@ z7k!((BG=rNKJfkZL?BudOX*ig#w^%Fgx#!g_%~`Tef!a2I}nUeu~bm6=S0I;BP@GM z<%t$n(W~A&a&xk*yEi$tvGTICEM%d;cqnx|V}yxMerBnwuCC@5y`igjI36&(n_9^+ z`IW;m@-WPD=2s^+>dM9yr-A*t;2d_xwi^nhPPN$F&AdxDnb2(+q?U-8Pliind9p+! zYD`@l_pb!*F+Ma(iNN*!fVx%9vsDuXd1u*{hF%KfPftTNBgb zz<_?@ZohDgt=OO}Nfu;pNiTnYf&m#B2hp{vBqpPR0f4;J)Z%YSnD$x~!tqD8>3{J3 z(DxG}`rjNh#X$Mpx8!sCmF2YQX>#9wEbpc=&Q#H)H9BFGM5+3#t#vhUuP=ql`y(BW zZ!oT#Dd)u)pA$A6L?AT6WE_@q5MD9`EGdCXjdT~O0$Ivm_F|6V63K968W;yw@D~I7 zL#UVlXDp52`0S`!yx^~^gB9O*2E@8Sup9%Yc9)e>fzMG1;z)aFT_^c8deD_HD^Q|| z6d1bg+{JziWyC*W1h_JE(X%uqW00V*v||Jcv%vKcE%v2WcPa)oU5orNc%fmv@-eOs zVqdPKpNTZS0_(JGwxVVY$rS(il4A4^7O)z3n zw{L=A00R<;>6gi?Yun>gNS0oF7Z)mi=d2>Um%q2z4l?9BztbI31+)%5Jxf1j5Pwr}Ghl|N ze0Soip?`#fC!9sI0)_$SdrO7+EI$`DUgHsVh%;uAwTQ@DD8cTOTXZezMf|SGMw5i_ z{6Lj<9~2Bgs|uj3v?A#_avah0X)d)x(|rQ9#89bok{++84t<&yWA>ZL6d8Brsii;Z zm7-i1VtoA^1v>)Q^GfPeD<7?pc56H`k1s85I=o`QQn+4xw2({SpOY8GrmIJn-cy3n zXOp~jjjs_mG*XOH*cDZ9l)Kk{cyM_3_SZVKvq^Jg)$W&IuNJPgHY5en$S7dYhLx>V z4>DOc&r8UgkZ;l*Ns%J(VJ33snqR!{ zdL`%cMBb9B^Tw}HPs0-Jbtx87@50{R9*xz$U1Np8!Qaabvr??9VjiP@_OmaS;zKxCSo;drU3tS3X_(F) z#Lz-cg=iylM^b1L-K^!gN}}b5E9dFn;5UnkecyPjRU;6*LPT+cmpocqRlZMIp+l6V z=ku31RS64<5@AA*KB7~bYoZLYxU(W{^JGH&buppcx^Ui643g*qmN9>_s+swM__)y8 z&$>*-m#t$Sci7nu=a!opY0CACX8GRDkq)IQ58Ztp2~qyNf5A%xU#3S8mB&DN6k2?EzDaKZ?D z&hs_5jfjtx87BAoGCNMvcZwc4$XK&(REW?uG43X&Uki6d~QRdA?Xyv4-@k*u&uiPf@ zT|p$IQ>7Oq_Gu$@VOC$?^>`_enBWTY$Ps8x*T_bx7NzcoElP$%wS{G4IGIDK1yJ)+ z84Q?bMK6CAWNQcEr^n0iaVyRYAczcut8~?sHW}~4u*&6`I>!dV-p8Tj1!-QLq8}b7 z=itzvIlSF3=B-XdNe~}r@6>va-<~#WN8LiZ<*UWE6v^7@KK!7v=0XB@e|W(~xb*2` zLY*Cx9r81|snOKHkbiiE(?cWqZ;dj~W8FTcZ7lfH%mixR3$^}rM?FEbP)=FrWNYDf zYq%V*8?6lHFm?9PT!&CVWK>!3gcPMvNAXs4i3q)V%&`bM_W)TKMH*4yBD~-vuJ;dI<_eJXiYUwnUC25(hmIA>w|C46OfFl0=(q79ofz*%79 zdDq-iZZF<133#M3-Z&`(Wlqyr(nk7%6Q{$x{(7D&8^! zH$x28PZU5Fy;Di*C@qcivMy|Ks%14IazPu)lD*Z8#>Jhe+SV!UZ}1Xn;F%Mm4{yHX=WNM=YT_fZ@RwioK z{G#sXgv+m$c-Ibmx0i>O71k}67XB1F-xeDue$pzaM@f2FUa*3n)&N&QZsfETt5Gg2 zoEfQZYmu`j32`RoDwLSlDU^|9L>h-E6JWpgSFoZ=dA7oxWi6U}tijH#pzb|8+y?S3iufKwX>TMTMqwzjGZSEHiFxl!O6D)AC!@kFE7M3fZA z9vweI_L|lM_t&~9#lzCOy6(NILCVkpTwVeiyu4SBI8kMx(uh%b%48WE%%>QqBTtr* znR&XW39&aGkF;y^-I2WcAa9xIZdCFcZM~jcbU);C^ej4Oj}RHwPnaWS41G@E3!= zE;zj3>Z(0o3So_DIux{g>E8}T@91%24F!J5{!T0M^jJAzaaPGcN^vbKJz!ty^Y%Pb z*_DIJ%DyMYjYsT0lVx64OP)8kNKe^vWZ&>@VYwEfg-NE|>AI%HXv}WCxyO_kc&n&F z*&lsKam#A!^KPoK^=ww=;Z^V6t39F1FCQIwrk0l;4mT~GXH$JTb~w(A(_HUol$qSg z@;t_=%I6h~vcrYZFEuY_2tL{g3CcG@jgs4!Mird-BLx6Z6dHI~Di05BtpIpC16%65nkJKO$6J4~+NRJi|Si zyOoyiJz|#v`o4U9k=tEc9QxeW%YAMZ zZ2EQ1FA6yT``ovE0VlGEo4#x@B=B=>wss&D!T(_<+<|h6e zz`?V}_cV$(J5;J_rM2B?^$oi#wgSlA>kP+ls-esp?w59aj>RH|-BL!to}E0oovVD% zXnghkKtCUNs&E#8qYbK5k3J)aT4blNDs-L7qaPnjWMP8KLpH{fOFZSKs=z9(-~w%`nyea#>C+iMIuhddpSf z6tB9)(lNU3b2OBN8dBdSpBdO;kk;EM4{~>D`o4m6SFd zgn}=U+eJ%b!g;HzzY{KhYQ-{7XnWhrqky8b?LME0epF$jijP7r9oCTys!6BKj=uTS ztDk$XUUYnnj)x)<{(7mvxTRv;W^21VUyPL!H80*cjauyVo@@;o94`|-0CPqU647C%#G89 zvKTnu+Oco2p0iG{>B_q6#5PXS9?a?-hZ3{#XhU=%Qm8F&S60t$l73_wkSGvgZ4dpC zQzmK>s76s=nHyQ{tujZ~>a!t5+kY}=7MA9^8`=w?cgDX~Hxf#RHN|fpQE%r3YL&~>U}kIj z9^6y;_ziX2O7Z#-e!XJ<@qz_@@x7kkX29Ec8P|2i&`RK8c2tIr_15#-tbD20$GMr8 z$`v%%`3s+T%GXEgduT)E4JMyml-D*E7L0tFkx4m82b!fMgO{YC1>=nHQmMmY(VWKR zvjU#{Y9MhMx%A_%kymxKS zJYpzrQMKFN%O2U{Oxc1xArD7SY3_Q?e;GUzqitOIolNlMO*S*{h$6u*XB4y(S+Ht+5(-NWQUlC&=Kru@Ic$6i0KKEo_~H#nIY8XpGfnklTZo zE^A6dPl_&vj$%wMQsfa@2B8%!g5g9*KLVn98vPVTX|TLL9dyUZHVJG^ynlilsmIPR zLdnDBXQ(I9O4F+1(v{hTz(D@OI!+?8JD*1fhjHMKN|KM50h__|4 zNsC?c$A?Z6I`Vh&#Ziq!JG5Pc3q=;D3&B4D_ z=@Z3xe@PU1(&VVH&HSboQg`l?a?x0w0Bc%l*q? zfD*V4=<`=;Y5n1hsn@>*kR5C>-o^tH+?KA4#=3&vpywQ93`s}Qp@oFjqNpd++a5qUu zsC=!N7T-qg0za$V6#Vy7QK6nkR`E`%Y7*zKZxAs%O{^(HO_j>dx6ZaR4(l?kkB6Ax z<`FYT4S_cay5gOZpPtOMATE^C&O*2A>nYV&_Hf??Q%ZL<$e&klJT2dFf%G7Oof{q-Z`&tY4CjYFt z#Vw6gk_h))^RH@U;=&{@%%*mm>HM}~(bq4UnBKpLQcCHq8THtrQJd@>BE38G;vGxp zq{(E?Ftwx55Ncb!gL{gmRX$AMrm_X0(k6+eVDj8lz9&nYO3KXoI=u_ z7_oJ2TA9Mqk zXMnfX18=<|hNpii^|9<=Yc(*SF!0`zVJVXB`~VkDP7(y;(!(k<7c8bNT6=+tuvPO>kMKrA&n6otvPErWw?=fNc$@C&`ovS-}62) z*=GgO#)@qVA4I@mw*$+*JU=eSXg%5!masSaett)EGlQjb37*VH;(%1l<{V~$5r$oS z(4wQT+}*tuG)w90&z32L{x+Sr8pv(RyP8pgF7rf?y}A?{X%Ps54LpO0i5_ydX1%yb zT!9yu@fU1l#cHm1V6$_VTbr!!%-yx1sdao=0mbnUtLzJfcj_}JkCH{=@L#dXLnDM5 z)ODotv|w6CCQk0$v@ZrU2vw|5voHjPX+9CE{iG5}#OVxqf?D4FE+d4^)-@8<*h8k@ zZOq`~$$_O>0@08^+ui1)+?8;uXK3%obU309c&{m_Sg-#*5Qhgl1jm85EBsDRTlhI6 z0fr#g12yat$~JF?v3q-AADVXk4=tbG$IcofB=zVh5*K!pPyAps)Z6*Fdr8bkmrc-p zGrq3T&%X2ZsM{B2zL6YO_*YLJws(FNYbIr0D9?Gp&DtsC|7S5^RUl8*2jo@>3H%Hl5*0Jx{e; zX2PPtEG(0!kZDU{*Q?AMB6rXY3MP4=rRB&K$0Ejy^DFX#@Yiyckj_r2&m&ZYIyy%d zKGKuAaoCgL&6w^_WtX1ixMyh+c}ZV=)7a+pYPdPIg8MJd1@JwBSe zdK}BOWtL4Z&G5L?ul^}|7Fn8DB!bWb7G^ioU5hgT$q*_frnr&Lzal3aVN!B4ZL1IW zHX~OSI&(fsNhoLLo^nj#XWF~>yB)dIcJvL&=1k(CsJkhwPkucj@92D zS#1LC%~GJHo11cWqPD5SrfcNt{={m6B~Oa6>y!=)xh0ewj3#E&By;uXKB}5KybArQ z!wy?fCff~xBz(=*I$KM*ZSZiFQ6Ntpqo{O2C<%id9=SrCtRDI*fIWmnMh9CnRFGG? zh$gUM`t(H$z5KJUU#33wDafuYe}R!7LFS>JD|*{m$5`QabBmjvEC&%;6twL;iK2909c2+bZ*FF5JQ@&k zUrUaI5tG}&JZS=_{8MQ8YBpqbtBSl|RVGo5qgP$i7Eg{i z?qE)8f6Q&{$zc}b2&>s9@z@t0V{nkJE zG4hf+D3`;PF<--;6rGqzoT?pJeViq==ZgL{H8*en{wtRN5}NF1=&{0hAmRUzcbG9J z>J2|tC#-ZYiVJgKr5#_>=w`H|{9x^rYdq5O_RPpMi-PCxXvQkvEhSg_-#j$Tc5^1( z=}X&*E>eCQ!pB9U@8&AYXLYbm$gU6U|NesU7X)%+%=PhOA3*Nn>f>Mwwy!TiPCy`# zcM1?_1n|Z9^&i;uCjs?;OaD=q`M1XZsz4zSn5~zml{3(C-^=;hCdNN)g4Tcp+WnVw zE&LBVfA{=HFPVRozyb{7YU^kP6yUD5|M$EMJFf@uJJ`DX`LQQZMLza+yO#d_BLCRa z4z6hjXoAan+d4i5#F#~{j&9&-5)sn%kK(`kGTZ)<)7pC4{W*>L6E}QsPZv1Q2XG(L z8R=#10+j8MUdZcU|B*wCUES}3&VuQm(}Y5<4|2d}0F$5{(iRC8FoS}E7=auHRoFP<5FR$w%Kp9k<2gU_R?0|V2umB{mAK1qAcMf(y{3%0U z1O5Df^8Y4aJg5Mg58w#k5AXp1SU=FG08ap(1Ec}~cA>!l?*V`*LxC7Wfs22jl>j*a z;CR3XD6kHoK)9d*02Kh>m}dZi0M!760A2vm04M<9`nGG`pgnNB6##JY`n6qeAP4(| z1H=FT{zB{juDkwSjstSgAJA4hKnVb-`!xVKmpTAjfD{1GCtrXB0MLI>7dQr-V;BIa z3$zK&F%}>S0F;4kU`)V%pda8IK>hCkvH%JIKp7Y(P#>rtt0sDaE zasbd?F#zZTXy+wB5CG^KST_RzZGrQ!1ORP={=WbK;|azg3BU;e^bOPn`UC0?0RVRH z>poySvjMjn4^*>|x6zn61^dH4IP==leVTDTvw|S;QXrq literal 0 HcmV?d00001 diff --git a/public/glitch/glitch_assumption_toggle/sounds/blblblbl.mp3 b/public/glitch/glitch_assumption_toggle/sounds/blblblbl.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..45ff06c45e5ab66ad2ed18b27ea5fabbbb5aadd0 GIT binary patch literal 44488 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 b0S6b+dI2cKGynjy94G(-0MP#z{`S8BI~dqH literal 0 HcmV?d00001 diff --git a/public/glitch/glitch_assumption_toggle/sounds/blblblbl2.m4a b/public/glitch/glitch_assumption_toggle/sounds/blblblbl2.m4a new file mode 100644 index 0000000000000000000000000000000000000000..3eaf5959ecab0ec7a7dcd987e27d171bd65b1ccf GIT binary patch literal 97799 zcmZ6yV{m3q(C{7G_7!JiJGp|5ZQFJ>_Qtkt+qRR9oosB|@BZ)Seyg5(`oo!XX1co0 zhhO#dboYROfDo9ucsR(i2@!+*lmA9bXM0;)2R4>}pP;rThA#ijgMhj#g8UJL26@W< z`bM@V@K|qN!OYH|?Pl^8IexuE{!ax(%q3)GmwqKf!r%&J%o8M5!h^vzlVqWZ_}?PL zd0ljbCOnulEJzFhPp%5h7xN*WAz;b>-x{m}C<4EI-BjD1L5!Fb^EFgK-hb2Rp(;Vf zhn_62;cx-qbs-C8@}iypra`C@x6lH(qAH5^qC!YT!A*V>ZOVI`692dKPvF^1{>b=} z4Mhe}kq;Ry*PP1_ky=399#aO#2f@VBjG-N8lH%g#{g3Xy-S|2X7z_O_w4SBEUa&#!FC<-N zgntTDQiOK>-v(r?-yd@D=F(s;9k#5J=0*PYlcEKp$s?MBgoA(XkwM8<$SK0Oe-HdN zy>;^Ja^%ru(eMsH09gFrHp*r#v1C=M&bDf5MUzl0m4mqLe%pn zU`pP{F^PA%apR63yU5hPocM#-5o`z9oIhpy@rNcZ0za+OH(jv@HKSIl(ADK8`(wrPP22HBF#9IboUmb z${m_{kwR2Ox485(C&9J*`UAOXNu;G16_J;;LKk+fw)64 zlZ4m>(@ka_Z&X)1e06b+e`7U22lUGqX_}Q!SI{LWo2y?#NBKENZ zA%!O$W(E5)^qZZhlMM}&jlF)!tvCIhF;tv8ll$H+xV@ZXIww1NV+uG+36I=fMAvJw z5c`&u2=%d7otzCGB0W>Yk_vdkl4^K@*4@xJmfcZCq~F&~t>8t9iNB5i-1{pZbJe%X z!cx4AkE7n1p#_n&=lWG~j;(du?-fcrNP9)KxiGxRU^)MqYrV3yhSDEMc&slKS?7!`+T65uePRYtj{UF5gk#DJ+br3tP6vmZEc+even%S1o^Nem3OFm;2z1u9z(vyHH~P zF~QeGyga{6J>y{hfmLRR*>moYjvYjgb#r8sQLi^GqE|9Zv3)7uC??}WvjE?Ah8i2& z`~J)&p-DaQX}CWfAAeL%%)*l;D9g!JYpe?J1M_Y0u&Ln3Mfkt`G+~J zVj!%U-L&v>MLWxZnc6q{`OG8_1fg@J{?z~k=@kqJ0s<8(RR;n>*PaRj0yY8J2LeK? zmmD7ZhZ*_ON(WhjC+pv@&=5%F!*H<<8VvyJDW^REL4b1{E5WVzd}lutGH+ z6ejt%AybUDptRNptbi1Gk%8oG?pR#0MSMU-rmQ~ZBW+Uh2P(l7UH_J*SDTMHPg&gL zCih##QPqC5LO+-U=pYAYQiXlwnGR!&OK|FoPbLjKuXHMDPp@{`KEv!)Z;dp>R+sSs zf4~lbu?6(CfX=8E3#7V_dUP)Z#b>CiHY~AHL70Engh=Qoha4bM?(ZxC{_Q=WYd+!7+x)KEpY%jCnP%Kgfbo7L zv_I#Y8RGdUC0uve6h$7{`4Z2KDw9z5=%cNbYm?{}93$DD(U$1;Q7nweUett`F>1v zg+ItY`3s7JQ+t}fT4sk$#C@#F>8HncJc_rO$WURg-eGAftlz9E1^6jQ3*s-7@XZuN ziBj$mk{OG>j@7_S9Ad(-nI-?1BB6JYZNrykvt1`$^T0iowm>(JOW7B#>`{q6B55fA zz|2or;K7-^XepL)(vn0o!McxeM2{&Q`*Vbhe3GS&*1&25UU6pnbRkjy-M2Ib9dS$~ z<4al_&{dMr(+W{XZ{&5RRhg8M zrTZRw-IIAsWEix^)e$4EsvD5!VM4jo4w`Nm$&$;;E z1ts|cFsd^?^EEac_xh=;?-98EVjCPG1Qes{qT;}ImC%$o1zrO_JTjxdIQm|rK#Ef+mID`pN4%m(O-Jf!T4sJ$PjS90_1qqfqzI&k@1s%~u!tAoSg zl7}rO<*Yx~uRQ67{`&{pey=7vOmXQVY2G|76Ao_~5qSrKsx@Y9)j7#Y3qhgb)7k{iK9T*_8J9+V zm*9VtI)K9A)E?)p{iwnCc)PC{_IbY4W%MiyPgrmwr9F)v?jx4g+%$nhbGTKJ7zZJr z#VVRXt8t>V#0mHSCC*Ef4f-8<{pVzLu<2q$=C|1lMa$9|?!|*hxafzCG(_a)mA9Sp z-|R$_$)R!F#MXKw<=y6bi+IOa7fVKT#lo>b<{v?M0U7+9b~2n(A9UWSoE(Rdlm}hy znZCT4?UD1H$QM1C6*h$Gcip@ZEOkdbCk(?rY*Bjj(!prDyVGs`rb!2X) zHszagA7?q3uIapB^PEu~T=%@l-vYrG>*^++srPQ?YxhW6lQTI98K1Ow3azgAe_7|F zebQ2hsamkMuVPM${Wz3}ir$wcPrfXVvZ0`-)LSYn8nm70qEEM0zG@g#6F_zRe}xr`_8OMG{m z&%#pkdAp>J{;Y*0Poo|+_}$OwO=X)-=_Jo3sG}ai#a`a{I-dzwWPa6qV+T2Qi3i>2 zyGFKiT&8M*aX%!l<34f(U9L~C9M=|pk%hZ>Kcp;3Pc`|J+-93wshj`$-ToV2+DG4(!HqfC z^LA|j-F9U0^|-4lG!@yKt_;I4N!B!DqISjZsuNkrIhitT6um;_g+>RQ-Ja>Dv0LoS z1d4_^^x{3H@~5Q#f3$-8gQDTo?&YspsNswOICSt;m}?v-v=Vrnib zv=%2;p^@Wq7<*Ls`3uY3@f`S zQ9O5>bx%&%#f*G>C|~oJelj91w;y*3pxXsK5)gA^WMO}Bk|l9d^^t`UtU5?nxc=8qTf>D%%Lo7aF5; zy?nZN5c@gHkJ#zFRqMoN6mg?&(-m^Y=iOVV?%q`{qDw$h?H9!((H@OsjPa^0=7V!g ztr#VbdHUH%&)iw{WMLy+5RoP?nQw(DQSxOQ+)@5<{5MU$n||T9Hpjv(FozQ`(sS)w zeYPCy`#{jhzESh{O}^;d;ixlX>$!ZDns1P!$|mP<@fSv9O*z*Bt1W`I-}Y-MQ_H@o z%vA@yT6`tNV>g6MV4x(G>3iv-Er`T=i&k*SH?$o}7^rc=rECTOKq>Udi@9kj$T!H6 zz}aTRq)k&wzOVXa=lC!kFA%%OI=bP=@Ygi#Zs84Q3ze%c94;vcSGDugIIMe)|0c|W zZOvYz*kwh=o*zsnlo@G9*nN!%%9%8RJ0*t=+Usnhj-; zf~|X-ehKP_cn3X40Ke+Y@iyl~rH!~^W8@r1OJ_wiNen#YMoiLsYvXxV%`Z%4`pnpe z81rr=JFBn3@oR1;!T%_Q1|`C&b-|~AniE%OyFGJUvGrI^-d~rfS0(OU#*|S-4Js+> zU*J~ho(?R%Hfc4az**IQ-yrCDc8Bz$YJ&u~Tn1cKr2)-Kh7aTPfn)Ofk&UJ?=YSt!n%Wbc&!+c9*Rx=EUbtuVpJm zd@WVzev~-#5n!itk<}F{bYaH8n9~rVU8IA@u-4$t8)5>rJLjA;R1f+Gmrp-67y3ok z+I5Tyi5VN7R^V=jF*f>>-Z_h@dZv(w!mo>o*2AO4g@VQYJ`-uQ>=G-ai&5Q^bXp*B zhS8Tdsi_v>RJQ;28&gJ^vnp}jd;bQB9Wof1XM1f{%FTplKa*+9b0u-xq6J=G*Oyb` zm#sQ-NgA2$N@^3SjM_IopK3aUxG?02IVTe_y^k0Wo0V617v%=87}~0@N(M?FC?Qib zZf-oeaP06zoG~b0@lFq&79#n-*r5L)qU*2*}fEG#q_t$H}(a>!`z|h(E zm6xp(vUb5>48K-B!0+UH>OmH6blmPC5~_>`|Bj!s`G|S8#F!$^&;I931o`M9)stUOW;OW)4P&5(-!e>@U^lK&qb zXC)juj<;&Lw>}+Lylv-CFa;wvo&B!Zod`yHH*-q$_c~VSK;k0Bhy((;W9)ql@ zRNRd`y~QJWbe$zF(9&Q~cHGWu49P(y%ZMSjo?r$GB+xzW%5uKyWI$3h={s8GuQ||< zJ?_~XUKYygjTaxDu81|$?uKP9F#O!hqi^b~T>!QF3urKxHwtC%PoJ}&@up4;xXVj2 zWAZD%7~gFekY92yxp+quu)&WA(s=9?k+@!}D(I#e;SXGojoDV&?nVc`t%rR^!N8-+ zujvem9t&g%1im}>jlH2a$g_5(faP2L$6m37^kww*!j*TPzC0W>Hxyf!4qDsGA%)k(`^bIm@RCoP_V(4O;8>b9DALqaz8_4KUVd+CwK6-f7x_ z$O<_nK&{f^z5U#=w;l-nv8})w+|f^bOSBz~U~H+pNmQR;3fhMMf+{X-3f}5(GSSJ)wXJ{(V1O! z9$$f;_aH%);8H)Y&ZItL%-#@eTwu;KND zmHoX6X>oxZWo}f7{>W5P{bvXBf`74(twD7h%_se5R3R^=8K=OSKi2Nb7w1p#I%kHJ z9N=@}?e9A#$tcYfwuiD(cjFqs5h3p}TG>N5Nh%Mt>0asw6^D*|pn`7rHAl8@;S|r# zh(@AfUAMV)uy|WNE|rWakzsr9Qi8MW_*Kfy1woB4HFVTDTmTM9@i2NYFL-A*CN*yF zVlz$+^}HM~6mZ)?|0x=YI$HeZe0jRZTG|e1IqTx4UQwl}xeRiJf6<4&nw2`uMLWsD zBuutoi=u6q@W~+G$?u1GRT8r`u^-n{SyDY^z3~Iy)O>x!rg$;qh_{r#g15NEGNSw} zvG}bNecr~?u=@QrjQo*@IM_I;5-Ts1W1<_NRDU#v4(fX}+~k01ofH=+jLM4^5}*)q zMuOg#G9rmW!94nVDv*}mLWW={#P5DeXLz|)h)Q`sfj&*t;KPa_!K&x={MqnmyEoo~ zd803?k-}>h)X79zK&)_@F~rj)W}Y_(q!z58Kek zIH%+i8@a+*-g?rbuwX{-+cx$o7q@JVC^)4`0Fp)|1zEnb7S~5Y*dS+T3fK1$S+VJs zm%-T!{o#k$nDH7%_RXCGlx_N| z_n*hU(`dxm`IMhqt)ku(lQJo7qkWrZG=>)Kn$6x)v6cmYvN#696{e>JvcJ^7Z%6-8 z`xg`ir}m^^)xrv6XCvEHdc!O~QcP|86GM#;jTM9@GXu~2a{#h5UD@Fa!BjzY$PPWve@Kqd&j zk{w+Pc#r(4LgWc8cu0jTZBF?n27Mkro?cuIeUY*oxYEe#M}IF4{I1K>EG%knDGzoX zydT5I(E4HI`xAm{?NJj1FX?-B<=lXY*VsNSRKeK6kVgP3 zz_m=f9+7jKDqNS<+R^47mH=MsuT=vwd!r&q7&yNi?M&jlZ^+HszNAzr+Q}* z<@Dk-ZXDa}6pX?Vh4GZiyH2OtfB;LTk7=)WM^O##=W~npcDs7MwZ?p_jauh^`vo3d4Rc8-vLQg3T`M@ zj2j()ce-0cZC!j}V(LGxx#(A=*6uT(8CTeWt&SnUrs1_XmGG3zjdkdVbi%mAwrbM6e*yl z10{qeO8X-=I>^-a@0Lj98I~ymf%6I!8Y2(FU)45uC`g4ig>i&bnbp9sNj->xdAp( z2gD}sMDqTkq!f_!FE)u=DI=;tK8T_p9Hx)aJ_R<4x}eAQ(M3C+wDWI;uyZg+0^-^t(n2DF2gGV)&ODBbHoTzfe!`F^YuN}S-Ms$~EF&5^4ySKT z+&gGS`*?FtF*D%c;Jn}abz$FsQNcfGn|MV@gr9acdYT?StaU_pY8sj`+S=ceS&~(y zn~@03VUoBwmr8!zxemn-+j2I|308>PcGQcwkr@Cr1R7p>5`hAYf=cuA`rcppgHvpc zxvTc@8lToSfTC0D+zy}n!_V`zR#1p+og6H`q=DL5Bic4g2IIv$f_}AW0p;?|^?P4C zSbRcXzq;d=R#wMxlc7Z$L<9Wa)481WW-`%BTs6(p4kv1Wm26$rowsUId5~C+>sfJ+ ztJ;C@NsWjF5=b%Pe6671%{ziO_@b{@v?T$Kb+E;CO36%BBW&#TX4d9TtTKr`E0}?N0J9(3(u%d#w^(~0#h95K4QGaD0V88`%4!Qouw}zV&$DZUXMY|e?i#n6 zwngE9v$w?h?%n*c=wDk(4Btev*^uw1v~)hAL1pxj_Sv_utp@W2#zmU~Ua+7DB zc_*R*H->a@6#4o_RFqbUHDJg8!1rJjwqx}q(4acSbg@QG8}||di}yYyNK~q(&{tc) zG_BxKwq*r*tHh%HNH0L^A^yo$7-*t=NT*iU5Xbglddf%rD4o(p){oSLU%D1+u@{x{ z(%xNYjTsJIqmf{J3DeVM=l`Fd{FhrIz^OeeY}4|79%--oMxW)=ov{;5CQrOl8E6m@ z)EvD|f_}4T`bZ$Lq=#k=19k1v~2agOy^7Tj|kw zqE#0EQgsj(H0@FnmIRYaiI&|?dYD=I zcNVRJH&u4Pbm{OmZfkgx_-riZf?juA);xzU8MRUg?#zB&!P?!2aRY8YTa=B&Z#!D3 z%RS1haq{kQ=qH|G+p>dQ(W_3b!kEVn8*X@E4Yf7;nLdx8xBVXFK;sxPHwRolmDPh8 z(M7rE+qO@}N^yp~~dWQNdn& zS*zq&Mf%%t>X1ZL_SU7h*hDnxy~WjL8JW! zWAiGYEr&6>BDLLAeyOTrSp6Vj z(KB)cz2lSG-jM&K&i>N=j%QoqKTQ8+?Eht#l6Ym1B1p`0caNNVfK5w0>C_Cho>o5d z$+Rq@2<~#>aGC@fjBSh&jmY*TjoW>D-p5{@n zH3AKmmmcex;0za@tGtYtxhmHPukpUJ^|oy_Qby3(eRHd$%w2hq?b@_oz9};Z-l;(2Vk?h!c~c=f95=rYKf1?Lm(<^p zW+vbj8ZkeXU+!S*oSgkOJTvbT%2?VZiv(WRb}O#}>|+s!u7HHKY4kA%1N0>;iEln6 zn>eJ-`F`aVXyY&TJ?4Tl{$o%po$t#%EdFAB!-skL$~#%-(lbw|@FP1&i~9`r%XjiW zhuxskuGYOia&;=WD6`LTD+A`X@;{{O?0gNTd$X=5Fo63m;O(5B>dq9K1X!ckhF{lL zzP;IfGKQaio3FJLLgY|C24U#wyb2gZ+nUTiUy-k*0s>{|7_@F*^E!1d@^SOQdvY`P zWYnO+cIeAUab|b}4VgsVoQ(3Bv$_yR+NK5rgAv|o)3l`u(ejVZdcbQ)q&oMr8uF&U z9Hc@)`mZT5GunjXgh($S0}bb4@d6Mi6ku+Otwn=#xGu;Kim|Ea`Lnhj$T#Zq$*Ypb zvXrU}{%nrYj8>{2ey7X)?;h-cZ-Nw&FY}ruujS=o)vT^mEZyC<@Hi|=n~lk;!h_#& zIj8w6fVC=6gMb;qW*&(?2F#vn){gP?E>rlo@D%VO=YGN>s6NwWpTJBQ)xY&8Xwo)IznEA-f85+sRVTV5)a+L|c+{ zx*0;oW)(ptM3lNz(6f;QqMX*6+HM$(N)s!Wm83}KlaR=|^-t~bY2n38f)Q5%hM{vA z#f4pk&y{Sw(ooC*7=={O_YH5hl~aBjGzJ)auaBh`8V2 zAOYY@aT@bVSl?5sdFK$`IX}U237~b4@YWV~`4|_T9`j=3J~rT2cv;cs+!XBsCG!)f z?+#G#G2Aqn9Hk3Bq9f?B>-eCKkE1}iAhd>(D|`V2ngK^dqjglf%YoB+t^(+>tc0nr zhdDH9Ut2Le=0_)aY6H_)=?!gdg*SMkys`5yg<*eplLrgxWjGO+8GT3;z^K(+{gn6R zM48%WG!?>p@K-;+f%1d3BAAW?Gi z)u+7W9Qk^eJA3_e>IsI)7;7P@<1Gg-OuLv#(2`nVMB#= z$jWc~$(njg9~B41M1oQmCLKy7zS7BR0d zO7f@ObokaAOHHW+425h`e4TqKOFb9KPcj;Gxt@}ajPwRqyS~wrnt;cPGcHD~1W~#m zl>m6UjOv3Lii%y7Fu$ALZKFg`C|qXBVva~!R(KLFvrs_Ms>WzWUZr9zg)H_ zZ`|I-~{=D6yW7BqM;^O>~sPf<%0wK7O_(Q4YVF-aXY`!&) z)65S0IHa-B%)MHaVB&Sd&Im*2^ug1l!ZOL;lYuuA~Ry%XwQVRR@>My9hhJpjoyqakQ+ z(oW82g_mE08|>ye5_=@~*GM_|0g@w-(4Ctc&k0n8ZJ3Xi=M7NPWBF|z{NB~mDT0z7 zZ!i4fU1r}WCD=Te^*X{)CCh@$$JuuN0b?S`!SrF{(l_ZFZZ&+g?Z{4XRH(6ZK(Ugr zYAMvf4INh(Qct_1RAx8lJSgVTC@){~^3-bHzp(f}#BzaR{UbI&>jwuOc`)t$&M3j* z=kq0xI8R4XI@i&e^<#S1Y;o{Cz>eOUs@1px09emhA))tyWO+GeCPe;6=Bc`M7ug z9PDR?uu6dn`(xTe@VmP+&1do}Vt6_S1V&o4P$=_9FY!m|l$)3!Bnt8?c^n=gTUPML zYk^1(i-Dg>dQc*yH5zLAP4DO^PU(m*u5R7ST#g6v0m@PQ*Y%9%BKeH4Lb>EU!@`uG ze(U%z7JrW)7pcV`4fqmjvnnWja4-}dRmd1ccCy&ed;{mUcy*f^Zu>1f#+g0HM1>VL zwPoT?ZLmm^_^lSA%7ne@9qjhqI`Uw zyshQ;r_PzMH6%KC6=^!6I|gr_h!9+1f}HNo{L>srsH*huuiqbr9F%5N|+_I zI}IH2ks~|0G!k@fU~c8K@?Vj?=!rZu(%$$I2ORON_H$gB^H9PRevzOhWD zIy*r(ny>qdZ)&lhZ~Xac4pYwOqDr(i9Gn}Vx6l{ez38*}t?dt9r9jgesx!gcSL?m<^L7t>no$h(y^H4|bqKkJ+@3?eIu{qLxzOy*YWbC7+QFo5+v z{&^W|is`epDB64>LK=6Ri3Mw>H+k$-Z;PyA&{pgBYO9{kr9ST&+`Xz}O^==2-<#`{ zC9Wf}abBtJN@v$oF})N|CN>3&MrlTH_1j|gr#5?gTk25pFE;zHZc5pbAzg2urESLS zQLVYtJp+}lj5Vdd?jn<;#0^eQ5$oGhGC~Ju&idR~2Lcz;lS>MlCAPH$Y8MUT2@Nwf zwY`j47Oa|Fc1VDYM6%*TR26&~s#A%x_pn<5wt)v@74g`!P^8Np)Me9e9XA2wk7j>* zrp2R+teUUFM9g1>AW#bL!(sGu6^wsGPz&g+K^jBhYB%T%r9v0HJ#r4_7udxFupd31 z>_V^QktbEIMLKBb(dAWP_^ix{q~8Q9( z^38rGb7lBUtXP8bAhNe2SY=vGqykNoG7*x5sc_6(C62{*+Sn{xRjDMOBPA>4eO3yZV4+pUTPt+AaK+T9MX_q})gy%SuVGW-akdku@LGrB(WtMVI7#9s>k zi^@{lF}s4FW>`%CLP?WEI%)1;vLA%daEN7PvOGGIsR>o zelB|z|42vF1)%u*1m%!X_!jt4Q*)k1o;^7bh2r9j@+S(#!lt=Z^68~fz}~$%Mq<=4 zO0PJ>ED0xgfx}hkzKW9>>Hwl`3}tg8oE%+)0%K#~lXAbXG7dgfpKEQq3GTqw-9%zm z?W?;FKQ$-2unhd|^ z7rmsbTw7qA{bc~xx=TwXzB8%&7#bc`uGq&*!f#ctX(#T8Us$~Y^r(oTIqSR(Wa*Ii*uIWp@`{n zcUnB#B-|NLw5nUn87!As`gTnMr!WI{PRc53H1I+huO@M|Qf)Zap?^~(0*HFLjaU;J zHG)vbRAjFqK;o1!efxJy-lgU;BASm;d^) z*Q%+jAyw5)UB9X#suEM_g!&kv450?GI}UPFWUbD%B&%7I`y;My=p{;JFQ55ko1Ay) z;`ea{=_~pZ?5<`4n-=c*Dfd}^`K>j&T|>q2)~`Db4j@$JH=9ReyT)(FBPt*ZdU|~_ ztlRSL9+6v*p%HIrhLb0?mUBkpCyg(p-Hx-< zb^}6CQ3*YTY#$F+yxnFyOfrkFRYv>o*^VPWMGUmD^T(&o*`pGs+__E(I z9R$|0uh77gjaaMEo5~M3ui)t`7Z!q)-N>(@EFNOrKMZBxxta3St>J}?Q(7W>EfW=# z+|-r<&p0Z9anzf%=b;W=r=(N95}TIQ(Q;!!VHcThUdc4WDxdTRh@g}7I1+rTx3548 zLa*jog83`$)XNR+qI>=2FPSud8RF0DPIm-28%ma`-ECGbl5Wdu&fmiY?)QaSJkHfd zAM&M~@Wz!6r-<)=AKfr)+{CJ5nm8Ihkyc_^^*8vo6OXod<&%Y&uDiR%FTW-(B=OI? zY)R?Ae914?*8zJRF{AI_oNGMB@pYiqDb~|LC`OmGq9Lr!@XsI#84=6cFAsMb^ei4^ z6ybLnn<15{PgE#WBH_jH;l`!T494H0A1#Yqjzf?frkLxh&B<}F2r55VTb7CLC3$V? z)+|i&KUD1tF+SD&)idmSp*p9QPwSJhV}1m&Pn0w|moo+1J44UY#yYSh&d7tN=$5!B z8&rwpy%bT#h%eweRdl+I89I4Kpc+qFISeMweEI$QKgII@X)QVpP)uU5e_BcJ%Jo{R zCTEc~-Io5q#2KEiDN{cflD4Nf7SN@Xe0g&ui;Qx2%6efTqb8N2V1M;7JgE5N+j!U= zE#nkgdh(67Q-0)Vqg$Ogx|n@z7SRYjetQ(P785@6qOtp-s)fEzQzf0^aCOr_{08(I ziXHKa?Rc+Yttj#?g}(0&MXS@{hagHHA_Hp-X-Z&jg%W+1_V#PuuHVpAyQtVtyJU`K z;w+OkWcRCm`tEZEHl$<8gqP1vA3&5pJhf4f631jT4A>|)d+l{;@xuDD?{=)3S!mJ< z8@F}he>sQmcgH5FZn;}^tNKpl_o=tCi27fv2AC1T!=SR`mm29YGOc<@rA`q}-+$qi zGV|ne8DnuOR~R9W@9&soZJ1p0wIEZitRDTSD($cmYvd7EoWYii{EEp|FUmB_c^t%ENth=z4Wa3dHCz7e0$Q7 za%GVhENcx@Ow1TyVGX36^tM0y_0m(i=AQHz;&!-7;Esqoq6+G}n@$Amo&0uwc%xfj zYS#`O$%TZDLB$ud7P336?|`S+K_l13^+k`4LyF~ zakbgLMQ?*^nhsn|kP4|=9e1Z&+s(VVIjBw}39za^+8&h$PzL=yR!||SLNtdE8^PmY zyUf{Vs1qY6YCm;w_v*dvY3TdUts(t8nAEt?vO$dsH7OFiV8ZA0M)a`M&LX-kO{H38 zF77)%?@6}SfY2r;U(TzX5a*dpyKbOI7DzZbG*rOgakEvTxwa{kJmLtb+0reG z4!6P^Luc8v65^&kR(Iij;pIzd406ky$B53|&SblS$#Yf-6eKC&t^%dE*{x{^MuUg` zbZZw?-eCLCj6lR*?Wnw`zSh|Cnu>S8K4yjfNZ`8KKh_}q}XE)7;PmFaK(75>wQsgKX?RX?Vr1zY>A3JO4 z84}RWXT*Pdoo0A(IsTK3*ClciS2cIDuX8lYJ+#yb=1uU4VXyyZnLzW#7ODv4ZAX%1 zM89-a%`GYjdDRwm5bz0Doemv@WS1mPd|)#<^o(hSB>Re3_=T6Cf(g;7LD=2UO4x;D z|IJzHJv3$(lU~<~q_|!rf*0i`30xQlxQ>Y>2M2(Yz@K6)L3OVR=2Mp8d^ER}uc;9I z?Km9vh35A2a`SLD&gd=P(+8)EBy>p(lDW$E>htUMd4j*6X8ubt=#yDRL+W#0T*c5= z+He6dQ7cLMnZ1(KbNwX{wEU(56@3bVBmzzQEIE4g>+Z}UHck@`N8J8C+`TJjCDXt) z6Gf0*-VGrC#oT6qoBs} zn-r>KXyAf5-z6`ebEj{6$X7f&(n%e60b^sfoT_=V>NWy&M?2VGhovBCw@IYtREW`@ znUtoIR+_@9u0oKs7aO+wH(R3JjVX{nUyT-m=P7^Z&TjYgAE?Sep@K&NUSkMFz%O5c zpcJiOx($22nzqMiRo)xA%=nY4AU-i18DcgJbdJh!gLUXTNmLyIH`Jm0=(&TUQHjK> zvlc;|_%m*{q&@}08S2qposcp3xS^R3quv+P26&&c_dCfT2Xko5zg)squP%mDS<3XK z2gUn+V^|q??5t7wsIPdDjF-KF)a8oW?0FEhYk3*uV$B7+4>Y7IetEEA$|lx?1c|Tz zf>4gJDa6inJ%S4}>bjq?@qn3+Gi`l33#!!A+ncGe|5C(?eP2bV#jj!L6z?8r2-GwWb&nuHSwZoM60_QLGcXnQ{Gu2kDuD`1W$VTxm9&|amELQ z1i=@=z&ul&Nhk+BzL<_>2)xRuDOC z89cN(vJjuYR}9L7G%t)1-Ej7UNr^^m$#=fhEmsJ+Abk z0t*jaFU`2L6e?{nCBM*h=zP#gVB#Exq;n`H+g&pFbwQ0vpW~@)$7G^wwNhlZotrXS zpxeaeBK8|1!$oS>ZXe^-Z_S@!{q={x;okDm_XR20*TG6^eH7!MDe-o~MRb}7t-7Db z6?hsArno1mPo@N1K79i)11isoW(emrnRm*2mLJ9cgy-k zV;YdkN;SX^LU@s*;A9G%g%VnBERqz$2T*@VQR11PlV_fz4k%Jycu+glU(#$gBao^# z?HERTIP*z(^dP_89%!||+>+f^t+~NdA&GVLNf?vEbazOI_NNEnonRVNWH7TsQz;(U zR3Tw(-Y#dQPRoAU<45z=H@XyfOWcX=#Xq~!id76-PA96*`l&m5=E4z{T7nb*&Jg+6 zwWwTi$#mo28PLI%(pOhiYgV58BWP{BkM06@jo;S1Rd!vdrMEPL5jt&7jQ8uRWx4a0 zHso>ga7_i1>DiFL;)6Uy9VtG`Yw3eZ5rBF2&Y%wUixXGPs6Kpe=bjQ>S+hV7T6cT|v=b14_jE{4SL^Jo6Lw?0f(NKGX z!IZZw7vtKmnU7oa$0BSjDIe^7`4X^~v#R}Y#f#mXXEkYT`?eM6JK69q-h8fAr$*U2z0P!Uq+ z1UA@<@N5KNwPROW5IGz9I|J@^Zo-5)>aR}jDFe+g2CHgxmR<=blf@*(lY|~{8*(DX z+Hy8`mkn%!u~T^Ntv2yWKRWHh6+ubeU)M~C6-k)L<#uRDeoMlpIl0q|B7nhTYl-Sv zWsx>Q35sitISwAKa4m}vWW$`^?nw7#YDkbLO4Vd1ldF|JD#^Bq`Pd*MD&hFcj%#8Y zy{#~PcM4<6m}u0wE>@!b7|C=PtIU+Gc~f28a*z?(RIZa-%S$3xiEp1wbS)Kmz}DCX zwAm8R6!L+~~8q3;!%!0QFBUv1H22Lg#bls7jkvT*8^)nS2{Fv|Y7d zD;ifJ&KrSDDK4LxUpoPVKjo2|}ZoMc0xFNxSnB znOpM&JZ@dIhk*6ZE@b{@kvfvjqZLB{{y157n~}R%W+d@`>HDOJzTA&0#~GoaV7v!N zDL}s8)r35YecjFZLxIDg(k54e^B4UPEphk?4=ha8_ay3JmE@n;xb&ISh?NlBMZwtV zHv8{#!@u<3ZoX!j0u4#<=wpS)tk$Q;TSi9Kiey52w~?&x|Hslbuw}w^>uR!Xo0DzZ zwr#s6O_Ocgwr$(SlWm^f?>hT8ti5z&RTbGO#?=Al>pXVH8!HC_W7zBo z8j$BF)ldhl0FoT5{hVI&f(5^F{vHC%Qq(BZ=2{PJveB@P6!U*E*myy~d#taueaZwP z3t*p3D#0`p-g3GwFsoR_tdus{f&BUvW!N~9+jJMPQRdv$`Osw2$epLf?Qf{5l1!~@ zzXajJT{jx6qp*CTA6GiPM}kaxE8dRZ0w|n-Akop5^E}QJeGc2ADub=;aI*eY4=2Re z$->G4rbp(}SVqDXz#dYLKcT5`_8~q#yE+Ah?4T1t;u1L@Vqw`Jct8 z!gIeq1^=%tl=uZ1T0`h^8v$SUqcNZ)BuP4U0f|!5zx5`(cGiVzj1{#$PehGnQkk7i z^ZI>Rz_T4v8AdJXawgb)D-u_whsZ*t{8B2zM6hit9;7(9i;o5}Yn>!DvTsBBv(GC_ z#RePuNf7S8%-(`Aoc--|`Rt7=2;uEKj-O$-^f_6dlzW3F8#tJ-+UTLmd5<|PwKM|f zu201L%Kd>WxJlTXWVZYROI+oED7hEVe^XI}r9tTrnX+Bk!91)g!AgpbP1|O{dMpjX zUfi?)3;CU~jp>Gy?|oqL(K8kJdN#rOR5y3Q&cmBHM9N|rXcH?+YG zoi3=2LB!mQi26A|Uu_9{?I(Z5lT0-WAyJv-az43C_+L@}-;!CCQs`jB=kamvGR57k zqKw#Hzvq@8N{l)$OoKrvHV``16O@1=HdqM$Fe*I#4gTZ@{THrEA~N+*4JVXT+cz0y zVrK}hrL}PDxXZHOlx>A1V9!R}n?5M&xL+;<=z8=HOl>ahB5K$z5HjtK^-3lkxVv!s zoxC0=Md_&NjND|UknXK_2LL}LRtDxhRGWqHC*p=}Lbvd7+u_C2W>!-#@*d@_pRFE1 ztAE`25L1O(Uzpqby~d;&@yc3;yF;N(Ui|AZ{DO$HMl#<@a|^05BQL)%bhY#J9;X7U zH|ML6B{em{_EIf0Om{&mfDJ(SU6dO;U{n}cXu^aXz>o|9D~)NSMD*tVQLk+lHBoo` zxxjgvFS=U@%!1CKN8Y>$KZDYI+nivesR* zzFA`y{{3CO{f_Xb>hSStN9XN({3|)`o6Q6#)UW(*g0pC?QW7$mfMR*zmWzm~j)r+T zuP=%}*##oO9|1qm2VtjYR8s2ix>4p0MNXUjWfn$8$_!(b>Q1{$($X3d8p9?s9sKxr z0cr=EtkabMg`Eb!8pQmdKzsbnN(G#|1x=*WJ{0YX-;svu1DOMUJ;_A1&0L(V)Th+ zmEz0z=f7<-p~ipPWW60G#}Th-`tXk8_^9O3T7oQM$XZ!(V>WZ=gSpQ1rLZEPc!U{=h0XDw!h-nwU|u{ zYttTm_sKc$#3ZBma$Tga=*TRe`E^SpRE14_nS=KLnt64yS! z|FGVP$=am%v;Gu`1TrpnC1zXq_;(C-M&yi;q%51e+a#evJZ06%TY6w#EWVg(6`HfS z=6CBQvN|KBX8mbt>`#lxcAkT0ohj6HE7|p#%*7U$i;(F4_(L+lNtpla(Dwdf>C`jM z63-HEwTqqXy_^9hCNT(^?yZBByhsbRAa8~1v~wVXH2J5KS<#twClWBepJkv~Z=v+l z*ct`y5tpbdOV$=11bNSa5kc}V_f5Hg>!U^f=GqiVgggWiQrM5rogQ#aP(13z5Gwgd zKe+N6D=s(uIxxIQJ0E&%X+Fk{$YZ&zkl5#Y*A=WAb}sS*(IqXX;ZXY1z>i_%k)dZe z&4p3Fg+)=|!lzS$Q0GTptdD;_w6V0R@tU$QgF_W{$ zpK;0?zh#(SEY?_MFu&iV!pvQCu1^&vspxsN{uZK#t}s*5Ad|U6*x7bcjW=T7zKOFE$dBI z2|!zL;|V&}0-J%LN_c!UCUSQ1jUkXdQ^H#IO;o8(KQ8^|E4RLgZJa3i8yKiSYJ#`w zl5Xi~iS7~zXp2#`5WiD zx}ThOdV@%;TP*;A*Nfchq-c%YNvv=xbvwpo-iMgr5;5Iz+^ zlR&#J&;o<;WMzHJj5LxymF?-$!}WJae%Kyib(wAFP8lJppv61fCBTd@7$Uw;@mNlJ zdT&qF`?Pgp5BEFG9;WdXFw9m}iQBj7?VNF;oDdsM+s0_}PYWL+6Dg8T{$}NGf6E3_ zzEK~K9ilP-D0lfQe)T1vMGLJVG~_iUM9uE=Kaktgg`NdO+OpMiI8Gtl_{|2F&v-B4ERCc zSK@qWB%Q(Jusl$E+5wkq)yKTtlv5k`acr#gv(a5e@FxWDbAFs8{GH^^E`}mPxO*A& z)-x4AqF$81hhQ!VHgCSjJB;G6yOWbP*~ z`tOY!>WR`|u=zMFxCxVf5#Q2gHKUs;Dd_c~JQr5Vg`k9(`GUm3LBW6O;E)v{_$*)y zmC6NIZKftVm9>ze`_llHQM>jXH?h$fYNv24hQB)p^tMsG&@Z%T<4wZ^H5I7xdfizC zp%D4@VWZOi3K}g6&lRqb!Outm^>m}HKNmo@orp6v~028j(?EYD| zP$P$h6#DS(Hdp0we9TgZDWmS6H-2naMe8zCD?(sPi?bdk3mQdM4ihVus2$r%6_-Yy z0$cYk#8Wny1tJo5#p>B48?evx1`XNlw8nvV+yG8kmnh9PEN1eYz0c*sP-(ti!zgz> zuPzF($5$iaUWco??DuPla!7us7LVX8xNo`$!BP@$S`j!Z*?59(E;;>xPK#8<-`@RL zvyZ+6hlH2f%tzo(_@%RCCG2J2?wVY*)sFcts_J95j%&#bcHdI1WF(8~t$>A^DtV!) zGq@@Qk}lML_2|}>{1N5M+MqhpU=hifx^}mQmPb;LbMh5RtoN}qV8WUYA;zP~(3|*I zV1iJ<4H!g}2%VgltO$CJmp+lzw^+%sBB9>?Zu=0ktVd0*VB}&HWF;Gcw~sF_;nyVw z>Q1(9*`uBEx_(cmpIh0d5^&!M*F@MM@r6G&;M%yhJ6s3hs428jb7b2`F=%w`1zEgN z7+VW($DLU4P@19V-+RtudrLdX+a^jYOHRJ37LM>iuND=#k!JtLCo*RuTtuNdyP(dMBxPv6=HgJeU-H`N-MT8dI+ef^Z2NH) z=Z{J6%3UB{3BWc-nr?lfB&GZ{emonATT)OQY{EK9Iv7=lgf2O?OP=0Xp+omUFP}Ip zShjgy0r`;=T#_>O>vx0AIBVX(ArHk&lZlofz99QV(54LAD*tTY{9gc{|0~x&Ebbri zHT0BlZSMsW2Hw|ndk&8u{^lb`{^ocY>!e-{H~~J@(Cn$q6{mm+oIc~?FTh7oM(tLd zHwpA#n|=2eR1*)OcY;R9bU5Qb#}U6hR4jZ=eGD-w3dFKcH-dU4|7CayMCG1pv*#g> zkCh~Z5Sm%Jy*FyeWmZNp&O;VYjl6KH*tc_MoUS1teXBcka3*!9$Iaw)-uhZxbCoAc zk_wJ0>RASH?0f2fW`|j9^?BPwnkDp(n5Ewim`x#6_+6)jA*Qe~*$?vjUH2*5MdRqd zEf|+TvII+FJSxEdDD_ybtz3(b6sfxnwj%o7&2X0dpnHU0U@;_S4$g!~$X^>(McK2@ zkk&0pRW*5nG_FOf`ab>ginOobQR7CM5p6+O@+Ax2ufygf-8kun=p z+-jJ2NHQWmb91;HTPzKVu->(bVEyRUZpah*&)pD*`XRY+&_}iVxs|cHg|C^d6x;=B zYGr$i7p_=$SQFLYTZ#&^Ja#3(L&jUhC*!;n{Q<{bYgKL3$9g;>gfQsS!~uQzWt)UD z^2>w$Y6WCMISyyHrp5veJuC7&eR^&8mRASw`tD~_D8HyBUwuYWA4r;UA46L=-zKCS zb(HhJayS$-S#k(tgXBs}MJm$U@T_{n$(laev{=E-J0ObOXC$Z7R2Z<~SM#p#?h&?A zv+(G5AD$ygVn|MG8K;(2Ze@wKAj&r6XITKn@$Ps>seMXdv~^sV9I-u`6Pa_B9;p-E z=Flu@NExx^KDLNOcSsS^N}b0dab76vz7c8BTL1a@{r`O8fI|WvWS*yC;f4X-`6X|4 ztKWIv6S*V_W~*bD5K-AII(}9{><7$Aa`#0`$QG9)5u1m2{BfA9;3DZ!mpKmrD zzv=Wg$yhKpO;`FyinkgC#vLxIWt{C_sR2^Iu_P&k)6`qcJ%1_UXmbGAB)NE;lWJ}t zBVe&S87}d<>U$m(?+;mE%(idG_QOZSLpX@(w}qb1(C0N;qJkI@M*)d#3Z2R)d8(Ra z$GBnOQmlMcJdt*GeMN79_X<&F0$5Dn8a9)=$~2T@uvz&G6=JvyJ`nxs)wvK994K$j zcS5KGm%EsHfW}I%bovv%@ka7%*zyQc?Kx^fE1ovLxjk&TYUacKNWpRo>Sq_@^tw&O z2V3-GHGwM({)|N+5;e7=e877c>(WK|BIl~k0q;c=PnrpmLB%E_ZeLA@*)}JKEV1EN z3K6<4{ZWsjwgichC1Udw#`SY{%xS$t@h#ROY7s+QR6No+>f72;@V35psBSM&m*Jfb9W(zAS9nX2x@x1VP*cOafmWg9U@vpa9M-$+!O zJnLBKF)XlW#W%vX5{vUy2HUfm)Vd>)n)8hAlEm9rjH`H^EbGYy>X9;n%N5p{bH1CK z=4a0QS^+82GB~k<^dTV=5+U~pH}V1nSuEvqG+-|$`Q&Au_`S#kGSd|M-uY<2XVTxY z`C*87cufR)>IhVcxro{J?TAUKJQE}@Z~+MJTB2c@$fLlA-?Ty6)p@+_y8Vu?$#e#L zhX5wM(NAf$Uq zbNymTg_0f6VHxD>klwB zX3c+LJ0es&d%>a%^LqQVGyL&VQ{|~0nO<~^5*2g%rc$w4Q#Du>>>pN{lz@@gPC+z6 zHjpa>f5Xoh+6^_a9Ji~s7dp-)H62OJ(YjwFH=mtL1d*Fq*28jC{4&BFoE|G7{Y^dk zXu~Jb={p*`|FT18hNr&cR!fFfX_|sx6w=2xYAu{j``iuH3N>&Nh)IQu<4DC_bDk8 z{O4!Lf3kGv(`ciKf7C=F3>wPoj&Az<0 z)4V)|X|>#k732^nLDMfB_g4gjJHj!i)_Ad_M}Fa;O!xLiiVzZ$0+iN5#!Dac(};8J zt={bB+f;%Lgs!0}w}&=4$&R_=VhedTZL!M-Cpus@FagS873WkX0vp2#XfDw$RA9pi zdB*+co0)WRI*_T*B8^4PvD}5+?+)7wqnYZeoa~d%-)eI+Ezukfjm% z^PH`8RotL~^hCyz_&TrS6fgI*EgzY9D>SXC8CfMD?m_3}q$HfEYSZs>yFHl?g2sD0 z!Kt3_Yta7f>NuNV`o`0z@k#KgWO%^u;dkdCwo!UxcO`e z{KNB|Ebn1*f1Tqv#0?t`=F)uU$*;tOOy^Xd)grZ2zMQf3a#3c zNE`Ucx4sj_)F`dDK=s}E?Qf}eh(MHB8M)4uvFY^3UBnCfIj7rQTRZ5>!n8r8 zZsN%kMkmw0FSzuUQoXMjZr?us&RJa3_RDGKS-5Q<08+h$^=Yynq1tJTriZ=gMuE*6 zYhf{Ejj%)BEo{dCLy1oWJfJf7GKQJPjAu(w&AcPZQLC(=4V>I+SDMGCY*ZZ*Svp%) zNsDC-CO+IkTZD#bxyfsx$z9i!M-tIGN}@w9?o_pGUTn5Bt-gM}!d9icjINBA0SwK- zqeV2@DZZ%A=3Cs6xCrZ^Bv77e10$9KAFLuQ7~Bug*O%_{ZL1ky`UfJWBft0m)7*bM z>fALdD-4{kuPw9JgWGCq>E-Kd#(V89yB&!iPe^43G5)XJ!`y+l2p4~M3ejLpT=}zZ zs_zs$e1t$UcxL7b={tH8fJUiF>a-oH6gpMRK2H{v>@({FY5IJY!lQP!# zk6#C|iS{q@%<#c;9>)rYktDZj0mN_LPOi@s+kLI)D^JZF^$+)N zMpL*E?jRNlkx!XoPfMG==cHzgiLNy;v|?8?RZkces}~GmUE&p&YpG9fwIPmOc9`ar z%)^Kw7WG`e44Jpkl`u%Ws)_WrzS_*sgg+5ROCFQav0X!Csw~U;i*0V{BZ%2zwxeiv zHzs}KirIO`w2QkJiCfNnURwLNc%ydm0H3G>wygXJuoUsq*0Yyi%J&rreT#K;R^YNs ze+fzC`=FH+Z)V;M&6c%0fUQf2%DP9*{7m(OZgyBo;v<*WYnV?+^>LkcZ87BO<+c}7 zO|A_8ERwOjsMuz41Y?D~J@^nXN|AI-^XSuxu6(^KT_ z?Q(17ff7F&%_Z~WOxp9YE~QR*ShUP2jYun_4y#mA)TU84sZB-;7OX<)PY#AK=ya&FF`CjbnZudYy!va>+Qk@!{ zaBP{@nZ~Ak&1^iZWeXD{JPuL4`cJXwf?UW`L(8B2>il|IZIq34et5hlOYg;4_szK7 zv=`z3)KtOoz6+hiPp1jdfu$j0dVVoW9ZtL5tsQf< z)gkI3j%DP1WNeC*3e2sY*HGm+2s?3Y3Y6)6E=_Z0lyMbu%D)oU8eJHwXX6q0IEF?m zeEp9EDM~|-L>>L(U zq(Ebb;;wKtbEU}EZj{pBb+Z|X+GhR(hl0Y6gRV0J`W=lm{ul^Xs&Mpv0L29W_83~~ zwFkc!PR!8Wqi5G>MkgwYnEDqrJiP;! zX%@s6A$5xn#%)Ue3vRxHoLsmfH7&Q@+7=@lD8_Yg4 z>%2W$Uy23_GZ}XQ9}Uzvw<>)G|CfBR8Jy1$6WEZ%3D!9T!u1nITL~qV zZO=%r>f3px*L{W8>KJ&h?+|Ne3}Qi^iOqJ8pL$B1Wv9R*)RFU7io=^AL-q)N*3h+x zJAIT(PhjJ->Hx2Gy#WN7uiOkY6}$pLZGzP!yW!&Q9P1w{iDijt`3b0(54^z9a!Yf* zfR64xBo!wPU#U9yctVhSp=+upFms$E_cte-e{ZRBSo_uZT7_G(&rOsZg_0PU``*GB)o^4hYr%0&$8 zqj_ndg8$K(Sz42Xw^lO`6COxt{chpprrRgTCLZuVy~@(~um1j^cR%6kfP)LZAZ)0R zNzcdMd2j0Xw%?RcnG^Y%x!-=pud64%vDZXi%A(rM^^eD;OOw3xC{K-Ws`aT4b7Pvq zS98pyK6ei4aVu-6nks~z`1sDzOuYl^3E7FRfhR56jKcyakL(d!b&)4Ogw&-$ zmXeT_MLqXHWyEl|sYS&iHastnaU1SG48eS+9{3l3B+z~|66vt{>Sx)hZRK_|Pb-%Q zBO(6$4y_Mr$t*`gfg3!=S28B+3Ns8lZ4y)r??$$`3xB+gRjRvMGjI--=$jO=SNv|( zISf9-QR1=idE^_G8E6wwim`JyC02BLL5|$HPafT(G+eLp<&5-|O0D?6{(orHJ5R_266tua4 z@lXPgYC9X|s*&MLf|X7mfjIh(icgQEi z`W6j&m4=&%f+CFpmo8fW;P9E7Reh{SV4f#ruvQCI^qtS3ffd%M`J^1t}W)~J*f+i+FRzD6c#&O|BYv)VGcjG0TA+INsN?#llw7WR&Zt_r2`_meCdVX zJq-TG&4&QS*7%7*Jn#juJWBP~=W{*plI=?`$DFE#%YDge=5M4Eq~B17Z>F{fVD!sS(9Kfl~eE)-EY=?mUTK7iAqj*)QwaQOU69R`$b;Fyp8 zAk2PeW%L=}URD);X{y28$^=;QV5DrsuC>wT(vy6{1(aTqP{a9#>99*I1RjDiaml(9 zSCfjq2?ZP|O1q5}bY4#X?4!f@PlT~XUhXeGn0U%BG7-c?4!$M^Bj1q-;{odqRI5<9 z+PnmeO<$_7nnaF*p*xT&RzD2!eA$RsM?~@^))7qQP3r=85vSlv42QLo_%K2d2ycI5 zI5*K{v|Q5UI~g1>?x7Y84O8b`;zHa3R!$awi8~1IV>^k1G~x8B&T?=Xa_*d<(iqo55H*cH$wkYS!%C@crZ%oHcSTa6!A6s#VjOCH0Rkow|LfZJ`2t8Aq4 zlKtx}%L>bdt$Ol8cm1=YVK@IFmu}31o4K(+5lN643w3!>D4v71@`Un4{rL43iO)V# zGsz~aS=9|Q7y1;~rcQ(a1YF_>{%y4!#=m#;;ZNU15D_TC^d^Yy!hU4RnAhKPK@M6i zt<^rZ!IC8H3Qmf2tv~L~?j+=4;D2`%(J{j^MGX63V#4T>Lx3p?@Y=VYCY}r;+XhIU zYqZ{7{x&2w>8SM0n%pr6#;c zbeh`c?jl!4g7?VgEfiPD?&J^Ia~-4xN~9E7!oVME$q*hTBUX)Yi3$S+pavOAMNt$6 z88>Dli-A)aEHgWIA`8g`3xcFpi6f&pp44N1+X&V=IXG8X_S4d@{)^(juN?Z`Xj|tB zw>Odtc(58>Wjr)(fz5=XuRY225^1C-v+L!_F_$7DCiX@M^|G%!=<`}ChDB^s@u~AM zAWX?M_KDmH&L9IG+b{04#Q_kGwPyL9;ei*(YA0y1?>BuzA&N{if&kxpJ>v zODY5_iC0P;sU>uzl=mk{=yuKkwwzbKPl9y$rbA1c{_$yDs{?K9-&3>ZRJZkU-DW-f zf$OTy+q>Hl9gMs%RH66DpE+u1WhkVSbuuS?3?nXjiom!2m0pt6ap-gZ3I@7o6h9%k zM)z2IU9nw9mIqXnirk8{cU^Fp3<-;I|DzjWY043XNhxmy8Ty!)+2mb(OC_+l1FXx#@;16RM|V9n&h~NM2n-OipW4= zh+guin?qCU%mx;R5m1ZRnGK;Ru9eHkQ@X?qWz0Nng0v5({#g>ScNk9LMhUnA^fk|V zG1;4`#e-7>%?$y{VCusBO)Y@d`WS7V`O@P-jH)ELwJqkr1;%LCf+{aBucs)F<$)9~ z?fYo*;zBFq>48u6hi&cLmEE&uXI3uigJo3*uwFzE0RwPE@T(FFCJ7E;;?@7i3%d4~ z)f9e9i@Pbs`qyu&k}r|4olIxdslds<*V>jQKQevv11nSwF|rWq>L|!0 zKYEnwl1UnslYfoE{oW_mc%un5f;j4Ql%mvRZhN2z1SD6WF{tUn?g<=vYUs*7qn*rj zzI072tzLO``}mjFThUPn`mP^G=_Zj{6)qwjfwmKN*h-8RgWswk5vG}f&v@*O8_6~r z|2lLEGnr6#*NXr~aCE3Bg@`b??h;(qhELz<@_)cj$=y4HmbvID8!1_gofynHF)L|LKgmL&e#I3tv9Xi_X4 zO*ODtZlpprCaFp>qDo^1-+TqOrqZCKsl%M3DwNN(R31Vv>$~or-OkW??50J-^0JM0 zDPHvge^IObFL%{KoE1jbqM$wUp1Y!tiLr*)&GE~rp14St-yG$x#gA`;8?Pko1spdP z&%%5ZT@8Grj1(o40IPj?HQ2`+T|l@L@s}SW3IV;hI#O{HT%uS>;$j?a2`cH+PzrXHC16NFDA$e$!=4B#Y`aZFX^Ll6R27`ldfV|ryMmIZm)Ym>Y6WtSew1HTnz7!3zolW2A2$$(B4M`&y6 zE!I_kc`!&V2=g+<7n^)Fv2puVq|3@G{tS?0GZY}u3lSA+C6U;UTF5{pB_DNKo6pY9 zdX}M;EG6B!9};ijqCL3P>Q50P=Xs(ph!fo5kk$3b*0gX((u#QkK#fSJaN zTE|liijQF5WzOVwe;JB-137s2R`o<`@u7rhgsHrv!7i_?mkw2A#3&&|pxiiJs zwq~$q0uo&#j%k#AxQb2g)6)xk4Laz9ELife@9;I2e_(%Zbu zUopwUvDC*x1jN`N3uJkWoeG8z3QK@&@sD?B`&`;^>jn=}s1 z;Zoi(u+`a}iJga{{kZxw^_%^iz%wV{tP_yp!{@y=Mt9?tQuH00hOmuCpYUr$+7-o1 zNgE@)$I^2)cu#N{WutsxERg)yT@!!CUgjE+K)X1P=XIJBE*MeoY`?(`_lR%d*{CmA2#6^pArM@}`Sf}t`0 z06KCv&@ZHjeklMy@SevLJ-h`mgCPja*n%b`%(^?E z<7jxOfsdMVw{U8Hw}MKOFoXVVqe^+YyYN4%EBVg_4}-Z$dY&(zTb*g1TUYBU`%gYk zHTfNY{c#bss=cfdr5i=1%0TW|G7&mDe}f2#y&?YTJoWO$Jgo0Hnv^Y?eGZ@qaJ4Qh z>?P+(iW;Zk>Br&q8%ihkpV1d*B{Ji|m-F+aLrviUl}NnE+PN3r9OD`~o^n3Z{@iG5 zQ$LidBTy*SLed&xB>@>ld!QJd{NuAMQ$r61HRooV%|8hd0}6ar_7)PlAsnAaP-=4& zze@QLGGGnbd0-xs{cM--kSl$+RXTdMB@x*X9J`fL8q+Sqhh)Q0_|QHZc-4n_5ct@^ z+Zjgb(*v%=!*#4w$W2VZiiM)TMqrX`tDpEOTQCjJ(g3aCDC2XLYf?L3VG(v=3cT-m z`dbURcH279?GWoER~ZT^6)LJj%#=1UC8-FMDyIS})`^n8{E$=aT`NC(b|-v2#9`yq zvmi8M2^r!D=jmPbb>`b50{q^N;`m5!vKWeFqsU)5noEAXEBbKLWzLwwW(tf=&7gLA zU6hW7!3YJgz61V??}_RZ)5eq@64oLu<#|zC(rBqA?Mn!?x+s4B`r?(${ygf5i z_Y&9B5W_rwVM14#`@bM5zTTMF1Rp( zn%MaJ*~Ul3XJ|;O&_Z6eY6m4yz(Am&OB&P!$pXy@j7hrxv~#gJrIq~tn$$rEv?A)!6W6I zOF8IIGLKHJ)^*2;G}+aK<1Pm>?O3Q2S$VsxB>Zo5{xJms6lhr3q1K!qUoU_0>rqcRB-80e!TGCPabTf*a`NgEnuW` zRFBTHs6J_{V_noMUR&~EHPPd`NDwB@3j~kxA+u0UtVjrm%2uG z*W&zf=Z3heQHeJ9M`^)LC5r{Mt$$#6VFLEnarmau0>9pGAsCN)sF;jh^Kh|CxR^~593a-*e zDkziJF)%#0at=j^68)S!Fa)Sk_FSo|DmxhPS@;o3KQW4;LXdA(cw>)8a+=NCqH?w@ z)8ki*O&ecBuNryh&>tbBSjQfhc=Z?DI`?f8*?HvlrFL1@zs;{34g?vD5)=M=7 zMk@xFBtHx>&Y9r%EfoLd8oU8KeI{qq{im1{21J_+4+ZA=GK{M~`vHPI_9FGB@;T3hE}sRdPY?egayI(%{(M*l16yZ=+8{MaCeV`P2n zwH|nmXf4L;$yfPVB|Lvt`!P^g8DcVjnjyB69(eGlz2Kb*G1`D2bGzt- zV>E*6d+Mq2YtBc<+Viqofro@odv3(^CJz$h59*H^U`(J2tL$7B$m@WXks`16b`t>K zUHt}sUL&|TceNIOis^cDUctrE;kn-0)M(enz;q=?%+yHax6hWmtA2)g{{6(Y_}uVY z`Z~SAjpGPTrSxPwy8)+n-vLeY@@Dy~ljb@g`vs^$XC3B}t1Dd>)47^SJqvAe3C9ZUt1g%I-)uoPdB#rrc!GqC)!RkXk86VM z3+Kshkog0yKh+DD&Lpn;o4DR>HwH;8tnq^uTr1csEHvz5z5xB^n5qHI*p<_pHR=O) zKv@zz2)-PfFTRN5mIKVRKVB*BuJBRL&Zvdz4-C0ha28N9o zf{X@6tzJSC7=<$mNiAKpMY`LNB;cdU)i?S~mLCmowtdT@65J5aYt%HY24COzr==tz-Dj$K%T9D{@6Y=l5G6KF2;4M}BpQHRzdp2qni#K=VdBt8zD$Mx zUe1d6X@wTlmbFuGE|prVZ)GYbNdqlY{o}r4ZkfqI$~apt6om*t84AyCNC$9`{hp(0|dj#nK|=m$EtGx(zCr)pds^m4u_dhpN+p zP(GV+!xn46&UZo$P5R%&BAgzuRd3TPV2b@=hRMovT+YEO1DeyHR-DdBmaQ)~qhpS9 z;wQF<`*_8q^XSKd(A!L8v|y%mxXJ%sfrg~iKl2Tm>}};X>?asE%`u0!*&2m0vMY|E z1}ktkrg5~MsiE@{)W7cw!Fq0eH9S?W6gy8>mWA>C^+l6H7P8;oZKAvZLJqe55+R;< z71w=Jg$CY8z_*;!V%zs0IG{DrXWN0XEjJSES~5=6Z!>W>&T3fnC5isTS#AOGjhWF6 zHToN~9G2nxvLc9+>hpbY^i`-=^S z9(E3d>Di1mbQ4?Yo-8JQ45y;hPsF?yQ62kkjr2T1@X_$sKA`DZWerK#Ue%IZ*bv6?V<4Y&l+5iT-gk$s8&dAoZv)BI{YQL0Kn1#R_61&JgqsWte^UXBn} zUsIVv$%N?K2Q&BvLZMj&Y<%$U%HkcP@sd*pRL+JL;+P9HBCM%6FPdfwFtOWo5tdClJjM_RoE!=&dp@&J-7 zaGb(=M9HY{33;wY8IvM~- z-UU-mK$$RvkwCV`2(iwltq%5#pVgU;ytR4cvNS|2VcF`F0R6M)2nJSG(aFuIGXDn$;&uV)^uL6N0_y*^+jL{+?dx zXl5eI*u#G6(PpRm>$&}kdqx1j-6THUMuUH}03GU-$@9+kIOala5GgvJ@_hZFvE$R?<1nYnZb@NT zW`RxyIgA0*T~adKOrd4yD){<{0m}DyEA-L`iDtF|$|PTObq7;!h}=S?lzz|9r69TH z3jX#x24F_}n)tOXBc6!0v8t+ zom@WaDV`}^j_gjx)vfXxG?HlfsILGS{TEQYOz2p=M88PtML81^(oOQkJVd0-uUs-j z9U-J_nFVG?;KB?-mEcjz4+^5BzQaMWu{&^nwUW1PaJj^_rgX+VDA+BCJMVT+x8a?; z%dQZxWyde2xXW3Myl*?YC`%sx6*~>n@_AXg-9+P!SV^IwjmeI5Nf^RnB$s-~e-c4t zW__4Q9WIfUoZxX_TER%Y$ve?f8ox(LcPL{SMa-57P2vOdopBN(#V8-Yfb<7uN$aHV z9{;)2$jO`%3&bNe5UihUp(PAag`csS;F}lv491S#3%d@6=DrRQQc69%#Lp{C+DD68!c z-xq*;UBNeXv5H$7Q?X6?czIssWOp5Ko5wdldT(@)ZT>jo2xrkr=T>MZZ<^GrhSkq> z=Sf;joLt~Xn&+=H(M$FlRlb;dWRSk&p)qo8@3_mgudhW0HcQzpM;RCg=9gCm1hPG( z%9hmRA?2A^+p-34Oj*aHaAd|-+jqeZyP%BN<N&{zL49!l2a^{IqEhvo-c|sjIrfhv*}p8_<=YL) z+o-6is33Zh4K(vd!FNp*U_ay(!Vs5Bi)ycRM&f86CWaQk$LxIK-u6MjbzkX=nP%T5?QH z;ogtD!iWhv4xyBZ%?IUZo&2AY+tKzxVYU9@&OuGj z+U%i#@SyY`W4Gk;$?uyANki27O+Cq(cfd>*Ciwd(t!pzXKIT^E9_)S5UuW=VKhR5? zR~NUM8cJNu+e9%|HnqSl6qEwYjApz1jwZMbf{6AXHDhExaZ_R0)paO23fgYrb3V;W zx4qN{?kQeh!MOX3Z8SR7=JaEQ^@lfM!8GP+fwyxp#u>*>hf51RXAcX`q%$hLR8QA* zl9G=8@Su$ucSM?oTqZtnZHeJGPtrz5|8*q8`}?qbsTfyE1! z!mBT-=yzC-%!BqjWDG-=??u(lO?I2e4;1_$I)@XMwvxLqnEnsJs5LQ#i}YC&q1B zJgQqiq>voP1=`9U`tQR?lWJygt?bAJr%f|^pPZZZd3^BQn8%%MkdPq4f-)?79EWvI zXv{+P)arl9@TYnFAG2)LB36nNvVZy8u61q%Ye~A}{oZ}1>qAuPpC}}gVD#0(;r?5* zx*{YTIZqgkQV;wPJqYpsK`~KCqHOQu#<#fnCNAjt?&z+v=PkKobaO(~pORIMXI&XT zAc0xhQ-8sZ#%3we^7B9PoL?}~vjSfuCHEIGSNB12hQVoUbM%MvzPW#^;|?c*DszJ$n~f zswPHn%0O_P1hKc>d(9?vF9L^OWwbUKMXEvNXedTd)q)&KP=ddIkzoryuxA8a#I>C=t_CSdO(z~)p^&xS(yr_k6F-g3td~B8FpjqUR_E4A|&3* z>j>IkSANU^zRUuY*6@p7=+8X%uz16TED#_K;}A`Ov^ryiF{*Z@M9ghrKf`Qq9{F0F z`LRUppv6)}eooF9rq$r#nd4zos4Wgns$N3ZJ?o4uc>hT0HZWl7<^gNi;zG-P5k1R0 z-4knG@W0_lwmoo3liZc|szi+LdLq?ct!K!Wujzx#Q36jA4&J?i_@jNZD%bqt8Fd10lC_esYzs{Ns2pN8pi|5 zd90L6qH?q|Z}yu1{=akF%U%7sdWrTo4Ai0h^{Xe!bL;F)?`7ed+WpM0vGItpk0FUF zk3R#1ibxto7*MUwF(5lST7mjPbF_ijE?dM#AQhrilsA z^zEY*kfzB<HY>TpzlrzJQdsA*Yn*E2`-6Y`>y;4Y06JMiuQ}td%wlS~; zh$`RO_4d)iwi9sCPRd<)dskD%PDuvedy`$DL!t`X_D;j7SQ6so28#Cm&#OE~?R3^5 zWM}%T96;**i2UY%yOP={>)xq|eDr!{oL?i@G*AQ6PFHZ9Qrf%q6~i1KPw;+b;#gOae^9HmzruMP6R-1(vsf{ zpiG(v7L*#oCD~L&PP!=*d?sP4FK)%DgYh5!c@n4fXdv+%*3C&Y_1w7Y&*J?c#fr&!I6gyT znPcn?5GTB`==U_3uBh)D5PYOUD+z{GYC9MS^=$FiRvY|ssF2(mhNme8A>#ijPc{t=ExPi$i7=+N{;1G@t#!MolpIROd5>af!XNC&| zDhjEP(kY>COW=$g-x}{6u1JK#bH!sz0)Ym6&&_%Y#;E&)wqu6n`5x#siZ7;U-xtHr zyPcZPVK)j|lAN|qvd}3x8ig;_r}JCmpqJ6Kq@W8iHGwnqdGcuXpWXGvgMpIFFKgOj zyT$eWE!=;LAR%1#n=l~ae?eve#-!L|XjkTpiAM58EzR)Ga{I>^Yn{>Pd6(dlHBd~w zPLkaEzaq-MXRX-Oy8h#JAg)6;rB$~AB~-09i#_s1H!A9!+QmFV?N`p)wKEP}{sfod z97-4;NX!hB$|+66d%55I=V3?D^2SXcW9*qY z8K~CN59C{w$;m1{%+Pcm)|Cfa5Rm4RAe5nWbjIP4rg3(|9AvYWo?t62wax^o0u|Se zj&)GgocFgFTMY2$2C~VmCQyBsdXfMx<#F!))fh}QhYWWQ`ku3A8tV6EV(}Xhm>Rn$ zEPXd#J@LM=poNvkLXvorq-P>!7%Lg8fWm}3I{Z2+$g^KxswE)G#HmZF zCPezt{-@dhgW8k_NHNt-P*1su}bW2cjZD`?n7cqx_lc$i1 zOEe53way(;ZYy>Y=X0xFrmay=QTgoi!2DIKiFLQB-oogG&3*Jh0~|smV2r{#R08bI zea?d8Dz0g5Hi%x3K$KfWvjzCW#oBMrz=!?%FGhg~)AWv&CP`B*zO#y7F1~E^ za#kgzIG!lr?5ffyfA!wtr!hU<>J^LW2QB}{rXvl?Zq803W;0Soij;foA6k0{M-8{1 zf`iMQn@b6eT9hPC%AiA%bA2&w^~3;(!I~v-W8i8o_FgXI5!oJarq001IZH@gz$R2| zhK>Kj<$&F#pTTP>{Wf#Ahw7ZUH%Bmc0%kBH0q(8=XXA}+egCS~U zV=8h$WPw~@Y3e6ks(J29ttzJ?&p<~bFWdeTnz>3L0f}P~Hl!7oA;XJCFE3HFpaqhZ z`V==C$Dmpp71vOY!9wn?o&5)Xdgjj=QHgP>$B9m884v$2G5`Po-~k?3ui=2%pmZo9 zh33D%#Ou{->f=pbKT|zq``vr}cXEoVyJg14;>d3%T14x(oSIVIyq`u-2^<7?rB}-R zm0Pnaq>7R3FDmQ(e{mB*NES7m43p8jsvEknVNpS&SfgGg(m6}`N3R!CvAum!+|J|g z|C;Z87P3k3zG7gi9}-Y`?VASSq?~RknWUHup4)L#eF9tnjxW~Bqw>GYzwKgh+|jYB zU}KJa<`r%}{N)mytzOks`g_u+b*O))ZL3{p*byJn<0i=Fd<1jwIrsI_AOE>Rt&N?O zvHoGuI%@(9PAd`F^z0WD&v$6HOnUjtxhLxTA_b!QFG;DjXJCGIWgJp6#~IY*W6_mn zU`?5ekV|!hlT1wJ{mCZ5z=gSf;Uo60jLy&;|C>b(@#B9=sL(}iu~VO$`=j&FoPrNI ze$J!+_bn0|CE${jGFK~-nF@6VbykSkbJ|}@=j}gEp7PbToUlrC#|bwuu}L?BhEu~`FZNno^eSgF7 zA6O(oS%$J^LrhbhpQC>xh}a!ap(uyz)@VtDSzH+a-y%$;li-phO2IV?yHJ5ynn^t0 zP>Oz*tdjyjqv{!LdVE%rDmvCoGhWQ?eGQu}a(Bg3mN!o-V>tx^Eguz#dN1{F{sKur zB7kVfP5k2n6or%)8kJ&NXMy(yXVmce>|bmAgNwTJHcSpZA7yaLQ=6p3XHjFV_S|%m zV{3Ut1m3HF^f?k1?ruGgLxNzoA&qlmeZ+N5*!@vJ!LRzcBpvY?_5|Cf(+`br&YzC_ zs&^Kd$lKd^!G9;VZ7;HKZq)A@?00Z*zVp|UA2%^KW7H38&(+4TDl|RVO)OSYq<0jX z9aO$kp+T|kF4p802kUe1&29Ww%5-A{^@PX0RdIIpC1CbUG(}O%L|PKlCtO&|&=%l2 zXvYf_>s;LIPMrE7TnjQv7SbhF0wWLGazuBUJ1S~F*_B}jrml&NeyDCLGad%pJj8$y z1|cLkEIr^NDsg;}ZJNA>=pY=(k;JM?Wsp$s!;rWekW^HC#uy*w2SNA_0UFq^=AhW1 zHX1aAUMqfH_s5-azcOy2t}^off7tzEs;Ih_lolB!Adyf?L@bqS=Y!zJW*ks@prn|t#Wu>dGQ_t)YyJn7ZZ;>@3K|nU0;WBlan+2m*2Za z8kauIp!fEuV%c&e!wsdjc87?`5&g^MQ^Su;ope3qVsQn!B*79yl2BerP{|TE#S$4v zO&KZ@iLzb?8!Ab8)IE5RhqJl6;iELt@Uvg6$U7JEIU9TWZb@|M`zH!?VLDrsn~Azh zvb&4z(zvtDlG8l#86QB)Sd@h!RnB9cbz2t+&VuIsQK)sJ;&c&hoi?k~!n6m>RWX!aLJEA$8%^tNdDuYm!CQN3-hc z48~s&fUK4G`yC>0xUd^ldCJds}A6o z2bp$_pXj*vAIdDy)vn!{)+`>=pjCFK%9jI{8pQHjtvxR9(>RQo9!L64@6zbX$N&HU z00#jm7_O8%T`mTpd_TPF&vmbFJbL13yqCtSZ{;#7ijiX^3isl(sJ^-8_#o%e&$q9Y znWEP>Z1{0Ib3BCfIV@Ja(A`%X$xX=zO4=mB@DvReg|_^Tr>}I>Q;@;g$FqviGaz$h z+Irc-sR{CJPG_Y^_bA^z3zct@ly5+OHc^v%<=R6^7m>#Adh<8g2e(m{2zO5qYl{iQ z2(+?A!L{y4PV3AV?=);!@qZ!ix|}o+UkO%Lq5NN?@uji#GRqyZZ=QDpA z)vH`(W};-Dh^19psMbP2x7~uW##fZ#)2u>mnUkA$MBIAIp*bdtB)GCt9k9+{b065~ zpb<(u!V_{+zSrxWPm@zZ3qSLGiO000nki&X+u_p=OVJW=3By-^>AvsqM4gd=2Ss5w zl1YP@`B#^vmry3gKq*Lc7R@f8=SU-SV)-BSZBXrNY43!kJ8@&l)2Q+h~Ocjhi zldv`h4jcesI4B%$g8R z8OfQoIXzpqh%F=z!USGD3^VolS)>wKG6@LLNJ2cSEvMt&@9F#ifmT68sS9wEKyWw9 zX8jtoXLAVwq=YEgDG7;0${)35K#&md1NaQb)bv=ce^}-Z-g9fR1sh(S467VKt)4Nf z`4f_AAlbsv-Yc?n9dnSx;Hw?**w;0;oY@~?U)}LI$*w!Ehs0t#Dmlt;Zm7|tnJUB* zKjrh>-+5`@OsjFvn*Xo*e7EcQ6a1bTVgr&EJN?(2y04pf)4V!E|4)41zx;1UL$`W5VG0dfa-hhsYEhR`8wFBfEVu{4Q7t<+Sq-7{2=ULwZ@@vIysn+=3kACIi;8 ztR7|KOLSjDVhUV+J88S^95bA&F!f;vw~mIRXItBZ^@@yEG47;f0%S7f>iW<*Ar__; zK{B+5tWL-_bfJuWT2;_tt7&3Y;lYaw>s4)IYP#+B@cm&xd-v(gsjD$Q0dv_j| zxhkF5F65}e^JIW}f)OEyAB%I{gp~{YVnZyPow+BHqZTv0HU@@s#t)V%r%XR77MARa z;;`t<=ghMO;ctS24#I%%Uh!~vKF{b0zw5Q`_04eWDTk$I-nmk+oN<(UR#nmluz%vp z6OnuGV%afC3pu_r#&Xa4%ATHsW_f>l)AevaD<>k{?Gb)m4VjdNXLo)F|*|3wR4G8qpxzQ6_!G%v6kEtjZZqiV0^B!=p7A+CZqp*%)EY3+;|QuGTW z7}be+H!D`9_0(D_5p0nFxvJh5wM;#7-;wNh_G}Yvl4pv@TY}LJ!TPn_Jl%qWigdIy zVB35CR}QDkI!aXqk069IR0rykU(MJ&boYzht5C^KKg z$k%rL+DqM6KWkrA;c#>d@zk}9JNeizpUMGG3BWO}*hH~dR#n+v$B!E3-tV{}yZVh% z7-Z6=Mw&0M!c)RQhON4FB|k|=9WlyQYk^M&me^}r=%)grVYir7j49aF8Jl>mREuoT z%_@yqQl)DTUYhMRNV0Gs149T^2a8y#q3on4|5w`p00F=O1fBl)qh^h%B454UYO3n< zpF=A0Qg`AJxq!g;#3bU0YmZ!Q$wG&2Xr@TysZ1k?2|GIiICwUn3L}KIL}Q7XNh$7? zhjc=_pb^Pg>v@xDcL0TG-dI4|q8ohi2Z)(cK}4Z(v=RvxK@h>^f(Rw0Ub9&-$j*SG zU=ZOr!W5QA84Q48%gM4a?IKWtC$iswL<7JTTT#KI;4uiMALPigX)1Eo@yZ57Q@G)y9uf;Yzi3=15jhHP1|F;_sG(? zeyI1(DrwL_B=`@h{Jn)!3hFjm*YaNOt2=eU;g(~qx8iaBFM)f?%duRcn%H|CZ>)4q z!^XeE@((gD{$gy!><8S$GQ*@xo?}S~NAF+y4anGuU!af}73zusC0|Ww?Tw4~d<(mrrPb7BYEgcv@*o2|g}rmw)k z_98+)1fn8dRb6Oiz@h>Xj;3p3J|U_GuT*Uo^z<@u;0lG9rhUl8BTW#RjdPi>V#=V2 z7*Y$tzX7Ti9SaoQ&Phkb{8i~$t%doHhIO%c){Jk_(8ao1+2*be8BOBDZd%+;nK01M z-*=7}d*4OUVU}8X_^h>*!r3WF`20!KyCT4euWmkW!NB6{Me}^Sm?K zb*8Yf122GxhjT=}rSN%5`qgAePJQ56PuOYs3O4H~WpKh|2cYp=;>!BPJ^j3_8>~c1 zI4L9}`aKar2O*D~iIvwtyU))55p@fZv^T?k3%^;}PhOR{eW3zC|qWS`Gtx#a}GimaWmVVZpy|LK^79fPws_RfiY$1`ZNP}R5`=Y?E1xo+vHfg=VXV(bp!UMtPJOmL%n-@SN!EnJuegMtAUT`q1f(kc2oOi*M@Loy_3ej zV*58hMpZB|*Ec(}PtAK5t>?+~dYU?otWfc`px3+t$$_GY%?!4*0<=ak* z<%nT`mdvXaO3C}3{Z(5z6sxx={_Qt|ZIQLe)T%F2`+WMHCY$B@=i0u#^4m^9(c^vF zXH(ia*Y?==@%YvlpW65CQL5=rRYo;f6;Fs1n!ISyE+idK+!bsOYU6gr?HR@bY!Zq~ zU2ymr5{Dk@44hF$tfIDa8YM&h_UZrt0N?=V7_W5K4Gst)e;1Nn^RI1PDoSN)>MEg1 zx`srefQ}L&ER6zfxJouuh8o>ZG?W{Ju3<^I#EpR_;oX!-P(KJF1*lIF$|(fOLTM#Q z1f7Tk=s?Pp$YH0}IFdN*Ng8*EMyO8{gClU77D zk5u-zF3}-&ca=^p<>Ei%8`eYiOqNJu%Au_dLkpoRKuN?y(w||pO|)tuefrQG%NO#N zd9hz(wF#Al_X`|Z0CfKJ?7!n$My`hisfVvE&|f5u;$cS0{SJEZy_3ExQCdayY^3^>$Ku^}c^2DLS3II6A!IioHGMPdokm<%>e;5b>4W z_qIV~f}~MP8EKw`e~wFK(_pc6TXA?x!~V>kexXv+!cC2Mqn?7GCb$p}HaOn0+8?qtf@>bgn|ivzFN;)!TOH@YT-sHq?8c`>%Cg;iuTn_jB&B4p zYAUm=ngqDPF_7!_?V8=?UzMd_LtZVm_r}^KJ545^ILi1z`kZTDG2^keS>`aDdgrc} zc4=}WkVBa;f8eU0R zo{2}G?N8<*C&us8*DJDH>O4o3&TVDWD@O?uuoYJpx#;^E?8v#uPlEW$Mz?4!CWVZ- zrEknG#WXHfgDnzixKK?LK@g@j>WBaUH~|b8ujQsFUe)94b>^?@ILKdoRb5F_EU8kd zDj96hoy0qKoh*XTAqG(;jd3~^2pTB}=fPM? zKnUeC1aleka5QAIbtpV32@NGSAw3MTR3~($Yl#j0faqyi9o>UYhm;9O>Ly;yrqli;dHlypCjseJC8_=}AjTMQu zk4B%e>DW~6(Bh|Mkw{_s_gGAOCk~Q>Aw*>5oX{N?NG}_AV>b%_g@3Cixhl?TQxiMn zp(;u3Iein8*xn&)_M&Z&bxy5Plq$4pYIWZ(qHw#tLpDtD!DBFV; z5L}x_^Q4AU8TCujG7+#9mkiLKQP`^Sk5l=jF;dkN2ODydsi-QApaj&2Ni-RSjw>@C zN6*y}AOHXW00#jQ7_W3IJrRRPaK0+fGOO>trsY{gtD+SOO5T+eu_l0qF{HB4i9pwo z%GSs5NMg5quWvvn9JmND5zF|pF^gz#?#&KCp+MXtA$N2scUNv!CArd(wY?{wj72m^ z!j4Y-0x@Qh;1h{yZBccI>UV@Q6bbC;*t#is-h*{VqF73bNEJj(0t7J>7>L41z#v3< zc^HtqJ1Vr4b=ndrXvBt{6P-hWQy^D;WSZ|28>(twcdbcVgpi$sLXGFr5im%S24vis zIhEMGBY@afX>8zJn%g%eaj?7 zOy&2PbU($?zUy(-P;TS>Gw&R7KiKu8O~($(tJXK4fY;O?r>sCx(l)YtT7FY!&vG(e znRDYF$yL2^uDsSyw;t%DCn;Jn-hA-bl0N5hde0})KK87Cb50w}`G*_W+Zl}-qbkmD{|G+B z%cml}@5)i;lDzZ(kw%-#>V1!>sl<4sJ0#;E+3_@d&WMK!irYfvLG z5_?X%{NJ?6s>{t7m3e5HD5%S+M1X|cSsnEPdUq44M20bxONrs9lbEtGvJ_sdlCwmj z5RM~&5Y+FVHrAj|;?P*dW6h8j2cz{)>6M z^Be85!dCNy_5R%ZWy)?fnY9eg_?7Ye4xI6g!RkJnjwU=aePtg$tc6}^K_{}O-lxgr zQn#DIJZC8^7nn3Jj|DsuaicH^nOZKgEb zk3m;o#w@<3kbg2YRyGU%pnv1oD|u9rKWq zhO#_=h7msyCFI`TOBd2f?%YCy?)$_*vUyy=8#wYh*p)Ow0?m@f=n37!lTk@zafGG_ zhoL(;JKj4W;9IaV8p%YAN(@OhVFb!1`jx~YHq=8Fy22%6V1dF<$h{DT1F~?DZl{xm zJ3d({rl?wXirn5}fRPVa>a#$BOEWYlZl~S!>;|vFibSDWiUWsEEfigApR4Wp-_r-%*C6W2I?m|4XoGbyf&Nu5HbHtNcD^(7Nk?YJQQfp^%M4m=AZZ zH_Ow;aIiY{{(Hu_rub$guM)~0Yv1l3Kl=uf=S~z}iCPYSCPtUoLI`F^Rk*eE^#;uj z2;suySXQP{O|iN?GYPioFJ9F4N>wh6yTw}tij&@QFJoY$B9QdUM`H3{T~TCf{Aw;l z>?*=}F)xzI5M#cV#@8}d(t}Qbtfev4A_(I(!La0AI`nO1Ze#6!tafrUzB%FTIZiK% zXpKMDBn=qc?<-ht{$iLRsF+YUPl$x{6h_-7^3*hRa5o#Fx_&I$ea)`O?!#8fEGV3> z?Aqv3+0rrX@9LRmY}+$UB;o}cb`S9y5F`#Vszh4akd%X$cxdL;KUH+8F%L;GUnDxc zU8ij(aMd!xM&iqAS14&#>^e$Rsm}O2xs|NIm4V@7*l6RH811~ko+j6+a;FiKn%U0r zPR5rKJR$<3(IFGW0|4|60UDkD{i9|2%~>p)+B&rmhxB$9U~}}GIvsV;T$4JPTdvAB z=;&Y&3%ZKvz>t)(X`yOSB068`uF)$Tfl5GdJYwi!^ewH~XZNIc)NvbGaQp4cSqy3j0!x7RyodJSy~@d1UO+&g1^sAh+ndw?dO#nV5Xy zO9Z^?8#Wgk+;W;_;}VwgFz0>u-w^;RKoMA`aFIzXmEDN5i}fsT(p%apLCY?Acprbs zi2Jp>8pR*D)Tp-&=`xVAoS2!ofJ5}mgk8~{$tepf7SVxiuG;FkzL@-l`Pcpb(q}#I4bIQ{JOm#LslEJRmv8{_|M~OQ{=nIjSCB=6 z!nEWOdx)^TIgdrm9)n_n>@4^!f^G#LFky}Vpk>%dL16G`SMF)I3Tx&*|RWbz}v>2IBf(s zZ9m#Cw`2Q|sNYX6lCz)X8L>#U9Mhj9!pjfz zotfBM8|AXIGGgnMS_;a>bo^bke#_qacf}i2Ev%48wl9{a__AguOo!g1)hdD9>IY6R# z|JW=yzBqa z*>ucZ((9VJ*D4=TRXMB(M1^9D9e71<^XB-qYI+ercIf{akag{C?jzvbhjp+rd`$YZV1{Ap2M zB_(G5=xsW?@b%%BBtGiU`8L~I_g~OcxmrtGs~NpMF1A~H(GG0;rJEH}wpgw*Fme)B zs_g1xPH2k1aM%bouIM?e5j1x{#ob$4jP?vh(OU2C8CB zVvxpaNvEJ!Q?H2m1}Y@d;W#MC^}Jk=7}^*-?~A{zNap;e!fF<>_58XzKJFQS00000 z2LT!wuXG!21_eZLuYc?M`F~zD$F`=kSL;2Jyk4hW<^C?0RWmZ|2OX1J2E|QD3W|4W zsgY6TV$H-#o^;OAXtmb?pdz>r9ZJ~nJ6=USap0ijO(iw0R!&hJ(j-aMefsGV%$Lcy zm{d#2 zI9$<$zT&m{5e%9~%sSE6NohUHl}b&+&1x=N_$@2J?{LOmC#(6)x=Id8^w}#r7?=}5 zpqPVnr}Hv;NS$`13XWAyYuSoO*xAe0KhJIMB^911>@L`|#~Z#LfAJy`@xzdihukmW zyW5V6T`oU1W99sBTzGX%y-}URS4QF`Qx&9VmIoI1yGxGoDBB{_8Y-M`{c{@c?3n`( zqD9`Xj>3=k#zd8Y2E#KQ@m1EL=2|E-u;aJR>pZL-2^t9+41H8A-EOXU>v~-NW^WJ1=$E zl8Pl!1?aG~Q>+7=)b@t@pWmXYc5cWm$Zew=ZdS<{Xl#vP6J)GKJ!o^YE?4i1D4DKiD)sB*<2%l^?WtGBzI5WJH8psz#Fa&6Uldlwh&wU_{1OCz zZV(f0z!FM{yz;o^Lgez`U?BLi`AErau&UmgM%IZ)!!O}{zDn8YVO?qVZwKzmBw4#4 z22T&Wc=X35G1E%ZU$k5ko1{G=L1X-}87m_(P8Yc0(|u0QB34jF*l*_Rzc!KyC#O=1 zUG$o$B)AgTbyI>rgHvo*E20mg=DlA;oRG=R+NrLV*x0THN%-2DBN3eSo&Zu&B$9YE z`gc@jJc7+lKC;bSDZjb)O3J|^mHcj*%h8UE=I(XDgZ!hTa=Q+A%w+3hK^1{GZdfFZ z0Da!M&-A`?vocy+$D6pskl09I>Z)fj#I%n~5*T@U53y$4({Oq9++12m=u#mr0*aV9 zR#dw01N}utYqX?}0wHESK3tKndsG&1w9Zx~6bHI=L-1De_qLVWcSz(xA;+T4v==*< z90{Phk9t?YT0;Kyw~_M`6vu~U__UWua`(pTQbUilITGFjicvQ6w55>=y!Z1-B-P{> zR8YW}_CGdR!RWvH^Q?u=oNJ8rp4I*i`O023A>@Ze_r*WP&Q3T6iLZP2qCTY^!5~#$ zIB3@055!s}aP|ys_b&bZrA#`+Dm>558!w_cpL){T4w$_7hNAus%((s|Tlv(?kGXMw zDn_xSoIaxNBV%t@H~xNE?Z=w|(rH_5wi-f_l>8(b*o*WRNJ@bs#HQqu=nzz4+|sny zbIW&r#PLR;_RAHxzfKpR-*jx|sJl06{@~6!1<)y!5`*@1b_NkL`ph~qD^Gb~XX0tM z<#yVIc#gGR&UjuIfvQ_)Z7LPIjfB*mv0UVwF{DQ>G_xq(@uB$oa4z^!7 zhIY=-G6}>5ON1u9ZQBfpH1<6bCrLd+a-{-U;!e|vW#U&6iD0LZ0Pdko(r85zlR$~o zLQt?X&-4fr4o?ww>v1Sbv8WKk;mIUfJ_Vq{RbPOhl*W;Qk^!mvk|m{PPrx0IBwfcM zc!Z-{^-n1!UdN-+VN+S*d={;|qceVBgL^-hQ3 zLvMtFiBx}LPi5N=S&?dUya|*s!4cRd$+^E@WmA%qN?V^$i!Sdy7A{r|q6-|I9d#a^ ztM}S_1UUX%PiXdW=LKcXEE&>Yxf`m*% zw?;t{$V`E%=%LJ__=+wm8C8hiCEDx9KRx#LxYP7Hg*TZfA$gBYN7|ndlmpE1)WCNg zNG^Q0H8(2*G4>U+g9q(@G0~J5ra@6*?Vl6Mr|vHX%Am)>(X zQjArEVG&5h%=b^y4fXK|^BH7&Z%se^LQB5!pFe-jGaQ3Adh|?q$_u|-YjZ@%{v7IQ z4NOV$rimpO4kzReq%pYaYBJpl9nMu_4RyxISQ2Z}slPO5Jl~=&& z9P>QFa%d;PT4K9Fj=qs@j!hS)``iSQ;Hke#*_aW0mIaozwVXAo2;WCo0@o)gW^N}S zOW^6EDh+E2ST9igrQBIWBwD{c%7w|y{Z>9FPmzF%z*kYp1SFp}#|8p=+DRyjB$mmD zB$9pB>@WJPbydCzExA?HpEHiSE*&N?Wyljf=r~s63IPK~)y$jFw=DJq|2M`j_kY!x0W-YYMt8FrBT)2%|w8-aA@b2)B>-KwJ2GRK4&t+xVRsM6*>f?++000001AqY%7_Z@?Sg5udB8B7h-?XgH zZF^PCMBiHDvIVk5j7DLFAo00bsVv`kJbs9@!?2#P{P zTM;gZNi+*O5QM0NA-@1MGxB5;6ofY2Ad|&6`+wp;SF4nL8_PI7>lgp`?YAby++D@4 z_Xm~rhe~gU_ErG|7bm8I2la27s~lK8J+2*fUp7QveE*?jUhvMQ)`ScQkr0G{2}LlH z3s4GXK_!rr4TVrrNG)95B5ls3d(*v|32bvEmH$erfd<*xe|?OoHS{^&PIf=rQ zPCSYz#0FXULQ#z# zzL?m5{rO8K&&D`?9vjESc=p`V*BEN^sO%A&j*+QUId)~=wg0KFaP4HOS8a1F$Cjer z3n9$Ak8Q0%Lcet%5&mth)k4Lp_8d#qQcerRGtPx@JzsH!IM%P%=-I!gd>#gRDE$q? zru_$7N1MAeN7+H!l5y|+pBm0_Tf=Tq$J^yg=kQgZwUOYX`m0RmX0BN@cqJ<2sjPY( zf3M#h_u*N|dfeyF@y|P^07e-Ldm}LE4#@gMPCt z_8(#8|DgJ0FA!{R{%7f5+}m=u&pfa>hTtp;;~0#-2x9=0qQ?%Qn>2>;Yzrl{gn$CQ zG}CVVZk_@XO+mSXztP9v`<{%D;qR*t_YYSNGrT|m00003fB_g7uj!%KV2&17{lA=_ zpQ~%*JlvUGW=zgM9ygy_l_pB7S31^MkqDR%+L)E2|9_)6L)nM3hr`H(1Wt>!H&~yv zoFWPpSteRlyr z^?EX|(uBag5(fmb;BqB@I)t1DV5z#q=EaooSayQPD(`4n#_>M?R{g z9~BTtdOvqCNDiR1jIZ>&7(Z~PeyQu^9+D81fC9`OJQQsrekg$rQa;5N%lU~kHuK4Z zH5opSJj7?O`uv3;(Icg(QC5T@kkyAvA29Z-=ZM2*H(R9+`}8WTM|2_%Zg4g zy1s}eq{)E$Zpb@_p z)n-()gX7j9uK}O|)p&j9@gH})Cu5GM^n1I66SH-U4fbp%3q9!9Dq0m!AnbScM9ug# zZSxKdQ|b5DZdVXJZrCP&z?`tGqd?9%?4 z>P)=@cV=spH5#L0+qP}nw%*vbU9nxUZ6_7mw(X>1-JI^eV|>41&oS4t)}C1A5o|_Q zVzuml1)svZONtlqpL@Y`*BSp`8pZu@h5v!4CMzaNNbS{I>-oz`ZRgZ9*W*!=D;tg4 z+hVNC1_gKGa5Aa6k`%eh1l{!T463d$Bjn6$%Z5PmLsgZBk^-kf1ru@vpP=GI)PTpC zg;vc`3fr_m(`0$U_Ou7Gb16VSSQhqYQD?PpaCltT3gbl zoZL~y$48`VacwN2I(9$h2E&OfQaPc_?`E*nf9Hz$5L zF;L`Sd0+a`I(lHQrF!h>zxz8XBbGiwxAyf~kA8giIx&e=CrG9^!|eq&q(onX+Aui? zyh3`_i!TRK({3?DLl0or2(W3v4=QG&?knxqV$D5{wB0Q)HeFl}NI3wwxUXJi(lG!s z^d_qyKZ=9rFcB>Z*ZyMBqx^F!(MI=BoY2NXhmD(5KsjL&C?n9~$%rQQXu6W_^%*BJ zUl+gFsZ=^j=Q**stGZDImqZqY6sfq7C6*w*8XZa!wWuAP=atr5GXxZDOy&-KIUlcl z6B1)UHtW{jguqefoMm1Ryexn`L~H*Y4eWbkUHD{s=?E6nUGa;&_@tOut-3?&{p12ub)W!qzjJFkod%E1Z$9eAW zV%gSEj2&p^UrihgQ@a&~Y3-uuc>a*^a2J)J(~AID#?VJLmFAgS z{(&!Dso|pkXTs-emZ?*VgywwLK8z5IK(7pKe)yI%TpYKSUy)tw*@-`*(dzWCNlX0Q zy-B2vq>61#10{AGM=DMnKfS;^6qfycHE3FkO1tFHlnMZoL>db7$5beeZ|ZLx74vQC>0LM8r7Yc}IqNERM~RL$cSnw<#xfzPV;KD(!pWa{P;u!Q(A7|5 zu1a3JarO`8NPh;ylBSZUN@yvsnienU}Uz8MmUE732s^ zfV&6WI+=dRiu)1v)zEM9kaszUU0XG;I`N^Bsw5JM#A)6K84UJ4v>0}`6gA(V8wbeyU_ioPjGL2kz_S(Mdxr04*-+2N zwH*WhzB!Zi&U4J*-F3tfG(32(4?p~ewn_pf4!7qXp)b!GPlU%&hrGas%z_s6*O zp8o%3=!8G-(4Ugvy6|7k-vs{U(;X+(Dh4{&5=%ZSBU)BvXw>6+n!&O^LIugHQRdIZ zAV~VLudT&<61YEhGab9S^C%G8d!I@ZEM=w^t?Vei{|u16bDfvI30FV2#|eQ={<_f} z3tH?WpcsJ+6A>^W*dOs5t|3v^x=+m3S&~NEqYx9CJFW*jz?gZ&IhzTH z*7z?wQiG={_RQEP$4@=K0-WaA!Ij*@+Q7}YaU1fStgSaVwN}xMqyjjEv~3Oj9MLUu z2P{bg=en=^;;}lnx6nss^dzoUtd1O}5A#PpWW%VkSx&7?=D-eftHim$&_3m<<(yV<~$9WH`8V{ zsu){Ph5Jmn>UmHMY$T)a`hTyN5WuYuJV8veZ<$R1FZh{F7LHN2J%8g+nRNd1s~@o# zs@G!Wcg%C?>Zt^b-#wX6`k45=jPUnc@Q1^XK~d&;>CN2(W%V_qec3e*jb# ziwN^!%MtrUlFZm<%THbPYn2=SqspH@N2LD;LNk=mla(J`;=7#Zx!evfl|R?;vcApG3L*EnZv8*h#*M zol8gaphQd>L?`{i^k(z&Bcny)Hwi(XZC>Ch*Z2wHic)bGbf7oNL-=cBVk{5j%Uji; zuF|qrnFf;;4tyYe{#*7{z?gngu^9@*4sD9A9K>r>dJvPwxKVLT}(H>D}vh z5xo-0LB~34H}LMv#EZ8l(8{*OaE-q^{X&w{wr+(015#|m?~x#G#|>D=z<-!NX&YIC z8uyiEe4SPK3Vt)#J|})lbsv+{e;=*Szb1@=RvOa~YiU@us8dq?cEWJDAML|Tv7lA# z#za7E+hvXLKDd*HNpRkiCrP>Vtv-Q;zxg#6^cRlMfaQ5YPW1uPu}Rdm(x;BZ+tYhu z+tn%4g{slvbD&L!k`<#Eaj>gRZlWH1S4qOt#n}r#DJ32ARhS)kG#|o+xbE1=KALwW zZOj+Y?N)Dj=Y3VdQR*PS%I?wx*wP&5eBD$|KL5a37#aQtLCF7t?GN%+&tS=5GQYkJ z^!(CJ^p$I>QmhP?)k{dJ)ykFgs!h~S=G~IayU@iPkR8R`1q&cG+#)G(qYILP8ME75 z80&|vw^1eQIPq^@g^^`Goj?TMq+ktv?xc9Ls3XPDd4cr$QfUKEuL$b2+j{Z*%o)GV zO)>BgC^rJ~kj#RPw|uJqywE#6X71wCaouSddY-3`aJ`p(rismcj3hJbjXAt6?u&C> zuD3vl^ z0_eK}T_=qCvNczwdxNTDF_4(2%guWoJvri<>4$sfK*DovJjM z2rQCnuL8ss8dKXIWm8+Yfe4zGylAQwTvfO;^wvFlvk$XurM^ z;^nj%ew zs~?UeL61R_zoWD0UR{WWfJLfWCgOXXB*OakX#ag93q!5M2dq5$ZyGK}4=91fFSt=v za90>I3fqaf7)xHSK%%i=mpp%hBwR3}o_bo2b@}Wx}mm>{!E|b$%*uV|cqWCKmyib;xm%UCE zQV+lg+G>WKM9d}cWaB9LTHx!pzsf;KCAr0Yl$i+rr#;e%UuIrZP)Ia$Jd}Wi=x9nV z4+$Y+<{xoYZKxDnW=MlC*L0Uu5jf=EV_a++Dwjgu2#>dlFH7T}(FtWE^150mk*)P7 z{BJN(R_*&uwh?wl@A$hhhqz0BG6`S#mc>o}NmC|raEKJgdoRWa|Ki7T{G}};=@}N z>DiT`8d}ZbDkRHH9j8N#h?|HTZAU1u2~*F~qCs9~E29hN5LtzemGv4VlF4kcjp$D5 zT)n71Ld?Up$Cs^_ezjG0X6G~EG9mjo18ko~wn>G%A(O6TH(%a3+_* zmFwofX5Cn)>D_PEs5746_5u-uqNu}B9Zy!LrIKat{Af%d|G3)DgU~nvC2iRiD(v<6 zogBL>Ls#STsof7#ogl{xfX9K?<0j&NUwrqFhq!hoG7ssH>@x+-(8*Go5P&;w*XTeR zR>JyRv~Vcf2vnpQLsSK!X_ASunljeW4kpTg}d}HDmRn zm`ApKR_v5!_Vy}y`~V}&7hpe)?GHS_y$tIa;)kEe^Y++}OTO`^fvp{+QCeY{^C7>I zOG1TIQpd!sf__bqAUT_(850dGRO)oBvDH!qeB5le^9S3*{6Eb36Fjxb%1IKc_ho)y zP@4UA-nO!D|F4I? z#R;0Ft^T#s^Sz^j2qhdg+VQg!j0>nj(-N8m3L31Wb^g}DEe8y%cFRHN{=r{&gz4nD zPUJxfGps0d=uyA96W9(zI0j?r3Rt~ww&kA{+*$+aVvy7Rc>Zd8C+&@;kQQO)?wK+j z2l+Zwa*X3SZx&c|z`QluSY#lFR75i78(n4u2Iph^1u_$I@EgJ1S?=P|6xo-tQk-4z z+|@2}>V$3)%CGAH$wsmlT|(;wbuvN+BwA}kfD}~VNYbd7SaOO|fqYs@p630P#>#a&>}6-mex$z^ zzbo46+8VWd)#tj^{^-kkRJp{Gk8=m9fD*Cyfk21=qc>yo(>%ayo*QIQ!`apK_VlAX z0)=D9>e+2r19+8~4{gDrGo!Y_d}={2eXk_{k0pOb`_H0%#z+C9_38Q2brKg#p5yDj zcDLfs{^_)&=2F(QH7*pPS6#mqmy)t91w#fR76TNVwNZ4G%S|0(Z?PONDH}!oD=UGW z42ZY^)5-Has*O9CCiq1!Y6AH$kHN*JVk5ZWy5{+%5EF& zky6}AHG5Jx{L`dg!1ZHR8J4nM8x=2Ku8bV6OOy4l&?FpaaCFiJM@2#UbDML^S5Y(E z>=135JARWdhF3#SU?}dB*^v_|>%T9!t11b=xvK?|&f7~p2N#gOm2fu>(#GnY74CTVN z<$b_lJmz(CQt+?v$m9k?Mi0#|Ifw0R!s7KR3J|~yZHNY9$UQP~f-HywKxQIYjHRE@ zY4>=#j}U-}NogdVPwe3VT{ORXAK8J$8TrMVPUA*InjIX2gP81uz`&Xm2lXS8KKkh( z7OW&f%C;`KI%NM#1-w|PKrCcyY0vob{pZRqU_60 zInAwI%Af&SaPZ7S3!4L;AQx;C=hsBBcj-!CqXWO4!*1~zvPx>$-7qGxqA!}iFe`9+ zT&1DNt~|R=sXl!m;Z;ElCX3Ay)%>PAG7Mv~mkPD(GG(x)tlCv5w*JpA;n@v-VcJ^8 zV`F&G97D$t8)%B%$VA*5FBX4Kz`mV!q?;04JK^8K?#^mWcE#pVb7zhcvEKU!%C-Lb z64hQ7NX5VUad8xE)SJbCl=c=BF!#&*OYckb|5d^70u%oaQp*uVV6MMkdPfizHe&gz z%l%7R{TB8{rhM;T57JO8)yoAr*}7=4nV91mpx{y23xzNSNr#eDMu%}~4*x{fqk9l_ zCGG*{WyR9ctb+3+QFR~Jbf4sqXqDZ18ONmfONU&Mh<%ImEM~Y4eCKk4<%wkPA4!vN zxzv{1uF{gu)!H5Z_0veCwwst$8n?2=^0%(l`2~8v>6!I?@D0!)H-ML58bJ*a2i-{0 zG>-aK1s)>8Sd>zHMu*TKERYp?J={;TSwlq1jw92D$8Sp`3*4VUbFnHCV=<9R!drJ> zOU;u$AsMlTd~Bb6+JAA~w<7#BLc8|}aUr5O>p#Ww%VtQOxeJYPs-Q>rTTr(B0z4pv zIS~_~B((!pla-5`CJsk`ky<=C(jg*7?3nfuCx(O4h^6H|9Ofez#I33kwfm_A8vitn zVlF~416g)Ab6C2iwI;IAusq0f#F);VXtBY@a*XYr&P(}ItdLcy36yrah?Nny+2NFP zTly_w?++wMCX%?KP-6MGXk3Wn>97)aSdIAmDH;;3fK>Jh|F{aX)m-pIkZ# zaO_Dgv7q%4H%!ji@F0~*34+u#_=$AiW|K{qA~db~1wU@9^&0!Xa;)dW4nEjaGVtw% z#JD5XV(3j=k6GI`9#DGNS03w+!5O`d2gAqFQk1aP4Dseic{PFEr}16@*p9us36f4I0-F^)?TyR>E#lv`rN7+Aj=<=JU#EZD zOM~mumF#dY@eZnpN^|#MB>yT#cAp ztSLEk2rMM-+)x2QbNg7T9_AmxDFfT)eyJG>YKcxBr*A^1r&K|l8erV~^Vla+r1*$+ zY9`G5_I&jG_t--&c-fe?j8pfKFO>VjkoiI6pLHAF9<dRavr_2Mw~?;dUG9a_1I%;e33&(pX*HPYPub5y?T(;wY}B@5zlkvVjI z_`)TGN%?(FPD@lmZ)Hqk3bKCJ^6pI_RXJ= z>jtW%pQ1kV((pTfi(%|W$W&0TeEh_($G`1^$mk(KLYVZG(EbXEyL-p2_u9f1OjH-! zuphN;B{OFv_6!Uhi|Hy<^og5$=%XOIBnGB6o2Jxa@(Wmm75&!j<1U2360^<}i}UNE zHDivx##DirXM8El2YrY8oVs3u>?!Hfl>3D@&Dt)AyVnD0kS&Wer~@VZLIuaxD1>+3 zGyyiY??lOX@9_GGD)v7!`^S#)(+C@+m~MrE_q}j&?q~O{{h*=e=dshQ5X-BvjM3Sl zSRZLjCMJ>*B6nHWTvJ>1M{aP}Cnif07(fC^ksh7ekqwOr1q~qT7(@qy8RqeId*wuo z>=q3LeR=k9$+iEUZbVlF^hoYwFHasi50*IqT*7s4*o8<$%ES8Kxom8;SJP2(EMF1B z9Q-<#_zs{?eHaA%fHI7b65pF>N~RaHylb@Z!Q7f^W|BHX<4ll4*&8SlEK27~{+5v$ z%H6;)u1@_GlpLPQlmO2@SX z*bfOoPr&UU@_18oz>TZ^5NT~(`i*aS^x-<{=H9vgKxiVhuZZv$5h((UJ%hQ;wR<%* zw@qrI<7kVC8W_n02~*HiSTRa znCi3GQI%HZY{|Lb-^X8~J_75e#+dlJ>*5pZ8gl@$1$h?BHq zy2!&GsRoYg)~%Tt<6FHwjlBkbORc#%t{K2wMg=&KVK~Q~R0j$wp30@S*7q=*ACG42 zwV21yg1noZcU^N&_Ql~T+rJv*NC+mVTP)+Urn_U-k3(gg=ngEW#@7U-dc2*&G%W)X zjdpK4sY4cnL!&ef27p0}+UK7ERSXO=nT}iCPZRWf<1QA_WVRcuu2B89G$aWZ+so3W zm=V$UN?mO|lvF0tj|qzEfJI88^mdMjsS!+C0rUR;4buvs{myhI`Ca_(Ne z1Q3E-H4hz0pG(E&NlQ+MBVFO(rYGyy0JHVZ*)btb32PU!1yl1jqZkp*a`hS({%bt9Eyv*?H#;v zR%$V7V$lXx4~aIR{Kf&q$4V}Qz%n|UQTO^#yQ5(7%pTzWA0Lg*g!w1-M7HM%^&39U zIh+XvV3!`w%D=GFr+V>`89!_9B18Mh!Qm2iFBjN;eD|Wj&pvo!olS1(>=KtpUMa#{Y37>VL1r)iMVjG&tccfBQI=FW$$ylXCwWKj%mW z-j9oEYp==f{9>Ry(&i z9pW>BlNQwd__wP?ZpJ8})$CPo#K?(4*KoytG)hA)(jo-US8o}F%duk$(k5t=&ZT9O zFz-99U|rkG)}OWzsL7N}r#4S=;)Br*!bIs~lPDip5o1N=DowAIxdfN5(!4$aVrJ*O z4SxI!(_EG_1G4-NZRlFhB>Xt-J$8}UOhV*|p=++Tc(tSzxMi(vCQQ?%g)+&$@MAeG z*2B~bY_g*oZEC`D8me7;~hJ}V9RXpiNCbJMb*I_ z$3qSUMcDph+*f>1QTwTyIHwo+fvlyna%F`1!mWhW$?5=bo`2N8q-~n z+Z7^Q(hFc#Qb?9jt#j)B^7x=q4&p|rq0a}EUQ)pD-o4^Nd)+O01urWk;b60O)mn#v zG<}74^<*$?6JqhEfLR$O3>9ww8EPb-Bc(0SX%h(U ztyH}m_*nR5_34|MZm&l%b1_?@eAH14;LZ8n!TNvb`%gysgFbdjyk8JT=5Ytl2bpIz zMYVQ(ugks{QJ)MqX>xaFV${-QIIM{#KDfmcJ=TSbj+D-N3pV{!)|;9U#mHdLcD9no z&6?m2AP`uT#c9DTp#E>iJLHfF-n-mk=8%cn76nW5kCgh4TT^zzgtrReWaz48^Co;Y z@}+P7%ZI9M(S6RNga9NfQz@Q(WFaSCc_thS`3TIpC}ORopR7{$#fZ{NtDZ8cN?~qges9wSDLc<#57)u7P5o)M>C`8+ zsgNYEl`Bue6U|{02F@Ar;5Gx(xa=BlQFCp4aRGGR? z3l+fxi-9$b%QuEhPGBXiIPX(X8^gmaCxT8*ChZHhUF=R>?=8YK!ajyJ6T&v!?M?2s zRu0EEcA0w2`)tx?p%Er!*JT}%#rr!itdb~0lmJ#zyoollJW(*Cf}W2{g-i@B>PvQz zA<hB!a{t*_5H1xMA=a>7rwjgoAvU>x{cv@w@05QZF&YG8lxSKkFTIb)Du82`7pt&IbA_q zB-?;W`E|Fxl`K?AjOFH{rP*+Ly^8F3-+p)-AMs<&NX)`qpz2bg9?CeD+}22fes`jb z{OVyseGY-y(j1P(SoNWU#?})(s$GuSh!bjl_`urxIPf+DYvF0J@l;Q-# z#L`hmy5ttf{1aZTu9m?A7BW2RFczvIpyv3E_?{DR7!5$vfVtWDv-Yu0E6s+}JK_7A z)}TBm)M!VAu$N*JX*1a0w^d7Wo^7gli6Fym{Z9Tn{b5kQveHRl$^}f>aBg{-Gpizo zt>cmWD)uAkF&8P@3A5Nq52O>+4K$soPHMj_NCiF=SkREG9wQoO+$>DA0?y+F&N6yA znWv<6n6II)$2tcj=^1Ax>e2uEs}_HRrp1IAN>673(xyqtfin+G|Ez`Tp6sHIo|}}I z3rY9UHlTW=VSQpQET)HKAfsS?O$HR6Glj{XPIYO*Qtry7osBLR+*K|Mj*Q$Ji_Piz zc|j3LkdjV1U{n}YB^KMBjg@j&@`Q2gGPTEsNC+YF-H@+ECi!C@;X0vyCIwD9I2@$dBVT6E-hR zO}sCtxCj&)u%laAtMvmsz6Cbq;J;bl{+Ywr8>40qyp^LFW0B5f%A{Lv92{NEe%V?P zlTh$HAV6V{CPoTmQ6NmVINX-ufEpg!ForGQ;Pq04c-9Ej01EV-`CMA%KY8uOif^X5 zQFgdaD!X$h5+fyHdv{tBI^RboyGyOkBlL)v7%%*~Tr~|i6#y0ODc(A3n>i%w>rMZV z@=E9WdK1*WAntcN{y}AJ91bSOFxNQTOjMUGN|mmv1#%&u&Y5MhicWC?6XgDKYj+|{ zq0dCw&quvuOm2q?m@5I>rB$2>EO|Wq#K&vCdagfy!mpIh`=6Q235@vP$!3jE9aALa zV!6~4G>Bdf#CDT3Ew9%+v%&Q;r`s8d zAPMYYky3}9SyVfiA&G^#Apj~_vHqi*{c&3~5-gJXZPGNZVdZGniTbVi+MwfMVy$bEL`uk9vbTc2OO!oI^y zj>Wm_;+Mh{Y#H`98B1xZAS9l=NK~GB?>K7O!PSv=GB>#`6QawWvpN-Xkh>=D=N2l# zGIrS_x3dP|)jzI=b$g z-<$|HDD9l3f`sl+fk?6BRqr8?OeF z;uX1e&TdkqbOcL1qm!$rHQze-#jDi$SJm;o^lNGHfFX&G7tVg7bE^6vqrQy5e!H-~ zXo@yA$)aTwGDsff;lqGRv2RW}_P9-}!9t4QNqg|y-!{tbKe~>CT zo>+^b_PGo3e}L!!{0p;oH(zu2H#P~Zu=&Qp*+uxy23_aa!y|oOD48slNme>@RaPmj zSb~%(6Ne2kWtjwpO?-r8|9Ej8lo(Y($xO54Ol|zG=Bz;jh4>d@a1rwG?wDePbSi1O zl#)70V2CsXYfgs;K5Ui^QuNqMNTgwmED~*#v62l+*G1cBqh8v)6_Q;dOTGiMAbRu2 zXnmYzSvFvi^Yudw8w$FJq%9RGw^Xdwh#+7Zro zVMdq!%L*$YUz+~$uXxt#ge4vc-t!!s%C6&7rR8j%?MW+m z4^?8(UfWl4FWaTN97*GACl%B^OoN5!@_)=sh8!hi zm0*eYkUd2nwwsebn&lQdi_J7Fy0l~nJ1UiT6TC6JS|;x(&Hpv?O)GEEU})1-|9SdV zcX6d1#r1r=6o&(_#{-O4v3n`I^7wKv*Q@B4WG^@XcdD9ogY!3O&w>T*MwO1$2(?a+ z7c{RIwWY(T=BaWsFTW0wq9UP#-`1WH7`Y`m)Uzd@j;mFaH6svnl4dS@%}mY`r)otn zqy3Xy7GUIgyy2oB!0~g``5(77#E+J&K=AY$HFxA;1^>g>VT_8oZA_jzpjWu z)g&oi7_>$1jQA&Z2$>h=d{BOa=};qd)UYNmQRwQy^`JMqFoXH@-yErlWgjSK17mHg4$!q7;}n@Gz2P-2=PCZw zk|4X{j#6dUm-FtQygvZb1HC&zmB|Tmkg(%nLI!GPvM`?1+be}oilU^*5j9~*QCWcT zbrW^dD;9T$cF#GwY3?``9lql0k?T*C(M_dZXe;P-RxVlF+f*q*#gIYOU%oZw!F6@xciBwl z*PI|B)>K=+_18^)m?#noI2IKzj;SrZ`WYD|e%E|Jkpz!QS;N)Ifuq{1(=l=Y(&*c#cwnD2V$c|68QXXN~yJxK4yFJ!6OHn ze6up($0O=Cz~8PN(b_j2SauV_|0og?80>!-vaAZ5JG5Iv-}7c;s+tPTCS{nKc^tMr z9{tNF23YTQbZ8ZEbbhQJ+HfB!r|hq$;4zsBbbKCS9Wx+?#gJTg31S|z2xV!BgqLf* z4~vz?3&0UnU4*=C0`)gcK_`qze+muv&vf9grP1qpFw12ko58cul=>ovWT|sHMC-Ah zF(SmsBk6ldxd_QIB2LoFQz`Lzq=7z)f(CI+NzH6QGEz2VL^BC(d2%{rVroso`1>F`FXLOB|fVuzhr=UTiCc z@S{G@v_G6Yx0`-lJbNpSxHr4aDhC;h=C43GD;{4ktHyG&U_`2#zlXSFiv^OoZ?#vd zf+ra_2HGMo*G2~nGyg`8RbFR3Q(4`f;7`XmXzqD$37ES}PLE$VtvR-)Y&-1m(lof7 zQ|@Znx7a}6#lu`_xn7e5td84zF;1q3SLf1ZBvWqS)R=3p>80b=%UI}c*1lOLrq*83 zgc^S*UBQhn;ayliMp5`R*?HvBKg!Lo^=_KsOvPDA(J7qoQp11FjXD1@npx{?I*`*W zTx=yUkiyeXh)p{kkzl&KoCgqS#nlYis`zUSh->V0H>XBSOp!ZU?tgQ-T9gYGIg8 zWen7x1Bj63KHU!n{4YG=e-c_`@UVg<6x$562QKVNsrT)UudS`(RjU#sl!y7yBHPGf zN064ZDX=X$(MA;p5j!nnCYD3?5m#~?NiU2>WqO2HrLL=YXGb;4q>CEdev&35lLvoV zy&#MDanwmXXv#lqG#3a-gXz@nWYB_ZMVa z!ewaRXPAl55?WMD#abyb%*^GAl*EKCq+hr`%q;GQAZHe9`sfhS$*!4B9!GobmKX%n zWr1^w?G5s1E_kISY&Km8nQuk7fzagCP z1#ag!soY?oB#3dsu+cXl^mu4M9#jDhlx|!9vFq!Kx%z51!{2V|fXXGt@c9GNzgqcv zB?{2CJY{8#cQzxK?l#P>Xf{VmaXKBcQ}yfP?2n@8S$$19D`*qrU1P4pbR=phQ;)!Z zCFwOszJ7o^sxN!X$%f-$k z+g0V%rma;=$i-&KRMf_rq_|wTpX2aIa5X=r)c_sX$Pfv~<^l(RIcK(X$SvZn78d>oG}FkL1fd{DM07F9x*uITquH(ND+I1_SuODGz;VVqe|8~ zq9vSJ)h44M*IQ+TCVTOYHh<%RXaVve;}6!PQkXyt0;Q_c*Z2=3{YinV%=*j^p0!lz zq5Pp*H-8t~m5Fw@@+pETB~j~I=YPIsSi@%L0*f0%o*5t3+D1>O#-4y)S?!b#QLM}@ zZRxv}w*^<;)G8|s*|vEB*9gM2r-&x&S&UKIL1j>8g$+K$fOu3siS3{yYn%w3!i&h5&*dfNv)4#U7{s_N3bD$}eQo_=NISRLBq zMpkSmc)UA+@v%px%bdfzA^6;`k!C{xCX}QyQg3I?j`P^-R8VTke9aF+hoEokeWPbY8Y}R1|zd-1N7F{GY9h_j$9$qaZQtXyicx zg~EZs|HUHESI*a$)A>zoO|9*T#gFZSmyA2P4Fn~JnK2e3nK2WbB|Vi*6>Ch^Zj>VS zZ_=O+N%O^gEB#J)<47Z+snEr^h`qnT8#A3lnF0ppoJ-H`t_ zd8)6CeK08Hb@zQ^BXPxTAx5K#T~3a7csOfBww*nBZ$K#qIKaGf0fasj_683=&qMPN zVjk+xpEH1@-4rKWV_jc>dv+M>Z+Se#Q-IU153$?u8%s2gLQw~Q30508e>DKHO<^~Hi?>4f-Ud>ssA;j8?KTn>|fH_>Hm8~dn0hPFQC@zWi9bl3}(Qh7Kc(y+{0#nS21fE>9D?@?3pPI0Z*`DS5wi zMYm4*0|8j%HrFAe8k3O}50FFrtK)dhV`x3qlnr)hbv(#Mf#Vv^^Qd~k8wg0k<%W1} zm+D6qn+!pVIFGzvBL;?}H4acxVo>6wVL8FEmJVpo9A_&AAAtt}+`2+;TEt(3{vz`G zWUZT<)?>6Y!gZ7Y6=elj4>Qh>^IN$Lrz#F5Yn5(KAtjppgn+lH5b@x`{(3@cDc+?+uc)U7RaLJ&R!&RvJ0b&j^ueOPNe(E?*1P;QZ*N zbY0UjeR+>B7c`(rtYI1BTDmxX&C$}clCe~%LP=8sxakOv*V2DI>|P%xSl3Qu^nDK~ zgM2}+jKe^a19DPiOu!<8UkC=&t8;L4qGXU0G$4ZmpaRF%0EaEu_3C5Vc#S?nY~_QU z;BylEI8+5njWq`BNhj|$7=T%20T5x%$O_mhe@~i-s!}i7on(MSaJte93pGnRIlR|} zZTsMusL@Y43XoLTzfLW%P}bz(riS zeKXkGX#D=_8@Aw=2%iporTQou$KlI-2?!EoWQ1^+9FAZT1OXaOc5yLe`fZ^F&lQBH ziaAS(I|1K#z<^roJ5W)&P<~`t+19fom`E43#+nVAK9tmd5PfilH~KOI#02yg=$9bp zni)djxA{N9i5$UQVAR#0TaT8Zi#tqi?$n)K$93233Ln7Agq}K)x`O_klTntJibsU7 zrx^*Q5w!_Ps4oLbs(=_NQIUsvfKZcES0Hf3# zbo{FlKPdgrhce6&uhzhu)QY-*;WA}da0K~qVxcSup?^A z(AAxwob1zZus}jr1B(~&9=_fBq3Qa^ePS>jCV$A@?j4<*wu5l7vg_^RkJh@f?XQG~ z5huIazw3LK6L15QKAyWwrI53AbZZyxA2l+G4!t&+qOEkZQFLTb3fmH*I&5mm}}0eG3s1NHn`gEJJ~XK^7vNo z!l#=^s<&MRH962MXU4%Fo|s%t9cEE&zg9Vn_@wU7%A!PkdWSH+t0X1C)fQ%*W55Q< zA$m-#g%EA^B&fXdcl);3tz_N&Js4hUe|+S&{LiQfRoTCH#d{{1A(C-^+UCHuJ!S zE9QNpdd{;G%yw>C*xjq)#92mhGY*c+t>Tm?RdM~>u%8^IvNsLmeqAA-UU9BI^o z!Re7d746~q!OXJp6h*}Ox)1mrved&3iO{oM&csrhE+D1RY>85uPk$AX(z(v9m0hUw zN=>G0HZ^-(CvV(PAablZNu8-HVdf73u~Xc35xzLpiL*mB08#|U^2dEIEo>ZWm&m~| z&;M@vS@^1Xt{qwL+w_}5sEF7)GB#W@bhb_-#c$5MbeV&U?s^Ts4k9%fHO%C}f&7-K z?@*_uwbz+o;}Hh50o3=d@Ik6fvpX(;qkch)_U8 zC0PnStAG3!2aX#vcJKoCPNYbg>ClBjc-MS}N@Bm4xir)->Y8(xPQmgog}An9y2HgA zrV!kh+Iv)?zcrvW%#6N-F5Y*}FeJ|%yYnTcvwSyPxwHzUgCZDC_-M%|_FVm1a8Bt0 zVwR9ej3B!p&9w$wcK=P5i_PrUt~*ESJ8Z~$ZB&l2lNcQJXxf_Hk~DQ>0b?bQ2gw;54w$$MWXQdPgg#O~3Avi~=kKNDGv z8|!txYTLtv4DnH!c&0PnK7#qtrd-SFy*C8-!#Dhh*g3hDUUM~PVSSaTlHm_Wciw*d zSyQ-yr?lHaBPrb7!9Z%6NDo&(ZkAuMhrAGpmC%%QJhh2*^4O$q!WmBUvaNy4OyUT$ ztz>Bk@4_zjFU%>&J0nJu?Z@`}7HiD^dE8__4o>cxo|EWL$Y=Gz%VSwngKIg_GhSn3 z88d(F%GtA3YJ82_&m0g}L?5fhg>5Jsey8OF9BL5_M~=4l?wbTkGo?&bD9T+Mj<0so z0ru$zmC(2K!&RaF0x&3|Y$ckVT#Yt6HQhQGB#PtWz89mF)*U78IZOvbo4pk7w|^RSW93zA_HQ%p(u6=fitbWD%V^yOZkBtNCK z&Sv)_33hGaZ56Y}%^V{;D3L+Stc$=Y44T+=k}yTU?2{ut@vNo5cfD~tU@3PI-QY;X zUwWuAId$y96p?JnWgI~}Ncf_%bFgoOa1EEfhl&8{n{3cf{y-y5JOf?I!pJtH#$DXA z|Lu`oTfyY;a%5u2VyuU^;kE@cYKE@%fe{}k7_I;ZYsZj{g9_ZRmiy!(>}4*MMIL?epOqGa*E8I@Vhfs{_j7r$I|RZ4+Df zC}Cd;#p~_`_6XS19FwI{h3U@LX&)T#1f~=Pj7&dez@rMwgRRpBT(7X5m9q@8|AH$5 z>;9Uo+qsp!bTF%)d+t^t{U;avpewuc(j9z)H)o)fFki)1AP~Ve@FCoi1xO>+fW>Ma zYIHbfJz|<@lJbQDG*@lwD+Q1|d(I}x$%55YI<|#igNGIPtv;rm-G$-d)&YbQkdzbh zpnnhZd7h0+!(iBiVU#9C5H3|G@+*kTGSUQ({(&)TnWytE7@SG{-*Ncozm0)2z1d6} z9`EJLWk$&-$!g9vit`@ZvPpBoGUZGSB@l6-EGD6&XgV|Gb8b=mmco;|XL&_Ony#L~*_Sku<{_X3G}ZlQ?c&kJ?*6q*bxEq_8=Z!iFG)oQ(a67D<40bk!ApVo z2=aotvv1XwD<9h_D{M3VISe&6(%991zxbCk>kiWLlP-D;uPi2HPfY&K#zJ4mZ@-eQ zn@D^?C@Cvi+rW6^9`|%$0A{5^<}*4?8@C>3Sz!qMa9CHt{r$GzXc&+WsfZCdQIrs4tk$g^ZQGSYUVp(|f_(#vhXgdjk0 ziGK0Srv;ol%$yreLv}IL((aN+UWqTB)oh8~*Nluq{0kI^0PKyQ-zkveRXOYuMPI32 zz30SzjZ^e+{LY2uwAv=6NN&+enI$?Ddhp7tYlJ$r~$oqe0QaD zFuO{)g{Bqh4S}13OX_NPYt3<@`!_Fa$Y*!A9xd!5=kBH9&Jr!qZi550u!gzhIl`>e z6#u2H4HSvKSi6Swl=@R#q{`aEMgzci@4DPN+FQW*6kS1u$3EaO*gv%JtWMRNTCrF; zA3V<(Iyz)wFB49dpDoUIgDBCDAMdO@o;3a^e#?H=0Fi?`Gt`{weCF2>>gAD7)a-}| zp)zjLXyn+h1A*lZ}3G@$$>VMM@rDy2ZIk(GLUp&vt8e7#(NqGuh zNOA^u76r7xAv9KJFn9LiNU(*3#C`&NZz?=2HiSY}<~KMA7C^7`gxN+B_2_KpF#3F5|eUCw!SOR*d64}fJLT%}iJ&f58N3b38p z2->PD`1ZoFfm8LC6?epdH2X;*4&D4#Gudyi$ps%D@i3=z2~lsZW8C_>Dr^sKB>SrQ zGqt#44v<}fFJ%l2vb#6$nw5SFooo_&KY8yguK- z-&y6%>aG9+F=i!!26$)x)E(4PgAcT(YF3)ux#!59>CMWO|DB0D{}oD{6t-&l=*~Yc zQ9Ng`vc$l$L>BjEdFUTMCft-B8-A&4%%lK0D)LGKQ-M@bfId4x>7X zf%g5uQfC^eGq9)%5OrxRowGzQJQTRZmB_Z{QyRR?6jhsc>;LDV=b9;dTqvbzB1r@w zbL0Z%3sMMH=lS>cEoDUX;rRvUUH`1R$wunazwT}e3KtAe8t=^#Ui}m`LoT<{Q{&uY z<*#8%G`*^irMH)Ge&pSUO=Bg!m`AET{1TbgXD-;#;L`%d>blSPBE~L%nTA)p@>AsrT_$Ng`4zb1g zPjAX;uFzt}5#QkWldc0Ljg&2n$CV0>Q0%3)mtw^rt&QV@#UUgpuGixAfPD`8zAn9eVhkDd1? zy);WVT4r(2<1Z4o2hOuhwzJbc%TyG^LaTe~4{j6KPLC$y3XX8G?L{sa)y_}pb>z-v zL?2;_WOoPPVC7T1DaGBV#h#1G$>t61uJRTyuSPbbBu=7?f6K27OKc!<3XBd_4b))X z=wjdKf|!Er|J^x}KfgM>8ZX4X>{6-!f#n&;ewn(QokcFYeR}5%?>riSlem#Ec=5m^ z7cb-3F3OI-Cq23gk7j}fN&vLG9&w5qJl<Os+ehQ+_xN&-+@InOSuK z+Qje|k<>3nI?&X+3rWg7dXvFKRE(ahXIz3<`xk8_-E}}Pc7HR@k&EzRHhR27ya<3& zxot(ibCd^K=V*<-yoR4YUU)7Zyf1cJLt1J!o&J4e{#1Vx#Q2DF^;W<8pVRic^(45{ z7P!r5Y~!*EVZAH!&(9zNT$Han<9)^rnAgunQl6WW)w z-9__|LZphNgCRz4>^#wgE#32yCO@!Ac)<6zjNM22FRgj+CeAbWiY>POVa4e;bv~O8 zec56;T89>Szw$b>U3g{P^MXF|wCweoHu+F$m1dpIh9AmGE}L}Qv#rUqRDr%|CtXmx zZ2&q1S*Ft$ACiw^g@T}uiZw}NEsqjEa+4mrx5&DE$mwaea<|n5ECrCC`#di$yQTk6 zk#_&d0|#Q&wbE8Wq?IlOdPPlaJpr=` zykVrm!&a|HJ)KtvQ;=vGrz-4CCyuDDg`v-_W%+T)w`F?obS zPwe8V2d!$S49$k;y0bLZ`^yQM=HVp2l(uijIDgFVcHtp*Qn6UJA_Z;G$oAz`8+O#8 z-xU*?bFuL=l^x|dc?)VTYLgw5&>8W6r4#GI=37o)UkMcEP;@8@mXZir$B&EShq>A$ zK3KV&JkxnL6J*3d{Qg#V-)5Oz`gx6CN3H!U+$DY`Z%oZa1}gHK@J)yr+87fOBm&!- zAHy@qA0-FA*#$A7c;8NYj_`@mnK*lQj>hEjm|y1vNo!O@uY3i6E@IrzsQ;Qa%m37! z-kES66oXqNbUiTsrw`$*y_Y{~Z|^x)gVas&>)@YqiaZC&%CJ*S z(Y$phN0~J~imI277mG&Hq-s%uB4iE8&*s=(q-%-J#cC`(?2*0VqiY zO(JIb3y0Lp@IezALn3KAS&5T<;~};{Nz{GN?lVjRQ)?B<@P$1An1y|Kz6xBZR-)-+ zcu&$P1G-gPgeObD9Z)-M%Src_y6=BV{CUBs{n&@AI}4b<9Y5?}YW8oZaW|N`zTEeS zvTonrRv*HH&#Emcg7@2ZHup&a-CyY`QtEcp!|G}J4k4$@i|AcaqJ_{=W*_|Rps6a* zmAFpY7|g{AGrX`mY@nr_5~oTvqs)xUKC~hiu_J>zl{SStblEUYN&hCN7X^5GBQ5K{ zOvxxO;KisY`ATW6?x};pnFCR1fAj=A4RA1K6!2!(-{tXwJ4P1s+GX{VGBiNPOnnDcpU^vJw({@@Ag1KiGI~$PkqpL$;oabcgeP%PxE) z2X6tb|2>1|UeKR-v0cpDRQt_uA{^Hm-9dQt?I6DVp?4O*UT1UvY>vEFc4pB6|7<6? zNu1JO>{#n0qe6Pt?t+-Cok(_vRNs0e;;!S$Jp_+`qeagkFC)qrMyL&xx6Xkz8C_bf z+xRbsp!@^Q3kuIf=RLUE!5KSQ_;Yv(%`wg|go zLHxa`nm)qtz|30;5NFxOrwT~u)J+^-dejwr&sJQ@;t`VTaqh3aYq>-Cp)d@-yZ&h> zjY6slpZT@KxO*QR)HHak5KjguQ!4AaGiO>9V^={%00x44|H_>3$;1cvjDb9C9S__@ zA}q4Kii9xvc)BzPuQd*Eci>SZP8x6AN_c#Dq|}%prfesI`J-XDS4XzpRIj;*n+z(| z<;(6`*Uga8}8 ziX4g(`!!^47Ef+*gvi9WBw2jP>Ry2a0$^+3i%n+12;VWjmFAP~8mi35;5dc1_*oiA z_e@N%^!oz#>H(6o8}}K8y=(7V4wfgIi;}Nk8BYgZoAk=GOmv;>Lhy>iS zno_|J)29bFJ~cXYq@UAUZc}#^3gScUaifxy!Izh>;xvAOgqsN-w?tF%2E0_rVqt+e zHs3^$2MX+ojJ07PAp-y`kEB`mtOU&uP3cIM7&v-TzN_W@cuj8ZHGmwrs{!P zO67T`>T9<_lg=RI>x3O^9K0aehnC$pboTZ3nsYB@(ir01jmwD=uCcbE#3{`SY}33n z!!p-@x*Fu}6+MJSPq34CD#eeFIlfBz_523vGnIW0jnZQdk0iYP0S~YIH^gv?zzltybNR8py)J8+emjuZB=)wn zYEMtBqb*Sd{7WC7!kHd1GZa{8y1)#~)C@HKPA*<-wEzG-q2yMHzK#jy_B`FX|6cZoK-MX)l`Bq{=diYCkQH#rWLA(|+un|g6E1Joa zHwa!#o^RO;_6GAyB&KOP+bem4Rc{S438*hj999#4vKw7kv}L}XZ8=e`$#&uxCj)8e z&G2dUEq&*0;W+Pm*vK%tJQ`AMl8{W%h(jS_E2_iyfiGJBXpPWx0Bwq=ahbmX= z3Yf}QxG*k^N(tyl@BOO1SJ)+39isRH&g!G(F>5i+<2RyZz&3sbkLM~YBSb<< zGbD5IT8C9O0n2EQg6B&125^_*+lt`dr46xls}93!>q*NYS&W0(aK{vj@-HpfgF{n0XGIB|V?=pivEPc|@j!@?DqPt#pp1c2|w}RD@TksT?Pa?Kr%a zftQ{%@Mv2;Vzy#arNp{2x~CTuH~Y3RR##Rp#4XJ+i(_*^7Azca@9DS6P2$0x!zeOr zJZ9^2lk#VakmN5IJYlovc;hMlLNWMW0?0^^CxZxlG(b#t%qoM~z~*7~;;JnzX1lm% zX6mT^Gyb*$R;Dj&AC>FqUgT%o&dElMfMC>07rRizmpWh2Vknp2J^!$JC!FZ)+wQlY%xzU@CLbQE81KB&#A`!UuHsf^W#)se)`N$ zd~)p9kh`+SS2rj(la_U|E)IT*zj&XyN9? zeZphDMceFl0fj{)09c_4Eg9XJB8!^0dP1wX+_dL3E)?1!wI%koJI%BhO;_`WnM-%GwKFX#DSP>ev&=wK`nU{4Jt73BC4-?%+f3s zU%p4HK|Oai=mNyYAh(@5K8Kv^B=BEVnHhOD4)#-YUblO4_XuFqKUlzXw|_kK?|7J^ zkJGK_aMb1!hHhER8k#$!!Tl*phq@$9k2TSd(-iMBz$P=Pw{*Q(FD;XTE8zK=pBEAU z;)hEDbTH9~wZQr@%ubiICa8UkN2B@7o^|EV4|QajTXmpaL_QGvC-jqo60s~1zeF)H z^{r+piR@9Lzi?&!KS}QVJU^-vIhEl?1?uGgP+Wg)`&dm;Ry;M$2(<0r?y0m=oM~$r z;or2)eEG=ZL4e|=k=5>)Yy`q+Gv0X_NfnUDJ9iRVHIwig+kI!BfQdSf-@!^GqiIaes7&4`W@oR`w2Q!lPxM zan4^E`jxv2JZ*|bA5}PMQ)igrJjEv%PwkyIg%n0vPhHouV-r)eWXz%Jd02LJY&m}SW_Z00te-!Duj+4UBAQh|Ouu#Qq~N%Zh43C8!{)$JS~0 zCj;wUzs1YPb>_}9t85=pT&_k2(Ci#CaAPZNIMAb#wL4;~ZtR>yv#?M{PZ4v0eX-3*)YS(i@ccS&T|TP)9u5Ht&IImYz{e(Y~4ZmvX!Y^yrX8~ z=h$)3^^JW#p@=*xf7J6+bP$+1=hZv=7sCY|&4kyd!YvptMCyf2W<7D1n;VQYV7z&F z)B9E z|1FLpNJO8qdw0neMTR!(mdsn%`54DBS_$sOwb z>$c`LuBX>$gQDifzB)zGsh ziKhN$|3+*A5K*FHsLs#V3aYZ-Vl4vvCzp_|>uy%D8D?@D28;IO7mVqJw7bP_Dq`h* zA%IzTK1rrIuX+;&|9+YBzu=&e;-wAWPJ~%zytiU^s^)aW6dDum?BI(!0t}1mp(+rq z1jzn0*L>W|M3pGwsK@R=C1sB8rL5bUR50+e-=t|d+z>N-F<5GUgA~xW-7OQ}dFF2FoAmW+j^rp6-^IB$@ z=8;KDCx-kvtC4x#A;9OD>vew0Us zYuQ?7=r6l|xiZCnA`3D-gcx`Yq~rOepmp-Hl1b%WnAyb4Jb??<*f;=5r}C_P>KwkO zw0)xRPTu|McD%y_d&W#f`|CqHo{HfS0zr#5KJpOufMr{^N5Lj2Ywv)Zur{%&d}Ony za(;6OhDR`NQQ7loAVYBy}(Mbf1@|>!o1k~KCm1~eoa;?p9`Ytf-DM3ax4hEZQIijR!vNB|J%Tyl zvrr~3xD$1r@;CX@?U$iDI3XvY5|)#4!8RT2NqfM3Y4tGEDepw^J>2?DB1XM0%Q||A z%y+yd&@Z?_c<)&fFa9t%Sl}4LJ;%+-2-n5-&ds9o=;|#TBjM8)_ydMNMrq_%nh)0f z9o{OX@gzcVf-mngjKW9}DT0UcE3uXLqy2`xc-qi*@$~dJp`eKfMTo|5+3DWz&d;XH zJU!;%rg(EuL9ABT>~0LG<+k7n{e}TRBr0dfm2B=@yuww!+G!Ambjtk(FH=oSHf^(1>4C ztjR;JW~)rvC4dvlaUCRr+=JX;!$+=rzL1`_2vW2$*JhI}tFzr#1~52|6K#T1b@Y7; zOC6*`? zrx8MVn@nh{kdXt|{t^838u7(R!Y|S?t&3pW|PxA50j`)sa&}!()V@T=H}Z zu&eN?S2w#t5?ZT6Ihj!oN0Gz0`vU}W3g?AAmt7r%n#m@P`n^Mh>ge`ljeaxe6Whda`dnFIa7fyCMf_~n*+}&Q@OK7Z zY@ezl4mXiW6G~otOieRYzo*qwApY^r&U^ydMuzLHjh6*@Jop?r)e-Ok>;%Xo&gd>= zLlR{Dvp1m-I>Y3J;4x>i#H)GQmfK)7Q;MJO+oP5M2jNvald^Jr8kSg;aI&*oceIk% zY@vh&hVMGuBe73{I)f_Xo2q1PSry3RR+IXzU#=Mip(=W9M50GwJDV;Ao;RBbPde7J z#K%#}A5@%_AcHl;?=gt`SPB_0I@+7@DjN0WB@aRA$r&T)eE3rw){RG@%dLkUbQE(d z-Z)8qpJfr;CdH=+(BU?^=9zPqK50S5G}lvkR*Gxq*#KACVpp7zQCL!86Qy(OCu394 zPK9C}Iwl4j(H-N*d?E$S1`7*g^%zOKNfw!<0v#NX-8{AeSLtXMQ72LLWViQ6Wg)3B z{xs@&i@AM7U@m8mzvT3gkY(-^^PT`<5S9fA>6ir?5lh~FajTisq1B%8oRu4<|La5k zVP+i_)&|mW`K(Vb_3)y-Em?@xun+IIZ8cR^>7y!$3yV?eYnEN*n+7epTmX{yPw3;w z#rjbnHNa&6Cer;)1Y-iXCltn*E9<=4c4jWscid6CnbQpykU5HaLj}Ann7%Q%{-lL3 z!^!T`j~uaaNz~}hK3`IDQ2$J|WjRBbI-J1}6l}eOv>;jNj0`WwH1wl=K=}OY;0wQP zG|=hwg<=ilfG8OvXm>~IoWvPRkK`tt@o&VaeFBqV)7stteTu58>;g^zYVYbiEjH1E z#E>xkHo3mNy=*;6ykB|!JkWaTHNh@Kh~1R3uH{f`|x2 zl+lVz&sU$)4`pmPMRT}$2H@T}S{k_(H4T&p}x`*b`-h6Q_&KYJmZx zLzCzGz(q0z_r`&r3Bt9NJ<^<){d(gi^9OYn&V_}6_5C(<1%T61SD724smRx)n|0sp z4(#|XrI_o8`u2~$xG7xhrk4&Q`MXI=PYOEg znpgTWY0Ziy!z!TJViAg={I25jH`>Nig-|LJAvYSlt)_E-j%A>#_dow@Gz*cwy_T

    rVaOW^gmP6trs5A4Qc9)5o2W#i%rJCQtTi?=|JW#RvnTy@#A5c>`CsMz?8v& z318!1Wsfug%J?$U1+N-61CmwDO}Fd&V|q zS{K!da$%8LH9~W^+=Ri<8rGVVW(qOYfFh`!fN(Wz)&o{_?j4vP4HX_8R-<8NVJ{0j) zsl9$@F;y$!WLs;|URUd%E(6FlBcWHzQ;vzf5#eV>d;NEgxE(wqA%dh|K7Xv9dQexh z%l3$5%7irj2m;N$oeur+28w2~-s##e1=TLO+n64Y?C@tB${&n3_@)!C9}bEq%90s* zk4{e9YyuOMGoHp7#RAgFOTz_sTlgLAj#D*eiQRSjOqT3ArS++0#n#ih;KK#R&)YT)djH)Xe|kvNYL1Fp zWxmb7rdyPs=gwnz&V@Er@09YDsZqiF4d~hA7(0P2*%@NfbCE%*2@a6c0W5!8UKx4` zP2(^;KxCCojQY}NbnTXDvwh1e^gS=G;Mh;7?oM*|&N8w&)ROekMbY{XfO3`^dSsN=|MKxUN4YPV17Ln=Lw&Uq zq^TeD0TaV~F;GK4L)lnev5s;R;V+Ue8Ud4vKKY=op_S$%{WCRioWcvpsLyA(d4|cP zR6*}RlIOa=2C^>%b83>h#LRQ5*E^yTc1YYH3bteeneo7|1 zA&YwO@mJwNoSt;KW7>TUzs^?%N(`p{ta3oJWae3o^iV3MEa*kcJ9NAy6u-U6#s}PD zCaWy*jcC_{qtw|hE*EClbSvq;0T1YmfICn+dzU4TRLwcaXqBrt0La z!=+c`BY3CoCDVs*%O(OB`_~m^2?JDNJ-#>s^sw%9lm|@&7*!NiGFSn*o#t7@;i?g0 z_O9DT7m@7>z$kU6ygk|O)lh2Y3N|}JNq+mJOpidl!DojKCEkXi%OAecvi%7hs~69E z^Nq((_>LZTPa2RGF7Kyu;Yx1jTR(Z{_$p+~?A(Cr?N;{&^ORjz68w02)l#e6DbU=y zybE3?kmH`lt5i^f_=lTAeq|ZG0Gj$xEg5xWN=cu|3W%uz0(6s$63a1>ilzNhBfX=a z@mC0;Eerb_1FCzvLmu{w*Y)uo>*>sYiu@T4Bm3c4=Lbrzf3Q_7nP=T)=@5-zGCN^G zf;)q{%{}Uo-)(egoR!On8~=8A2=||5AZc%L%6_C38d@7Reh9CFHsTPWEKiFkb^JRm z`1hDH4#*2KBkf<9Zk%bkW}uY*PyKZ|?`%2Zr$;q)XK(YGeif{f7%>14rpg)dnd60g zXVgpd$ZqkRD?d3vkkUfOzjQ-&bjbmmp)e2kb@)3J6HVf9$#xT*w4ukm&`nidqKF8} zNxTQ-^Xk%PzklUl<KvFuJ=@9lu1BPVCp9?f;hWL?-)$j3L)h$B^- zxHDa?UTkW5pu=n~^Tca%jPmU(5FknLJ?65$3ED|pJ!tmjEJ^AxlDv(&;J9Aj5-6Uj zPlZ(J=rq%tB9d1!C*S8M$PuR^rnt0`0?Qza0~{-f`yG#WB937YMqtP{Y=pmAl{yq} z7QJ>02JKJ~AtXxNvtr6G-4`X#0&2A6seIVNFPDhMNV&)vE5iWx7_;IFd^hbC1-JyI z@WvtMkAp}VnwRtqVU1^jXQ=_>+dm14sF9A~K^^?+HPumo`a8N>{k;8`P#iDS`#E{X zS|hflN_+HnyqHp0`F&Dy;iVXA9wTmRYO3KUf>_bvn^LU6jH1^XYG0Z*uMs8 zjPIpZKT=?~HYXCy?7htTg@MOaN;yyn!^ndTp=_w5*w|3|B_T##%R_cRWGd~*?T9*x zfCF~db8Qc9K$wBrqa*lW3h3<&+u|UH#KSW5Fe*iR+P+?E#`j}`MJz2kyTW(n3GXeC zd#@Rgqr(mYI#4~af$JY2-2WvmCoCM;zXNw2ueUX_&c13C9*>{0H>Djlr~926DO5;8 zn>x9Xjw~j1?*IwzEHbLf@q8oy{GR3jqF=nqm9jSZYTBSM>_4mm0RVqIMpsX-g@VsB z_orwh9lmT{if}mZ&)w!ZkN?j-4x{dKlmtvU5`ftP3^@W5Et{}aC~|xZX+2tvG@8IP z+kK+3YKh~0t@1@pT2To8q7mPk8Ts!>8q=?)9F|xsLKqb;TjHJa5S7XXS@qztlN_zO zB;@TyU|#bo0z8wBfF}wlyykJhnEH&i{8O0PhUr=1;BPG9{it%g!&SLIImMMTNNy&p ziAdm_0eiH??He4l{k-OH-?AZ^1zDplJb5V$v~)IZA7B0H55YWm!iUar{0#M1d&Z6{ zGZy^EX>z;;g%3GVFH@8n1$PI0RQ_;dr&uHqIIOQ$a~eVbupP0zD>Qh)L*sZlCd<7# zY80t-T;Ah3S_aoOm-%u&7k&Z(e6e~zJ#HQq~@@30w{ivVrv??<1&WY5>Mv{%Rd_5UWgDlkPZs}`H|7#}Dx z>U)dHrj0zSiQaUKim%sL1Jo@&-mc;K+8dVi?H-Rl$bj$%X~aSYlj?VfO0viz1U>3_ z*wGNgD3cB*MM^LERiB3WiEh6{V??E0s( zs81K01u6vs^N&*Cm~s?x7M*G^6iEQAru!Am%{PZ+EcUe2E{N{;>+YqD{|>%iKZ)}X ztEGT1lh#(Z#pl%eajA9SCwG53zkI$~KkxQDcULB6QYa2i0rV&Q0hWZ%*PA;bl8_H2 zi$SBe(2HgBF6RR#pcYyf_2h}#g~GrKnoH??O2q(x~rSW3SsFPueS1CM#bkJtr`~XN6@omJ}rEuP3(MXK=le8xaHs zNbb~IwP3O3J%(AMe>@#1rSqvIADR9Ln(wJz?f&{QDkviirs51)gPIv7#GyR0rUPZW z2t;^FaTmiw%Ox>)RYLImE1r}6#{pw?M$$+OEd)X0&Q|UneA8$UBOki5D~E%dW(FO@ zPyw!1tBsXBZJxJ}j|HF6eL=n6$I*`q5|UPY>+~oK9&ePgJWhcz8P{IwYS5rCt9zqT z;Zfe2b@*&eO`zD&^GxZTmP!Ap@uQ`m~`}N z6$tBZ`)ibR3x-hs7J&jf#JgbTLB%K$b&bkvT%HFG=5w~R)a=zupVVsq{(q7Fc;P?0 zeC7gZZSU?c_uD=(jQhh_Z`WC0-8Bpqx8gG7;R{L0%5YhPOFL4-0q-+bFwMR^oapWx;gRpjliZ!FH$OFMOxDv)lfG+RC&4wIpMDv z{0mwZ13K$=t|>c(w}_O+sYvzo9U{h{xrF?n9~Klw^|FMnP1epO@QmtK(Hu`KTSaVm zgYvVDA)Bn%)_RGuY7LkK=FvQNk={r$De3`j9>+c=o@YM=tU`(mkatHaEd47zTW1$o zu%H_<((wKs%@U*kDucrC2Tf;IORlqHh@h%Ycz-BbadTq6R~?JvF|uoPiW;c3D^ZO< zB{u)gmQ<77l*bx9ZA5eDmYZ6Z9Ll;6Yui)^re!?sS*BTA{6=o778`Qx1C3c$dLygz z)cOXB6CC4L(<#c@(n=38qGR?kj{=4QRF86u6vxMFqQ+s=~X4Ynj zXEwP^_Ircxh^99mOFTM{Zm&fAs%bkBO&}uA1@@}Zj-3Ik1LC;Xi-q268A+(JuL;7q)nr#4{Pu&5itZi+CWn|Fi6&4P%=?3 z5vX}cpE>9Gn9EvPRQ)5K9V(U7>NZ3#o$|3aQ9wu~RJgkX;Wg_M}baX5(Q#CZ{?d5yhV@ zfQnx+SW)G)D9Gppw6KSwIt=`@3Z$<9h^igu^J1+WT@*1A6>eV$$Bdks;A<^?QL}<^ zNx;XxW>#wVqZ&zw{CmL6=&{?oZM0ic;BSV)m??vUv}uT{oJjAKebrCpVCGlB{dB2E ziA`PM%6``}%?X`?nnZ_-VOm_@ss^PuJhmSrshE;+1r~9!&e|Gpmm}|{du&FL>wwja z3=XHu!}`>xw(2>C5K^z-$ZN4X*NVvHQjgAg2du4x&RBW1vP8K=_z*n3R^QywFx)iO z`;$fMErhWn`SU0VKfmU|Mf)dGPtE04Kgtvq-Rx*3fBr^-*igGwRwDrp+48VhZD&2% zXjozj$tagbdOU;@P@-{r@Y*iUc!ZEcUb5<`HkMbghms9tab7;517VS^I?n;+z?8cj zMH@Zw?m%;PCt}chquPR{p1T>Y2EfPTmhZpB<-Y~fLb}``bj%OS+srABsfNI(BM&gC zrh`Hw17QRSa024OJheO(5jk-s6Dc>gmeKVb;eS*2;^{08H^5+SSjeFpmRIvIy_e6* z>Kt)oY7EHBM|hHbRf{jZ^r4x*lQ}!z+j#84SNRhvM;iw=9Bi4U{-6RtajkDP^P!;1 z_Zi@lghUt^`T{TOe+%d<`>9%OpdtQ2ML0ME!kcK zaxp&uDq(GuufGzHig4xYm+`z@CP9J_p?;vaUOwTH>an;HN<6VSP^*7og3)+2=I@aW zj9Y+#2!ZtgGE$g4X6zyBZgM^k-oqEHcLi2n;xQHnXHD!?H{*rdhc3ZtCe#Z*Sz7-S z6j}@V?PzG>gaRLH?$Qji^9qd_zOQR_&qod2E{~*NKx92DrLh142-C8F*V7rqL)DGS zVG)V5`0(fSA0UwMS`y9;1W1-hmCmD))zLLDvD82Yy)soVYZcjwMhw`aVoT^RP9LDK zdr_60Rlf=$`m7~~ZDZwUr8i~UE0IRz$<#TFz4i~Yy5dDXaVdbe|&&jDJau(7OHSR8HS;C@@ z$!Vc~oglvEWd}oLe|Z-(MiU|G9|!Kg?(=3hdv&`dmIf+f|<1&7Q7D_lg{6mJ}^V zfN=1`x!9JtxnH0iFR^)RG{ceoRcwq}{_($TeyQIsJiQcK1I59hB*4`!&ifpWhNd`i z0pkkg@n73Jn=|LP}EP-`Z$l1MHU1cpvLccULLLwp!z%nC7 zQnaCxz$n;w^Gc22+3a6b0_!o`bf}>nK!XMViviIaf|~st7yi;!kAYbP+cSZZap{-OKfX`s(H_`;#e51(4K}W5TW|0i%Y=vmv%!?d9tAO@ zOP@RKkd!H_cJ|+r<&~{0LFO2$ z7KK?hK{hQsl*Tt{5&LS3R^Oh7-hnGZBxgNTI>d(yqAvRrj#Nd2^#i=QtYtj(-ZM@xzhKH2`!AIqIr5Hdj>2zHW`))Tb!Ah7oxDsV zZ7K!Q9ZAo=4e1Zq7mFo7ZTsvu4EYH%9rg%QeH`- z;HKYv8KrGx-%7qTnp&7G_?;HVepVsl*rw&u*Fln3Apz}P zV|hFFGR}XCCy0+QV-mmWd0>QMyV2AYK~zz(8C^;}WL&qbQI7{_$AOu!Au_38JYC@T zXPu+Gz%>3_A)z+GFp9y2gJf2!A79C`_`p_tw;Yzp=J25u8kXn&vp>W?6KcDFS%Og% zxCy@X_NUwZ;Du`IvH9Qcrsp9~=gAAnp{TR|P~4AE5X6UdIM>;+ung4uW z$kWq`)-xg6EXf#>_w|V)ss+S z%bpmbxBI8J#AcyIm*yt;)Hm)UDYL0_^qR8@pT@&MCd^#V@?wUE0wo1DTH4W6&GYRS zG89E!>6V00gASNs+dgkBL5(Gm&*^vcuD$!*{`y3vgK28Pue4q99^`w)?M!>kH8b|z z;rsVrjmEx>yP4lEDm7phRGhadNq-2iOxa~atYejNS3N_MR?AiR?HTfSr4M_t`Zl9K z9XIicRk zP3CAJj1=A2++8sYrII;G8ZnGbSMkRbRSRSb{S*=kMMW&~6W7UQ` zJodZALg;r<#0oNfw8T0}-ehcMrlJd&rR6i{XRS_-!>MTltm5{+i4+|hRniV+;z?Gt zMbuvwUfupZ;RcqU?qn`e%wxj%mwVQ}f5GS(o7)&@b9IOruphf0Z){Qr)-(E}s`<_Dm!4mh3GpL5WHi6xv20qE#O0+9lK;kVv!O5Mg(#BQ-x#}`M0V?kvV{ejf zsG9r8kuC6jOE{3EfA$-+aEdx)irg4er6-%{$Ur(rSU_Q)i*OR`cLwOrpu9S1p#U*^ z=q%^lSmGF1vB+LSF*1%iUyg`3e6_;wtWku&`r3)Wzu=`zC#gBewt7;!IwDWYDS1N$ z9A&JkGgNH`C6XBUTAUTTBG`787ApSK9pW);v*4heN<942AN#B4IfxJYhR^3mFUcoc zso+!>Zq{?iLLwtyVYsW_V9PJ{f7htjmOcv`2o4hb1+OlO7NOq)jBNxVMnm;hiO;5f zJT|#&;Mw~s9(L^I%81-eO!~WEwj8sRB|+S*2w^DtQhC^Iv8pcX^p*u;4mCYlM@gZ7 z{3%>D?6zpWuZB(GCvW|y-^oB{?Yv2#~>;l_9>sWLU8qk8qW|8nO}ewev0NQ{Jb_>g2H- zoBCAgr$aFeCQLiXhK?QNZD)RR8R5D?a!lPq=WH8L-_q2rMYo)@khrJ|Gi$3Yrz@om z;VRL^#8T`36-z)WuF$EXdO|dCc$-ihb&hyvsk*YS&PURR`N&M8njX~~1cnt3VJoR( zfw;?@tV9w?VKzj=OxN*t77v;s1njKsWUFQlBEfDPZ#-|fOTGR`*lTl~Z5{_^@%tp= zUMpH%Z%9~6ZFtX!l0(|LJmb+aG5vAT=~|2)Hb#R znf>LyiCfcH7Ud%StAJOgcaQ5twjo0_BS(J3-H@ViW(Fr@NERaXb;50+kVO+U8Pw^t z346h|Z5KNnIT>@iITpT1-$a55Oyb>fL9{6CEDwI%&&XhLCOe#Jx{4HWzjg-^Fc?82 zZY;>|E+uNV_pOg!f*LTB>@Y)qsyD3!?>y?&atTp`U{4(ts$PeH=|}=N{1^zl>JHDKsVy@1$lV>-)-0!V7 z<|MvGn3D`iSpCFeHq99@$oGr>acg+M{+liio2!ecN`3zWMCKJjXOi z2mctm#^{fIq#DS8xBZGyqnz=~-MYbcy60>d`#vYD8~9brp64~Q52{w$ z;}Of}+viw`r#z0u$;+3r`}L5Myxu#K4l&qA>&){m1vE}`$xxPR1xKH5%pvWq)jgOh z!aNgIF`eOHN!28}EZFaZG|r^JEl4$HcP%&?JzaGhrt2_}9e-{2^FLe`iDylGmnaHM z59t{+Y#+ESwA!l8&sS!fBT_PDVF@v+B9TG|U%VlaOI+3K3PDX2G1*&lUThW**{xs( zUX%dtaeyJYm$j%yBK=^zKr;5G!!bDEq3}M*qi1o-yZ$o|-R#fSr;P>@T@X2V@4DDWbR#enPg#r@&_K1fif<^ifeMn{G(kj~QQCwS0w$V*$|8cu&l;rYIg4rbru2A4Njp_@6Nc1KClauzg(0IiMEj%fNL4+XJ`wK+|i~%~?6-wxv zc6VzyQaaWl8V06gB-kIsW)SJRQmyiCDkK3LDxQ&Gx3>Zrwzk?OSp~gB!@DI~FY@s- zUhw=USCB`cwY27{+F>>V~;MJY`@i2Ng8_KV7a5t3*D{UAX{N%pZr|Fz#BR;P-zhfNQT|G+~|9ZNE{*z>%wD(kkXn zbk@6jeB}uutHqB(jzxD@%~`#wZb{*qoJe?V1g*ZkuZ$VU{87h|*gp9> zidT7)1vH>0LNI2z7-rHfKNN>9@qP}}V}hHGp2>(YQl?#{_$~=$F^ogT*x+j((f8YA z<*BDOMgcKUVV(VE&6lzBIrtbuew9P?>mRj;aTH7QA`Q$vqSrp{8a#Yl2bGko5<7jx zdc3DNm9U2Ta*vMcc!|vvoRB7kiMrUtFVBZBKUqcQ2ZS6j-hNV>Zm2KF%;U=_S7zdx zOT!i6R{0+PZMY*XU#~oE8R@+ExZhOBD=yDZkCflh97&Y6 ztRxCQS~2O%fqkzTn zN_45a_!;;1PJTHtacAI71^r~UBmcp5ARSGAi@m0wk2sd(Ys)rzsm;b=I`LGf{vEp3{BN+c zN$EesgAE_nSanQLU1XT&yT|=&K749zc|H$h)i$@pOlWFx@|zoAd}zorETR78a-MV$ z*t3;_ddkvJS{5}(?9^BRHtLeT<6uz8HbeaJ!xU@{T932Qw$Sx6M)YfZ+8Fa)X#Uh( zu`SO>eUZAVbtd$}8-IGKr(Ro?Gt*|>elfJP>et&cdl>Uy<_Z<(Ptb-21Cb)_>C8 zk(LrEzhM-&uyRT~t&1K(U^TQ>&6yg|ZN+hbfrNYGS2%JBWNg`k;U=~L-sO2+B2;Fyxm*47&bqzVS0n(-A zR|Q+kNr94b;)cnJgLy*_1g6C@YQi&`qHnFh$O9H_saEV~E}E3G!D$cdZy%LtnrWK3 zzq#yhySW{+lu!#M87QA-J*PO^UjVycx0GG^vc;yFnRp2ZLQFD0;eOkv)m2#6e0EO! z`SqN&aD$=eLf~>AQSsu0gQajdDAwo0GHqb+gmK0ue(#)IDC- zBW!iR(DcaKkB{t7{3g0=@8<5uX8a12)Z(<}m9RVuEjPvVmKhjdtb+_3$bu%5dAF zZzzH~{x=XtouhD`Ru|85r2E*6dZ z0N3Ovt>K2yb3P>LS>S6E@*vKFAF!8vpiX|`CUc!D?9!?1Cr{$-)7(`nBPUGMg#;$v zEy5oW6XH{wDjbb@T$%wE2lW#wT;yfh~cX?+mZ#GbeXgkV^q*? zr4uhyQEfaABlPFo=7z62R1&YpsFj>~_meM{YrL9ag#-E25byo$B&?SsdLR@fy8ByKv)U0Vk>>1y9! zb9JAAQw|V+ZiGaZR6*SrV}anDxNO^a+c6L)6VW{1L^E0?#fOWCBPug`M2zj+v~#@Y z<-)|jDS_|dQAt24hitaC;AROt3F)skX(>T3i6>!0A6i4I^RK_F5Wf#Qm)Z_%%PKk} z^*>ik{>j+4NAw@w{dy*ikD&{E6-{ZUnmC1g1;-_DmR_YUjKB*BxWV878*@mQ0GpYU&^a{kFfR7X%lDi~^ zI7wLLNnD@wczP@(aF01t#vO*!9~Ue1LvE?%=vh991ZKR2m78Hwts>Nr2*rBD(KG$B z<}F5VPWA&v8N;|n`E*8j5RPQ09*}v{#u`WW178!WfB(r)9GVgi9xopsCUa7eAVF4} zqQl`NDdw#wi$0UKKH!ALWX8N+`AeegO09(CYG*L6cY8Xq(KO4$EJE0NJy2p``nd$x z=H$w*4jfXf?gQchhLpxF9{c9xelEPsdfo7E>Gg{EL@Tv`P|v=} zQCs+&g@SU?#rYrTntNuhwB}7AbcK#aM|s@GxYPH%e`o0eXxcLHu`8GxG}nC}%o#GU zP-Y+e{+PfK`U*LVoQG~h-NfzC+A*7Oa-alQB9%+!v&p=iSpIMu@C64)%f8=Cd_bY; zvO{Lm$=Yi1;SSg@Hm^)SL@TU?g>;{h;y7)>YZH{IpVMi)}Q;X{yUW)~d@RDW}K2r1Hny=uU zgHe!}L3R(J?ej^*rg~A-AQ=agP#g*qR1r;=PE@PPw?|FLM+f2lQ21PCmQyDyAf=2`tjP{_5srwr~~mZ$)VvBqxhYF^_4j38|~AJ2kRdPhajNI zR1-br=14-R>p$HG2JHz4bR#4gLx*%l^ceXDU)XM6qx`g5OpPNk8xDlT)%$`3Sr`k} zvlSMHzVryyTVGQgdZ67o;ABFt5vA1S?iz6kLHKFyBm?>IMzv-uF-@^VAj&3R3a)!-q(XN`h`H`9d1=|8L8e5Fz+i$pb?kct#+q!tonp?j zO63otu0PL9W?BM#@EHQxm(l20>}_lQM-BGYc&KDvmMCqS2FywUeCc$eb4oJW)QavS z(#KNBw<;x>nl^XJ`gv~0wd*T33j68vHDA;4#J=I8JCC>>56s}oaF~^~OrXq1JLacT zs;Yz-1i^k3`|B+J{OmEf{NlH`l(W*xr)iZ~yrS62y_TohBV$`8_qswHFpBkDuXxH} zg~0b_?L&kjXCQSqs3l)tv~-M6nK9o#|JpHgwRg{!5DmrN1J7FVJu>Zuj<$9vb!KOJ zV>Mpu_|L(d+nq9#c~t4?ZAtv+3$_aWCd`6! z!qy8Ewf58PWvoz&hFUUL3()(!m4BGI3Z4qV6Wb4f>5(!FF%D0$BSy5EV&uDFUvtq*KV|r2~ zL#j{oWy<_s9;&g8)i)f%iu*zrBZYM_;?O&RBN|*Y$8)VrpTn#__6tC!Hg=Hab7yoF z5*R)=);omAwa_oK-;g^r0QHWJ~-g^R(yFX~YS3RKrGw~|oCx-Le%B*?Qdgf~!nQEonrYhJK_ z0(}xE-S3CQY;NRwoi2cFXvy3mRzF)aDJ?eh=-bWkL>0Jm=SyroE^1 z>JP)eNbw1=VYyIje{I@!GJ7VX(MNqkj+a@ljY9 zI1Kye^qdZhTC|~xlNi0mxt_o3PJ8~EvFbarR5>0DJ_;=MiC$=?vx_XCDvbSEF=zV5 z24?~qcAyu4RDm7l7fmL;;WXay!|7Afmp5br9t?Mk5S zw=KZj6_#@|g@{Q=ioTO|+FSA?GvuiH?p3qtM_~spM0g?8`U~?9*I!q`^dV7GC+WqQ z8j5Th5(T0nRqKmyY6-}5oK-m{V%e}@7Ju7{HmURACC&E{Vb$JZp`ka-z;JU#a2ref zzHB{K^yga$L&wg9u4@ulWEc3=IW4fqtpThjyfAnPWNNH0&gAT%Y;J~>0`vjdT8 zf&)M4C!~+eVcoKpq`2sZFlv-g*#}vagT!)kl*}~04zLo!ZbpT-O zvHp`HDXRZ+?vjd#%AW6y2V%*ee|vdoxEf&QJe zzkO+&`n2U-yQ6rzjxNoz%Fj{b0(x|vDzyGDc{tey*c6z|;wYG8J|$mocBA4@KFGEm zIg?4`{`@2nvrb|(RZiQMSR5_QHBfH)@P?5-|0v&zUaR$2N-&01)b=l2d|uON*|9a& zjgq?)6Qzn$4y=;wFmNXn!dU>!;i9!J;qV!jm&G<)uz-E7?h^1ja-6NU9GMyYEg=uxtN+M z0lF+Dfe4Y%uv}oJ{E5~EVR#t5L@85mmS0$?Edg#o_!71)3C-of^F&-RqoTmp<02lD zaKNJ;agaA;`T*8XIR7Ns*fheO+2{oLSP6qP?xb#Em=;OlsS@L;P@*4!0$hR|n#S5z z>Vj{l>(te3#~rWxp3aNh8sEhhde0IA5VThBA|yzBHbpv-`6CD!{qmvAg9kFDn3ycZ{_~cj&Y?ge$RCVX z5lfZjG6~=517ix2bi^Pi5xYBmUoo(|YoZ}mmLg~H8ko(OQt$DpE{-MFa@Z#|n}*k* zcADvER{wOB@rz;A-NJ1@QV~WIu9Xq1@W*-APrIm1o~wR3+~u+`(d*Ua*@Q^w8>^XD z^AY!N?ptq>5wX=88_0C9;?%deZF_IZ6{T@o@J|41%tnrMV@+F*ABy^f0iBRa-3cSc zWU261xVGpQ3uj(WLjrE{;c zsbqkb%~Y%$z%#9qF>Nk*i*_h3>4I@JvjzrzUtUd5f8!TMo^gVK7mAJAJRmpQO>}Rt zISjVrT6qUmWazjIF%}(*9UJrTc-$Bm4qrYEu9aP+E4x{;bG6fVnQ9m_VuX{_U^op| zG#z9I&HkpWB>;s|Uyx7-bs1@5XJjs9d04MMqmF}F#W2>^mcM<%7AWi}mTH)Bk8Y~C z#`aM~#zv|F$Le!mLvAUn8B*EY3r~$Gn4f>T6JzZyL0{U4({Ii--jyXJj1L37^50z^ z@yzN5Je7u3oijwzjSpHxmh9#jFdW9OTa&h_8^ zOueED(MMZV7*rEI+ny1pze5>bD~zO6|8D8$Aj~S0J;+W)>H>41*6FI=sjC$0qOnm9 zWhZZ$f47s%il)_N!Q;hYJXdN{rNFn&9_Bd9kv4jvse$0h)62VcltrX(+)wiQq>($c zsa7hgE9aIi*sdq?BY}EEd7ZF44+-XX7#%h~rHkaVfxiMdG2E}?ro0Z{s^S}-ic4qA z+b7Ii&@VkO)d<*2x41DX;>(dTb}5*_^&YCOB;*p!hF+qg_Ta)ZJI5;(=lDN-v~_YvSEa|h*(WNBDe zX=QgQZ=>8lbhgN~HPcQb#{MC>E2u*KnITR{5nn`AdLN_Grr&%x!|}};UvB2R$IIaN zOt_>y+Q;ZRt^MJWB>%q~wQpY(U6@mG+EwoE$n2_c`aK4G#_B$CYuY1S#W|_ag>u6w zsbfpJoM}eQwPT6gO(2i3DK@#&HLH8VXO`D=2NkL49ud!yCkW8;HfzCh#%6HDb$^E; z_|0m8@aO#+e%6w|B}*jvr;3E9)y#{WTP48%oXo1>5`jW{f+G@9yR! zL{zk_mA&cDDx(mcmt*a~D)oZ&gT-){dCs-0{-!G~%b|s)aDM!>GnE1vx9gnokYK$U zRQn6mMfJOhO)gm z_j&3`x1TxO1Gng39DoHIR&Jt9v>M*F;h$MUeVKyA(wgYtbYFXm;c1w#G%9N#_ZnH+3m7B>sU$+XhZ_L;r?ecszPN7 zypP?-o;P=Q88i0@^A!;b^KI9U;}hzyZ&O-BWD-L~!Y~4?T+|dbnJ|eYs;>)iJF-ao z4boT7?q-9nt);(b&c?u>5lJW@^FK6@6khY*z>Cg2O6?HS7zB5QY&OFX0!WhCdl`SlZdv4tFwMDV4d#kkZB zOQR#Mf5-jG7L8V?*(*9v_r((?PM{0hr8m@6i){wWB(m>RZowMa7b=VL`8U=a@@HSd z$lq6(qzs-qk&-rnK~#~USQ-@O`a`D#ik@Pz%E*2bB_rJ_nd9op&K~;8QgS+ynzczP z6X)m#vyyhTibQz!cSrdt<=bcs3M!FFB;515Kh-VU?da88oZvN+XEM!$@i?6JMC27( z;Jh7Y$3OnkuvJV?S3ftp`NHg`m0Nt~2)}4_oe8C0!76k@0r$ElVn(>S#od0j71H;1 zE!XP;WvRPEBtI<;|9Rr*QSS`uz7_7~Q8jH0FbA>5h5b3vYEs&JYWeuQjt}hN^QeuIq{oV zU+EIwWlhD?gdZ+apQhW=O}}V?P2&cA0;dT^xa|#9F0UV|6Qyb@6#e~4$6E+9DiWmbrq}&#Zqv)zh6R=ZJ~#1m z&QN+KDkjY6-Ym%2s?DAxv~OTZBvG(p$ZA+V1FRf!;6@Xjz{Hp z6VGG}qBJFRy}|n@O){R35LD1=n6Vswf$FnwzH1EqHo{SUhHhMQ*SM~3=Mq1}6%bfU z=Mo=9T>9?PV-Ar?mHTg@WWo%9{qV`+5GA2H>y+p`cXm5y@-e0U_7#%(*249GxhFbJ z;ctV2HpVPrw0L6~R?=vliL6e_Z2o+`Ra7rq!I)>r0JjqFR795Zf#a4k{}8o$Nr!@y z#YLf#vV^5Oezv>(V)|CZy%Xt{vW+ddboEhHG}RCrUCc;sgC9tPCB+Ck z%+690WpVbVXQ6e`=-F%BBl^LTpWT0M#%f|q_QIL^R0vrziJ%t{=WLH6*di(^xJhAP zd##`$;>AYe+Q`^NC8|F==Hc4T#NkRtP7!wNr6lIkp7E?>@NJoO!QpqkXorA?A{cll zXx{s;7wEl8693cVx0w6whldOW1$mY2H2Z-vyN4nsQ#pwsHL^dOmnYGPLzKd0y(N{9V#{0DUN^d5M@knY2F(kBT{@@%uJe75Bg$#O-P6z zVx-Ea_rO;#uI+BR>vjyAc(p6}?E=@(L6jU(nWpHGsnPbiBuBp|%FFEl*$yf~ML?)Q zlrH34KB_I3KZNG^5@&t+aS?=*m>|`vFRkq760<2jM0)h;9-`S zThwbleSwnVt~YrJ`PxDgRIQT%WflS6F%3dmTmu#fb@kDneL~}{!s&D*%Q2+h zI^|9n{S24&P6|6%C&@3jMsLNcTboKYVt7BS>oDyN$r_in`7>t z!m><*H-Fa$a}%PN7>P)l5@eLVUI~k0%;b(>Eh8)IiO1pXMGH>6gjrAD2yNAWgA^CE z9^$Xp;(-MfE|TDJ#O?NZ$M#VN#%arZqx}hB^@k@)sb8!#vN$fQ)OORv#3P5gI4Epw z$Edq5_w)w`2Q+)DJdwb``C|}=+V{;sm>6O2`A16^wlU-gy1cM>Mv^H@_d6XhdMJAN3ZZc$FpH!NG9kwROFyB%`~AVp5V)i6H=J1{}&nF4rx-X|1IOA zS5_4qACnsQlXUTOnI4|^HVXlCZoSFNO^<(KSZAg_5`9K4Wv;{NV^&i_DYgWiv$YMd!D|&_?nP2gXk22X8E1L+-?G zup9whxuhQ@l?MYFi3?Lm)7vhvaC0b9O`{i1WTRpS)JNoa) zFprf=!WNx24qm1Fr5HG*F%H#fnv`Y}KC(yOBso0JQA@%d&mE-kVo2jnZ-?8nuy4f6 zJM#s1q={HS9>gkfPd#*49qIk%gs`i2+EuyZ$~50t~EF7z_gVbqD|V z_bGe;q)8fkDzZ*y)-BF&Yl$|H=gapJjqd101N_|Hb_i{vYN1 zSIYlR#sA+SP~gL$rGcp~5FoHL_VJemzL2$@A%T=3 zpou`h(ZJLi5Ph(=G_^7U0*LmO|4|G|2sjdh|HyF->Udk6b}o&6s{`k(;dK zWVQf?0R8}`03cmn06-T)0KexDfL-hV)&Y`%@_GP((gKg+|2vN#5cUQD=?Md<1aJTV z>8k;71_0Fy*#8eg4*(eR|BgXAKyje7Ab@iWQ4XLD02si5$OHfuYy2xK2k=4hpgM&D zxC4O7Yy$w52WoR50H}?L0HAhf0Hgwd`UzAwUw{ArP~U)#vjB<#Ky?P`1GPB`0My0^ z0FeAQ0PwoXKOdA9q!XkAR0ohB0|1O$h+qJa&R76YAA;o30HC~}_L>9u0D$D6a?$`m z=L>Y+fW1c`905Ra1^}Qo<^h0of!Yj83rYvl2hssLm!Pzueh0M=7$^VQ0U8&eeggF! zsNSG{XaoT12jvB|2~_V~0HCg51ojU4fc}3D68NM612dlh16w8s0~ZCx2iTLNfrBpK zUs)Rd^FaxT{@3p;@IAK!3I8|OYieN+oK3J+TEGE5uBD;wzi+m_wI!Xdjg5sNovEUu zm7zTlhiav3X$Z;Y3Iaht1Koe6frI1(4FBc+6JTd%_&+57iDqJE6Z(I|{NHK+ H|49Bn1164{ literal 0 HcmV?d00001 diff --git a/public/glitch/glitch_assumption_toggle/sounds/blblblbl2.mp3 b/public/glitch/glitch_assumption_toggle/sounds/blblblbl2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a76bce9a49c2f4c5c87202afc7c64a01be702feb GIT binary patch literal 40994 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 Sz{^eq0Q>*yV*kId>wf@O?e#_g literal 0 HcmV?d00001 diff --git a/public/glitch/glitch_assumption_toggle/types.d.ts b/public/glitch/glitch_assumption_toggle/types.d.ts new file mode 100644 index 0000000..04d5f39 --- /dev/null +++ b/public/glitch/glitch_assumption_toggle/types.d.ts @@ -0,0 +1,56 @@ +export interface GlitchComponentConfig { + id: string; + name: string; + version: string; + params: Record; +} +export interface GlitchHostBridge { + playSound?: (id: string, payload?: Record) => void; + stopSound?: (id: string, payload?: Record) => void; + emit?: (type: string, payload?: unknown) => void; +} +export interface GlitchComponentProps { + config: GlitchComponentConfig; + onComplete: (result: GlitchComponentResult) => void; + onProgress?: (percent: number) => void; + theme?: GlitchTheme; + className?: string; + host?: GlitchHostBridge; +} +export interface GlitchComponentResult { + success: boolean; + score?: number; + data?: unknown; + error?: string; +} +export interface GlitchTheme { + primary: string; + accent: string; + bg: string; + bgSecondary: string; + text: string; + textMuted: string; + border: string; +} +export interface GlitchComponentMetadata { + name: string; + displayName: string; + version: string; + paramSchema: ParamSchema; + defaultParams: Record; +} +export interface ParamSchema { + [key: string]: { + type: 'number' | 'string' | 'boolean' | 'color' | 'select' | 'range'; + label?: string; + description?: string; + default: unknown; + options?: { + value: string | number; + label: string; + }[]; + min?: number; + max?: number; + step?: number; + }; +} diff --git a/public/glitch/glitch_ccd/assets/index-D02Mu-Ij.js b/public/glitch/glitch_ccd/assets/index-D02Mu-Ij.js new file mode 100644 index 0000000..63f0e54 --- /dev/null +++ b/public/glitch/glitch_ccd/assets/index-D02Mu-Ij.js @@ -0,0 +1,9 @@ +(function(){const z=document.createElement("link").relList;if(z&&z.supports&&z.supports("modulepreload"))return;for(const A of document.querySelectorAll('link[rel="modulepreload"]'))o(A);new MutationObserver(A=>{for(const _ of A)if(_.type==="childList")for(const C of _.addedNodes)C.tagName==="LINK"&&C.rel==="modulepreload"&&o(C)}).observe(document,{childList:!0,subtree:!0});function b(A){const _={};return A.integrity&&(_.integrity=A.integrity),A.referrerPolicy&&(_.referrerPolicy=A.referrerPolicy),A.crossOrigin==="use-credentials"?_.credentials="include":A.crossOrigin==="anonymous"?_.credentials="omit":_.credentials="same-origin",_}function o(A){if(A.ep)return;A.ep=!0;const _=b(A);fetch(A.href,_)}})();function f0(v){return v&&v.__esModule&&Object.prototype.hasOwnProperty.call(v,"default")?v.default:v}var df={exports:{}},An={};var zd;function s0(){if(zd)return An;zd=1;var v=Symbol.for("react.transitional.element"),z=Symbol.for("react.fragment");function b(o,A,_){var C=null;if(_!==void 0&&(C=""+_),A.key!==void 0&&(C=""+A.key),"key"in A){_={};for(var L in A)L!=="key"&&(_[L]=A[L])}else _=A;return A=_.ref,{$$typeof:v,type:o,key:C,ref:A!==void 0?A:null,props:_}}return An.Fragment=z,An.jsx=b,An.jsxs=b,An}var Ad;function o0(){return Ad||(Ad=1,df.exports=s0()),df.exports}var f=o0(),hf={exports:{}},Nn={},mf={exports:{}},vf={};var Nd;function r0(){return Nd||(Nd=1,(function(v){function z(x,M){var X=x.length;x.push(M);l:for(;0>>1,pl=x[ml];if(0>>1;mlA(D,X))RA(w,D)?(x[ml]=w,x[R]=X,ml=R):(x[ml]=D,x[N]=X,ml=N);else if(RA(w,X))x[ml]=w,x[R]=X,ml=R;else break l}}return M}function A(x,M){var X=x.sortIndex-M.sortIndex;return X!==0?X:x.id-M.id}if(v.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var _=performance;v.unstable_now=function(){return _.now()}}else{var C=Date,L=C.now();v.unstable_now=function(){return C.now()-L}}var O=[],E=[],G=1,H=null,J=3,_l=!1,xl=!1,il=!1,El=!1,V=typeof setTimeout=="function"?setTimeout:null,Rl=typeof clearTimeout=="function"?clearTimeout:null,Tl=typeof setImmediate<"u"?setImmediate:null;function jl(x){for(var M=b(E);M!==null;){if(M.callback===null)o(E);else if(M.startTime<=x)o(E),M.sortIndex=M.expirationTime,z(O,M);else break;M=b(E)}}function el(x){if(il=!1,jl(x),!xl)if(b(O)!==null)xl=!0,fl||(fl=!0,bl());else{var M=b(E);M!==null&&Fl(el,M.startTime-x)}}var fl=!1,Q=-1,hl=5,Zl=-1;function $(){return El?!0:!(v.unstable_now()-Zlx&&$());){var ml=H.callback;if(typeof ml=="function"){H.callback=null,J=H.priorityLevel;var pl=ml(H.expirationTime<=x);if(x=v.unstable_now(),typeof pl=="function"){H.callback=pl,jl(x),M=!0;break t}H===b(O)&&o(O),jl(x)}else o(O);H=b(O)}if(H!==null)M=!0;else{var d=b(E);d!==null&&Fl(el,d.startTime-x),M=!1}}break l}finally{H=null,J=X,_l=!1}M=void 0}}finally{M?bl():fl=!1}}}var bl;if(typeof Tl=="function")bl=function(){Tl(al)};else if(typeof MessageChannel<"u"){var it=new MessageChannel,Ml=it.port2;it.port1.onmessage=al,bl=function(){Ml.postMessage(null)}}else bl=function(){V(al,0)};function Fl(x,M){Q=V(function(){x(v.unstable_now())},M)}v.unstable_IdlePriority=5,v.unstable_ImmediatePriority=1,v.unstable_LowPriority=4,v.unstable_NormalPriority=3,v.unstable_Profiling=null,v.unstable_UserBlockingPriority=2,v.unstable_cancelCallback=function(x){x.callback=null},v.unstable_forceFrameRate=function(x){0>x||125ml?(x.sortIndex=X,z(E,x),b(O)===null&&x===b(E)&&(il?(Rl(Q),Q=-1):il=!0,Fl(el,X-ml))):(x.sortIndex=pl,z(O,x),xl||_l||(xl=!0,fl||(fl=!0,bl()))),x},v.unstable_shouldYield=$,v.unstable_wrapCallback=function(x){var M=J;return function(){var X=J;J=M;try{return x.apply(this,arguments)}finally{J=X}}}})(vf)),vf}var _d;function d0(){return _d||(_d=1,mf.exports=r0()),mf.exports}var yf={exports:{}},Z={};var Md;function h0(){if(Md)return Z;Md=1;var v=Symbol.for("react.transitional.element"),z=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),A=Symbol.for("react.profiler"),_=Symbol.for("react.consumer"),C=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),O=Symbol.for("react.suspense"),E=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),H=Symbol.for("react.activity"),J=Symbol.iterator;function _l(d){return d===null||typeof d!="object"?null:(d=J&&d[J]||d["@@iterator"],typeof d=="function"?d:null)}var xl={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},il=Object.assign,El={};function V(d,N,D){this.props=d,this.context=N,this.refs=El,this.updater=D||xl}V.prototype.isReactComponent={},V.prototype.setState=function(d,N){if(typeof d!="object"&&typeof d!="function"&&d!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,d,N,"setState")},V.prototype.forceUpdate=function(d){this.updater.enqueueForceUpdate(this,d,"forceUpdate")};function Rl(){}Rl.prototype=V.prototype;function Tl(d,N,D){this.props=d,this.context=N,this.refs=El,this.updater=D||xl}var jl=Tl.prototype=new Rl;jl.constructor=Tl,il(jl,V.prototype),jl.isPureReactComponent=!0;var el=Array.isArray;function fl(){}var Q={H:null,A:null,T:null,S:null},hl=Object.prototype.hasOwnProperty;function Zl(d,N,D){var R=D.ref;return{$$typeof:v,type:d,key:N,ref:R!==void 0?R:null,props:D}}function $(d,N){return Zl(d.type,N,d.props)}function al(d){return typeof d=="object"&&d!==null&&d.$$typeof===v}function bl(d){var N={"=":"=0",":":"=2"};return"$"+d.replace(/[=:]/g,function(D){return N[D]})}var it=/\/+/g;function Ml(d,N){return typeof d=="object"&&d!==null&&d.key!=null?bl(""+d.key):N.toString(36)}function Fl(d){switch(d.status){case"fulfilled":return d.value;case"rejected":throw d.reason;default:switch(typeof d.status=="string"?d.then(fl,fl):(d.status="pending",d.then(function(N){d.status==="pending"&&(d.status="fulfilled",d.value=N)},function(N){d.status==="pending"&&(d.status="rejected",d.reason=N)})),d.status){case"fulfilled":return d.value;case"rejected":throw d.reason}}throw d}function x(d,N,D,R,w){var F=typeof d;(F==="undefined"||F==="boolean")&&(d=null);var sl=!1;if(d===null)sl=!0;else switch(F){case"bigint":case"string":case"number":sl=!0;break;case"object":switch(d.$$typeof){case v:case z:sl=!0;break;case G:return sl=d._init,x(sl(d._payload),N,D,R,w)}}if(sl)return w=w(d),sl=R===""?"."+Ml(d,0):R,el(w)?(D="",sl!=null&&(D=sl.replace(it,"$&/")+"/"),x(w,N,D,"",function(Ua){return Ua})):w!=null&&(al(w)&&(w=$(w,D+(w.key==null||d&&d.key===w.key?"":(""+w.key).replace(it,"$&/")+"/")+sl)),N.push(w)),1;sl=0;var Il=R===""?".":R+":";if(el(d))for(var Ul=0;Ul"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(v)}catch(z){console.error(z)}}return v(),gf.exports=m0(),gf.exports}var Cd;function y0(){if(Cd)return Nn;Cd=1;var v=d0(),z=xf(),b=v0();function o(l){var t="https://react.dev/errors/"+l;if(1pl||(l.current=ml[pl],ml[pl]=null,pl--)}function D(l,t){pl++,ml[pl]=l.current,l.current=t}var R=d(null),w=d(null),F=d(null),sl=d(null);function Il(l,t){switch(D(F,t),D(w,l),D(R,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?Wr(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=Wr(t),l=$r(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}N(R),D(R,l)}function Ul(){N(R),N(w),N(F)}function Ua(l){l.memoizedState!==null&&D(sl,l);var t=R.current,e=$r(t,l.type);t!==e&&(D(w,l),D(R,e))}function _n(l){w.current===l&&(N(R),N(w)),sl.current===l&&(N(sl),En._currentValue=X)}var Ju,Tf;function Ae(l){if(Ju===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ju=t&&t[1]||"",Tf=-1)":-1n||s[a]!==y[n]){var S=` +`+s[a].replace(" at new "," at ");return l.displayName&&S.includes("")&&(S=S.replace("",l.displayName)),S}while(1<=a&&0<=n);break}}}finally{Wu=!1,Error.prepareStackTrace=e}return(e=l?l.displayName||l.name:"")?Ae(e):""}function Yd(l,t){switch(l.tag){case 26:case 27:case 5:return Ae(l.type);case 16:return Ae("Lazy");case 13:return l.child!==t&&t!==null?Ae("Suspense Fallback"):Ae("Suspense");case 19:return Ae("SuspenseList");case 0:case 15:return $u(l.type,!1);case 11:return $u(l.type.render,!1);case 1:return $u(l.type,!0);case 31:return Ae("Activity");default:return""}}function jf(l){try{var t="",e=null;do t+=Yd(l,e),e=l,l=l.return;while(l);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var Fu=Object.prototype.hasOwnProperty,ku=v.unstable_scheduleCallback,Iu=v.unstable_cancelCallback,Xd=v.unstable_shouldYield,Qd=v.unstable_requestPaint,ft=v.unstable_now,Ld=v.unstable_getCurrentPriorityLevel,zf=v.unstable_ImmediatePriority,Af=v.unstable_UserBlockingPriority,Mn=v.unstable_NormalPriority,Zd=v.unstable_LowPriority,Nf=v.unstable_IdlePriority,Vd=v.log,wd=v.unstable_setDisableYieldValue,Ca=null,st=null;function Pt(l){if(typeof Vd=="function"&&wd(l),st&&typeof st.setStrictMode=="function")try{st.setStrictMode(Ca,l)}catch{}}var ot=Math.clz32?Math.clz32:Wd,Kd=Math.log,Jd=Math.LN2;function Wd(l){return l>>>=0,l===0?32:31-(Kd(l)/Jd|0)|0}var On=256,Dn=262144,Un=4194304;function Ne(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return l&261888;case 262144:case 524288:case 1048576:case 2097152:return l&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Cn(l,t,e){var a=l.pendingLanes;if(a===0)return 0;var n=0,u=l.suspendedLanes,c=l.pingedLanes;l=l.warmLanes;var i=a&134217727;return i!==0?(a=i&~u,a!==0?n=Ne(a):(c&=i,c!==0?n=Ne(c):e||(e=i&~l,e!==0&&(n=Ne(e))))):(i=a&~u,i!==0?n=Ne(i):c!==0?n=Ne(c):e||(e=a&~l,e!==0&&(n=Ne(e)))),n===0?0:t!==0&&t!==n&&(t&u)===0&&(u=n&-n,e=t&-t,u>=e||u===32&&(e&4194048)!==0)?t:n}function Ha(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function $d(l,t){switch(l){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function _f(){var l=Un;return Un<<=1,(Un&62914560)===0&&(Un=4194304),l}function Pu(l){for(var t=[],e=0;31>e;e++)t.push(l);return t}function Ra(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Fd(l,t,e,a,n,u){var c=l.pendingLanes;l.pendingLanes=e,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=e,l.entangledLanes&=e,l.errorRecoveryDisabledLanes&=e,l.shellSuspendCounter=0;var i=l.entanglements,s=l.expirationTimes,y=l.hiddenUpdates;for(e=c&~e;0"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var eh=/[\n"\\]/g;function pt(l){return l.replace(eh,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function uc(l,t,e,a,n,u,c,i){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+bt(t)):l.value!==""+bt(t)&&(l.value=""+bt(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?cc(l,c,bt(t)):e!=null?cc(l,c,bt(e)):a!=null&&l.removeAttribute("value"),n==null&&u!=null&&(l.defaultChecked=!!u),n!=null&&(l.checked=n&&typeof n!="function"&&typeof n!="symbol"),i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.name=""+bt(i):l.removeAttribute("name")}function Qf(l,t,e,a,n,u,c,i){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(l.type=u),t!=null||e!=null){if(!(u!=="submit"&&u!=="reset"||t!=null)){nc(l);return}e=e!=null?""+bt(e):"",t=t!=null?""+bt(t):e,i||t===l.value||(l.value=t),l.defaultValue=t}a=a??n,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=i?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c),nc(l)}function cc(l,t,e){t==="number"&&Bn(l.ownerDocument)===l||l.defaultValue===""+e||(l.defaultValue=""+e)}function Ie(l,t,e,a){if(l=l.options,t){t={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),rc=!1;if(qt)try{var Ya={};Object.defineProperty(Ya,"passive",{get:function(){rc=!0}}),window.addEventListener("test",Ya,Ya),window.removeEventListener("test",Ya,Ya)}catch{rc=!1}var te=null,dc=null,Gn=null;function Wf(){if(Gn)return Gn;var l,t=dc,e=t.length,a,n="value"in te?te.value:te.textContent,u=n.length;for(l=0;l=La),ls=" ",ts=!1;function es(l,t){switch(l){case"keyup":return Oh.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function as(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var ea=!1;function Uh(l,t){switch(l){case"compositionend":return as(t);case"keypress":return t.which!==32?null:(ts=!0,ls);case"textInput":return l=t.data,l===ls&&ts?null:l;default:return null}}function Ch(l,t){if(ea)return l==="compositionend"||!gc&&es(l,t)?(l=Wf(),Gn=dc=te=null,ea=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:e,offset:t-l};l=a}l:{for(;e;){if(e.nextSibling){e=e.nextSibling;break l}e=e.parentNode}e=void 0}e=rs(e)}}function hs(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?hs(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function ms(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Bn(l.document);t instanceof l.HTMLIFrameElement;){try{var e=typeof t.contentWindow.location.href=="string"}catch{e=!1}if(e)l=t.contentWindow;else break;t=Bn(l.document)}return t}function Sc(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var Qh=qt&&"documentMode"in document&&11>=document.documentMode,aa=null,xc=null,Ka=null,Ec=!1;function vs(l,t,e){var a=e.window===e?e.document:e.nodeType===9?e:e.ownerDocument;Ec||aa==null||aa!==Bn(a)||(a=aa,"selectionStart"in a&&Sc(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ka&&wa(Ka,a)||(Ka=a,a=Du(xc,"onSelect"),0>=c,n-=c,Dt=1<<32-ot(t)+n|e<W?(ll=B,B=null):ll=B.sibling;var ul=g(h,B,m[W],T);if(ul===null){B===null&&(B=ll);break}l&&B&&ul.alternate===null&&t(h,B),r=u(ul,r,W),nl===null?q=ul:nl.sibling=ul,nl=ul,B=ll}if(W===m.length)return e(h,B),tl&&Yt(h,W),q;if(B===null){for(;WW?(ll=B,B=null):ll=B.sibling;var Te=g(h,B,ul.value,T);if(Te===null){B===null&&(B=ll);break}l&&B&&Te.alternate===null&&t(h,B),r=u(Te,r,W),nl===null?q=Te:nl.sibling=Te,nl=Te,B=ll}if(ul.done)return e(h,B),tl&&Yt(h,W),q;if(B===null){for(;!ul.done;W++,ul=m.next())ul=j(h,ul.value,T),ul!==null&&(r=u(ul,r,W),nl===null?q=ul:nl.sibling=ul,nl=ul);return tl&&Yt(h,W),q}for(B=a(B);!ul.done;W++,ul=m.next())ul=p(B,h,W,ul.value,T),ul!==null&&(l&&ul.alternate!==null&&B.delete(ul.key===null?W:ul.key),r=u(ul,r,W),nl===null?q=ul:nl.sibling=ul,nl=ul);return l&&B.forEach(function(i0){return t(h,i0)}),tl&&Yt(h,W),q}function gl(h,r,m,T){if(typeof m=="object"&&m!==null&&m.type===il&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case _l:l:{for(var q=m.key;r!==null;){if(r.key===q){if(q=m.type,q===il){if(r.tag===7){e(h,r.sibling),T=n(r,m.props.children),T.return=h,h=T;break l}}else if(r.elementType===q||typeof q=="object"&&q!==null&&q.$$typeof===hl&&Ge(q)===r.type){e(h,r.sibling),T=n(r,m.props),Ia(T,m),T.return=h,h=T;break l}e(h,r);break}else t(h,r);r=r.sibling}m.type===il?(T=Ce(m.props.children,h.mode,T,m.key),T.return=h,h=T):(T=Wn(m.type,m.key,m.props,null,h.mode,T),Ia(T,m),T.return=h,h=T)}return c(h);case xl:l:{for(q=m.key;r!==null;){if(r.key===q)if(r.tag===4&&r.stateNode.containerInfo===m.containerInfo&&r.stateNode.implementation===m.implementation){e(h,r.sibling),T=n(r,m.children||[]),T.return=h,h=T;break l}else{e(h,r);break}else t(h,r);r=r.sibling}T=Mc(m,h.mode,T),T.return=h,h=T}return c(h);case hl:return m=Ge(m),gl(h,r,m,T)}if(Fl(m))return U(h,r,m,T);if(bl(m)){if(q=bl(m),typeof q!="function")throw Error(o(150));return m=q.call(m),Y(h,r,m,T)}if(typeof m.then=="function")return gl(h,r,tu(m),T);if(m.$$typeof===Tl)return gl(h,r,kn(h,m),T);eu(h,m)}return typeof m=="string"&&m!==""||typeof m=="number"||typeof m=="bigint"?(m=""+m,r!==null&&r.tag===6?(e(h,r.sibling),T=n(r,m),T.return=h,h=T):(e(h,r),T=_c(m,h.mode,T),T.return=h,h=T),c(h)):e(h,r)}return function(h,r,m,T){try{ka=0;var q=gl(h,r,m,T);return ma=null,q}catch(B){if(B===ha||B===Pn)throw B;var nl=dt(29,B,null,h.mode);return nl.lanes=T,nl.return=h,nl}}}var Xe=Gs(!0),Ys=Gs(!1),ce=!1;function Qc(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Lc(l,t){l=l.updateQueue,t.updateQueue===l&&(t.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function ie(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function fe(l,t,e){var a=l.updateQueue;if(a===null)return null;if(a=a.shared,(cl&2)!==0){var n=a.pending;return n===null?t.next=t:(t.next=n.next,n.next=t),a.pending=t,t=Jn(l),Es(l,null,e),t}return Kn(l,a,t,e),Jn(l)}function Pa(l,t,e){if(t=t.updateQueue,t!==null&&(t=t.shared,(e&4194048)!==0)){var a=t.lanes;a&=l.pendingLanes,e|=a,t.lanes=e,Of(l,e)}}function Zc(l,t){var e=l.updateQueue,a=l.alternate;if(a!==null&&(a=a.updateQueue,e===a)){var n=null,u=null;if(e=e.firstBaseUpdate,e!==null){do{var c={lane:e.lane,tag:e.tag,payload:e.payload,callback:null,next:null};u===null?n=u=c:u=u.next=c,e=e.next}while(e!==null);u===null?n=u=t:u=u.next=t}else n=u=t;e={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:u,shared:a.shared,callbacks:a.callbacks},l.updateQueue=e;return}l=e.lastBaseUpdate,l===null?e.firstBaseUpdate=t:l.next=t,e.lastBaseUpdate=t}var Vc=!1;function ln(){if(Vc){var l=da;if(l!==null)throw l}}function tn(l,t,e,a){Vc=!1;var n=l.updateQueue;ce=!1;var u=n.firstBaseUpdate,c=n.lastBaseUpdate,i=n.shared.pending;if(i!==null){n.shared.pending=null;var s=i,y=s.next;s.next=null,c===null?u=y:c.next=y,c=s;var S=l.alternate;S!==null&&(S=S.updateQueue,i=S.lastBaseUpdate,i!==c&&(i===null?S.firstBaseUpdate=y:i.next=y,S.lastBaseUpdate=s))}if(u!==null){var j=n.baseState;c=0,S=y=s=null,i=u;do{var g=i.lane&-536870913,p=g!==i.lane;if(p?(P&g)===g:(a&g)===g){g!==0&&g===ra&&(Vc=!0),S!==null&&(S=S.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});l:{var U=l,Y=i;g=t;var gl=e;switch(Y.tag){case 1:if(U=Y.payload,typeof U=="function"){j=U.call(gl,j,g);break l}j=U;break l;case 3:U.flags=U.flags&-65537|128;case 0:if(U=Y.payload,g=typeof U=="function"?U.call(gl,j,g):U,g==null)break l;j=H({},j,g);break l;case 2:ce=!0}}g=i.callback,g!==null&&(l.flags|=64,p&&(l.flags|=8192),p=n.callbacks,p===null?n.callbacks=[g]:p.push(g))}else p={lane:g,tag:i.tag,payload:i.payload,callback:i.callback,next:null},S===null?(y=S=p,s=j):S=S.next=p,c|=g;if(i=i.next,i===null){if(i=n.shared.pending,i===null)break;p=i,i=p.next,p.next=null,n.lastBaseUpdate=p,n.shared.pending=null}}while(!0);S===null&&(s=j),n.baseState=s,n.firstBaseUpdate=y,n.lastBaseUpdate=S,u===null&&(n.shared.lanes=0),he|=c,l.lanes=c,l.memoizedState=j}}function Xs(l,t){if(typeof l!="function")throw Error(o(191,l));l.call(t)}function Qs(l,t){var e=l.callbacks;if(e!==null)for(l.callbacks=null,l=0;lu?u:8;var c=x.T,i={};x.T=i,si(l,!1,t,e);try{var s=n(),y=x.S;if(y!==null&&y(i,s),s!==null&&typeof s=="object"&&typeof s.then=="function"){var S=Fh(s,a);nn(l,t,S,gt(l))}else nn(l,t,a,gt(l))}catch(j){nn(l,t,{then:function(){},status:"rejected",reason:j},gt())}finally{M.p=u,c!==null&&i.types!==null&&(c.types=i.types),x.T=c}}function em(){}function ii(l,t,e,a){if(l.tag!==5)throw Error(o(476));var n=So(l).queue;po(l,n,t,X,e===null?em:function(){return xo(l),e(a)})}function So(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:X,baseState:X,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zt,lastRenderedState:X},next:null};var e={};return t.next={memoizedState:e,baseState:e,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zt,lastRenderedState:e},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function xo(l){var t=So(l);t.next===null&&(t=l.alternate.memoizedState),nn(l,t.next.queue,{},gt())}function fi(){return Kl(En)}function Eo(){return Hl().memoizedState}function To(){return Hl().memoizedState}function am(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var e=gt();l=ie(e);var a=fe(t,l,e);a!==null&&(ct(a,t,e),Pa(a,t,e)),t={cache:qc()},l.payload=t;return}t=t.return}}function nm(l,t,e){var a=gt();e={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null},du(l)?zo(t,e):(e=Ac(l,t,e,a),e!==null&&(ct(e,l,a),Ao(e,t,a)))}function jo(l,t,e){var a=gt();nn(l,t,e,a)}function nn(l,t,e,a){var n={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null};if(du(l))zo(t,n);else{var u=l.alternate;if(l.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var c=t.lastRenderedState,i=u(c,e);if(n.hasEagerState=!0,n.eagerState=i,rt(i,c))return Kn(l,t,n,0),Sl===null&&wn(),!1}catch{}if(e=Ac(l,t,n,a),e!==null)return ct(e,l,a),Ao(e,t,a),!0}return!1}function si(l,t,e,a){if(a={lane:2,revertLane:Qi(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},du(l)){if(t)throw Error(o(479))}else t=Ac(l,e,a,2),t!==null&&ct(t,l,2)}function du(l){var t=l.alternate;return l===K||t!==null&&t===K}function zo(l,t){ya=uu=!0;var e=l.pending;e===null?t.next=t:(t.next=e.next,e.next=t),l.pending=t}function Ao(l,t,e){if((e&4194048)!==0){var a=t.lanes;a&=l.pendingLanes,e|=a,t.lanes=e,Of(l,e)}}var un={readContext:Kl,use:fu,useCallback:Ol,useContext:Ol,useEffect:Ol,useImperativeHandle:Ol,useLayoutEffect:Ol,useInsertionEffect:Ol,useMemo:Ol,useReducer:Ol,useRef:Ol,useState:Ol,useDebugValue:Ol,useDeferredValue:Ol,useTransition:Ol,useSyncExternalStore:Ol,useId:Ol,useHostTransitionStatus:Ol,useFormState:Ol,useActionState:Ol,useOptimistic:Ol,useMemoCache:Ol,useCacheRefresh:Ol};un.useEffectEvent=Ol;var No={readContext:Kl,use:fu,useCallback:function(l,t){return Pl().memoizedState=[l,t===void 0?null:t],l},useContext:Kl,useEffect:so,useImperativeHandle:function(l,t,e){e=e!=null?e.concat([l]):null,ou(4194308,4,mo.bind(null,t,l),e)},useLayoutEffect:function(l,t){return ou(4194308,4,l,t)},useInsertionEffect:function(l,t){ou(4,2,l,t)},useMemo:function(l,t){var e=Pl();t=t===void 0?null:t;var a=l();if(Qe){Pt(!0);try{l()}finally{Pt(!1)}}return e.memoizedState=[a,t],a},useReducer:function(l,t,e){var a=Pl();if(e!==void 0){var n=e(t);if(Qe){Pt(!0);try{e(t)}finally{Pt(!1)}}}else n=t;return a.memoizedState=a.baseState=n,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:n},a.queue=l,l=l.dispatch=nm.bind(null,K,l),[a.memoizedState,l]},useRef:function(l){var t=Pl();return l={current:l},t.memoizedState=l},useState:function(l){l=ei(l);var t=l.queue,e=jo.bind(null,K,t);return t.dispatch=e,[l.memoizedState,e]},useDebugValue:ui,useDeferredValue:function(l,t){var e=Pl();return ci(e,l,t)},useTransition:function(){var l=ei(!1);return l=po.bind(null,K,l.queue,!0,!1),Pl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,e){var a=K,n=Pl();if(tl){if(e===void 0)throw Error(o(407));e=e()}else{if(e=t(),Sl===null)throw Error(o(349));(P&127)!==0||Js(a,t,e)}n.memoizedState=e;var u={value:e,getSnapshot:t};return n.queue=u,so($s.bind(null,a,u,l),[l]),a.flags|=2048,ba(9,{destroy:void 0},Ws.bind(null,a,u,e,t),null),e},useId:function(){var l=Pl(),t=Sl.identifierPrefix;if(tl){var e=Ut,a=Dt;e=(a&~(1<<32-ot(a)-1)).toString(32)+e,t="_"+t+"R_"+e,e=cu++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof a.is=="string"?c.createElement("select",{is:a.is}):c.createElement("select"),a.multiple?u.multiple=!0:a.size&&(u.size=a.size);break;default:u=typeof a.is=="string"?c.createElement(n,{is:a.is}):c.createElement(n)}}u[Vl]=t,u[lt]=a;l:for(c=t.child;c!==null;){if(c.tag===5||c.tag===6)u.appendChild(c.stateNode);else if(c.tag!==4&&c.tag!==27&&c.child!==null){c.child.return=c,c=c.child;continue}if(c===t)break l;for(;c.sibling===null;){if(c.return===null||c.return===t)break l;c=c.return}c.sibling.return=c.return,c=c.sibling}t.stateNode=u;l:switch(Wl(u,n,a),n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break l;case"img":a=!0;break l;default:a=!1}a&&wt(t)}}return Al(t),Ti(t,t.type,l===null?null:l.memoizedProps,t.pendingProps,e),null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&wt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(o(166));if(l=F.current,sa(t)){if(l=t.stateNode,e=t.memoizedProps,a=null,n=wl,n!==null)switch(n.tag){case 27:case 5:a=n.memoizedProps}l[Vl]=t,l=!!(l.nodeValue===e||a!==null&&a.suppressHydrationWarning===!0||Kr(l.nodeValue,e)),l||ne(t,!0)}else l=Uu(l).createTextNode(a),l[Vl]=t,t.stateNode=l}return Al(t),null;case 31:if(e=t.memoizedState,l===null||l.memoizedState!==null){if(a=sa(t),e!==null){if(l===null){if(!a)throw Error(o(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(o(557));l[Vl]=t}else He(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Al(t),l=!1}else e=Cc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=e),l=!0;if(!l)return t.flags&256?(mt(t),t):(mt(t),null);if((t.flags&128)!==0)throw Error(o(558))}return Al(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(n=sa(t),a!==null&&a.dehydrated!==null){if(l===null){if(!n)throw Error(o(318));if(n=t.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(o(317));n[Vl]=t}else He(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Al(t),n=!1}else n=Cc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=n),n=!0;if(!n)return t.flags&256?(mt(t),t):(mt(t),null)}return mt(t),(t.flags&128)!==0?(t.lanes=e,t):(e=a!==null,l=l!==null&&l.memoizedState!==null,e&&(a=t.child,n=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(n=a.alternate.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==n&&(a.flags|=2048)),e!==l&&e&&(t.child.flags|=8192),gu(t,t.updateQueue),Al(t),null);case 4:return Ul(),l===null&&wi(t.stateNode.containerInfo),Al(t),null;case 10:return Qt(t.type),Al(t),null;case 19:if(N(Cl),a=t.memoizedState,a===null)return Al(t),null;if(n=(t.flags&128)!==0,u=a.rendering,u===null)if(n)fn(a,!1);else{if(Dl!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(u=nu(l),u!==null){for(t.flags|=128,fn(a,!1),l=u.updateQueue,t.updateQueue=l,gu(t,l),t.subtreeFlags=0,l=e,e=t.child;e!==null;)Ts(e,l),e=e.sibling;return D(Cl,Cl.current&1|2),tl&&Yt(t,a.treeForkCount),t.child}l=l.sibling}a.tail!==null&&ft()>Eu&&(t.flags|=128,n=!0,fn(a,!1),t.lanes=4194304)}else{if(!n)if(l=nu(u),l!==null){if(t.flags|=128,n=!0,l=l.updateQueue,t.updateQueue=l,gu(t,l),fn(a,!0),a.tail===null&&a.tailMode==="hidden"&&!u.alternate&&!tl)return Al(t),null}else 2*ft()-a.renderingStartTime>Eu&&e!==536870912&&(t.flags|=128,n=!0,fn(a,!1),t.lanes=4194304);a.isBackwards?(u.sibling=t.child,t.child=u):(l=a.last,l!==null?l.sibling=u:t.child=u,a.last=u)}return a.tail!==null?(l=a.tail,a.rendering=l,a.tail=l.sibling,a.renderingStartTime=ft(),l.sibling=null,e=Cl.current,D(Cl,n?e&1|2:e&1),tl&&Yt(t,a.treeForkCount),l):(Al(t),null);case 22:case 23:return mt(t),Kc(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(e&536870912)!==0&&(t.flags&128)===0&&(Al(t),t.subtreeFlags&6&&(t.flags|=8192)):Al(t),e=t.updateQueue,e!==null&&gu(t,e.retryQueue),e=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(e=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==e&&(t.flags|=2048),l!==null&&N(qe),null;case 24:return e=null,l!==null&&(e=l.memoizedState.cache),t.memoizedState.cache!==e&&(t.flags|=2048),Qt(Bl),Al(t),null;case 25:return null;case 30:return null}throw Error(o(156,t.tag))}function sm(l,t){switch(Dc(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return Qt(Bl),Ul(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return _n(t),null;case 31:if(t.memoizedState!==null){if(mt(t),t.alternate===null)throw Error(o(340));He()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 13:if(mt(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(o(340));He()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return N(Cl),null;case 4:return Ul(),null;case 10:return Qt(t.type),null;case 22:case 23:return mt(t),Kc(),l!==null&&N(qe),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return Qt(Bl),null;case 25:return null;default:return null}}function ko(l,t){switch(Dc(t),t.tag){case 3:Qt(Bl),Ul();break;case 26:case 27:case 5:_n(t);break;case 4:Ul();break;case 31:t.memoizedState!==null&&mt(t);break;case 13:mt(t);break;case 19:N(Cl);break;case 10:Qt(t.type);break;case 22:case 23:mt(t),Kc(),l!==null&&N(qe);break;case 24:Qt(Bl)}}function sn(l,t){try{var e=t.updateQueue,a=e!==null?e.lastEffect:null;if(a!==null){var n=a.next;e=n;do{if((e.tag&l)===l){a=void 0;var u=e.create,c=e.inst;a=u(),c.destroy=a}e=e.next}while(e!==n)}}catch(i){rl(t,t.return,i)}}function re(l,t,e){try{var a=t.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var u=n.next;a=u;do{if((a.tag&l)===l){var c=a.inst,i=c.destroy;if(i!==void 0){c.destroy=void 0,n=t;var s=e,y=i;try{y()}catch(S){rl(n,s,S)}}}a=a.next}while(a!==u)}}catch(S){rl(t,t.return,S)}}function Io(l){var t=l.updateQueue;if(t!==null){var e=l.stateNode;try{Qs(t,e)}catch(a){rl(l,l.return,a)}}}function Po(l,t,e){e.props=Le(l.type,l.memoizedProps),e.state=l.memoizedState;try{e.componentWillUnmount()}catch(a){rl(l,t,a)}}function on(l,t){try{var e=l.ref;if(e!==null){switch(l.tag){case 26:case 27:case 5:var a=l.stateNode;break;case 30:a=l.stateNode;break;default:a=l.stateNode}typeof e=="function"?l.refCleanup=e(a):e.current=a}}catch(n){rl(l,t,n)}}function Ct(l,t){var e=l.ref,a=l.refCleanup;if(e!==null)if(typeof a=="function")try{a()}catch(n){rl(l,t,n)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof e=="function")try{e(null)}catch(n){rl(l,t,n)}else e.current=null}function lr(l){var t=l.type,e=l.memoizedProps,a=l.stateNode;try{l:switch(t){case"button":case"input":case"select":case"textarea":e.autoFocus&&a.focus();break l;case"img":e.src?a.src=e.src:e.srcSet&&(a.srcset=e.srcSet)}}catch(n){rl(l,l.return,n)}}function ji(l,t,e){try{var a=l.stateNode;Dm(a,l.type,e,t),a[lt]=t}catch(n){rl(l,l.return,n)}}function tr(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27&&be(l.type)||l.tag===4}function zi(l){l:for(;;){for(;l.sibling===null;){if(l.return===null||tr(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.tag===27&&be(l.type)||l.flags&2||l.child===null||l.tag===4)continue l;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function Ai(l,t,e){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e).insertBefore(l,t):(t=e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,t.appendChild(l),e=e._reactRootContainer,e!=null||t.onclick!==null||(t.onclick=Bt));else if(a!==4&&(a===27&&be(l.type)&&(e=l.stateNode,t=null),l=l.child,l!==null))for(Ai(l,t,e),l=l.sibling;l!==null;)Ai(l,t,e),l=l.sibling}function bu(l,t,e){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?e.insertBefore(l,t):e.appendChild(l);else if(a!==4&&(a===27&&be(l.type)&&(e=l.stateNode),l=l.child,l!==null))for(bu(l,t,e),l=l.sibling;l!==null;)bu(l,t,e),l=l.sibling}function er(l){var t=l.stateNode,e=l.memoizedProps;try{for(var a=l.type,n=t.attributes;n.length;)t.removeAttributeNode(n[0]);Wl(t,a,e),t[Vl]=l,t[lt]=e}catch(u){rl(l,l.return,u)}}var Kt=!1,Yl=!1,Ni=!1,ar=typeof WeakSet=="function"?WeakSet:Set,Ll=null;function om(l,t){if(l=l.containerInfo,Wi=Yu,l=ms(l),Sc(l)){if("selectionStart"in l)var e={start:l.selectionStart,end:l.selectionEnd};else l:{e=(e=l.ownerDocument)&&e.defaultView||window;var a=e.getSelection&&e.getSelection();if(a&&a.rangeCount!==0){e=a.anchorNode;var n=a.anchorOffset,u=a.focusNode;a=a.focusOffset;try{e.nodeType,u.nodeType}catch{e=null;break l}var c=0,i=-1,s=-1,y=0,S=0,j=l,g=null;t:for(;;){for(var p;j!==e||n!==0&&j.nodeType!==3||(i=c+n),j!==u||a!==0&&j.nodeType!==3||(s=c+a),j.nodeType===3&&(c+=j.nodeValue.length),(p=j.firstChild)!==null;)g=j,j=p;for(;;){if(j===l)break t;if(g===e&&++y===n&&(i=c),g===u&&++S===a&&(s=c),(p=j.nextSibling)!==null)break;j=g,g=j.parentNode}j=p}e=i===-1||s===-1?null:{start:i,end:s}}else e=null}e=e||{start:0,end:0}}else e=null;for($i={focusedElem:l,selectionRange:e},Yu=!1,Ll=t;Ll!==null;)if(t=Ll,l=t.child,(t.subtreeFlags&1028)!==0&&l!==null)l.return=t,Ll=l;else for(;Ll!==null;){switch(t=Ll,u=t.alternate,l=t.flags,t.tag){case 0:if((l&4)!==0&&(l=t.updateQueue,l=l!==null?l.events:null,l!==null))for(e=0;e title"))),Wl(u,a,e),u[Vl]=l,Ql(u),a=u;break l;case"link":var c=sd("link","href",n).get(a+(e.href||""));if(c){for(var i=0;igl&&(c=gl,gl=Y,Y=c);var h=ds(i,Y),r=ds(i,gl);if(h&&r&&(p.rangeCount!==1||p.anchorNode!==h.node||p.anchorOffset!==h.offset||p.focusNode!==r.node||p.focusOffset!==r.offset)){var m=j.createRange();m.setStart(h.node,h.offset),p.removeAllRanges(),Y>gl?(p.addRange(m),p.extend(r.node,r.offset)):(m.setEnd(r.node,r.offset),p.addRange(m))}}}}for(j=[],p=i;p=p.parentNode;)p.nodeType===1&&j.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof i.focus=="function"&&i.focus(),i=0;ie?32:e,x.T=null,e=Hi,Hi=null;var u=ve,c=kt;if(Xl=0,Ta=ve=null,kt=0,(cl&6)!==0)throw Error(o(331));var i=cl;if(cl|=4,mr(u.current),rr(u,u.current,c,e),cl=i,yn(0,!1),st&&typeof st.onPostCommitFiberRoot=="function")try{st.onPostCommitFiberRoot(Ca,u)}catch{}return!0}finally{M.p=n,x.T=a,Ur(l,t)}}function Hr(l,t,e){t=xt(e,t),t=hi(l.stateNode,t,2),l=fe(l,t,2),l!==null&&(Ra(l,2),Ht(l))}function rl(l,t,e){if(l.tag===3)Hr(l,l,e);else for(;t!==null;){if(t.tag===3){Hr(t,l,e);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(me===null||!me.has(a))){l=xt(e,l),e=Ro(2),a=fe(t,e,2),a!==null&&(Bo(e,a,t,l),Ra(a,2),Ht(a));break}}t=t.return}}function Gi(l,t,e){var a=l.pingCache;if(a===null){a=l.pingCache=new hm;var n=new Set;a.set(t,n)}else n=a.get(t),n===void 0&&(n=new Set,a.set(t,n));n.has(e)||(Oi=!0,n.add(e),l=bm.bind(null,l,t,e),t.then(l,l))}function bm(l,t,e){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&e,l.warmLanes&=~e,Sl===l&&(P&e)===e&&(Dl===4||Dl===3&&(P&62914560)===P&&300>ft()-xu?(cl&2)===0&&ja(l,0):Di|=e,Ea===P&&(Ea=0)),Ht(l)}function Rr(l,t){t===0&&(t=_f()),l=Ue(l,t),l!==null&&(Ra(l,t),Ht(l))}function pm(l){var t=l.memoizedState,e=0;t!==null&&(e=t.retryLane),Rr(l,e)}function Sm(l,t){var e=0;switch(l.tag){case 31:case 13:var a=l.stateNode,n=l.memoizedState;n!==null&&(e=n.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(o(314))}a!==null&&a.delete(t),Rr(l,e)}function xm(l,t){return ku(l,t)}var _u=null,Aa=null,Yi=!1,Mu=!1,Xi=!1,ge=0;function Ht(l){l!==Aa&&l.next===null&&(Aa===null?_u=Aa=l:Aa=Aa.next=l),Mu=!0,Yi||(Yi=!0,Tm())}function yn(l,t){if(!Xi&&Mu){Xi=!0;do for(var e=!1,a=_u;a!==null;){if(l!==0){var n=a.pendingLanes;if(n===0)var u=0;else{var c=a.suspendedLanes,i=a.pingedLanes;u=(1<<31-ot(42|l)+1)-1,u&=n&~(c&~i),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(e=!0,Yr(a,u))}else u=P,u=Cn(a,a===Sl?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(u&3)===0||Ha(a,u)||(e=!0,Yr(a,u));a=a.next}while(e);Xi=!1}}function Em(){Br()}function Br(){Mu=Yi=!1;var l=0;ge!==0&&Cm()&&(l=ge);for(var t=ft(),e=null,a=_u;a!==null;){var n=a.next,u=qr(a,t);u===0?(a.next=null,e===null?_u=n:e.next=n,n===null&&(Aa=e)):(e=a,(l!==0||(u&3)!==0)&&(Mu=!0)),a=n}Xl!==0&&Xl!==5||yn(l),ge!==0&&(ge=0)}function qr(l,t){for(var e=l.suspendedLanes,a=l.pingedLanes,n=l.expirationTimes,u=l.pendingLanes&-62914561;0i)break;var S=s.transferSize,j=s.initiatorType;S&&Jr(j)&&(s=s.responseEnd,c+=S*(s"u"?null:document;function ud(l,t,e){var a=Na;if(a&&typeof t=="string"&&t){var n=pt(t);n='link[rel="'+l+'"][href="'+n+'"]',typeof e=="string"&&(n+='[crossorigin="'+e+'"]'),nd.has(n)||(nd.add(n),l={rel:l,crossOrigin:e,href:t},a.querySelector(n)===null&&(t=a.createElement("link"),Wl(t,"link",l),Ql(t),a.head.appendChild(t)))}}function Lm(l){It.D(l),ud("dns-prefetch",l,null)}function Zm(l,t){It.C(l,t),ud("preconnect",l,t)}function Vm(l,t,e){It.L(l,t,e);var a=Na;if(a&&l&&t){var n='link[rel="preload"][as="'+pt(t)+'"]';t==="image"&&e&&e.imageSrcSet?(n+='[imagesrcset="'+pt(e.imageSrcSet)+'"]',typeof e.imageSizes=="string"&&(n+='[imagesizes="'+pt(e.imageSizes)+'"]')):n+='[href="'+pt(l)+'"]';var u=n;switch(t){case"style":u=_a(l);break;case"script":u=Ma(l)}Nt.has(u)||(l=H({rel:"preload",href:t==="image"&&e&&e.imageSrcSet?void 0:l,as:t},e),Nt.set(u,l),a.querySelector(n)!==null||t==="style"&&a.querySelector(Sn(u))||t==="script"&&a.querySelector(xn(u))||(t=a.createElement("link"),Wl(t,"link",l),Ql(t),a.head.appendChild(t)))}}function wm(l,t){It.m(l,t);var e=Na;if(e&&l){var a=t&&typeof t.as=="string"?t.as:"script",n='link[rel="modulepreload"][as="'+pt(a)+'"][href="'+pt(l)+'"]',u=n;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Ma(l)}if(!Nt.has(u)&&(l=H({rel:"modulepreload",href:l},t),Nt.set(u,l),e.querySelector(n)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(e.querySelector(xn(u)))return}a=e.createElement("link"),Wl(a,"link",l),Ql(a),e.head.appendChild(a)}}}function Km(l,t,e){It.S(l,t,e);var a=Na;if(a&&l){var n=Fe(a).hoistableStyles,u=_a(l);t=t||"default";var c=n.get(u);if(!c){var i={loading:0,preload:null};if(c=a.querySelector(Sn(u)))i.loading=5;else{l=H({rel:"stylesheet",href:l,"data-precedence":t},e),(e=Nt.get(u))&&ef(l,e);var s=c=a.createElement("link");Ql(s),Wl(s,"link",l),s._p=new Promise(function(y,S){s.onload=y,s.onerror=S}),s.addEventListener("load",function(){i.loading|=1}),s.addEventListener("error",function(){i.loading|=2}),i.loading|=4,Hu(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:i},n.set(u,c)}}}function Jm(l,t){It.X(l,t);var e=Na;if(e&&l){var a=Fe(e).hoistableScripts,n=Ma(l),u=a.get(n);u||(u=e.querySelector(xn(n)),u||(l=H({src:l,async:!0},t),(t=Nt.get(n))&&af(l,t),u=e.createElement("script"),Ql(u),Wl(u,"link",l),e.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function Wm(l,t){It.M(l,t);var e=Na;if(e&&l){var a=Fe(e).hoistableScripts,n=Ma(l),u=a.get(n);u||(u=e.querySelector(xn(n)),u||(l=H({src:l,async:!0,type:"module"},t),(t=Nt.get(n))&&af(l,t),u=e.createElement("script"),Ql(u),Wl(u,"link",l),e.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function cd(l,t,e,a){var n=(n=F.current)?Cu(n):null;if(!n)throw Error(o(446));switch(l){case"meta":case"title":return null;case"style":return typeof e.precedence=="string"&&typeof e.href=="string"?(t=_a(e.href),e=Fe(n).hoistableStyles,a=e.get(t),a||(a={type:"style",instance:null,count:0,state:null},e.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(e.rel==="stylesheet"&&typeof e.href=="string"&&typeof e.precedence=="string"){l=_a(e.href);var u=Fe(n).hoistableStyles,c=u.get(l);if(c||(n=n.ownerDocument||n,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(l,c),(u=n.querySelector(Sn(l)))&&!u._p&&(c.instance=u,c.state.loading=5),Nt.has(l)||(e={rel:"preload",as:"style",href:e.href,crossOrigin:e.crossOrigin,integrity:e.integrity,media:e.media,hrefLang:e.hrefLang,referrerPolicy:e.referrerPolicy},Nt.set(l,e),u||$m(n,l,e,c.state))),t&&a===null)throw Error(o(528,""));return c}if(t&&a!==null)throw Error(o(529,""));return null;case"script":return t=e.async,e=e.src,typeof e=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Ma(e),e=Fe(n).hoistableScripts,a=e.get(t),a||(a={type:"script",instance:null,count:0,state:null},e.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,l))}}function _a(l){return'href="'+pt(l)+'"'}function Sn(l){return'link[rel="stylesheet"]['+l+"]"}function id(l){return H({},l,{"data-precedence":l.precedence,precedence:null})}function $m(l,t,e,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),Wl(t,"link",e),Ql(t),l.head.appendChild(t))}function Ma(l){return'[src="'+pt(l)+'"]'}function xn(l){return"script[async]"+l}function fd(l,t,e){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+pt(e.href)+'"]');if(a)return t.instance=a,Ql(a),a;var n=H({},e,{"data-href":e.href,"data-precedence":e.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),Ql(a),Wl(a,"style",n),Hu(a,e.precedence,l),t.instance=a;case"stylesheet":n=_a(e.href);var u=l.querySelector(Sn(n));if(u)return t.state.loading|=4,t.instance=u,Ql(u),u;a=id(e),(n=Nt.get(n))&&ef(a,n),u=(l.ownerDocument||l).createElement("link"),Ql(u);var c=u;return c._p=new Promise(function(i,s){c.onload=i,c.onerror=s}),Wl(u,"link",a),t.state.loading|=4,Hu(u,e.precedence,l),t.instance=u;case"script":return u=Ma(e.src),(n=l.querySelector(xn(u)))?(t.instance=n,Ql(n),n):(a=e,(n=Nt.get(u))&&(a=H({},e),af(a,n)),l=l.ownerDocument||l,n=l.createElement("script"),Ql(n),Wl(n,"link",a),l.head.appendChild(n),t.instance=n);case"void":return null;default:throw Error(o(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Hu(a,e.precedence,l));return t.instance}function Hu(l,t,e){for(var a=e.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=a.length?a[a.length-1]:null,u=n,c=0;c title"):null)}function Fm(l,t,e){if(e===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;return t.rel==="stylesheet"?(l=t.disabled,typeof t.precedence=="string"&&l==null):!0;case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function rd(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}function km(l,t,e,a){if(e.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(e.state.loading&4)===0){if(e.instance===null){var n=_a(a.href),u=t.querySelector(Sn(n));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(l.count++,l=Bu.bind(l),t.then(l,l)),e.state.loading|=4,e.instance=u,Ql(u);return}u=t.ownerDocument||t,a=id(a),(n=Nt.get(n))&&ef(a,n),u=u.createElement("link"),Ql(u);var c=u;c._p=new Promise(function(i,s){c.onload=i,c.onerror=s}),Wl(u,"link",a),e.instance=u}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(e,t),(t=e.state.preload)&&(e.state.loading&3)===0&&(l.count++,e=Bu.bind(l),t.addEventListener("load",e),t.addEventListener("error",e))}}var nf=0;function Im(l,t){return l.stylesheets&&l.count===0&&Gu(l,l.stylesheets),0nf?50:800)+t);return l.unsuspend=e,function(){l.unsuspend=null,clearTimeout(a),clearTimeout(n)}}:null}function Bu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Gu(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var qu=null;function Gu(l,t){l.stylesheets=null,l.unsuspend!==null&&(l.count++,qu=new Map,t.forEach(Pm,l),qu=null,Bu.call(l))}function Pm(l,t){if(!(t.state.loading&4)){var e=qu.get(l);if(e)var a=e.get(null);else{e=new Map,qu.set(l,e);for(var n=l.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(v)}catch(z){console.error(z)}}return v(),hf.exports=y0(),hf.exports}var b0=g0();const p0=f0(b0);var dl=xf();const Ku=18,Ef=Ku*Ku,Da=1e3,Ke=12,S0=Da*Ke,x0=S0+Da,E0=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],we=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],$l=[{label:"Red",shortLabel:"R",wavelength:690,hue:2,saturation:100,lightness:66,energy:.44,decay:700,radius:.28},{label:"Orange",shortLabel:"O",wavelength:620,hue:18,saturation:100,lightness:64,energy:.5,decay:760,radius:.3},{label:"Amber",shortLabel:"A",wavelength:590,hue:36,saturation:100,lightness:66,energy:.56,decay:820,radius:.32},{label:"Yellow",shortLabel:"Y",wavelength:570,hue:56,saturation:100,lightness:69,energy:.62,decay:900,radius:.34},{label:"Green",shortLabel:"G",wavelength:530,hue:108,saturation:84,lightness:66,energy:.7,decay:980,radius:.36},{label:"Cyan",shortLabel:"C",wavelength:500,hue:188,saturation:94,lightness:68,energy:.8,decay:1120,radius:.4},{label:"Blue",shortLabel:"B",wavelength:450,hue:232,saturation:100,lightness:71,energy:.92,decay:1300,radius:.45},{label:"Violet",shortLabel:"V",wavelength:410,hue:274,saturation:100,lightness:74,energy:1.08,decay:1540,radius:.52}],T0=[{page:"binning",title:"Count events per second",diagram:"count-time",rule:"Group event rows into 1 second time bins and count how many clicks fall into each bin.",output:"Light curve / count periodogram"},{page:"flux",title:"Sum energy per second",diagram:"energy-time",rule:"Group event rows into 1 second time bins and sum the total photon energy inside each bin.",output:"Flux variability"},{page:"periodogram",title:"Sum energy by wavelength bin",diagram:"energy-wavelength",rule:"Group event rows by wavelength and sum the energy across the recent time window.",output:"Spectrum"},{page:"spectrogram",title:"Count events by wavelength over time",diagram:"count-wavelength-time",rule:"Group event rows into both time bins and wavelength bins, then count clicks in each cell.",output:"Spectrogram"}],Gd={"transition-photon":{title:"Every photon has energy",body:"Colour tells us something about wavelength and energy. Before we record the hits, it helps to see what that means.",nextPage:"photon",emoji:"😶‍🌫️"},"transition-eventlist":{title:"Now record the hits",body:"Each photon hit becomes one row with a time, an energy, and a CCD position.",nextPage:"eventlist",emoji:"📝"},"transition-binning":{title:"Chart #1 : Brightness over time",body:"We now use the data and make the first chart",nextPage:"binning",emoji:"🫰🏻⏰"},"transition-flux":{title:"Chart #2: Energy over time",body:"Instead of counting clicks equally, we sum up the energy of each phton inside each time bin.",nextPage:"flux",emoji:"🔥⏰"},"transition-periodogram":{title:"Chart #3: Build a spectrum",body:"The same event list can also be grouped by wavelength. Is it lots of low-energy red photons, or high-energy violet ones? Let`s find out.",nextPage:"periodogram",emoji:"🌈"},"transition-spectrogram":{title:"Chart #3 : Let´s mix things up",body:"Now try both time bins, and wavelength/energy bins at the same time!",nextPage:"spectrogram",emoji:"🤪"}},Rd=["receptor","photon","eventlist","binning","flux","periodogram","spectrogram"];function j0(){return Array.from({length:Ef},(v,z)=>({id:z,level:0,size:.22,decay:900,tint:"hsla(0 0% 100% / 0)",glow:"hsla(0 0% 100% / 0)"}))}function z0(){return Array.from({length:$l.length},()=>0)}function A0(){return{cells:j0(),eventHistory:[],totalPhotons:0}}function ze(v,z,b){return Math.min(b,Math.max(z,v))}function N0(v){const z=Math.floor(v/1e3),b=Math.floor(z/60),o=z%60,A=Math.floor(v%1e3/10);return[b,o].map(_=>String(_).padStart(2,"0")).join(":")+"."+String(A).padStart(2,"0")}function _0(v){const z=v.replace(/^#/,"");return E0.includes(z)?z:"orbit"}function Bd(){return typeof window>"u"?"orbit":_0(window.location.hash)}function pf(v,z,b,o){return`hsla(${v} ${z}% ${b}% / ${o})`}function je(v,z){const b=$l[v],o=ze(.08+z*.88,.08,.96),A=Math.min(84,b.lightness+z*10);return`hsla(${b.hue} ${b.saturation}% ${A}% / ${o})`}function Sf(v,z,b,o){if(v.length===0)return"";const A=o?.min??Math.min(...v),_=o?.max??Math.max(...v),C=Math.max(_-A,1e-4);return v.map((L,O)=>{const E=v.length===1?z/2:O/(v.length-1)*z,G=b-(L-A)/C*(b-8)-4;return`${O===0?"M":"L"} ${E.toFixed(2)} ${G.toFixed(2)}`}).join(" ")}function M0(v,z,b,o){return v.length===0?"":`${Sf(v,z,b,o)} L ${z} ${b} L 0 ${b} Z`}function O0(v){const b=ze(v,0,1)*($l.length-1),o=Math.floor(b),A=Math.min($l.length-1,Math.ceil(b)),_=b-o,C=$l[o],L=$l[A],O=(E,G)=>E+(G-E)*_;return{label:_<.5?C.label:L.label,wavelength:O(C.wavelength,L.wavelength),energy:O(C.energy,L.energy),hue:O(C.hue,L.hue),saturation:O(C.saturation,L.saturation),lightness:O(C.lightness,L.lightness)}}function D0(){return Array.from({length:42},(v,z)=>({x:z*73%100/100,y:(z*37+11)%100/100,size:.8+z*17%7*.22,opacity:.24+z*29%10*.05}))}function U0(v){const z=D0(),b=v*24e-5,A=Math.cos(b)*178,_=Math.sin(b*.72)*34,C=Math.sin(b)*132,O=A*.72,E=_*.45,G=Rl=>1+Rl/620,H=460+(0-O)*.72,J=264+(0-E)*.42+C*.08,_l=ze(G(-O*.05),.88,1.14),xl=460+(A-O)*.72,il=236+(_-E)*.5-C*.16,El=ze(G(C),.82,1.34),V=b*.9;return{earth:{x:H,y:J,scale:_l},telescope:{x:xl,y:il,scale:El,rotation:V},stars:z}}function C0(){const[v,z]=dl.useState(0);dl.useEffect(()=>{let o=0;const A=performance.now(),_=C=>{z(C-A),o=window.requestAnimationFrame(_)};return o=window.requestAnimationFrame(_),()=>window.cancelAnimationFrame(o)},[]);const b=U0(v);return f.jsxs("div",{className:"ccd-orbit-screen",children:[f.jsxs("div",{className:"ccd-orbit-copy",children:[f.jsx("span",{className:"ccd-stat-label",children:"Glitch Hunters's guide to telescopes"}),f.jsx("h2",{children:"Orbital telescopes"}),f.jsx("p",{children:"Humanity has launched multiple telescopes into orbit, each designed to observe the universe from different vantage points."})]}),f.jsx("div",{className:"ccd-orbit-stage",children:f.jsxs("svg",{className:"ccd-orbit-svg",viewBox:"0 0 920 520","aria-label":"Telescope orbiting Earth",children:[f.jsxs("defs",{children:[f.jsxs("radialGradient",{id:"orbitEarthGlow",cx:"42%",cy:"34%",r:"68%",children:[f.jsx("stop",{offset:"0%",stopColor:"#6bd3ff"}),f.jsx("stop",{offset:"36%",stopColor:"#2f88d8"}),f.jsx("stop",{offset:"72%",stopColor:"#124180"}),f.jsx("stop",{offset:"100%",stopColor:"#061327"})]}),f.jsxs("linearGradient",{id:"orbitCubeFront",x1:"0",x2:"1",y1:"0",y2:"1",children:[f.jsx("stop",{offset:"0%",stopColor:"#fff7e9"}),f.jsx("stop",{offset:"100%",stopColor:"#ff9d77"})]}),f.jsxs("linearGradient",{id:"orbitCubeSide",x1:"0",x2:"1",y1:"0",y2:"1",children:[f.jsx("stop",{offset:"0%",stopColor:"#d3caf7"}),f.jsx("stop",{offset:"100%",stopColor:"#7967db"})]})]}),b.stars.map((o,A)=>f.jsx("circle",{cx:o.x*920,cy:o.y*520,fill:"rgba(255,255,255,0.92)",opacity:o.opacity,r:o.size},A)),f.jsx("ellipse",{className:"ccd-orbit-track",cx:b.earth.x,cy:b.earth.y+8,rx:174*b.earth.scale,ry:62*b.earth.scale}),f.jsxs("g",{transform:`translate(${b.earth.x} ${b.earth.y}) scale(${b.earth.scale})`,children:[f.jsx("circle",{className:"ccd-orbit-earth-atmosphere",cx:"0",cy:"0",r:"112"}),f.jsx("circle",{cx:"0",cy:"0",fill:"url(#orbitEarthGlow)",r:"96"}),f.jsx("path",{className:"ccd-orbit-continent",d:"M -38 -20 C -18 -46 8 -44 22 -12 C 36 10 18 26 -4 32 C -20 38 -42 22 -48 0 Z"}),f.jsx("path",{className:"ccd-orbit-continent",d:"M 18 20 C 38 14 54 26 48 48 C 42 62 18 62 10 44 C 6 34 8 24 18 20 Z"}),f.jsx("circle",{className:"ccd-orbit-night-shadow",cx:"30",cy:"4",r:"92"})]}),f.jsx("g",{transform:`translate(${b.telescope.x} ${b.telescope.y}) rotate(${b.telescope.rotation*180/Math.PI}) scale(${b.telescope.scale})`,children:f.jsxs("g",{className:"ccd-orbit-telescope",children:[f.jsx("polygon",{points:"-18,-18 12,-28 12,4 -18,14",fill:"url(#orbitCubeFront)"}),f.jsx("polygon",{points:"12,-28 30,-14 30,18 12,4",fill:"url(#orbitCubeSide)"}),f.jsx("polygon",{points:"-18,-18 0,-4 30,-14 12,-28",fill:"rgba(255,255,255,0.82)"}),f.jsx("rect",{x:"-42",y:"-5",width:"18",height:"10",rx:"2.5",fill:"#d9d2f5"}),f.jsx("rect",{x:"30",y:"-4",width:"22",height:"8",rx:"3",fill:"#ffc66f"}),f.jsx("rect",{x:"-6",y:"18",width:"12",height:"34",rx:"5",fill:"#bdb4e8"}),f.jsx("rect",{x:"-34",y:"30",width:"68",height:"10",rx:"5",fill:"#8e78ff",opacity:"0.88"})]})})]})}),f.jsx("div",{className:"ccd-orbit-actions",children:f.jsx("a",{className:"ccd-experience-button",href:"#intro",children:"Next"})})]})}function qd(v,z,b,o){const A=Array.from({length:Ke},()=>0),_=Math.max(0,b-Ke);return v.forEach(C=>{const L=Math.floor((C.time-z)/Da);L<_||L>=b||(A[L-_]+=o(C))}),A}function H0(v,z,b){const o=Array.from({length:$l.length},()=>Array.from({length:Ke},()=>0)),A=Math.max(0,b-Ke);return v.forEach(_=>{const C=Math.floor((_.time-z)/Da);C=b||(o[_.photonIndex][C-A]+=1)}),o}function R0(v,z,b){const o=z0();if(b<=0)return o;const A=Math.max(0,b-Ke);return v.forEach(_=>{const C=Math.floor((_.time-z)/Da);C>=A&&C"u")return null;const v=window.AudioContext??window.webkitAudioContext;return v?new v:null}function G0(v){const[z,b]=dl.useState(()=>A0()),[o,A]=dl.useState(0),[_,C]=dl.useState(!1),[L,O]=dl.useState(!0),[E]=dl.useState(()=>Date.now()),G=dl.useRef(E),H=dl.useRef(null),J=dl.useRef(null),_l=dl.useRef(v),xl=dl.useRef(null);dl.useEffect(()=>{_l.current=v},[v]);const il=()=>{const V=xl.current??q0();if(!V){O(!1);return}xl.current=V,V.resume().then(()=>{O(!0),C(V.state==="running")}).catch(()=>{C(!1)})};dl.useEffect(()=>{const V=()=>{il()};return window.addEventListener("pointerdown",V,{passive:!0}),window.addEventListener("keydown",V),()=>{window.removeEventListener("pointerdown",V),window.removeEventListener("keydown",V)}},[]),dl.useEffect(()=>()=>{xl.current&&xl.current.close()},[]);const El=(V,Rl,Tl)=>{if(!_l.current)return;const jl=xl.current;if(!jl||jl.state!=="running")return;const el=jl.currentTime+Tl,fl=jl.createOscillator(),Q=jl.createGain(),hl=jl.createBiquadFilter(),Zl=$l[V],$=820+V*92,al=.006+Rl*.004,bl=.018+Rl*.02;fl.type="triangle",fl.frequency.setValueAtTime($,el),fl.frequency.exponentialRampToValueAtTime($*.74,el+bl),hl.type="bandpass",hl.frequency.setValueAtTime(1400+Zl.hue*2.4,el),hl.Q.setValueAtTime(1.4,el),Q.gain.setValueAtTime(1e-4,el),Q.gain.exponentialRampToValueAtTime(al,el+.003),Q.gain.exponentialRampToValueAtTime(1e-4,el+bl),fl.connect(hl),hl.connect(Q),Q.connect(jl.destination),fl.start(el),fl.stop(el+bl+.008)};return dl.useEffect(()=>{const V=()=>{A(Date.now()-G.current)};return V(),H.current=window.setInterval(V,90),()=>{H.current!==null&&window.clearInterval(H.current)}},[]),dl.useEffect(()=>{let V=!1;const Rl=()=>{if(V)return;const Tl=[],jl=[];b(el=>{const fl=Date.now(),Q=el.cells.map(al=>{if(al.level<=.001)return al.level===0?al:{...al,level:0};const bl=36/al.decay;return{...al,level:Math.max(0,al.level-bl),size:Math.max(.2,al.size-bl*.3)}});let hl=el.totalPhotons;const Zl=Math.random()<.28?2:1;for(let al=0;alfl-al.time{El(el.photonIndex,el.energy,fl*.012)}),J.current=window.setTimeout(Rl,36+Math.random()*70)};return Rl(),()=>{V=!0,J.current!==null&&window.clearTimeout(J.current)}},[]),{audioArmed:_,audioSupported:L,enableAudio:il,elapsedMilliseconds:o,exposureStartTime:E,simulation:z}}function Y0({cells:v,activeHits:z,averageEnergy:b,guide:o}){return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-stage",children:[f.jsx("div",{className:"ccd-grid-frame",children:f.jsxs("div",{className:"ccd-grid","aria-label":"Photon receptor grid",children:[v.map(A=>f.jsx("div",{className:"ccd-cell",children:f.jsx("span",{className:"ccd-hit",style:{opacity:A.opacity,transform:`translate(-50%, -50%) scale(${A.scale})`,width:`${A.size}rem`,height:`${A.size}rem`,background:A.tint,boxShadow:`0 0 ${.9+A.opacity*1.8}rem ${A.glow}`}})},A.id)),f.jsx("div",{className:"ccd-grid-glow"})]})}),o||null,f.jsxs("div",{className:"ccd-readout","aria-label":"Sensor readout",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Active pixels"}),f.jsx("strong",{children:String(z).padStart(3,"0")})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Mean charge"}),f.jsx("strong",{children:b.toFixed(3)})]})]})]})})}const X0={eyebrow:"Detector Plane",title:"Telescope detector view",description:"The core of the telescope is a camera, called a CCD array. Photons - light from distant galaxies - strike the CCD and light up specific pixels. This is the raw material for the everything a telescope does."},Q0={stepLabel:"Step 1",title:"Photons are hitting the detector",body:"Notice how some pixels are bigger than others? They have more energy."};function L0(){return f.jsx("div",{className:"ccd-intro-screen",children:f.jsxs("div",{className:"ccd-intro-panel",children:[f.jsx("div",{className:"ccd-intro-logo-frame","aria-hidden":"true",children:f.jsx("img",{alt:"",className:"ccd-intro-logo",src:"/glitchhunterlogo.png"})}),f.jsx("div",{className:"ccd-intro-brand",children:f.jsx("span",{className:"ccd-intro-brand-mark",children:"Glitch Hunter's"})}),f.jsxs("div",{className:"ccd-intro-copy",children:[f.jsx("h2",{children:"Guide to Telescopes"}),f.jsx("p",{children:"How do they work? What does the telescope actually do?"})]}),f.jsxs("div",{className:"ccd-intro-covers",children:[f.jsx("span",{className:"ccd-stat-label",children:"In this experience, you will see:"}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"01"}),f.jsx("strong",{children:"The CCD"}),f.jsx("p",{children:"The telescope's eye, where photons land."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"02"}),f.jsx("strong",{children:"Energy and wavelength"}),f.jsx("p",{children:"Colour tells us whether a photon is lower-energy red or higher-energy violet."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"03"}),f.jsx("strong",{children:"The event list"}),f.jsx("p",{children:"Each photon hit becomes a recorded row with time, energy, and detector position."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"04"}),f.jsx("strong",{children:"Periodograms"}),f.jsx("p",{children:"Group events by time or wavelength to see brightness and spectral power."})]}),f.jsxs("div",{className:"ccd-intro-card",children:[f.jsx("span",{className:"ccd-intro-card-index",children:"05"}),f.jsx("strong",{children:"Spectrograms"}),f.jsx("p",{children:"Bin by both time and wavelength to see how the colours evolve."})]})]}),f.jsx("div",{className:"ccd-intro-actions",children:f.jsx("a",{className:"ccd-experience-button",href:"#receptor",children:"Next"})})]})})}function Z0(v){return v in Gd}function V0({onComplete:v}){return f.jsx("div",{className:"ccd-closing-screen",children:f.jsxs("div",{className:"ccd-closing-panel",children:[f.jsx("span",{className:"ccd-stat-label",children:"Key Concepts"}),f.jsx("h2",{children:"What to remember"}),f.jsxs("div",{className:"ccd-closing-grid",children:[f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Binning"}),f.jsx("p",{children:"Grouping events because they arrive at a similar time, or have a similar colour."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Energy / wavelength"}),f.jsx("p",{children:"Red means long wavelength and low energy. Violet means short wavelength and high energy."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Periodogram"}),f.jsx("p",{children:"How the brightness goes up and down over time."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Spectrogram"}),f.jsx("p",{children:"How much there is of each colour."})]}),f.jsxs("div",{className:"ccd-closing-card",children:[f.jsx("strong",{children:"Periodo-spectrogram"}),f.jsx("p",{children:"Binning by both time and wavelength / frequency."})]})]}),f.jsx("p",{className:"ccd-closing-message",children:"You're on your way to becoming a Cosmotologist!"}),f.jsxs("div",{className:"ccd-closing-actions",children:[f.jsx("a",{className:"ccd-experience-button ccd-experience-button-secondary",href:"#orbit",children:"Start Over"}),f.jsx("button",{className:"ccd-experience-button",onClick:()=>{v?.({success:!0,score:100,data:{completedExperience:"ccd-photon-explorer",finalPage:"closing"}})},type:"button",children:"Take the Glitch Gate"})]})]})})}function w0({page:v}){const z=Gd[v];return f.jsx("div",{className:"ccd-transition-screen",children:f.jsxs("div",{className:"ccd-transition-card",children:[f.jsx("span",{className:"ccd-stat-label emojilarge",children:z.emoji}),f.jsx("h2",{children:z.title}),f.jsx("p",{children:z.body}),f.jsx("div",{className:"ccd-transition-actions",children:f.jsx("a",{className:"ccd-experience-button",href:`#${z.nextPage}`,children:"Next"})})]})})}const bf={eyebrow:"",title:"Space telescope 101",description:"In this interactive tutorial, you will see how photons hit eye of the telescope, and how that is turned into turned into different scientific charts. We`ll cover:"};function K0(){const[v,z]=dl.useState(.5),b=O0(v),o=pf(b.hue,b.saturation,b.lightness,.98);return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-energy-panel",children:[f.jsxs("div",{className:"ccd-energy-scale",children:[f.jsx("div",{className:"ccd-energy-spectrum","aria-hidden":"true",style:{"--ccd-spectrum-position":`${v*100}%`,"--ccd-spectrum-color":o}}),f.jsx("div",{className:"ccd-energy-slider-wrap",children:f.jsx("input",{"aria-label":"Photon wavelength and energy slider",className:"ccd-energy-slider",max:1,min:0,onChange:A=>z(Number(A.target.value)),step:.001,type:"range",value:v})}),f.jsxs("div",{className:"ccd-energy-scale-labels",children:[f.jsx("span",{children:"Longer wavelength"}),f.jsx("span",{children:"Shorter wavelength"})]}),f.jsxs("div",{className:"ccd-energy-scale-labels ccd-energy-scale-labels-strong",children:[f.jsx("span",{children:"Red, lower energy"}),f.jsx("span",{children:"Violet, higher energy"})]})]}),f.jsxs("div",{className:"ccd-energy-readout",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Selected colour"}),f.jsx("strong",{style:{color:o},children:b.label})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Wavelength"}),f.jsxs("strong",{children:[b.wavelength.toFixed(0)," nm"]})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Energy"}),f.jsxs("strong",{children:[b.energy.toFixed(2)," units"]})]})]})]})})}const J0={eyebrow:"Photon Energy And Wavelength",title:"Photon colour maps to wavelength",description:"Each hit has energy and wavelength. Red means longer wavelength and lower energy, while violet means shorter wavelength and higher energy. Wavelength is mesaured in nano-meters (nm). One nanometer is one billionth of a meter - about the size of a virus. The visible spectrum ranges from around 380 nm (violet) to 750 nm (red). But telescopes can see beyond that, into high-energy ultraviolet and infrared wavelengths that our eyes can´t detect."},W0={stepLabel:"Colour has meaning",title:"One photon, one observation",body:"In this demo, whenever you see the 🟣 colour, it indicates high energy - short wavelength. 🔴 is lower energy, but longer wavelength. "};function $0({type:v}){if(v==="count-wavelength-time")return f.jsx("div",{className:"ccd-mini-diagram ccd-mini-diagram-grid","aria-hidden":"true",children:Array.from({length:12},(b,o)=>f.jsx("span",{className:"ccd-mini-diagram-grid-cell",style:{opacity:.28+o%4*.14}},o))});const z=v==="count-time"?[.28,.58,.38,.76,.46,.66]:v==="energy-time"?[.22,.5,.42,.88,.56,.72]:[.2,.32,.48,.84,.6,.3];return f.jsx("div",{className:"ccd-mini-diagram","aria-hidden":"true",children:z.map((b,o)=>f.jsx("span",{className:`ccd-mini-diagram-bar${v!=="count-time"?" is-energy":""}`,style:{height:`${b*100}%`}},o))})}function F0({page:v,onSelect:z,showGuide:b,onToggleGuide:o}){const A=v==="receptor",_=v==="photon",C=v==="eventlist";return f.jsxs("section",{className:"ccd-selector","aria-label":"Visualization selector",children:[f.jsxs("div",{className:"ccd-selector-root",children:[f.jsx("span",{className:"ccd-stat-label",children:"These plots are different ways of binning the same event list."}),f.jsx("p",{children:"Everything begins with the CCD receiving photons. Those hits become rows in an event list. After that, different binning rules produce different plots."})]}),f.jsxs("div",{className:"ccd-selector-raw",children:[f.jsxs("a",{className:`ccd-selector-link${A?" is-active":""}`,href:"#receptor",onClick:z,children:[f.jsx("span",{className:"ccd-selector-link-label",children:"Raw data"}),f.jsx("strong",{children:"1. Photons hit CCD pixels"}),f.jsx("span",{children:"This is the detector plane: the spatial pattern of hits on the telescope CCD."})]}),f.jsxs("a",{className:`ccd-selector-link${_?" is-active":""}`,href:"#photon",onClick:z,children:[f.jsx("span",{className:"ccd-selector-link-label",children:"Photon properties"}),f.jsx("strong",{children:"2. Colour indicates wavelength and energy"}),f.jsx("span",{children:"Red means lower energy and violet means higher energy, which is why later plots can bin by wavelength."})]}),f.jsxs("a",{className:`ccd-selector-link${C?" is-active":""}`,href:"#eventlist",onClick:z,children:[f.jsx("span",{className:"ccd-selector-link-label",children:"Recorded data"}),f.jsx("strong",{children:"3. Each hit becomes a row: time, energy, x, y"}),f.jsx("span",{children:"This is the FITS-style event table. Every later diagram is derived from these same rows."})]})]}),f.jsx("div",{className:"ccd-selector-section",children:f.jsxs("div",{className:"ccd-selector-axis",children:[f.jsx("span",{className:"ccd-stat-label",children:"4. Choose a binning rule"}),f.jsx("strong",{children:"Derived view: binned visualization"}),f.jsx("p",{children:"These plots are different ways of grouping the same event rows."})]})}),f.jsx("div",{className:"ccd-selector-results",children:T0.map(L=>f.jsxs("a",{className:`ccd-selector-leaf${L.page===v?" is-active":""}`,href:`#${L.page}`,onClick:z,children:[f.jsx("span",{className:"ccd-selector-leaf-dim",children:"Input: same event list"}),f.jsx($0,{type:L.diagram}),f.jsx("strong",{children:L.title}),f.jsxs("span",{children:["Rule: ",L.rule]}),f.jsxs("span",{children:["Output: ",L.output]})]},L.page))}),f.jsxs("div",{className:"ccd-selector-current",children:[f.jsx("span",{className:"ccd-stat-label",children:"Recording"}),f.jsx("button",{className:`ccd-selector-option${b?" is-active":""}`,onClick:o,type:"button",children:b?"Guide overlay on":"Guide overlay off"})]})]})}function k0(v){switch(v){case"intro":return bf;case"receptor":return X0;case"photon":return J0;case"eventlist":return tv;case"binning":return hv;case"flux":return ov;case"periodogram":return nv;case"spectrogram":return iv;case"closing":return bf;default:return bf}}function I0(v){switch(v){case"intro":return null;case"receptor":return Q0;case"photon":return W0;case"eventlist":return ev;case"binning":return mv;case"flux":return rv;case"periodogram":return uv;case"spectrogram":return fv}}function P0({page:v}){const z=we.indexOf(v),b=z>0?we[z-1]:null,o=z>=0&&z{const _=B0(o.cellIndex),C=(o.time-z)/1e3;return $l[o.photonIndex],f.jsxs("div",{className:"ccd-event-table",children:[f.jsx("span",{children:C.toFixed(3)}),f.jsx("span",{style:{color:je(o.photonIndex,.92)},children:o.energy.toFixed(2)}),f.jsx("span",{children:String(_.x).padStart(2,"0")}),f.jsx("span",{children:String(_.y).padStart(2,"0")})]},`${o.time}-${o.cellIndex}-${A}`)}),b.length===0?f.jsxs("div",{className:"ccd-event-table ccd-event-table-empty",children:[f.jsx("span",{children:"No rows yet"}),f.jsx("span",{children:"Waiting"}),f.jsx("span",{children:"--"}),f.jsx("span",{children:"--"})]}):null]})]}),f.jsx("div",{className:"ccd-flux-legend",children:$l.map((o,A)=>f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-legend-dot",style:{background:je(A,.92),boxShadow:`0 0 0.8rem ${je(A,.56)}`}}),f.jsx("span",{children:o.label})]},o.label))})]})})}const tv={eyebrow:"FITS Event Table",title:"Photon event list view",description:"The clicks are recorded in a table, called the event list, with the time, energy, and CCD pixel position."},ev={stepLabel:"Step 3",title:"Each hit becomes a row in the event list",body:"Astronomy pipelines often save these events as FITS tables. This is the raw data you can download from Telescopes like Chandra!"};function av({spectralEnergy:v}){const z=Math.max(...v,.01),b=v.reduce((o,A)=>o+A,0)||1;return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Integrated over last 12 completed 1.0 s bins"}),f.jsxs("strong",{children:[b.toFixed(2)," total energy units"]})]}),f.jsx("div",{className:"ccd-periodogram","aria-label":"Periodogram chart",children:$l.map((o,A)=>{const _=ze(v[A]/z,0,1),C=v[A]/b;return f.jsxs("div",{className:"ccd-periodogram-band",children:[f.jsx("div",{className:"ccd-bar-shell",children:f.jsx("div",{className:"ccd-bar-fill",style:{height:`${18+_*82}%`,background:`linear-gradient(180deg, ${je(A,.55)}, ${je(A,1)})`,boxShadow:`0 0 1.4rem ${je(A,.72)}`}})}),f.jsxs("div",{className:"ccd-band-meta",children:[f.jsx("strong",{children:o.shortLabel}),f.jsxs("span",{children:[o.wavelength," nm"]}),f.jsxs("span",{children:[v[A].toFixed(2)," E"]}),f.jsxs("span",{children:[(C*100).toFixed(1),"%"]})]})]},o.label)})})]})})}const nv={eyebrow:"Spectral power",title:"Spectrogram of energy",description:"We put low-energy on the left, and high energy on the right. The energy of all the photons in each frequency bin integrated over some period (here last 12 secs) gives us the shape of the spectrum during that time."},uv={stepLabel:"Step 6",title:"Spectral power",body:"Spectral power reveals the energy distribution, and it´s very important for many applications. It can tell us a lot about how stars work"};function cv({spectrogramBins:v}){const z=Math.max(...v.flat(),1);return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Clicks per 1.0 s time bin"}),f.jsxs("strong",{children:[Ke," time bins x ",$l.length," frequency bins"]})]}),f.jsxs("div",{className:"ccd-spectrogram-shell",children:[f.jsx("div",{className:"ccd-spectrogram-axis",children:$l.map(b=>f.jsx("span",{children:b.label},b.label))}),f.jsx("div",{className:"ccd-spectrogram","aria-label":"Spectrogram heat map",children:$l.map((b,o)=>f.jsx("div",{className:"ccd-spectrogram-row",children:v[o].map((A,_)=>f.jsx("span",{className:"ccd-spectrogram-cell",style:{background:je(o,A/z),boxShadow:A>0?`0 0 0.8rem ${je(o,A/z)}`:"none"}},`${b.label}-${_}`))},b.label))})]}),f.jsxs("div",{className:"ccd-spectrogram-footer",children:[f.jsx("span",{children:"Earlier"}),f.jsx("span",{children:"Now"})]})]})})}const iv={eyebrow:"Frequency X Time",title:"Periodo-spectro-gram!",description:"You can play around with the same data and make many charts! This shows the energy arriving during each time bin for each frequency bin!"},fv={stepLabel:"Step 7",title:"Binned by time and frequency",body:"Is it useful? Maybe not for a lot of applications, but it looks pretty!"};function sv({fluxBins:v}){const z=v.some(il=>il>0)?v:[1.2,1.8,1.4,2.1,1.7,1.5,2.3,1.6,1.9,1.4,2,1.7],b=z.map((il,El)=>{const V=z.slice(0,El+1);return V.reduce((Rl,Tl)=>Rl+Tl,0)/V.length}),o=z[z.length-1]??0,A=z.reduce((il,El)=>il+El,0)/z.length,_=z.reduce((il,El)=>il+(El-A)**2,0)/z.length,C=Math.sqrt(_),L=Math.min(...z),O=Math.max(...z),E=Math.min(...b),G=Math.max(...b),H={min:Math.min(L,E),max:Math.max(O,G)},J=Sf(z,760,240,H),_l=M0(z,760,240,H),xl=Sf(b,760,240,H);return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Total energy per 1.0 s bin"}),f.jsxs("strong",{children:[o.toFixed(2)," energy units in latest bin"]})]}),f.jsxs("div",{className:"ccd-flux-chart-shell",children:[f.jsxs("svg",{className:"ccd-flux-chart",viewBox:"0 0 760 240","aria-label":"Total flux variability chart",preserveAspectRatio:"none",children:[f.jsxs("defs",{children:[f.jsxs("linearGradient",{id:"fluxArea",x1:"0",x2:"0",y1:"0",y2:"1",children:[f.jsx("stop",{offset:"0%",stopColor:"rgba(255, 113, 74, 0.40)"}),f.jsx("stop",{offset:"100%",stopColor:"rgba(125, 100, 255, 0.03)"})]}),f.jsxs("linearGradient",{id:"fluxLine",x1:"0",x2:"1",y1:"0",y2:"0",children:[f.jsx("stop",{offset:"0%",stopColor:"#ff8d66"}),f.jsx("stop",{offset:"55%",stopColor:"#ffd35d"}),f.jsx("stop",{offset:"100%",stopColor:"#8f7dff"})]})]}),z.map((il,El)=>{const V=760/z.length;return f.jsx("rect",{className:El%2===0?"ccd-flux-bin":"ccd-flux-bin ccd-flux-bin-alt",x:El*V,y:0,width:V,height:240},El)}),f.jsx("path",{className:"ccd-flux-area",d:_l,fill:"url(#fluxArea)"}),f.jsx("path",{className:"ccd-flux-line",d:J,stroke:"url(#fluxLine)"}),f.jsx("path",{className:"ccd-flux-mean-line",d:xl})]}),f.jsxs("div",{className:"ccd-flux-legend",children:[f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-raw"}),f.jsx("span",{children:"Raw flux"})]}),f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-mean"}),f.jsx("span",{children:"Running mean"})]})]}),f.jsxs("div",{className:"ccd-flux-axis",children:[f.jsx("span",{children:"Earlier"}),f.jsx("span",{children:"Now"})]})]}),f.jsxs("div",{className:"ccd-flux-metrics",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Mean flux"}),f.jsx("strong",{children:A.toFixed(4)})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Sigma"}),f.jsx("strong",{children:C.toFixed(4)})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Range"}),f.jsxs("strong",{children:[L.toFixed(4)," to ",O.toFixed(4)]})]})]})]})})}const ov={eyebrow:"Flux Variability",title:"Total flux periodogram",description:"If we focus on the energy instead of the count, we get the flux - energy per second. It tells us how the total energy varies over time (1 sec bins)."},rv={stepLabel:"Step 5",title:"Periodogram of flux",body:"This tells you how much the flux varies over time . The dotted line is the running mean, which helps show trends over time."};function dv({countBins:v}){const z=v.some(A=>A>0)?v:[3,5,4,7,6,5,8,4,6,5,7,4],b=Math.max(...z,1),o=z.reduce((A,_)=>A+_,0)/z.length;return f.jsx("div",{className:"ccd-page",children:f.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[f.jsxs("div",{className:"ccd-chart-head",children:[f.jsx("span",{className:"ccd-stat-label",children:"Photon clicks per 1.0 s bin"}),f.jsxs("strong",{children:[o.toFixed(1)," clicks / second bin"]})]}),f.jsxs("div",{className:"ccd-counts-shell",children:[f.jsx("div",{className:"ccd-counts-chart","aria-label":"Photon counts per bin chart",children:z.map((A,_)=>f.jsxs("div",{className:"ccd-count-bin",children:[f.jsx("div",{className:"ccd-count-bin-label",children:A}),f.jsx("div",{className:"ccd-count-bar-shell",children:f.jsx("div",{className:"ccd-count-bar",style:{height:`${12+A/b*88}%`}})})]},_))}),f.jsxs("div",{className:"ccd-flux-axis",children:[f.jsx("span",{children:"Earlier"}),f.jsx("span",{children:"Now!"})]})]}),f.jsx("div",{className:"ccd-flux-legend",children:f.jsxs("span",{className:"ccd-flux-legend-item",children:[f.jsx("span",{className:"ccd-flux-legend-swatch ccd-counts-legend-swatch-bin"}),f.jsx("span",{children:"Photon count bins"})]})}),f.jsxs("div",{className:"ccd-flux-metrics",children:[f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Bin width"}),f.jsx("strong",{children:"1.0 s"})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Latest bin"}),f.jsxs("strong",{children:[z[z.length-1]??0," clicks"]})]}),f.jsxs("div",{className:"ccd-stat",children:[f.jsx("span",{className:"ccd-stat-label",children:"Mean bin count"}),f.jsx("strong",{children:o.toFixed(2)})]})]})]})})}const hv={eyebrow:"Brightness",title:"Periodogram of counts",description:"The first chart is the periodogram. We put the clicks into groups. They arrive same second, same group! This is called time bining. (each bin 1 sec). This gives us the count per second - or the periodogram of photon counts."},mv={stepLabel:"Step 4",title:"Brightness is counting clicks!",body:"If we ignore photon energy and just count how many events arrive each second, we get a brightness-style light curve from the same event list."};function vv({onComplete:v,onProgress:z}={}){const[b,o]=dl.useState(()=>Bd()),[A,_]=dl.useState(!1),[C,L]=dl.useState(!0),{elapsedMilliseconds:O,exposureStartTime:E,simulation:G}=G0(b==="receptor");dl.useEffect(()=>{const $=()=>{o(Bd()),_(!1)};return window.addEventListener("hashchange",$),()=>window.removeEventListener("hashchange",$)},[]),dl.useEffect(()=>{const $=we.indexOf(b);$<0||z?.(Math.round($/(we.length-1)*100))},[z,b]),dl.useEffect(()=>{if(!A)return;const $=al=>{al.key==="Escape"&&_(!1)};return window.addEventListener("keydown",$),()=>window.removeEventListener("keydown",$)},[A]);const H=dl.useMemo(()=>G.cells.map($=>({id:$.id,opacity:ze($.level,0,1),scale:.72+ze($.level*.7,0,.86),size:$.size,tint:$.tint,glow:$.glow})),[G.cells]),J=Math.floor(O/Da),_l=dl.useMemo(()=>R0(G.eventHistory,E,J),[J,E,G.eventHistory]),xl=dl.useMemo(()=>qd(G.eventHistory,E,J,$=>$.energy),[J,E,G.eventHistory]),il=dl.useMemo(()=>qd(G.eventHistory,E,J,()=>1),[J,E,G.eventHistory]),El=dl.useMemo(()=>H0(G.eventHistory,E,J),[J,E,G.eventHistory]),V=H.filter($=>$.opacity>.08).length,Rl=H.reduce(($,al)=>$+al.opacity,0)/Ef,Tl=_l.reduce(($,al,bl,it)=>al>it[$]?bl:$,0),jl=$l[Tl],el=Z0(b)?b:null,fl=b==="orbit"||b==="intro"||b==="closing",Q=b==="orbit",hl=el||fl?null:k0(b),Zl=C&&!fl&&!el?f.jsx(P0,{page:b}):null;return f.jsx("main",{className:"ccd-shell",children:f.jsxs("section",{className:`ccd-panel${Q?" ccd-panel-wide-scene":""}`,children:[hl?f.jsx("header",{className:"ccd-topbar",children:f.jsxs("div",{className:"ccd-copy",children:[f.jsx("p",{className:"ccd-kicker",children:hl.eyebrow}),f.jsx("h1",{children:hl.title}),f.jsx("p",{className:"ccd-description",children:hl.description})]})}):null,A?f.jsx("div",{className:"ccd-modal-backdrop",onClick:()=>_(!1),role:"presentation",children:f.jsxs("div",{className:"ccd-modal",onClick:$=>$.stopPropagation(),role:"dialog","aria-modal":"true","aria-label":"Visualization chooser",children:[f.jsxs("div",{className:"ccd-modal-header",children:[f.jsxs("div",{className:"ccd-copy",children:[f.jsx("p",{className:"ccd-kicker",children:"Data Pipeline"}),f.jsx("h2",{children:"How do we transform the event list?"})]}),f.jsx("button",{className:"ccd-modal-close",onClick:()=>_(!1),type:"button","aria-label":"Close visualization chooser",children:"Close"})]}),f.jsx(F0,{page:b,onSelect:()=>_(!1),showGuide:C,onToggleGuide:()=>L($=>!$)})]})}):null,f.jsxs("div",{className:"ccd-experience-frame",children:[b==="orbit"?f.jsx(C0,{}):null,b==="intro"?f.jsx(L0,{}):null,b==="closing"?f.jsx(V0,{onComplete:v}):null,el?f.jsx(w0,{page:el}):null,b==="receptor"?f.jsx(Y0,{cells:H,activeHits:V,averageEnergy:Rl,guide:Zl}):null,b==="photon"?f.jsx(K0,{}):null,b==="eventlist"?f.jsx(lv,{events:G.eventHistory,exposureStartTime:E}):null,b==="periodogram"?f.jsx(av,{spectralEnergy:_l}):null,b==="spectrogram"?f.jsx(cv,{spectrogramBins:El}):null,b==="flux"?f.jsx(sv,{fluxBins:xl}):null,b==="binning"?f.jsx(dv,{countBins:il}):null,b!=="receptor"?Zl:null]}),!fl&&!el?f.jsxs("div",{className:"ccd-summary-row","aria-label":"Simulation summary",children:[f.jsxs("div",{className:"ccd-summary-card",children:[f.jsx("span",{className:"ccd-stat-label",children:"Exposure time"}),f.jsx("strong",{children:N0(O)})]}),f.jsxs("div",{className:"ccd-summary-card",children:[f.jsx("span",{className:"ccd-stat-label",children:"Photon count"}),f.jsx("strong",{children:G.totalPhotons})]}),f.jsxs("div",{className:"ccd-summary-card",children:[f.jsx("span",{className:"ccd-stat-label",children:"Dominant Band (Last 1 s)"}),f.jsx("strong",{children:jl.label})]})]}):null]})})}p0.createRoot(document.getElementById("root")).render(f.jsx(vv,{})); diff --git a/public/glitch/glitch_ccd/assets/index-Da7gUXQx.css b/public/glitch/glitch_ccd/assets/index-Da7gUXQx.css new file mode 100644 index 0000000..ab5747b --- /dev/null +++ b/public/glitch/glitch_ccd/assets/index-Da7gUXQx.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Russo+One&family=Space+Grotesk:wght@400;500;700&display=swap";:root{--ccd-bg: #04010b;--ccd-panel: rgba(11, 10, 22, .86);--ccd-panel-edge: rgba(168, 160, 255, .22);--ccd-text: #f4efff;--ccd-muted: #aaa1c8;--ccd-grid-line: rgba(255, 255, 255, .08);--ccd-card-bg: rgba(10, 11, 20, .74);--ccd-card-edge: rgba(255, 255, 255, .08);--ccd-accent-soft: rgba(255, 113, 74, .12);--ccd-accent-cool: rgba(125, 100, 255, .14)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 18% 18%,rgba(255,100,72,.18),transparent 20rem),radial-gradient(circle at 82% 24%,rgba(111,90,255,.22),transparent 26rem),radial-gradient(circle at 50% 100%,rgba(54,20,92,.4),transparent 28rem),linear-gradient(180deg,#06020f,#030108 55%,#020106);color:var(--ccd-text);font-family:Space Grotesk,sans-serif}button,input,select,textarea{font:inherit}.ccd-shell{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.ccd-panel{width:min(94vw,64rem);display:grid;gap:1.4rem;padding:clamp(1.2rem,3vw,2rem);border-radius:1.8rem}.ccd-panel-wide-scene{width:min(97vw,84rem)}.ccd-topbar{padding:.8rem 1rem;display:grid;gap:1rem}.ccd-toolbar-row{display:flex;justify-content:flex-end}.ccd-pipeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.ccd-pipeline-step{display:flex;font-size:small;align-items:center;gap:.65rem;min-height:1.25rem;padding:.4rem;border:1px solid rgba(255,255,255,.08);border-radius:2rem;color:#cfc6ea;background:#ffffff08;transition:border-color .14s ease,background .14s ease,box-shadow .14s ease,transform .14s ease}.ccd-pipeline-step.is-active{border-color:#ff795652;color:#f3edff;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1a;transform:translateY(-1px)}.ccd-pipeline-index{display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;flex:0 0 auto;border-radius:999px;border:1px solid rgba(255,255,255,.12);color:var(--ccd-muted);background:#ffffff0a;font-family:Russo One,sans-serif;font-size:.78rem}.ccd-pipeline-step.is-active .ccd-pipeline-index{border-color:#ff795642;color:#fff4ef;background:#ff714a24}.ccd-copy{display:grid;gap:.65rem}.ccd-kicker,.ccd-stat-label{margin:0;color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.22em;text-transform:uppercase}.emojilarge{font-size:2.8rem;line-height:1}.ccd-copy h1,.ccd-summary-card strong,.ccd-stat strong,.ccd-chart-head strong,.ccd-band-meta strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-copy h1{margin:0;font-size:clamp(1.9rem,3vw,3rem);line-height:.96;letter-spacing:-.03em}.ccd-description{margin:0;max-width:48rem;color:#c8c0df;line-height:1.55}.ccd-chooser-button,.ccd-modal-close{padding:.8rem 1rem;border:1px solid rgba(255,121,86,.28);border-radius:.9rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.88rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-chooser-button:hover,.ccd-modal-close:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-modal-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-start;justify-content:center;padding:1.5rem 1rem 1rem;background:#03040abd;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow-y:auto}.ccd-modal{width:min(92vw,62rem);max-height:min(90vh,52rem);overflow:auto;display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.3rem;background:linear-gradient(180deg,#140e28eb,#0a0813f5),#0b0a16f5;box-shadow:0 1.4rem 3rem #0000006b}.ccd-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.ccd-modal-header h2{margin:0;font-family:Russo One,sans-serif;font-size:1.3rem;font-weight:400}.ccd-selector{display:grid;gap:.95rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:radial-gradient(circle at top center,rgba(255,113,74,.08),transparent 40%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#090a15e0}.ccd-selector-root{display:grid;justify-items:center;gap:.35rem;text-align:center}.ccd-selector-root strong,.ccd-selector-link strong,.ccd-selector-axis strong,.ccd-selector-leaf strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-selector-root strong{font-size:1.25rem}.ccd-selector-root p{margin:0;max-width:42rem;color:#d8d0f8;line-height:1.45}.ccd-selector-raw,.ccd-selector-results{display:grid;gap:.9rem}.ccd-selector-raw{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-selector-link,.ccd-selector-leaf{position:relative;display:grid;gap:.38rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;color:#e9e3ff;text-decoration:none;background:#ffffff08;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease,background .14s ease}.ccd-selector-link:hover,.ccd-selector-leaf:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-link.is-active,.ccd-selector-leaf.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1.2rem #8b6aff1f}.ccd-selector-link-label,.ccd-selector-leaf-dim{color:var(--ccd-muted);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.ccd-selector-link-label{margin-bottom:.15rem}.ccd-selector-section{display:grid;gap:.75rem}.ccd-selector-axis{position:relative;display:grid;justify-items:center;gap:.38rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08;text-align:center}.ccd-selector-axis p{margin:0;max-width:34rem;color:#d8d0f8;line-height:1.45}.ccd-selector-option{justify-self:start;padding:.82rem .7rem;border:1px solid rgba(255,255,255,.08);border-radius:.9rem;color:#e9e3ff;background:#ffffff08;cursor:pointer;transition:transform .14s ease,border-color .14s ease,background .14s ease,box-shadow .14s ease}.ccd-selector-option:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-option.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1f}.ccd-selector-results{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-current{display:grid;gap:.55rem;padding:.9rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-mini-diagram{display:flex;align-items:end;gap:.32rem;min-height:4rem;padding:.55rem;margin:.15rem 0 .25rem;border-radius:.85rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 24%),#04070feb}.ccd-mini-diagram-bar{flex:1 1 0;min-height:.5rem;border-radius:.45rem .45rem .18rem .18rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6);box-shadow:0 0 .65rem #ff9e6d29}.ccd-mini-diagram-bar.is-energy{background:linear-gradient(180deg,#78dfffeb,#8d7effe6);box-shadow:0 0 .8rem #8d7eff2e}.ccd-mini-diagram-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.28rem;align-items:stretch}.ccd-mini-diagram-grid-cell{display:block;min-height:.95rem;border-radius:.32rem;background:linear-gradient(180deg,#ffd35dbd,#8f7dffe0);box-shadow:0 0 .7rem #8d7eff24}.ccd-event-note{display:grid;gap:.45rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(90deg,#ff714a14,#7d64ff14),#ffffff08}.ccd-event-note p{margin:0;color:#d8d0f8;line-height:1.45}.ccd-page{display:grid;gap:1rem}.ccd-orbit-screen{display:grid;place-items:center;min-height:min(80vh,48rem);width:100%}.ccd-orbit-panel{width:min(100%,56rem);display:grid;gap:1rem;padding:clamp(1rem,2.8vw,1.8rem);border:1px solid rgba(255,255,255,.09);border-radius:1.6rem;background:radial-gradient(circle at 16% 18%,rgba(255,113,74,.08),transparent 18rem),radial-gradient(circle at 84% 20%,rgba(125,100,255,.14),transparent 22rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15eb}.ccd-orbit-copy{display:grid;gap:.4rem;justify-items:center;text-align:center}.ccd-orbit-copy h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(2rem,4vw,3.2rem);font-weight:400;line-height:.95;letter-spacing:-.03em}.ccd-orbit-copy p{margin:0;max-width:36rem;color:#d8d0f8;line-height:1.55}.ccd-orbit-stage{position:relative;width:100%;overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1.35rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.08),transparent 18rem),linear-gradient(180deg,#080a14f5,#02040bfa)}.ccd-orbit-svg{display:block;width:100%;height:auto;min-height:36rem}.ccd-orbit-track{fill:none;stroke:#ffffff24;stroke-width:2.5;stroke-dasharray:12 10}.ccd-orbit-earth-atmosphere{fill:#68cdff2e;filter:drop-shadow(0 0 1.6rem rgba(76,173,255,.18))}.ccd-orbit-continent{fill:#57e3968c}.ccd-orbit-night-shadow{fill:#050a1a7a}.ccd-orbit-telescope{filter:drop-shadow(0 0 1.2rem rgba(255,167,113,.24))}.ccd-orbit-actions{display:flex;justify-content:center}.ccd-intro-screen{display:grid;place-items:center;min-height:min(76vh,44rem)}.ccd-intro-panel{display:grid;gap:1.1rem;width:min(100%,48rem);padding:clamp(1rem,2.6vw,1.6rem);border:1px solid rgba(255,255,255,.09);border-radius:1.5rem;background:radial-gradient(circle at 18% 18%,rgba(255,113,74,.12),transparent 18rem),radial-gradient(circle at 82% 24%,rgba(125,100,255,.16),transparent 24rem),radial-gradient(circle at 50% 0%,rgba(255,255,255,.04),transparent 18rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15e6;justify-items:center}.ccd-intro-logo-frame{display:grid;place-items:center;width:clamp(6.5rem,16vw,8.75rem);aspect-ratio:1;padding:.45rem;border:1px solid rgba(255,255,255,.12);border-radius:50%;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.14),transparent 48%),linear-gradient(180deg,#ff714a1f,#7d64ff1a),#ffffff08;box-shadow:0 0 0 1px #ffffff08 inset,0 0 1.8rem #7d64ff29}.ccd-intro-logo{width:100%;height:100%;object-fit:cover;border-radius:50%;box-shadow:0 0 1.2rem #ff714a2e}.ccd-intro-brand{display:inline-grid;justify-items:center;gap:.18rem;text-align:center}.ccd-intro-brand-mark,.ccd-intro-brand-sub{font-family:Russo One,sans-serif;font-weight:400;line-height:1}.ccd-intro-brand-mark{color:#fff1e8;font-size:clamp(1.1rem,2.8vw,1.55rem);letter-spacing:.08em;text-transform:uppercase}.ccd-intro-brand-sub{color:#d7cff3;font-size:clamp(1.55rem,4.5vw,2.8rem);letter-spacing:-.04em}.ccd-intro-copy{display:grid;gap:.45rem;justify-items:center;text-align:center}.ccd-intro-copy h2,.ccd-intro-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-intro-copy h2{font-size:clamp(2rem,4vw,3.4rem);line-height:.95;letter-spacing:-.03em}.ccd-intro-copy p,.ccd-intro-card p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-intro-copy p{font-size:1rem;max-width:35rem}.ccd-intro-covers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;width:100%}.ccd-intro-card{display:grid;gap:.42rem;padding:.85rem;border:1px solid rgba(255,255,255,.08);border-radius:1.05rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 22%),#ffffff08;box-shadow:0 0 0 1px #ffffff05 inset}.ccd-intro-card-index{color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.72rem;letter-spacing:.18em}.ccd-intro-actions{display:flex;justify-content:flex-end}.ccd-energy-panel{display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#0a0c16e0}.ccd-energy-scale{display:grid;gap:.65rem}.ccd-energy-spectrum{position:relative;height:3.5rem;border-radius:999px;background:linear-gradient(90deg,#ff5752f2,#ff7e47f2 14%,#ffba52f2,#fff461f2,#7df15ff2,#61e6faf2,#6b7ffff2 84%,#c67afff2);box-shadow:inset 0 0 0 1px #ffffff14,0 0 1.8rem #7d64ff24}.ccd-energy-spectrum:after{content:"";position:absolute;top:50%;left:var(--ccd-spectrum-position, 50%);width:1.15rem;height:4.25rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:var(--ccd-spectrum-color, rgba(255, 255, 255, .9));box-shadow:0 0 1.1rem var(--ccd-spectrum-color, rgba(255, 255, 255, .44)),0 0 0 .2rem #05070de6;transform:translate(-50%,-50%)}.ccd-energy-slider-wrap{padding:0 .3rem}.ccd-energy-slider{width:100%;margin:0;appearance:none;background:transparent}.ccd-energy-slider::-webkit-slider-runnable-track{height:.4rem;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-webkit-slider-thumb{appearance:none;width:1rem;height:1rem;margin-top:-.3rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-slider::-moz-range-track{height:.4rem;border:0;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-moz-range-thumb{width:1rem;height:1rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-scale-labels{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#cfc6ea;font-size:.84rem}.ccd-energy-scale-labels-strong{font-family:Russo One,sans-serif;font-size:.78rem;letter-spacing:.04em}.ccd-energy-readout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.ccd-energy-notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-transition-screen{display:grid;place-items:center;min-height:min(68vh,34rem);padding:1rem 0;background:none}.ccd-transition-card{width:min(100%,30rem);display:grid;gap:.75rem;justify-items:center;padding:.4rem 0;text-align:center}.ccd-transition-card h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(1.7rem,4vw,2.35rem);font-weight:400;line-height:.98}.ccd-transition-card p{margin:0;max-width:24rem;color:#d8d0f8;line-height:1.5}.ccd-transition-actions{display:flex;justify-content:center;width:100%}.ccd-closing-screen{display:grid;place-items:center;min-height:min(72vh,40rem);padding:1rem 0}.ccd-closing-panel{width:min(100%,44rem);display:grid;gap:1rem;padding:.4rem 0}.ccd-closing-panel h2,.ccd-closing-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-closing-panel h2{font-size:clamp(1.8rem,4vw,2.5rem);line-height:.98}.ccd-closing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-closing-card{display:grid;gap:.38rem;padding:.9rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-closing-card p,.ccd-closing-message{margin:0;color:#d8d0f8;line-height:1.5}.ccd-closing-message{font-family:Russo One,sans-serif;font-size:1rem;text-align:center}.ccd-closing-actions{display:flex;justify-content:center}.ccd-experience-frame{display:grid;gap:1rem}.ccd-experience-overlay{display:grid;gap:.75rem;width:100%;max-width:36rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.1);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 22%,rgba(125,100,255,.06)),#0a0c16e0;box-shadow:0 0 0 1px #ffffff08 inset}.ccd-experience-step{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#d8d0f8;font-size:.84rem}.ccd-experience-overlay h2{margin:0;font-family:Russo One,sans-serif;font-size:1.1rem;font-weight:400;line-height:1.15}.ccd-experience-overlay p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-experience-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.ccd-experience-button{display:inline-flex;align-items:center;justify-content:center;min-width:7rem;padding:.72rem .95rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;text-decoration:none;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-experience-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-experience-button-secondary{border-color:#ffffff1f;background:#ffffff0a}.ccd-experience-spacer{width:7rem}.ccd-stage{display:grid;gap:1rem;justify-items:center}.ccd-grid-frame{position:relative;width:min(78vw,36rem);aspect-ratio:1;padding:1rem;border-radius:50%;background:linear-gradient(145deg,#ffffff0a,#ffffff03),#060812eb;box-shadow:inset 0 0 0 1px #ffffff0a,0 0 0 1px #9976ff14,0 1rem 3rem #00000057}.ccd-grid{position:relative;display:grid;grid-template-columns:repeat(18,minmax(0,1fr));width:100%;height:100%;overflow:hidden;border-radius:50%;background:linear-gradient(180deg,#080a14fa,#02040bfa),#05070d}.ccd-grid:before{content:"";position:absolute;inset:0;background:linear-gradient(var(--ccd-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--ccd-grid-line) 1px,transparent 1px);background-size:calc(100% / 18) calc(100% / 18);pointer-events:none}.ccd-grid:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,transparent 48%,rgba(0,0,0,.34) 100%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 12%,transparent 88%,rgba(255,255,255,.04));pointer-events:none}.ccd-cell{position:relative}.ccd-hit{position:absolute;left:50%;top:50%;border-radius:999px;pointer-events:none;will-change:transform,opacity;transition:opacity 60ms linear,transform 90ms ease-out,box-shadow .12s ease-out}.ccd-grid-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(151,100,255,.06),transparent 44%),radial-gradient(circle at 50% 50%,transparent 62%,rgba(255,110,74,.05) 100%);mix-blend-mode:screen;pointer-events:none}.ccd-readout,.ccd-summary-row{display:grid;gap:.9rem}.ccd-readout{width:min(78vw,36rem);grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-summary-row{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.ccd-stat,.ccd-summary-card,.ccd-chart-panel,.ccd-table-panel,.ccd-legend-chip{border:1px solid var(--ccd-card-edge);border-radius:1rem;background:var(--ccd-card-bg)}.ccd-stat,.ccd-summary-card{display:grid;gap:.35rem;padding:.95rem 1rem}.ccd-stat strong,.ccd-summary-card strong,.ccd-chart-head strong{font-size:1.28rem}.ccd-audio-button{padding:.72rem .9rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-audio-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1.1rem #8b6aff1f}.ccd-chart-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 18%,transparent 80%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-table-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 15%,transparent 85%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-chart-panel-wide{gap:1.15rem}.ccd-chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.ccd-periodogram{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:.8rem;min-height:20rem;align-items:end}.ccd-periodogram-band{display:grid;gap:.8rem}.ccd-bar-shell{display:flex;align-items:end;justify-content:center;min-height:18rem;padding:.8rem .4rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 26%),#04070feb}.ccd-bar-fill{width:100%;min-height:1.6rem;border-radius:.8rem .8rem .35rem .35rem}.ccd-band-meta{display:grid;gap:.15rem;justify-items:center;text-align:center;color:#cdc5e8;font-size:.84rem}.ccd-spectrum-legend{display:flex;flex-wrap:wrap;gap:.7rem}.ccd-event-table-shell{overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 14%),#04070ff5}.ccd-event-table,.ccd-event-table-head{display:grid;grid-template-columns:1.2fr 1fr .8fr .8fr;gap:.8rem;align-items:center}.ccd-event-table{padding:.72rem .95rem;border-bottom:1px solid rgba(255,255,255,.06);font-family:SFMono-Regular,Menlo,monospace;font-size:.86rem;letter-spacing:.02em}.ccd-event-table-head{padding:.85rem .95rem;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;color:#e9e3ff;font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.14em}.ccd-event-table-body{max-height:26rem;overflow:auto}.ccd-event-table-body .ccd-event-table:nth-child(2n){background:#ffffff05}.ccd-event-table-empty{color:#aaa1c8}.ccd-legend-chip{display:inline-flex;align-items:center;gap:.55rem;padding:.72rem .85rem}.ccd-legend-dot{width:.7rem;height:.7rem;border-radius:999px}.ccd-spectrogram-shell{display:grid;grid-template-columns:5rem minmax(0,1fr);gap:.9rem;align-items:stretch}.ccd-spectrogram-axis{display:grid;grid-template-rows:repeat(8,minmax(0,1fr));gap:.5rem;color:#b7afd6;font-size:.84rem}.ccd-spectrogram-axis span{display:flex;align-items:center}.ccd-spectrogram{display:grid;gap:.45rem;overflow-x:auto}.ccd-spectrogram-row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:.3rem;min-width:22rem}.ccd-spectrogram-cell{display:block;min-height:1.6rem;border-radius:.35rem;background:#ffffff0f}.ccd-spectrogram-footer{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-chart-shell{display:grid;gap:.65rem;padding:.9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-flux-chart{position:relative;width:100%;height:15rem;overflow:visible;border-radius:.8rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 20%),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),#060912f0;background-size:auto,12.5% 100%,100% 20%}.ccd-flux-bin{fill:#ffffff06}.ccd-flux-bin-alt{fill:#ffffff0e}.ccd-flux-area{opacity:.9}.ccd-flux-line{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 .8rem rgba(143,125,255,.28))}.ccd-flux-mean-line{fill:none;stroke:#eff5ffeb;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:10 8;filter:drop-shadow(0 0 .45rem rgba(255,255,255,.16))}.ccd-flux-legend{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;color:#cdc5e8;font-size:.84rem}.ccd-flux-legend-item{display:inline-flex;align-items:center;gap:.45rem}.ccd-flux-legend-swatch{display:inline-block;width:1.6rem;height:.45rem;border-radius:999px}.ccd-flux-legend-swatch-raw{background:linear-gradient(90deg,#ff8d66,#ffd35d,#8f7dff)}.ccd-flux-legend-swatch-mean{background:repeating-linear-gradient(90deg,rgba(239,245,255,.92) 0 .45rem,transparent .45rem .8rem)}.ccd-flux-axis{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}.ccd-counts-shell{position:relative;padding:1rem .7rem .9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-counts-chart{position:relative;z-index:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(1rem,1fr));gap:.3rem;align-items:end;min-height:14rem}.ccd-count-bin{display:grid;gap:.45rem;align-items:end}.ccd-count-bin-label{color:#d9d2f0;font-size:.7rem;text-align:center}.ccd-count-bar-shell{display:flex;align-items:end;height:12rem;min-height:12rem;padding:.2rem;border-radius:.6rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 30%),#ffffff05}.ccd-count-bar{width:100%;min-height:.8rem;border-radius:.5rem .5rem .2rem .2rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6 52%,#8d7effe6);box-shadow:0 0 1rem #8d7eff2e}.ccd-counts-legend-swatch-bin{background:linear-gradient(90deg,#ffd45df2,#ff8a65e6,#8d7effe6)}@media(max-width:860px){.ccd-panel{width:min(96vw,64rem)}.ccd-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(4,minmax(0,1fr))}.ccd-intro-covers{grid-template-columns:1fr}.ccd-energy-readout,.ccd-energy-notes{grid-template-columns:1fr 1fr}.ccd-closing-grid,.ccd-summary-row,.ccd-flux-metrics,.ccd-selector-results{grid-template-columns:1fr}.ccd-modal-header{display:grid}}@media(max-width:720px){.ccd-shell{padding:1rem}.ccd-intro-screen{min-height:auto}.ccd-grid-frame,.ccd-readout{width:100%}.ccd-pipeline,.ccd-readout{grid-template-columns:1fr}.ccd-intro-actions,.ccd-closing-actions{justify-content:stretch}.ccd-chart-head,.ccd-spectrogram-shell{grid-template-columns:1fr}.ccd-chart-head{display:grid}.ccd-spectrogram-axis{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-energy-readout{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-energy-readout .ccd-stat{padding:.7rem .65rem}.ccd-energy-readout .ccd-stat strong{font-size:1rem}.ccd-energy-notes{grid-template-columns:1fr}.ccd-event-table,.ccd-event-table-head{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-raw{grid-template-columns:1fr}.ccd-selector-link,.ccd-selector-leaf{padding:.95rem}.ccd-closing-actions .ccd-experience-button{width:100%}.ccd-experience-overlay{width:100%;max-width:none}.ccd-toolbar-row{justify-content:stretch}.ccd-chooser-button,.ccd-modal-close,.ccd-intro-actions .ccd-experience-button{width:100%}} diff --git a/public/glitch/glitch_ccd/glitch.manifest.json b/public/glitch/glitch_ccd/glitch.manifest.json new file mode 100644 index 0000000..657fac8 --- /dev/null +++ b/public/glitch/glitch_ccd/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "ccd", + "displayName": "CCD Photon Explorer", + "version": "0.1.0", + "folderName": "glitch_ccd", + "packageName": "@glitch-components/ccd", + "entry": "dist/index.html", + "source": "src/index.tsx", + "tags": [ + "internal", + "visualization", + "tooling" + ] +} diff --git a/public/glitch/glitch_ccd/glitchhunterlogo.png b/public/glitch/glitch_ccd/glitchhunterlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0e8109c3e5f53774af656e8b0b88a22eecbfb7 GIT binary patch literal 127449 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 -dqm7`jAo)a+kMDFltaP_&d}cyuN&8 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

    tT9;i?$X2psNk&d};A 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:IE)t(STvamL| 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 Ef?lW%T>t<8 literal 0 HcmV?d00001 diff --git a/public/glitch/glitch_ccd/index.html b/public/glitch/glitch_ccd/index.html new file mode 100644 index 0000000..54d5bc3 --- /dev/null +++ b/public/glitch/glitch_ccd/index.html @@ -0,0 +1,13 @@ + + + + + + Glitch CCD + + + + +

    + + diff --git a/public/glitch/glitch_chess_analogy/chess_analogy.js b/public/glitch/glitch_chess_analogy/chess_analogy.js new file mode 100644 index 0000000..fb26c44 --- /dev/null +++ b/public/glitch/glitch_chess_analogy/chess_analogy.js @@ -0,0 +1,439 @@ +(function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode("._wrapper_h2w9g_1{--gc-bg: var(--color-bg, #0d1117);--gc-bg-secondary: var(--color-bg-secondary, #182237);--gc-text: var(--color-text, #f1f4ef);--gc-text-muted: var(--color-text-muted, #b6c0d4);--gc-primary: var(--color-primary, #45c4b0);--gc-accent: var(--color-accent, #ff6b6b);--gc-border: var(--color-border, #34516f);width:100%}._frame_h2w9g_12{position:relative;min-height:100dvh;padding:10px;color:var(--gc-text);font-family:Space Mono,IBM Plex Mono,Courier New,monospace;background:radial-gradient(circle at 12% 8%,rgb(69 196 176 / 24%),transparent 42%),radial-gradient(circle at 86% 14%,rgb(255 107 107 / 20%),transparent 38%),linear-gradient(156deg,var(--gc-bg),var(--gc-bg-secondary));border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent)}._frameSucceeded_h2w9g_25{background:radial-gradient(circle at 18% 12%,rgb(86 255 148 / 26%),transparent 42%),radial-gradient(circle at 82% 16%,rgb(42 210 104 / 22%),transparent 38%),linear-gradient(156deg,#0f2f1f,#1b5234);border-color:color-mix(in srgb,#4be38f 56%,var(--gc-border))}._header_h2w9g_33{margin-bottom:8px}._title_h2w9g_37{margin:0;font-size:clamp(20px,6.4vw,32px);letter-spacing:.05em;text-transform:uppercase}._subtitle_h2w9g_44{margin:4px 0 0;color:var(--gc-text-muted);font-size:clamp(11px,3.3vw,14px)}._statsLine_h2w9g_50{margin:5px 0 0;padding:5px 6px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#0913209e;font-size:clamp(11px,3.1vw,13px)}._boardPanel_h2w9g_58{margin-bottom:8px}._board_h2w9g_58{position:relative;overflow:hidden;width:min(88vw,340px);aspect-ratio:1 / 1;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border:2px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));box-shadow:0 0 0 1px #00000059,0 14px 26px #00000061}._trailOverlay_h2w9g_76{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}._trailPath_h2w9g_85{fill:none;stroke:#ff2828e5;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgb(255 30 30 / 65%))}._trailHead_h2w9g_94{fill:#ff3c3cf5;filter:drop-shadow(0 0 6px rgb(255 45 45 / 70%))}._cell_h2w9g_99{position:relative;display:grid;place-items:center}._lightCell_h2w9g_105{background:#f4ecd8}._darkCell_h2w9g_109{background:#c08c61}._knight_h2w9g_113{position:absolute;z-index:3;display:grid;place-items:center;width:100%;height:100%;font-family:Times New Roman,Georgia,serif;font-size:clamp(28px,15vw,56px);line-height:1;color:#111827;text-shadow:0 1px 0 rgb(255 255 255 / 55%),0 3px 8px rgb(0 0 0 / 25%);transform:translateY(-1px)}._target_h2w9g_130{position:absolute;z-index:2;font-size:clamp(12px,8.5vw,33px);color:#e21c29;text-shadow:0 0 8px rgb(236 37 58 / 60%)}._readout_h2w9g_138{margin-bottom:8px;padding:7px;border:1px solid color-mix(in srgb,var(--gc-border) 72%,transparent);background:#040a1173}._readoutLine_h2w9g_145{margin:0;font-size:clamp(11px,3.2vw,14px)}._readoutLine_h2w9g_145+._readoutLine_h2w9g_145{margin-top:3px}._programPanel_h2w9g_154{display:flex;flex-direction:column;gap:6px}._programTrack_h2w9g_160{min-height:42px;display:flex;flex-wrap:wrap;align-items:center;gap:5px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#07111d85;padding:7px}._placeholder_h2w9g_171{color:var(--gc-text-muted);font-size:12px}._step_h2w9g_176{width:24px;height:24px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));background:#45c4b024;font-weight:600;font-size:13px}._stepExecuted_h2w9g_187{background:#ff6b6b40;border-color:#ff6b6b99}._programButtons_h2w9g_192,._controlRow_h2w9g_193{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}._button_h2w9g_199,._buttonPrimary_h2w9g_200{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);padding:7px 6px;font:inherit;font-size:20px;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:transform .12s ease,background-color .12s ease}._button_h2w9g_199{background:#09132099;color:var(--gc-text)}._buttonPrimary_h2w9g_200{background:color-mix(in srgb,var(--gc-primary) 35%,#12252f);color:#f2fff8;border-color:color-mix(in srgb,var(--gc-primary) 65%,transparent)}._button_h2w9g_199:disabled,._buttonPrimary_h2w9g_200:disabled{opacity:.48;cursor:not-allowed}._button_h2w9g_199:active,._buttonPrimary_h2w9g_200:active{transform:scale(.98)}._legend_h2w9g_233{margin:0;color:var(--gc-text-muted);font-size:11px}._promptOverlay_h2w9g_239{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;gap:8px;padding:16px;background:#02080ddb;border:1px solid color-mix(in srgb,var(--gc-accent) 40%,var(--gc-border))}._promptTitle_h2w9g_250{margin:0;text-align:center;text-transform:uppercase;letter-spacing:.08em;font-size:clamp(20px,6vw,32px)}._promptText_h2w9g_258{margin:0;text-align:center;color:var(--gc-text-muted)}._promptOptions_h2w9g_264{display:flex;justify-content:center;gap:10px}._promptOption_h2w9g_264{min-width:110px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#09132099;color:var(--gc-text);padding:8px 10px;font:inherit;font-size:14px;text-align:left;cursor:pointer}._promptSelected_h2w9g_282{border-color:color-mix(in srgb,var(--gc-accent) 70%,transparent);background:#ff6b6b33}._promptHint_h2w9g_287{margin:0;text-align:center;color:var(--gc-text-muted);font-size:11px}@media (max-width: 560px){._programButtons_h2w9g_192,._controlRow_h2w9g_193{grid-template-columns:1fr 1fr 1fr 1fr}}@media (min-width: 780px){._frame_h2w9g_12{max-width:540px;margin:0 auto;border-radius:14px;min-height:auto}}")),document.head.appendChild(r)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})(); +import { jsx as a, jsxs as l } from "react/jsx-runtime"; +import { useMemo as ne, useState as g, useRef as me, useEffect as oe, useCallback as x } from "react"; +const Oe = "_wrapper_h2w9g_1", Ae = "_frame_h2w9g_12", Ee = "_frameSucceeded_h2w9g_25", Le = "_header_h2w9g_33", Re = "_title_h2w9g_37", Ie = "_statsLine_h2w9g_50", Me = "_boardPanel_h2w9g_58", De = "_board_h2w9g_58", He = "_trailOverlay_h2w9g_76", Ge = "_trailPath_h2w9g_85", Be = "_trailHead_h2w9g_94", Ue = "_cell_h2w9g_99", Fe = "_lightCell_h2w9g_105", Ye = "_darkCell_h2w9g_109", Ve = "_knight_h2w9g_113", je = "_target_h2w9g_130", Xe = "_readout_h2w9g_138", Ke = "_readoutLine_h2w9g_145", Ze = "_programPanel_h2w9g_154", ze = "_programTrack_h2w9g_160", We = "_placeholder_h2w9g_171", qe = "_step_h2w9g_176", Je = "_stepExecuted_h2w9g_187", Qe = "_programButtons_h2w9g_192", et = "_controlRow_h2w9g_193", tt = "_button_h2w9g_199", rt = "_buttonPrimary_h2w9g_200", nt = "_legend_h2w9g_233", ot = "_promptOverlay_h2w9g_239", at = "_promptTitle_h2w9g_250", st = "_promptText_h2w9g_258", ct = "_promptOptions_h2w9g_264", lt = "_promptOption_h2w9g_264", it = "_promptSelected_h2w9g_282", dt = "_promptHint_h2w9g_287", e = { + wrapper: Oe, + frame: Ae, + frameSucceeded: Ee, + header: Le, + title: Re, + statsLine: Ie, + boardPanel: Me, + board: De, + trailOverlay: He, + trailPath: Ge, + trailHead: Be, + cell: Ue, + lightCell: Fe, + darkCell: Ye, + knight: Ve, + target: je, + readout: Xe, + readoutLine: Ke, + programPanel: Ze, + programTrack: ze, + placeholder: We, + step: qe, + stepExecuted: Je, + programButtons: Qe, + controlRow: et, + button: tt, + buttonPrimary: rt, + legend: nt, + promptOverlay: ot, + promptTitle: at, + promptText: st, + promptOptions: ct, + promptOption: lt, + promptSelected: it, + promptHint: dt +}, C = 8, h = { x: 0, y: C - 1 }, pt = 220, ut = 64, mt = 3, G = 100, ht = 5, gt = { + up: { dx: 0, dy: -1 }, + down: { dx: 0, dy: 1 }, + left: { dx: -1, dy: 0 }, + right: { dx: 1, dy: 0 } +}, _t = { + up: "↑", + down: "↓", + left: "←", + right: "→" +}, ge = [ + { dx: 0, dy: 1 }, + { dx: 1, dy: 1 }, + { dx: 1, dy: 2 }, + { dx: 1, dy: 3 }, + { dx: 2, dy: 3 }, + { dx: 1, dy: 5 }, + { dx: 1, dy: 6 } +], Z = (r, o, d) => Math.min(d, Math.max(o, r)), _e = (r) => r.x >= 0 && r.x < C && r.y >= 0 && r.y < C, yt = (r, o) => r.x === o.x && r.y === o.y, ce = (r, o) => o === 0 ? r : ce(o, r % o), ft = (r, o) => { + const d = Math.abs(o.x - r.x), p = Math.abs(o.y - r.y); + if (d === 0 && p === 0) return 0; + if (d === 0 || p === 0) return d + p; + const _ = ce(d, p); + return d / _ + p / _; +}, wt = (r) => new Promise((o) => { + window.setTimeout(o, r); +}), he = (r) => r === "Enter" || r === "NumpadEnter" || r === " " || r === "Space" || r === "Spacebar", bt = (r) => `${(r.x + 0.5) * G},${(r.y + 0.5) * G}`, z = (r) => Z(r, 0, ge.length - 1), ye = (r) => ge[z(r)], ae = (r) => { + const o = ye(r); + return o.dx + o.dy; +}, se = (r) => { + const o = ye(r), d = []; + for (let _ = 1; _ < C; _ += 1) { + const u = { + x: h.x + o.dx * _, + y: h.y - o.dy * _ + }; + if (!_e(u)) break; + Math.abs(u.x - h.x) + Math.abs(u.y - h.y) > ht && d.push(u); + } + if (d.length === 0) + return { + x: h.x + o.dx, + y: h.y - o.dy + }; + const p = Math.floor(Math.random() * d.length); + return d[p]; +}; +function Nt({ + config: r, + onComplete: o, + onProgress: d, + theme: p, + className: _ +}) { + const u = ne(() => { + const n = r.params.goalCaptures; + return typeof n != "number" ? mt : Z(Math.round(n), 1, 10); + }, [r.params.goalCaptures]), [v, le] = g(0), [N, W] = g(h), [$, ie] = g(() => se(0)), [y, q] = g([]), [B, U] = g([h]), [f, k] = g("idle"), [fe, O] = g(-1), [w, de] = g(0), [pe, L] = g(""), [R, F] = g("yes"), [I, Y] = g("continue"), [b, we] = g(!1), S = me(0), V = me(!1), i = f === "running", m = f === "gameOverPrompt" || f === "successPrompt" || f === "finished", J = ae(v), be = ne(() => p ? { + "--gc-primary": p.primary, + "--gc-accent": p.accent, + "--gc-bg": p.bg, + "--gc-bg-secondary": p.bgSecondary, + "--gc-text": p.text, + "--gc-text-muted": p.textMuted, + "--gc-border": p.border + } : {}, [p]); + oe(() => { + const n = w / u; + d == null || d(Math.round(Z(n * 100, 0, 100))); + }, [w, u, d]); + const j = x((n, t, s = "") => { + S.current += 1, k("idle"), le(z(n)), W(h), ie(se(n)), U([h]), O(-1), de(t), F("yes"), Y("continue"), L(s); + }, []), Q = x(() => { + j(v, 0, `Looking for a ${J}-step move set.`); + }, [v, J, j]), X = x((n = 0) => { + const t = z(v + 1), s = ae(t); + j(t, n, `Looking for a ${s}-step move set.`); + }, [v, j]), ee = x(() => { + V.current || (V.current = !0, S.current += 1, k("finished"), o({ + success: !1, + error: "Player chose no after game over.", + data: { + captures: w, + goalCaptures: u, + configId: r.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString(), + hasEverSucceeded: b + } + })); + }, [w, r.id, u, b, o]), D = x(() => { + V.current || (V.current = !0, S.current += 1, k("finished"), o({ + success: !0, + score: 100, + data: { + captures: w, + goalCaptures: u, + configId: r.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString(), + hasEverSucceeded: b + } + })); + }, [w, r.id, u, b, o]), M = x((n) => { + q((t) => i || m || t.length >= ut ? t : [...t, n]); + }, [m, i]), xe = x(() => { + i || m || q((n) => n.slice(0, -1)); + }, [m, i]), Ce = x(() => { + i || m || q([]); + }, [m, i]), Ne = x(() => { + S.current += 1, k("idle"), O(-1), L("Program stopped."); + }, []), Se = x(async () => { + if (i || m || y.length === 0) return; + const n = S.current + 1; + S.current = n; + let t = N, s = $, c = w, T = 0; + for (k("running"), O(-1), U([N]), L(""); S.current === n; ) + for (let P = 0; P < y.length; P += 1) { + if (await wt(pt), S.current !== n) return; + const H = y[P], K = gt[H], A = { + x: t.x + K.dx, + y: t.y + K.dy + }; + if (!_e(A)) { + k("gameOverPrompt"), F("yes"), O(-1), L(`Game over after ${T} step(s). Try again?`); + return; + } + if (T += 1, t = A, W(A), U((E) => [...E, A]), O(P), yt(A, s)) { + if (c += 1, de(c), we(!0), c >= u) { + k("successPrompt"), Y("continue"), O(-1), L(`Success. ${c} challenge(s) complete.`); + return; + } + const E = z(v + 1), re = se(E), Te = ae(E); + t = h, s = re, k("idle"), le(E), W(h), ie(re), U([h]), O(-1), L( + `Challenge ${c}/${u} complete. Looking for a ${Te}-step move set.` + ); + return; + } + } + }, [w, v, u, m, N, y, i, $]); + oe(() => { + const n = (t) => { + const s = { + ArrowUp: "up", + ArrowDown: "down", + ArrowLeft: "left", + ArrowRight: "right" + }; + if (f === "gameOverPrompt") { + if (t.key === "ArrowLeft" || t.key === "ArrowUp") { + t.preventDefault(), F("yes"); + return; + } + if (t.key === "ArrowRight" || t.key === "ArrowDown") { + t.preventDefault(), F("no"); + return; + } + he(t.key) && (t.preventDefault(), R === "yes" ? Q() : b ? D() : ee()); + return; + } + if (f === "successPrompt") { + if (t.key === "ArrowLeft" || t.key === "ArrowUp") { + t.preventDefault(), Y("continue"); + return; + } + if (t.key === "ArrowRight" || t.key === "ArrowDown") { + t.preventDefault(), Y("done"); + return; + } + he(t.key) && (t.preventDefault(), I === "continue" ? X() : D()); + return; + } + if (f !== "idle") return; + const c = s[t.key]; + c && (t.preventDefault(), M(c)); + }; + return window.addEventListener("keydown", n), () => { + window.removeEventListener("keydown", n); + }; + }, [ + M, + ee, + D, + R, + b, + f, + Q, + X, + I + ]), oe( + () => () => { + S.current += 1; + }, + [] + ); + const Pe = ne(() => { + const n = $.x - N.x, t = N.y - $.y, s = Math.abs(n), c = Math.abs(t), T = ft(N, $); + if (s === 0 && c === 0) + return { + angle: 0, + motifLength: T, + motif: "On target" + }; + if (s === 0 || c === 0) + return { + angle: s === 0 ? 90 : 0, + motifLength: T, + motif: s === 0 ? `${t >= 0 ? "U" : "D"} x ${c}` : `${n >= 0 ? "R" : "L"} x ${s}` + }; + const P = ce(s, c), H = s / P, K = c / P, A = `${n >= 0 ? "R" : "L"} x ${H}`, E = `${t >= 0 ? "U" : "D"} x ${K}`; + return { + angle: Math.atan2(c, s) * (180 / Math.PI), + motifLength: T, + motif: `${A}, ${E}` + }; + }, [N, $]), ve = Math.round(Z(w / u * 100, 0, 100)), $e = _ ? `${e.wrapper} ${_}` : e.wrapper, ue = C * G, ke = B.map(bt).join(" "), te = B[B.length - 1]; + return /* @__PURE__ */ a("div", { className: $e, style: be, children: /* @__PURE__ */ l( + "section", + { + className: `${e.frame} ${b ? e.frameSucceeded : ""}`, + "aria-label": "Chess move set trainer", + children: [ + /* @__PURE__ */ l("header", { className: e.header, children: [ + /* @__PURE__ */ a("h2", { className: e.title, children: "The Chess Analogy" }), + /* @__PURE__ */ l("p", { className: e.statsLine, children: [ + "Captures ", + w, + "/", + u, + " • Progress ", + ve, + "% • Program ", + y.length, + " • Target ", + J + ] }) + ] }), + /* @__PURE__ */ a("div", { className: e.boardPanel, children: /* @__PURE__ */ l("div", { className: e.board, role: "grid", "aria-label": "8 by 8 checkerboard", children: [ + /* @__PURE__ */ l( + "svg", + { + className: e.trailOverlay, + viewBox: `0 0 ${ue} ${ue}`, + preserveAspectRatio: "none", + "aria-hidden": "true", + children: [ + B.length > 1 && /* @__PURE__ */ a("polyline", { className: e.trailPath, points: ke }), + te && /* @__PURE__ */ a( + "circle", + { + className: e.trailHead, + cx: (te.x + 0.5) * G, + cy: (te.y + 0.5) * G, + r: 6 + } + ) + ] + } + ), + Array.from({ length: C * C }).map((n, t) => { + const s = t % C, c = Math.floor(t / C), T = (s + c) % 2 === 1, P = N.x === s && N.y === c, H = $.x === s && $.y === c; + return /* @__PURE__ */ l( + "div", + { + className: `${e.cell} ${T ? e.darkCell : e.lightCell}`, + role: "gridcell", + "aria-label": `x ${s + 1}, y ${C - c}`, + children: [ + H && /* @__PURE__ */ a("span", { className: e.target, "aria-hidden": "true", children: "●" }), + P && /* @__PURE__ */ a("span", { className: e.knight, "aria-hidden": "true", children: "♞" }) + ] + }, + `${s}-${c}` + ); + }) + ] }) }), + /* @__PURE__ */ l("div", { className: e.readout, children: [ + /* @__PURE__ */ l("p", { className: e.readoutLine, children: [ + "Angle: ", + /* @__PURE__ */ l("strong", { children: [ + Pe.angle.toFixed(1), + "°" + ] }) + ] }), + !1 + ] }), + /* @__PURE__ */ l("div", { className: e.programPanel, children: [ + /* @__PURE__ */ l("div", { className: e.programTrack, "aria-live": "polite", children: [ + y.length === 0 && /* @__PURE__ */ a("span", { className: e.placeholder, children: "Empty move set" }), + y.map((n, t) => /* @__PURE__ */ a( + "span", + { + className: `${e.step} ${i && t === fe ? e.stepExecuted : ""}`, + children: _t[n] + }, + `${n}-${t}` + )) + ] }), + /* @__PURE__ */ l("div", { className: e.programButtons, children: [ + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("up"), disabled: i || m, children: "↑" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("left"), disabled: i || m, children: "←" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("down"), disabled: i || m, children: "↓" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => M("right"), disabled: i || m, children: "→" }) + ] }), + /* @__PURE__ */ l("div", { className: e.controlRow, children: [ + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: xe, disabled: i || m || y.length === 0, children: "Undo" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: Ce, disabled: i || m || y.length === 0, children: "Clear" }), + /* @__PURE__ */ a("button", { type: "button", className: e.buttonPrimary, onClick: i ? Ne : Se, disabled: m || y.length === 0, children: i ? "Stop" : "Run" }), + /* @__PURE__ */ a("button", { type: "button", className: e.button, onClick: () => X(), disabled: i, children: "Reset" }) + ] }), + pe && /* @__PURE__ */ a("p", { className: e.legend, children: pe }) + ] }), + f === "gameOverPrompt" && /* @__PURE__ */ l("div", { className: e.promptOverlay, role: "dialog", "aria-modal": "true", "aria-label": "Game over prompt", children: [ + /* @__PURE__ */ a("p", { className: e.promptTitle, children: "Game over" }), + /* @__PURE__ */ a("p", { className: e.promptText, children: b ? "Try again or stop?" : "Try again?" }), + /* @__PURE__ */ l("div", { className: e.promptOptions, children: [ + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${R === "yes" ? e.promptSelected : ""}`, + onClick: Q, + children: [ + R === "yes" ? "▶ " : "", + "Yes" + ] + } + ), + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${R === "no" ? e.promptSelected : ""}`, + onClick: b ? D : ee, + children: [ + R === "no" ? "▶ " : "", + b ? "I'm done" : "No" + ] + } + ) + ] }), + /* @__PURE__ */ a("p", { className: e.promptHint, children: "Use arrows + Enter." }) + ] }), + f === "successPrompt" && /* @__PURE__ */ l("div", { className: e.promptOverlay, role: "dialog", "aria-modal": "true", "aria-label": "Success prompt", children: [ + /* @__PURE__ */ a("p", { className: e.promptTitle, children: "Success" }), + /* @__PURE__ */ a("p", { className: e.promptText, children: "Continue?" }), + /* @__PURE__ */ l("div", { className: e.promptOptions, children: [ + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${I === "continue" ? e.promptSelected : ""}`, + onClick: () => X(), + children: [ + I === "continue" ? "▶ " : "", + "Yes" + ] + } + ), + /* @__PURE__ */ l( + "button", + { + type: "button", + className: `${e.promptOption} ${I === "done" ? e.promptSelected : ""}`, + onClick: D, + children: [ + I === "done" ? "▶ " : "", + "I'm done" + ] + } + ) + ] }), + /* @__PURE__ */ a("p", { className: e.promptHint, children: "Use arrows + Enter." }) + ] }) + ] + } + ) }); +} +const St = { + name: "chess_analogy", + displayName: "Chess Move Set Lab", + version: "1.0.0", + paramSchema: { + goalCaptures: { + type: "range", + label: "Targets To Capture", + description: "How many red targets must be captured before completion.", + default: 3, + min: 1, + max: 10, + step: 1 + } + }, + defaultParams: { + goalCaptures: 3 + } +}; +export { + Nt as default, + St as metadata +}; +//# sourceMappingURL=chess_analogy.js.map diff --git a/public/glitch/glitch_chess_analogy/chess_analogy.js.map b/public/glitch/glitch_chess_analogy/chess_analogy.js.map new file mode 100644 index 0000000..b50a25d --- /dev/null +++ b/public/glitch/glitch_chess_analogy/chess_analogy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chess_analogy.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { CSSProperties } from 'react'\nimport type { GlitchComponentProps } from './types'\nimport styles from './styles.module.css'\n\nconst BOARD_SIZE = 8\nconst START_POS = { x: 0, y: BOARD_SIZE - 1 }\nconst MOVE_DELAY_MS = 220\nconst MAX_PROGRAM_LENGTH = 64\nconst DEFAULT_GOAL_CAPTURES = 3\nconst SVG_CELL_SIZE = 100\nconst MIN_TARGET_DISTANCE = 5\n\ntype Direction = 'up' | 'down' | 'left' | 'right'\ntype GameMode = 'idle' | 'running' | 'gameOverPrompt' | 'successPrompt' | 'finished'\ntype GameOverChoice = 'yes' | 'no'\ntype SuccessChoice = 'continue' | 'done'\n\ninterface Position {\n x: number\n y: number\n}\n\ninterface StepVector {\n dx: number\n dy: number\n}\n\ninterface ChallengePattern {\n dx: number\n dy: number\n}\n\nconst VECTOR_BY_DIRECTION: Record = {\n up: { dx: 0, dy: -1 },\n down: { dx: 0, dy: 1 },\n left: { dx: -1, dy: 0 },\n right: { dx: 1, dy: 0 }\n}\n\nconst ARROW_BY_DIRECTION: Record = {\n up: '↑',\n down: '↓',\n left: '←',\n right: '→'\n}\n\nconst CHALLENGE_PATTERNS: ChallengePattern[] = [\n { dx: 0, dy: 1 },\n { dx: 1, dy: 1 },\n { dx: 1, dy: 2 },\n { dx: 1, dy: 3 },\n { dx: 2, dy: 3 },\n { dx: 1, dy: 5 },\n { dx: 1, dy: 6 }\n]\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value))\n\nconst isInsideBoard = (position: Position) =>\n position.x >= 0 && position.x < BOARD_SIZE && position.y >= 0 && position.y < BOARD_SIZE\n\nconst samePosition = (a: Position, b: Position) => a.x === b.x && a.y === b.y\n\nconst gcd = (a: number, b: number): number => {\n if (b === 0) return a\n return gcd(b, a % b)\n}\n\nconst getMoveSetLength = (from: Position, to: Position) => {\n const dx = Math.abs(to.x - from.x)\n const dy = Math.abs(to.y - from.y)\n\n if (dx === 0 && dy === 0) return 0\n if (dx === 0 || dy === 0) return dx + dy\n\n const divisor = gcd(dx, dy)\n return dx / divisor + dy / divisor\n}\n\nconst wait = (ms: number) =>\n new Promise((resolve) => {\n window.setTimeout(resolve, ms)\n })\n\nconst isConfirmKey = (key: string) =>\n key === 'Enter' || key === 'NumpadEnter' || key === ' ' || key === 'Space' || key === 'Spacebar'\n\nconst toSvgPoint = (position: Position) =>\n `${(position.x + 0.5) * SVG_CELL_SIZE},${(position.y + 0.5) * SVG_CELL_SIZE}`\n\nconst getChallengeIndex = (index: number) => clamp(index, 0, CHALLENGE_PATTERNS.length - 1)\n\nconst getPatternForChallenge = (challengeIndex: number) => CHALLENGE_PATTERNS[getChallengeIndex(challengeIndex)]\n\nconst getComplexityForChallenge = (challengeIndex: number) => {\n const pattern = getPatternForChallenge(challengeIndex)\n return pattern.dx + pattern.dy\n}\n\nconst getRandomTargetForChallenge = (challengeIndex: number): Position => {\n const pattern = getPatternForChallenge(challengeIndex)\n const candidates: Position[] = []\n\n for (let multiplier = 1; multiplier < BOARD_SIZE; multiplier += 1) {\n const candidate = {\n x: START_POS.x + pattern.dx * multiplier,\n y: START_POS.y - pattern.dy * multiplier\n }\n\n if (!isInsideBoard(candidate)) break\n\n const distance = Math.abs(candidate.x - START_POS.x) + Math.abs(candidate.y - START_POS.y)\n if (distance > MIN_TARGET_DISTANCE) {\n candidates.push(candidate)\n }\n }\n\n if (candidates.length === 0) {\n return {\n x: START_POS.x + pattern.dx,\n y: START_POS.y - pattern.dy\n }\n }\n\n const randomIndex = Math.floor(Math.random() * candidates.length)\n return candidates[randomIndex]\n}\n\nexport default function Component({\n config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const goalCaptures = useMemo(() => {\n const configured = config.params.goalCaptures\n if (typeof configured !== 'number') return DEFAULT_GOAL_CAPTURES\n return clamp(Math.round(configured), 1, 10)\n }, [config.params.goalCaptures])\n\n const [challengeIndex, setChallengeIndex] = useState(0)\n const [piece, setPiece] = useState(START_POS)\n const [target, setTarget] = useState(() => getRandomTargetForChallenge(0))\n const [program, setProgram] = useState([])\n const [trailPoints, setTrailPoints] = useState([START_POS])\n const [mode, setMode] = useState('idle')\n const [stepIndex, setStepIndex] = useState(-1)\n const [captures, setCaptures] = useState(0)\n const [lastRunSummary, setLastRunSummary] = useState('')\n const [gameOverChoice, setGameOverChoice] = useState('yes')\n const [successChoice, setSuccessChoice] = useState('continue')\n const [hasEverSucceeded, setHasEverSucceeded] = useState(false)\n\n const runIdRef = useRef(0)\n const completedRef = useRef(false)\n\n const running = mode === 'running'\n const lockedForPrompt = mode === 'gameOverPrompt' || mode === 'successPrompt' || mode === 'finished'\n const currentComplexityGoal = getComplexityForChallenge(challengeIndex)\n\n const themeStyle = useMemo(() => {\n if (!theme) return {}\n\n return {\n '--gc-primary': theme.primary,\n '--gc-accent': theme.accent,\n '--gc-bg': theme.bg,\n '--gc-bg-secondary': theme.bgSecondary,\n '--gc-text': theme.text,\n '--gc-text-muted': theme.textMuted,\n '--gc-border': theme.border\n } as CSSProperties\n }, [theme])\n\n useEffect(() => {\n const ratio = captures / goalCaptures\n onProgress?.(Math.round(clamp(ratio * 100, 0, 100)))\n }, [captures, goalCaptures, onProgress])\n\n const resetBoard = useCallback((nextChallengeIndex: number, nextCaptures: number, summary = '') => {\n runIdRef.current += 1\n setMode('idle')\n setChallengeIndex(getChallengeIndex(nextChallengeIndex))\n setPiece(START_POS)\n setTarget(getRandomTargetForChallenge(nextChallengeIndex))\n setTrailPoints([START_POS])\n setStepIndex(-1)\n setCaptures(nextCaptures)\n setGameOverChoice('yes')\n setSuccessChoice('continue')\n setLastRunSummary(summary)\n }, [])\n\n const retryChallenge = useCallback(() => {\n resetBoard(challengeIndex, 0, `Looking for a ${currentComplexityGoal}-step move set.`)\n }, [challengeIndex, currentComplexityGoal, resetBoard])\n\n const advanceChallenge = useCallback((nextCaptures = 0) => {\n const nextChallengeIndex = getChallengeIndex(challengeIndex + 1)\n const nextComplexityGoal = getComplexityForChallenge(nextChallengeIndex)\n\n resetBoard(nextChallengeIndex, nextCaptures, `Looking for a ${nextComplexityGoal}-step move set.`)\n }, [challengeIndex, resetBoard])\n\n const finishFailure = useCallback(() => {\n if (completedRef.current) return\n completedRef.current = true\n runIdRef.current += 1\n setMode('finished')\n onComplete({\n success: false,\n error: 'Player chose no after game over.',\n data: {\n captures,\n goalCaptures,\n configId: config.id,\n completedAt: new Date().toISOString(),\n hasEverSucceeded\n }\n })\n }, [captures, config.id, goalCaptures, hasEverSucceeded, onComplete])\n\n const finishSuccess = useCallback(() => {\n if (completedRef.current) return\n completedRef.current = true\n runIdRef.current += 1\n setMode('finished')\n onComplete({\n success: true,\n score: 100,\n data: {\n captures,\n goalCaptures,\n configId: config.id,\n completedAt: new Date().toISOString(),\n hasEverSucceeded\n }\n })\n }, [captures, config.id, goalCaptures, hasEverSucceeded, onComplete])\n\n const addInstruction = useCallback((direction: Direction) => {\n setProgram((previous) => {\n if (running || lockedForPrompt || previous.length >= MAX_PROGRAM_LENGTH) return previous\n return [...previous, direction]\n })\n }, [lockedForPrompt, running])\n\n const undoInstruction = useCallback(() => {\n if (running || lockedForPrompt) return\n setProgram((previous) => previous.slice(0, -1))\n }, [lockedForPrompt, running])\n\n const clearProgram = useCallback(() => {\n if (running || lockedForPrompt) return\n setProgram([])\n }, [lockedForPrompt, running])\n\n const stopProgram = useCallback(() => {\n runIdRef.current += 1\n setMode('idle')\n setStepIndex(-1)\n setLastRunSummary('Program stopped.')\n }, [])\n\n const runProgram = useCallback(async () => {\n if (running || lockedForPrompt || program.length === 0) return\n\n const runId = runIdRef.current + 1\n runIdRef.current = runId\n\n let currentPiece = piece\n let currentTarget = target\n let currentCaptures = captures\n let executedSteps = 0\n\n setMode('running')\n setStepIndex(-1)\n setTrailPoints([piece])\n setLastRunSummary('')\n\n while (runIdRef.current === runId) {\n for (let index = 0; index < program.length; index += 1) {\n await wait(MOVE_DELAY_MS)\n if (runIdRef.current !== runId) return\n\n const direction = program[index]\n const vector = VECTOR_BY_DIRECTION[direction]\n const candidate = {\n x: currentPiece.x + vector.dx,\n y: currentPiece.y + vector.dy\n }\n\n if (!isInsideBoard(candidate)) {\n setMode('gameOverPrompt')\n setGameOverChoice('yes')\n setStepIndex(-1)\n setLastRunSummary(`Game over after ${executedSteps} step(s). Try again?`)\n return\n }\n\n executedSteps += 1\n currentPiece = candidate\n setPiece(candidate)\n setTrailPoints((previous) => [...previous, candidate])\n setStepIndex(index)\n\n if (samePosition(candidate, currentTarget)) {\n currentCaptures += 1\n setCaptures(currentCaptures)\n setHasEverSucceeded(true)\n\n if (currentCaptures >= goalCaptures) {\n setMode('successPrompt')\n setSuccessChoice('continue')\n setStepIndex(-1)\n setLastRunSummary(`Success. ${currentCaptures} challenge(s) complete.`)\n return\n }\n\n const nextChallengeIndex = getChallengeIndex(challengeIndex + 1)\n const nextTarget = getRandomTargetForChallenge(nextChallengeIndex)\n const nextComplexityGoal = getComplexityForChallenge(nextChallengeIndex)\n\n currentPiece = START_POS\n currentTarget = nextTarget\n\n setMode('idle')\n setChallengeIndex(nextChallengeIndex)\n setPiece(START_POS)\n setTarget(nextTarget)\n setTrailPoints([START_POS])\n setStepIndex(-1)\n setLastRunSummary(\n `Challenge ${currentCaptures}/${goalCaptures} complete. Looking for a ${nextComplexityGoal}-step move set.`\n )\n return\n }\n }\n }\n }, [captures, challengeIndex, goalCaptures, lockedForPrompt, piece, program, running, target])\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const map: Record = {\n ArrowUp: 'up',\n ArrowDown: 'down',\n ArrowLeft: 'left',\n ArrowRight: 'right'\n }\n\n if (mode === 'gameOverPrompt') {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault()\n setGameOverChoice('yes')\n return\n }\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault()\n setGameOverChoice('no')\n return\n }\n if (isConfirmKey(event.key)) {\n event.preventDefault()\n if (gameOverChoice === 'yes') retryChallenge()\n else if (hasEverSucceeded) finishSuccess()\n else finishFailure()\n }\n return\n }\n\n if (mode === 'successPrompt') {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault()\n setSuccessChoice('continue')\n return\n }\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault()\n setSuccessChoice('done')\n return\n }\n if (isConfirmKey(event.key)) {\n event.preventDefault()\n if (successChoice === 'continue') advanceChallenge()\n else finishSuccess()\n }\n return\n }\n\n if (mode !== 'idle') return\n\n const direction = map[event.key]\n if (!direction) return\n\n event.preventDefault()\n addInstruction(direction)\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [\n addInstruction,\n finishFailure,\n finishSuccess,\n gameOverChoice,\n hasEverSucceeded,\n mode,\n retryChallenge,\n advanceChallenge,\n successChoice\n ])\n\n useEffect(\n () => () => {\n runIdRef.current += 1\n },\n []\n )\n\n const aimMath = useMemo(() => {\n const dx = target.x - piece.x\n const dy = piece.y - target.y\n const absX = Math.abs(dx)\n const absY = Math.abs(dy)\n const motifLength = getMoveSetLength(piece, target)\n\n if (absX === 0 && absY === 0) {\n return {\n angle: 0,\n motifLength,\n motif: 'On target'\n }\n }\n\n if (absX === 0 || absY === 0) {\n return {\n angle: absX === 0 ? 90 : 0,\n motifLength,\n motif:\n absX === 0\n ? `${dy >= 0 ? 'U' : 'D'} x ${absY}`\n : `${dx >= 0 ? 'R' : 'L'} x ${absX}`\n }\n }\n\n const divisor = gcd(absX, absY)\n const shortX = absX / divisor\n const shortY = absY / divisor\n const horizontal = `${dx >= 0 ? 'R' : 'L'} x ${shortX}`\n const vertical = `${dy >= 0 ? 'U' : 'D'} x ${shortY}`\n const angle = Math.atan2(absY, absX) * (180 / Math.PI)\n\n return {\n angle,\n motifLength,\n motif: `${horizontal}, ${vertical}`\n }\n }, [piece, target])\n\n const progressPercent = Math.round(clamp((captures / goalCaptures) * 100, 0, 100))\n const rootClassName = className ? `${styles.wrapper} ${className}` : styles.wrapper\n const boardView = BOARD_SIZE * SVG_CELL_SIZE\n const pathValue = trailPoints.map(toSvgPoint).join(' ')\n const trailHead = trailPoints[trailPoints.length - 1]\n\n return (\n
    \n \n
    \n

    The Chess Analogy

    \n

    \n Captures {captures}/{goalCaptures} • Progress {progressPercent}% • Program {program.length} • Target {currentComplexityGoal}\n

    \n
    \n\n
    \n
    \n
    \n )\n })}\n
    \n
    \n\n
    \n

    \n Angle: {aimMath.angle.toFixed(1)}°\n

    \n {false && (\n

    \n Primitive motif: {aimMath.motif} ({aimMath.motifLength})\n

    \n )}\n
    \n\n
    \n
    \n {program.length === 0 && Empty move set}\n {program.map((instruction, index) => (\n \n {ARROW_BY_DIRECTION[instruction]}\n \n ))}\n
    \n\n
    \n \n \n \n \n
    \n\n
    \n \n \n \n \n
    \n \n \n {lastRunSummary &&

    {lastRunSummary}

    }\n
    \n\n {mode === 'gameOverPrompt' && (\n
    \n

    Game over

    \n

    {hasEverSucceeded ? 'Try again or stop?' : 'Try again?'}

    \n
    \n \n {gameOverChoice === 'yes' ? '▶ ' : ''}Yes\n \n \n {gameOverChoice === 'no' ? '▶ ' : ''}{hasEverSucceeded ? \"I'm done\" : 'No'}\n \n
    \n

    Use arrows + Enter.

    \n
    \n )}\n\n {mode === 'successPrompt' && (\n
    \n

    Success

    \n

    Continue?

    \n
    \n advanceChallenge()}\n >\n {successChoice === 'continue' ? '▶ ' : ''}Yes\n \n \n {successChoice === 'done' ? '▶ ' : ''}I'm done\n \n
    \n

    Use arrows + Enter.

    \n
    \n )}\n \n
\n )\n}\n","import Component from './Component'\nimport type { GlitchComponentMetadata } from './types'\n\nexport default Component\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'chess_analogy',\n displayName: 'Chess Move Set Lab',\n version: '1.0.0',\n paramSchema: {\n goalCaptures: {\n type: 'range',\n label: 'Targets To Capture',\n description: 'How many red targets must be captured before completion.',\n default: 3,\n min: 1,\n max: 10,\n step: 1\n }\n },\n defaultParams: {\n goalCaptures: 3\n }\n}\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n GlitchTheme,\n GlitchHostBridge,\n GlitchComponentMetadata\n} from './types'\n"],"names":["BOARD_SIZE","START_POS","MOVE_DELAY_MS","MAX_PROGRAM_LENGTH","DEFAULT_GOAL_CAPTURES","SVG_CELL_SIZE","MIN_TARGET_DISTANCE","VECTOR_BY_DIRECTION","ARROW_BY_DIRECTION","CHALLENGE_PATTERNS","clamp","value","min","max","isInsideBoard","position","samePosition","a","b","gcd","getMoveSetLength","from","to","dx","dy","divisor","wait","ms","resolve","isConfirmKey","key","toSvgPoint","getChallengeIndex","index","getPatternForChallenge","challengeIndex","getComplexityForChallenge","pattern","getRandomTargetForChallenge","candidates","multiplier","candidate","randomIndex","Component","config","onComplete","onProgress","theme","className","goalCaptures","useMemo","configured","setChallengeIndex","useState","piece","setPiece","target","setTarget","program","setProgram","trailPoints","setTrailPoints","mode","setMode","stepIndex","setStepIndex","captures","setCaptures","lastRunSummary","setLastRunSummary","gameOverChoice","setGameOverChoice","successChoice","setSuccessChoice","hasEverSucceeded","setHasEverSucceeded","runIdRef","useRef","completedRef","running","lockedForPrompt","currentComplexityGoal","themeStyle","useEffect","ratio","resetBoard","useCallback","nextChallengeIndex","nextCaptures","summary","retryChallenge","advanceChallenge","nextComplexityGoal","finishFailure","finishSuccess","addInstruction","direction","previous","undoInstruction","clearProgram","stopProgram","runProgram","runId","currentPiece","currentTarget","currentCaptures","executedSteps","vector","nextTarget","handleKeyDown","event","map","aimMath","absX","absY","motifLength","shortX","shortY","horizontal","vertical","progressPercent","rootClassName","styles","boardView","pathValue","trailHead","jsx","jsxs","_","x","y","dark","hasPiece","hasTarget","instruction","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/public/glitch/glitch_chess_analogy/glitch.manifest.json b/public/glitch/glitch_chess_analogy/glitch.manifest.json new file mode 100644 index 0000000..6337d37 --- /dev/null +++ b/public/glitch/glitch_chess_analogy/glitch.manifest.json @@ -0,0 +1,15 @@ +{ + "componentId": "chess_analogy", + "displayName": "Chess Move Set Lab", + "version": "1.0.0", + "folderName": "glitch_chess_analogy", + "packageName": "@glitch-components/chess-analogy", + "entry": "dist/chess_analogy.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "reference", + "2d", + "chess" + ] +} diff --git a/public/glitch/glitch_gallery/assets/blblblbl-BrzQxThI.m4a b/public/glitch/glitch_gallery/assets/blblblbl-BrzQxThI.m4a new file mode 100644 index 0000000000000000000000000000000000000000..58696a19398caa91b1436e9aae389eb8ca45f9d5 GIT binary patch literal 106893 zcmZ6yV|1oX&@CLBcP6%N+qP}nwrx&q+s?$cZEIpD-#qX8owd$7{im<4s;)oRUe#6A zyMcg!aLimh9b{Pq34s2M|7J^Pds|xv7N&noU|SPIm;dBIz*%`fa{`dSAUWSZ2tT9h zJ)T9H&0KTrh#voGQTBX1@(_E4{OZ%2dKD4|JiF8T`?!&2yi@Y3dbs|x5Gd(~lTf+R z1oN`-_8IajnbiAF3XEq)qxn%n!URkn6(-IdLXz?4p9YLOEGEzN0F2CFOz}@* z7fY^MAXdV-@MOS0o%BAr=o?cYgC-FmsfDb5b#q?epY*>$BQz;NDE9{ALYI%+m{mn0 z^w@}Gp!up@L?w+Z6MYGo9LggCblLo`F%VD~UHIpiXqFXJX!UQn04pCzr34YYByuy_ zxFq!zVfYwQs9#$D#}-ODL8c(zAbH5pMif~LAzu+Wk1E$!l3gtA42h&s6PCoPJ&h{h z|5*Q(LRc^}U!4m(s10bN^Vgi9=DM-kYu^8N+ai*+MTwt)w$lOdc7GRJRF(fD=_*8_T z^a+maBH12JjQ`i(|NRu8By&Mhmi!$80(xvh@$yjv8pVQ3g5`G z`sm=C>~r8+s2fKHyaKejkOHEFB!_%681Vo2LjsD7#ch`fBoIPDcFOmUAFL>`=iV!6 zvZ(9jzw=&I)bQCVV9IQR-?+%&IY0BiPlfn@9032EE`J{0_&X3#x`Ie^uK>n>|0h?6Wa#sr6v5tkJ2AR8R8J zN=+4#*Mx3`)*MaRv^4Ezq+GKkT3t&_%_fHM#PR}RZyIv;0^y3G#PYTZgXS@@??FnC zG^@`1{k_f;1-%w0#1aI{3Cb)wHSl-^&Gy$XXzQ0!p7X|$(lq43`*xot-4K(_>C
    tZiG$@j?7#tFVE`l$F&?9L4}Zqm^hiTbOaV2N}o{smC@g44Gpp6Bv5Zid(+xN1}V&X+u z-*L1vXC^(dQ#(4}XS4--3oBt>wr!+CQdi1@&Tmc?bGP|RUgBFkMh~{P#L(=y28@D* zk0#Im!6gDP5=PyAfrf<|7j9e#p?P0K*7((>j=J_LpFRA!lgUylK6VOcPqZH}WI8uN zZ`hagXnn1Zl7J2k+_mu`XCsR zX$Ve{(~!}%NNnYCcr`R5u&<9i)%$p~Z}&NatmiZ4bd!;&8B)8qbxqQB;uP|d?XfS~ zOg+i3$7E^W!}k^V%SvbY^2vaS+J|q#6y}i}hmTqAhqxYB*gledbuofr&y~B9_6fG| z$6el`mezrA?pD=mCK9})NZal|tDPq2CUW%KpW&R&A_Jqs!9FG`MEtJP-Zle<$h2@z z3!XeT2!jiB;iR0|DowPLYHLhz%w~(zoZ(unPP=%E$vZIc_pKs8_nWP7)wqWn%mh{n z+UMnme^bZ|6F3{onfPJ~gb%x5Sv^;JTSH39kPQ*aZM9tS$W&ALHB@eTmQP-9S?{}< ztwtWqV@IypgFg`qj~Qz-XhbVETJWFo=*N{HU7U{ZuG2}42}AE*=;{ou>kV=AG}kjP z`Jzuq)J@NSc)zGo(%{<7o^e}$offyW`ujr_jPo>T{QlWsJ)c6@#@ zx~s)sbeSFSQ&dOGty$Q0ePaS$J^0j5dTV7XVk5ajlPCNINJNKtT@#0%BEgI-o4^`Q zre<#PygWdMS{r>I*gXIO0u2Dh_y@iG^|Lez_)wvb&mURyocGJf<2xN$m7ei*qMC}A z%I#xaWv~A07D9e-E>NoI(<2a#j?IP{uCTr3l_MpbPUHNq`b*B>Uuo8i$%sWdqKv4{ zQ%7DQRrx51&`jV42t<*ReMH-i(0>9&nRX!RET`ex45>h5kNPiR+H-B|FGM|CrYYyEu{K?3oO zX7^9%8&yKT?=X`hYy7HCU8SIgA|##WfhX{nGh16`pzz3-9h0qNJgTUxfSJvF(In=Y zdp*u*S4obeFCR>F2}{c=tscirnv|1Ajm0a{@4nHT9X_s_L_myoe{OLepA%2ExCYGX zN^SVdpUJO@B3fH~ovRf3r6s-av^xGGad;-*=FDrsL_?Bq@*uy~ReuPJy~#XDh`Sj&gIX65>2X$r1-k;OP;39|USF~@`2FY7FZ)S-Y{>3@2!hPI%E@2*BF57o1 zZ9kC;!R+n8Crb<Wm!q$K`iCJ)vzvB@H@2^d z)C#)K==3;~m(1ye!)JMV`fY2m^WM>89um!kW<9FJVVxOAX)NM$g;d*BQllUQ3$(uF z!1t0W&J&$}rWPBX<=Ey~GCaiRK{l`!hVeMB{1ob%Mr>FmpZa$iq+u_hk9~^kS=0HV zMbCH9>jHPQ3VWw<=Dh%$$xv$?|8SX z8tgq}jppY!%dnj(&T>vNvyEM*pMbpUeqVJzpeQ7fx49iAxal~zzTc+3c`NZp9$I{8 zU3dFW=!Rc*$KGkumM!}GqKqi#9%8s<`Ta0Bv--~>+t^@Hyq5Bjslp!=WKqN-Vt>M2 zQsT}EKj|38Zl=0qp61tE{f>LCOLnZ>aiM${dN=2p{jjATE)?FN1$|8Sm@%Q-GPqub zFE3M7e8~S2(hz4;?kapf-VkR}TtK(TK2XM`y{Yb%mg;!!oV}^J=hgA^tnW5w`@}`# zgza=GL$&D%T8?AO$XKP3Rut#;G8#*88!0#@gS-j(Icc2MW?Eb7gGEloCQArJdF=Ga zNZ!Drh>jeD1_J9R?u)=!W^n4byMz+#AOi~nVd>7bZ_WvfYEfh+$PkfYv{`WyaglI`eaNM5PawLBfOr zYy8V|Qscy-^Dgtbyl$e3Eb-%ZeJxtL-I6mGw%jVZ?z5I#bCT2YXVgiLwsSsxsF9>i z-Ci=HNRE}av8EmjDQC#gzUZTdRj`&Em^E&O@Hi6v=2M#15w2hdccthHfn{;Cj{b|B ztVx#l%o0*f<&*Lvo=iY;?9BDUE6nA3%XTxzJW=HL1GG~;^^E&J*f{`0{ZFiAzA~Y zx0aY7a-B>OoRXc?;s#faRK?(mTtQEp)`mrqgbISzOqAVm7kUsCmI%X(Q6*@$oV`xWn-uzEMM zR5DpWBL8G9OnLOM0-j|{KX@*5IzEFqt?rEcC_TH^aE+e9h{jh^Z&O`^t0hXx+rHC0 zgN2JRkt%UvweI_Um0f_bW@7swYYS#MT$a4gTYfy6wawd_0n$iW@IM?Y%morjah+VzSV)-r0 zD1bTEo5ouxNGO;kpQo3{XEr3h%mWn!BUXvsUw6mc^3kwtGb7LCUD zv<8H^qz-o2grWdx5$=G?^{%qbSWwHO_i%CW8&=t;b8*r|v=ZeQ>J6YhZa{wF`o zUn^(Bf{%(cEGSoAo#nIkd$`T9-t@Y?l-|Wix&=_}N>xtVwFH9;vWgQiZ-_j{)WQWY zskXNmaK`^Cn)u9x#)v1_HAfkhZ%*eo9zUDipQ4FHvh^rTnV0Y4mdVL?I<+}s0wlt}G*rGdZ14VNRHJHudb?qs z|2hp$i3sH=EA9E90lms$l#+eyVQgsOj$boWm2Cq|Z$d^<6JBQ49T89~U`DHoUE7+g z8MDJi7K(UrvKm~JEnb$sVVBo`)#V5eb5vJ?PvR!7h$L~|EW!)m$!dRZP0>`+9OTfr zVskT3Yb+#=I&!3Jsw6dfYbDC+lTFO#c;)TP6Oe#>M^&es`UqkzA56%;A}ss3MVAai zxC#>M9*78~3asx7FZGc_$Uph`@-H;**;En;$*OF(74Bxb+Q6RuNUMxi%i&J#Rx$-k z7iKjooVIn&XN+y|jpT54n$B>I`beD(_>YhHu$Q=D|1?nQjvn~A+nmd$w{zW!%x8JS zSkI@S*C;Ou6n!_n%D-UDx`9)Y48Rk*pn2YeqQN36&?hpU7B}P2@AKN=S?BWz`uw!x z4R`7Xtu2r=CxHe5}LsaNSo`Yc6S>HNF;!nVpoK-Y^HL!yi7r4ad?k zIWWEpvTze-`gG#XrjsUBrlqQuPJ6hy#Yq{LxfnvuIpeIUq5m=!nnnVO1b;y`Dnun- zxF8cukd`f&I>y8rDo7yovucjij_nf$XBMg5cNMJf;liEUDBFD?ZeDYO>Bw4+&-L$&om7jfgz5lQxL7f?F6D&*N+rImw zzl9XbH}R2p)e2#Y_~G%L`<{87IvS^go^WOIl+B?BEf{pMLeMplh@^@76=u^{o zQj-9PY+UxlXAbir1+fnsFf&?yR}Ua(GKuwRGvh18cvfZn=u-_4fk{=J*Qn_1y!Nf_FTw$DAjfa`eSjDR1mMRk}XpDsgulFEivQQJ9jk!h*t2AUY zZgdK5>y}I`uxmKGC(0;m8RQ;wkWYF<@I2>X{gyfb%{@#=h)Fx*Vs*=&hY z76}!yMOWy@b#Velt2_y}U0%kj5+N{M4QhJX(JQWWrKXP({$5>*k8VW}sPDbrySvtg zH!&V^5>0Kblczh*t{GY5n}=0=JLQGVK?3Cjg@`rcav$#^T=ZUZkt2>XMa}PU`eu+Do{llHS(#d|b;fCk?e0%TVe(2obM1c|!WIv2NsF1oPcsOE1;W2WkLYa{4 zDq4@|pFPljMM8$cT(xGDM47lO+}tOFK#6cdIzS>_fF)Brh{V&Ogf<@&DcrtXuust-aHKT)&160qlmy}*}$pc&^i$E%-rz)^2(6zd)CSXKTk?YXS& z?E7i|i|dXtLPxeSDN_g+*r@vF$*udacwzpv1CGVWy(#}deaDb6U( z^$PSXvr_<@*^zA-AaRx?@e8~J1h-Up4%V<}7p2THw3nGKH9fQpoqPF;A9NBThUK@~cw)t($8S$iosok_m<72Kld(@J zpN_FSld)2sGKl$G#AGOvE3a%WdrC8($o+bx+(-;AhME&!e3_G@H)O|MJYKhRK4zV6 z?cIvXfi&VO1SG1AH`oM`f=rl73K5X78gV@U7*-08FRIcY`SXH<0m$hwq|lxamN?HG zNo9$ylA1%5G?8S9Qzw$^@h~pKsFihUi8(XoLOu_JbaRTt@BUC&Kv-JbKcy9A?o5N) zW=JXb#@$?R{<>!U`MQGN?#9}e2)Pa!2#*6tmcdFFY=a}LiVdiBMMr2$%Cy#a9Q=R& zR9M1D)f=l?h6Uj@-tMB5u~dxX_t)vDceqckf4JNg_~gWw%3rjIoBwzuNUgr*mpcEBY+5kHG;^hg1pnomwat_&spY>uBS7^ zVrcrx(7tPifd8spynm3( zUpr%?f)9%{3{()IkNIX+`p8o*(_XQT?4Y(}rG9F=tLvpq>PY^R<)?jn|K}cK3_$X2 z#Ke(y$BEre9u*^k-9ii+su_?t*YBs)g1AdMMORyDOoq0l6q$uEzbRK0PGq=)!CKgx_JEPme6YH>KvCH=_pH*%X9Ai<#0k8W)~4+?!CzunaSD5V2H`X^Hp!EXourN=>o`z>~|zA3fp1L z($3cFwIR|~J0F$!y4%QOAGC@3;c<%9PIrG?pUs_+q#;69kmy$u5a|LI4$kl=*v=nJ z4P5-q!CmQjW~(`#_8Y1gua9hukjST7A3gmDFoqD)!7oe>i6b_ZeeIA&iz!vYAb(q# zb(RJ!iJRw?ck?4AnE1dNzRGgV=KAT&T%qZxhL7%^BZSSu49RLtyi;@d{V=5_n#}&X z*!hh6iA>ngZ>|}9LY>^`@86r|ZE(ZYc$+E&Zx?>in?z13Oodt&vO3owH}& ze#&TOa}8+JIeg%QebiRAXEoO69-|BpC@h-CK@X+N%1bVaqa&7UjnvDnbFl7ZO|~e# z&xf>2(7F2}0|J5s{)JI@Uihy+jS3t4y}8o1?e})7V;`NKDYYd{ez?o8CMR9JXe9UR z1|XNL1(hHgH1vTC)17xpwmCt4u!|wF2z`Iy^u`eC7KP#3&!7!vn||#G(MH6>H5!;z z@mh46pjaHR;EtG`&bxTpi4%bsJUT#U<(hmU^$OpU$vS-Q!DWhhG}C8Ri0a`iTm*k; z9iRPF)rminmI*~bBE@OJyy+{3%ay!%-YK0$9A7SbM3AP54;Q#~4?)O}NG13TOH?&n z>Fn!QP$NM6_KYgQ>)T20fMju>?@^Suy*OgoUX_nb@dKGKkq1KvLDDB((2e$Ifoo^~ z@%HIUj;novaX$r#T0rOo6T-IGFFe|fUXFF_tu+K!48#DM4K#B3eO{TO1MNfh*m{^4 z(a~WI;d4o5aBF32Z0bWf*;jsyh(S%PU!N8uV3n@sr{(@Jtwna(8la}|c}n6r)Q{VF z$3t6v=!6Np`S{6qYAwG{5E2g*La<~@R-|b47v4P?G69kwq8Pl8kBi6zeg~2+V*&-i zz-9_~%W%xBl9Aao-sMsHxk}Oub1x;>_JT*d9{0n8}#B<>Q7X`7Hm&{^aL4 zmU(OdmLxvq=Wg()AOY4DuYp#Y-R73Qd>kLKxQ8Elq{VA$_ZN88tcsTzP?^X%O6dHW zoomH(^x($DQ?z3q$0~02TL^ld#XL~j_{1uT;i_e&fL`XisefQFa$+3BR+4tQ*>D>PYZP;j~& z*H8H`58i}dzXooHH*4Ra_3q2#p)$276 za??xkdQuGL!74wKV{b@9pjp_+(j*p+i(b-_-}PKEL&pnd6*bo>v-~MxGuV`gxUvjD ze*9o6Z!BZS`$8e&>sMnu{4Y|gnhN?qQ$yhMN}7-*Kg61fS%u2KK0t1&+)%Nz+%A4< zRRB<;2*QYbgb8c35PuUH;Zj1;@>n~?Pq8}fjEpOdJuVlHAPQ14&u*(Vi^}X}inN1F zSh~~)K35xdm#>wfK7bHtJtehC{=51d@6QzZpLK7W|u|^rY;4nEw9Lo6~jzi6dRTlh%x;F`bp-cFlXPILtpPOz_uJ zlH=2JxkHDKlnL;!vzj=EErx3+;MT$`D?X-MpFZsE%vC5gM{=7QCRd)~QUew99{t>{ z^wpZ&!GfAfv0`Ww#>~l;Rrh;ZTWpbN zlpNg>8QVi-HlW@v>2p=vdE|Svm?+8Da`5vqY6y%(SB`$`3Jd6|6=1TYERjb+DDOWZGH(*K=i^rMI};rk$$= z2U4P|2}8y#&ySu@X|TD*qn&S`F%{DCOEvA6IDsoD^n3<~tEnQya>De5)kO^agsGwq z&7dWCflABzZ3i{GVxz0=C{=|Q!jIM$s9Xolgm7&?2s3<~pLnn@rD5?)s>6%{y8Lpa z&zh~6jP`|s0G7L&k?o20?TFVu)&kD|7RtOZgJK4AGE}Gcxm&k=wXEiPT**A+Q>}IW z?Um!9QrlNNGyn;1YPwUS1e^h`D_Ud9?g4)ma}TF(BDRMVV4`Dm)QO{-Oc|IrQWTe5 zJQ=79$i+}G!Um3?$6eo35jYg%lZ{CdbLJ4`ns7Z;UUjxf(w9Y0p+E0!$3Es!&U#|c z@>&Fn$Trx`tlyk!vG@*iLPH~G&N6)L%drd|C>28&LuK6-do9sNNDtA6{ASrdj|=i) zk{~20^MX!>X?R;R16{$I;72b4>hI>(!b*lJS#5}CU%*!9U@1L%B8}JSCZup^xzS(b zuf34*x^|NdOkH^TQB?y~njf#b9MeY(^B2^`u;X?nT3iqCff5b#?KS;-Y-d)#v96Jk z*k5@fy*Is|G>%mf=g81xB`lYPqZa>OEtm>yj(^GfYv26P$w0=id_dCw$hDeZSFfQ3 z`jx)Ef3^2<5`dy0U81ZN-oc4S`kb_!$@D-@VzFn`>YT~mQq>0>BSSs3M?_%)`bHS3 zGIk@o`fFX;RPn?1ifhUg{?{wAYM~QVt2n zTeaFf=tYch2ng|RMDN*`5$^;9ke-s-dQ`PyO9r2|@MdW#H*d-p`emh*^BE;b%YwwL zRA{iO1(EC8ja`!V zeDCp#ZaYw8Xf9xf4fW<)=3V@|w}S)*!l*m>cOuWAy}g}$UgxfKWM=Da$vRp2Vg4FQ zN~vfFOlpnJ2@v~b1AxXF<6Ot z_DQ<^j--5LLMD8YQ)ZohGZMrtNBlK&aFkZ59eItj8mVTuz)O73B-%}nezr3{mD4pu zh@J=X^CwU-XIUFfM%S)RlMsF#&hPwlyQ7WIPP|!?3B<_AXWX%F!NsoBrg;#fy;EWo zpe|w9791~fl%uJ^E~{}=AwA-BFVW&6(8sB2xia7PCw*K4!Gz!1nG+>8t|B?|YgVAO z*w1W$)RDfj6;>HV)}J1>%QhaGC#Q-NfGEb=#a?Q@*rxU~N0a+CnKL-%!|kXbFk_K< z|Mm6uyYn&8;ailFP>h5GVA6?8vOt$i4j@yhNPst1Of>@FCMjJ30v%#07X~8?h>}y3 zK*BY0=WM!RdHSL|pt70PC7QD<8m!)}JNulaeez0Y3+_XENA7Iohh7^6&!c3b^q+TC zH@;?{<-XRz#IX1iydjs*l#bt*7+WB)4}wvP;h-=c{fH-iqQ<~#Lsl~@qgi-0zhp}u z*c}jz_w1@aE|nQf_C8lF6-}o2Y!%}@eB8?{zA4H)Z}~V~L-cXmT++lACu%ef2sBxm zZ8a#a%BI_YrEetswR1+X*M!fgiRO6tp?d4$43c%IOe$%H`r}?hCfr@;X(=lzCOs#C z;z}rG1)o_>zGMFP%8}H_L+txb69PBgDi6Hc4Z{l_a(3Sh$Y9@f2Ty?;uc>UK-V-4d zCzn$)9{jgJ#kx6VW47<@=_TIbkT)8nWxQzHZ}Hn~@YmS|#8>nR9(#_s0H_fno$EP5 zet|z7x&g5h{s-&)2M3)~5Me*o^`!mQpWv)bFP+u@(Z7Iz5P-fh>W&N7EYiqf`|w#w z?GM-8GiM0h$;fX~JE)2~Rm8x>jBtA05s1n99*}w7x4=4v&o$mcR=XgX0VA?`0gS6U zo2gsU(t)YVU0n0_I1}WgLg-5){gBwX#~FE?QUJ3?V>Mh_||m6qMx`A z`A}iz6bJWA#UU5_-X2`6foV248Xu~uZ_&W;__I|1V?!e?c}S6bY!|nENsLD<>I8Mm zjPJK^t0lf<(Zp1B9;g|S&WP`poSDCJo zCzMASaz3a!4)RTht0}vNP>0&XL19doTx!DGyMcG zU|CX&^)duR%SqZ$(p_%Tzv%%aOb(HvvP6=y zEV&4^E59{nzx%%{M`(K=J5#x*vX|%IlS%qD?(kMxuj0!u@fM*a9p2M3d5ci6P1_i= zz15SLbLz4e$`2h>$=a>?IaNOE`n1(8FFk@;hgLn~L(O-+gZTxM{f;@SZ2Gv^>In7b z7#wB}cQ@GzT^#$#{cMR{W%6A7S09N_Yt$oc@;IFq-)E!~Jy0wfYg#Ya;{yDteCQ4n zgL76Jy99*o*^Agw5IU=1ZjxmV=5aM(%RzBvnf>N7^6f%Zprf5eD# z3Vl32_to8{9336A=GH#_#is#Nna=hqqhIVNAaYm&DEHma(h&*s*VWf>q+<)in)PA! zp@0mU+VG=PLi+>sg1J>vh-bIvr8Gq}9TJZWQycnmcN5zgHOqoVI_z-22Wp8VNrsLI zj+sD$;qTof^(%1U0^Xu?pvrtPeLUs z&9goxUt>vDLx+qHPuCp9+xi)*{kIbpXv|Ae$s>ayQYaGrU~)D}&S^q<95Iypj!q+G zHW;g=2+pKvI)kUrb#0(bYpFUyv>Fg0M;K9yy%kQV%oeG84qIR-BNE|>!7nvo@OJqp zgW+1}XWT=J%4rCAyirj!Jl4>OqR=*eYfDND?=Lf(dj921kwJ zw!jCS_~NWM&dYaQ;->RRm&Pvts+qj@Z4$Ywb5Qbx6sYGGCF)>hpoGwu8-|I!-GBEV z==`=KKAaEo_3k(a^cT9?-Pb&6p}U^b;yed8@;jzx;wrvhGfh25nXmB;2d?(uA;so1 zUdHIr^y1r=4zKMnk7)GlR9lmepSWeyZj+ET1D>X@ulEnc% zjnMM*c^p5u1DltN^=whAqz;#;6c@7;7n$FSbX_AaIlL2nEhf)4dQL4b+Qp@sqce*S zeZ0@ZJS&S3$AnGriDbmtAk^=G;eJYW|kT`ueKvZ9SXTIHd50 z3H|dL)1||6l0o+7Ya%jMY*FB+fz^6w;&h=Fw|>e9nqgIqm!LC?4MWC;PM@6CH=fxj z8Om_xJ5_&pd7Z=uDGTds%I8)cS+7{5YUl=ITTGil{P`lc1O5Xj0x$wb-7+bR*IO@Z z&D~JfG+_08;l4alNti@UD@=`6;6~!|ac<*PI#UMptk_mICKX|UB zXw{RvWW}C=VT$sX{FQSL65mzH3EuZtE!-{9+U)PP^pbl8iY}!Fhw6HLKK zlvZxmWa$k^6^XxPTQ^S_9hyi<3ugT*xr=4=CpF^ZHCRK+uJ{vgwYUwFj zhX1UhWS95q%T`*^ej^(xF<;bntJ09|InQus^BdOK?1lh+V#AyG!{_1Tp?A34T!+2T zs<}xI8oTIZl|OLA4K-8c3O|^)wEl>B=66q%6M(q|#q_cT?;(19V2;bl@6roE7p}6S3KPejdGjUs}Dc&Vokb)iPTcDwc7i7JB!uVgeJ|r zS6QVZsd~6_?Dz}dmd-(#ru|1RVucEZ%UxykiNa?8I@C)vHcH-inMLO*+IOgFo^AE= zrjjRV5k3{tfdtc>$U{H`K6_XqX61XblEKu|zj?m&#F8MlvnD+$hPt{f>BhJv+z}+pjglH3iyyU!{iqitF)e@u1(yDS(!aC6f)s zIZ7qWQ%GxVNHt9jG1SM6){{QMui$4X8d20(dF%Kc}>ir zBI_&EC`qMsR;5Zbqzx+n!c9-5K;p+ZU^sq?%LTzb21JS_|HOBllPNNtX+{hE&RX3G zp^iNV)eyPO8sV||&Wrejm5rvRN;8E6wpoe0>W!WLly$kp&l}>Hoe3LOSJvvs6}RT? zMxEXk=W)o{HN5xx)NY=1W9Pc5X-gd(tdaMa__z{^O|5K3`@WSHp)#9CL!@{zZ}pER zSyBVOnxicUY<_&l>f^KQiTOk`tq0>5QqNbRu`{Ki)c(2#NYXj9eI&ijz@>*bIIHk#=lwu#7U zn1QC}&f0U_{kv|p-G1-PUM;XU9@p=(!7*C)$KUCG{UMw(=|^P7sI~aR{nI z26dRroz^n_hFFNw68k$ngC|GtLDwzF`#{9jZU$}e!!_3IiXb+RV?=sp@r-(j5&3xL zGD?;6o9m_Kv@EaaC8{8ESO$#hjc_%Y&pRd04Q*cbjIyLKbp`em^fSoHKgV-iUTJ0S zDypo*0zI_-{^$314ig2>O_7%6596bA}yWIh1d%5NJdO137rrE7d@G`wREGFksrk67*uN{V6d5Uea z9JJSLDLA)(aF`FZmZ@1?|KV;}bKjmU-+Cs=S*6|-E$JZRSgO6Y_{w5;K=SZ5ac%TPcncr6IDjg-eWp1|^8Htk)6T_IW<{wK!)49eOb{gvI zx02eP`M7{BZVUkx(fQ$Cr`xn9YR669!Fg)D^8_%j=2WHlqVp{#o1bT__+e9W|D}je zGps?DaP0Mp*7OS2uBG-1rywxhQ(m#l#0(}yfKWbBR-XS|t@E^os5~OOphu07{amx! zp!Rh(0>(K;>AADBaaX)g!!3bS3bRCeyA^rfbSc^LiA_vB6LB!lu=4FyfRG3F`q;-< z`^d*XoW*9IYOE&q)tT(Yo2q*_U;h?DbM5wORpseKAHUBM-n2fQlr}FLX-W!fwYb$m zjg$(XOC_V@HD3ix4lmi38I;r-hcMFQA26gv>k37E(W)ofnik0m%FMDA8=XvMC6Amsf45=OvnU!k4i8`$3Ap5g%XG| zu{ruMUZBiCovQq*Hc|*m3o=B%)UNdKC8lThA=;}Ww}@c0g3GG}l+geDZB_^ldzbrj zQU`zg^?kP4Rb{pAq>tgF+@FGQz~+TCLRl+SmpnwuV||{L1ZP=cstQu@hEK(<9CtE#kuS2V1J|Hl?$E zSohu&p4C+5%HGy>`YPTCr|8`j?MIsJ^s9(-S(is0AWsk?e8)DNo?P`3tgelj$#(s^4JYyS$F<;YsgZIXidKpQ~*|jx~N~gU?6*;P`tCUvav} zNPe1}zJ|NKOTJjMCbhe36(X~l!OU^$@YVXQ30vSm~xauGsg>`L>@E&JU(W}>6IC!S{7w!b2= zt+G3LPYInpltLU^;7>Du)lmj&eds8FeKmvODDLgLWXg<415``6Zj!BSE*cm-)Ze&F z<)KpnhLc=d9~uCf51+88Kc#)5>d-fAp{#N9MjF4EW5wF45B8D zlMf-aZ0QaUgK(2xsp$ilRv}v_5K5kA86PGH)u;i7GX+a>wlwz;vEtk2P{7`Ded;w@3m$J#uPsb5 zUqfA9&{yiX^lC5gmPP{;Ec2?7DcO%MxQUb@!G50G{_*PVdD{%?4Y$&?TWXzUjD8h6 z!n)nMEp2yu7G@R^^I-$Yr%Q%lDR0`{;S^yU#*z-G+c>pTC#%1}yRS|+-@X{`!k zeLr$9WrhrY42Ot#?!FTfG((l@6rOURvz^u&FxsfW7EA7vpggoZ@i?OlRCnR>unM-7 zR=q)ZJC_UiYgL*p zvE6X>esL3@^)t=lBJNM-H$RMx#090FB` zu}j9-vSZ~5d<^S5t)-n!R?OG6SgL-i%z0mahcRU1Pu?T$%JSREld%1u_C_Kf2n>+Q z-xpb0qa|ohlarH-l!~gC+t>~ggwRU(8eYSt$SI~VD5^Qt6qdEPJ$ss_<*K7~AL368 z!?&&HI;^IduoChttd()gC`fn}e;3OP6g>^FbrmF_L&k(y zq;*EfMca9VJlj^vNc%&i!0MKh%7qLlx#FIsHUy!9h-FOv{acq_85og?Ld`8sSkQ0c zaPGKM0^?*LD&dt&d&$Zy&UAL%rJ1dO96AZ2@k2sA)=lf;?;|m)h!TEvf&g8(8>+F) zQijT8LCK6}0s}uxYFHDQq3Is`)jr!JT+G5ZIUVv$m4L@M+nND^MyNlbIeWPiL;avk zcySYdX5vzibt5A8C(Or-k9-qt6^XVV?$}qOCxDMPoc^49LXsE|jwaC1Mlwa!6K6$x zZ2EqTA?5( zD}!9>%=5gh`tS1r2vs<-m~u6J4c|mEXNSM-ui8(86T$GLYho2Zn@$B}PTuh5dvF)( zN&bA)UjGr_;iqnL^#|*INDIEu1VXDPjGLyqF*-wwp{KpLLh6uTrQz4^s8)ToGkL34 zCW}(}CAwPdE!_O!mMP87a!=x72mhqB5raP(fU+%jt?#Vvz{FvXZ(6HShB%4 zi;zV%;T(43O=OOU%Eu71ipjunc-6IT|H7c2?51>ei{?+|;)-{&MITaop+$8XNZ7bv z|IE(yIV#OT9P{VX3-|jYF?wbC@h|rPYoeAB7nEfk1szX=B`z~oY$ zytmyT^gw}I_16P305Ty}>I8iIb&q|V!jwxl%P~z@OEDKG`)=Z|KlzEK2`k+>BUkqATVgkbg03iN5_e#%@)J{8E=n=noTsUCxT-Gz%LqBSh!o#MY~=9)Qk$$| zO(jO?dkF>C+RggKaw<|S%6`g(p#uqvza;0KA>t~@DNGDPaybX?)PORi7{IH`Q*d&+ zWPi3C4~T*^6}gN-|298#=X7OZNj>{Ty!`yrAxigN^%@E1DHtnZ-+2;Xl=Oc^$HK>~I51zlO!i>nFqU zdQhRNb6mg+t6WU9SD~%dpE!dY;fcRu#V~ETtWBHwx3wA>#sE}~nberpGIPuWFEjL!oFpWEpJXy0cS)2$_;SN&;iZr=(ey$1`FdEadCKTHg_vN{bI{i*{C*81W zT0K|jHCn!~jn#Z?U0pl20!}lI6w5K=pJskyexn>-B2GQM6-6*GwhI5o!QOLf!SR-~0r^#-kxPe<&{vCI=mgO)TQbuOZyqm|?M-T##9^eJM3Nt66ek zz1hwF3c>Ko;5GP(M|EY6^2mBzGPK=@?Huc1)3!G2;tR5t4(_24 zY+BOsbhvV47@Bb4r!RkX-E)N#)`vnS5LyGN{h9r|4C++J^K2AJp(HnPZaLyDAT`sL~Wg`%Q(~i%|A3tt-iE9{yF1|{l9tQ|GX#( z)Ht)jLQNf*@#lH+r+z>2e9+-@tu31Ovb)r3sJYWqsRPjhW)UtlyFsAH7k8Z|ZOF9KwSxj|cII%4u?wVjVoyPZ z@A8`d0I<;MF>fM#zGP}$N>f7{&Rr1IXNRYqSsx!+Ss5gr!>NwI?kiwQDY$L1G0XCe%>x{*HGkuol*NO)z1Z3aik z<=y&pmi37kOXnmzq|38+_v9Z#v>DEa)wr$&X(y?tD9ox2T z+qP}nw(aC(Kj;0he!;r#syS=a81sB7)bWo9yuXmsH!}xS^Cn<8oI4n+=}0@@uHQoQ z%*LCgmK;!x$>(8%B+`^l-{;lj_KT|hihmn*)i7PEc|)d5pDYucoqol(HWtUA>}YQ)lr1l!%=9O;gZRMvYPhLp;RB zqBMk9!2o8@P$eaFqTrCoVQ^=Bus>x6xYdJ4mb#Kq^~TD5rh$j@oVV-gnAiO|p3TfNcv_O~;i1d!!UM%1ggXiY zFyRaBKW9U%btkcJV=NU1-|(MC5y^nJ1;ZnqyY5`uY$oJ3#CFU=h4zJG#|P6m{xTh^ z`cVDnhAY3MRQY7Tr*xUraMj#?yX0{$9QRtrSZN5+$p&`r^F+{LXtl9&lqfc}bL08R zCH9yV33uQCt<3(9EEq3uE4<~~BuVm;H2^h2_g ziUlq{(%};M@?RJX)jwHvsz|$K@yI$Gkzm#78lfAKMj&oNNbL6)zDcRLzTP zZw@;t1IefV1NQ$L@bWasr%_#=m+mLt7sL1O#ocx=+}q=iWxMn!i=Z3_@j;z9h}oW- z6W>G_U;*5hNkaP}AP6vGIK_!7XIC7K=5YORXAk#wD=@^Z1l(5FTPU-yP$aOOzRdTT zuEvKv<*(LJb0*bX8kDVJkueuGeG(`)2uFp~>dC@l%aG8)6V-fX2Jzc*Z!b57DF_~6 z#NhTkjA^{?=`^HcyG^3Id0jtWx~%M*HQGeHpgk~6-epB^t$VFP}ywsDWj+aA+|Kh2;| zXEe`sxn4i>>hshs?(LiPhXppQreJ9i`tp^}>~=8g6yZM;S`FLiMhrV6@O84Nw26*N zr!EVJu*Cxt48B$jo~nshEhhsfu+?N9H`XRnj_3~-?7Deq>i&74{)=S6pDLx zc!GH`pRUg=A58D)%>A%C#_RIEFXf1x{Sa#XPKe8ho44d#sp7jC#yAbyV40JW{D>c!{%0PCF0Gju>CH|1ANnZN-WL0Pbu@!z?%JhX=IY&8etT<4!>@l zdz(qG79A+k`*&&o?`1*jDuiz~hyE4TAGECj!C}8%GMgb>)C$7|$&sz5?ja@sE=xt} zO!}eA>3C+UZQIT;@PZqbWXYmMFUA!E*KL^bA?0=>KdK<)#*2)w{LdtYEgRwJX5-rkfpit=D(QrphkF{O2fP;wM^^6#v50 zm)pN>RwsoIAduY%7CXD2AI+LA9#29+ zNBA~av|EbH9?EAoUdaRYw00OH9QH&(o+xZTS+873!p3*K1OyutKL17vzc{$ZN*Wtn z)8XEiN97lvAQy3;1X-HE$m>?kLc8EKPPRK`J~tToE2Q{O zz=gAm{Ga%$v*0|+dncziC#w|9Rs>4Qe>+(vGr9dz4Yi9(D#Rz$7g%L2;GirMaE4Ev zo>^-xaIWu~z}2#4r7YbcMCq*olC$D?UDX*Tcckwd@Nqgss`!UtcCsl+*H6C$1?`e z1Cebh@>a-qF#1W8vLAnnQY!nZuYd;X0si6ZRCu$IanP)v;B^|r z0R4N}8aL8_u(lel;E6+rk+*p^6ZU2FZ5%~FtlEm*rF2+2(b!FTz4^H-F+rx^?qbpB z86p*jS_K)fx|I${Kvcp^@3qa&or{JIMWU|hT3WIq-A+Ab82S<>iP4qC zq|eEWZq;bZr0>DMQ<|KwSjdt-iQbPo`~YDe)k#u88yT_P9t5+Pm*rchg&mH2P0_}# zQ(ftFXF8`%Pam&uV^mm?tUroi;XWZ}g~Qmch=6#8Te0oE8GimkpC|f`wECYA444hD z60_D?YeL^fl`bX%+vmMgj)#Iv#NqmnU%Qgkl<`)ELRe)RSZ~anjAH>{A`Wd zhD}GY-y!?NR#R3Ky%fgSOhxuEmQdhk)qF8noCkR?&zq-kIj12bwEFUqoMp0jB?XFU z2se$c1}HzFv}z+y^J z5$YneSvb41kAy>xcy~U%tNusg|Lx7>spqo(n&gA@<(hhKMlxUS?q;%c zP)^*dgddWs6llNSh_CON=nP~*tU=OOajAvC5`p;Rzsl|GhHc#5&v`(cF7>hDAWRR& zlPrO{k~M9#;t=!3i=%(1B#q*=jTSSC$%>6Y_P0W36JrkjqS8(BNCRf|F-B7E!*ghb z1MLqO2a~L#lIL|(s`E9T0ewWRUo379@(F`mp@}0ZeVC;;fq7$hr{~1+fW~&;g&BRi z-ejG27U)Rt_4=MIWXT1Q!k}exzdvZ{l3-IINrFCsbuKm@AKsa$x08oX#Z;7^Hlxm_ zva-(T#~{iGr)U`LdCB`rv%#ZBiWZBZ6>5`A#_!%Ud9U6=NQ0WhfP?nnimHAwe^U4j zUo!B+Y3McI5PT$Mhnqw%BH`tHLSSvE6RtYvvoLmMN=BKRukN+__uO~V{`UNd9D+tA z+QMFQ89+uTOY45^2rH=Y_9O>pB`R~GEYxBMGE@nSiK7M8J6WgI{1>k|L6K33=@HUi z+3Vvfs4chXeAG@-W_f_Kok1iBO6FJuh|K_Bj0WWQaj%GY6hnL^m{7o&(M#7(<;2Rtobt6PYd{)(&O#;Pm#flsv6z0{ONI zYUN3={BuVHUfu(3cd28d4+)IPWaP3yMwwQWW%u+e6w8ed14~IbDcri| zVZDISdll|f`NGhgBs9g>hWH;ISH-499GL4##`AgV~uQ6cg^jf5kY~vViF= zOkdZZzIoaI2&FN|=S%gBX1!J4zd3#s^fAyy;}Q19oxxa4+6S2vT5d+0rZTxx39YdM z%eNTN{DJjjRp#;;SRw4J1S8 zaCfu;k+^(QgJ=~)C5&f@qLeP@mSS6qGP|`IllW!*OK~977<&m=JTOtu>(HpWtgYu>5!p7 zS*6$n?H+S^=?LxC3hsdPtW^<^=pz#!Q;HDDxguj_Gl^wkGi)O}!Y6GWN*bG=fH*N? z%{sTK%dnQc7oLbrDHDF{oOOoMWkj@E&Yha}O<|e;UuzeJKL80Nle?$W;~P4TNo0XT zcx9RER7k$gS7aM}qK+9=UYov>hL|r4v~%!@iTmx&mBkI~Y&`RXq`;jz(k_l*`{jRT zMM?Gad~;_Ww;4ygv;OTbowSXYN)Dx^ zHE;SoOXf9pxy#YoURkfKFZzZNjORys@)}0+N^+cF@4#5pTt<2Mv7}hD1Od{sqCe%I z7){A?t0#_IDrqY;m@@k>jZuu0i#%i-?;!iIc-GgjA#yyFwkDGdda^uuo}cC~#GCUh zB#i${%)eA!jc`2T1w~0h5w@nXJvuOI2P<3fetGTbzL@)zE*?V1%Qp55*!gj>LjPX} zhXq9a&uWhhIwn|KtLG>RRg<%zE$d#>gLolv9yh$^UZ(gIJhi2*tPRV_k+~TwtOP0b4w1zT*WIab3X(4o9tW|C2#li8wli=4kMC_iaPh`7v&H z6^P;URIUKo#oTD6;cQ2@B6@W}>)~!PzBl3t;qO1YFqYMUMiMSm1J3?U%Oi7o{IQ@?jeXvIU8*Ooo> zhTA>ejsEqVsFSQoMS2P@_XjWoWu2y>wlMkW0+`w-n|s=O;SU)br8HJ4|JdUCG0}=JOx1C9nj?h5AIMz=aA;yuP!E$aiRnC4Q4|4@K9hgnQYza{U~uIAHWtnmB$BOCBD<9G za~{SjQb>xy$EwT*nj9|*rM6qtg|gWqK@C~mse6RjQMz@vFOR~GQV%wUKo_k~sAxnZ zG8zlCjJbUbC!P{rkgCq>f9(qytP1Qgx*Wrz`4+S;QfnHLz#jY@71>%G@qOH}v?Slb`xAT^Erf443(#{>Q|7rX0H?L}r!VZq zr%Z2m+Lu^=o&P30F&@=+x0R84|IR5t10L&He_my~$#10GIw>_FJSptH`lP7A)NV8N zBHio^P43b}8T`v8E3FN#Myv_GesNcBEr8>hXIX<7>CAEJpMfEt%2sdkpODjO#@ip` z_9R8pX|$6jyuyPll&U2K!tg?df9>^>$qEJK>hw7C*%y)#6B<@JLYp1!+bZBxhN(Bu zl(JYD4AdD=TRK(mx|K$rjshSfEdDH0+Y*=@%n}_138C39y)X+}WlwKzY zF_(M|S{Y1!J#Vl?>LWrd^(;> zQngUEd$Ev`SGeke-7N_3^;aTSiQ5zIb%G<85NJ}z30Xk`SIv~HR?6_4F67{ZG~a*F z{P6z+@3%MqUXXtU7kmp$D$ss?%bbPk9FD3PYo501rc4Es$Hg?h?05I}^kRw3XiiJ` zMe*w3XW4Jf+$=*qrn(jSW6R1^X7gupsFx=9z!#Y@OEzsvk|R1~vIwlC%G&>!ntHjQZn9)G(e5|w%0;Irl&!T$ z=7}7O5Adc$=iK`cAsLeW8?hq$sh>whjC-C zPgr^RH*K5~Mxm4Zt`3DHP=HN=(={Ik3-KcxUz?r7GyxL84EXa2B!N06G;;vVfx%A2 zfRh`-evPNe=YBT)({-UjJV<^I`M?-J*ntbqrg+bwk>e5!mKmrRQuvSLpz8JND{|c$ z=`zeu%Ib?=RVVY)9q!NVq0jAQDOif4N}i@if}30gy+m;py95pAE5+t29Vqcrb5qmQ z5?#AajfJonu|{r}j$tWGQhzVPT(29RrhIVMlp))4TD46BOURjmlQ|Po_XQgHWcQ}F zOPesTsY5S}dN#PuBko#gr3yr<$4%f6c;l3DNeWj9l6*;_$1>3Qz>5E~NBu7E+hSpZ zP5>8_>iF;tcQ+iDEWJ5tOrs7EFP5C^SgGch*ML~??b>B6(f+JK9;!mFK=~giuEVVR z#$Q8n$ILRFF0Y}ho`NIzH|S%@;EI{gUF1^UmfyR0I|lbZg>BHm#f-v-!1@!}4wJGc zF$|eMN?2pS{ZvVX0e+Xx9?vzJyoBP^n6Npkz)G=_7WNtf<9RFPHru>vDe#n&06Kz9 zDBbrc8n3Og%)kFlOY~_;3c6f)8xxlGxA1&(*lUlTixaM?_u!5Dq!rLdt&KD|%qipF zVw$P^6jgG78}FB~f#}zqn^Q`tu{xV(*y8jT*XZINj2I}$z6F+I@P>OrC)t+N;(muiWiAMh@7$>3l>^(w^=vJ z(E5p+d>aUx?AynSeV_z(=gMUNfvl9o-V&IDnbAH;du776@<pNs!qu>nw3ri zolE*w2N9AT`-H|)qQ8X3XaHc{h|s5{mAE6P7t>yP+eTbr`at)$K`Jn1R_>oK3+}!{ z5Ik8yqM=(kKqo7tJD~$S=iyKdqr-1&okFITJ@_b0vj#TGnHST|1s>XO4I!661O21F zz}3v~6zW#usQxp&#uqhRA7wOi|IwB4Uk&@+zW)U*k%|ZA&+m|L=6$ER+vvQz?N#Dj zT&a9%?Im+!NEI?8KJXPY*@PPd5!V~~d@_npp$%1W0hcF1ln)@2D!x{pg}l`#HTCkh z_7LOePqDipx$ptds}6gC)&gk(8`@n6k58E&QIOU74*tAEGnr$*H3|N1ilB5I3E zOV~YJO~e5wz|5oZ9XPzM7rZO}s(!mGf_*z6KfbO-tpjt`Zvs;hUM%1E$)0{mHH%eG ztz~^M`sWgWp($;0$Rd2gs(3kbFtd;=vv*JobQksfF3l5bY53_rbUdqKHZ{A={A>#)8T-hln1=W0oW78@*6Y96EKA zO}%V)V4r_CEad8!aG7zkuay4x-mgM9^Js%A&B_(|Y(Ak`lFoIqOQxvgpQ`l;Zu0j_ zWfr>{yMsRjKfI8Jffq{kSHSd1zQj?+Kf@eFrDBO$FZEa7Umy+#vZsx$c6&svI2;|c zM3XpDga^EIFuY9=t8P>p-QXPG;@xWm=MSAOdZP?R07^-9?GUwR?o9Mi+CNps=W;?a z%%F4=hY9t)YdD838=6_ZL$PIY+63A6UlH4IoP4!45x8*zva>DAv0f+hm?)G{{UkqA za+wqqXJsitqh}Bo9=JgrY2{MS!V+hoVRU5OjrA5ZqK(chx z{KMM6_joV_V9CIK8Mqs3+o5vLr#FCsXGp=9+N zek-Gn;iWS`DTf6SwBl3rmQz?0ws_&>rA48@xA35g zW^v3mn5OI*CZ;RZG9eE&ZEwesnB}@m{jq_N`p)eqZJrxt|=NC%L)`qB~8b3!f6{8Dq^-%MUk8aM|AERE;?g30D?=|brf_=c-72&ePlXSj#>9{&&sjbr%+oR8#(=hnvE#2Jy6oC+y$bt|gR-x-_ zp%D=-lu+L}fST{PAO0viykRCyV*kZ1p2MRWtyxd*&s8y0tB%nVuxe)C@^J`4J-kXO zDy3YsAjgHXj*&*fm8Dtw2JL7a;7QWohn5Pt(+vJL7*tE2HcNjw6zquQZprseWg6V% z_hg`R$=KH&wP%sDvuy1tRRkQ^U27f#f!OJQh7FtNWQisY=z$&r^~_CT_HT#rf)S)U zhaC31%vY(E1PCUiI3Ib#cp8KFAihs~^eP4G^2PX4F`UC+w@j!6CB#&y2uBeyqM5jw z_If@|u*d~dS3CiCw>$A+#SAeRyil7^qc#n!$SEay+G6V`G4MSyg$lx0wE)LeTdPqm zjCOtb*`P2~+IR^#^e466rD1|rV=-p;*6e)0S~J&>_`JjfFWMSC>dg3x`i*YYπA zjA7@I6I$sL#&$b#-fswCm9xll(w7X5qdL<=(f&WEx$Od4F*00!sy+@3TdVjF)P|hK zg4^L`+$?p>Pk`Cg0P@Y6b?3JV9!l$RZIU%78bG2W60&r)6<2jlBFvSo7vp*NZ$_`v zj)sc=>H9c_`mJ}R#k<#lg}KNzMEQ0P!Qr1u_wozQ#d@<^M84qGCXT6Pu!*GymtjR@ zStu-!?gKZ9hm11E1LZ#KxX!SYlKwzNC^@B)D4l%etm3F*v)e(hh2B3Y+HalWBg6{) zdx;N~054R6$nqH;DQ!rK*>^#E1gHPD(});)j|>PoN|TAe8`lds(k3#V^xR3=)s#4L z5x}uC&JObxcsU-k`*88P+(GH>)7K{GL%95CQB=!Qi0WuQl}?BL(2PcChq=qq=>Dkz z&cZuTUIpjo0DNkU2jNc7%z%$PQ(xi}Ke^$(;gVAaHQ|N@m-1v|+X-Wi|K~5pStSUS z%SvzD8d!iF9+Wf`?P6F@fvx~XoDves92YjD!Bm29yeNS}Z$|1Zv3#37VCRu*r5SV@ z!_IjXRH%1jSq-=JfJ{rWwykMO44{k-Wz3LSIQ4JrQ|KGgx=mnXlub$=^wmM_{d!lR{&U zK!eY$#yrS7v$EDdj#<|zqjUW{fur%n7aKqHQ?mX)<0UwHbt9D%%pZ~3R?W9B&V$VK zvL`a$mBPtx$DBO@)p47kWxBYei^<`t8H(n=QHJT`J5D+&NEZw;mL7-372yQB(>0!7 zn^}Rkz?UQqwKNy9qg=(kp~o7NgGW-+wZ{Bi48=9)4Bqnrh+%!XbB)8BP7x@z?UX^V z-PuMe{VG{MN|w^73v;^rlnxK-*~jy|Oc)INcdEdVE5usx7Dudi_Yh;z;+$-DXG>0C zAsy(|j*y~qr!v>25iu6=W@dR3dbwgJ*HXT4An@xziMD55DjO4z2Khn3 zl~E8+M}-3S>a!T?9uoP~pSb&1gcdB}=6BB?$9h&2u^2wpR~aatU@_D@V`@;8h~XTB zH2{FfL|wPQ>p<;$2=P13|EN=`K|XE1>k;u+4@ZS7fuzmI+|*A4Jr1QoxBQmc|K8hC zQ<{>MweknS@U#@vfzYkycLMpH;_0Kc&?KW2V zC4ipBR;XwRuole!_ScerksgBAlD1%=>aP%w>9SpT_i!I9Ss2@$fq(X)T#@dJv94~t zS!V~rT)%^r44G5~tWs3LIkw^o9gbo-^hAA?P(|PS+JkYDlv<0|Xe z8Kxr;d6Yf>JlYf*9neo;o+?ULV;l3zwas^k@Kfk4IkV6t;yQ^Xy|{jud3Wb>Hv4~_ z_rHW`EMK@Wm^vr96t zcXX441a=!nMF@>k;xnKwa*8gq%LBKFQ=p~%dKz2HHpuQqsoBwMmp~whbnSO8*n@rS zMASP9?%f#PTbzp`9e{Hz^93o|$O;rXi>}<7{uZ{mOuT)&*E^mo;GfTKYG)TAZVVCA zo61?O$$=f|d11f9N#LWab8k#qAHX-g`okt$bE zXYlI5JE?FzYJ@JzRU-36VUpv1&{|YYzt9CldLNj>b`ujS5scz5@37o8W{mtUOH==GC50T2vTHz$M#10+0l#{{21T(J7qHKc~8qs zSHkzeE;%-jRMpB*LKrjg0@@8@{r!5(fBHws6e=nQq-PSU^z+O|!U3U@n z47ub0oQyJcKAm5rIgjqE74ZYen~}LhE!9og@1G!~%@M_Ge!U!y0M%R8?Z-LmPVZ!+ zSoNJbC84QZe;RlXIx^S#KMcYCn+qTN%U4n&?>s#(9G@Uugr7>`^vWE7LNd z6VDnw{*=sjGByyeSuW&}*m1M1ZQ_t5NeDJ_DA}B9v#D+e3X4nz-uq!hhr&u{P(kz# zNA}E5--45h7V~lZu})|V@&zKC(v%Gm!e-Hyw-;-xG2Zn(#_VM%cb;qlmf-`lLINA?qe#->}yx3`>qgW3kMJ2 zIUWe6pMfR@9@*{c*Keg^!8#xW8`y+Po5gYFkj19KOXas@3v#Cus98B7<`S?5KQ)5# zpHu=W1~BaI26-}oHVEn2Rv;n>13{)xsS*JB0iY3-U*QOalW#hu-g0?de)0X&|B`H% z_v-MjSi(@!U}`VIf0HRYpox9unZ>NH1C4wf)RZY#@ICfs+ep_%Dyga(m~j}UNj2?2 z-?99>F_!yR#UIx5^%m`lM z*@6RO7S&BmlN3rSk=WQBHI?D?LeTvaOSgk!WGc>0Z4EEqSP7Ix5OFpt45dC^(&JA0 zLxSFjsQqS~XkDy=w`+~@11*xHbOAxU8--&+DUYMw6Ov4hy!Og*-^dPmNEoy+gyMWu z61-b-R#Q{nthyQI9gS*KNhhQ^Ag94N0)}YGvww4P0CVdMsC7vb|EIh$0&a%1h~iU~ zmMmS2592WDH$eg(-fmv-;b2BGuxIJEM6yS>v-gA-%?l@Wb!%r~F8zNn!UB^1R}-aS zA&hLhIlgl=POf^QoR%zFFVs?|sZ?EttL3FP^DjVCnnqqIW;Kgj@d&1y#7DS1^1S1Y z)hyk&VpId|^E&c)3I+AcMMSOr^4~=Vi=10jdFaHKfn~ab^xgai)_eSA9HBbXGY-g# z%FtAP7G&RL!p3_GJr!|c0XWF|`Er@V2k&qrk6pyEQp8n1m%TS)aUHRQjSeTtSZd^w zDm%>nq*pNA*yEGFT~-U;B>A=c;N{kvS&Sk<5axRk&X~&=TKmj^rI`m)4FFBdXBfUmC|f-nC?8-TLx z({K;7LmQxK-(w?QbU_<1=S8}iFDMjP3FZvNnJpVC1Hka8z`Cne8wwBz!fNdJK2z}> zwMe77qqK}P0`k-O6~K=lXwFH@682E>Zx)^_Ov6{KQM{ajL%y}5{kx;5V_lHH@h9%2 z9raCj!xK@)VB>ARdBIhX%sT6@A58=}B(ADf%+eDC^~Tm)_fFEAh`#2|SI*1!Mbd6r zSob<{SU}q}H?e*;M)qLM?UId>LV@{ec%b1mp^rPayW^^}?#%CsDs_x2LJ%)|uGl-M8_jUTFZbkrKUe?SI5D*mgZ6jUZy8LNXw ztA(8J&}KZ!Ne^=%(Cb@x$p#ORRrb5=y^p2rncKk&H*JAn?*9n=|3T@#>!rU*nL+*M zKGxPAFPG0dIhIFPSrXSzQxjvE-aQ$w(&3feLOJYlfztI4rN=<5CC+o0t?h6ev#{(- zO>ORCf!rl1l(ixuz>#A+DF&TqEBcYqvNEVr;>74Ous^I(XS(gqhcP&DI)Oo{b_{Zq z*=kk2{Q8I4l#c@UWVS2zZEXfwc_G2S*_gpd&;4^hhmY=(Ipihk1^sn{**a|r1cWT5*JSFs8IZAZ@o7d~^uWc)GE|(pKlp;Hll}4@&-GuJ?W5NVnL!Xy;-v!NoA2b~ zR0cNH?ZJw=L(ifD^t8%vT0x;P2eV3;1V}Jg{2m&y1cV%sMvo9>7RR^%Bw-DhpbTfP zwF+`l&xDiwl!;nD=teL_IIDzTJtgCqtyS?PN7VrIr(KfC@#7b{fnZA`8@Z#ny5}sf+;!Qx{t<01humf%3i0o zAJ^~%Wk5bju=T=dmObg<@2$qS~A&YF;6-a2XefRq46t zZJoJxw?YF# zj>F86BRtbk3Hf`sh70rE;}jQoZVV%DKl|auNyEgkKB4;3X4~4EH$Y&brIx$EQ6PP? zG6yaQ(v%WGn3Jnf==x8xjcZBx9Fk9OX8`cO4f5LOEgp)y#{efUJbZQ5a%%(Aee{ z6kzN?ZD}s>$TYmLg|^+$sJNwDWqGNA`e9==`5KeS6ug#b0QqC>4EP{WbP`Ej7Pk!J z&Apw6n@OhVs9hXYK<`TgMv{ zmhNDnU3b&`Dru=b8E}hL@Tu1Rxx-Ud*&(AyU7qBsDKvopFI z$wkGlY}GU6p{YBk#PABNW^W%#NbJQ1@t9Y;jyyu%rh}(lw7`&6oIv;ijU`wH8!+u^ zL7u}EKhbHd+iaLQ7tj`wH`NaHQPn!wFwO|(;qxmkvi?EjTQuAV6J=!M_MA24?tl8a zMEhB(;dJ}8b}GjE*1NXr%Ua)n=k=M3ixwlRCC%+&zx zkKMLqHk!I>-E528hi|xMBV*^jLbcvBiGSXiy9vs&n-Z`vc$6n7(D9gP=B%ZgP|X+# z3;oOFhNuPU6vh4Q2_m}kk#%~A_^L$zVw{I&-RKC;=^$gj!?mb=aojPs=sCUkY^IV^ z4_h1K%UM@>rHhG+z-hnrJ*R|zH~O2qTf0Ah&{re)#|7hl=6f5q2jL{O@-+}#`-3cT zv&%DdymYWcC4{Rg#bU2F?<(4&XN%Nefz9q}Y4Fkqs(`Dbv7WP#fm0Bpk=#EuFasIY z_(jq*VJjAPrJXVgQZU!CtcC$^mh1w8jmlhYxYul=7HddZ9vdpx`$kxETYbg3Evn!} zpe4Dmb~?#7I49>V1u8!wlfOg~Nd;KzYuYmB>*Ihg9hDV_r((e%2Kz!03b0amy6?%r z<6{^+gL(oDQ2Z$o$MW)ex2qFl<%VDGCZu7Fn0w!k=l;wW2u)Nb@Daor8p2}uf``Xm ztaGS=XVNR?!o+95d&SCD-FVkm+fDl8!*3`6y8gq5OsNyAHPn9P?@rFG9Q&gXNAb+yq+(zS~T4Eaqe zh%##`NF@#TJ?m#IBNkb=x?YNr4U(*N@ym3<<$t?A&Alw!Gfg{Mz^{fCMcqn1wRi<1 zG$+_CzqGO#LZ6)fKWzVtl{wDqHCsl3q8hs6Ha>r!Z#_|^w3f>0{O~}X+Acq*Bo`K= zEi|_9jRzKaR*H5J6wD9nt1@6}yPh2{EA8XMPOPk9or%sp{!&;sEeb{a&Tobov z?*6`Y;4a;*9t1A|n?nU@QwF4_M9y^##Uymc4_?92zLx!@=Q)ONN5aM`t+1hXYrR2N zrFR+e_6i`*pgkb@>^fwS=-RKlG1&?3O&s`pfeeZOAd(yl^Ko_=MG$7dv0CX*Hs(5w zg~4D^?n+zGjOX9bVtMe9eGNMQzlPN3gd)GM8O68_7$Dgo6miTZw%U4O7{vFM5PC8d zI{Zzm9b~E&ctlSmjSNTfC4|C2HUK})7LXIiH_H3FaX5-7CXXM&3A*C*(@aIiCMnkK z291J9$|{p)iaAsyjGZVD3p0s}fenqQXn07Wjt7Q=@m|lO9Q1>AS}vfKQ%v|L0l`q` z**V_-LP$t~5HeDRp=AjboZ07Hi@+wtvAeGxf0M7(ji{?3CuNWKX~>9+d`9V^yZ7@W zNADPx`dvxY*y`$IuPct*hlWaJNf)QyM^Fk65^_*T2^)F!sZanoRF~`THXeXj?nlT4 zy__82Syl+9&rxd_$zX9{JYWpezS15ED4=|Jov8ADmeZU&XL{y!#(ma=5`B9r5M%}r zWo$HHT`;BLHJcnWbW|B>M_`jmR`SZabM->|)5da*aqTN@#25bFB4bg3Qe6Gl9y`>( z2PpGcZ$``;?3@T>XWMln8crc58Qx%~I9sesoE#d(TX%yqq@m5#~ug@l%Z@;!FOMh`yDOc6(V2 zhssV35_a;Ee)#0g^axR4!Hf!{liyS$j>Oe(3c}VzQ5KW&eq`XUD3Mu=%Mct4;#JP&)^~Bi7HNgHAS6iSB2;%kj56Xd_$b$mMxHgGD{+<; zBM^~^0`ATWNihU-{5L1r4l{F5f*h2BDM1y)>2*~v@O6?O=?x^t*_2UZ0{tqkGh#2+ zeE1++2cv=ho}MYrY@JoT>Ur;VDBYI{lQ1%7X-MIosM`~~Hm7Y=q#-Lk>GO5!d}_u$ zj7QV|df}-0+xvtV&sllh7=-Xs*I<=|DwjP*V?nxD|lq|)-q7j-M+91&3>(&7MMqBsw;{aDM@5%|~{R%N49mz*s0}JD|B#06KWrmfswI)gnWyTs|#A^%X z#kub?UD#!-$o6oQj8x+n1QT5Bg~pBw|DrDcV;(iLNRt_`X%Pl3kq#Uqok1oKhd`tW z3|8=1FQ1bi8er3mmr4p(R`ya8mDxWdcIBgX*EAoU9&01uT#2n8FTpDDXMY=|%7+vuW-|3xtda?TydqvEcRYgaj!CGxWY(-^HOWbR-56m6-lk62a_j zC?ic9a$soSsvt9-T)rj(SM8C3+}v0<1Ub^^4$p7YhdMaxqk@F#kg7FFoUc&iF;>J3 zNx>mnd?*wnC{A|0>pSN)2aCXEKY+*=p`6i@)B$NZ>%}d`!)+NjF3CI|UXrBm0q4bY z;4mY<0CGR+empHe=8`d7pDWO% zx~)FAuy>F%v>SHZvIE^Wa}aBWCrVvrcM8H5okIjK{6P9$(u5J$1Vw75~s-v-}1WSB`4QHRna}A>5SH#dY#<3Wg@I6wa>^CmZ!Vq zJuIKBPMPYpV{+YvW=#d6qz&}et?A8&L?*i8x(z zw>N;F=Uq>YU7!3|gysnkiA{et+t#M_^TF~8ai=BBB^x?ReM7HCdr^_L`i z$*>@4`W+pv^_dM(eH(?`dCUGKEU9y%NYKF>Nq_nZ0}v*~Mw-_i;(*ZG?ATM zFaD1;FhIy(*79og7SW*YZkWrqHdhX=?y?jVik6i+lgTFrmHXtF@XCz@(2lQ$;v>sP zj1^?6kOdpDyzq7fm9Sh}sU>bS)go>Yvcai@qRZoen{27YGVe~fm?o&cmkALMFMu&Q zLDgxB$?$14P|Cf?)B*$WT>8lXiAOayf%PtHc~rR5{OcWq1#z)BeN)X4qxTUFH&zkp zp{2lb#D)4B#`(vHqzgq5?IuOEEbWXac;(HhsI!W8i^-S|3o16N>*H-9)EF3iQ`H^E z*0+gXE(+1_Nr2YzH*4lq(tN}hQPR4Jw3BvJc6T$VC~3RNtP!{r*fL_G&FCCO@tPe5t!$DM7~^Jx#g>vYmDzZH|$<< zd+S*$dQ^?Cw8M{S{p0K`A(k+DwxaVZt{hU1VGqNcWP+}>9%Kzuf?!S8xW`(FJyWnO zUAg}lS&a*$n!lp+Fzst4^>us@+Z`#6aj8I8iKehvSzOpOA$Me$au7i}uc5pU^D|1P zkcfy_t#+;iwpaWWqdh#YQL1rBiOVhzqmfl5R}JG1qEYXH5|gUiU@SR-uJv|pVoDNi z(0B0s#|+N7BvRE|en=ph!-wR+rM|LV+q_Rj0zv}`!6aBhx*qXp)PE)A-ceiTEX%?v zf>Sv}0>5Z&$kbZLz{QSrfX$R)U9FGN#KV6y9>!{=DU39P6TGj&guc%3lPTA1gdY`{ zIGD%x_^}0p-TNP||62ibQx`~-)t^@jbM98=-d*4Cfdfx za;aP)m)}TR;+4ST3f8n*(XUkprcXrxS^)4kAy4-R(>xM#%0nql0@Oz#51m5j2k`=g8M zArD!XzOx8{5OpMi+Z+(369~&oMrXpX;<_Cs*Q#3&-=@w3^^RA~I^u5q(^%`-6;em{ z{l9MpXu8cP?*nZM&t-CbrQ zbL*=b9q`=?xu)iM4}5Q#@&_A1|O)=)uE3z4c@ zq})!mZ$%8E*i4BWJG73BzdpFZ1F-(dcL4C#|Ixi<2N`%{|B{wD8F`FG$j(r{aCqD9 z7RIO%x{IIy%dD22yZ-^qpWbPW?ptNx=BmW0NmOQnA^2ghUVnzkJ1l1xnS6Vnq>b03 zGgbFH`%cG)cg_Py)`BZJs#zApc6*f`$!>!E3)(!wv56(AWczKSn-j9?ZQ}pGGK&3Q z-pENFz8O6yW)S;N_?OPZzK6Em(*=)Dl<3pL^ZUaHAFt<-j-r=|R`DR-WNEx*jR2uQ z0e*wTdB1knmmhp6*limmioxT;E(?xe)KbErG$p<(=1)X1Pn2b@-(Q#Bi%IL^78@3| zfR<4a^xAys05dFdUE==FO!5A&1>MmuxP-Y6YjMFx5({o0a9=fX{m%0=btHV#0eCGS zdI3^2$`F4~mGWv(e&|t(jqB?VH@iE(KPi_^1v6~G4zGQHL}e=2Fs=uO;z>vhu&*V` zbNnBE%mN?(kEnOx&V*~aFk?F%+qUg=Y}>YNTivm3+s++!Y}>Xb&-=}+`46?~oT}P; zU)fVBJ1Mobk4)g4A%q{jS4{qLZ)ONV4$AlGI<%_#u3M-tfS6Pz^XE07;n&(b^%Q32 z55KaPUV%Zc2Ib)7#I^3m=PR;;GbE?QINoE6aGFwPB<=cr?RNBF$gW60A7Lqy2Cx28 z!)$}Wd7XL83B69|;FnB}eyx*OPmlxZ?wkkPvh+X0gFL>m8p}%xME~V1e zVJFoF^YLw#-0^De!sX2GqI>&NiA-CZUV&ttiJ-5Zu}L3QU-5TDG2@hnT+A~(->L6i zBjy52kj%}tnnKw4Ht2}IX(6`=Hl^9~OD&7sornpvndYoV#+`4FV;^GibIk^S(g3b@ zS@2f=89KFF{IHQXDHlbfyqOU9>&E)T(We5K(s9J|-@=vJU4@iGug3m^uW{L#mN?^< z`0Hy+$DSKUJP|H3eyWzU5n_n5vWb66iZ(Y??d1*b{utAfHE|B6I#=_qHm{ZlH|qK{ z3TB6$^ryRtlsauQjwhqCc~xME@Wg3tdE@SwHM-GgE}kzf1L1D6d-eQ(8poeh&g1-* zG*%wiQ29>*J(|m0`BJU$-bLTHkNc+=zpszQuU0JKN>%cq3>%M%KgwLkBdDlZf0OA) zEPO4o_TvT*gBVRX<;7`b!*n|tCP(u;(6}R#jN0%3(gn8M4tG-Sd8%H@euppnX;4z+ z>A@tK4HpVQz{-+IMa5=J5Ur*s&n#^0^~MZ1s6k%A${Snn6gx^Fpw-Y|%A@+v2j$X3Ct4 z=yYs`O|ga$_@^Nqlu1W3s|9hJQJl&3S-a8GP*f)fITClqFP()K$xBOfzjWF`wT3Pg zEWODU#5JQhYTbXH(z?d4w-^-^w$6Ct7YapQ zaH4L~j&$Dcs<~jAu4eRyE}J!}imO0_n;cg-@0{{@#A~QlH}cp(gFx;P-EX_kSoR68 zsSX3Na#fN{x^d^*S_Uq={!?8O@dyEqls_*i#p6t9E?AhaJE5_H{Sn~ztVU#7u07GN zKA~6Ee9p`BB5AI*@r?oh>zO|Ru^K;LPYn%Lcj%c*{?|88->WOu<61k!wc^*KT$Hnl z5=SM|Nem+^b+z%AJp&@nggcW0=AC~@Mxw+dm-v8elcfnV;JMrVQD+)nu2q2%GHhD} z>UVJmC39rZx&+yVeR}8vyxOXwn?%DFc&sSyg|e|g45=%v=bi0Ti3@|te?(YLXel}P zjyuH;(#Jxnt7rb}Z+iTHKKvVf zlnPKIf5nU(nxY7|QCwoU%VXchamJr@Wx&h8qLt3Wce^|uM%WUl2MX^O~q0X zp^~hfboE0&7f2}-$iMB4@G<(U+JVcNuq8=6*TV{}@jO&*P~!G3PH zq9+vMr4l_K61S%yS+`w>S>3$S%MverpWFI~&^ca^oS&5Oj%D%P-E?oiUbKK5l|jaZ zk%vkv!P;aR6D^cki!kc^w!cayO1##Qd}Ke5Vt}W)xQKkxd@Q;Ic@Q791bzQ!f!0U8 zm#_G>HPth$pAWc%DBJyLf$?JY5zhG8U33)FXYs0L$);bnauKhU@OsnxH(xy>u9UeO zDmP3s1M<6^0nPnfA-%bB@c@A24ZO6)nIoK^q^CLY?ebLsGbay(z1z}Wj3PAjVC6iO zL11J*-}4+%z3RP*i#o6Ask=g(k2S)g&R`7;S*?TpL?S`j(aaBhls$gE`(>1UM$>f7 zuiR*@qnXx?Z3U(v>sneSJ&3V%# z)How5wl>eSXVZ1eR11IPgaJ{cno(3u|6)26=FwXo<3%?!c>9laiVR?$pQ|=jK7c@Db9Ey-eb1T80cEV(6 zY58(8l=jHcu+$=iPoL0qEp{VgiL7_*;=c`?6eNv@-I5zAgUBvzL3tPc`9K8@(?tA5 zx8zL56)pZ1N3Ti#FEuptLoV3XXwF$shKdlw7@)j2MpTq?XCxMp?%=tB@&bj9%)-;$ z*hV+J2KJC+*eMiH`Qla&pbZg}O3-x>W4f^TAQAX{p+gsg?>k2hm;_F{aq<}3JsV`C zT6vTF#TzXwBuO}*0EbPMnflG_fFK7V8ATy|tn6&glvt9ax#r6FAq_$bmu&$?JY6N9 z^!AEXNEkKrH%9DMuVcjMw+}u7u{= zPwr&T5@nc!^&AYGlvzIAtY!70q8E(NvBbs>KbP{KgxW%IsMPc4uHB5u8c(pm0+J9e zE@2`SlYKkRZSZ-`RV8%C6g7_!dKn2~GHDzubHMVRsKY+R&;4)FdV7Ze|x0kD&yINC&3GkStGiD6)Z)r&&sl8`RYVs5njVv_N9i!9Fs2BDxe? zQhBWgPTJ6-BAvsCK%NQ4;oF;inKUyFsT+4jsBGu=%1Z;Aw^NpPt{8dVo}PI zAm9tjKUy;;6I;NLLeigxrqt{zQWIjCXfV^NBBFF4v)WQ}s9h3iy2i=P>B$(vC;}Bp2E&WaUmup|1oU!vcPbtbLa-o11~L6&sIuJI%TF9mvzKB?(~@xT#s2EOFZ`(u7(LE zj_|adJ50(U@Zz{KRoLTf0qx!sm# zNexSo@eA`HK?WT>5s$j-qt+Xo5XTg_tgc=y)iyWb0P6u7+D5y;#07yB`+$l6Yqdk; z->WspOE2bpQA<88C{T7_Re_O&1&)(}IF!>X#EjNzb2bvrMM}t~%ZgCaL(`B^l}DKC zgmGzk)pNgeeU<4JV_51D-qi;m8D1m%NH4JnxU|C4 zS8&pnyrY^`rJ|=BsF6FJ<7R)WnFT$f`y^jK|M+MUZMm$OJdhN?ZFRw6Q$xPiNs74+ zt`nCcXVZDQ(%!p>D}IP#${6D*Y|tiIZ3_ z_0N+%9gVF|9{^=opuF>ANreo^$&2OBY$7+1%v)__C1x3tz-)I7`CGswDn)2Vp@k+i zE64g5KXBk)gW_446lSvH&oCt_D5B0+r;x+JqXG#Tm|7VX<@j}?MvHb}Ky*&qOKeI~ z4Kb$Kdv@Y+2+;wJ5Bhi`nkEbm5*tbLzw9?sc6Mc)&8vWAqN7V?gg9Pr>L7!{^T`|z zo?cy%CORXX(vEKY?@5$Oy{5lpq}1k)g@y0IRr+V;xDl&qZF^;B6gbx}y4P@X-Xo0N z9ZZ`w`yBi_v45!62ysg)h!=x-gj;xMa3!RcGSiHFeH-yWekqDZDCPH6@$JtB?(F2+LYDLzLOI?nGOuZmao0n#*VHJ*|3W$=6q>f+=^M`f1QoEbCy29!RegE#`ncIr( zd7ooeyE%&L^LFobbk(b~NZqi9HujdC%K_#|so-FMq7%QZ*5JNq1XuIhj30{E^?~IM&$tF6rDFQ4zD7LI#Ya37hO7&!K|#2pxhO|dD2C~yTu(E z)0PAVyoM)r$u7|>qEvge(dI74q0r_6UxbL0aLk9iD>eA^^%Z;J09Jbx+Y7*jOjv}WIfl@DP(6wR-kwS({ns{-AGcpv>>D4t6t=9Lg&&(Qja%on^ zXy*R4^i~Hw^B?(+T83v4k|#(sUFI<~lviGuEz`tq^280BL0QY|DOkmzoWhJZCFZa< zf!n*Y`6KeRe|WB1u4ruOyW*Z<9p#pzR8j$Rn$M)~)USKh|GG>UkPyh43n@w|B=3_I zB}9SJrtrORDn=H~{+$qENXO5P>D$LmWvGj;v5)CAx{_F@Yb>P;H&DVRODmCjE0LA6 z`z;UKzJz&gYTew2wZUX}7BeN&P*dL>Bp>1$hK^{x1^vN>IPo)u)#$6Y!ais9O>SPj zA%JdVxVV$AWOfh_=C6kO-_`MF6hAds(O^}EasH04jrr`Ztc@$GsU6-tc-+q1=i2+$ zdr_6M=S<1OCl(DRArcjBXAB`9Q3QlE?srx=R$Iq^&`kOq8;9iYjAt{8Gd^#4^)=pn zpOXP8m1*fTH5sSc@%oYrvF@ig=Uk;EcvAlj?z-LKy$~l|*FetrmrX0N3z#HhhKRSF zN{hB*mllRZoAMB5C(1{Juu!qxom5MbMZ1W>B@%P^0r?lWps1Y z>o96*KM8EZk`_4^q1p9(kcq-w5FGjmU;MRpi4~R9l~*5rwn%;iOC(J$k}vU!XyaLo zZYFb>07^XK77+Ye$dfr+O%p(-4Bl{6`GS7%B?`+ZXP@JG*K0#=(^tSC_lhhME@xBB z(jI)oJrgG7LMQlWR{_(=s?hY{J&Q|R%ODu%_UB+7aY#Rc{}WoM=4^NWZl@L`B_x@W zE79=UIoa-)oKw~TE=mlRr@z`qn`Gvo^bR}xLj{z z+(}6b-^(10qX!B#sL)&;uHMGre*SP0Q*oglRr-Q?>&d-*l}kEC-R4Xu^vG1JtN%(y z@56}%l$Bc2Imxgto_QU8jx^O;*1i7ew9RG^RletFTbi2%1@_2iGR#R*DzD0>9f={d zZO=UXZInCZ`BC7tZugwT8pAq2ooI(lRD#p2& zL|~*Df(%w5PrH6Tv9>}-8j|a<;mHAJWDMp32Rp_01oP| z=o|V2xSD=^ywqG9D+5O;eix=SuVgnqq>GhvjuDS|{ z$JGK1NZV?O*~%j&&IErmT$9c#(gPZRnfFF;#HB zPiQ-)0}HyJWc9B3&PBmj*Sk+b@VabtVL=q+>#hm_w%xoX*i3{`V1nbN$N3y2gud_U z2>PXt-VyD}C;I`_#KcJ4b>wfG83gHsb*p{Z#YkXr>D7Xw5f^2p@_@kUDB@s^inAmI z<>3{YO2JJK3eqB_JrX{oJqRig&^zylWMGE2D9J>fRW?xxt`ahK4_Ub3(a&I6x8$Ci zkgQe_o1-cbme0Yh54rRsTibm1hgC;A?nf)|iV5Y#h?j`X0rg-HoZC%yu`lobl_0CMV)q z&j)9q@|M4gv}&AU1>F=C7pm^)k^4C0{(n>_R&9&Uq7f24AHF(FLo%+gqmqNYyJ5?NWEq3xPj zt;yr=-`Rk8U_rG)JCrxCtzuV6n?Vpeic@2`BKqYI@2 zxOf~JNGi6)YyY?C`O*IT()jrruADHk!a+yn%Y9#d+-_%ES!J~BIWJOwYpQxTt1OyU zm@Wn(YY3YRpzI>Kl;z?tOCD?>=VrY|_310*&SsC&fnF-=SE>t>U^XY8STMJrG~f?a zf-VS7_g~tYY{mIgnciaXYGXWnP#=6V=<;;LmBI`1HxPp>6wS%%e7AOpJ8vjXf7HVd zcQ6UBFE+)3A=G|1)<)f%iOm^C@bKS;6v($rUyV7AWuxVhsVEx1UxehU+${?U zH?t4BD1AsjWo$=09HXtEq|@7r9oR8%r9HR+wc`Gn9TJvtbyg6{1vz(G4=9Lg)#v?w zlL9JcNyO}Yb~WSD(1ddTJMfjg5R)Pb`jp=I{EO2s$UUAR{DQ9JHYN1)+q}@!&*J=6=j`n?9t*uYr1#!V$a_CD* z5ORS!9U}YQACa8p_PD?_0=NHKKhrBUoLUJUchx=ku=-AVWPJa6x^QA{tiwCXBV?Oc z{59WKWqlrny}Ju<5qJ7{(23Gkx8dES2pVemKHALjw`4;ujge@B?7%gdX)^cpl{?I` zIYtALTbAW~G-mt4o=vi)%4I=v(GX>tcs}Mz!^Be~x~9ksv<@K`@09wv6tTFwPZ9h>OrQ5kXWg=79ybtIkyo zFa?Bw1=WtBNO{FX5CoSD#g&Nj;$V^HREmiX;N%^YO_Q(vwOvCHqE0GnF<>V5&;SdP z#bRCq#McaB5P~LyP=asLWs9xh`~SX`DIw^dj_j9D4o{w;$)QU?3)MVM9i^h_aI%(! zAIigbA=`a>_iX3I-d{SHOl5G>O8{iR(ojH#C3XL43KRp2ToV3>^>1QqIe@X7^5*wP zld3cuAe~QO;;bK#$E@=5lhidId+)GCXU0VKcHpD#5z_ad6<(JG-4 zMvBl7E8rB5Esm9R;ndepmW0rW_va<=0&ts&z@uYZIDC%VEH;I$&KYi&VS=?5SNH{- zpQt15a}!iAimoVuPMlC^$5F6Vdi2Q}VL*q&{U zc@6t#i%hTbD96g~YIJsnXIE>re-k1ujO_M2fm0N$e_rmD+SB|M0~In@zn+hZOWHB^Eqk>egl&LyyK^CCMf zN({(PAw&wu-u>%$p38K@v1D=Vb_SABa?}f*$FEC`nW6^!XSC?0v$;uzqsvWwo_nNn z)8}2z(N#J1-Y4!et!l^i19RoZ3H+W+%c}3UFkEEh>v;y%YC^Hc+caH`e0swb*`c$jc-TUF(G!;((5l88g=rN*BEM_G&Qr9@0#0WyiE##fcw zu?ppq7~`mcQX-v&tM-zszxTNqXM5zy)F|qxl_wkz!}RgLm3i~6K*g=Zym+X?qkVar z3n5KIzDUJTsK^ZWXJ`8Vy%YNbqozb|2@6*^UR_@23wVk^bO_upluxctpE8uMmJi>= zw5Me^nyPPy$i$EHwE zmt7#}19{QmCv|UjHe5fbMAi4zM>nxuGU#v*D>9L4z?D?!7xii7s?YUV&aeVib{vu5}jt2AqS94Y>Vjt`pCqSb{I4T+vmukP@HCrq#PF!upqjd zG6N^;!IAZ**Dt!R$`vDKX^I=JE2UV_^hs&uxW!$WsGN?(2eH{k@Nz4SQPO^glAY*R zuYRaVedVSxVc<<%Q|#W7)g;8$Qm`a76KoO9FD8awsXa^Cc%F;z(JAnI5PQ7V+YWkq zUqvX8A!EcShk2O9_RoZj&^WRZxW?0-tIYm1U26{dxRdc!7!`c2V3!r4{T)hZofJZhQF#i zB##HY^C^ukP;Zg-if}}+gp*?RGPk0u?<;9FLZS%T9_^6kN8C|dN-Y0b9Kd@lt34QP z6H!qfT2^=rWf&>`n|?h`#!I??I=n@-Nw!>hY#RzE?iAD&uy`{MS%H>mV3-E*Fsyd?(w;N#8PG@ z{u=AZ9LU8K|I9|^ElUdTjJ`N9rXnwdvWjAr;lIz4OiS0I^5{7%NN+5y4;~k#oDRt} z{--A*4Q#%ITFJ)7Q|B+DHhygS5 zmvn>Mdq!kqNvl61{fNP8w2r=yt`f69F{#e&+&*;;w3?v)7PaD^tq*=gi~-04#Z7P1%wbGKzj3q#HGo`9=|I2+oKXAHL) zbPV@LSclsqsf980c72QTDhV)yiOmA(c5?ovQ%bG5+w`p$Am}^77E$o_w@$J+ z?AuH<2C?D)CPYuL`VtOe_^+@SDM|aMnq8#(Qf~!N}6a;HMxq z##C?OW5*qg})L+EVa(4c6!H*nn4s=E`q7wjAxu@FQD>ABp z#im+JtiOWDYuXU{TQ=Ar35-+vj6UHj8lH`FH~6ytEjeTDtup!3wy@emr=srvJy-wK zpbHKe3_v(wmeB6k_51mCF9Kg%yRt@ty{iB8*&R5xOn@H^HBfT2Rc%t|ymw;wuMk6p z{_%n2Xpwk`_=FWepP z_Vqfvq#z#AXai}YQ7)BS>2z(^M*Qd~|3q;}aqI7y%kNF+CS{{@e8h=%Yq_VYt<3G? z-qP2<^NH9z;aT7Ey5V>)9LJ?U^c=RB0tK-JRp{qYx=CO7behL4`xK=fHhLNO))&3~ z@#4=zDI8>iCc-^k@af%hf_W}g(E$XO_it0R{CWN4)0o}c6*;kTN!6$%kKB@SU4dB= zawjC}A~8^uRxWKj~@UdWxT zKT6TkiJTX^$SxB?{JF^@MXqXcU?-K;FAuM2iK)p;Vj;wWCMO|z0CEt04J>IFaTY-=?goLF*AdGLsjY~$ZCLH@#KNfhXh zCl~w4b3MQ9c)xg>kGB;ByPUo%LjlU+Q~rf4ivZq3v{%;xyBDi8T+8z^<$KL#fl|hcK?7rs5c49< zsJX!wIj{V3+{R#eWten3Q}kn7Y~&)~?0JwI8)VQwPZsP&Uj3qTjYt#PeM?n!UZkk; zrWs?|R=BDiRO`zQKPNDs!u_Kz`_6r>`itOO64+z}#om!)l!8t)%nuo?AS*(1fZ>_6 zZ~39lt|CS9Eh>$xBWDXu2c1q8hIl$ig{u{F--b#Noze-4LKR69I!g~y3&G6)Ao5rG z3chmxld1YYfvqh~X_8a?{+sWZhhus=r(*`Ry_jsI3~(*f#sUH=-XWIHtxO~^ViHJ- zReJ6SWzs(^$t$Gc0y6( z!16`Fc&}FgFR7^i7H3kPK^ayHq5IZ%#ZM#S-@DFPsiZ$ zI$~iCPBmmHx&9g#Uv&s~c9f@oChOHJkjo{xlc6;P(OpzlTjkX}+0e)%jBlsx!iqiB zyue!C+i$(*{@c{&Duo#Oq6W5*fBm#U8?Bs2%tXyS9-%^2@wU$NI~gB=BfSajvW6b= zrLt=AC*Mee>3GDqG6ltY7Xvcw+JBlVle6*banCS*vsF$WoS6XyW(>Tb`zXggT&tW( zV5Wg-prJjPzmz8kIo4gzn)H)KV1f7v{-+K9NuYJWF@+cuuKRaD&-Y#1iuLq#_AxPC zh~YD5^68wqI7>REP#jK&UO>zQ8Q%Ds3QhzC)v?Z8mkix*t1uzeDlF6IKdD)|{0%M` z4#ovR9_V(yvMH}3efUkz3punZwA;#lm=ix&i))*N`|vI7arMzLs=*nZNYhcCxxEaE z_KRC9^=U?DHsO_MSjGBq-Ar=B0UxSjCcnBDJZ(S5(eNZE?1nl5>F_T`w?9QN>xHe> zNqcD;NqE8vMqzd9gOZWs9ut;DQiTLzIuj=@vk@>es;E>@T*vn1c3(a8KgKgBUX_^J zwueYx1!*%TCUfdwg5|55oYKOyd2+&lIH7^{CM3!Lvz+VLZCs7f-q(9OU%GhvHN)}a z(Zk#jVOS1m)~-wgnQKCpS@8bl_|A)C z8pDki(~g&(;OM{@*= z?=y)7tTvh}=^6$d8@O+u@_BV~INEHxz4+}6RR4P^nICYzb{)G@<#KeUQ%@L7@2pAj zvvG%wb~MY@9ezdI_O{>lCI>ZpKJX_zS=HdroLmh~;$LZ8SttjNNgJ*3r0NV#@`LY@ z_4P2u{ra3*dL&|hNY0|D`o6$RkQ+H@qbE$T-GT2V* zckhfV{om-4x4Pqo4F@x@ zYyFerP>buY>zVD%S#457!N%*znKkhaV6JWJ26#~J3A=$bh=lt*CQsQ&Guv6WkzcPn zgZf0J(iK?Z&^}yP&kO-rMi&%$Ij^+dHcj|0RX;CO+L0`E-hz^Bnj{Zu?Rd- zkl1v`B%PUQ>>2F2&;b+ax_plQRs+@fd=DjjpQ#V36VMSaSfKD{!lgRCt_2tP7MpOe zk~)sPxSE{tR~{twl^%BVZtD!_e6fjVFN#RS(d<*XKqC?${V9^=^@XdE%L^ZgZ|Obl ziqIlgofevy%{h#l%llO`a4a%5DQ6nq9Ommq*cHqc9f5HNeCkTDw{a(azn3bw7SuR( zJKP;-3Wy1jK_s}jkia5;SAPk&@R<}Sk|E=wC;~}>oR?ieo(dF?hwZ~5`Irv*a3t2> zHtEHmv{eL|C^SOyPKWYRuMaEErXMQ7DNUnY4keRc;X&w?FKMl@7h%`(a*fRU{`M(` z%Iu=l|9OvBxgo`8?>8sypd!(cQkvoo-B5}!dR4iR<#ys4DAy!Xp{0g7G^~p8cLMJuW0~Vbc zqe`?I%sJOfMF|Fsh7GQA!5<$;%ZX@zWy?k;st{i@2E!lEM3^$5dhHoR#?kI|6uD_V zsh;V!+)sPuP3HeZk3Wp*{|4zbN(UNv2;m(5EdjKjll1Lz?5nb-*9^w~M9Kc6RJwOX zq$^~{&b=uUii)-ZJ7+|YXf=9hQm@3;tJ}MslmfXy6mSaBD`pUx)?F_A@4R7yBQmD? z`}H-Lp1)HqZzd473c<1d#_1-qC>?Kw^~`~wV^PPXyT~%+5KLl$LpL6=hK?s*9Uz zf4ke+KtQT2-yTK8daxBpViWI9dQ&Zb-hn0uirgU-CWDBA<%S7^p-|(?nVRTF4M_rZ zC02gs82WvQFN2jt^YWT=Bd8Z0h@mv8384ockk%Th z#$=;zNFj%{>wQ6_9&SLjaZ?sPt%4HVsP}-wMJKvbrYDLHKl1!ywz4t4o}6eXxAG^| zuqk)nEFd5PaJ+bKD33>i>E9LJ=WxeZfZWLmu!=Ok?RSu$jdjf!2S0ohU550(?G_DfF9;-bPp3@}r4~nVXDHDkT?Z(EMn+}d~z^L2}LWb$>!AUS8jJ@{xsAO%_|j*ncxlrEp# zg6SANEp=yl(v?FS)Xih}s2DknzGF>$+W_x)-PiYGNRy8n6y9Pio| zBGE<#poRt+%QFBR{h4Weeg(Rw0rgrkSZSR zJ`tFD)dJVKK7t_vpQS)MZa+@A^O^{6B zPOdQ0vp!$l$Ma)LjEg&(V*H8HLp|&=8t;JDg}nb{5u%J#HLJW~29yqdYo|pb`E=B$ zZX!36pj+jSm86*a`QdU@qCLH>>b;cPY_rQJd?T6 zh0E`ylA|}qSIs-8>8fVMXN(-gqWVUKm&`HYi>>lGXSLY}mMgU+;I^93zo0nDOoiH1y!`L&S>#d%m zHsLb|t8{8IBo|2W0(Pd@XjYR)NloP~vZUwBov3sB_iL#ib;;L^DGZKud-j#vZr6&; zTz?oIzgAQ^{J&{}Q~oQ*AF+fDjx5}uNWDS`ef#(Rdg<|+=k7>_y^^(OH-$`Zw@QWC z+tL~Sp1AX+Ly$U$dv zy_gR7rYeQeJNk>0ExONgrV3uculEJdE&oXJ#P(hGGpIrLyfLu9vOlp_eC9Rg1N#Tp zYjCH@bFfGo%3i7$$e(k%M0nRuU~JlOhkEJ>q}DR1jK)}%Ew%|P&nc)GQia6}EiUSQ zNkCVFe7|vR$p)PaBtt$*iPywaheRE1=H#x4m{LnpI^?-grr{MSN%nKMz&Cuyw|#eW z_hc311Vs6-&jfTWAm{M(FJ)%a-%+pQElSK|RG~Gc6iG8=`m@fJHHsHE%!EKvjO4JB`ZVko+*;KX@AhbJ=rQk;Zo!`};Gauq~ z(Wbo;-*`Er>l=T^r!6tX$bnw~SQO-Bs4%{B#kjq&t>lV_2Dkr=)As+AhYwEwek0?j zo0%_w7Dk3ZuqR|mWN84g71=4=FG`tjELoQMAz-~ZMS$DElXj$>kVQgL1Xql~eH(O& zHT7I}`3dBZa`-%4FQQps_n(suvTd?m-mSl#FVSa?zY^kMg=$*+>_7QbmEwXIIHzb9 zO8o2@bmq-3JhcJo54`8WQ3vh)bZAa#7!dG6xF79~t@ic=c_ZC*-3E;lRa9Ns8+?A` zodCTw{wyS;_idMoCCK4J|BW~Q6HaI-F!I2|4CE6$?62#m z`|2;Ub>9$Fj%+@_;>?#_9Sf#>kk8@`-W>XPGr63PF!xaDanh*edaqssrVzpWr z_jcs$r2a#_-0Q8SCyZo2puftT3n2~jVdPJfQP71UT|Cs1AVxqF^Ihca z*i&bgg8I8^se47LG<6kfj)>2}4nJGb9^Y8wWjVaBrle;)GWb@4yOF85R;59e1Zr{! zEFED4tCS^dRUO!}%he7~l4>=!oUmJiUD~ci7**L767YWyF*;^-5l%PEK>v?tkR1c2 zar^jIpm)zNw?dz3xoTtOn@o=Q(49Sp1H;#?m3fHt|m&1Z? zWIWASNqR{2@ABt38g=t%js|MCQ?%dLzNN${MTL^N>e&*pm2tqimAAj8*?Fv{ijI$w}} zxUeh8ES#c*M~}v~k=<>_^6l5VfeKy(?cnc5MkQB_BFM085n^*L3uZ`gZP&4ZT>EhD zAT5@wB4<>gk&kElp}g0$xx&tq^!Kx+B4tEaLo%QqQSR!Fh+bizes`ixM_I+<9JC{V^_|&TlLBm*=N;w`%w7dz$^)s9(>_PWrX7QUo^xh#k+O+ibBA z^uMBW=y~NUn}i4@8cD0Sx{vZmj7D{V!AIIG3@w!I8jw<%$M@i0-sd!x(1-7x8wI9i`)b(gfw&R`zf$Gg#7|+=<90 z4tb0($CVI#CMg22RAb>F@aWh&7T(SM`+sHo`nIx>{Le4wRr^ z5H&yCXfD8O`N`E*r7ei&%YU0|rNO7PeTioIv)*Nm6#f!Ri zcvMw^tF#h(gN1*a1_@&|&vK3VKfU(Pc>Gh03atOVz`H(P-?MLz`}a5JGtf_OJvr;| zI?Ijvb{+NI=kDbxHeRuy*rtk5iqBv=fX^n9*Z|AB-Baqe^rC;rnT~@!Y~Gm?9d@pX z)}XaC%CItE!dVFTNN--&jvG!s&ebkKtASjERH7u4seo49F{GMD&MJp1AIA)aKyuF? zxv0j}*3Hp)A-R&9?|ZZWVs?K#h?pZDqrddLu5&_Yf(a6~)hz-?(@QyHTNZRD0#Ub4 z&BtLPrGc3)TL}?H$O+ul9@5NSqiYTvCV}tebQTHW0&{QVSEn%~LD$zI7_JA`1}en; zpL9aWV=_YB%5$mL0-JrGleGZ^WMP=2C2rzv@JTrXZGOv#8S^okl>b~Ub$*hMGRxIe zd*b{u_%RnpZ&{)1q;Pl4D&n|*12db<$^uRLPqH2x*?RmEdwDFtvQm&>Y&1#7G~CLr z+Sx*ev}jv%PD0E#wBAZtApI^jsp{J3MP%g!f-h}0dmqfXW|smeofPPr;*&uGga1MW zY!6;USK(&|$3OA9LqJk@+^0O|n%>xYiKxtkRtZ^$36qMMVEzdhLq=&o-R7!~WB?H% z&Y#bqO_c7i0k6P4_$LF7?ja!*`&m`dV8HJhEFw&VrgY;fm9t)pS4V3BU+OB!x3HP} z|1k9q+?jAquxOHrZQIGj=ESz`C$??dwr$(CjftI!o!q?Nxo55OA8POJuIjFeJFI8P z#=2TImqsckq{rJINEPY?1!tUbvjwwNN!jYccXJxW0#%S9Ar#ytSbgGN@6wh#6#=t> z7aB}@Su>RiEEL6o!B^b$H~9^YAmdsHU@Xh!?IXHM4yl!3!eA!Z7NAeHewSD1ZcrT zrLm0?cOj`Y9R45gD31R)oS*$#D;6BopEl8w@1@t)_F(j2_i+_ZZgV!LbhXy2hvI@y z;%zmSyQDGLrVxCY&<#VpM9CFHf++i7q5+9Vq$Wl1zBF2+;kn)MzjV%S3) zNEaShz+)BWpB(Wz9z@2deFLsl$k^-^CoaDn2`I3S@kZy(bfv~jskJi8twKsh{^M+A zjAxVsSWHZ$UY~aviJ6^ub>{%uyn~N-bxRe}G$Kv$02kf3iXr}6V)+^=$dP@Ds|LOq z76Rx%;>${#lhtmJ&+hj%nypzhXo!SDB^9m|_9p4R&vn=w=|`DC!{m5AGC?TOS_l^j z-)CqKHYMqByPKn?jFo;APU9_}Q)LX7)Wm$&F8ygW|3 z*=S@*7}|E3#Z`ctti*bb;|#0AOLrP}MYcOOTn}&^54=VgdM8iY;APiUjSDATe06g0 z{cb=s*=#_AfebrZV|lVLk4URYrAVXDBE2pr)+o}-0;P|MRty^|<=uDQEzNn$H^3E28neah~DbiNb+UgpXu;(mJ_0oQlO_+g( zNTxnJzpBRMfyk&NhlUkJhC42alDpFN*cTlyT}~(_9-ta0R{M29+qngGF{Lp6R%z|` zf2uj?4>tYP^;x)4zz6=C`o6r}^Q~Ug>UB@{wk|)?AKX86KD}h0Y$uvjMod(sk)b8J zLHWBR{8P{o@Ju?;Xq4yX4BXz8b8NR#zYWozPQdo!iGY@+p)$atgUKvVR4zuz#@9Z` z_tM4!0hbbWZsWZ9MNGLcNnL^tdUZU!^pw#-`CUj$A@Y9^SEE+_9ubxSI&gB_S1}9_6n`uh8CD^ET|N0 z^^V9(17VhKLxC}kGdmT9gZlUX#4{t>oY*C@wkTW6%54L{-;8AlgBG$%?Ckk@9IT%v zLo5Fo=^!=>_f)GmXVRz#)C<{0WrUKKf*WuEveQIFDX=zC0yq8p!L-@7YylI2Gab(q$|1ByrAroTfUio)bvZ@76dUCLYgHlN@dbKGN% zyyYw$a0QvKc;Nr2!r4j7o=AI&8(3S#C6hXlE*%8_K^y#r-9id_3HGxljh=>$!1b<9 zPPV!lJ?_qOjX|rzDdR!WN=9_ZRn{VOD{i0Bh5Xm7mMWld*3;VUwfxM>+ibUy9SeRT zlV<2Pjn$#M*Q(}~El>#|DLOx|S!3zggP|+;psCz8s%{8g6_M5 z>HF#9f)}696~f>rWJ)_Y6D*QyM9Jo!(9(a1zg|*_s^ho@h0gsu)Lz*V^p*BPOpz03 z>G}QgKd1t60RKdV9Q(_w{|~GAdb4j|thH}Gti2;O#g=8Ot(!T{m8-ZP@EU_E?CGN< zOo@rGX++BYZQe+-3URVR|Dr}WUbUaX<~K;l^(~|}`O0UUV1qFOX7{bNYOD**4b78< zp%bJ}b?+`HuprP5&=Q}c&O4}idP!`K&-|?mN5-abL1Nme2<8rvy#$#N)|iwm^v5~_ z&LNCnQ}sp`Z2&{Rn4D=*Edx87U8V$d0v7Sbtr$4K9v2`I6)PgqRWMHIX(ogb9SW>j z<_M#?7Vxa%lgYRI$wQwx3&KF@ki11vE8^jvWbDi!6`f!&EgB!J?~&vRIV{@5F1_Avi^P4vSHy2>_RmM<`caa9 zG1@z09oPfiafheaGdQlW6w(}zksmvvIS zZY5t)+&_-B5fMR`!0NT$m7Qgbao6HUC|ldWmZ`y&!B@TegK`yFSJ>Lm=ahcJmVtn) z%=P~9JHLtemojOod~2xF>FC8?JATW6w7k)k1-3!*1p)oC5eiSy57=WXjJ5na!sZt# z$5Dr8SmzlKry4DoDM%&%F=U;$i{XhJwp@`NMc|=*0~hEJNMfGY z)zh_N8-=S9@kNP+ohLuuZoTIu0)V{^0=r$9Ypup z8kEhF{5@)SbQKEvr!41e(miQASxm|kHZAhkCRlv_Wl&ykwj-cFCyIvKWF0N_UQUHeF5Y1vZrd$RIp5l`s{L_AirE*;MkGA;! z21LP&m7J+2c3zb@+~fkY}>s{6!Y>XfudV=tMnw#&w0+sz~FO%XRt$xBgmJp;9i{nA&6;->mh*`?3B-L_MsT!wQMf{=^RKof!VWI0B zVhm2I@Pg8br*Da?5@C99_Hjr)B=Cd`E9B&9=$x;!AbKq7KJ6tWmcZY*T=eW@sh-?- zWn}W#J!gmSMFhYGk9zd?pGrXO-?mGs$`O6;JfvyddHC!iVSfEu=ri~Zm+zJlCzXS< zrQPi5oxUeup8}BnD}q{ec9X}SPfp=<%7y}di zs?0dh3#fwfbN^U1u1S znzLj+u~d?SP6-hbin192#$Y5^YZ2*vr;Ke?HXr4ZN(*4noN^X6J~m34v*f&qOpsHg z2;T;-%PGk>cok*HNaCFKcjEp6tX2{bY%*x{MFErjY$>*4tLcAJKOj z_J#FP7(}DxKR;`V>*LdE&2O+-x2kJSUI|{N3VirrjJe^R6Zps0w=*L~!<)M}u($+B!Siiw9ySMi$G}io=*f}>2gnjr^P;jO8Y0YaaVetR1b7$qp|9fq5$n_DIsl57Yrf_{Fi#L-}a=acg zPFUa<^4E~B@0tZlN+Q!sTPl7?MyuLcatm=bYciW;kz}d-f;};>khsUQ_NBA8jNU)` zVK)j9#rZ08*-nOMQ*m)ZLc_j&YB9qEXk^)Q*viR+ig2da_J$*<3Zuza79A+KC_8DN22Aw^oO!OP(BQ{rHhj$V>J(iE{lqT*%e8v za;rlOS=6gDi83($!l_oQ&9t3$yDO|CNx@{+#7X0XYEwP%;h+7Vy-E20ReAkBD{5@A zkU#_Z=H0J9rMZtk+3&LDZ=Rmcw_3+FJ*?7pr976I$z(E-g661@Nno;vgh42tq*9V{ zH=JFg<3I?`>Y(y;<<<|wS8M}-y+l7nFxG*+9$|lF$QxcVeQM~i0e#=Yw8bi+C^@Iz z4ciH@2o4dv+EFr=!YS`A37NCwC#nn=bc0-Af2kC?+}FxIpOe~ultU&Xb55Wby9n0} zMlk}QhmB?NTKI&*4jfVaLEI(JADQSruEWA-oODUOfRls!lXZQ=@x#%>GY3;7^wJlv zL3tEkY3L$F5MsWt;}0*-U6mOIDkmYEV^`I*cE-U*1s63`<7~a5+pP~h8}g)Q=QYgL z$oIUo-BieGP{SBM*r^P^7~Bj&Ft|KxPrk?--&Ar}xsox%Z8y@5v~?z4Nkd>i>7Q38 zPPL_6&WZy#x&t$3YD}^a(?2C)NSNZ=N`&T%O!XxjMqg!0z{=2}!*)r*fbEUy787u( zYtOZ|;r=|Ryq{W?NY}s|vxkEyXn=yS%Wj66@W0U*r>wp`A%JpYcMq(4lsQ_WhNo{VQal*03s<448&=n1nnAFQ;lRo~dT;q`={qY58Bq^F!7#YIaoz z$}~Qz@*-^ZdMJ)`1{EzEY##3?WM;SlbY4x_HH~Zm|M5qqM3lvBy2$u~6GK|(GvK5o z<%i%%5Sx<*8N8)fGja)1gFni8^#&Tp;s>QQ267>%r_y|8N4o)eBy+ZxPFKMj;%Tb` z6CbhB3yOXe3Y!BHH#5gIk=miAs)Q7j0P;TSZi%ilv4N%IZC`WN z3ePoKG4i+4ApCLeE74IrsW#r(Mg9^@jeTzNHy>r=x1?f-NoW&!A!BssaA6t`x1Du(wZYSHls*?^?V;SbnB|6hFpKF{UV?)_5 z@T=b|<&#o+QgY*rA?m_cfUa^Cn8QSxbRooug{)3gFsTSvE}R|3S{ONj%w&uBy1so9 z4W}=v6VZ1<3Ff=4Ie3j=h8UX*=-RZoF?cJ$Biz12eqv46Vvw*gP1LV*Z|FNGqu9)U zT=o3_0rQvN|H!5PYPut|?RQKs%H@5I553k&OsO{C!KChD%v-WT;*U$YqW-fv&z~j! zdI|@xeQptDtvEN$R;rp+fJud3MA?n*Z;s=wa5@?L2%qYBVG<@ZShZo5EZVH%Kj;^! zLaz-7L8~*r`nhOup6NE(Yb)HmF#*aw~ z)gN*ZViA}h#NcfL{C1<&-|!wjey*&i#>4ypvdq&DzS8k5UF8T~CfirxofcoZsY3pt zrd0;Yt`~I_^2G1C&{%7%*kKdCZqfx5aP00qrHNR9EJ>+adHuN3q;ub(4Wg(COhlsf z5|U8tFfA-{nmt#iiLZ|NZY8%*)Se_h?yDIz5f!HFeJk`N#K2VYW8zRi&{IOXNZA64 zesRMV7@PlIJFk=5JXB>V0M^pe$L)h46h=Drv?Peo9+2^dQ!E^;qZpb%MO5^~&R6JH zUMCE0k}Z`O3%UX&dF%?#wX|CQ!l$tygR15EP%WvyY2K4Oo9I7sjx4_i;*Me$+*e?2 zcQuI$micqR0{45Q8nv(fYQdfC2U|rO2ak;O7K>5R_B z>*Us@SqXdbVh!yh-8=sk*`?hQ{~4JB8t~m6;P!yGBdT|PJ3}^P0lq9DZ?)~5o!5_` z+xu=8;n0745FqRebudX`O{;il45*|d`<5ORI16b-jIr1b5kw;W68gv-XnU|@@h zkkb6Xq_a?tN!zhmvI}BFpDm_dzG4dTI|! z>HPWCJbOW2oB5Vw|JBWLpzU~td%Kk}t(=@1Al^rm5I|k|J%B9T959)mSK~}gYmY{K zmckM$<5lx}CPx}^Y)BL}`PjfdJWw(UxkG)i<=vB9G!Dj%vg|Z0h~NIhghnDo+|h3+EH$scTtm{FdnhQB`Pmi{#^lw2ilH1jbKxz^?1IkY&i zNb&BP2pE}hgf{BUZNr_DgtI0*EkxSC7v3x}OCPqF9l4o&G9WAp z${V*Cf|cd5`j57mG}p0Wp&#iR+)*&Q0_K)8Wk|Lnz|QLu8&fx0XKX?b!KT9>v;va)doi!k*oV!`_UG=YrAMhdXOn(; z;kV&?-NDq-iZ$Kuu_tnxntPX?mMPne(0Usc6|V*j*;DsmK@Eh!y!#(WF5mb^Ih7ty zPly`}qAYJJ%I#F<%k7N(24}pahM-|7cjqfLv%qp@AmD+^=(tPySw%Ir1s6zb$Kh}zT+Zc3oQ=U z9#ji@G(>oT%+QHuO8}A94MJ}~lbqa{L0OWBl%rz+&EF@cHBHt)N7^`Rhz{A%f0!C- zOA-z-3m+EtrFtNzD=dqu+w6GWlK_VCNtV=SgV64CB%Sf1o<{s3JY^~}!5YYZTx(k} zE4;-armF_VPvY5E$Z0Gi^eOT7*gi%bHXk&*XyR!7LPr}uYVf=jFu<6D@F_5Jqk#@kC|Qwly~e&<1_ zw4+3S>HyO4+-h*2f_$`f91tjAej+-29rFA{B|cht0YdxB4Q>_z&l!k)d7fi_paKYf z5PIRry_0`S$Mc%0%4V16+(<5$h7Mp9f0jj)Qo*=Mv%+M1tSnp5b1&JpTsCXhuvp9` z++?780|V|yCP*Q7?0tqC+pXm7LLa7lr~r<$TNM8$Odj+W*BiM4pO!1`ohfeY_asC( zK_D1bMCXnd(FqhcEhK|UIky~)D@l-5P`mPg;h=ahPo=XHQa@5K*hh6a&2|I zx}5ic?YLmLf&_uUU7RlGP;Gx-Lvw!d0yk+qw3Fe?xJE4KY?(!Qt_I_$e#Jn~>n8{W z44$4me$AgCW2XW(54$SkY4!I*yGJ&0*sJbXkZHx9K4^okT@miQ1bfp;cAwQ{zB@C0 zYWg6Pi)uK5j50P_SeLxAeE*%Q-qAC8@^$n=rFFa8u|^lpxSQqzK1V-%T9NhttKUFB zuBQKo)MUe^4Ia4QTmAFp{b|47OQ2ReyS&p}yYRYFOa1kn+C9xtRZ#-Je`IKXaER=_ z`k_({#nzNqbA-dsbFYl7U9L#nK4c!uY52#)56lnxMCf>=Qnn~hYq zs^L3LF$P51JL0`mf)5gDCrGRYb%wLkV5<0$;vC79k2QN*^0%gNoOmBw!j~5)Cy`$q zs5m7VzSx%ifD0x`Lm(DutX2i*cK2enonbtZ#z@(cxo-D<_rgg)HyexeB|gQA+S`_Q zA+wJPS|&@_^rb6xpmV44ED!iIm??hqEi#cgNNujOjr#2;-aa3-B(S;o=BbbA0DveV zlrV#Use|L|ChBFT_*1*1{HT+msozm1P*R8D&a)|b{K@vf>9dH|bk#kTFcz5BftWHr znK&M|(?tUF*F^>{phTp8^65`rx23*>{|<-F8nU4nwqe{)2;IkY{;{W84cYDN#6bh? zo<3pUAT|IJ*}|=59t#DjTLh)1IDZ8q2{=0&dKUTA$Hk9+!}oWht|%&0oD$~;_uJOC z#D{X!v^a>vlz@N~80`DHR_B=IT82@?{v(r1USlRQ(p$`6rTylD`)YCTb?IGriKGPI ztTj3lV%~bgQ>%Nkk6{G=I~g_ygsh{Cn(i7`=&zi=-n=&}?A@IR-#Iukc~x~87x)qD zjrd;XTu&ajE5ZVl6Bj(whF*iw%PDZP9;+ojwOh2Un7T^GoU@oqKeJS($?mE@p>w&# zqwG-e85LyzNkLi+<$Gv=v&x%rkIsyU9AArzq!vu$E$6?u|DXxn_kVj!Hf*$zkiX8o zU-Z}SvaP)jJd9hhsAyg{c)ide+HWh=N#?2LpN`B zlJ+NSq$`nJ5-0{pAYk=&Y-*f z)rZW`bL40#D=O!MR3!@kezJK_rRy)jk)M$oR~p(bFa9$gRInQpNmrNX@u?{dp2#Do z5(fGcBX5wUw7PV|5+EjmH)(IJ`l&*aU~g=Qg15a!4wkNw0o8+V_;GgpGT~0k? z{3e$2gnKE+RNI0!xmHa&PZ%YCB;e&zKix&h*Zswc`8Kd|<#v9C7Nw!8Hv{0r;17o* zRW3Jkp;Fu%IIp69-|U>sY*CrL*p*D`??I0=mI!ozL z)z!ZvRinM=(oF52M-3l%@cdP7i$Xbq#gD+V%(E3wc5KBryqh>H>B;j5u^MR+4|&^l zWFw@$mu_*XtnDOosG}SjRy3W^&$ztM=rknuFmZi+k=|ODxtnsrNj6SgmibD4W4_F| z+$`a;F-0CTSmI7=abhao*jtx?6*yxgMT)uCx5j=0W_;^m(f6l%`I7p$>VfyfdgA|L z@V^~PgCEg{k}9~ib#tbt%kAy?Vq>v=brr(;wdajm$52;`FrPg0fMyj%SdCRUfWpR$ z^!VIa&Fbw99g1`~1rT)u@&RBp$en$$B zRqg%om4|d&nf5UHT0pzzGosXD64_sZoIPK791BaCGqmb@RR@*=8W=e?wn&l&kZ{#< z=`=|_FvUxLxxBFdTf%<9gN>-ep*%cpRXDf2+Vt1zrpF~GmE;43ZPBf4SXjI^4`?TD zoLJ#I#9s$Q2}tK6Ifn{5>x=N&KJxhuMdk)M9U=#x%@@*xRs!+Ta+Bk~YfVir?P=I5 z1FK%`jZc;Pmj}p}J%rsXk}Towtdx-co}p4%pUbi!{1iJLCi@RLliQ?lkWr$V~Qk7swX)axJby9T__W7xn)-j{yXoe7oBnjbwGR!o07oz&l({xB+v(CBL=>vXRmV%-`Qyoqn@v^ zM8z8UYm2%h{~jA?V_wz%Br3owWE_X}((3d%ch;3qI-2vt=VVM%aYQeJnvP7nNmX%^ zKo=5?PDk5f#1b=8EWLKbaF^L>IFdhs%$R!Yf%4x-{C?WTiSHfTHt2dSds#-m>?n!M zYSg=8lgi1!;b-CfHRFKmAW8`?MD?&>mW0Gqnv%fidL$VYh1WFJ`lp;~Ln}Gi5LeN# zAM>Op=at!(Ox9{Ck%>Z0CsTnWP)vRzBERd|qXgl&OaH%QFOdHVa6O?D3e?5b>2?W=^JS2N;XMCkG6CqgbQe5s>m4VnZ3BfGx_Waf>DQK)FEAq%gIg7!s9>A}m(1%*L6 zq51Qwmn2~*6CVh0B=>H$1F{LB z^S9@r&Zvk$g3ns=*_zT48N@?+g_7KbMm_LuNS860AwcSoWwos$1$es@vTpD^H?yzG zZ1z{h#*Q|+wL}n98>rMfJm#1O)NVDDb>8Qe6}3>yPxh4$GG&v?vUSwQmjA6x)zvm$ z<5l{bJ3a1MN&m0|1eyBoC3!9<`a)-rAN-P&y6MfXb~`j%db;a+2EScN%JcGmW@n)u~ZIIU9d;IA}H^GLR z%t9iqG(3NdMB|Zvy(XSiL86=COi)j~O}yH#BHAu7mMxkx4R@O~!=++9e|=OGrm#bF zJZeiGc0$*FIo{#R%`Dej{krY?!2q!Q_V*#!ibB4~9Gb+xgmLP6gS5th!OGu>XzQser+|#5vE#{D6?{OQ*ToOv{lnk< z*aRHr3vSVKKYu!NRz98_RC@RR#Jnk&I|KuYHH%4c?ScqF@J@xX1~`pX898$E<2A2NKQ$%s zxbcJ2VDKC&0gGMRbC9EHVgjlWcz;Rd0t))I!u&~(G=&whanZs*xZAkCnWT^ZX&GgA zMZ&CXtF-6Y%ouk)`XfW&o*1g<{XGPM;kcUv{7b+bD_(;B{=Uy?y)-0(lccGH3lc zUGQR~KnORHTXun-h1+bK`CR#G^p$cC#a`(#JceRS z=}I$Pb07G&G4CFd51w?fI-BK;wuFIpBW1%EQg^Cz@StOfa>WMzV9~(Z+MVJNR(aga zX{&E!K?B2};dsF|JQ1+rvhbN5sfD)z$IF^5V&OHiY2%L!s=1E;nBas#_hz?in0-J6 z39_brg4Zt0kUV;!;;5z|aQg_a?Cy4Aw;Qn%#7H!iXl&0k;MaOd!OtvD$|Q1JEo7f*-dR z@s3tjFz5?Ru5XDqV1-ALq*X}hE%mVY$~^r=3e10X;OKsk@+_~dAu{LJmV)76x9Pt{82NvopLoG2-0YpuVR=T<&1o;bbI7@B;} zf*yNi0Z2!`g^M;aMV3H%?Q>t5X7D)Q&Gi-QJW4KrK?3JqGr`cJa9h_lpD(qT7Dc3f z;m5N2xF>Yy=|Ekkh;#h~38!H-YQcdf_M=Q2y9YUMdIAE$e6&&$W_6g3_&>lR1 znxUx8*xSew7(#YJI}~l~@46BYaUNA5;Af+`9!t`!Qy0UuhS9g#dMi@u6IB@ zO~YrZgWc1*=83c`hx+dREBe$f!hy;wJ*7s`U2r-1r7QuHcF0$ z{BZdDn2soqj&K6n39#!g@mV$gceSV*_w~E}#P!l7hgLf@I;`X@?3E(eibBh z{o_1ZXimko+t6Xyxc{0eX5Ps`uF}%B5JjP7>TY_z@Yz=5JL~oO8X*i$vZe)Nwnag3 zE69iQx=-6C~!3{*Vz^3_uCQ$d2Mc1S*1@#i$ky2QUmmpj4dq!)Z@r_Jn7n zR6WuDr~3y-odqyky{${v;uM&ULVx*Wj*Kq6!Vk8z_Uk|HS*%87aGp^d^AP)?S>S#_ z0846vg|)%_;#Y{qA_{3x;&K`mI$%=Qh-@Zh<-Cr)Pj7^exsyu&g*N?~GR>PXQ@jC` z$4sc~=f`mlJpZllS`k=nw3DzHC^f^=N zos&8avw>WNZx#1B)ojkMABHKQ6-?h_ZCLEJCGQWH>_=SgEzhaqFV-*wgZo}W)5WeZ0e>ah-Q$txP6ycaIZ`uP72qYH-^ z#+FNvBcpjqu5gff#{kn7>)(vuu<2q$z4Hx>=>cgI!HrNgPdQa9aaH{o78YttdXX13 z%vC}48X#$FE8EG*gBl6HGa6=zZno{}k=I-F0*@R}IGFB*vX?P7a@s|G3-7?ipm)n2 zBl7^zJnfP;P$103cbMZ*I(ld=XI-V%rb0Tw(>=4#f5joy5R zr**zsV;;4!EDYBh&jR ztKf^?#dFEdwE?Ul_4JKu43mczMT-J+#Tt^ZQKyU|KDvrC>5>(&`P2L%OoIElm9>ve z?6cuN;-L1Sg1o^;rKj3ah0EymVtifg!p1yk+<7^2$fnb04P_D2lMECN4W0#-hTL`3 zz;sB8ONnq%kSLadi4qfwM#h97PiUV50T@XM$I5SHt8SP$55=m12oy8?!S8I?q#OFq zAvM}vf_uFGzQzB@ng58x0EI28i#MO&n{TfNs|N>MrBN?0J-s&X7gJfgyIPs$N>YU& z(zHlGaTxN2=|9oO3jzFbwJpItCRL&fBGPdyE|JMEIY#7#Q*#Z+QXy-jD=H|Em`K&+ zg{5XRs_$I$Q^y9S+16b?vd_|P6|du5Kbrw`3GKAQV7B&vEa}a>whhxTok26YIzEDl z{gqB6o+ufsl zv$U_VW9H=pRf)WU`5ji}zkd##L`z0i zG(zCv_3-f!J0Xjgd`ag?X~Asw#z@q8neH*y0LN-fg1lQZODQhszvo<73u76l3Q*h~g2r3EO?J^@AOXGb-viEj)tmZH zn^qL|D{W%WCjJbzLsB9k5FNz6F-gMK_?+&%(aYSIroUcyy&xPujV~1~X~z5dMHhoA zZB0oR5<nvh*Sc^>}FoST!PtJ+S>ZAy*pRJu9G_COQn9q4%&wZv=g}!GB<-q*@L*)NV_kKJdDOItB zf?l6*KKNRjZ)Tfs#ZDfxy?xPcuDoO_9~+(Bi$Vl!MMtj|f(&Ep?hNnGI2Fjo;2h>V zWZc2v#N!R-fSeXAT^SuRpvbKR{Ff4}HyZFP(H6>?`cGil*^7%edSUl%>s& zIWedq_$(@xgaOEU(M4XSk%0QsDIfYUn-=m4$b}Z%e`<#4m(jgF)LA!lwmGUMSKy<+ zczf&k!1fh#!zM(Ird+o;lA`S5h>#c$HKS4LzY2tZ{CkLyPswYBcpQzLIBLSjX2q?>0~lc>6xbemFcSyF z!;4K7rp7*=6OQy1mD)^uf=W%`$uvUB2Wc0S);VlyFXNEQ+IioVLQJU8nf%$eAnS!e z5C}R%=DL%GLDUc^AFfwBp`LT2(>m$Ro$`^Z{6Zw=dS;b=fe_>(n{g9{EgFU@9uag! zVdePfG9%e;dgt)v|MM7p>|9U_=peC3SgVL35k?V->=m0c%{hbc1JV_n61q_vz=t5UHLD8cBqY)&<-1@iJnuj92MNr0nK z5Pw7goRD%NkTp~pjo|2;Y^NMA27J*R>GT}iRG$?P-LY^q(97O*TjuSMQjwFH_8!|W zQTs--sP7iox!KobE4B2os$*;TLf?6t{pfbc(%{>m9dPJRn&~Bot;+$XJ4saSuyQ$5+l-DdIC93c{6uyp10fUkJ4te$}+{ zOLG^HF)DHLEaYz}9x_7!H!6{2axjb8D)EiCP7&DJC{n^}e15;nc4}7oYw-q}b9)K| z3;xQM!6weft(n=L5uE>0eI7HqgmtOv7cox_)%glx`468zbmR};eUi_RMLjLuFi!x#_k+13B!F$Z)5$jpx znd!8IaE&wDox@7S488j61vvMs)1Pup0d;bayf>8Z*#sYNdzu`ti zHe$zXCUCft2ucwV2AKrJn7=T(jgg`kLeHZvvsJet6RR!tj)9 zkm%DS)ue8q-Wg$ahQos_ zw){TZ@EZHiBjHH>4Jsh+Fs8q-S7_x8CY@_Qu$X#U|L{%JeAKBRMrmFhq_OQi!ma4N zU`_y$_?l+StM?h&;S%9$3^L`#*T`f|Io3rs|D}Qu$Fh{H!{SrSvkppU@;3I+;(hy% zy+W#Jq~uY`V;KGo0h&!e@t0QNqd}4q3n9=TtodZmHd)FvhSQ(qUYJOygW1j;tDu~0 z0rjLObAGp3j+>jq1qPR=J!5T5K=9B z1|M#K&*aV%!ax|pvktII|kg{WV4f=xG`g1k4BlV}jn+_y` z7{6ko|C5zRoQkyhne|DU&`Y*x>~{!KT1=tqWZ`E$G4wVRYAPsAUIdggOeMN%+{tr7 z5?qSNukpU*I1yN4HTA+O7=Q+A(QHsb2~r|T&KQ`gM;(&2&)Gy@A^?fe3|M;jgBF=D z?9;`lL*OGlG2{@*M{M6<>-m+S!T$JQywJS%IDJyrHMLq!!?UP58;*cy{hNEJm0rnRE4A1Lmk`V_6`o5YKE#QRKYQDbl z^WW-fvy07w4g7N#9Yn@=NmoR*lQ9id*j|a^mLaHQT?j#9|1xFGuJnn#9_WrriWm-n zPdMo<^W>stJTqT7AMyk%-NDb#Z~HOTBC8*NKpW)ro&+^)x%j3AoYxJZuI^#XnjHPE z;`Kr1H^{5g2mUAiO>cnS%+eM3K(!B^J!4%{lH{ruKt5sdF9;Kf43e>3)7r3N%qK3e zqGKfOuFT$l-zD}>aD(#w7b`uzO7c$sFYWq$WH^gHz`E)cpfF+dkO&k|4C?0$C`fVH zLRnjwSQoVIyIjo~t)wIpZ%_%1MZV~>Q#Z$p=U9shF^2~I3^tz> zQNVfQsRarlZ&3>qb?W4T2feYUfQQYf#1bY-ovoQW$P!jZfTdt7Aj-5U-DJV40HS=Zuk2KxT;>^p~iDim_fN&EOLm2h3eK z^S!)X!w_by$a)L9oF{g`-e6Gp1$hKDa-4mQ2!u%wld(IRL_~nu(xhN`NemBnoFw*! zR`E7RB_ch~6b(}o`ev_OCz(k_Ug%s3$_^zHAwyq2#t&&UQoH3EB_{Kv1t$V0e6fAc zHR~-vK{}19yEHc@anFm5y>+K_>?R#k#lZ+5d~dq@>a38;L-FFrGokvACL5>;wuTS= zWBe>AfLOS@hID%ztObwII<&v~6#52>pvl-wXpalx0HqipeE5t|f> zz1-*EI@BQnj}T|HU_&yjM%B3LXjV*t47)wdOHqa*DNTRE6XooF7(Jc7h`O#dnBg?l zj;tsY36Dr@GgL&l`$AYht^1mhOhHl{B0h9dQJNWo#nSHn_1+25!f~lrp?__=s((~@ zEfAwfK@AflpU*MO%SizxY~V`Y5I>4EWf@|Si2^Xpm~8vaU>sHWigh$tV7WpST6E(& zTtlm-7LkTUQ_IB}fbMS}rVutIDwq^@w~)bzkuCimwsm1`^IS%3yLB?kqzl<}cUI|) zD(qqf1e%Yzz3o`)!bm{l^3icp0EGB6pA+8r z{qguUng*aBKaqu{+{MOz%(Y^7g!p3vM z1sOLdF;_>FzysSDyLp$A*K=#;7p^E`)1+h>X|JUD=26*|7anT-Vzo$jm2@Q7Av2o8 zDkw!KLu)o=3`DtFp>-z=vrxh)tH~7br(FMqh!5Q z$PHfwfC&(7S;Jm!Wux~2H};(4klXnuydD(emnrg(T_D~1!K*lGpt551WyU4zyf?&C zkTw%2#sk?Y$A>Tm$QRqTUdpur5y!Yb2o&az7abheteD@Mt$T*0P z3mfr~oPk@!WgWb+v07?p969$;w7t_m0s8j)o@e0&^ z0?n2!X?*N&JELO*`)MpD#$vB*dj|%)In^4EC8CuhI0{?2&B}_kMuRawreAle@z}np zuqTE{Bzv9a{|DMYCBMzt=fX2qn#-%(eI!r4^X;bR^7y45*;U)Ansk56cEA7tZ~+=v zujZjxSTt)2gy-hJTKjpt^X0?i-G2&xeg40F^WA>3l@+~Qs=C<8?7_unlLHwrESnTf zN}?NMr9#aF_jIcv2GmYIe|W#=w+|Nd(I+ptxUza+o&2s%J5Fw)6F$uU*ii*k`A}eh8V+M z&pg?C>k=@aL?JK-^oIy?`0U5rFnoRcP#kNc34lhuBG zFCqWhJxltZvQBmHHs!8VB7hNeI=RnSiN#6wpE6_7L0unZ`Ix7|5-~eSkQZY??Gi0C znt5cr(}q?<)SrRYys3c!UXbx=3+_CNbS8p-YS)dcV5RIa73hxgcu~M41%>k@+5rK z+jN|Zm<}|UcjQz8EXvFGh)2g@SW*~s6A)%i1x+4>+1r80a&1@^Jt847D#<1h5M?_! zI0kq6QuJ?8BY~?^f`qzU zT%P=wW0HO`t@`B^|^|qsSY~`E69Bfm)^JtE_Yo$vD^yJe*6UgcOR*Bs6dJ z8stdw06AY-@2UYLRfWr$SU;U6i?$C`@$k$;6#QC{gBqIj5rb5Dr;Vj;huy%eyEhGJE2pw%2V2h{*M32`wT{*0o+cN_o zhubC7IBv3+?o{x5~30yTF@+G6EtFNlamLP1@ipg0I>^i7irnUba<7z&BROq zb>yFJAj14P1CyO~bFh$vMTY+^s2WMjW5dt#@@^IWo6?v9?RXTW_XMKkU^dBLG^jj$ zLSQ$hYk7-{^+S@H&FFZ=$31i{d2P~dmfsSHW^K(AkRZ|xEyO7^uzBx8Yq)e%M%jBc z(y-e232b!#$9tuqmxc!VN2KvrG6$5RJu50JHe1M3DzXuj#D%eat0O%FpqZ>w{*^3EfLtL;hY}8^h;DyAe7=E34AIfUO@yh zZib2+ms^K4hZe(KURLKjjBhgKRjJI!MC$6UaWa)u;Zitda|LZRt=IUT72lu44?;2v z#L6ZhKG1Lh7TB-mp{Qu?7Ww}F?5;H(U0$;fjn?UY+O6m&?Oah&Vp1K@@a(LK;qgnhS{W2Vn2DTw>QYre4CkiJL{TXOy{if9GmKlR4$NIdFI;`T%+ z?b>U!GKId5;dkaNFAc4SC_|>|%W%J9<&TQ9RZ&5_vyNrr&v~BzQ?2a;{~hN{(1ZBD z$?}I>b2NwGy9V~*Nve4=T_2}uJESrPom~DZ{gND+7ihV@I;xLv3varK0h1tzq?9+Kb4MN3%@m+J|H&LZi&wh(44tx*U=4a6j z&!2Ls$ugpdEp9s*zxfe4Gw1yNujUjZxcX-%O(h6T=|LX@1(*(O_+mf@u;oM0hqQ@+ zffQf&-WlvQD4_Bqvvca1&>o@u|7XP>mMxzi`WZ}q3O zaM>^I5xehx$oJQ@b}r+Hx4Cy`^Zd3RpXPVVhwk*-9Os+&9BrB~i7WYicknnVorFY7 zq&~C9nzHT}H+Y=-QYbD08lrF3AJVozC91Vtcgm`;F}Y-9uvP^gDCr;*q>QAKS%}bc zuhU6>BQFzg$~q&DQL2jdZGnt9emYfa8#6yu{P(_k?tpK1)T^H9HyS@hBDrYlu<|(F zX9m*@#^1*(Pd@{+=9sQ?b#tO*3AgEG8!!%2w4BuSrCM zVUILubBxMGYZwVj37G__S+dizt4mill@Z`nn_BY8FmvgwjUih@3FCjd_&C4-00001 zzyS_eujHbjV2n2j`Tf6LVeQ4tw;4F=b$P!qZp4wz)CdU-_F{Ydff4D13LF)-v;rx1 zLpR;!v2iIe6jU-r4ObZC5MDn|BqZeG=Fe{C{=uCCp0IIru4n0r^Nl*DH{@*W947d3 ze7_Y~4vnHkB*F=tes%T#8E<}?$(0B7-NDTNRn6UZKS7nmOeD$TCJ_=q$%NMM?IV*b zzX7-{VP|t^QRhQg>EOR(v59L6(j2;43KWCh5^4w)STcQ*iD?oyD<8`=|q;GbQ{$7J)tcgXBU?TXEY$*c` z--bZGs-@2}Orx7%TLv}onW?q*9ZPX$80QVgC?_#V4`9qZKjSej(d3-rC<-sIq&w#g zQ1S~8Qp2V>@1}lNLgl>=U+eD<@a^AnLiU>a{ljIV(9AV@eXw&atAF*Js-pq?pTo9& zebT{~vE&Uhtf`~guq!3DtHp|(U!Wc%3Mesam-Lf;pNqgz^N>-|yB678I6-;Z`&1G+Wpz78jLI^>HcT=}BIH4uepehq(>lR%@ll|SA znOcTS#}cGzJ3CozW>MzpG#u5%SEY>Zx$12z{ZeNE3`y>xk=ug#BVI8lM*Ha~vh8dc z0>C9sDHN!aiS|NxJ4BBZj%*bmt7)W1lqM!n?X5?H2KAv@NC)N8N-Y2q84R%uZNhZ2 z_y*9HOyq0Oy1{QCh|xt9fraILF=nIhp1MLDxiMrZI|g;y!T<>oO1Gs@A|*CC7&EXc zgc?l7NbMv@zi7^aBpL)->7HR1!n@z{`1p8!O?MoMKp@VMiH8tIPN0T1**9fKDC9|S zgbCzuv*@}K@V}>L0mmpS#&=bYXFkHHL3cvqq@l%L@>4uADnUvhKtgCSlHOoQLkTJ5 zmr_p}{F@K|bLg_5d74X%C4zlTU%$JHxp27N`opZ8Y<J$F z&vn(}X+BHEk7|xgdyCUjL~7Y@%x!KwC+mEt%3sUbR`O~U%fOjd>go>3AOL*5<=q-) zJW@L52Xey#%F)v2l&KdWcV#B~nAQkufjULVp0ZNBeMt`3p$VS+$FEEiQ$-N& zn`7x7P)tYjzlh1t$w{AH4`vI4cX#jcSmqV0<9PddW;#J0_8|rbPCjr~^v7W^@d=_8{hY?&s3oTNPwL}O=iGVGePF*OhnK-Ob_i-4m}(Fa>(S`ubZQrlgjfy zX6_v#_awJH*8@&Z9vM&)hAtD>uAJ8^27(o=Jj3Z+jkmtF6U{V8ryGZuBk3CslIB9v zU$MfkOKD036JHvCz&j7Rb7X+?hVB>-W;Z4#{pdS{UwF@%(Y%Y=+HBzdcC@)IFthi>@!#~s5| zewTL2@cD@SPFW*vb-n`sME2gXx{1n)JGrO6*EZr`$YGaK|eKRi9THd zQbZR?Xivh>CX?NPIGoZE91$}+41G68^vZlE=uUWE5wbk$uUapdv(IS7m= zBqU=-{I#HW?G|gSgbN;4mv)^#fT!F4{Qi%8d)Wl$V&9uX3Z#GN+TidVTc60rMVd^% zv!$|s4^xs90!NqVw&*(7CWo7Q2$7UT$IawK8V(2N@&q1NlY!7{7u*2^CU!TuxokhU zahJ;yfQrOqqs#4jHh~7v@%J};%B0!+_3KqQYe9O+Cdm7J^Fpee;&ZTm7T|kx9u?vR z4yvb_%c1)X&%ZMss$XqmqRZC->ar!$nhy~k`_Dh%$PF*8GV_a5B zaUU+LP-$zWc#?oi%X1m)>-pnYoN8tZ`m=;lZ_eC^V~MUisE^)2a|)h ze!Ixg`%Y?8eF77vjsQ7poX8{>avavuHP*BZuFJ_utEljmj6H8CT4xp`8&#al0jLVw z<;MVWx@+yX#7vP6cUP$LgZWAm8s=q+h&vCiRXW+`Lhc-ohhLd%-@tG+jMxHG6C+Ag zv6!f@G0oPz$zJEG^WLRD57tpdh|zDuD!UG0{njZQ<;dLk{=bdH*@OT90000S0TP}5 z`-H_y{XX?tnR&MP1S4?WSV(+Qfz6VpvO7p5d8{FM?;z<%nfSdXdyeGBL-?o~+3{TKgBpKjtS+Y`6oi5}-p~!y`B0Or z-f1FI*zt0-GFE8IV#lK-c95%Nl!jpM$<<{t&$4{q9T2};1_3zX%!KfB$bs_sh_ay> zRmhA)n%`X{X%c<%b)7)Vw~9(s!ViE(dNLD8WiAoHM*9W={O^sGoI$XApoUK*O~qxX zr5c17QVa!-VnWA}nu0D@h7rkFB!}JPqKjg#-i>#&E23Qtpqd=?QlDPJO{%k(?A6KY zF%es)V_U1qHf&DSBmqk>$dq2YgF?{0eNc#y5>5cHaZ9Yg%tCOjz-`pmwlra8-&A3lw+*7b~9NU{? zOOa9d=a8uhtvg1#rVXXpnU6&r)}VB@vA+CkHq({eNoaP+{+Ml^DHrC7h|x@;$N~EE zrd=k5D*a7f8l_w<{qVCwvip`wd+Lt!>?>xbWMsw!W^o>V=%Ah8lN13GB|j;tNTiIW z%#7g)f_1m9-F(J_Wv$ipVFqM(0Y-z}>kC-v~zJ={D&UQE~3g6&}B8nk887RIz1{!!PUAE*B9a1X`4t+D-%_SEprI zlG-Z=lO&571ZAfmyp$Q_&nD^}s(Ri9NXdNFfMoR%!q3O%>rSiVp}JY>e{b`vOwy6b z2obNX^<|iH0~shI{auXN{6yX^f3(H
    vP_xtjRC)WswnK?KpNVbL2B3LYa;e*g4 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 literal 0 HcmV?d00001 diff --git a/public/glitch/glitch_gallery/assets/blblblbl-D60GLrQ8.mp3 b/public/glitch/glitch_gallery/assets/blblblbl-D60GLrQ8.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..45ff06c45e5ab66ad2ed18b27ea5fabbbb5aadd0 GIT binary patch literal 44488 zcma&NWmp_R(>A)m0*f!OxVsbF3GS{zgKKbt2UvV@_Yj=mE+M$P2G=0Lf)hf5?MI&X zdA}d$oFAw5+H1O}damug=kA*7sv0F(ULfE_5HWQP3=CcxcmM#BvxTFphnb~^g^M*n zjZcai@LwJ7Kb?cii_Y7|!_&dl1;F*cD(V-Nm8-Lx#d`-!C!7Dd*7H9XJ9xS}JG=4m z{O`!%myr&-UM@Onn$iGjuK&vaG=%uL{vT)lN6jNBFZ2JQ`G1f7|8oYQtD__L@=vi} zCZcNLZ7aad`SRi7dO7vK0)LR~{onTgJsLQ;*u8XcUcN~HKy@Pk6%7j;4?;vjMnOeG z$IQaz?tmB{877l3Vpt3pB)Dv1C9pp+Rqx0=r3yM1>B^o~3S!jF8B zpa8(Yi}V60pv1nxr~j_U6nl}EBLcCnukR(2#0?ev{H2S8gM&l)PapSR{r?^KpN8*? z29fLX^6L9b16{tX+^JM=#Ve;KAuF!VWFjF6a-hjS~P5mW#dn1lT6!a*`}C7C$|k@eaDKPRXKz+B{y*j zK~GnpU@}z6OOHnA;dq;j_8y}jCC8ck&4~u;Ky$5%biBm%x}nlW#=Ip9NeyYHY25Ul z6miPz58GD#bDgcYYrS`*Z*7c0mV@2XB#zCsWF6Rwr+az6jL(9+U-fHErfcPBWA{wddu&u;!PUcBI2KKF5vKIugX0;?%Gq+2)mwSHDz-EcEb34 z!&arUJAyp+PNO_nE)t5J9RRg1DB#xQLe3N0=gnA2-VxIO&Wm^$i>;)oZAjcjERN!q ztV#n~)Czz+&8hiQ%~{prkZhk{=JCvY9q&J8-Y@tjpUkki$V9sQLB+&aeH)Iqbm>(l zmKNPQnt_e;1vZx+r1TyD_H!U*03esSFrrv{GZslsoABCb+Sm^!4bY{10ye&H$lj+ZaU=}0l4D-Ur^NoU&i&pP;W?Fj zy^A@Q(W}wCg#6J*G6v3SB{0WR<~3BS4BZH!ft-X3^t~@rbX0;wxb{=;wKgu^3!TPF=mLmqjdIzyfs#^yx~mB4PYs&& zDjE=Ue)3foht#7n>M->DB}kO5l2WdDlJO#+1Znb)MglMUnLqr&ZSVk~5znI5RRW;3 z>m3>Yw z*jF&lJ-JS1+%)M-6#7a#)#gD_2vI;joXaWV;aW zI<>oCsaX=;QTae8C)dRF$->4j2w{laiy5Lmd(d4j`9@@NVV#9tAV6@qAwd@1qyZ#_ zMtN4Q(m6s_49BKs%ie8AxF8UkTRu5p#+_gWPAIsRWD4gyL=gW2?hJ}kqoY>Sg~cks zTHex1yKp(SXlcsT7u=ZI1#1Yn;b}OTZfNqp-A@d@{ZuM2r?zT-u`TVYlQ3`ll@R@B zNk29h`8Go)NeFkG^K(hW5shEIaBjfN7V%LxusU_GDI?~(;p_0Qj(JBg-^KdctLLvt z03;M$wU4dhqd-hd(-R5~es4MFVpa@LU_8A^uM9>EGLoKwF_z|!I&9Mtwe>%`+9BUX z?ruKrD~D(;eXbDDm6N)ZfalkY{~z1WYJW|e+9#B~ zs7gXS3yznRKheLAviS;s;!MHENF)Ms^ddG`4tWh#^VF1deFE$AJ%WhAtO%R<(Oa|t zb(F^};4P*+6d+~Gh3P_TCrxevXqHkkAHa9I_j^@H*kJYMZgKw~aQ6UQWDS+G&Y8-> zn&ZGuZgy}G!lzR*x~}GQZNKX(@S^STTV@Ldg7+kRA@ z7_!JWuN+RK8mrZ;+*azV_3uodr$lxso}3p)X!YeKlf3F!ts%Ik(t_NcQ$KNdpUc_e zsI>FKld`atI$5&C2Veb(^k4opiy^37idImPLhqWCK1~M_piTUBSQK@}sj9x`$+xWO&TwF@Tr%3TIlfJ&>W;b#a#77q6#)N;s-9YgO-l?2r`O(_c z9E*3+h|P$moFT}S_c)f3W2p#Vx1l-eCp&q~FWp)y)>fI|__8&Pcc&irPwd{hQBzDV zH9PkvVS|Te(`yNXW=p>~MvEEA0`4CY&6fWZMyV-KY?IC4r+~ncQ#jo*@p*0i@U+E{Q%Cr}EdzsE80foVeQiiei*`Wi#=c zHGEf9cZ)H)y+b(s-aZEYN&G{D4G~yTcR$cYqycPbYtTWxAQ^bB{eb&i3gD9S1thlB z-YUyU62a)d94XBi=4U1Cj7cTp7w`x3N@|9wf1*KAo^vw$4{(=IJi|9C=LEvEwk!_f zZAED$`Pbn!Q$BevNQpx~!fLnHKezkeRwpM!+9gKwefIMPFf>cr!RkZ1o~A9*8teq& zhkikK$YrBkwBoNf;qc(h71~ktho#Il=L(ZXQFsJv_MO9KoMMGAyQ2{lfI#5I!JhFJ zQ;2w4)&v1`yb+HqBWn($7nm*Vqvx<0MD#i&1I>yoI&u?!G)s4`WJ~wMydg~2241C1 zTN*z1JlriQ$Qt@^9g>HFH6V$5jPE1d0KA>aV=mjF@=$2)Yyrz4g(zP9I$E*zMN%+xZ{kP66O69hI6c99nAD7vQqb zo;`;B?l^wpL}AYv>=@O_KuFn^q+qzC#RaTK=e#5ocefIR@Hu{7RaSd*;Q@d zG4&W!yoKM4=<33TujCxV!SSKHtsE>TbK49mnyx)C?Mf&R3B)T$BOyM7pj@aC4cLJ) zR!7_;6Y`fMF(P9?nH38y@Se&v2O>juH5!jySxzXkF7!E`xLxPyZm~r$C^+WPQO@@# ztEdKn`Sz5brS(qoSEq1B5U8msW6-8LHrWTpqDdKWBTC*jAzCPoYj9C+n@IY=sU5f;yQ4~kI7U~FwB z_(+Uy7|DShd;h(K9e!a3+u)R8+RrNK(1|O}p!^5iZvZZfiqcsFuA>%<<-ci2!`!Pk{YEH@=W8Z%nBuK|tXwbd3MCy#^zSm!nC#T&(ch5tBB#*4_509i5XoLDl&lZ-xE|x9Dl&+oLMuY!yUu`jH_PVbX{LA6wz?X5f`{kU(TeSoR7C38IHys#i#| zr${1ciA)iXDEFtpkX$b-ZGZG<&X`kgfdbYCOX(xAxp0dzC>F<;m25G2E%H~UXJ%^k zeQnF=_2OcoUwPOjII(GbXzuOVnUB~nxUN|L<64{oaOA|*&UVl&37N`UI%)VJDJU^| z+&j4PKuax(L0H@J?;jQ8aF1^s3UP&45fMzCdq$O;@n~34n_%?c>(cYf#a7U#JtTcl|p@F zCihZg=|w=|rWsI+!ShzZTZaK;imY)uEHz+L{CZ7v2ddWAc;aZyMH`E@;4xPn>x%8^ z1UG7$yeN~}Je#kku=?s%8F7bYo|rof>bTcQyx!6-CD^{}b9Ev8IWw&(6e@~0Y#0<%^i3Qig*?ls zfmkw+CQLON2NlpeMoexTfi5B}WK`Zu{pi2=Z`nNqa7}d-YC2n3>p70Rnt4w3&MKxm zdQ$V=l9>!P{3Re1aFpozu6bcY{~L3-tAV{es%W&qpl!^Uud`!j#Cn__6FXUhU|aB@ zJNVFZFnC?!F4+jKBpms*A{##s9W5PD806V5F;zLqjo_53lX8VkoW=7*z#&?1eWQhh zhKkIMiX8=}k4m;9&X4F!B2qN0!iryeRK#?6!>+?$_dd?YXzAXg&**xy&3JCH`Y$I_ zu?wS`e8Am%&;)6#16%OLvfUxiII86QLH^yvaqH_Lc>F8TCkbe-<-vrzIHkMoytp|z z!zcpdx`wdJjw1$APdKf);O!8E1cUq1hQl6h1vdJ_nN>dY$I|wZ^W_gUR?LY8$Ac3j zB^dTYw%}rPo{EdK*}>X6WoIttw92~tvuBmrKj3~r@sXXCY8r?wF`16}TXND+!WC`Y z`Vud)U#azmph1FMwgp@^z(e`%$wsEnqBQARp&TkqMfn!JdJ-Yp{9OSEXT>N;NM=hE-S5)UFB$AU@n z1e}Ri>*!OT*2yr$PWY9DOinB4@ZH0JX`|@E7>_?z8Pc;F=eaXD-4HQJSV>sFQGNs< zWLo-71))&BPQ+~_<*~aH@4AKUd_#(kix?QeR*IE^-ZKVLRfhZ91 zWy-wWm%ORtKbu4E=2H}V2h&m1-?g6RQ+d@=;$Cb8`DEf>CV;o|+itpj_$n0On%@*3 zS)s;1>hubL)d_+&+fZ~Yg;HKF#iXg<(1*Bx_UaE5r%O<#rgLm(wamVyIe{-V1SM-$ z$bg1U4mBRK#iY*o^lIJzEtbfaBn(R(lo59xZITSkAC>TrhVTZhh>=nsHij+(AK~qPYr_+hkY}e^eKU)c97GGs6S7%}^UMjUU6jrrz7r5fLDWSE zfj2@mnsdk)M6lLSFp}pm==@;Ef|{V`3d$mdze7O3Z_i zKnL4tjw$^neAsO*Ge#AgcfG3@Wy40|VmXx=qgp}FMlGhA$3Zq~UN?P+o^oABHeKTV zwso#muI&>GgGvlSW;Z^>+IaNd@zy^(*M$6%M9bwL)qiT&xvYZ#wsQx~A5F|YaWdSLD>$!TUv*~R4DIg%Q zw6k??%ZPoOG_1Ab7PN_>a#h@;yC})>zN@DmctD7lMXqY=Yf;`0leQ9h59;6lYKixH z44(@JSJ8>cq2ai|9s7sUiJadc__ef`O3*m`L38jPifz6lRkOq7(35k-|2bQXCpj`F zrQ(-&1ULH?bL9X>gF%yA<^JEHhm^^fzX2GNVfirifGsVmj{@DqTX#90F{=I2tMocg zw*YH(6n0Q{AT_Ac$sU<%48TyDqNxXXH+>Veqj@fG{r4N6N6ehX}Y3KZx;eh@7i=8Ik$J;KR{AvaClk^VCEgQ ztx7$=p%z%g^L&R{S3IZ=;;@jikBaDMUfgp3Zt4LPtNu{1)`rfa^5f^0$tkj zgayBPk3M+>`YCQ-hCG3wWD@+G82uCJHHL!puUguIngiK{$_&4ximDKv#>05&V*CwQ zCZ}3%ODjKiThj@*=c3!3TQjovDf0bHkn3rE;nye^4T_LXvg8j@Crjv$V_T`-!~oi^ zAc5aPyG3p(KjT=GXr=v*r4)1lDFpI^>{Tkem8y-SJ9rg)+ajY+c{ZyK_=Iv!Q{IOg zi>k%%pJEh$Xx_AmdRMxB1Qko@Ra&&JdyPFW0ge)|I7z0=(2=WwX2&v<~;KD=oW|sls?a)*s;23{Hf?2 zQa4u``Vvo_LLmEg@KoxDZ(KZ9wphIm0=D%v{yKxpN7u*B{mwiG$EsCh#PyS#(#w&W zTiVTymY>K!H5`RZx}MWlA7d76|Lpa2skXLJurBF)d;fY+yC8xZs5|%jne{e|x!DEEyJ) z}e?!1Nv@&JZwhDy}*q+z__6QQ>keLzbrm|lhL*)^v%(2ZOr^xSvsHT zf^T{B!!1n*N2R~ZQNbH2h0?)zMEEV9Hiw5oKrQ^&XLvObU@JR@oiMCEVK=|Mo-jue z!A`c2G>V%PLaa#a#?pqITksbe$J2xg#srH00MoJrZZ(t)N7=R6i@$i?{HTGmJ2|GBA9H9aie8ZPIGmXBrL^}WbaL*~q+!gMMg z+gV!7w28eJRR&ITEsfG7NDAQ$phoHSZp=*tx3$5tSe5ih`1TYSDA-KYS?3?xJR4f<>5n8^yft*&ISP* z0S08KPP31kHFa&;{BOCnje)Z^GTO2Azox{ViQs2D9c1Uh@avqVePMlC%xp@0AQDsD z-XoWGC>=7tkHSKG#r&1q;Go(YsVN=FB4{r*DT}CTpSC3CiOCayT!7WWk&j_2q<=RM z8|;DJi%GiLMI6_jz?w)_7aeQX;(VkA zZkT_W(;OwFZD!VbUZdNECf32TdRR-*kb&9AQuHiSno{&^mt)DV52M2naEb9yys|Kp z%t=bpbg!eI(-5693wM%gw!HNajGrP$J?eS$lH20@!UT%N;qdr0>jQp_Ywgtdkn0K) ziaoL!@~?UW1JOM{raxppw|cZtPnbx^@dG20_A+HjJh=l04zYW!0EdJ-sO^_UNqLNdJC}V zX6N2-`0un>o{Y74m5bcWD9F5W>AFEPV`yYMdpb4e2#LvtIG*a9Rk^R^WAo-M)ACYo z1sy?=Ej0_{`-OLLh`aPA(&1XPeOOEj6M<(^+i$jOuysg4Nir+UVU>O3u5G8wrL#X2 zkK^1&NT1{1)0dW}>`M;)Q3oK1S%A_opbC zpT7>j%AMxM8i3zUN<*sw0B8lGJpfhwpZ|LgC6LNgI}`IfiRESK`ts=v457nK@)VY= z!@)%)Rpm-{Br2vAtwVd4u}81MOEDdx+{UrmCBTTn8_AIb55;Y(G zRO7;0T0P|O>qO#D&r;>C_>e-`5FU3`*s;q5W}nA*CHI%ksXB^l{O9#CLM}6o5V%k zD;MrcS%%;yy*Z#m>SNa&f293Ic!DHHZPMaCBc3F$+jJmNO`D*AAENflf(9H8kdcQl zu45}2`wHV#J)B_mH1)im(MEQewn;^nOA&gvOViQL*1h%Ay36W7ww4*LCu8^}J96!h zOs?JA6@Th#rH?5KODvKI%=)RaE1~#yO(T$uSt!DT$p{+np@A2E4^q=HahqHx} zi%j-!jDa@i3MTVY^fa#wx2i1Gtsb&{SYl}1QGO&_A5m&P+x;vq@fY5n2@dv5ztxB$ zmthYXtTtsV=Jshz&27M}PYu80ax({Ne9loTpavl85`l4N`pbGp9kFK+bMdIZM&re* zK{K3rT0~Z2BAqhQaf#}$`B>7Il&Q2=uhT~)S}h)9Ql#els`ZRk;uoUvj?5!4jS@Oy ze=?Q{A1ig6(nhfEOJRRP(~O`!{v4eZyO@6-oPD1zFf?UpuHxZHN*kpx$6ZpSiFSNK z57md`e<4O>7bQOz?Lh#e5@T!QKzvF3SZMACKj{&@;_aYL6;>645(0L)m1m5nwq>eY zm?U>Cefi>bCI0@^6pGQ0jt}wu!}YB!=O0TS0r)h*3NI;#O8LrT{xXtI>uVAROnf+; zBE#u|t)YYX+yG1LXhu}4D*m-7`9+IQApOPTE6>kV?EV!x;t!ySpLNbeXHc4qWFg7g zOA#!LV^s+}d*u1ZN$Ps9(WWF6QZYKQ++1GRXl*n5vdMt3!X2=;q2-J`nXSCET%x#x zL)QOby%L0_j)=Mf%?OTrtqq5BYp(Z@_7}6x`~kiHpd5g-Jh=sj_mEkN+O%}o+6F`W zY_Pd1kAMZ&O5SU}0OT50u+?^!CX{)CR_U^y8U*b_iqq7b24XC{^+dzKBjS*W$%9JD z0hPm{UdJb+n|JdgKILJm4QZC8s-{5q==5jJG)uivR|>JXk2X@~iu{a+pBp>jPtV<^ zeusAz)>X-IlyS!%o+ZP$U8-NpbJ71j@&CNoQVEqaZY+zN&lOLYC46|V80GA}6x3qV z@EZMO>wiX-EF%eZ%o?&XU+zON6rrX7(Sq{S@#v)aS<`D0y1hGsb1I9S2G=j~U#OVIfc#+B z918f%5Lbv}P;yxBS^YqRp?+E-FEO;r&$-H5<$2?e-(*=8JqD7daYs+dds`#+S{*#*))2PEJNi=mNJnz+Dz@D4B;97vY0_y`wQ zjXOWc>>wt8aZW>&x4Zokg5mksazpg)f`%$6VOj+#X7DyLWxad1A(eT8 z0AI0I{a!AaQs!REw@G`$^1TEU^HI#bqiEo96u!|3Wdc$JUiO1)_QO{H#^Ly2Lj{5j zs{0=`Gd))yYZYQ;5G+}mFn(#a$Qtt^>Bw4zXs}6rtEhQ;tkSI*;rV8=I`*ClR^&N^ z%O|#)Y|v3tDWS9nhyTb?^J=CrWc(DfZ1#BOWK>=35AWCuttAD z3qe=-W!v{xq>mT`2FuF6(O}W?3r|;Gl>z%vI4nkK5~m;S#nqLVoId2Z?OU2hP}_%^ z8vRc9u#ponO`*3}Y)0f66CX6h`?pk|p}1aN8fTpsv`U;6Pi3@m!=ECi_)HCxW3A(a ze#R2A34E|wxPuSq>C!*-m@Yhe&{3d{yyR-ce5H*6*a1Jqtg^JFS2b^1-~(RcDF~>@ zGE4@^o4uUj;at6ahx;CRmGUseQ#CQ-lATNqye*|-&2_c>oDY^dUwf!jM}}Hf);}ly z{w+rFwRzirx>MNrHqLkZ4@s1_V92n^(z>BK-)qsk-=$PD%Ii9B9S)xtmS{OO+sXq? z3zKo)qu1mIv~=^IEJu9FNqP8F%Rouqo-3AFX%5zOrXzRyIkctcLqVV%tQr9T;nC0| z;9V*z6Mh+L7w(ty#KA<#N*o1&G5;;qLnv;%mrC^+>aNgd7V%=*yh=-2V3@o*6)1XM z!06Ui_rli>p&{`3IGg<{vP;0xC(45OXTEn}hV8~u3W``sH1YSGsX;7U;GS{*ufvs8 zekK{XL~F;G3}W$EI)hYW#^cLY%b;21A+YMxCgfX*`5|d1s5Bz-^jH4l$kXE83})p3 z@aDD|^TzAD=CHeLbhL{#lz3K)2iPxk#`0PQ^;01Vj3gkOdV~-+^i$*LV2IW`LK4D7 z9|ogJICH6v#hm3yE?B}_?wHG4;EMOdQ-^{MD0zV zSVOpu)w0-F9b4BDE{Ewv<6DDqY`QL7v`%wQCaWBd!Ys_)=WoU}%ti>M$_8tKCG?t* zaTB@k;qZ#wJgP4+hii*Fa6k283>Mb_s&EMgHo^x*tDdQ+@a+5J6cl6>ebY*TbBtLV zSg&;Gl;+|7*TG0ti2l+CS+Kme)q70~uqtn#zixYK8hUc}P*dLrU5;y^tt;M*OcFY+ zfV8Ds0E`Mbr1;Xv=51cpE3%Xl zSyzK#kioiFWdBGg5{MPrDRPAUhj9R0J#m#94gy+=a)*}EVu)i2pdKcqPM$}|U$=dm zz9Bx=M7OrwP-s37m1-~7?;iYe!-9FKuFU8OkXxFuR!?Q!>pcbm!zzEqm)6fLXZuI&RnBGuw956Mg%|c8#$@Q>&_2S>3FX#ffwj} z<1w#4u&JQGo|DyimiVcJ!w(^R)`K*J0)jZ1rTqEy?zZ8i8iR|TR7^$8vKC>$upcFA zp7L0157lcAU&*;UIs|@aX2HObs~C7tF*k)Q#xK9K2*y4X{Fo*w?Z6Zw=X+PL<@uRS ztx}6&@3&tDX*6rg*?93|AM~#&Ur!gdmQ-z+j6h%G28GEUA&Y?B^7yNF^A?AciN9KF zjXZc>xXssKL3e*UIMVkWOUA`zwI10Y^62!4q>dXK*`1@g^8d( z=PuQ9n27D~()Q_f8*PWUs?KE|*qdP(Dgw=q91In8E6JpX5-KBn#l2v77R-o$hHE?9 zHDX+|lMGpRX&DZGT=2xv!{xK70`}6Pqm_%0A8o^1)^nP$mh8b&sn}r)o)%Y4;TcLZtGCKMZ*<|a6?AcrOmAfHUXdJX(23WT;}*$ zBkKwqmFaocVj%}eyhmpNnC!cchh5h&O;Z_Qd}ErUSMf(?#QrWTCV3gIq-$XIga1qK zFP|*gQL%+Z_&^V#Ly<+o?Vy#SXZV@kWWWp@ek-Qob`$(T9|oJ|wM-0(GKO-oa8(D= z!QDhWdIux$#n6LP*2F_rowKOjEFuYzA1CBxZMYjR+tMn6O(&d$rL+sHRo9w9)1RZ9 z9}f+uoBw=L={WQq|DMD8ZwVc|8en9nKF63u{q;ZSc?xYY6g7v6OSpw(+F>rJJ%_ zy?GWFZDv8-W~3`p1YQUr)7j6I$-Rf2f}oQw33TW2&iNHxwyntPn#0xY>bt8r*lowf=1OinY9~J48~x|SX-J)Uxae`Pv(+J zhdt070H!dd7U$rJMD4pSf%C5JTnXL>g>O;QBXV$&bUC{bd1GUIH;Ju_U)i6=^gky0 z-Bytg;*!g!o|f;MZoyytEAzoCD0aHI#%VUB2!W~MDYNi4OqEZKGtI_4I!|`0 z*Y~>()mJDADiYz0mi|P_BoL2>030M;w@X9I6B&Oh2@#La;&w)PlvEPEQ^HZ&4d%wd zBj2&SkDO=WQ8#Qvrgu=-PzVy3B0y$Tj!z^7o?M=KeMR7l`xC#M{s|?qqw2#A@)@JSF^R=W~&8#B0L6s z5^(V`%*+84++w)i3#9+Yo(ll@?@P{?+jZyig*_RBe7AEK2W^_|!^b?X`3~a&8x#Db zGJZl%jz6tF{b{c{fWuwSqQfAi4NaMqfjkIExq7Kch;+g|6QW|6CofqPRAhwjh6M$V z?v(uPL_U}37-c_7xG8{ULsxbpPC{U$Z)QC+8!#65ZL!>C-X4fT2E~9M( z((s9yGbAqzvw@}OxjKK8D^)#2`vZ+iuJ;>Fnys?f>Yf?>qCq|IUp5ti34C)yoCfA! zNEt}E=b+RW{7H!Goqol#-f}ABk8Fkz1exhp&3R7NHgG1X*()2C7y#sGfcqEjinmd& z5h}!f$ys??xdzpyWukWDhWXi+?6C=F{kM9Jws$@Y3#Cnl=qrw3Cd#~KiA>h>V2=Br zuf*0QrIe>o5T)^LwEwXO4gj;f?Cr#{Xz4$fca_v`1}uHb&d-0AzgNB6ei%0)ZHyOc z9~LqYf_OcbI@j%9{3+d*9f1Z3z$~gI2gXjuBF+);vTYE#d5PXeF4KgC5z8TjA!OO( z2_;2GAQpb)tG`_M)>!b@ZmAcMCUI?Kb(;-%W>OHXKNCy8bAl+_zlUVMSL)H1*-j4Te_68p2D+ol9=-1;1S-p|&9{9!IpETW~=(kV) z)XB~54CjtNDRj`waSJvgy7%dI6;*adO5K6fjoB*zmJz_*)lXs&Kk)aLGE1mDl`I7# z7q9?S&TzCq()4wJ>K}WqpkPx`jWhb&BD>m`$N+8ghK=J4TEf6PdvXHSN?Znb&?tMv@+ba%;Tz*jn3$1+!`0PJPK2IdJ(_uWZ z@9@3%u;u4f)j}wF15}ZTG2vUm--;6&T2llK_3V0u*^Xa=VE!ouOJ zHqD)pTVL577c@!KFZhr0=K4HjGj#~5?rpprrA1qh(JPn1M%#`MoUPd&>N7GN!oVV2 z$|u(;s)xEw%GwNHI}Q7@w;0-b-@XR72AtOx>2HlpPShr_AGPni3%brUef?6B1i#oS zakl8ndFL+$8CopB4O{%8CDjcAcU>bP1FS+NTd6G$fhWyidrjIG=c?$8Da3=@a053+ zC^7MhI3O|ibz|DjX8Po1*;LiX&FAiwd^^I#D$eM}uQog^ug4O93ipXGY(c!oR$$R`bZLm(p8JUV(9VDCXb(0Ux!iRgW(V zIk_+xTPipb8R})D(2$k>mYB?HY=!;14lZ3CRu^1o+Ma1n#Y8(807%IF<_%3%!__ zn6qn3RU3SWiLwZ5gr_z@%r5MA!dR9#VR|B^X;D1N<7QbjbVu43MjI1^%+`f_s!Q_R zd+{mZGF0mu!#1R#&2kT^c#Zq>`HikNAQdKuuHF(`hVTWh75sPJT&qE?@zNGeRARVz z0I^bIDD(CEe>UzOfQR6vRNaNOv(3cPm08%#nq*I;=os7F76bv^fH1YKagjkn6_klQ zjLMm63t#xRe4a+y0OElkhbM(bzpHkr1z_qi339=k6}?q5{XdggOg|X`MR&EhF|{yg zEkGK4Q;YmJaG6*7F-f{K)RW2%N(v>N3+Fe3KGW~Sz0`czdC5z^*~H5eYptCkvoLYI zs`fGK4KHGnvgArdcq#v^WVopx+eg)3QZ6i7O=x+lbI8;R@0 zj~Q03#l-Y{PyG5X7&smYc#6>cbN)1Ye#W#_x-g)`qqv~I8_t)1aZr?B1#5?m=f?ij zjxpFdFL4C@1K}KiLm{egO1-!<#l+kdRcJknnQOSJP+1_&6Lt91R-7i^POImBMHv3lNt1grK!UHd2G;_Rbrr``fTCffJq zfTgBt?S)C>;c3gY55D*_J|&TS6#Tr70wvX0Xl@mP`_-9y1$lD4KtK}7;35e&M}j36 z7zn`7;&V+b#|IO)lmSP%G>>qlL#Icx!!mQrdhyM1ok!Orxu_)@xDXVnvhFdM=_LnJ z5QoCOX@rc;50EpVT9Wgif?^DM9i&)Vq#U&v0M81e5C(wMiicidlsY9gO&O^=-N1~C z7==!1;lE697Zj}~fmpN@GV#AKfxG{Y55DX`tU*f?7<*z7R%vADxO z1AGO=0sRoYje@eN)E~h4rKO1IZ}Tf)rRB6X>4shmF)h%^iSI;mnG60$NA|Y1hG9J% zi5+^PXL0z`M|u^u z046x`oQ0MHy9B_JB6-(I-i$=qt|1==^5Hc*&~EnK6u$xinrhj{2}U}hAp8&~#Z|(n zJjYnu=9z(s4^mSE7yGfkR}1(SzKcvYoq74wxW6JLWTx8$RJIKhpPHV#UvtD?1RE~8 z=C-!Kd$J;Ef*52ul?4wu+|~4#wV9k~+{7908UE>kKf)`WpCeeUkbo$D65nM-BLS%B z=8O>YSEO3p(s#Z9f-k4Y_JQ_Hdf;}Ygx5<~P5BjLi$GQ6O>Sj_}3veXuTvn|fx z9Wld8MDY$FQafQ)b4>nD(+Zb3u>U&~pn>^Kb0qyWGDp**a66-^)#Js(I{ekMvE42f zFAMipVbO$2Kg@=Ajh065QDiesOEmatQ*&1;EDCRdhc4y8|9!hl?R!>2;eoE6l;kha z#R6{G+v^$%7(oY{c|C^AO3rP9>S+_WwZZW6gH`f> ztKkO}pF!p&@aMd1!t22QIVQ01JtD=|igGNojb68zu_l@Vo)lLESaw7*#FT)?h+W`q zZHVOfz||!yMdFg5wzCnlmn&ICKoo4!pS=XXd&*Mq0S~IwZ}1lT^QE zc|$$wVMo4*o{dA3!>oU!V3YQh+i-0(V1$99eKhjqT;X?+iHUCe`2lY6$wJ_7C1qy4 zdq_bJsIoU{Kiw>bF^B+}OOx5U3SAbEQ1Mc2iiFZNO{@7jX0+dkT&U$c>Fj!x)V-b(4^&Cqp4x$~Ixj?_rCpw!gJ5Rp~?cins=6wGofoQ|&@& zV`7+vv;Z1g96eCr^cg=o+n?n6Y)!nm9;zy2%_LjZp|mkfLzyEzGD<@W$*%o0CJpz0 zPV-*?zH{+Q9@4dl_mu;G2Ei}K`_5Nl_GOo8gOs9!ol_-Ia>kEA4d~5ougN(GxiX?J zSaYyq3@n-QtVnOg$wS{DzptTs;GdtIVdaJYtSC&VEcP&>NK>R^k25@V{lG$hZ(;F! zX}ze?a&rgycQN5a|QBkw74%L<~+EABqUASE3&ak|L=LpIjz)u5y@O z34W4SZvmtc(<>z#IFe zy8Y#~04V-nEv1^0HH$-LmX-{flHTK8jMum;9yD)w`8cm|UPrk3k?4E(Aqgqn(V+F> ziYEwdq<(-Cn0CL>!#vS>h$87f7n-(aNG|1n)G=>YHr7+5g>? zJ|%U-woCX^&|4D>{w=1QJF{c4>ZoX-rDQ*=D67_o$7*MQ4lW4ffZ3{%)1HK+SgL=xUP@i}9&O5Yo!B@Zvu6eA|bvmCrp=6XQ|7PB@x)JDN&fbw^s)Bq20?r9vem z6XUPe3r=8Fp@x`|BXOpFC9*>8i$qRD$3lv3h^Yh8v6KqSC&lB!S&F>vKbbyb0YoMun$RNgG_GcHP|3HJ0YA%mNYc zU06F-32EqCs*b?T*WjJ|zZ{ft?jPL=%<|}GxKchAOj@GwN%z`B@t|d8;DW4DhfRkE ztkl?Lh#6z+;D-$Xe-0ih?2rald!Fhpj{Vw{%r8ym!axLcC-4LI*+nlscOVMTNqPl9 z(Z?dCH2-Iijaxk_@FRkH^5QErDIkDw)DM}0-W1VovK2+)CwGQ^_xE$TzYWBn3P~?% zAML)qg(&~TDRlLLb3we{5Sl}Ew`j?z)W!^-pL?!?L!1Ma7~5bEp+QjyODmHJnhKL% zMlBWpY}^BswA4qgrc12oD-ZK+TT!5%@lV`}Td%iQJ`(V!si`xr7E2C3E>`?J_roa_U;1;I+sMofRk+l-Q&0`R{)V>|GaKpKleQ}HW_B0*rNe5S`Hzc;7Pmd9gGlvLi z>f`G)CB+8b7gHdE#D*bY+|R#-vYxGs3Xo8dZTZcCWOKjP5b9~GaVU>iXQgCpalHA@FlXAOU3xa;zj0dS&OwP5HY6Aa@q+CgLqpR&|PHV>oJq zWQcO*q#nm_|3MdtUvsUrz(x(w0w}5?oOaui_Tx9L))x0y&Z8VM!GDJq%fLKip?#i8 z5T&nX4Yz04Vy^oOTq2x}tO15}Bdakz%N?bvX)XRA6b4$_+wiOI7uw!{?ieDYo5qLa zk;344>*A>_>UN=eOCJW6aLy z+u9Y8U9qc=<#j17*g$I5jo$D2+q&FQAq!$gE0My8(l%Hr!uNzUBJ(K)jsq$T(W+0j5o z^>T#civqw+L-V}HV;J@KsRa_rsZZ!giZa;1=wdC&!AMOM@Scp?qcswlB(IHusk}l4 z!9Tlr0l@tSHoML)0Sil4NfEmei4LpLcuIMTF(q^Ks`h?$<=ZQxAA_~`-&8dngE!5- z!E;&Kl-E4w`p49UrAYn{OIH=pR@W_)V8MgCOVQ%)?i6=-DGsI3Qi8j?l;TctDDLhQ zXmO{w6xUq({WlMJ&zzOD_L(&^n~=R^by2tMYHo7>bn5Y&m}CBE4jvXlBZo{a878{D z*N@n8PNsMo1Z`{iMb1-1DIoCeIS7Eli9u**2CcJ{$FfWXjEOdL#nimHHVbDLY9^cjNRL|;y2OMwzIwo%b1pzKOou;$V+}yL>7iAOVgt`2 zl?tG;0x-{V2M2b;arzoj0_AnZ`n@^TfI<*@pUw9JW zdLUh&Y!?XB^`57G(h*our0Ze4KMO&406g1el?L(*t5Jzwv?udHxcy~TS3V%2}ntaQ+ zxYhw!Tq>_GP+oSF7i#vy0?=<>VLY#g*xg#Pm)E9s5kXe9&6HvVbMXH(B=qZYi1=e@ zh2@9!e*@(K05KO(I;q990MXlvG~~0~rn>)OU2S83;iUU8zZo%2D1H5o4?)!3=Bq&0 zrRvksH3p{2LIfP#>6@fjJ2_>QfV4}amlIiV=$=W7QN<4`vW$!os#7ZoG3B19?Xcp! zHT6%iymWd)kNhkZhQu2jxGntMRL*!#bOpQb0)JNT5c5fhCMsRz!P|kz@jE5(eTiC= zqq>9D>@g1;8O{3+7$&$ZyS&%w84CWG-Y=dhx{{H_%ORxT@=J5{?fPeI2`J?>MTJWI zPPS7FDRpPp3do&%AQ!c;tZFy!{pAIN-CNda6pRZcD&iFCdCU(N)f$h8S(E-v=FIKW z+=@`O{nz8p0eI*hawqIF4$0r`{hBaSYJw?l?Eqmusf5xU@o;6?4SnLNxLWENW^@9; z<0~!7hL*j0KqN%(k`vdLKFh+%s*n**gil7_OOnc72&6Lj@$t_Y?9IJXbtQ-d9}P6L z3^#qh!uGVzBuX_@eA1;VRP4aQDNr}#nJ6^f6<6L#`?_bDBGKopriSO(|(%h_%kDLO9(?_Rt3}MevjBtG#bKxY3Rfc>+mp z?T{{|ww$PfHvW`F`?odm1V%i1^P}?{PoW3ck2Y>!@flBvd6$9cK~#JuN7cf( zmZ+SGrc&We+)YW)>sI*sVFVBCPaF?|r?q-VsJ7nMK(F(jq1!$J4v4~OiI~I`V9C;~ z!5RKPrWsqn`(0%%X1;Ex|GmVmakymbvag6qS~yAKD60u={7a!_Gb48$vJsim84N zT?IiF%}UNf6^+&B6?qRFV7IiV<}cXJ!{L}ENGfefeBZt7w2tN1j;?DC#?S2IEe zj@&4$u~}MAZS{rfgh-CopLD-ezAImlvgFv93ThNKQoGcm&XbW%mr%yP{a!N zv49%|mQY2^mKf^Y?rTu5-Dw}&_q0spg@U(UKR2fbw|~!&VYdo>5~hfBDkrwmAY-xlLI;y4IvIs;52w zKj1C_xKv3>CyfLS0(JJU$27TA%?9KI(1u0+#^rBW>+&jf#Qa_Qw|`GR<$>&k7JleANr?Z* zW+0Up_Tdm#9gXWV`NdWGT^pA|RzG}5U&>FKheMhE2tad;av2^L%*r*uQ=hJ+zR~H@W3kthFQWa= z)OP~F##2!`=|IhQXR#M4$#^PtQcUgr9XGl>_G+6;MQ;~tTY{-kbbP|ZcRxg$s#GsY zp4p(xFgr7SY#nW9>Zd)y^NU4|+mj^}wJE~$nRPk5tNxTxb=MCX49^cG^f^#-=Rq0E zlwTyDS{TQonGOZioeR=8P1`Y$%GG@THd`8RDflrMi46j2c-Gr#<-7``7O{O>AX_Ns zTMw7|(%jmP+W|tEnfJX}@Sx<*>*y`yAgplXD#Ra87 z`#h0;q`*_BJElf=or3JkLJ}>A)D?RCmrhyP8W4tsjM^#Ie?{IpfcIQ*O_e<7sh0m$ z+&%!)i&dqv2xE(tk)g3U?`emk?5}g!!zGv4dWXUhe|>gU>40AWB3zBAqzGb&8pKYI zIbw*Gt|EKBJfdJGN>ZQ8j43s-Q0bi;lSNs=h;U^dQOn6=+*oM(6FYfB4i`7$o7xI| z_}$Xj?VNyQulkkU-(hU_8Lywtr51u?j9_>;YEAfQ_OfyAj@EPtgBkKjMg#&5eEMBP zykdkhA%s7-CR&?0=Ri6oQ_+mTO)(G8Ma#BNGsz>^p(OF^3#IJ$Vuv8P=?x!Z3R`v_ z0u@Dke6Cy)r$e|q<8gnyD-}ngN$c`zT;GtsPb(Ci(VtSeT4a@j3)S7V;=}0sX!{KO zh*HApW93=hg&*}r*qsGTi@sp{e$DO&&DJiX; zOn>oDG0plCDFo*ab>jk#BztC)<=t&z&zfSm6R^wnP8so!9En2KS($CUwWSXUEn)4e z7Zh9cH{4!v9-lu$b4MHC5pYK0a>Z4~^lVjyEx2p~j`L`Skg*@$rZcF!8&HDL6+35s zO1S6wk~0yvD5n4yLkrNXk>&ZByA3>w&F(MIwgxH?d5c)m+|PbKi)gJ){0T7#mympG z`bt@S+Uk^E{6mg4b8bLKzz4g%oTu}De$xUM%J>Yc`m4m0uB^|$A4OgP_a^-Nze#)y zz%R;DIBEa6WnKMG^_U%ponjS@DK0gchv88M)bVqVOjkmbty zqYn->)-xjNow`*zNZOb|V;cWy{|y%9AT%TkpFUs2fOf|Hy%B{it4^LUdQox7g3OEx zRjG_lA}!jj|4r3IMVmF;ArlKK2C*djY&0*@^~bp{gG=Q+dU*-r1{9g7@2IGDjc)$uJApSFfr*CU}|{DxHg zOG%MZw>m;LFMw(d9noMog9UD-5I5a*8dsb$iC-;1Ey`e-$8J~Ow`A9PLAZ=6%AgRo(4#<0(~b%=LjX`RBSjFK zwEptHl`&)n_n%)30Mzyo$#KoL`HH%H^M-O(OT9>_5XrR5Lw^jd+8pQBqA(jZtJA8} z*voqtaRielf{<{faJv!Sji*a9;Fc+~h;Q`Fu-4M?M|i@gL+;c_M-sOa@0okIH2Y2a zuz6`*K>fwqYIibm3`KMgM^97FVKcM45RJQ=WW>-|ej?*2uFKaQMe`%<@8C{yyrgwF zu^(KL*Quk8KWr*wC1ab&^tp_3z_#Za%TZ9RH&C^s_tK+QhMFc~9TI?>>|YxUp~TwA z22$UmK%I(%K`OgpSILl42sL)gAbf6gH&neJa3gWvE69<004%(GRJ`E{`3KzVYucvw zyAw*Ue75h5Jcalx5zdMI6~z8O{SU%q(cLBgwycL!3lG<@#W7vSR}9x^d2p}z&qY@( z2riYF3$ccIE*Q7rQ;WSuUeL}Ki1@$s{kBN$up_3@lP6%Am-Rk-g0pF@{B*1G)IsN|FP(AB~`9^;Ghvn(J^9jVcX-Dgyl4GG2B^2vk zTj`{5CSUyRfnOo<)ur}!;;?g?d*Tyy&OYVh*9h2lQZ~PD(=4;lslrNrd^+w%r6TOg z-P`*BVnsoO7tMu=t_zIDhk0cCDqgwC+@G#QtSNIyZ_YsA>=sDzdCf2Zc9^!-mXg7M zcdok+9ffbBcp`+$i+k92kvZ%f$&8X#7BYF3EW_}3#l6mj*_J}vH9W?KPcq1YOYQQ9 z#uC5XeLV{;(B;zX{T^Xoyc4?R5bMR!1-rCMZm!9_g8%I&>%PUF>{F1(vIo1_Gn&sH z9({M4M@orHj8@4ZULw1Ho&eN-Bf?Ft2p$I!lZx7V!$+7>SVnzel7}Ial#gZqNyDz8kXmo` zhRfA!>R;T9!U2|G=JCbyGi(}896$^?#qXr=JK`+!k$5j zc8KtBR>%qo0z*n&@(OGL$JASd>Shvf4T?%=QHWqU%TtB2VcXQ{3&90Eh1P|EL)G_> zQ$Nvot$+Rq6Ffw&xaWJWwQq7IxwkeJ$fH+JBuY$+K&wC7=JVum^t#6<&c{SjlQ9rN*cSUopG%q~pC1w+Zed@oc@IXD zpcXKOOl|=`k6_L-K>Ky>{%n`=Vveq z;t!ELWp<|xjXf+7an`mp4J$jc|skwO(8DEWzi2x_@=KPnQA3` zU1nV+bM^dbjZi!@2w#{710)=VQCJqwV*>E9gvXq_LN0)VdLJ0(xmP-L-@6PWVUQ_x z!DdhI!w-M_ct|T_m*%i3UBnHPc4H^@GWK8fhc&GI;ue)K?&%3|8Zbjuy(yK%G{vwc6Bc&kpjG)hCmdS6R7T++UKEFgSQP zYlLnvK`0_{;5fY}K=s_0%(g#w4y*$k^?|exVoDV^Qga1I(jW*IBfQIA%?J4010lQghpfOzej`+v`+X7-u zerqlT0@O$nwU*31@XhEYkk9VWDI(A+8#eag=>^!=Vb7-_@OmD>gyM~sI3Ta?8;SH$ z+J^^^)~}}Mmwzm~2Zsc`Muqpy0(*@qIxd>NGydf@o`-#zs%LCEgMu+>;lGh;zJyWRrM7qUB`dE`LdplUArSBrT#_@93s zl84IDW(Q(gEa-;=*o{ZrgKMYvCeX7lg5{{iQAf|t=VJqhXy*QT%Tn(XGxq%b2x9_AE_yt;nX@34oL zx7s+FM{&c{LxhQwP48<1Wid)JUK(BDf$;Gpy~y;SEy>_4aCE>yd2Kv)qOH6<>LEdX zBu*>?l5wt5WIpO#0Xu*nE$$;nty&^6%dMCc$Cx!jFD8N8coJ@FEJS52Hzp%d?NV8(FTOIA(893q!;uuL3 zeAj+Ho$YoKPyk*yTAg!-D(VxgBOu(G zlVnHB8=}}^O~&rP_UTAdeP?JmhJJ41+tcdu)r?8|f_>i(F6bWvd<}qj2`QbB@#Pbg z*mX40pbajL8N7=QksY%M9Kew9>NmuDsnHpO$ z`T;0KgLAiTNmmbe*S%FJpL)PBTju!V!7z_eY?Ue@|HQBidRQ5gv-=~31^eJqGliKf z=+#)LkcXNBiT>$?w~+ zCE00t%KquiDv3==2T&h$S+{@nDhBpsI68p+?I9x|P=ZWzgE+~?!1#7Y95QKInzko? zu3J-g4x);$1sv2W3hn?E(SA3r6(N$0Ghq979Zz|VOKzy7I~ukT|AECk%_)1Fn*Zpo zq<=UY)RJ2%M`W^|e`$xw`VoX`@UQO`6-LXSfiXww;W`U`;{V#O z9ipP+AHI-=D|Rskzw zA`QA}F%+fO(ZJB9iNz_Z+w)`RBzaf__CO00|AG)LQRv5(7yxHdPJm*Kr=D;|785LM zg;YHWtbzeh!ig6Te7WUwUq0?3R_7cubw}AdP?w$X(tq2hTPXHF$BPJ-1yu>7UrByp z7HsHIq_=K<8SYSZk~FeyNE%lwS2Cj&neV*)zGyxx45cmSJv8W(uJId;xuhoJCz#u_ zhP(MM*tJmFye=`p15%P&#sk3+tfjOOasB{SSinUwEq;Nbh)@99 zHteu#^~vS?pG%|eing5s^xvH*bpqVPD2FV3+9}dBb`VJ zlV8TVHBrR?eX*`nF~4X>`%a?(dyHilj6Q|*E5m6D#0DToBhYs0YjBh>rFPOQVe>jN zy@oD|ax)Rux*a1XwvRpA_tEyUvIus4Hf>4U`Ul)C0NYPO;iLmApZ9guSCm>A&pvhF za_(+O8{+kogQf5dtZRZjN=ZxmuV-O!s4#hDpk9YX*SDs~!e+NX)V?kc>&jGK8K;dc zY9dK0GbXl`Lns0g!Uq?R#1&MgK)KR&kbPTWpeA>U^3H)AgB1dypedm#hOm9N>P~*6 z4v7KNPo1hnA@n?gv^4|&hw<{NG_nukcx|7ay5o$Z!Lb&qJh}4T!v{Iv7YB&9n1q0O z+Uh6PiM^E-hP{(~IVv?Zq{@E+q$^PB-phjIj&hlZh?-pLyIz3N8HEF5SP@tOkS&NN zJz@kE8?8m>GzS^hsjd?h;^r7PTP0}7{e^@Cp9130IU|PuIdRXPm-w^M6vxZl`(D{J z1R8g*p>^$!hB?CBo5HIcH1XKL++}K11$)!xe~tbQfK?_W_uAt&pWiU}CFd75r`axE z3--5t@K0N&9J{wWYKna3u|ihC*Y?|8c12?)6~xNGAoA(wMl+zO-;Wp6h#CE=u=RWI zt3bXQE?;y@g&|fht}553 zWd~yBX-^|t<*hRQ4%x+BP*XQt$HX&Vc464L2D>!%$g7(qC*VlD9xy9PT;?(Ic` z9{L8oJ|mbejtsq=F2nca&u#zm9}#Y+l300TG9!lTLVVCi+BLOXoMye+6 z6^_%AOFxO}hgB}1d%gBN8X?D5dyQrZa#bvZo;e*xgkF3~#eHEKhL<(30E3#;3MU}qPH>|p0k>v$J($Ok&dJcgi=2J>%bVXmY;M!C`Yau}_ZSrJG2mw-XKXH}*eP5{<&GSUd}0 zCGRiA8f}Rv;Waerg5|8O)(kbExc~qO{CxR85O$#$WMmS@BB*5*-%2{dGUhoz3dx!5 zvU-Gc!(egT;o)mu>QE==C=_;E+;RJ$8#=Sx+O*fS-gvHj9PqiKSv-`hr*96>56y#I z_s5F`?dL$I2Wbgy5br!f(jCN&GKsKjnqq5$so?Nu!X<{f0|sg=hXKLcq)Lf<1!nr= zoK`sv3Eo@v#x%W2DLQDCr(~ezn={rES`s^{Cw*(tJIEjF`{^G%28JCJny%KM>BK=+{7zV|J&5%B(k?H8lu=bMT%XRM1_- z^qq3q)t90#^&wLuG_E}^`fc)Fi(C^Jtw;LRyzyfSxm}9w^Xk})X*87!$*m5?1~z07 z^~1fHQtW;scPnBxG#revv$G3n?|!9eS}MfW_737Z{0SLnd#QU8`0ku@Lr{JD5q5Sx ze&)@(X)w^awm{@!_)84K-wPHBGh91+9y6-YP4NlUw~ak0p`XJe%NQ;TVh|ot>e>_IKys&ybe>qwgoj0xq9C{%% z0Y=j2P8%?JARh{7(Lup2cD?--h$13(j(9B|P}}BcKdA?^r47?#{G5T7Qs-6Xk<`VCU8R-AttnqT+dOR=9U=)#LqLbw8Uzf{!) zdoH)ZY_&Gun+T`=Zr%r4L^i-BR>)%jsNv2~`&(Or**0nbC~h+mDT)SMTV?)fpCPV4 zV==~CB>;%Jz}oKVaeJm5I~rOsMUr}KzK{LvJTgyn4u*H<&lf9Vu$Mo|mYFanGyD_= z%U)@zHN8_Rn1S_c=-kV?DSy|B*f$hgdiu+WYLq?OW?#E5_1gX>9+*857No+zU=fj{ zAf2m$(jE!-=&JmiCU0m6Sx*7Fg4hnkD;|UZFZ+7GjleiA?wGV0m3op59S1w-85|G@ zv63FS$?S367K4w9m)uv+JX;ZUCN@qDgH{1 zm}q?qoMYbvtC`ppzY>O;a?ir<_HWQ}5hf_P5oA;`x*0a^1aZn?PcoD9IEHT^hE>LeqJYBZM^*Rvd(TWU~b#m*^ zL}&TP$s)+OTWFtwM5cr^)BCUTzk|klNzBpd9=bikH89oW=XVi%zuVdO%iHkdeL|mLw)#tR(-Uh#Mptw=jx#UY-eQj86Bbv= zeYpTQes1oWgt37{LTMDU_tqI6^o0&IU=XEz1F}WrL1^oSw|RKC=4{x-(-&$y)?%&$ z_BuzEb?hyo+>*G{lcm$MFPs?W@UNGt_%V*Dh%_%mjNd;V@p66oL{Cs79;`nAp_IZ@ z4mLA$KBtMhfHb^ay2;S|^KJK=12vWZuhlhbU?&(+6bZ8%;66O3(tpMT00FEA1Lei? z0%+}((Q*aBbNyBfdItR%gqKo`ODlPNlzg(|z8`dcaUKs9dVL?=+N5yS_q&MRUhsP* zs697AD{!eWA)LFEPye0$0GO;YN|m`T2Y<`#MG7-krC-M*Ph0y$b><&|s^4doQXyW_ zLP|sukR4&vZJGp1Q*VtA=?0uwtUUf=kBzvVJ5=^G$k`nylS{utEl_@?MX@&#mca~& zFKpH{mM#dsMhMT?i>8K-!Om_3kKE!0pa^haJMDC3=5Zs^<~nL=vybrUW5F6VOXAuA zI3@BR^Do_MJPh%77ARLy(pB9q&?Xx7x~-y#wtL2OH!og~mkk#~D;SEc2{H#>yc?KA zLQD0R=9lGVtX?Z_&4~)LPvpq`gzfitbixM;u4f@SQLkc25tZ^6nAO!oeZ8vJQ+brj z>dor&Q>(?E?ypgRfNQ)C$6vG<4bn&(>{FeB0aT~T z<>kUuM$sYKzVZmVVho|vUesX_BQ50&5u6CepzsG8{8Z9BaSK-K8`_55Sd_6GI`mx+M z#opx}w%0gG%jN$ueZLOMz$D4hhMM?Liblvgy_${?p_R+j39lQLXh#{jIbwT^w`z#9 zuv52bF$unAxDp6H{P$PA0^peYzv|Xp@}*uq`KeS_Ed=lNPm3^Hm#?04kkV1H9ugv0 z8$QFhj9P*sqH5#WQt25K>3HK^!?|y?@qgSMJht*Wec0tc-Y*pe=S`=?*N{g1D;8CC6PALdeb~s^N3@@9 zAE1=!Py`~gYjxYuZ=PRlh zS~wH`)WW-`N0V!LmRAMJVr~I-om+#e1)nKQFj)OCF4SaC^>2sIsV3fT|qx+e)Vc?BP|LJ0E`1I(jU?b}*pg=3xdzuN@Sw^99J zOS_|YQz2Bt%Bx+2!TLDprRiB}KBo0L+Z93K5NxFQQ0+y=&Csw-3MgCDNoq zngV~GSkU9p$frsR@<`m}iq>l5xxd5i!4?UoVRNSc;j`=XMCDrUp^eS^Xi}vkKKTa3 zj?G4GLgOIopbkh*pVweZ_2b!PJNB;8uBE7KS_XHJ zsaM9Irf+n-5n}Kk4Gsg~_q+Li{zO{6`>|_3;fHOLs(|w0^YcYB(VnB?=TFX;WNk7sL*;^}DdrzKzT{!Q!7q7c z$`yOA8zK4b%Fl*uGnjyZ@tS~A31Vc=*P>$~G*e9QA=C>oXE;|>emqj6Rc00)i(`r^ zc!zUqzfa+tYX7E>_;AMlHL(#afWT70sHwiz{6T?zhxIF4@;uXor4FL7yS#gq$I#QS z39k1mpGA)FG_*0_E=8wsBkGXMWdPu;w6qo&ZJwAIj26$^#r1v+he9QwP&iVE>IOo9 zQ9D5Zp=yKxTl5bBdiCz!#~W@|c|+vVq&)ipP+!^{@&q-yPAuiy3qanzZvlZ|Lp;CE z3J+OA*IH3h@Mmhdf5YJt0I8BvI4*R_$9?mvASWuMCre6D1 z?xrc64iAuVuH1kiUcrZYZHAjz^iQGzc#t^Nh*6&#-31ozkqY{Df)HM;+ zsSVAVX=IPvKKsYi((VO`6~E8c0-!#m8x?w!Uthx9SG{mN7`JJ8bv!l~k7$u%ySyhg zy@oV(vW#wfd7RB^3pA9MXhmE9q-aNE`wbM}`d%|cp~$e+Mk{UrdNRmV<(2q6z=an% z?2Oz7_PI0}3IF-BcA=PVd@@zF==sGg2O`Zy+y!u|150?ym4lj6Zb@BDCsjgAZRknV zXi6x#vNswY-FKBcm7&h8m3B2fuHlH`=Y7g$+xJgd;b)m#ckD^xW*32z7OUaZA>|^M z4^t~Ko|9|4S7eP6EuNWR@?I4CO^S0t_|B^%Kk-)?UXZOG_+3vfa^Msgi@bN&5;*|@ zK5N=SCK$R%2$IGQ7=HH?#H50iOhD7tQ#V>hIbuj3^qy-vJ|aAcZ>F&$(eG=o15N@2 zp(-S&>tIx0ULa^eL{h26BG!Tbc_con`i4A9GO5+ni#@w8-E*V}9OC2InjWUa*j!HU z{Yf!!tL%ZP2Z);2+H2v9kM(xUlf7(%9$9Z3$xx)(X26`vU8|`RG$&cB4i-lkvUY>VbGdNS67`o{dA;wD@S{76NDhiU zrYhq|H4OGQ|6j$yUZn}26sn4_%%5L3R>>Hj9f(C=1Xd$?cRYt@6_y-$j1femWA~&E*@~q2GPiw^ZU(a)#>3+UF3k_-HXWD5DfR)dmE_&-KK8thmu+ z@t+q$bGLNP#9pr&Z2Rs)5(sW8`G66!%o+27o+U8nRIX z9e}M6PPpO!HG0UVhtdg=Rz4<^U1NK$Cx}S4!k!b@T^Agc8=V}yn_As^rv9o)v9d)# zNlKCRqR23cvItm!_e@&l8vef1=Ob{6-<)9)^a|cc!1VpTu zfhReX2c|tTQdD>%`m;t!Vw?eHw0aD1F@o~5nkIa(G=@zu5R=wpMP9zH5JEo=CPl&`NOd zYWq@GWRe)7TFT3US9PKNWkMKD@cW3yhxP8j5|2Y*_vULa2>f_p#%KDI6d_%aoJcw$ zp1f34X&}LhJ`!wtuh44q!)>CEGJ})7M#`5{IL~H^k4ntieq2c|%7sGFJdHlY_9aVt%%q}y^#yx>S}YJ0(s!w< zqU+!157_G?;Q!t?{DxIw%i} zkz^4`^z#Nup}7%uhqY8QqSXaxY)WPzQAr1Ja#+YX7M|b}iqANBzkJAfPJh^|3{a~- zK2)hjcum>*ciSa4x{T7vCY=Q-gFR1j-cI6@!rscXF{O&&Nbh8$+uJvdN`a;I=!V4s zwjV{cLClJ#%x{MCGcauRnA~DqEv-Qu4HWRMJRolhQ+MW2yxr?!t( z`4ALELa>?pj6w#wtOFcS-0sTURX@1LZm+WJ7Dy!hl`3l-2zqO9?9BmXG}CsbkH#(d z-ZU$Kr&X5PIpZW_J!^OEi+a7=1*{JvXSie?6dX;D0-3$#R=H!Bicg(YvidHbx{Fe? z|8*e4&$G|=F{^1&tnt&>=7#|!j48Esy3H?`0g2+-Qn`EdAtCU*a_l_}33lc}!jrgI zfg#lDDDHQKq1U^((e^{ULb7TV$)$Yt`DEd{__gp}243EHPBUIUJI*!clj<{nh^R=IHlM0+7&5WLa z2~<4P@`$P5qdprfY-ZT6(i~^dI&SM58*-ZXCi8P&%ON1+$j-M9?foe^jcPaR0ar>H z@m~4IVp)yUs+YzK|18=2F!I|fx{6!snsb@bB94)*5KMbD1clDH0OG8s!-MN0JQZzL zny zYIbg&tq5gGxarXXQ^h)Ass1*tm!;HGB@Q`#Bm*SSgTqYTdS(q306@*IXXl4a^{xL6 z?Bdtb>s>PO{eJ)?dHQ1CtxpbJ-q?4Pq<+@=_13;GP*R3c-md%3h)CZ1H8=g2iK64y zpO3_|Y!mEX$ipod>qeNh>hnfBbWKt|J1#57Xn$nP1*1iV|Lx7_43Z4Odd)-f{@3wQc$tOu=4r1WKLW&^0_r!=!1V981#c zO3p<6VZ-lwg)V+fusyFA?uGijqXkb4^yE(ONbBTEP=*X8H00JH{#lsfW}>1Yi4 zm#A!bNZ3eB0Z|Aj;Wc)3>bEzVrF_AELZ zxNk#myF^s^Z>mDEzP=tUUXujDuh)c@L-Qq9PfhiP_ zp@yH1?;0rcPvLGQuM?0Eq-AIf+)R)IqbXV283g%fZJNybWfAFZsJ>%+MxzFXQzEMZ zEIx(I9uQ6_^(vE{718FD75olY8F2`F^7dJ(S*;b@*x<2~a4c)AV8~Z+amxCJU_1M_ z`F1JE$GB9lA}#yzQ6&FFzM+vOLo9zeKPl0$Q9?%#3RmDlftf=RjhKcy?=9iKbE#Do=S4(PGtl9mXA8~Y%Q8pgbVgfj z6pQ4@eEWfyuu%rdT;f7Ky4rtr?!RMt1nR4syY1^i7G+IO^E&E{N!;DVj;N3OME|}F zH(;PM%zOXqi?4nuDiMW~nh7R?lKsY#q9RxmZ~Zbq@B63k%UY!@rH#gfzpmfJ+_yqG z7DD;1v(9Poq)W>}!?VFx6q0yYTv*3wl_=pXR0rmM@D6U-i6%X5Rc-8VPy4)VP6x7# z?OgrNix+9@$J)YTq@u9n>`DpCeB7M>`Xe7=s`zFOjYw?Ur z$X`Anh4*A>yMgN=GwN+7_JN1DCIEy#)28pz-AWa*1}SEr+&9E0<&-urOTB)BHPW;K z>9%C(t1o;GjdEnhEL5Q9ueq@IL>EuqndDhA*GuC*@zpg^?|0iODB7b-%1XXF)+0lR z?yqd^VEs>Qd<4M!`YOZ|9HhED#JX@;SUpKW>SQO*<8yxqX3vT?sZLYFwd8UviYmAMgGcFaKWVyRFafxLN z*{ol>D}Srn$_J1z8%D04tpjSPrQg>q?;^wz3H^>hSaHMt%Bs1V*%hUdRGewcUFyqt z4@n;l0_w47K~*@IX+w0(jhWJ^+p$!}=iIBwBJXGZrZ2laQ2bXtF96IAA(^U;k-Yi*Ql4U}6Q7ztgBBMi3oZSPxazFVAK4jc`U+EQBGSvV zGrgT3OxD%sJ5KrXFjInUJGr@>A5e~lDs6RDt@lX$7kM~cz;a&%Od$Mb7#gF+bY9~%jH%v?w|M~ygJFBR+qHo;?cL)%) zKnVng;;zBHXmN_WTPc(h+)9DqQrxY$7I!Vh3Z*~`E$&)0C;ZR7&-c8Xx4WM*M)pp| zm}~95=3eugzi%L?ighl@HrLb1sjRY|c>?l7BZ}Mvl-%Ye?WX9+q%m9E z4<&CQgIdv&e-mnFB1u!B+EOP8Kn$hSS4zSN3+@QCVS=tf^YjFOmd%~*IHY&6no01+ zXqq?@C3zwR1_z~xpKvNAm;z9`(+2wgqEVWm}_GLzn+h0NaQ9$}4b23m< zAURjA$YDcSW#{FW;q)KL8Sp4k&oa%LjnR-UcC`K9pYsUczn%}IAF6>bBd!1hS=r4q zK7+}<*dSl^!#-7-BChlBuMQE)VEW zcQ_#YHNI+fj9z56qnlVO$~gIhWkJxAi@qvPWR%uvky2NIt5cWoEa)Qs(dd79O4tLc@vnoXaAJ< zip^NY=>EX81|`*RY6N$Kk{TS556fB2V zd|P{F0ZkwGhbhEsf0*JMz%iqvt>hi_Rj$%#0c!LpuSdKGLO+b6#9LO1WS!k48s z{k6FRO}y8X{ljqa_Ux`l5<2a&TMA}7T27w^^#VXZMJs*?aj*D9&g@%CRnzHC9arO) z*?G6MbX)8D`Sim+-O}CaK6B%vcl>O|{Hlw!A^;stSIIV1ndxjEDcS%4SRszkB13zk z>^iLKu}JFhBrDF0kX|E)Z_CPa3=5eX3U+{Kejv|INPqtWMi*>`{yJ=ue+d#v8a3}!K%d7rI!)IzaEerB1Y$8IAk5{nk zP0;O}4o)Xxm27W^xoB`%>SeOcOGN(Dpzgx(4flnsA?}uml%>9rRH=uJjhnfA+ruuS z-!$ac5w~gt&f{OXx&TWbK z(E5NaWW9ZOw0QH#EddbE48lCgeWZgu)2<96qM2Wj1Q3Q0@i#}o*bnPVdjw^ai<5^~>Dc5CjQ^4e zRjb+fFU}|9k+I#p`Laema&tjS^IdS&`o>!A#yi95sx!@WdblUAGJAmN`;(&M{~Xt* z|M$~#%NQ@h}IzKxm!EX&k@`JLv@}lQCzFeSbTOsD)*|KRYFU zGP;I+^i{J9kD;OQykS*E2E9e7fTy3RT{` zdkMvssKPZgsUhrEbC~Kh%ocJqxKZ+k^l&MTK=%}Ly}k+DW|<``HA>e*3nGTbK(@M# z3cepy2HU>9zXhO{0j3lAw6{Ooo!A8oBz)j!!%`*W}7&CWZM<#GGUsaERaP*y#UwFDK5 zt!vNiLQ36L0W>nc#5}Nu@2oGG9tAo{Tr@^dPC0`~>6xi4`ELcvdyHHy%Ql zF6aX(j$Jj1w@)cG(SbMnOSi2?asH?Rwy(Y++{07aHo%b^LRGU2)uIREzn!uFn^kgy z8aRG<)U+jXRN6e*FlLG0T zg$}5Al`Y7N^rt?;%kS7-v-^9&><-fNBWBjNv3Bj*`mf&FbZ^*ZaU&4P*TFYEE_e=b zY0m9tT(Y5S2l1OG4ZV&o><2eUR#*%ySA?%n*b1%7ig+E8}kW%e~w0PY9Q_{nWo{kbgyb^|XE+9-QPvCkfE^T+qQ!exA( zVT~l{lNsv2Mr3a4e6+T$^^toDLYR)SUWCLeYktlNh0_OvG=L z)#!4E`S%EOrNhC3v1;<*M1uqtL#!%{ zonyGJnXkhX#nCM3&Xg`9WcrZL3h@cvzw7l?^Y|Iy@gock?RlHh;5uT{apW#drz_#h ze}<$MllWh0ra$3VOKOG5PNXZw5=ds&DOa^@_9?R7$;B68;Hq{5F$aR=8*m$ceUq3T zyr9(1GNmjG^5@?ZM=e;}?Xcqy8@nU{MTM5rg#VlrTwpdqJr#^Ao)iwy(_(^%D11pzx3WH8xkb@L}{cK2n&34VG~~t zL0eFACS$&l?b9N32qTIYS2?IBalB_?ZEh~K70)xOqMvSceNSqmC+`X8(O34yh$huF zRFq=h+wVD!$tYiTi|Qg$gZ>fUxEt~2snhs|2$~zafKShP`w2}>c&4x_!@wyj{Y3{O zJQrM;WAZ80Wenu;`(364`X1Wfu3!~2!d78FO@h(CK}d{-RA3Mc)2F&P zi^XJFl$RrG%P{0l6j`Q$TuoQPhEAiyWg56i8PU>uYc0(# zlD4xFg209fSJ{1&Y3a9I&P|Kg1US4r*N>hzpvWpy(uCa*oa1c79)+d!q3OXrtlD_lw`I$>$eS&5s>Bi(15@tn9-kPF8hd0>cv7~$D8n)q9~SCY zV-F8GI*~&8m?;eicm2vvYH$FTg-C!B47Hs*C@?gSy92;nr8& zAYRAj46Em9#Xo})Ckd+@QZ*G~B5n7=vx>7HAK9v%3?AMZNm23Ny9UvunawMmn;sZD z4jt4=M}e6jT#HVjTk$lcl`}^l+76?25c<6kN7k=-yAbfu~{+I zL4iaR;mRV8>{BW#KBAY2bcDFUz4R1o4?5tX0DGT~;!hDtX}$ys0_2TSQXSE7woA>H`1>7F0U??aKDZTp{_1^Wib9Xt86P5IdxH828sFnJskw1q*;Is#|Y( zz8IEc`KaX_+p;D~|Jf`?h~0!MMjviUM?WgDtTFoo%T6N0QVQux96ECZn&kt|RM0yI zR9lfBHzi_cJopDL2y>~sh=TAlb z)@p~{jy`WnOukQ%?3yKd?sY`mFaV>;ga@)e(`;FXLlC&WBgAlVH7Qx938@W8q z6&l{TnKjq;YlFle;xwZjCkY7Hk=bF$KsbwGbPhYvu^LTrG*W`k!m{#+^XMa>c!(C# zp1+?;6`KDk^N-WLEHq^Pm_xPAG@m2)<`Y64OtM}KMisaZsGUuDUrNw(kC+wP&8s&4 zEhezDLB6wJ`If$b0heCxYM+tqVd(s|ue8Vcqxo8qNMplmOR`gxsAu0#d6SH<5nTsW z#EKM1+ny)k5sX9uDq1V)ZWYI}EjW@5!YG5n0JR0*C^xfcw``CV9LH-k0Ge!UnQKpj zUS{B*S-lsl_cNpUHdfo*=V>d_egzS_BZ>p-h2z)}+bDg1b26NtQy3|RH*pUou$qtR zX8kZS+$+z3Q|h&+w;-|=+%Ij#9PLcH_>Cay0Q?`l+KNu^VDY^cy^P{Jj8Y!o1W#n> zv9%y&pf<;M5L@G&Pxdp>n)R8Qxtpa8%XQ6p`-1j1KNj6}83)wozc||Sdrwo7ff>BK|jl5CtdEgGD0qHesLnmHrHCi%b$WHxElzbmx zv+-f>Jd!B2g;;+N|7>^jI-#u^@=kTtD1mVMrzH0=sOa9V=JVmYLTSwhC)(!N;CCh) zRB}k9`ctn5i4oEvvtHo$S0tXdDC^=p-g&muXuB?ua>a?K)45fdzGJk2AxZI)^Oa)f z{B7K!FoamC(q=?~05i?3A9kf0ZUixjkBvL)>EugooB z;|kH!djXmTqd~Z~<3fOt55?t#CdvK9dUw05H}Rlatyyt+vv`PIX2eQDq-7xGrqIk_ zy){@?mn)=K%UbVyq@kbMOG2#)v}h&``Qgm-x{89+3kNTVNIoTT_eKO5kArv|w|VJ^ z%RQ%9pU$WRuiB0NhxV*n=@<_@%mac~9&h$Sf$$CD*~(ZQN@x||_B;j?ijU(EAbOS# zbo}(tK7bKLNUPLvk?)N)Irz4gz5`+60N#+7m3#e2M3&}={YZWMX;aoL)}PLg+?Tx!^b4nNl+q_ktcXZP4(g%+lO*l3xmH2>>2 zgt_S9f)MWecgDJEb5pyZFuZyvRt@#KcX^D5oDEWbo@f~MhItK|<7k)(L@;#Q=^N(9 zlyGP(&2*gUDrtR@G?7TY9u73EZN5Z+Lt~3X`BuC}@Ha-jLa*MuH3Q$kBazdL?sK;X zo$8Q6NO?tSq2%H1_hHDjKS z7Qmyi>*(PfEDR7(HMDOVpC_vdU6s&c@-Lw3i!9JGR(?2<<1=9jK=rJ=m9O2>QaOV0 z`BUJw0VID_keX%!cJi{Fhib3@FU^9QYIm}$&K?-I{*!vD`l~m zkoWeNU!S){aNN&-;rk%UJp6(Fl+ti0?Acm(K>1$vtu4cbodDPKmcsrp&>qXE)dS2@ zDLGK3qF08=gpLF)Quf&|3U+KB2R1Ia#osYn4&!6cT$tp(@^y@dsl^hW-wE_*9m&G(K|^g~9iSsJGw0H*7$rrqL(p79S_w zD4znihn#V|YDlb5B}EzQWmDlQVUzjFn)#!H|7}1{zTn^4>jxxK%TL@aD}L&xc2Hi0 z6dSI9>*R_x?tO)nz$gmG{SY!mLADI%;XacfNFmb-QKSh!QO4GlQ?;V6uLRAhD^ZU! zPOGN#DXO?eQtG)jOxp&cq<7Mdi`=i*S=>UBttgFu)^m?3o)i!uZeqtm|3<#9*{ZY! zeRCwkQu;U?7yQ+IIJHl)vo!e!mL@0Rj4Vrt=wOs>Je}x-9QnmBN>NFK>(W0SCKy_t zCyMo-W=Wh-iqV-w`4WN1S%Q|=0v}D@zA}3odc^!772AUD|0%8RZxx#HYi@ZifDJ3! z5(Fovd;Qbi17Ni$Ro+S^dF9nXu-<2FPmGt!8!8#bUP8Sj_niHglA z7`&lrj9RIl=-@-mbMq-ME{6x*tDOXc5K5^REh8qP&&Cx*!J3*Af{J2T-O1lRFQ0jT zl6`5|;(}x}_%d;o*9O4lJ_@~PEAxaWg6Hm>qusy78E~Aaj>F2YLP{rVhDJqPXZ4@ML$wlvkv%{Cu{#+ipwnTi?0 zPno3W+0>1KHCgXa|NdpC6S4Q}NxnRbru5e5i=y(Jmo?>1w5-g=#j}*-Z@68}>Iae%(^yoo+ zZSVC~%Szgb4Q7<_fnV6KQg|>itTqPZvs$d`*6T+GT}Fyh@LH-WE{~7HU0yOIXy44g z;$W<=c@wb_R#aH@$0nO4QYsf-kMXmSc5Q(e-99?{vC?eKj_I+m=dmJMsW4$Uj<*;) z466tqCCBicRNcGh!gzVXe=%fmWn>~N*aX>C+R$k-$jVSdpw=-mW(I!-r?s^$flHNW zIvmgaNsinCbn@KUPn?g&b~xwL9DP@_V>FdaZhlLaDx>&iRmD1(X3s7Sz24b>wrAus z_vPd%2&1v!;Nnq>weRwP`sW?sHH%{DFP#?)@-_qGf*R__Z^^Cnk8_mLN`?XMon z9+x~766}9tRxhEN*DHP{7H)?1vg1b3QHvcLk81ZqP0jDeVt!fC(NqyI-rZKOfDz|1nUZoQ-=}z8imTr5YB!k8JME8$Qe_4d34(zZPR7-Z##s@_qkaHI5|m3QJ#WU z8KV$D1EgZRjxWpyCQ*paW5(s|l5oY*P|~Xu!C6TT*#Q{%SYeGp(K5qPCFwON;S)ny z{-OW9TzR zfPH@m;Z+{aZ9*HROO;-w^?lu{5Hao<`l0Ds8z7LE)$M=7{CDr~o^<*w3wO*>T09j4 z6e`UwgQUAF=4H}T=i4Ry-%%#^1|xFQ~kfCB$f}8o@$ef0E;2j=bTa#+z!c0eEN*`LrlvX=e&@W)EaD(+1)H z1P(xS168Rm5H92>cj#&@v_<7|V>HuB*$`e?7Dbx>1)pO3M}9yp_L$S8CCU&C$hE!# zE8428l)P`wfzVrw3(m95_uCl$d2QwaK+_NGI%w{|#zzT}?_VI$7756RaM-{R1wN~z zh!;JKO3c`nsZ-Xjrp9`=CjVBYw7Voe;wwl3i+x6umKOKHC~l^zICS=#eiB+3J`}7_ zOee8Hq(fVujAv@|U0=Xco;Be4pHDTxjz}8i!Y;(BV{Hh$iQQrW0?uJSZf#d4jYr7hkkt{1pkwU37qCE*e2d-1-8mqn}h?f0Fl zzLXC2n{@e=81l1H7aLnC^7Cbu8#YGdIt<$?Sfamx+6#5UN<~J77#Cee2dWcpJ;4%_ zR#(CEC^mJ@W>mDiIcd3V?$WF`Qa@q5f$IPV3=o8;Zm7SWwLIDsKJHw2U;Hc~zM1Ip zboixrhWZBLR$`U+rJ_-ay1r8W!wfU%kG7y102hd|fn+rqNF0gFjXnCH9{6frqI~sdFs#=p-h$j*LvbGvz!T2{ce7nPZY2Yhc&? zNMZq;NgQtt?4CzM(RbcE9AV&q#Ymvl!gqeSEoZLsZul_PsaPdsy%=?1;=*~ew zgvR8hy3g6q@0ksxFL2d+;tN+{Z>yK{GQap<^GTOE_Xz-3#meqar^v?83rkEHrbeCB4m!+~W0$ zJ?Fmby9HTIk*%}6c|qbh_eFeF9zKo-?6ZXy9aN>=ytSi{wPL6w_eU6aBEdtl9H8GD zSpFq#%R+iC z!-#?;rIC`Y-A5Ldhf=D0?JY!Y5>qUwZ`69hS$Z?K=#iuRvS(Kv1Vkf?5OhS^_!9pT z;gif6%1=B*A^nN&4(C*GG~;p<1{3OPSLy7&^kvDeM?fW@-c(NfL=koR0@KvK={iCD(gvMsHX27r#Ny=w*YW{H7iIZ{A{f9Gip$Po7 zC0dm3+qI*WJpgtcv6GhLfp+RV0HPz9R*wQ#8`^%)aM}{|EPSktQCCE{U`zobosyQz zT3jZZEKGcn9t!a)A~c?V#<6wjm!x)0W&YVT3J=BYhloqlROZ}v4!f<(XrHe6F5f`= z!!;q1YfGBR<87VU{GDaK15DnSVFwG{A;c;j3H%LzYx^<#eo>1$1Z~HZkM6|#Y4+U0 z2utv!4@-y~=V(|2TQj@pWa8>7$hlF=cvCUP6!0*=sx-%8mh@h+WQJv?*=BznAEV)9 z5sKc@FI&F*7xJ+g%Dm8P919_!4f+{n zj-Ue?9-cn~*n^Rh3R}>kE>@m5vrpzZJvzE!0=$S%GAi0O!V{e!Og~9jeM)ic<5>fy z`e45CTP$JbF~r@)*abdS;_HV`*YBO)jb`#N#0fehkUfC@zr<|5u>}8oG_5#)k{LX} z2s6RLhZ63;i|JSdlL>2(Wx+xi`HbtUoLx$*fI;ZDlPq~ldW$@TX9_kUa*Z!ukYq}z zcSPW-ko^5Nzwzf?W|T^hYC$D~4fjXun*)|qSKB~x7vseivahX%_?q(nTKU1+Ekjh9 zS(;Neg2wG0we*w0oRY%Y%Ff%`zkA=J%)cg;KFaDcD*EmdFG1O;P(@gK4RWq|W4yOC zT_q`{JQIVS7-_uFJe$HDya|DBEy z_#BEhhXdH>OUi-;Wn}`0jgIdgE?Yxo1hE7_o}1P5r_cgZC&KVzfEfF_Mi^-lc7G5R ziroy2EB@d(uV}u=qz2^Gp<2_oYAD+~RpX(uYG-^?2DggC#oABxpqJiqC7J#Cb|>+T zb(2Pnbqul)A$vhD4!G_6iMQvXH}&;R@Sn$2hNkS&p#rd5XGE*KcG#W;CM(3i^=Q%L z8#K)nWaYBJ^X%kT`4*M5UAiH+AuS2gxzn)jsAMSyt_>3K;S@Li>6*urW1BqjzL__d>qJ zd*YiJF*qsz6+B|UX?JF5YdYG0d52iOxe_ls;);cMYmZn9=XQG-YdQN3E;66HDt&t$`w7mwmZmkpMF-!O&*Y*zZmHBlL3?GFuo>Wn zSFQf)88HpcGq62W%dQyJgOlM%OT?>ugDeR>^u*AkU8EIWZRwY&q#w)Z)5r-ok9ycQ zk{vrfVIdlTN8!cU#Cy`}BYKXn;>z7{sachMa3=|s2{Au24(W*e_&qhNWjdM?D_7Ol zZaf{<&I}4vE{Pr)3;Y=hNTjb8a0j_rD4YF*Cw}4E-X=rcmB6GFp=S@u=bLJm^DH*a zW*C+*(#KA*Y96Z4YNj$AKl6W+1xeyXLEKKzbluskuQ69(64k_)w5h>E{^RFx2P1{P zd3s^rU`E2PO2PMAli}|Ei>FhFTa8KatFjc>k|ZJ0>>xjp9*8clu>Dc&OBDkKV>0(~ z+;cg3|AnK&VvF{ZSPKAp>wUDH3`=;fL0^{qM%j?mZc8=~Q=JUB5>c7=~uh=yis$Ka^Ki z)>La!5XH!V-0XZ|(Wn;rhT-_Qc$A_CT6cu#AQG0|xTKuc0(Lxw$P4+8NmpWX|}EOP~VTB()3UaA?L zzed)+Yg-7fn}f!glj1RJOB+)8nA z{e$0&{$_Qkh64W!ULGF(|LO7ny5dO;a|{4>Nh>s$!64*9jy9g b0S6b+dI2cKGynjy94G(-0MP#z{`S8BI~dqH literal 0 HcmV?d00001 diff --git a/public/glitch/glitch_gallery/assets/index-B1PtMIUq.js b/public/glitch/glitch_gallery/assets/index-B1PtMIUq.js new file mode 100644 index 0000000..600cc47 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-B1PtMIUq.js @@ -0,0 +1 @@ +import{r as n,j as e}from"./index-CEeZxcxj.js";const ae="/assets/technoborder-4brzcuN1.png",ne="glitch:play-sound",ce="glitch:stop-sound",le="glitch:host:",d={click:"ui.button_click",hover:"ui.button_hover",computeStart:"machine.compute_start",computeStep:"machine.compute_step",computeDone:"machine.compute_done",verdictStable:"machine.verdict_stable",verdictAlert:"machine.verdict_alert"};function M(s,a){typeof window>"u"||window.dispatchEvent(new CustomEvent(s,{detail:a}))}function j(s,a,t){try{if(s?.playSound){s.playSound(a,t);return}}catch{}M(ne,{id:a,payload:t})}function U(s,a,t){try{if(s?.stopSound){s.stopSound(a,t);return}}catch{}M(ce,{id:a,payload:t})}function S(s,a,t){try{if(s?.emit){s.emit(a,t);return}}catch{}M(`${le}${a}`,t)}const $={continuousUniverse:!0,infinitePrecision:!0,chunkParticles:!1},_={"000":{outcome:"Paradoxical",intermediate:"Very very much information.",description:"Space is supposed to be discrete, but each cell must contain ar arbitrary amount of information.",visualClass:"paradox-point",tone:"paradox"},"001":{outcome:"Digital Physics",intermediate:"Instruction programs remain finite.",description:"Stable but requires continuous rotational symmetry to be emergent",visualClass:"stable-chunk",tone:"stable"},"010":{outcome:"#1 Memory Paradox",intermediate:"Move sets can scale to infinite length",description:"Infinte memory per cell",visualClass:"paradox-point",tone:"paradox"},"011":{outcome:"#2 Memory Paradox",intermediate:"Move sets can scale to infinite length",description:"Chunky particles must grow without bound to hold infinite move set",visualClass:"paradox-chunk",tone:"paradox"},100:{outcome:"Paradoxical",intermediate:"Chunky geometry implies discrete space",description:"A continuous universe with chunky particles spanning fundamental cells is a constadiction.",visualClass:"non-standard-particle-point",tone:"warning"},101:{outcome:"Paradoxical",intermediate:"The geometry breaks isotropy.",description:"Continuous universe plus chunk particles that imply discrete space is a constradiction.",visualClass:"non-standard-particle-chunk",tone:"warning"},110:{outcome:"Standard Physics",intermediate:"The model remains isotropic.",description:"Continuous space with infinite precision preserves the canonical picture.",visualClass:"standard-particle-point",tone:"stable"},111:{outcome:"Contradictory",intermediate:"Continuous universe cannot be combined with chunk particles.",description:"Chunky cannot be not chunky",visualClass:"standard-particle-chunk",tone:"uncertain"}},H={"000":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Point state exceeds single-cell information budget"},{label:"Verdict trace",value:"Single cell must have arbitrary information capacity"}],"001":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Chunk particle geometry engaged"},{label:"Consistency check",value:"State remains compressible under finite instruction length"},{label:"Verdict trace",value:"Digital physics interpretation remains internally stable"}],"010":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Each lattice cell requires unbounded memory"},{label:"Verdict trace",value:"Inconsistent with isotropy"}],"011":[{label:"Universe model",value:"Discrete"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Chunk particle"},{label:"Consistency check",value:"Particles grow to express information"},{label:"Verdict trace",value:"Chunk particles grow to infinite size"}],100:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Severely demotivated"},{label:"Verdict trace",value:"No explanation for rejecting CRS. Smell detected."}],101:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Finite (Rejects CRS!)"},{label:"Requirement",value:"Isotropy is emergent"},{label:"Particle mode",value:"Chunk particle geometry engaged"},{label:"Consistency check",value:"Space is quantized but cells infinitely small"},{label:"Verdict trace",value:"Non-standard hybrid geometry. Smell detected"}],110:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Point particle"},{label:"Consistency check",value:"Canonical isotropic field picture remains intact"},{label:"Verdict trace",value:"Standard physics baseline recovered successfully"}],111:[{label:"Universe model",value:"Continuous manifold"},{label:"Precision model",value:"Infinite (CRS)"},{label:"Particle mode",value:"Chunk particle geometry engaged"},{label:"Consistency check",value:"Inconsistent."},{label:"Verdict trace",value:"Chunk particle cannot be not chunky"}]};function A(s,a){return typeof s=="boolean"?s:a}function N(s){return{continuousUniverse:A(s?.continuousUniverse,$.continuousUniverse),infinitePrecision:A(s?.infinitePrecision,$.infinitePrecision),chunkParticles:A(s?.chunkParticles,$.chunkParticles)}}function D(s){return[s.continuousUniverse?"1":"0",s.infinitePrecision?"1":"0",s.chunkParticles?"1":"0"].join("")}function F(s){const a=s.continuousUniverse?"Continuous universe":"Discrete universe",t=s.infinitePrecision?"Infinite precision":"Finite precision",m=s.chunkParticles?"Chunk particles":"Point particles";return`${a} + ${t} + ${m}`}function re(s){return s.tone==="stable"?100:s.tone==="uncertain"?60:s.tone==="warning"?40:20}function oe({visualClass:s}){return s==="paradox-point"?e.jsxs("div",{className:"cube-wrapper",children:[e.jsxs("div",{className:"cube",children:[e.jsx("div",{className:"face front"}),e.jsx("div",{className:"face back"}),e.jsx("div",{className:"face right"}),e.jsx("div",{className:"face left"}),e.jsx("div",{className:"face top"}),e.jsx("div",{className:"face bottom"}),e.jsx("div",{className:"particle-point"})]}),e.jsxs("div",{className:"info-arrow",children:[e.jsx("div",{className:"arrow-line"}),e.jsx("div",{className:"arrow-head"}),e.jsx("span",{className:"infinite-symbol",children:"∞"})]})]}):s==="stable-chunk"?e.jsxs("div",{className:"digital-lattice",children:[e.jsx("div",{className:"digital-grid",children:Array.from({length:9},(a,t)=>e.jsx("span",{className:`digital-cell digital-cell-${t}${t===4?" digital-cell-core":""}`},t))}),e.jsx("div",{className:"digital-core",children:e.jsx("span",{className:"digital-core-dot"})}),e.jsx("div",{className:"digital-scan digital-scan-horizontal"}),e.jsx("div",{className:"digital-scan digital-scan-vertical"}),e.jsx("div",{className:"digital-aura"})]}):s==="paradox-chunk"?e.jsxs("div",{className:"chaos-wrapper",children:[e.jsxs("div",{className:"central-source",children:[e.jsx("div",{className:"face front"}),e.jsx("div",{className:"face back"}),e.jsx("div",{className:"face right"}),e.jsx("div",{className:"face left"}),e.jsx("div",{className:"face top"}),e.jsx("div",{className:"face bottom"})]}),Array.from({length:10},(a,t)=>e.jsxs("div",{className:`debris-cube d-${t}`,children:[e.jsx("div",{className:"face front"}),e.jsx("div",{className:"face back"}),e.jsx("div",{className:"face right"}),e.jsx("div",{className:"face left"}),e.jsx("div",{className:"face top"}),e.jsx("div",{className:"face bottom"})]},t))]}):s==="non-standard-particle-point"?e.jsxs("div",{className:"signal-orbit signal-orbit-point",children:[e.jsx("div",{className:"signal-ring"}),e.jsx("div",{className:"signal-dot"}),e.jsx("div",{className:"signal-axis"})]}):s==="non-standard-particle-chunk"?e.jsxs("div",{className:"signal-orbit signal-orbit-chunk",children:[e.jsx("div",{className:"signal-ring"}),e.jsx("div",{className:"signal-cube"}),e.jsx("div",{className:"signal-axis"})]}):s==="standard-particle-point"?e.jsxs("div",{className:"physics-observatory",children:[e.jsx("div",{className:"physics-grid"}),e.jsx("div",{className:"physics-halo physics-halo-outer"}),e.jsx("div",{className:"physics-halo physics-halo-inner"}),e.jsx("div",{className:"physics-core-shell",children:e.jsx("div",{className:"physics-core-point"})}),e.jsx("span",{className:"physics-orbit physics-orbit-1"}),e.jsx("span",{className:"physics-orbit physics-orbit-2"}),e.jsx("span",{className:"physics-orbit physics-orbit-3"})]}):e.jsxs("div",{className:"physics-observatory physics-observatory-chunk",children:[e.jsx("div",{className:"physics-grid"}),e.jsx("div",{className:"physics-halo physics-halo-outer"}),e.jsx("div",{className:"physics-halo physics-halo-inner"}),e.jsx("div",{className:"physics-core-shell physics-core-shell-chunk",children:e.jsx("div",{className:"physics-core-point physics-core-chunk"})}),e.jsx("span",{className:"physics-orbit physics-orbit-1"}),e.jsx("span",{className:"physics-orbit physics-orbit-2"}),e.jsx("span",{className:"physics-orbit physics-orbit-3"}),e.jsx("div",{className:"physics-question-ring",children:e.jsx("span",{className:"physics-question",children:"?"})})]})}function de({config:s,onComplete:a,onProgress:t,theme:m,className:K,host:r}){const[f,I]=n.useState(()=>N(s.params)),[v,B]=n.useState("splash"),[G,C]=n.useState(""),[g,Q]=n.useState(()=>_[D(N(s.params))]),[l,W]=n.useState(()=>D(N(s.params))),[V,X]=n.useState(()=>F(N(s.params))),[J,O]=n.useState([]),[Y,P]=n.useState(""),w=n.useRef([]),b=n.useRef(r),q=n.useRef(a),z=n.useRef(t);n.useEffect(()=>{I(N(s.params))},[s.params]),n.useEffect(()=>{b.current=r,q.current=a,z.current=t},[r,a,t]),n.useEffect(()=>{if(v!=="processing")return;const i=H[l]??[];let c=!1;O([]),P("");const o=(h,k)=>{if(c)return;if(h>=i.length){x(()=>{if(c)return;const u=_[l];j(b.current,d.computeDone,{state:l}),y("result",()=>{z.current?.(100),j(b.current,u.tone==="stable"?d.verdictStable:d.verdictAlert,{state:l,outcome:u.outcome}),S(b.current,"verdict-ready",{state:l,outcome:u.outcome,tone:u.tone}),q.current({success:!0,score:re(u),data:{assumptions:V,state:l,outcome:u.outcome,intermediate:u.intermediate,description:u.description,processingTrace:H[l].map(L=>`${L.label}: ${L.value}`)}})})},520);return}const E=`${i[h].label}: ${i[h].value}`;if(k<=E.length){k===0&&j(b.current,d.computeStep,{state:l,lineIndex:h}),P(E.slice(0,k)),x(()=>o(h,k+1),24);return}O(u=>[...u,E]),P(""),h===i.length-1&&U(b.current,d.computeStep,{state:l,lineIndex:h}),x(()=>o(h+1,0),170)};return x(()=>o(0,0),180),()=>{c=!0,U(b.current,d.computeStep,{state:l})}},[V,l,v]),n.useEffect(()=>()=>{R()},[]);function R(){for(const i of w.current)window.clearTimeout(i);w.current=[]}function x(i,c){const o=window.setTimeout(i,c);w.current.push(o)}function y(i,c){R(),C("crt-collapse"),x(()=>{B(i),c?.(),C("crt-expand"),x(()=>{C("")},110)},110)}function T(i,c){I(o=>({...o,[i]:c})),j(r,d.click,{control:i,value:c})}function p(i){j(r,d.hover,{target:i})}function Z(){S(r,"session-started",{component:s.name,id:s.id}),t?.(10),y("controls")}function ee(){const i=D(f),c=_[i],o=F(f);W(i),X(o),Q(c),j(r,d.computeStart,{state:i}),S(r,"processing-started",{state:i,assumptions:o}),t?.(45),y("processing",()=>{t?.(70)})}function se(){R(),U(r,d.computeStep,{state:l}),S(r,"returned-to-controls",{state:l}),t?.(20),y("controls")}F(f);const ie=v==="result"&&g.visualClass.includes("paradox"),te={"--gc-primary":m?.primary||"#248a00","--gc-accent":m?.accent||"#1c6a00","--gc-bg":m?.bg||"#ffffff","--gc-bg-secondary":m?.bgSecondary||"#616161","--gc-text":m?.text||"#0f172a","--gc-text-muted":m?.textMuted||"#eaffd8","--gc-border":m?.border||"rgba(255,255,255,0.12)","--assumption-frame-image":`url(${ae})`};return e.jsx("div",{className:`gc-assumption-toggle ${K||""}`.trim(),style:te,children:e.jsx("div",{className:"component-shell",children:e.jsx("div",{className:"main-wrapper",children:e.jsx("div",{className:`crt-screen ${ie?"paradox-errors":""}`,children:e.jsxs("div",{className:`slides-wrapper ${G}`,children:[v==="splash"&&e.jsx("div",{className:"slide slide-splash",children:e.jsxs("div",{className:"splash-content",children:[e.jsx("h1",{children:"Foundational Assumption Recombinator Tool"}),e.jsx("h2",{children:"v1.0"}),e.jsx("button",{type:"button",className:"action-button",onClick:Z,onMouseEnter:()=>p("initialize"),onFocus:()=>p("initialize"),children:"Initialize"})]})}),v==="controls"&&e.jsxs("div",{className:"slide slide-controls",children:[e.jsx("div",{className:"widget-header",children:e.jsx("h1",{children:"Settings"})}),e.jsxs("div",{className:"switch-group",children:[e.jsxs("div",{className:"switch-item",children:[e.jsx("input",{id:`${s.id}-toggle-universe`,className:"switch-input",type:"checkbox",checked:f.continuousUniverse,onChange:i=>T("continuousUniverse",i.target.checked)}),e.jsxs("label",{className:"toggle-track",htmlFor:`${s.id}-toggle-universe`,onMouseEnter:()=>p("toggle-universe"),children:[e.jsx("span",{className:"option-left",children:"Discrete Universe"}),e.jsx("span",{className:"option-right",children:"Continuous Universe"})]})]}),e.jsxs("div",{className:"switch-item",children:[e.jsx("input",{id:`${s.id}-toggle-precision`,className:"switch-input",type:"checkbox",checked:f.infinitePrecision,onChange:i=>T("infinitePrecision",i.target.checked)}),e.jsxs("label",{className:"toggle-track",htmlFor:`${s.id}-toggle-precision`,onMouseEnter:()=>p("toggle-precision"),children:[e.jsx("span",{className:"option-left",children:"Finite Precision"}),e.jsx("span",{className:"option-right",children:"Infinite Precision"})]})]}),e.jsxs("div",{className:"switch-item",children:[e.jsx("input",{id:`${s.id}-toggle-particles`,className:"switch-input",type:"checkbox",checked:f.chunkParticles,onChange:i=>T("chunkParticles",i.target.checked)}),e.jsxs("label",{className:"toggle-track",htmlFor:`${s.id}-toggle-particles`,onMouseEnter:()=>p("toggle-particles"),children:[e.jsx("span",{className:"option-left",children:"Point Particles"}),e.jsx("span",{className:"option-right",children:"Chunk Particles"})]})]})]}),e.jsx("button",{type:"button",className:"action-button",onClick:ee,onMouseEnter:()=>p("simulate"),onFocus:()=>p("simulate"),children:"Simulate"})]}),v==="result"&&e.jsxs("div",{className:"slide slide-result",children:[e.jsxs("div",{className:"bottom-container",children:[e.jsx("div",{className:"visualization-container",children:e.jsx("div",{className:`art-canvas ${g.visualClass}`,children:e.jsx(oe,{visualClass:g.visualClass})})}),e.jsxs("div",{className:"result-container",children:[e.jsx("div",{className:"summary-box",children:e.jsx("span",{className:`result-value result-${g.tone}`,children:g.outcome})}),e.jsx("div",{className:"summary-box",children:e.jsx("div",{className:"intermediate-result",children:g.intermediate})}),e.jsx("span",{className:"result-description",children:g.description})]})]}),e.jsx("button",{type:"button",className:"action-button secondary",onClick:se,onMouseEnter:()=>p("back"),onFocus:()=>p("back"),children:"Back"})]}),v==="processing"&&e.jsx("div",{className:"slide slide-processing",children:e.jsxs("div",{className:"processing-shell",children:[e.jsxs("div",{className:"processing-header",children:[e.jsx("span",{className:"processing-led"}),e.jsx("h2",{children:"Computing Assumption Matrix"})]}),e.jsx("div",{className:"processing-subtitle",children:"Applying Constructor Theoretic Constraints"}),e.jsxs("div",{className:"processing-terminal",children:[J.map((i,c)=>e.jsxs("div",{className:"processing-line",children:[e.jsx("span",{className:"processing-prompt",children:">"}),e.jsx("span",{children:i})]},`${i}-${c}`)),e.jsxs("div",{className:"processing-line processing-line-active",children:[e.jsx("span",{className:"processing-prompt",children:">"}),e.jsx("span",{children:Y}),e.jsx("span",{className:"processing-cursor"})]})]})]})})]})})})})})}const me={name:"assumption-toggle",displayName:"Assumption Toggle",version:"1.0.0",paramSchema:{continuousUniverse:{type:"boolean",label:"Continuous Universe",description:"Toggle between a discrete and continuous universe model.",default:!0},infinitePrecision:{type:"boolean",label:"Infinite Precision",description:"Toggle between finite and infinite precision.",default:!0},chunkParticles:{type:"boolean",label:"Chunk Particles",description:"Toggle between point particles and chunk particles.",default:!1}},defaultParams:{continuousUniverse:!0,infinitePrecision:!0,chunkParticles:!1}};export{de as default,me as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-B7Erow2S.css b/public/glitch/glitch_gallery/assets/index-B7Erow2S.css new file mode 100644 index 0000000..752cc3c --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-B7Erow2S.css @@ -0,0 +1 @@ +._container_12iml_1{background:var(--color-bg, #0a0a0f);color:var(--color-text, #e8e8ec);padding:var(--spacing-md, 2rem);border-radius:var(--border-radius, 12px);box-sizing:border-box;font-family:var(--font-main, "Iceland", -apple-system, BlinkMacSystemFont, sans-serif);line-height:1.5;min-height:400px;display:flex;flex-direction:column}._container_12iml_1 *,._container_12iml_1 *:before,._container_12iml_1 *:after{box-sizing:inherit}._introScreen_12iml_19{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1;text-align:center}._introTitle_12iml_27{font-family:var(--font-display, "Russo One", sans-serif);font-size:var(--small-font, 1.875rem);color:var(--color-accent, #22d3ee)}._introSubtitle_12iml_33{font-size:1rem;color:var(--color-text-muted, #9999a8);margin-top:calc(var(--spacing-sm, 1rem) * -1)}._carouselDots_12iml_39{display:flex;gap:.5rem;justify-content:center}._carouselDot_12iml_39{width:8px;height:8px;border-radius:50%;background:var(--color-border, #2a2a3a);transition:var(--transition, .2s ease)}._carouselDot_12iml_39._active_12iml_53{background:var(--color-accent, #22d3ee)}._continueButton_12iml_57{background:var(--color-primary, #6366f1);color:#fff;border:none;padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;font-family:var(--font-display, "Russo One", sans-serif);cursor:pointer;transition:var(--transition, .2s ease);margin-top:auto}._continueButton_12iml_57:hover{background:var(--color-primary-hover, #818cf8)}._quizScreen_12iml_75{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1}._intro_12iml_19{font-family:var(--font-display, "Russo One", sans-serif);font-size:var(--small-font, 1.875rem);color:var(--color-accent, #22d3ee);text-align:center;margin-bottom:var(--spacing-sm, 1rem)}._progress_12iml_90{display:flex;gap:.5rem;justify-content:center;margin-bottom:var(--spacing-sm, 1rem)}._progressDot_12iml_97{width:12px;height:12px;border-radius:50%;background:var(--color-border, #2a2a3a);transition:var(--transition, .2s ease)}._progressDot_12iml_97._active_12iml_53{background:var(--color-primary, #6366f1)}._progressDot_12iml_97._completed_12iml_109{background:var(--color-accent, #22d3ee)}._questionContainer_12iml_113{flex:1;display:flex;flex-direction:column;gap:var(--spacing-sm, 1rem)}._questionText_12iml_120{font-size:1.25rem;color:var(--color-text, #e8e8ec);font-weight:600;text-align:center}._questionContext_12iml_127{font-size:1rem;color:var(--color-text-muted, #9999a8);text-align:center;margin-bottom:var(--spacing-sm, 1rem)}._options_12iml_134{display:flex;flex-direction:column;gap:var(--spacing-xs, .5rem)}._option_12iml_134{background:var(--color-bg-secondary, #12121a);border:1px solid var(--color-border, #2a2a3a);color:var(--color-text, #e8e8ec);padding:var(--spacing-sm, 1rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;cursor:pointer;transition:var(--transition, .2s ease);text-align:left;font-family:inherit}._option_12iml_134:hover{border-color:var(--color-primary, #6366f1);background:#6366f11a}._option_12iml_134._selected_12iml_158{border-color:var(--color-accent, #22d3ee);background:#22d3ee1a}._recommendationScreen_12iml_164{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1}._diagnosticComplete_12iml_171{font-family:var(--font-display, "Russo One", sans-serif);font-size:1.25rem;color:var(--color-accent, #22d3ee);text-align:center}._summaryBox_12iml_178{background:var(--color-bg-secondary, #12121a);border:1px solid var(--color-border, #2a2a3a);border-radius:var(--border-radius, 12px);padding:var(--spacing-md, 2rem);text-align:center}._summaryLabel_12iml_186{font-size:.875rem;color:var(--color-text-muted, #9999a8);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--spacing-xs, .5rem)}._summaryText_12iml_194{font-size:1.125rem;color:var(--color-text, #e8e8ec);font-style:italic;white-space:pre-line;line-height:1.6}._recommendedLabel_12iml_202{font-size:.875rem;color:var(--color-text-muted, #9999a8);text-transform:uppercase;letter-spacing:.1em;text-align:center}._roleCards_12iml_210{display:flex;gap:var(--spacing-sm, 1rem);overflow-x:auto;padding-bottom:var(--spacing-xs, .5rem);scroll-snap-type:x mandatory}._roleCard_12iml_210{flex:0 0 280px;background:var(--color-bg-secondary, #12121a);border:2px solid var(--color-border, #2a2a3a);border-radius:var(--border-radius, 12px);padding:var(--spacing-sm, 1rem);transition:var(--transition, .2s ease);scroll-snap-align:center}._roleCard_12iml_210._recommended_12iml_202{border-color:var(--color-accent, #22d3ee);box-shadow:0 0 20px #22d3ee33}._roleCard_12iml_210._recommended_12iml_202:before{content:"RECOMMENDED";display:block;font-size:.625rem;color:var(--color-accent, #22d3ee);letter-spacing:.15em;margin-bottom:var(--spacing-xs, .5rem)}._roleTitle_12iml_242{font-family:var(--font-display, "Russo One", sans-serif);font-size:1.25rem;color:var(--color-primary, #6366f1);margin-bottom:var(--spacing-xs, .5rem)}._roleDescription_12iml_249{font-size:.875rem;color:var(--color-text-muted, #9999a8);line-height:1.5}._roleStrengths_12iml_255{display:flex;flex-direction:column;gap:.25rem;margin-top:var(--spacing-xs, .5rem)}._strengthTag_12iml_262{font-size:.75rem;color:var(--color-accent, #22d3ee)}._roleCard_12iml_210._selectable_12iml_267{cursor:pointer}._roleCard_12iml_210._selectable_12iml_267:hover{border-color:var(--color-primary, #6366f1);transform:translateY(-2px)}._resultScreen_12iml_277{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1;text-align:center}._assignedLabel_12iml_285{font-size:.875rem;color:var(--color-text-muted, #9999a8);text-transform:uppercase;letter-spacing:.1em}._resultCard_12iml_292{background:var(--color-bg-secondary, #12121a);border:2px solid var(--color-accent, #22d3ee);border-radius:var(--border-radius, 12px);padding:var(--spacing-md, 2rem);box-shadow:0 0 20px #22d3ee33;text-align:left}._resultCard_12iml_292 ._roleTitle_12iml_242{text-align:center}._resultCard_12iml_292 ._roleDescription_12iml_249{text-align:center;margin-bottom:var(--spacing-sm, 1rem)}._resultCard_12iml_292 ._roleStrengths_12iml_255{align-items:center}._resultButtons_12iml_314{display:flex;flex-direction:column;gap:var(--spacing-xs, .5rem);margin-top:auto}._acceptButton_12iml_321{background:var(--color-accent, #22d3ee);color:var(--color-bg, #0a0a0f);border:none;padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;font-family:var(--font-display, "Russo One", sans-serif);cursor:pointer;transition:var(--transition, .2s ease);font-weight:600}._acceptButton_12iml_321:hover{background:#5ce1f0}._decideButton_12iml_338{background:transparent;color:var(--color-text-muted, #9999a8);border:1px solid var(--color-border, #2a2a3a);padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:.875rem;font-family:inherit;cursor:pointer;transition:var(--transition, .2s ease)}._decideButton_12iml_338:hover{border-color:var(--color-text-muted, #9999a8);color:var(--color-text, #e8e8ec)}._selectionScreen_12iml_356{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1}._selectionTitle_12iml_363{font-family:var(--font-display, "Russo One", sans-serif);font-size:1.25rem;color:var(--color-accent, #22d3ee);text-align:center}._welcomeScreen_12iml_371{display:flex;flex-direction:column;gap:var(--spacing-md, 2rem);flex:1;text-align:center}._welcomeTitle_12iml_379{font-family:var(--font-display, "Russo One", sans-serif);font-size:var(--small-font, 1.875rem);color:var(--color-primary, #6366f1)}._welcomeRole_12iml_385{color:var(--color-accent, #22d3ee)}._welcomeDescription_12iml_389{font-size:1.125rem;color:var(--color-text, #e8e8ec);max-width:500px;margin:0 auto;line-height:1.6}._statsList_12iml_397{display:flex;flex-direction:column;gap:var(--spacing-sm, 1rem);text-align:left;max-width:400px;margin:0 auto}._statItem_12iml_406{background:var(--color-bg-secondary, #12121a);border-radius:var(--border-radius-sm, 8px);padding:var(--spacing-sm, 1rem)}._statLabel_12iml_412{font-size:.75rem;color:var(--color-accent, #22d3ee);text-transform:uppercase;letter-spacing:.1em;margin-bottom:.25rem}._statValue_12iml_420{font-size:.875rem;color:var(--color-text, #e8e8ec)}._strengthsList_12iml_425{list-style:none;padding:0;margin:0}._strengthsList_12iml_425 li{padding:.25rem 0}._strengthsList_12iml_425 li:before{content:"+ ";color:var(--color-accent, #22d3ee)}._confirmButton_12iml_440{background:var(--color-primary, #6366f1);color:#fff;border:none;padding:var(--spacing-sm, 1rem) var(--spacing-md, 2rem);border-radius:var(--border-radius-sm, 8px);font-size:1rem;font-family:var(--font-display, "Russo One", sans-serif);cursor:pointer;transition:var(--transition, .2s ease);margin-top:auto}._confirmButton_12iml_440:hover{background:var(--color-primary-hover, #818cf8)}@media(max-width:768px){._introScreen_12iml_19 ._roleCards_12iml_210,._selectionScreen_12iml_356 ._roleCards_12iml_210{flex-direction:row}._introScreen_12iml_19 ._roleCard_12iml_210,._selectionScreen_12iml_356 ._roleCard_12iml_210{flex:0 0 260px}} diff --git a/public/glitch/glitch_gallery/assets/index-BOUPxVBe.js b/public/glitch/glitch_gallery/assets/index-BOUPxVBe.js new file mode 100644 index 0000000..fc5591c --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-BOUPxVBe.js @@ -0,0 +1 @@ +import{r as n,j as e}from"./index-CEeZxcxj.js";const H="_container_166qm_3",U="_panel_166qm_21",Y="_imageFrame_166qm_38",K="_sceneImage_166qm_63",O="_sceneFallback_166qm_70",P="_sceneFallbackGlow_166qm_102",V="_sceneFallbackHud_166qm_113",$="_sceneFallbackBadge_166qm_122",G="_sceneFallbackSignal_166qm_123",W="_sceneFallbackCopy_166qm_138",J="_sceneFallbackKicker_166qm_146",z="_sceneFallbackTitle_166qm_155",Q="_sceneFallbackDetail_166qm_164",X="_sceneFallbackBars_166qm_171",Z="_dialogueBox_166qm_196",ee="_dialogueHeader_166qm_217",ae="_title_166qm_224",se="_loopBadge_166qm_235",te="_description_166qm_253",ne="_actionButton_166qm_261",ce="_choices_166qm_296",oe="_choiceButton_166qm_303",ie="_choiceKey_166qm_337",le="_choiceContent_166qm_366",re="_choiceTitle_166qm_373",de="_choiceDesc_166qm_380",me="_rejection_166qm_387",he="_rejectionBadge_166qm_395",pe="_quote_166qm_416",ge="_explanation_166qm_426",ue="_insightButton_166qm_435",xe="_insight_166qm_435",_e="_insightTitle_166qm_465",je="_paradoxDiagram_166qm_474",be="_paradoxNode_166qm_486",Ne="_paradoxArrow_166qm_495",ke="_insightText_166qm_513",ye="_completeButton_166qm_530",Be="_successBox_166qm_566",ve="_successTitle_166qm_570",Ce="_stats_166qm_581",qe="_scoreDisplay_166qm_587",Te="_scoreLabel_166qm_597",Fe="_scoreValue_166qm_605",a={container:H,panel:U,imageFrame:Y,sceneImage:K,sceneFallback:O,sceneFallbackGlow:P,sceneFallbackHud:V,sceneFallbackBadge:$,sceneFallbackSignal:G,sceneFallbackCopy:W,sceneFallbackKicker:J,sceneFallbackTitle:z,sceneFallbackDetail:Q,sceneFallbackBars:X,dialogueBox:Z,dialogueHeader:ee,title:ae,loopBadge:se,description:te,actionButton:ne,choices:ce,choiceButton:oe,choiceKey:ie,choiceContent:le,choiceTitle:re,choiceDesc:de,rejection:me,rejectionBadge:he,quote:pe,explanation:ge,insightButton:ue,insight:xe,insightTitle:_e,paradoxDiagram:je,paradoxNode:be,paradoxArrow:Ne,insightText:ke,completeButton:ye,successBox:Be,successTitle:ve,stats:Ce,scoreDisplay:qe,scoreLabel:Te,scoreValue:Fe},f="/glitch/migration-paradox",fe=2,Ae=1,u={presenting:{badge:"Migration Briefing",title:"Stakeholders Await Your Plan",copy:"Frame the migration as progress without triggering fear.",detail:"You need a strategy that creates momentum before the paradox closes in.",tone:"primary"},"rejection-value":{badge:"Stakeholder Response",title:"Too Much Change",copy:"Your pitch sounded valuable, but it also sounded dangerous.",detail:"They want new capability only if nothing important feels different.",tone:"danger"},"rejection-same":{badge:"Stakeholder Response",title:"Too Little Value",copy:"Your pitch sounded safe, but it also sounded pointless.",detail:"They want risk contained, but they still expect the migration to matter.",tone:"danger"},awareness:{badge:"Pattern Detected",title:"Expose The Contradiction",copy:"Show how value and continuity need different phases, not one impossible promise.",detail:"Explore, preserve, and then innovate.",tone:"accent"},complete:{badge:"Challenge Complete",title:"Paradox Resolved",copy:"You reframed the migration into a sequence stakeholders can accept.",detail:"Value and stability can coexist when delivery is phased.",tone:"success"}};function we(c){if(typeof c!="string")return f;const o=c.trim();return o?o.replace(/\/+$/,""):f}function b(c,o){return`${c}/${o}`}function A(c,o){const s=c==="A"?fe:Ae,i=Math.floor(Math.random()*s)+1;return b(o,`rejection${c}_${i}.png`)}function x({src:c,alt:o,fallback:s,onImageError:i}){return e.jsx("div",{className:a.imageFrame,children:c?e.jsx("img",{src:c,alt:o,className:a.sceneImage,onError:()=>i(c)}):e.jsxs("div",{className:a.sceneFallback,"data-tone":s.tone,role:"img","aria-label":o,children:[e.jsx("div",{className:a.sceneFallbackGlow}),e.jsxs("div",{className:a.sceneFallbackHud,children:[e.jsx("span",{className:a.sceneFallbackBadge,children:s.badge}),e.jsx("span",{className:a.sceneFallbackSignal,children:"GLITCH SIM"})]}),e.jsxs("div",{className:a.sceneFallbackCopy,children:[e.jsx("p",{className:a.sceneFallbackKicker,children:s.copy}),e.jsx("h3",{className:a.sceneFallbackTitle,children:s.title}),e.jsx("p",{className:a.sceneFallbackDetail,children:s.detail})]}),e.jsxs("div",{className:a.sceneFallbackBars,"aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]})]})})}function Se({config:c,onComplete:o,onProgress:s,theme:i,className:w}){const _=c?.params??{},[m,h]=n.useState("intro"),[l,v]=n.useState({loopCount:0,valueAttempts:0,sameAttempts:0}),[N,E]=n.useState(!1),[C,q]=n.useState(""),[T,S]=n.useState({}),r=n.useMemo(()=>we(_.assetBaseUrl??_.imageBaseUrl),[_.assetBaseUrl,_.imageBaseUrl]),j=n.useMemo(()=>({presenting:b(r,"presenting.png"),insight:b(r,"insight.png"),complete:b(r,"complete.png")}),[r]),I={"--gc-primary":i?.primary||"#6366f1","--gc-accent":i?.accent||"#22d3ee","--gc-bg":i?.bg||"#0a0a0f","--gc-bg-secondary":i?.bgSecondary||"#12121a","--gc-text":i?.text||"#e8e8ec","--gc-text-muted":i?.textMuted||"#9999a8","--gc-border":i?.border||"#2a2a3a"},d=l.valueAttempts+l.sameAttempts,k=d>=4,p=n.useCallback(t=>T[t]?void 0:t,[T]),g=n.useCallback(t=>{S(B=>B[t]?B:{...B,[t]:!0})},[]),D=n.useCallback(()=>{h("choice"),s?.(10)},[s]),M=n.useCallback(()=>{q(A("A",r)),v(t=>({...t,valueAttempts:t.valueAttempts+1,loopCount:t.loopCount+(t.sameAttempts>t.valueAttempts?.5:0)})),h("rejection-value"),s?.(Math.min(30+d*10,80))},[r,d,s]),L=n.useCallback(()=>{q(A("B",r)),v(t=>({...t,sameAttempts:t.sameAttempts+1,loopCount:t.loopCount+(t.valueAttempts>t.sameAttempts?.5:0)})),h("rejection-same"),s?.(Math.min(30+d*10,80))},[r,d,s]),F=n.useCallback(()=>{h("choice")},[]),y=n.useCallback(()=>{E(!0),h("awareness"),s?.(90)},[s]),R=n.useCallback(()=>{h("complete"),s?.(100),o({success:!0,score:100,data:{loopsBeforeInsight:Math.floor(l.loopCount),totalAttempts:d,valueAttempts:l.valueAttempts,sameAttempts:l.sameAttempts},rewards:{paradoxes:[{id:"migration-paradox",name:"The Migration Paradox",description:"Stakeholders simultaneously demand that a migration adds value AND changes nothing.",rarity:"uncommon"}]}})},[o,s,l,d]);return e.jsxs("div",{className:`${a.container} ${w||""}`,style:I,children:[m==="intro"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.presenting),alt:"Presenting to stakeholders",fallback:u.presenting,onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsx("h2",{className:a.title,children:"The Migration Paradox"}),e.jsx("p",{className:a.description,children:"You've been tasked with migrating the core system. Your stakeholders are waiting for your strategy."}),e.jsx("button",{className:a.actionButton,onClick:D,children:"▶ Present Your Strategy"})]})]}),m==="choice"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.presenting),alt:"Presenting options",fallback:u.presenting,onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.dialogueHeader,children:[e.jsx("h2",{className:a.title,children:"Choose Your Approach"}),l.loopCount>0&&e.jsxs("span",{className:a.loopBadge,children:["LOOP ",Math.floor(l.loopCount)+1]})]}),e.jsx("p",{className:a.description,children:"How will you pitch the migration project?"}),e.jsxs("div",{className:a.choices,children:[e.jsxs("button",{className:a.choiceButton,onClick:M,children:[e.jsx("span",{className:a.choiceKey,children:"A"}),e.jsxs("span",{className:a.choiceContent,children:[e.jsx("span",{className:a.choiceTitle,children:"Emphasize Change"}),e.jsx("span",{className:a.choiceDesc,children:'"The new system will add value and enable new capabilities"'})]})]}),e.jsxs("button",{className:a.choiceButton,onClick:L,children:[e.jsx("span",{className:a.choiceKey,children:"B"}),e.jsxs("span",{className:a.choiceContent,children:[e.jsx("span",{className:a.choiceTitle,children:"Emphasize No Change"}),e.jsx("span",{className:a.choiceDesc,children:'"Everything will work exactly the same as before"'})]})]})]}),k&&!N&&e.jsx("button",{className:a.insightButton,onClick:y,children:"✦ Wait... I see the pattern"})]})]}),m==="rejection-value"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(C),alt:"Stakeholder rejection",fallback:u["rejection-value"],onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.rejection,children:[e.jsx("span",{className:a.rejectionBadge,children:"✗ REJECTED"}),e.jsx("p",{className:a.quote,children:'"Are you insane? This will break everything!"'}),e.jsx("p",{className:a.explanation,children:`"If you want to change the core system, you need to make absolutely sure that everything works exactly the same. We can't risk any disruption."`})]}),e.jsx("button",{className:a.actionButton,onClick:F,children:"▶ Try a Different Approach"}),k&&!N&&e.jsx("button",{className:a.insightButton,onClick:y,children:"✦ Wait... I see the pattern"})]})]}),m==="rejection-same"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(C),alt:"Stakeholder rejection",fallback:u["rejection-same"],onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.rejection,children:[e.jsx("span",{className:a.rejectionBadge,children:"✗ REJECTED"}),e.jsx("p",{className:a.quote,children:'"This is insane. Why would we do this?"'}),e.jsx("p",{className:a.explanation,children:`"If everything is going to stay exactly the same, why would we spend all this time and money replacing the core system? What's the point?"`})]}),e.jsx("button",{className:a.actionButton,onClick:F,children:"▶ Try a Different Approach"}),k&&!N&&e.jsx("button",{className:a.insightButton,onClick:y,children:"✦ Wait... I see the pattern"})]})]}),m==="awareness"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.insight),alt:"Insight moment",fallback:u.awareness,onImageError:g}),e.jsxs("div",{className:a.dialogueBox,children:[e.jsxs("div",{className:a.insight,children:[e.jsx("h2",{className:a.insightTitle,children:"★ The Paradox Revealed ★"}),e.jsxs("p",{className:a.insightText,children:["You've discovered the ",e.jsx("strong",{children:"Migration Paradox"}),": stakeholders demand that you change things - to give value. But also that nothing changes, to contain risk."]}),e.jsxs("p",{className:a.insightText,children:["The solution is ",e.jsx("strong",{children:"phased delivery"}),". First, prove business case. Then prove you can preserve existing functionality. Then introduce new capabilities."]}),e.jsxs("div",{className:a.paradoxDiagram,children:[e.jsx("div",{className:a.paradoxNode,children:'"Explore"'}),e.jsx("div",{className:a.paradoxArrow,children:"→"}),e.jsx("div",{className:a.paradoxNode,children:'"Preserve"'}),e.jsx("div",{className:a.paradoxArrow,children:"→"}),e.jsx("div",{className:a.paradoxNode,children:'"Innovate"'}),e.jsx("div",{className:a.paradoxArrow,children:"→"})]})]}),e.jsx("button",{className:a.completeButton,onClick:R,children:"▶ Complete Challenge"})]})]}),m==="complete"&&e.jsxs("div",{className:a.panel,children:[e.jsx(x,{src:p(j.complete),alt:"Challenge complete",fallback:u.complete,onImageError:g}),e.jsx("div",{className:a.dialogueBox,children:e.jsxs("div",{className:a.successBox,children:[e.jsx("h2",{className:a.successTitle,children:"★ CHALLENGE COMPLETE ★"}),e.jsxs("p",{className:a.stats,children:["You experienced ",Math.floor(l.loopCount)," loop(s) before seeing the pattern."]}),e.jsxs("div",{className:a.scoreDisplay,children:[e.jsx("span",{className:a.scoreLabel,children:"SCORE"}),e.jsx("span",{className:a.scoreValue,children:"100"})]})]})})]})]})}const Ie={name:"migration-paradox",displayName:"The Migration Paradox",version:"1.0.0",paramSchema:{assetBaseUrl:{type:"string",label:"Asset Base URL",description:"Shared CDN or public folder containing presenting.png, insight.png, complete.png, rejectionA_1.png, rejectionA_2.png, and rejectionB_1.png.",default:"/glitch/migration-paradox"}},defaultParams:{assetBaseUrl:"/glitch/migration-paradox"}};export{Se as default,Ie as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-Bdi24PkQ.css b/public/glitch/glitch_gallery/assets/index-Bdi24PkQ.css new file mode 100644 index 0000000..38eeab7 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-Bdi24PkQ.css @@ -0,0 +1 @@ +:root{--ccd-bg: #04010b;--ccd-panel: rgba(11, 10, 22, .86);--ccd-panel-edge: rgba(168, 160, 255, .22);--ccd-text: #f4efff;--ccd-muted: #aaa1c8;--ccd-grid-line: rgba(255, 255, 255, .08);--ccd-card-bg: rgba(10, 11, 20, .74);--ccd-card-edge: rgba(255, 255, 255, .08);--ccd-accent-soft: rgba(255, 113, 74, .12);--ccd-accent-cool: rgba(125, 100, 255, .14)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 18% 18%,rgba(255,100,72,.18),transparent 20rem),radial-gradient(circle at 82% 24%,rgba(111,90,255,.22),transparent 26rem),radial-gradient(circle at 50% 100%,rgba(54,20,92,.4),transparent 28rem),linear-gradient(180deg,#06020f,#030108 55%,#020106);color:var(--ccd-text);font-family:Space Grotesk,sans-serif}button,input,select,textarea{font:inherit}.ccd-shell{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.ccd-panel{width:min(94vw,64rem);display:grid;gap:1.4rem;padding:clamp(1.2rem,3vw,2rem);border-radius:1.8rem}.ccd-panel-wide-scene{width:min(97vw,84rem)}.ccd-topbar{padding:.8rem 1rem;display:grid;gap:1rem}.ccd-toolbar-row{display:flex;justify-content:flex-end}.ccd-pipeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.ccd-pipeline-step{display:flex;font-size:small;align-items:center;gap:.65rem;min-height:1.25rem;padding:.4rem;border:1px solid rgba(255,255,255,.08);border-radius:2rem;color:#cfc6ea;background:#ffffff08;transition:border-color .14s ease,background .14s ease,box-shadow .14s ease,transform .14s ease}.ccd-pipeline-step.is-active{border-color:#ff795652;color:#f3edff;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1a;transform:translateY(-1px)}.ccd-pipeline-index{display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;flex:0 0 auto;border-radius:999px;border:1px solid rgba(255,255,255,.12);color:var(--ccd-muted);background:#ffffff0a;font-family:Russo One,sans-serif;font-size:.78rem}.ccd-pipeline-step.is-active .ccd-pipeline-index{border-color:#ff795642;color:#fff4ef;background:#ff714a24}.ccd-copy{display:grid;gap:.65rem}.ccd-kicker,.ccd-stat-label{margin:0;color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.22em;text-transform:uppercase}.emojilarge{font-size:2.8rem;line-height:1}.ccd-copy h1,.ccd-summary-card strong,.ccd-stat strong,.ccd-chart-head strong,.ccd-band-meta strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-copy h1{margin:0;font-size:clamp(1.9rem,3vw,3rem);line-height:.96;letter-spacing:-.03em}.ccd-description{margin:0;max-width:48rem;color:#c8c0df;line-height:1.55}.ccd-chooser-button,.ccd-modal-close{padding:.8rem 1rem;border:1px solid rgba(255,121,86,.28);border-radius:.9rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.88rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-chooser-button:hover,.ccd-modal-close:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-modal-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-start;justify-content:center;padding:1.5rem 1rem 1rem;background:#03040abd;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow-y:auto}.ccd-modal{width:min(92vw,62rem);max-height:min(90vh,52rem);overflow:auto;display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.3rem;background:linear-gradient(180deg,#140e28eb,#0a0813f5),#0b0a16f5;box-shadow:0 1.4rem 3rem #0000006b}.ccd-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.ccd-modal-header h2{margin:0;font-family:Russo One,sans-serif;font-size:1.3rem;font-weight:400}.ccd-selector{display:grid;gap:.95rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:radial-gradient(circle at top center,rgba(255,113,74,.08),transparent 40%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#090a15e0}.ccd-selector-root{display:grid;justify-items:center;gap:.35rem;text-align:center}.ccd-selector-root strong,.ccd-selector-link strong,.ccd-selector-axis strong,.ccd-selector-leaf strong{font-family:Russo One,sans-serif;font-weight:400}.ccd-selector-root strong{font-size:1.25rem}.ccd-selector-root p{margin:0;max-width:42rem;color:#d8d0f8;line-height:1.45}.ccd-selector-raw,.ccd-selector-results{display:grid;gap:.9rem}.ccd-selector-raw{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-selector-link,.ccd-selector-leaf{position:relative;display:grid;gap:.38rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;color:#e9e3ff;text-decoration:none;background:#ffffff08;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease,background .14s ease}.ccd-selector-link:hover,.ccd-selector-leaf:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-link.is-active,.ccd-selector-leaf.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1.2rem #8b6aff1f}.ccd-selector-link-label,.ccd-selector-leaf-dim{color:var(--ccd-muted);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.ccd-selector-link-label{margin-bottom:.15rem}.ccd-selector-section{display:grid;gap:.75rem}.ccd-selector-axis{position:relative;display:grid;justify-items:center;gap:.38rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08;text-align:center}.ccd-selector-axis p{margin:0;max-width:34rem;color:#d8d0f8;line-height:1.45}.ccd-selector-option{justify-self:start;padding:.82rem .7rem;border:1px solid rgba(255,255,255,.08);border-radius:.9rem;color:#e9e3ff;background:#ffffff08;cursor:pointer;transition:transform .14s ease,border-color .14s ease,background .14s ease,box-shadow .14s ease}.ccd-selector-option:hover{transform:translateY(-1px);border-color:#ffffff2e}.ccd-selector-option.is-active{border-color:#ff795652;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;box-shadow:0 0 1rem #8b6aff1f}.ccd-selector-results{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-current{display:grid;gap:.55rem;padding:.9rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-mini-diagram{display:flex;align-items:end;gap:.32rem;min-height:4rem;padding:.55rem;margin:.15rem 0 .25rem;border-radius:.85rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 24%),#04070feb}.ccd-mini-diagram-bar{flex:1 1 0;min-height:.5rem;border-radius:.45rem .45rem .18rem .18rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6);box-shadow:0 0 .65rem #ff9e6d29}.ccd-mini-diagram-bar.is-energy{background:linear-gradient(180deg,#78dfffeb,#8d7effe6);box-shadow:0 0 .8rem #8d7eff2e}.ccd-mini-diagram-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.28rem;align-items:stretch}.ccd-mini-diagram-grid-cell{display:block;min-height:.95rem;border-radius:.32rem;background:linear-gradient(180deg,#ffd35dbd,#8f7dffe0);box-shadow:0 0 .7rem #8d7eff24}.ccd-event-note{display:grid;gap:.45rem;padding:.95rem 1rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(90deg,#ff714a14,#7d64ff14),#ffffff08}.ccd-event-note p{margin:0;color:#d8d0f8;line-height:1.45}.ccd-page{display:grid;gap:1rem}.ccd-orbit-screen{display:grid;place-items:center;min-height:min(80vh,48rem);width:100%}.ccd-orbit-panel{width:min(100%,56rem);display:grid;gap:1rem;padding:clamp(1rem,2.8vw,1.8rem);border:1px solid rgba(255,255,255,.09);border-radius:1.6rem;background:radial-gradient(circle at 16% 18%,rgba(255,113,74,.08),transparent 18rem),radial-gradient(circle at 84% 20%,rgba(125,100,255,.14),transparent 22rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15eb}.ccd-orbit-copy{display:grid;gap:.4rem;justify-items:center;text-align:center}.ccd-orbit-copy h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(2rem,4vw,3.2rem);font-weight:400;line-height:.95;letter-spacing:-.03em}.ccd-orbit-copy p{margin:0;max-width:36rem;color:#d8d0f8;line-height:1.55}.ccd-orbit-stage{position:relative;width:100%;overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1.35rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.08),transparent 18rem),linear-gradient(180deg,#080a14f5,#02040bfa)}.ccd-orbit-svg{display:block;width:100%;height:auto;min-height:36rem}.ccd-orbit-track{fill:none;stroke:#ffffff24;stroke-width:2.5;stroke-dasharray:12 10}.ccd-orbit-earth-atmosphere{fill:#68cdff2e;filter:drop-shadow(0 0 1.6rem rgba(76,173,255,.18))}.ccd-orbit-continent{fill:#57e3968c}.ccd-orbit-night-shadow{fill:#050a1a7a}.ccd-orbit-telescope{filter:drop-shadow(0 0 1.2rem rgba(255,167,113,.24))}.ccd-orbit-actions{display:flex;justify-content:center}.ccd-intro-screen{display:grid;place-items:center;min-height:min(76vh,44rem)}.ccd-intro-panel{display:grid;gap:1.1rem;width:min(100%,48rem);padding:clamp(1rem,2.6vw,1.6rem);border:1px solid rgba(255,255,255,.09);border-radius:1.5rem;background:radial-gradient(circle at 18% 18%,rgba(255,113,74,.12),transparent 18rem),radial-gradient(circle at 82% 24%,rgba(125,100,255,.16),transparent 24rem),radial-gradient(circle at 50% 0%,rgba(255,255,255,.04),transparent 18rem),linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%),#080a15e6;justify-items:center}.ccd-intro-logo-frame{display:grid;place-items:center;width:clamp(6.5rem,16vw,8.75rem);aspect-ratio:1;padding:.45rem;border:1px solid rgba(255,255,255,.12);border-radius:50%;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.14),transparent 48%),linear-gradient(180deg,#ff714a1f,#7d64ff1a),#ffffff08;box-shadow:0 0 0 1px #ffffff08 inset,0 0 1.8rem #7d64ff29}.ccd-intro-logo{width:100%;height:100%;object-fit:cover;border-radius:50%;box-shadow:0 0 1.2rem #ff714a2e}.ccd-intro-brand{display:inline-grid;justify-items:center;gap:.18rem;text-align:center}.ccd-intro-brand-mark,.ccd-intro-brand-sub{font-family:Russo One,sans-serif;font-weight:400;line-height:1}.ccd-intro-brand-mark{color:#fff1e8;font-size:clamp(1.1rem,2.8vw,1.55rem);letter-spacing:.08em;text-transform:uppercase}.ccd-intro-brand-sub{color:#d7cff3;font-size:clamp(1.55rem,4.5vw,2.8rem);letter-spacing:-.04em}.ccd-intro-copy{display:grid;gap:.45rem;justify-items:center;text-align:center}.ccd-intro-copy h2,.ccd-intro-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-intro-copy h2{font-size:clamp(2rem,4vw,3.4rem);line-height:.95;letter-spacing:-.03em}.ccd-intro-copy p,.ccd-intro-card p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-intro-copy p{font-size:1rem;max-width:35rem}.ccd-intro-covers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;width:100%}.ccd-intro-card{display:grid;gap:.42rem;padding:.85rem;border:1px solid rgba(255,255,255,.08);border-radius:1.05rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 22%),#ffffff08;box-shadow:0 0 0 1px #ffffff05 inset}.ccd-intro-card-index{color:var(--ccd-muted);font-family:Russo One,sans-serif;font-size:.72rem;letter-spacing:.18em}.ccd-intro-actions{display:flex;justify-content:flex-end}.ccd-energy-panel{display:grid;gap:1rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#0a0c16e0}.ccd-energy-scale{display:grid;gap:.65rem}.ccd-energy-spectrum{position:relative;height:3.5rem;border-radius:999px;background:linear-gradient(90deg,#ff5752f2,#ff7e47f2 14%,#ffba52f2,#fff461f2,#7df15ff2,#61e6faf2,#6b7ffff2 84%,#c67afff2);box-shadow:inset 0 0 0 1px #ffffff14,0 0 1.8rem #7d64ff24}.ccd-energy-spectrum:after{content:"";position:absolute;top:50%;left:var(--ccd-spectrum-position, 50%);width:1.15rem;height:4.25rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:var(--ccd-spectrum-color, rgba(255, 255, 255, .9));box-shadow:0 0 1.1rem var(--ccd-spectrum-color, rgba(255, 255, 255, .44)),0 0 0 .2rem #05070de6;transform:translate(-50%,-50%)}.ccd-energy-slider-wrap{padding:0 .3rem}.ccd-energy-slider{width:100%;margin:0;appearance:none;background:transparent}.ccd-energy-slider::-webkit-slider-runnable-track{height:.4rem;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-webkit-slider-thumb{appearance:none;width:1rem;height:1rem;margin-top:-.3rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-slider::-moz-range-track{height:.4rem;border:0;border-radius:999px;background:#ffffff24}.ccd-energy-slider::-moz-range-thumb{width:1rem;height:1rem;border:2px solid rgba(255,255,255,.9);border-radius:999px;background:#fffffffa;box-shadow:0 0 .8rem #7d64ff2e}.ccd-energy-scale-labels{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#cfc6ea;font-size:.84rem}.ccd-energy-scale-labels-strong{font-family:Russo One,sans-serif;font-size:.78rem;letter-spacing:.04em}.ccd-energy-readout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.ccd-energy-notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-transition-screen{display:grid;place-items:center;min-height:min(68vh,34rem);padding:1rem 0;background:none}.ccd-transition-card{width:min(100%,30rem);display:grid;gap:.75rem;justify-items:center;padding:.4rem 0;text-align:center}.ccd-transition-card h2{margin:0;font-family:Russo One,sans-serif;font-size:clamp(1.7rem,4vw,2.35rem);font-weight:400;line-height:.98}.ccd-transition-card p{margin:0;max-width:24rem;color:#d8d0f8;line-height:1.5}.ccd-transition-actions{display:flex;justify-content:center;width:100%}.ccd-closing-screen{display:grid;place-items:center;min-height:min(72vh,40rem);padding:1rem 0}.ccd-closing-panel{width:min(100%,44rem);display:grid;gap:1rem;padding:.4rem 0}.ccd-closing-panel h2,.ccd-closing-card strong{margin:0;font-family:Russo One,sans-serif;font-weight:400}.ccd-closing-panel h2{font-size:clamp(1.8rem,4vw,2.5rem);line-height:.98}.ccd-closing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.ccd-closing-card{display:grid;gap:.38rem;padding:.9rem;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:#ffffff08}.ccd-closing-card p,.ccd-closing-message{margin:0;color:#d8d0f8;line-height:1.5}.ccd-closing-message{font-family:Russo One,sans-serif;font-size:1rem;text-align:center}.ccd-closing-actions{display:flex;justify-content:center}.ccd-experience-frame{display:grid;gap:1rem}.ccd-experience-overlay{display:grid;gap:.75rem;width:100%;max-width:36rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.1);border-radius:1.2rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 22%,rgba(125,100,255,.06)),#0a0c16e0;box-shadow:0 0 0 1px #ffffff08 inset}.ccd-experience-step{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#d8d0f8;font-size:.84rem}.ccd-experience-overlay h2{margin:0;font-family:Russo One,sans-serif;font-size:1.1rem;font-weight:400;line-height:1.15}.ccd-experience-overlay p{margin:0;color:#d8d0f8;line-height:1.5}.ccd-experience-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.ccd-experience-button{display:inline-flex;align-items:center;justify-content:center;min-width:7rem;padding:.72rem .95rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;text-decoration:none;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-experience-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1rem #8b6aff1f}.ccd-experience-button-secondary{border-color:#ffffff1f;background:#ffffff0a}.ccd-experience-spacer{width:7rem}.ccd-stage{display:grid;gap:1rem;justify-items:center}.ccd-grid-frame{position:relative;width:min(78vw,36rem);aspect-ratio:1;padding:1rem;border-radius:50%;background:linear-gradient(145deg,#ffffff0a,#ffffff03),#060812eb;box-shadow:inset 0 0 0 1px #ffffff0a,0 0 0 1px #9976ff14,0 1rem 3rem #00000057}.ccd-grid{position:relative;display:grid;grid-template-columns:repeat(18,minmax(0,1fr));width:100%;height:100%;overflow:hidden;border-radius:50%;background:linear-gradient(180deg,#080a14fa,#02040bfa),#05070d}.ccd-grid:before{content:"";position:absolute;inset:0;background:linear-gradient(var(--ccd-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--ccd-grid-line) 1px,transparent 1px);background-size:calc(100% / 18) calc(100% / 18);pointer-events:none}.ccd-grid:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,transparent 48%,rgba(0,0,0,.34) 100%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 12%,transparent 88%,rgba(255,255,255,.04));pointer-events:none}.ccd-cell{position:relative}.ccd-hit{position:absolute;left:50%;top:50%;border-radius:999px;pointer-events:none;will-change:transform,opacity;transition:opacity 60ms linear,transform 90ms ease-out,box-shadow .12s ease-out}.ccd-grid-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(151,100,255,.06),transparent 44%),radial-gradient(circle at 50% 50%,transparent 62%,rgba(255,110,74,.05) 100%);mix-blend-mode:screen;pointer-events:none}.ccd-readout,.ccd-summary-row{display:grid;gap:.9rem}.ccd-readout{width:min(78vw,36rem);grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-summary-row{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.ccd-stat,.ccd-summary-card,.ccd-chart-panel,.ccd-table-panel,.ccd-legend-chip{border:1px solid var(--ccd-card-edge);border-radius:1rem;background:var(--ccd-card-bg)}.ccd-stat,.ccd-summary-card{display:grid;gap:.35rem;padding:.95rem 1rem}.ccd-stat strong,.ccd-summary-card strong,.ccd-chart-head strong{font-size:1.28rem}.ccd-audio-button{padding:.72rem .9rem;border:1px solid rgba(255,121,86,.28);border-radius:.8rem;color:var(--ccd-text);background:linear-gradient(90deg,#ff714a1f,#7d64ff24),#ffffff0a;font-family:Russo One,sans-serif;font-size:.9rem;letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.ccd-audio-button:hover{transform:translateY(-1px);border-color:#ff79566b;box-shadow:0 0 1.1rem #8b6aff1f}.ccd-chart-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,113,74,.05),transparent 18%,transparent 80%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-table-panel{display:grid;gap:1rem;padding:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 15%,transparent 85%,rgba(125,100,255,.08)),var(--ccd-card-bg)}.ccd-chart-panel-wide{gap:1.15rem}.ccd-chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.ccd-periodogram{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:.8rem;min-height:20rem;align-items:end}.ccd-periodogram-band{display:grid;gap:.8rem}.ccd-bar-shell{display:flex;align-items:end;justify-content:center;min-height:18rem;padding:.8rem .4rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 26%),#04070feb}.ccd-bar-fill{width:100%;min-height:1.6rem;border-radius:.8rem .8rem .35rem .35rem}.ccd-band-meta{display:grid;gap:.15rem;justify-items:center;text-align:center;color:#cdc5e8;font-size:.84rem}.ccd-spectrum-legend{display:flex;flex-wrap:wrap;gap:.7rem}.ccd-event-table-shell{overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 14%),#04070ff5}.ccd-event-table,.ccd-event-table-head{display:grid;grid-template-columns:1.2fr 1fr .8fr .8fr;gap:.8rem;align-items:center}.ccd-event-table{padding:.72rem .95rem;border-bottom:1px solid rgba(255,255,255,.06);font-family:SFMono-Regular,Menlo,monospace;font-size:.86rem;letter-spacing:.02em}.ccd-event-table-head{padding:.85rem .95rem;background:linear-gradient(90deg,#ff714a1a,#7d64ff1f),#ffffff0a;color:#e9e3ff;font-family:Russo One,sans-serif;font-size:.76rem;letter-spacing:.14em}.ccd-event-table-body{max-height:26rem;overflow:auto}.ccd-event-table-body .ccd-event-table:nth-child(2n){background:#ffffff05}.ccd-event-table-empty{color:#aaa1c8}.ccd-legend-chip{display:inline-flex;align-items:center;gap:.55rem;padding:.72rem .85rem}.ccd-legend-dot{width:.7rem;height:.7rem;border-radius:999px}.ccd-spectrogram-shell{display:grid;grid-template-columns:5rem minmax(0,1fr);gap:.9rem;align-items:stretch}.ccd-spectrogram-axis{display:grid;grid-template-rows:repeat(8,minmax(0,1fr));gap:.5rem;color:#b7afd6;font-size:.84rem}.ccd-spectrogram-axis span{display:flex;align-items:center}.ccd-spectrogram{display:grid;gap:.45rem;overflow-x:auto}.ccd-spectrogram-row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:.3rem;min-width:22rem}.ccd-spectrogram-cell{display:block;min-height:1.6rem;border-radius:.35rem;background:#ffffff0f}.ccd-spectrogram-footer{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-chart-shell{display:grid;gap:.65rem;padding:.9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-flux-chart{position:relative;width:100%;height:15rem;overflow:visible;border-radius:.8rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 20%),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),#060912f0;background-size:auto,12.5% 100%,100% 20%}.ccd-flux-bin{fill:#ffffff06}.ccd-flux-bin-alt{fill:#ffffff0e}.ccd-flux-area{opacity:.9}.ccd-flux-line{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 .8rem rgba(143,125,255,.28))}.ccd-flux-mean-line{fill:none;stroke:#eff5ffeb;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:10 8;filter:drop-shadow(0 0 .45rem rgba(255,255,255,.16))}.ccd-flux-legend{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;color:#cdc5e8;font-size:.84rem}.ccd-flux-legend-item{display:inline-flex;align-items:center;gap:.45rem}.ccd-flux-legend-swatch{display:inline-block;width:1.6rem;height:.45rem;border-radius:999px}.ccd-flux-legend-swatch-raw{background:linear-gradient(90deg,#ff8d66,#ffd35d,#8f7dff)}.ccd-flux-legend-swatch-mean{background:repeating-linear-gradient(90deg,rgba(239,245,255,.92) 0 .45rem,transparent .45rem .8rem)}.ccd-flux-axis{display:flex;align-items:center;justify-content:space-between;color:#b7afd6;font-size:.84rem}.ccd-flux-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}.ccd-counts-shell{position:relative;padding:1rem .7rem .9rem;border-radius:1rem;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 16%),#04070feb}.ccd-counts-chart{position:relative;z-index:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(1rem,1fr));gap:.3rem;align-items:end;min-height:14rem}.ccd-count-bin{display:grid;gap:.45rem;align-items:end}.ccd-count-bin-label{color:#d9d2f0;font-size:.7rem;text-align:center}.ccd-count-bar-shell{display:flex;align-items:end;height:12rem;min-height:12rem;padding:.2rem;border-radius:.6rem;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 30%),#ffffff05}.ccd-count-bar{width:100%;min-height:.8rem;border-radius:.5rem .5rem .2rem .2rem;background:linear-gradient(180deg,#ffd45df2,#ff8a65e6 52%,#8d7effe6);box-shadow:0 0 1rem #8d7eff2e}.ccd-counts-legend-swatch-bin{background:linear-gradient(90deg,#ffd45df2,#ff8a65e6,#8d7effe6)}@media(max-width:860px){.ccd-panel{width:min(96vw,64rem)}.ccd-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(4,minmax(0,1fr))}.ccd-intro-covers{grid-template-columns:1fr}.ccd-energy-readout,.ccd-energy-notes{grid-template-columns:1fr 1fr}.ccd-closing-grid,.ccd-summary-row,.ccd-flux-metrics,.ccd-selector-results{grid-template-columns:1fr}.ccd-modal-header{display:grid}}@media(max-width:720px){.ccd-shell{padding:1rem}.ccd-intro-screen{min-height:auto}.ccd-grid-frame,.ccd-readout{width:100%}.ccd-pipeline,.ccd-readout{grid-template-columns:1fr}.ccd-intro-actions,.ccd-closing-actions{justify-content:stretch}.ccd-chart-head,.ccd-spectrogram-shell{grid-template-columns:1fr}.ccd-chart-head{display:grid}.ccd-spectrogram-axis{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.ccd-periodogram{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-energy-readout{grid-template-columns:repeat(3,minmax(0,1fr))}.ccd-energy-readout .ccd-stat{padding:.7rem .65rem}.ccd-energy-readout .ccd-stat strong{font-size:1rem}.ccd-energy-notes{grid-template-columns:1fr}.ccd-event-table,.ccd-event-table-head{grid-template-columns:repeat(2,minmax(0,1fr))}.ccd-selector-raw{grid-template-columns:1fr}.ccd-selector-link,.ccd-selector-leaf{padding:.95rem}.ccd-closing-actions .ccd-experience-button{width:100%}.ccd-experience-overlay{width:100%;max-width:none}.ccd-toolbar-row{justify-content:stretch}.ccd-chooser-button,.ccd-modal-close,.ccd-intro-actions .ccd-experience-button{width:100%}} diff --git a/public/glitch/glitch_gallery/assets/index-Be41ZfS7.js b/public/glitch/glitch_gallery/assets/index-Be41ZfS7.js new file mode 100644 index 0000000..fa5c524 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-Be41ZfS7.js @@ -0,0 +1 @@ +import{r as c,j as e,g as w,h as q,i as Z,a as z}from"./index-CEeZxcxj.js";const U="_container_101xd_1",Y="_frame_101xd_20",J="_squareLayout_101xd_26",X="_squarePanel_101xd_35",ee="_viewportPanel_101xd_44",te="_contentPanel_101xd_50",se="_panelBody_101xd_56",ne="_copy_101xd_66",ie="_muted_101xd_73",ae="_badge_101xd_77",ce="_choiceButton_101xd_89",re="_completeButton_101xd_90",oe="_sliderSection_101xd_112",le="_sliderHeader_101xd_118",de="_sliderLabel_101xd_125",ue="_sliderValue_101xd_132",xe="_valueInfinity_101xd_138",he="_slider_101xd_112",me="_sliderInfinity_101xd_170",fe="_sliderHint_101xd_184",pe="_statsOverlay_101xd_189",_e="_stat_101xd_189",ge="_statLabel_101xd_208",ye="_statValue_101xd_217",je="_statInfinity_101xd_223",ve="_warning_101xd_227",be="_warningText_101xd_233",Se="_warningQuestion_101xd_234",we="_warningChoices_101xd_245",Ne="_choiceInfinity_101xd_257",Me="_choiceFinite_101xd_265",Ie="_resultStats_101xd_273",Re="_resultRow_101xd_280",$e="_resultMessage_101xd_298",Ce="_resultSuccess_101xd_309",Le="_resultAccent_101xd_313",t={container:U,frame:Y,squareLayout:J,squarePanel:X,viewportPanel:ee,contentPanel:te,panelBody:se,copy:ne,muted:ie,badge:ae,choiceButton:ce,completeButton:re,sliderSection:oe,sliderHeader:le,sliderLabel:de,sliderValue:ue,valueInfinity:xe,slider:he,sliderInfinity:me,sliderHint:fe,statsOverlay:pe,stat:_e,statLabel:ge,statValue:ye,statInfinity:je,warning:ve,warningText:be,warningQuestion:Se,warningChoices:we,choiceInfinity:Ne,choiceFinite:Me,resultStats:Ie,resultRow:Re,resultMessage:$e,resultSuccess:Ce,resultAccent:Le},L=5,p=41;function Fe(d){const r=Math.min(Math.max(d,L),p);return r%2===0?r+1:r}function A(d){const r=[],i=d,x=2/i;for(let u=0;u1-N&&r.push(g,s,_)}return{positions:r,count:r.length/3}}function Pe({resolution:d,isInfinity:r}){const o=c.useRef(null),i=c.useMemo(()=>new Z,[]),{positions:x,count:u,cubeSize:m}=c.useMemo(()=>{const s=Math.min(d,p),_=A(s),f=2/s*.85;return{positions:_.positions,count:_.count,cubeSize:f}},[d]);c.useEffect(()=>{if(!(!o.current||u===0)){for(let s=0;s{o.current&&(o.current.rotation.y=s.clock.elapsedTime*.2)});const a=r?"#ef4444":"#818cf8";return e.jsxs("instancedMesh",{ref:o,args:[void 0,void 0,1e4],frustumCulled:!1,children:[e.jsx("boxGeometry",{args:[1,1,1]}),e.jsx("meshStandardMaterial",{color:a,emissive:a,emissiveIntensity:.05,roughness:.4,metalness:.3})]})}function C({resolution:d,isInfinity:r}){return e.jsxs(e.Fragment,{children:[e.jsx("ambientLight",{intensity:.3}),e.jsx("directionalLight",{position:[5,8,5],intensity:1.2,castShadow:!0}),e.jsx("directionalLight",{position:[-3,-2,-4],intensity:.4,color:"#22d3ee"}),e.jsx("pointLight",{position:[0,5,0],intensity:.5}),e.jsx(Pe,{resolution:d,isInfinity:r}),e.jsx(q,{enableZoom:!0,enablePan:!1,autoRotate:!1,minDistance:2,maxDistance:6})]})}function Be(){const d=c.useRef(null);return z(r=>{d.current&&(d.current.rotation.y=r.clock.elapsedTime*.3)}),e.jsxs("mesh",{ref:d,children:[e.jsx("sphereGeometry",{args:[1,128,128]}),e.jsx("meshStandardMaterial",{color:"#22d3ee",emissive:"#22d3ee",emissiveIntensity:.08,roughness:.15,metalness:.9,envMapIntensity:1})]})}function ke(){return e.jsxs(e.Fragment,{children:[e.jsx("ambientLight",{intensity:.3}),e.jsx("directionalLight",{position:[5,8,5],intensity:1.5}),e.jsx("directionalLight",{position:[-4,-2,-3],intensity:.5,color:"#6366f1"}),e.jsx("pointLight",{position:[0,3,3],intensity:.8,color:"#ffffff"}),e.jsx(Be,{}),e.jsx(q,{enableZoom:!1,enablePan:!1,autoRotate:!0,autoRotateSpeed:1.5})]})}function qe({config:d,onComplete:r,onProgress:o,theme:i,className:x}){const[u,m]=c.useState("exploring"),[a,g]=c.useState(L),[s,_]=c.useState(null),[f,N]=c.useState(!1),F=c.useRef(null),[y,O]=c.useState({stacked:!1,panelSize:320,gap:16,padding:16}),S=a>=p,P=c.useMemo(()=>A(Math.min(a,p)).count,[a]);c.useEffect(()=>{const n=F.current;if(!n||typeof ResizeObserver>"u")return;const l=()=>{const{width:h,height:v}=n.getBoundingClientRect();if(!h||!v)return;const R=v>h,V=Math.min(h,v),b=Math.round(Math.max(12,Math.min(28,V*.04))),$=Math.round(Math.max(12,Math.min(22,V*.03))),K=R?h-b*2:(h-b*2-$)/2,G=R?(v-b*2-$)/2:v-b*2;O({stacked:R,panelSize:Math.max(0,Math.floor(Math.min(K,G))),gap:$,padding:b})};l();const j=new ResizeObserver(l);return j.observe(n),()=>j.disconnect()},[]);const H={"--gc-primary":i?.primary||"#6366f1","--gc-accent":i?.accent||"#22d3ee","--gc-bg":i?.bg||"#0a0a0f","--gc-bg-secondary":i?.bgSecondary||"#12121a","--gc-text":i?.text||"#e8e8ec","--gc-text-muted":i?.textMuted||"#9999a8","--gc-border":i?.border||"#2a2a3a","--panel-gap":`${y.gap}px`,"--frame-pad":`${y.padding}px`},B={width:`${y.panelSize}px`,height:`${y.panelSize}px`};c.useEffect(()=>{o?.(10)},[o]);const D=c.useCallback(n=>{const l=Fe(parseInt(n.target.value,10));g(l);const j=10+l/p*40;o?.(Math.min(j,50)),l>=p&&!f&&(m("warning"),N(!0),o?.(70))},[f,o,p]),k=c.useCallback(n=>{_(n),m("result"),o?.(100)},[o]),E=c.useCallback(()=>{r({success:!0,score:100,data:{choice:s,finalResolution:a,exploredInfinity:f,completedAt:new Date().toISOString()}})},[s,a,f,r]),T=n=>n>=p?"∞":n.toString(),Q=(n,l)=>l?"∞":n.toLocaleString(),W=(n,l)=>{if(l)return"∞";const h=n*80;return h<1024?`${h} B`:h<1024*1024?`${(h/1024).toFixed(1)} KB`:`${(h/(1024*1024)).toFixed(2)} MB`},M=(n,l)=>e.jsxs("div",{className:`${t.squarePanel} ${t.viewportPanel}`,style:B,children:[n,e.jsxs("div",{className:t.statsOverlay,children:[e.jsxs("div",{className:t.stat,children:[e.jsx("span",{className:t.statLabel,children:"Blocks"}),e.jsx("span",{className:`${t.statValue} ${l?t.statInfinity:""}`,children:Q(P,l)})]}),e.jsxs("div",{className:t.stat,children:[e.jsx("span",{className:t.statLabel,children:"Memory"}),e.jsx("span",{className:`${t.statValue} ${l?t.statInfinity:""}`,children:W(P,l)})]})]})]}),I=n=>e.jsx("div",{className:`${t.squarePanel} ${t.contentPanel}`,style:B,children:e.jsx("div",{className:t.panelBody,children:n})});return e.jsx("div",{className:`${t.container} ${x||""}`,style:H,children:e.jsx("div",{ref:F,className:t.frame,children:e.jsxs("div",{className:t.squareLayout,style:{flexDirection:y.stacked?"column":"row"},children:[u==="exploring"&&e.jsxs(e.Fragment,{children:[M(e.jsx(w,{camera:{position:[0,0,3.5],fov:50},children:e.jsx(C,{resolution:a,isInfinity:S})}),S),I(e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.badge,children:"Resolution"}),e.jsx("p",{className:`${t.copy} ${t.muted}`,children:"Every step adds more cubes to the shell. Keep sliding until the approximation breaks open."}),e.jsxs("div",{className:t.sliderSection,children:[e.jsxs("div",{className:t.sliderHeader,children:[e.jsx("span",{className:t.sliderLabel,children:"Current Level"}),e.jsx("span",{className:`${t.sliderValue} ${S?t.valueInfinity:""}`,children:T(a)})]}),e.jsx("input",{type:"range",min:L,max:p,step:"2",value:a,onChange:D,className:`${t.slider} ${S?t.sliderInfinity:""}`}),e.jsx("div",{className:t.sliderHint,children:"Drag right to approach a perfectly smooth sphere."})]})]}))]}),u==="warning"&&e.jsxs(e.Fragment,{children:[M(e.jsx(w,{camera:{position:[0,0,3.5],fov:50},children:e.jsx(C,{resolution:a,isInfinity:!0})}),!0),I(e.jsxs("div",{className:t.warning,children:[e.jsx("div",{className:t.badge,children:"Limit Reached"}),e.jsx("p",{className:t.warningText,children:"At infinite resolution, the sphere needs infinitely many blocks."}),e.jsx("p",{className:t.warningText,children:"Infinitely many blocks means infinite information and unbounded memory."}),e.jsx("p",{className:t.warningQuestion,children:"Do you want the perfect sphere anyway?"}),e.jsxs("div",{className:t.warningChoices,children:[e.jsx("button",{className:`${t.choiceButton} ${t.choiceInfinity}`,onClick:()=>k("infinity"),children:"Embrace Infinity"}),e.jsx("button",{className:`${t.choiceButton} ${t.choiceFinite}`,onClick:()=>k("finite"),children:"Keep It Finite"})]})]}))]}),u==="result"&&e.jsxs(e.Fragment,{children:[M(s==="infinity"?e.jsx(w,{camera:{position:[0,0,3],fov:50},children:e.jsx(ke,{})}):e.jsx(w,{camera:{position:[0,0,3.5],fov:50},children:e.jsx(C,{resolution:a,isInfinity:!1})}),s==="infinity"),I(e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.badge,children:s==="finite"?"Finite Wins":"Infinity Chosen"}),e.jsxs("div",{className:t.resultStats,children:[e.jsxs("div",{className:t.resultRow,children:[e.jsx("span",{children:"Memory Required"}),e.jsx("span",{className:s==="finite"?t.resultSuccess:t.resultAccent,children:s==="finite"?"Finite":"∞"})]}),e.jsxs("div",{className:t.resultRow,children:[e.jsx("span",{children:"Simulation Possible"}),e.jsx("span",{className:s==="finite"?t.resultSuccess:t.resultAccent,children:s==="finite"?"Yes":"Only in theory"})]})]}),e.jsx("p",{className:t.resultMessage,children:s==="finite"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"Discreteness can be enough."})," A finite model never becomes perfect, but it can get close enough to feel continuous."]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"Perfect smoothness costs infinity."})," A mathematically exact sphere cannot be simulated without infinite information."]})}),e.jsx("button",{className:t.completeButton,onClick:E,children:"Complete Challenge"})]}))]})]})})})}const ze={name:"sphere-paradox",displayName:"Create a Perfect Sphere",version:"1.0.0",paramSchema:{},defaultParams:{}};export{qe as default,ze as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-BoeEa7xH.css b/public/glitch/glitch_gallery/assets/index-BoeEa7xH.css new file mode 100644 index 0000000..31c89da --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-BoeEa7xH.css @@ -0,0 +1 @@ +._wrapper_h2w9g_1{--gc-bg: var(--color-bg, #0d1117);--gc-bg-secondary: var(--color-bg-secondary, #182237);--gc-text: var(--color-text, #f1f4ef);--gc-text-muted: var(--color-text-muted, #b6c0d4);--gc-primary: var(--color-primary, #45c4b0);--gc-accent: var(--color-accent, #ff6b6b);--gc-border: var(--color-border, #34516f);width:100%}._frame_h2w9g_12{position:relative;min-height:100dvh;padding:10px;color:var(--gc-text);font-family:Space Mono,IBM Plex Mono,Courier New,monospace;background:radial-gradient(circle at 12% 8%,rgb(69 196 176 / 24%),transparent 42%),radial-gradient(circle at 86% 14%,rgb(255 107 107 / 20%),transparent 38%),linear-gradient(156deg,var(--gc-bg),var(--gc-bg-secondary));border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent)}._frameSucceeded_h2w9g_25{background:radial-gradient(circle at 18% 12%,rgb(86 255 148 / 26%),transparent 42%),radial-gradient(circle at 82% 16%,rgb(42 210 104 / 22%),transparent 38%),linear-gradient(156deg,#0f2f1f,#1b5234);border-color:color-mix(in srgb,#4be38f 56%,var(--gc-border))}._header_h2w9g_33{margin-bottom:8px}._title_h2w9g_37{margin:0;font-size:clamp(20px,6.4vw,32px);letter-spacing:.05em;text-transform:uppercase}._subtitle_h2w9g_44{margin:4px 0 0;color:var(--gc-text-muted);font-size:clamp(11px,3.3vw,14px)}._statsLine_h2w9g_50{margin:5px 0 0;padding:5px 6px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#0913209e;font-size:clamp(11px,3.1vw,13px)}._boardPanel_h2w9g_58{margin-bottom:8px}._board_h2w9g_58{position:relative;overflow:hidden;width:min(88vw,340px);aspect-ratio:1 / 1;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border:2px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));box-shadow:0 0 0 1px #00000059,0 14px 26px #00000061}._trailOverlay_h2w9g_76{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}._trailPath_h2w9g_85{fill:none;stroke:#ff2828e5;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgb(255 30 30 / 65%))}._trailHead_h2w9g_94{fill:#ff3c3cf5;filter:drop-shadow(0 0 6px rgb(255 45 45 / 70%))}._cell_h2w9g_99{position:relative;display:grid;place-items:center}._lightCell_h2w9g_105{background:#f4ecd8}._darkCell_h2w9g_109{background:#c08c61}._knight_h2w9g_113{position:absolute;z-index:3;display:grid;place-items:center;width:100%;height:100%;font-family:Times New Roman,Georgia,serif;font-size:clamp(28px,15vw,56px);line-height:1;color:#111827;text-shadow:0 1px 0 rgb(255 255 255 / 55%),0 3px 8px rgb(0 0 0 / 25%);transform:translateY(-1px)}._target_h2w9g_130{position:absolute;z-index:2;font-size:clamp(12px,8.5vw,33px);color:#e21c29;text-shadow:0 0 8px rgb(236 37 58 / 60%)}._readout_h2w9g_138{margin-bottom:8px;padding:7px;border:1px solid color-mix(in srgb,var(--gc-border) 72%,transparent);background:#040a1173}._readoutLine_h2w9g_145{margin:0;font-size:clamp(11px,3.2vw,14px)}._readoutLine_h2w9g_145+._readoutLine_h2w9g_145{margin-top:3px}._programPanel_h2w9g_154{display:flex;flex-direction:column;gap:6px}._programTrack_h2w9g_160{min-height:42px;display:flex;flex-wrap:wrap;align-items:center;gap:5px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#07111d85;padding:7px}._placeholder_h2w9g_171{color:var(--gc-text-muted);font-size:12px}._step_h2w9g_176{width:24px;height:24px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--gc-primary) 45%,var(--gc-border));background:#45c4b024;font-weight:600;font-size:13px}._stepExecuted_h2w9g_187{background:#ff6b6b40;border-color:#ff6b6b99}._programButtons_h2w9g_192,._controlRow_h2w9g_193{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}._button_h2w9g_199,._buttonPrimary_h2w9g_200{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);padding:7px 6px;font:inherit;font-size:20px;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:transform .12s ease,background-color .12s ease}._button_h2w9g_199{background:#09132099;color:var(--gc-text)}._buttonPrimary_h2w9g_200{background:color-mix(in srgb,var(--gc-primary) 35%,#12252f);color:#f2fff8;border-color:color-mix(in srgb,var(--gc-primary) 65%,transparent)}._button_h2w9g_199:disabled,._buttonPrimary_h2w9g_200:disabled{opacity:.48;cursor:not-allowed}._button_h2w9g_199:active,._buttonPrimary_h2w9g_200:active{transform:scale(.98)}._legend_h2w9g_233{margin:0;color:var(--gc-text-muted);font-size:11px}._promptOverlay_h2w9g_239{position:absolute;inset:0;display:grid;place-content:center;gap:8px;padding:16px;background:#02080ddb;border:1px solid color-mix(in srgb,var(--gc-accent) 40%,var(--gc-border))}._promptTitle_h2w9g_250{margin:0;text-align:center;text-transform:uppercase;letter-spacing:.08em;font-size:clamp(20px,6vw,32px)}._promptText_h2w9g_258{margin:0;text-align:center;color:var(--gc-text-muted)}._promptOptions_h2w9g_264{display:flex;justify-content:center;gap:10px}._promptOption_h2w9g_264{min-width:110px;border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:#09132099;color:var(--gc-text);padding:8px 10px;font:inherit;font-size:14px;text-align:left;cursor:pointer}._promptSelected_h2w9g_282{border-color:color-mix(in srgb,var(--gc-accent) 70%,transparent);background:#ff6b6b33}._promptHint_h2w9g_287{margin:0;text-align:center;color:var(--gc-text-muted);font-size:11px}@media(max-width:560px){._programButtons_h2w9g_192,._controlRow_h2w9g_193{grid-template-columns:1fr 1fr 1fr 1fr}}@media(min-width:780px){._frame_h2w9g_12{max-width:540px;margin:0 auto;border-radius:14px;min-height:auto}} diff --git a/public/glitch/glitch_gallery/assets/index-C2PFO5cD.css b/public/glitch/glitch_gallery/assets/index-C2PFO5cD.css new file mode 100644 index 0000000..6e354fa --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-C2PFO5cD.css @@ -0,0 +1 @@ +._container_101xd_1{background:radial-gradient(circle at top,rgba(99,102,241,.14),transparent 48%),linear-gradient(180deg,var(--gc-bg-secondary, #12121a),var(--gc-bg, #0a0a0f));color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:Russo One,system-ui,-apple-system,sans-serif;line-height:1.5;width:100%;min-height:100%}._container_101xd_1,._container_101xd_1 *,._container_101xd_1 *:before,._container_101xd_1 *:after{box-sizing:inherit}._frame_101xd_20{width:100%;aspect-ratio:16 / 9;padding:var(--frame-pad, 1rem)}._squareLayout_101xd_26{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:var(--panel-gap, 1rem)}._squarePanel_101xd_35{position:relative;flex:0 0 auto;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent);border-radius:28px;box-shadow:0 28px 70px #00000040}._viewportPanel_101xd_44{background:radial-gradient(circle at 50% 18%,rgba(34,211,238,.2),transparent 32%),linear-gradient(160deg,#12121af2,#0a0a0ffa)}._contentPanel_101xd_50{background:linear-gradient(180deg,#12121af5,#0a0a0ffa),var(--gc-bg, #0a0a0f)}._panelBody_101xd_56{width:100%;height:100%;padding:clamp(1rem,3vw,2rem);display:flex;flex-direction:column;justify-content:center;gap:1rem}._copy_101xd_66{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.15rem);line-height:1.65}._muted_101xd_73{color:var(--gc-text-muted, #9999a8)}._badge_101xd_77{align-self:flex-start;padding:.35rem .7rem;border-radius:999px;background:#6366f124;color:var(--gc-primary, #6366f1);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}._startButton_101xd_88,._choiceButton_101xd_89,._completeButton_101xd_90{border:none;border-radius:14px;padding:.95rem 1.2rem;font:inherit;color:#fff;cursor:pointer;transition:transform .18s ease,filter .18s ease,border-color .18s ease,background .18s ease}._startButton_101xd_88:hover,._choiceButton_101xd_89:hover,._completeButton_101xd_90:hover{transform:translateY(-1px);filter:brightness(1.06)}._startButton_101xd_88,._completeButton_101xd_90{background:linear-gradient(135deg,var(--gc-primary, #6366f1),var(--gc-accent, #22d3ee))}._sliderSection_101xd_112{display:flex;flex-direction:column;gap:.8rem}._sliderHeader_101xd_118{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}._sliderLabel_101xd_125{color:var(--gc-text-muted, #9999a8);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}._sliderValue_101xd_132{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(1.2rem,2.4vw,1.8rem)}._valueInfinity_101xd_138{color:#ef4444}._slider_101xd_112{width:100%;height:12px;border-radius:999px;background:#ffffff14;outline:none;appearance:none;cursor:pointer}._slider_101xd_112::-webkit-slider-thumb{appearance:none;width:26px;height:26px;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._slider_101xd_112::-moz-range-thumb{width:26px;height:26px;border:0;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._sliderInfinity_101xd_170{background:linear-gradient(90deg,#ffffff14,#ef4444b3)}._sliderInfinity_101xd_170::-webkit-slider-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderInfinity_101xd_170::-moz-range-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderHint_101xd_184{color:var(--gc-text-muted, #9999a8);font-size:.85rem}._statsOverlay_101xd_189{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:space-between;gap:.75rem;pointer-events:none}._stat_101xd_189{min-width:0;padding:.7rem .85rem;border-radius:16px;background:#0000008c;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._statLabel_101xd_208{display:block;margin-bottom:.2rem;color:var(--gc-text-muted, #9999a8);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}._statValue_101xd_217{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(.95rem,1.8vw,1.15rem)}._statInfinity_101xd_223{color:#ef4444}._warning_101xd_227{display:flex;flex-direction:column;gap:1rem}._warningText_101xd_233,._warningQuestion_101xd_234{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.1rem);line-height:1.65}._warningQuestion_101xd_234{color:#ef4444}._warningChoices_101xd_245{display:flex;flex-direction:column;gap:.85rem}._choiceButton_101xd_89{text-align:left;background:#ffffff0a;border:1px solid var(--gc-border, #2a2a3a)}._choiceInfinity_101xd_257{border-color:#ef444473}._choiceInfinity_101xd_257:hover{background:#ef444424}._choiceFinite_101xd_265{border-color:#22c55e73}._choiceFinite_101xd_265:hover{background:#22c55e24}._resultStats_101xd_273{padding:1rem 1.1rem;border-radius:20px;background:#ffffff0a;border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent)}._resultRow_101xd_280{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;color:var(--gc-text-muted, #9999a8);font-size:.92rem}._resultRow_101xd_280+._resultRow_101xd_280{border-top:1px solid rgba(255,255,255,.08)}._resultRow_101xd_280 span:last-child{font-family:SF Mono,Monaco,Consolas,monospace;font-weight:700}._resultMessage_101xd_298{margin:0;color:var(--gc-text-muted, #9999a8);font-size:clamp(.92rem,1.8vw,1rem);line-height:1.7}._resultMessage_101xd_298 strong{color:var(--gc-text, #e8e8ec)}._resultSuccess_101xd_309{color:#22c55e}._resultAccent_101xd_313{color:var(--gc-accent, #22d3ee)}@media(orientation:portrait),(max-aspect-ratio:1 / 1){._frame_101xd_20{aspect-ratio:1 / 2}}@media(max-width:768px){._squarePanel_101xd_35{border-radius:22px}._panelBody_101xd_56{padding:1rem}._statsOverlay_101xd_189{right:.75rem;bottom:.75rem;left:.75rem}._stat_101xd_189{padding:.55rem .7rem}} diff --git a/public/glitch/glitch_gallery/assets/index-C370CA0j.js b/public/glitch/glitch_gallery/assets/index-C370CA0j.js new file mode 100644 index 0000000..d8d51e9 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-C370CA0j.js @@ -0,0 +1,125 @@ +import{r as c,u as _t,c as Nt,a as We,_ as dt,D as Ht,V as ve,b as Vt,P as Tt,O as Et,S as Gt,U as Ut,d as Yt,M as Jt,R as qt,e as Xt,f as Zt,B as Qt,C as ut,A as Kt,j as e,Q as en}from"./index-CEeZxcxj.js";const Xe=new ve,ft=new ve,tn=new ve,jt=new Vt;function nn(t,n,o){const r=Xe.setFromMatrixPosition(t.matrixWorld);r.project(n);const s=o.width/2,i=o.height/2;return[r.x*s+s,-(r.y*i)+i]}function on(t,n){const o=Xe.setFromMatrixPosition(t.matrixWorld),r=ft.setFromMatrixPosition(n.matrixWorld),s=o.sub(r),i=n.getWorldDirection(tn);return s.angleTo(i)>Math.PI/2}function rn(t,n,o,r){const s=Xe.setFromMatrixPosition(t.matrixWorld),i=s.clone();i.project(n),jt.set(i.x,i.y),o.setFromCamera(jt,n);const d=o.intersectObjects(r,!0);if(d.length){const l=d[0].distance;return s.distanceTo(o.ray.origin)Math.abs(t)<1e-10?0:t;function kt(t,n,o=""){let r="matrix3d(";for(let s=0;s!==16;s++)r+=pt(n[s]*t.elements[s])+(s!==15?",":")");return o+r}const ln=(t=>n=>kt(n,t))([1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1]),cn=(t=>(n,o)=>kt(n,t(o),"translate(-50%,-50%)"))(t=>[1/t,1/t,1/t,1,-1/t,-1/t,-1/t,-1,1/t,1/t,1/t,1,1,1,1,1]);function dn(t){return t&&typeof t=="object"&&"current"in t}const Ae=c.forwardRef(({children:t,eps:n=.001,style:o,className:r,prepend:s,center:i,fullscreen:d,portal:l,distanceFactor:a,sprite:u=!1,transform:h=!1,occlude:p,onOcclude:g,castShadow:y,receiveShadow:I,material:S,geometry:L,zIndexRange:F=[16777271,0],calculatePosition:_=nn,as:v="div",wrapperClass:$,pointerEvents:A="auto",...D},W)=>{const{gl:B,camera:C,scene:te,size:j,raycaster:N,events:H,viewport:R}=_t(),[E]=c.useState(()=>document.createElement(v)),x=c.useRef(null),U=c.useRef(null),Se=c.useRef(0),G=c.useRef([0,0]),b=c.useRef(null),z=c.useRef(null),k=l?.current||H.connected||B.domElement.parentNode,w=c.useRef(null),K=c.useRef(!1),V=c.useMemo(()=>p&&p!=="blending"||Array.isArray(p)&&p.length&&dn(p[0]),[p]);c.useLayoutEffect(()=>{const X=B.domElement;p&&p==="blending"?(X.style.zIndex=`${Math.floor(F[0]/2)}`,X.style.position="absolute",X.style.pointerEvents="none"):(X.style.zIndex=null,X.style.position=null,X.style.pointerEvents=null)},[p]),c.useLayoutEffect(()=>{if(U.current){const X=x.current=Nt.createRoot(E);if(te.updateMatrixWorld(),h)E.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const O=_(U.current,C,j);E.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${O[0]}px,${O[1]}px,0);transform-origin:0 0;`}return k&&(s?k.prepend(E):k.appendChild(E)),()=>{k&&k.removeChild(E),X.unmount()}}},[k,h]),c.useLayoutEffect(()=>{$&&(E.className=$)},[$]);const re=c.useMemo(()=>h?{position:"absolute",top:0,left:0,width:j.width,height:j.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:i?"translate3d(-50%,-50%,0)":"none",...d&&{top:-j.height/2,left:-j.width/2,width:j.width,height:j.height},...o},[o,i,d,j,h]),ge=c.useMemo(()=>({position:"absolute",pointerEvents:A}),[A]);c.useLayoutEffect(()=>{if(K.current=!1,h){var X;(X=x.current)==null||X.render(c.createElement("div",{ref:b,style:re},c.createElement("div",{ref:z,style:ge},c.createElement("div",{ref:W,className:r,style:o,children:t}))))}else{var O;(O=x.current)==null||O.render(c.createElement("div",{ref:W,style:re,className:r,children:t}))}});const he=c.useRef(!0);We(X=>{if(U.current){C.updateMatrixWorld(),U.current.updateWorldMatrix(!0,!1);const O=h?G.current:_(U.current,C,j);if(h||Math.abs(Se.current-C.zoom)>n||Math.abs(G.current[0]-O[0])>n||Math.abs(G.current[1]-O[1])>n){const me=on(U.current,C);let ee=!1;V&&(Array.isArray(p)?ee=p.map(ae=>ae.current):p!=="blending"&&(ee=[te]));const fe=he.current;if(ee){const ae=rn(U.current,C,N,ee);he.current=ae&&!me}else he.current=!me;fe!==he.current&&(g?g(!he.current):E.style.display=he.current?"block":"none");const ce=Math.floor(F[0]/2),Y=p?V?[F[0],ce]:[ce-1,0]:F;if(E.style.zIndex=`${an(U.current,C,Y)}`,h){const[ae,ie]=[j.width/2,j.height/2],Be=C.projectionMatrix.elements[5]*ie,{isOrthographicCamera:Ce,top:Le,left:Te,bottom:Re,right:$e}=C,J=ln(C.matrixWorldInverse),_e=Ce?`scale(${Be})translate(${pt(-($e+Te)/2)}px,${pt((Le+Re)/2)}px)`:`translateZ(${Be}px)`;let be=U.current.matrixWorld;u&&(be=C.matrixWorldInverse.clone().transpose().copyPosition(be).scale(U.current.scale),be.elements[3]=be.elements[7]=be.elements[11]=0,be.elements[15]=1),E.style.width=j.width+"px",E.style.height=j.height+"px",E.style.perspective=Ce?"":`${Be}px`,b.current&&z.current&&(b.current.style.transform=`${_e}${J}translate(${ae}px,${ie}px)`,z.current.style.transform=cn(be,1/((a||10)/400)))}else{const ae=a===void 0?1:sn(U.current,C)*a;E.style.transform=`translate3d(${O[0]}px,${O[1]}px,0) scale(${ae})`}G.current=O,Se.current=C.zoom}}if(!V&&w.current&&!K.current)if(h){if(b.current){const O=b.current.children[0];if(O!=null&&O.clientWidth&&O!=null&&O.clientHeight){const{isOrthographicCamera:me}=C;if(me||L)D.scale&&(Array.isArray(D.scale)?D.scale instanceof ve?w.current.scale.copy(D.scale.clone().divideScalar(1)):w.current.scale.set(1/D.scale[0],1/D.scale[1],1/D.scale[2]):w.current.scale.setScalar(1/D.scale));else{const ee=(a||10)/400,fe=O.clientWidth*ee,ce=O.clientHeight*ee;w.current.scale.set(fe,ce,1)}K.current=!0}}}else{const O=E.children[0];if(O!=null&&O.clientWidth&&O!=null&&O.clientHeight){const me=1/R.factor,ee=O.clientWidth*me,fe=O.clientHeight*me;w.current.scale.set(ee,fe,1),K.current=!0}w.current.lookAt(X.camera.position)}});const q=c.useMemo(()=>({vertexShader:h?void 0:` + /* + This shader is from the THREE's SpriteMaterial. + We need to turn the backing plane into a Sprite + (make it always face the camera) if "transfrom" + is false. + */ + #include + + void main() { + vec2 center = vec2(0., 1.); + float rotation = 0.0; + + // This is somewhat arbitrary, but it seems to work well + // Need to figure out how to derive this dynamically if it even matters + float size = 0.03; + + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + + gl_Position = projectionMatrix * mvPosition; + } + `,fragmentShader:` + void main() { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}),[h]);return c.createElement("group",dt({},D,{ref:U}),p&&!V&&c.createElement("mesh",{castShadow:y,receiveShadow:I,ref:w},L||c.createElement("planeGeometry",null),S||c.createElement("shaderMaterial",{side:Ht,vertexShader:q.vertexShader,fragmentShader:q.fragmentShader})))});function un(t,n,o,r){var s;return s=class extends Gt{constructor(i){super({vertexShader:n,fragmentShader:o,...i});for(const d in t)this.uniforms[d]=new Ut(t[d]),Object.defineProperty(this,d,{get(){return this.uniforms[d].value},set(l){this.uniforms[d].value=l}});this.uniforms=Yt.clone(this.uniforms)}},s.key=Jt.generateUUID(),s}const pn=()=>parseInt(qt.replace(/\D+/g,"")),hn=pn(),fn=un({cellSize:.5,sectionSize:1,fadeDistance:100,fadeStrength:1,fadeFrom:1,cellThickness:.5,sectionThickness:1,cellColor:new ut,sectionColor:new ut,infiniteGrid:!1,followCamera:!1,worldCamProjPosition:new ve,worldPlanePosition:new ve},` + varying vec3 localPosition; + varying vec4 worldPosition; + + uniform vec3 worldCamProjPosition; + uniform vec3 worldPlanePosition; + uniform float fadeDistance; + uniform bool infiniteGrid; + uniform bool followCamera; + + void main() { + localPosition = position.xzy; + if (infiniteGrid) localPosition *= 1.0 + fadeDistance; + + worldPosition = modelMatrix * vec4(localPosition, 1.0); + if (followCamera) { + worldPosition.xyz += (worldCamProjPosition - worldPlanePosition); + localPosition = (inverse(modelMatrix) * worldPosition).xyz; + } + + gl_Position = projectionMatrix * viewMatrix * worldPosition; + } + `,` + varying vec3 localPosition; + varying vec4 worldPosition; + + uniform vec3 worldCamProjPosition; + uniform float cellSize; + uniform float sectionSize; + uniform vec3 cellColor; + uniform vec3 sectionColor; + uniform float fadeDistance; + uniform float fadeStrength; + uniform float fadeFrom; + uniform float cellThickness; + uniform float sectionThickness; + + float getGrid(float size, float thickness) { + vec2 r = localPosition.xz / size; + vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r); + float line = min(grid.x, grid.y) + 1.0 - thickness; + return 1.0 - min(line, 1.0); + } + + void main() { + float g1 = getGrid(cellSize, cellThickness); + float g2 = getGrid(sectionSize, sectionThickness); + + vec3 from = worldCamProjPosition*vec3(fadeFrom); + float dist = distance(from, worldPosition.xyz); + float d = 1.0 - min(dist / fadeDistance, 1.0); + vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2)); + + gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength)); + gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2); + if (gl_FragColor.a <= 0.0) discard; + + #include + #include <${hn>=154?"colorspace_fragment":"encodings_fragment"}> + } + `),xn=c.forwardRef(({args:t,cellColor:n="#000000",sectionColor:o="#2080ff",cellSize:r=.5,sectionSize:s=1,followCamera:i=!1,infiniteGrid:d=!1,fadeDistance:l=100,fadeStrength:a=1,fadeFrom:u=1,cellThickness:h=.5,sectionThickness:p=1,side:g=Qt,...y},I)=>{Xt({GridMaterial:fn});const S=c.useRef(null);c.useImperativeHandle(I,()=>S.current,[]);const L=new Zt,F=new ve(0,1,0),_=new ve(0,0,0);We(A=>{L.setFromNormalAndCoplanarPoint(F,_).applyMatrix4(S.current.matrixWorld);const D=S.current.material,W=D.uniforms.worldCamProjPosition,B=D.uniforms.worldPlanePosition;L.projectPoint(A.camera.position,W.value),B.value.set(0,0,0).applyMatrix4(S.current.matrixWorld)});const v={cellSize:r,sectionSize:s,cellColor:n,sectionColor:o,cellThickness:h,sectionThickness:p},$={fadeDistance:l,fadeStrength:a,fadeFrom:u,infiniteGrid:d,followCamera:i};return c.createElement("mesh",dt({ref:S,frustumCulled:!1},y),c.createElement("gridMaterial",dt({transparent:!0,"extensions-derivatives":!0,side:g},v,$)),c.createElement("planeGeometry",{args:t}))});function mn({vector:t,origin:n=[0,0,0],color:o="#facc15"}){const{dir:r,len:s,position:i}=c.useMemo(()=>{const l=new ve(...n),a=new ve(...t),u=l.distanceTo(a);return{dir:a.clone().sub(l).normalize(),len:u,position:l}},[t,n]),d=c.useMemo(()=>new Kt(r,i,s,o,.2*Math.min(s,1)+.1,.1*Math.min(s,1)+.05),[r,s,i,o]);return e.jsx("primitive",{object:d})}function gn(t,n=!1){const o=[];for(let r=0;r<=t;r++)for(let s=0;s<=t-r;s++){const i=t-r-s;if(i>=0)if(!n)o.push([r,s,i]);else{const d=r===0?[1]:[1,-1],l=s===0?[1]:[1,-1],a=i===0?[1]:[1,-1];for(const u of d)for(const h of l)for(const p of a)o.push([r*u,s*h,i*p])}}return o}function bn({vector:t,radius:n,distance:o,color:r}){const{position:s,quaternion:i}=c.useMemo(()=>{const d=new ve(...t).normalize(),l=new ve(0,1,0),a=new en().setFromUnitVectors(l,d);return{position:d.clone().multiplyScalar(o/2),quaternion:a}},[t,o]);return e.jsxs("mesh",{position:s,quaternion:i,children:[e.jsx("cylinderGeometry",{args:[n,n,o,32]}),e.jsx("meshStandardMaterial",{color:r,opacity:.5,transparent:!0})]})}function yn({complexity:t,lightlanes:n=!1,radius:o=.5,distance:r=5,allSectors:s=!1,cumulative:i=!1}){const d=c.useMemo(()=>{const a=[],u=i?1:t,h=t;for(let p=u;p<=h;p++){const g=gn(p,s);for(const y of g)a.push({vec:y,c:p})}return a},[t,s,i]),l=a=>{const u=i?Math.max(t,1):t;return`hsl(${270*(1-(u>1?(a-1)/(u-1):1))}, 100%, 50%)`};return e.jsx("group",{children:d.map((a,u)=>{const h=i?l(a.c):n?"#ff33c5":"#4ade80";return n?e.jsx(bn,{vector:a.vec,radius:o,distance:r,color:h},`cyl-${u}-${a.vec.join(",")}-${a.c}`):e.jsx(mn,{vector:a.vec,color:h},`vec-${u}-${a.vec.join(",")}-${a.c}`)})})}const vn="glitch:play-sound",Sn="glitch:stop-sound",ke={click:"ui.button_click",hover:"ui.button_hover",computeStart:"machine.compute_start",computeStep:"machine.compute_step",computeDone:"machine.compute_done"};function Bt(t,n){typeof window>"u"||window.dispatchEvent(new CustomEvent(t,{detail:n}))}function Ie(t,n,o){try{if(t?.playSound){t.playSound(n,o);return}}catch{}Bt(vn,{id:n,payload:o})}function jn(t,n,o){try{if(t?.stopSound){t.stopSound(n,o);return}}catch{}Bt(Sn,{id:n,payload:o})}const Ue=1e-12;function ct(t=123456789){let n=t>>>0;return function(){n|=0,n=n+1831565813|0;let r=Math.imul(n^n>>>15,1|n);return r=r+Math.imul(r^r>>>7,61|r)^r,((r^r>>>14)>>>0)/4294967296}}function Mn(t,n=Math.random){if(!Number.isFinite(t)||t<=0)return 0;if(t<30){const d=Math.exp(-t);let l=0,a=1;do l++,a*=n();while(a>d);return l-1}const o=Math.max(1e-12,n()),r=n(),s=Math.sqrt(-2*Math.log(o))*Math.cos(2*Math.PI*r),i=t+Math.sqrt(t)*s;return Math.max(0,Math.round(i))}function ot(t){return[t[0]??t.x,t[1]??t.y,t[2]??t.z]}function wn(t,n,o){return Math.sqrt(t*t+n*n+o*o)}function Rt(t){const n=2*Math.PI;let o=t%n;return o<0&&(o+=n),o}function Pn(t){const n=2*t()-1,o=2*Math.PI*t();return{theta:Math.acos(Math.max(-1,Math.min(1,n))),phi:o}}function ht(t){const n=2*Math.PI;let o=t%n;return o<0&&(o+=n),o>Math.PI&&(o=n-o),o}function Mt(t=Math.random){const n=Math.max(1e-12,t()),o=t();return Math.sqrt(-2*Math.log(n))*Math.cos(2*Math.PI*o)}function Fn(t,n,o){const r=Math.sin(n);return[t*r*Math.cos(o),t*Math.cos(n),t*r*Math.sin(o)]}function Cn(t,n=!1,o=!1){const r=[],s=o?1:t,i=t;for(let d=s;d<=i;d++)for(let l=0;l<=d;l++)for(let a=0;a<=d-l;a++){const u=d-l-a;if(!n){r.push([l,a,u]);continue}const h=l===0?[1]:[1,-1],p=a===0?[1]:[1,-1],g=u===0?[1]:[1,-1];for(const y of h)for(const I of p)for(const S of g)r.push([l*y,a*I,u*S])}return r}function wt({D:t,complexity:n,allSectors:o=!1,cumulative:r=!1}){if(!Number.isFinite(t)||t<=0)return[];if(!Number.isInteger(n)||n<1)return[];const s=Cn(n,o,r),i=[];for(let d=0;d1&&(y=1);const I=y*u,S=y*h,L=y*p,F=r-I,_=s-S,v=i-L;F*F+_*_+v*va&&u++}return u}function zt({D:t,lane_radius:n}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0)return 0;const o=n*n/(4*t*t);return o<=0?0:o>1?1:o}function kn({D:t,lane_radius:n,lane_length:o}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0||!Number.isFinite(o)||o<=0)return 0;if(o>=t-Ue)return zt({D:t,lane_radius:n});const r=n,s=o,i=t-s;if(r<=i)return 0;if(r>=t+s)return 1;const d=Math.sqrt(Math.max(0,t*t-s*s));let l;return r1&&(l=1),(1-l)/2):0}function Bn({flux:t,D:n,lane_radius:o,dt:r}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(r)||r<=0)return 0;const s=zt({D:n,lane_radius:o});return t*s*r}function Rn({flux:t,D:n,lane_radius:o,lane_length:r,dt:s}){if(!Number.isFinite(t)||t<=0||!Number.isFinite(s)||s<=0)return 0;const i=kn({D:n,lane_radius:o,lane_length:r});return t*i*s}function It({flux:t,D:n,lane_radius:o,dt:r,hitTestModel:s="shell",lane_length:i}){return s==="segment"?Rn({flux:t,D:n,lane_radius:o,lane_length:i,dt:r}):Bn({flux:t,D:n,lane_radius:o,dt:r})}function zn(t){if(!t||typeof t!="object")throw new Error("createSamplingSimulation: config object is required.");const n=t.lane_radius??t.radius,o=t.D,r=t.complexity,s=t.flux,i=t.bin_size??1,d=t.sub_bin_sampling??4,l=t.thetaDrift??t.theta_drift??0,a=t.thetaJitter??t.theta_jitter??0,u=t.phiJitter??t.phi_jitter??0,h=t.laneLength??t.lane_length??t.distance??o,p=t.hitTestModel??t.hit_test_model??"shell",g=t.observationMode??t.observation_mode??"orbit";if(!Number.isFinite(o)||o<=0)throw new Error("createSamplingSimulation: D must be a positive number.");if(!Number.isFinite(n)||n<=0)throw new Error("createSamplingSimulation: lane_radius (or radius) must be a positive number.");if(!Number.isInteger(r)||r<1)throw new Error("createSamplingSimulation: complexity must be an integer >= 1.");if(!Number.isFinite(s)||s<0)throw new Error("createSamplingSimulation: flux must be a finite number >= 0.");if(!Number.isFinite(i)||i<=0)throw new Error("createSamplingSimulation: bin_size must be a positive number.");if(!Number.isInteger(d)||d<1)throw new Error("createSamplingSimulation: sub_bin_sampling must be an integer >= 1.");if(!Number.isFinite(l))throw new Error("createSamplingSimulation: thetaDrift must be finite.");if(!Number.isFinite(a)||a<0)throw new Error("createSamplingSimulation: thetaJitter must be a finite number >= 0.");if(!Number.isFinite(u)||u<0)throw new Error("createSamplingSimulation: phiJitter must be a finite number >= 0.");if(!Number.isFinite(h)||h<=0)throw new Error("createSamplingSimulation: laneLength/lane_length/distance must be a positive number.");if(p!=="shell"&&p!=="segment")throw new Error('createSamplingSimulation: hitTestModel must be "shell" or "segment".');if(g!=="orbit"&&g!=="randomSphere")throw new Error('createSamplingSimulation: observationMode must be "orbit" or "randomSphere".');return{D:o,lane_radius:n,complexity:r,flux:s,bin_size:i,sub_bin_sampling:d,theta:ht(t.theta??Math.PI/2),phi:Rt(t.phi??0),velocity:t.velocity??0,thetaDrift:l,thetaJitter:a,phiJitter:u,lane_length:h,hitTestModel:p,observationMode:g,allSectors:!!t.allSectors,cumulative:!!t.cumulative,usePoisson:t.usePoisson!==!1,seed:Number.isFinite(t.seed)?t.seed:1}}function Lt(t){const n=zn(t),o=wt(n),r=n.hitTestModel==="segment"?wt({...n,D:n.lane_length}):o,s=ct(n.seed),i=ct(n.seed+1),d=ct(n.seed+2),l=n.bin_size/n.sub_bin_sampling,a=It({flux:n.flux,D:n.D,lane_radius:n.lane_radius,dt:l,hitTestModel:n.hitTestModel,lane_length:n.lane_length});let u=0,h=0,p=n.phi,g=n.theta,y=0,I=0,S=0,L=0,F=0,_=0,v=0;function $(B,C){return n.usePoisson?Mn(B,C):B}function A(B=g,C=p){return Fn(n.D,B,C)}function D(){let B,C;if(n.observationMode==="randomSphere"){const R=Pn(d);B=R.theta,C=R.phi}else B=ht(g+(n.thetaJitter>0?n.thetaJitter*Mt(d):0)),C=Rt(p+(n.phiJitter>0?n.phiJitter*Mt(d):0));const te=A(B,C),j=n.hitTestModel==="segment"?Tn(r,te,n.lane_radius):En(o,n.D,te,n.lane_radius);_=j;const N=o.length,H=N>0?j*n.flux*l/N:0;return I+=$(H,s),S+=$(a,i),L+=H,v+=j,F++,{laneCount:j,satPos:te,lambdaLightlaneSubBin:H,phase:C,theta:B}}function W(){const B=F>0?F*l:n.bin_size,C=a*n.sub_bin_sampling,N={time:y,bin_size:B,lightlane:I,isotropic:S,lambdaIsotropic:F>0?a*F:C,overlaps:_,overlapsMean:F>0?v/F:0,subBins:F,phase:p,theta:g,lambdaLightlaneExpected:L};return I=0,S=0,L=0,v=0,F=0,N}return{config:{...n},getLaneCount(){return o.length},getState(){return{elapsed:y,phase:p,theta:g,timeInBin:u,timeInSubBin:h,accumulatedLightlane:I,accumulatedIsotropic:S,expectedLightlaneThisBin:L,processedSubBinsInCurrentBin:F,lastLaneCount:_,laneCount:o.length}},reset(){u=0,h=0,p=n.phi,g=n.theta,y=0,I=0,S=0,L=0,F=0,_=0,v=0},flushPartialBin(){if(F<=0)return null;const B=W();return u=0,h=0,B},simulate(B){if(!Number.isFinite(B)||B<=0)return{bins:[],lastLaneCount:_,subBinEvents:0,elapsed:y};let C=B,te=0;const j=[];for(;C>Ue;){const N=l-h,H=n.bin_size-u,R=Math.min(C,N,H);p+=n.velocity*R,g=ht(g+n.thetaDrift*R),y+=R,h+=R,u+=R,C-=R,h>=l-Ue&&(h=0,D(),te++),u>=n.bin_size-Ue&&(u=0,j.push(W()))}return{bins:j,lastLaneCount:_,subBinEvents:te,elapsed:y}}}}function Pt(t,n){const o=t.n+1,r=n-t.mean,s=t.mean+r/o,i=t.m2+r*(n-s);return{n:o,mean:s,m2:i}}function Ft(){return{n:0,mean:0,m2:0}}function In({complexity:t,samplesPerPoint:n,runsPerPoint:o,binSize:r,subBinSampling:s,props:i,observationMode:d,seed:l}){let a=Ft(),u=Ft(),h=0;for(let S=0;S1?a.m2/(a.n-1):0,g=u.n>1?u.m2/(u.n-1):0,y=a.mean>0?p/a.mean:0,I=u.mean>0?g/u.mean:0;return{complexity:t,laneCount:h,meanBlue:a.mean,meanYellow:u.mean,fanoBlue:y,fanoYellow:I,fanoExcess:Math.max(0,y-I)}}function Ln(t,n=1){const o=t.filter(p=>p.complexity>=n&&p.complexity>1&&p.fanoExcess>1e-6);if(o.length<3)return null;let r=0,s=0,i=0,d=0;const l=o.length;for(const p of o){const g=Math.log(p.laneCount),y=Math.log(p.fanoExcess);r+=g,s+=y,i+=g*g,d+=g*y}const a=l*i-r*r;if(Math.abs(a)<1e-12)return null;const u=(l*d-r*s)/a,h=(s-u*r)/l;return{A:Math.exp(h),alpha:-u,predictFanoExcessFromLaneCount(p){return Math.exp(h+u*Math.log(Math.max(1,p)))}}}function $n(t,n=1){const o=t.filter(l=>l.complexity>=n&&l.complexity>1&&l.fanoExcess>1e-6);if(o.length<4)return null;const r=Math.min(...o.map(l=>l.fanoExcess)),s=Math.max(0,r*.98);let i=null;const d=80;for(let l=0;l<=d;l++){const a=l/d*s,u=o.map(A=>({x:A.laneCount,y:A.fanoExcess-a})).filter(A=>A.y>1e-9);if(u.length<3)continue;let h=0,p=0,g=0,y=0;const I=u.length;for(const A of u){const D=Math.log(A.x),W=Math.log(A.y);h+=D,p+=W,g+=D*D,y+=D*W}const S=I*g-h*h;if(Math.abs(S)<1e-12)continue;const L=(I*y-h*p)/S,F=(p-L*h)/I,_=Math.exp(F),v=-L;if(!(_>0)||!(v>0))continue;let $=0;for(const A of o){const D=a+_*Math.pow(Math.max(1,A.laneCount),-v),W=Math.log(Math.max(1e-9,A.fanoExcess))-Math.log(Math.max(1e-9,D));$+=W*W}(!i||$p.x>0&&p.y>0);if(n.length<3)return null;let o=0,r=0,s=0,i=0;const d=n.length;for(const p of n){const g=Math.log(p.x),y=Math.log(p.y);o+=g,r+=y,s+=g*g,i+=g*y}const l=d*s-o*o;if(Math.abs(l)<1e-12)return null;const a=(d*i-o*r)/l,u=(r-a*o)/d,h=Math.exp(u);return{A:h,beta:a,predict(p){return h*Math.pow(Math.max(1e-9,p),a)},invert(p){return h<=0||Math.abs(a)<1e-12||p<=0?null:Math.pow(p/h,1/a)}}}function Dn(t,n){if(!Number.isFinite(n)||n<=0||t.length===0)return null;const o=[...t].sort((a,u)=>a.complexity-u.complexity),r=[...o].sort((a,u)=>a.laneCount-u.laneCount),s=r[0],i=r[r.length-1];if(n<=s.laneCount)return{complexity:s.complexity,mode:"observed-range"};for(let a=1;a({x:a.complexity,y:a.laneCount})))?.invert(n)??null;return l&&Number.isFinite(l)?{complexity:l,mode:"extrapolated"}:{complexity:i.complexity,mode:"observed-max"}}function Ct(t,n,o,r){return t.map((s,i)=>`${i===0?"M":"L"} ${o(s.complexity)} ${r(n(s))}`).join(" ")}function An(t){return t>=10?t.toFixed(0):t>=2?t.toFixed(1):t.toFixed(2)}function Wn(t,n){const r=[.5,.6,.7,.8,.9,1,1.1,1.2,1.4,1.6,1.8,2,2.5,3,4,5,7.5,10].filter(l=>l>=t&&l<=n);if(r.length>=3)return r;const s=5,i=Math.log(t),d=Math.log(n);return Array.from({length:s},(l,a)=>{const u=a/(s-1);return Math.exp(i+(d-i)*u)})}function _n(t){const[n,o]=c.useState(40),[r,s]=c.useState(1e3),[i,d]=c.useState(3),[l,a]=c.useState(1),[u,h]=c.useState(4),[p,g]=c.useState("randomSphere"),[y,I]=c.useState(.05),[S,L]=c.useState(10),[F,_]=c.useState(0),[v,$]=c.useState([]),[A,D]=c.useState(0),[W,B]=c.useState(!1),C=c.useRef(!1),te=c.useRef(-1),j=()=>{Ie(t.host,ke.hover,{page:"fano"})},N=(b,z)=>{Ie(t.host,ke.click,{page:"fano",target:b,...z})};c.useEffect(()=>{let b=!1;return $([]),D(0),B(!0),(async()=>{const z=[];for(let k=1;k<=n;k++){if(b)return;const w=In({complexity:k,samplesPerPoint:r,runsPerPoint:i,binSize:l,subBinSampling:u,props:t,observationMode:p,seed:1e4+k*97+F*100003});z.push(w),$([...z]),D(k/n),await new Promise(K=>setTimeout(K,0))}b||B(!1)})(),()=>{b=!0}},[n,r,i,l,u,p,F,t.radius,t.distance,t.chandraDistance,t.allSectors,t.cumulative,t.theta,t.phi,t.orbitSpeed,t.thetaDrift,t.thetaJitter,t.phiJitter,t.K,t.speedup,t.usePoisson]),c.useEffect(()=>{const b=C.current;if(C.current=W,W&&!b){te.current=-1,Ie(t.host,ke.computeStart,{page:"fano"});return}!W&&b&&(jn(t.host,ke.computeStep,{page:"fano"}),Ie(t.host,ke.computeDone,{page:"fano",points:v.length}))},[W,t.host,v.length]),c.useEffect(()=>{if(!W)return;const b=Math.floor(A*10);b<=te.current||(te.current=b,Ie(t.host,ke.computeStep,{page:"fano",progress:A}))},[A,W,t.host]);const H=c.useMemo(()=>Ln(v,S),[v,S]),R=c.useMemo(()=>$n(v,S),[v,S]),E=c.useMemo(()=>{if(!H||H.alpha<=0||y<=0)return null;if(R&&R.B>=y)return{targetExcess:y,requiredLaneCount:Number.POSITIVE_INFINITY,measuredCrossing:v.find(re=>re.fanoExcess<=y)??null,complexityEstimate:null,blockedByFloor:!0,floorExcess:R.B};const b=R?Math.max(1e-9,y-R.B):y,z=R?R.A:H.A,k=R?R.alpha:H.alpha,w=Math.pow(z/b,1/k);if(!Number.isFinite(w)||w<=0)return null;const K=v.find(re=>re.fanoExcess<=y)??null,V=Dn(v,w);return{targetExcess:y,requiredLaneCount:w,measuredCrossing:K,complexityEstimate:V,blockedByFloor:!1,floorExcess:R?.B??0}},[H,R,v,y]),x=c.useMemo(()=>{const k={top:20,right:20,bottom:42,left:48},w=860-k.left-k.right,K=360-k.top-k.bottom,V=Math.max(2,n),re=[1,...v.map(Y=>Y.fanoBlue),...v.map(Y=>Y.fanoYellow),...v.map(Y=>1+Y.fanoExcess)].filter(Y=>Number.isFinite(Y)&&Y>0),ge=Math.min(...re),he=Math.max(...re),q=Math.max(.001,Math.min(.95,ge*.95)),X=Math.max(1.05,he*1.05),O=Math.log(q),me=Math.log(X),ee=Y=>k.left+(Y-1)/(V-1)*w,fe=Y=>{const ae=Math.min(X,Math.max(q,Y)),ie=Math.log(ae);return k.top+K-(ie-O)/Math.max(1e-9,me-O)*K},ce=Wn(q,X);return{width:860,height:360,margin:k,innerW:w,innerH:K,xToPx:ee,yToPx:fe,yMax:X,yMin:q,yTicks:ce}},[v,n]),U=c.useMemo(()=>v.length>1?Ct(v,b=>b.fanoBlue,x.xToPx,x.yToPx):"",[v,x]),Se=c.useMemo(()=>v.length>1?Ct(v,b=>b.fanoYellow,x.xToPx,x.yToPx):"",[v,x]),G=v.at(-1)??null;return e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"auto"},children:e.jsxs("div",{style:{width:"100%",height:"100%",display:"flex",flexDirection:"column",background:"radial-gradient(circle at 20% 10%, rgba(30,41,59,0.9), rgba(2,6,23,0.96))",color:"var(--terminal-green-soft)",padding:"16px",paddingBottom:`${16+(t.bottomInset??0)}px`,boxSizing:"border-box",gap:"12px",fontFamily:"var(--font-ui)"},children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",flexWrap:"wrap"},children:[e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:"14px",fontWeight:400,letterSpacing:"0.12em",textTransform:"uppercase",fontFamily:"var(--font-headline)",color:"var(--terminal-green-soft)"},children:"Fano Sweep"}),e.jsxs("div",{style:{fontSize:"11px",color:"var(--terminal-green)",marginTop:"4px"},children:["Goal: show ","Fano(Blue)"," trending toward 1.0 (or toward Yellow) as complexity increases."]})]}),e.jsxs("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:[t.onBack&&e.jsx("button",{type:"button",onClick:()=>{N("back-to-simulator"),t.onBack?.()},onPointerEnter:j,style:{border:"1px solid var(--terminal-panel-border)",background:"rgba(7,19,11,0.8)",color:"var(--terminal-green-soft)",padding:"8px 12px",borderRadius:"8px",cursor:"pointer",fontSize:"12px",fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.08em",textTransform:"uppercase"},children:"Back To Simulator"}),e.jsx("button",{type:"button",onClick:()=>{N("rerun-sweep"),_(b=>b+1)},onPointerEnter:j,style:{border:"1px solid var(--terminal-panel-border)",background:W?"rgba(125, 255, 155, 0.14)":"rgba(7,19,11,0.8)",color:"var(--terminal-green-soft)",padding:"8px 12px",borderRadius:"8px",cursor:"pointer",fontSize:"12px",fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.08em",textTransform:"uppercase"},children:W?"Rerun (queued)":"Rerun Sweep"})]})]}),e.jsxs("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:[e.jsx("button",{type:"button",onClick:()=>{N("preset-video-demo"),g("randomSphere"),o(60),s(1200),d(2),a(1),h(4),L(12)},onPointerEnter:j,style:{border:"1px solid var(--terminal-panel-border)",background:"rgba(7,19,11,0.8)",color:"var(--terminal-green-soft)",padding:"6px 10px",borderRadius:8,cursor:"pointer",fontSize:11,fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.06em"},children:"Preset: Video Demo"}),e.jsx("button",{type:"button",onClick:()=>{N("preset-robust-sweep"),g("randomSphere"),o(200),s(3e3),d(5),a(1),h(16),L(40)},onPointerEnter:j,style:{border:"1px solid rgba(125, 255, 155, 0.32)",background:"rgba(2,6,23,0.8)",color:"var(--terminal-green-soft)",padding:"6px 10px",borderRadius:8,cursor:"pointer",fontSize:11,fontWeight:400,fontFamily:"var(--font-headline)",letterSpacing:"0.06em"},children:"Preset: Robust Sweep"})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(140px, 1fr))",gap:"8px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Max Complexity",e.jsx("input",{type:"number",min:2,max:200,value:n,onChange:b=>o(Math.max(2,Math.min(200,Number(b.target.value)||2))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Samples / Point",e.jsx("input",{type:"number",min:100,max:2e4,step:100,value:r,onChange:b=>s(Math.max(100,Math.min(2e4,Number(b.target.value)||100))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Runs / Point (Seeds)",e.jsx("input",{type:"number",min:1,max:20,step:1,value:i,onChange:b=>d(Math.max(1,Math.min(20,Number(b.target.value)||1))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Bin Size (s)",e.jsx("input",{type:"number",min:.1,max:20,step:.1,value:l,onChange:b=>a(Math.max(.1,Math.min(20,Number(b.target.value)||.1))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Sub-Bin Sampling",e.jsx("input",{type:"number",min:1,max:256,step:1,value:u,onChange:b=>h(Math.max(1,Math.min(256,Math.round(Number(b.target.value)||1)))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Observation Mode",e.jsxs("select",{value:p,onChange:b=>g(b.target.value),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"},children:[e.jsx("option",{value:"randomSphere",children:"Random Sphere (recommended)"}),e.jsx("option",{value:"orbit",children:"Orbit (path-biased)"})]})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Target Excess (B-Y)",e.jsx("input",{type:"number",min:.001,max:1,step:.005,value:y,onChange:b=>I(Math.max(.001,Math.min(1,Number(b.target.value)||.05))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("label",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"4px"},children:["Fit Start Complexity",e.jsx("input",{type:"number",min:1,max:n,step:1,value:S,onChange:b=>L(Math.max(1,Math.min(n,Number(b.target.value)||1))),onFocus:()=>j(),style:{background:"#07130b",color:"var(--terminal-green-soft)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px"}})]}),e.jsxs("div",{style:{fontSize:"11px",color:"var(--terminal-green-soft)",display:"flex",flexDirection:"column",gap:"6px"},children:["Progress",e.jsx("div",{style:{background:"rgba(7,19,11,0.9)",border:"1px solid var(--terminal-panel-border)",borderRadius:"999px",padding:"3px"},children:e.jsx("div",{style:{height:"8px",width:`${Math.round(A*100)}%`,background:"linear-gradient(90deg, var(--terminal-green-dim), var(--terminal-green-soft))",borderRadius:"999px",transition:"width 0.15s ease"}})}),e.jsx("div",{style:{color:"var(--terminal-green)"},children:W?`Running ${Math.round(A*100)}%`:"Complete"})]})]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px",minHeight:0,flex:1},children:[e.jsx("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",width:"100%",minWidth:0,minHeight:"min(58vh, 520px)"},children:e.jsxs("svg",{viewBox:`0 0 ${x.width} ${x.height}`,style:{width:"100%",height:"100%"},children:[e.jsx("rect",{x:0,y:0,width:x.width,height:x.height,fill:"transparent"}),x.yTicks.map((b,z)=>{const k=x.yToPx(b);return e.jsxs("g",{children:[e.jsx("line",{x1:x.margin.left,y1:k,x2:x.margin.left+x.innerW,y2:k,stroke:"rgba(125, 255, 155, 0.12)"}),e.jsx("text",{x:8,y:k+4,fill:"var(--terminal-green)",fontSize:"10",fontFamily:"var(--font-ui)",children:An(b)})]},`ygrid-${z}`)}),e.jsx("line",{x1:x.margin.left,y1:x.yToPx(1),x2:x.margin.left+x.innerW,y2:x.yToPx(1),stroke:"#f97316",strokeDasharray:"4 4",opacity:.8}),e.jsx("text",{x:x.margin.left+6,y:x.yToPx(1)-6,fill:"#fdba74",fontSize:"10",children:"Fano = 1"}),e.jsx("line",{x1:x.margin.left,y1:x.margin.top+x.innerH,x2:x.margin.left+x.innerW,y2:x.margin.top+x.innerH,stroke:"rgba(125, 255, 155, 0.3)"}),e.jsx("line",{x1:x.margin.left,y1:x.margin.top,x2:x.margin.left,y2:x.margin.top+x.innerH,stroke:"rgba(125, 255, 155, 0.3)"}),Array.from({length:Math.min(n,10)},(b,z)=>{const k=1+(n-1)*z/Math.max(1,Math.min(n-1,9)),w=x.xToPx(k);return e.jsxs("g",{children:[e.jsx("line",{x1:w,y1:x.margin.top+x.innerH,x2:w,y2:x.margin.top+x.innerH+4,stroke:"rgba(125, 255, 155, 0.3)"}),e.jsx("text",{x:w,y:x.margin.top+x.innerH+18,fill:"var(--terminal-green)",fontSize:"10",fontFamily:"var(--font-ui)",textAnchor:"middle",children:Math.round(k)})]},`xtick-${z}`)}),Se&&e.jsx("path",{d:Se,fill:"none",stroke:"#fbbf24",strokeWidth:"2",opacity:.95}),U&&e.jsx("path",{d:U,fill:"none",stroke:"#60a5fa",strokeWidth:"2.25",opacity:.95}),H&&v.length>2&&(()=>{const b=v.filter(z=>z.complexity>=S).map((z,k)=>{const w=1+H.predictFanoExcessFromLaneCount(z.laneCount);return`${k===0?"M":"L"} ${x.xToPx(z.complexity)} ${x.yToPx(w)}`}).join(" ");return e.jsx("path",{d:b,fill:"none",stroke:"#93c5fd",strokeDasharray:"5 4",strokeWidth:"1.5",opacity:.8})})(),R&&v.length>2&&(()=>{const b=v.filter(z=>z.complexity>=S).map((z,k)=>{const w=1+R.predictFanoExcessFromLaneCount(z.laneCount);return`${k===0?"M":"L"} ${x.xToPx(z.complexity)} ${x.yToPx(w)}`}).join(" ");return e.jsx("path",{d:b,fill:"none",stroke:"#22d3ee",strokeDasharray:"2 4",strokeWidth:"1.5",opacity:.7})})(),v.map(b=>e.jsxs("g",{children:[e.jsx("circle",{cx:x.xToPx(b.complexity),cy:x.yToPx(b.fanoYellow),r:"2.2",fill:"#fbbf24"}),e.jsx("circle",{cx:x.xToPx(b.complexity),cy:x.yToPx(b.fanoBlue),r:"2.5",fill:"#60a5fa"})]},`dot-${b.complexity}`)),e.jsx("text",{x:x.margin.left+x.innerW/2,y:x.height-8,fill:"var(--terminal-green)",fontSize:"11",fontFamily:"var(--font-ui)",textAnchor:"middle",children:"Complexity"}),e.jsx("text",{x:14,y:x.margin.top+x.innerH/2,fill:"var(--terminal-green)",fontSize:"11",fontFamily:"var(--font-ui)",textAnchor:"middle",transform:`rotate(-90 14 ${x.margin.top+x.innerH/2})`,children:"Fano Factor (Var / Mean, log scale)"})]})}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:"8px",alignItems:"start"},children:[e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Legend"}),e.jsx("div",{style:{color:"#60a5fa"},children:"Blue: Lightlane Fano"}),e.jsx("div",{style:{color:"#fbbf24"},children:"Yellow: Isotropic Fano"}),e.jsx("div",{style:{color:"#fdba74",marginTop:"4px"},children:"Dashed orange: Fano = 1"}),e.jsx("div",{style:{color:"#93c5fd",marginTop:"4px"},children:"Dashed blue: power-fit extrapolation (blue excess over yellow)"}),e.jsx("div",{style:{color:"#22d3ee",marginTop:"4px"},children:"Dashed cyan: floor-aware fit (B + A×N^-α)"})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Latest Point"}),G?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:["Complexity: ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:G.complexity})]}),e.jsxs("div",{children:["Lanes: ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:G.laneCount})]}),e.jsxs("div",{children:["Mean Ratio (B/Y): ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:(G.meanBlue/Math.max(1e-9,G.meanYellow)).toFixed(3)})]}),e.jsxs("div",{children:["Fano Blue: ",e.jsx("span",{style:{fontFamily:"monospace",color:"#93c5fd"},children:G.fanoBlue.toFixed(3)})]}),e.jsxs("div",{children:["Fano Yellow: ",e.jsx("span",{style:{fontFamily:"monospace",color:"#fef3c7"},children:G.fanoYellow.toFixed(3)})]}),e.jsxs("div",{children:["Excess (B-Y): ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:G.fanoExcess.toFixed(3)})]}),e.jsxs("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:["Aggregated over ",r.toLocaleString()," bins × ",i," seeds"]})]}):e.jsx("div",{style:{color:"var(--terminal-green)"},children:"No points yet."})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Power Fit"}),H?e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{color:"var(--terminal-green-soft)"},children:["Excess ≈ ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:H.A.toExponential(2)})," × N",e.jsxs("sup",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:["-",H.alpha.toFixed(2)]})]}),e.jsxs("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:["Fit is on blue excess over yellow using lane count N, starting at complexity ",S,"."]})]}):e.jsx("div",{style:{color:"var(--terminal-green)"},children:"Need more points with nonzero excess."}),R&&e.jsxs("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:["Floor fit: excess ≈ ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:R.B.toFixed(3)})," + ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:R.A.toExponential(2)})," × N",e.jsxs("sup",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:["-",R.alpha.toFixed(2)]})]})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px"},children:[e.jsx("div",{style:{fontWeight:400,marginBottom:"6px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Indistinguishable Target"}),e.jsxs("div",{style:{color:"var(--terminal-green)",marginBottom:"6px"},children:["Criterion: ",e.jsxs("span",{style:{color:"var(--terminal-green-soft)"},children:["Fano Blue - Fano Yellow ≤ ",y.toFixed(3)]})]}),E?e.jsxs(e.Fragment,{children:[E.blockedByFloor?e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{color:"#ff8f8f"},children:"Floor-aware fit predicts no finite crossing for this threshold."}),e.jsxs("div",{children:["Fitted excess floor:"," ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:E.floorExcess.toFixed(3)})]}),e.jsx("div",{style:{color:"var(--terminal-green)",marginTop:"6px"},children:"Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau."})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:["Required lane count N (fit):"," ",e.jsx("span",{style:{fontFamily:"monospace",color:"var(--terminal-green-soft)"},children:Math.round(E.requiredLaneCount).toLocaleString()})]}),e.jsxs("div",{children:["Estimated complexity:"," ",e.jsx("span",{style:{fontFamily:"monospace",color:"#93c5fd"},children:E.complexityEstimate?Math.ceil(E.complexityEstimate.complexity).toLocaleString():"n/a"}),E.complexityEstimate&&e.jsxs("span",{style:{color:"var(--terminal-green)"},children:[" ","(",E.complexityEstimate.mode==="observed-range"?"interpolated from current sweep":E.complexityEstimate.mode==="extrapolated"?"extrapolated":"bounded by current sweep",")"]})]})]}),e.jsx("div",{style:{marginTop:"6px",color:"var(--terminal-green)"},children:E.measuredCrossing?`Observed crossing already reached at complexity ${E.measuredCrossing.complexity}.`:"No observed crossing yet in current sweep; estimate uses fit."})]}):e.jsx("div",{style:{color:"var(--terminal-green)"},children:"Need a stable excess fit (nonzero blue excess across multiple points)."})]}),e.jsxs("div",{style:{background:"rgba(7,19,11,0.72)",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",fontSize:"11px",color:"var(--terminal-green)"},children:["Use ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"Random Sphere"})," to isolate discretization convergence from path bias. Orbit mode is still useful to show persistent anisotropy on specific trajectories.",e.jsxs("div",{style:{marginTop:"6px"},children:["For a stronger/cleaner claim in the video: report the threshold estimate together with ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"bin size"}),", ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"sub-bin sampling"}),", and ",e.jsx("span",{style:{color:"var(--terminal-green-soft)"},children:"runs/point"}),"."]}),e.jsx("div",{style:{marginTop:"6px"},children:"If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers."})]})]})]})]})})}const Ye=new ut("#dbeafe");function Nn(t,n){const o=new Float32Array(n*3),r=new Float32Array(n*3),s=[],i=t+.01;for(let d=0;dNn(t,o),[t]);return We(({clock:d})=>{const l=n.current;if(!l)return;const a=l.geometry.getAttribute("color");if(!a)return;const u=d.getElapsedTime(),h=a.array;for(let p=0;p{if(!n&&o.current){const s=r.clock.elapsedTime*3,i=.5+(Math.sin(s)+1)/2*1.5;o.current.emissiveIntensity=i}}),e.jsxs("mesh",{position:[0,0,0],children:[e.jsx("sphereGeometry",{args:[t,64,64]}),e.jsx("meshStandardMaterial",{ref:o,color:"#ec4899",emissive:"#db2777",emissiveIntensity:1,toneMapped:!1})]})}function Gn(t){const n=2*Math.PI;let o=t%n;return o<0&&(o+=n),o>Math.PI&&(o=n-o),o}function Un({radius:t,theta:n,phi:o,orbitTime:r,simTime:s,thetaDrift:i=0,paused:d=!1}){const l=c.useRef(null);return We(()=>{if(!d&&l.current){const a=o+r.current,u=Gn(n+(s?.current??0)*i),h=t*Math.sin(u)*Math.cos(a),p=t*Math.cos(u),g=t*Math.sin(u)*Math.sin(a);l.current.position.set(h,p,g),l.current.lookAt(0,0,0)}}),e.jsxs("group",{ref:l,children:[e.jsxs("mesh",{renderOrder:10,children:[e.jsx("sphereGeometry",{args:[.09,16,16]}),e.jsx("meshBasicMaterial",{color:"#22d3ee",toneMapped:!1})]}),e.jsxs("mesh",{renderOrder:9,children:[e.jsx("sphereGeometry",{args:[.16,16,16]}),e.jsx("meshBasicMaterial",{color:"#22d3ee",transparent:!0,opacity:.18,toneMapped:!1})]}),e.jsxs("mesh",{rotation:[Math.PI/2,0,0],children:[e.jsx("cylinderGeometry",{args:[.14,.18,1,16]}),e.jsx("meshStandardMaterial",{color:"#c0c0c0",metalness:.8,roughness:.2})]}),e.jsxs("mesh",{position:[0,0,.3],rotation:[Math.PI/2,0,0],children:[e.jsx("cylinderGeometry",{args:[.18,.18,.16,8]}),e.jsx("meshStandardMaterial",{color:"#d4af37",metalness:.95,roughness:.18})]}),e.jsxs("mesh",{position:[0,0,.6],rotation:[Math.PI/2,0,0],children:[e.jsx("cylinderGeometry",{args:[.22,.22,.2,16]}),e.jsx("meshStandardMaterial",{color:"#ffd700",metalness:1,roughness:.1})]}),e.jsxs("mesh",{position:[0,0,.7],renderOrder:11,children:[e.jsx("sphereGeometry",{args:[.05,12,12]}),e.jsx("meshBasicMaterial",{color:"#f97316",toneMapped:!1})]}),e.jsxs("mesh",{position:[0,0,.35],rotation:[Math.PI/2,0,0],renderOrder:8,children:[e.jsx("cylinderGeometry",{args:[.015,.015,.7,8]}),e.jsx("meshBasicMaterial",{color:"#f97316",transparent:!0,opacity:.7,toneMapped:!1})]}),e.jsxs("group",{position:[0,0,.22],children:[e.jsxs("mesh",{position:[.6,0,0],children:[e.jsx("boxGeometry",{args:[.8,.4,.05]}),e.jsx("meshStandardMaterial",{color:"#1e3a8a",metalness:.5,roughness:.1})]}),e.jsxs("mesh",{position:[-.6,0,0],children:[e.jsx("boxGeometry",{args:[.8,.4,.05]}),e.jsx("meshStandardMaterial",{color:"#1e3a8a",metalness:.5,roughness:.1})]}),e.jsxs("mesh",{position:[.28,0,-.01],children:[e.jsx("boxGeometry",{args:[.18,.05,.04]}),e.jsx("meshStandardMaterial",{color:"#94a3b8",metalness:.7,roughness:.22})]}),e.jsxs("mesh",{position:[-.28,0,-.01],children:[e.jsx("boxGeometry",{args:[.18,.05,.04]}),e.jsx("meshStandardMaterial",{color:"#94a3b8",metalness:.7,roughness:.22})]})]})]})}const xe={solid:"#60a5fa",dark:"#3b82f6",light:"#93c5fd",glow:"rgba(96,165,250,0.5)",panel:"rgba(0,20,40,0.8)"},pe={solid:"#fbbf24",dark:"#f59e0b",light:"#fef3c7",glow:"rgba(251,191,36,0.5)"},tt="var(--font-headline)",ye="var(--font-ui)",Yn="var(--terminal-green)",De="var(--terminal-green-soft)",Fe="var(--terminal-green-muted)";function Jn({bars:t}){const n=window.innerHeight;return e.jsxs(e.Fragment,{children:[t.map(o=>{const r=n-o.startBottom-o.barHeight,s=o.targetLeft-o.startLeft,i=o.targetTop-r;return e.jsx("div",{style:{position:"absolute",left:`${o.startLeft}px`,top:`${r}px`,width:`${o.barWidth}px`,height:`${o.barHeight}px`,background:o.color,borderRadius:"2px 2px 0 0",opacity:.95,animation:"flyToDistribution 1.2s ease-in-out forwards","--delta-x":`${s}px`,"--delta-y":`${i}px`,zIndex:1e3,boxShadow:`0 0 15px ${o.color}`}},o.id)}),e.jsx("style",{children:` + @keyframes flyToDistribution { + 0% { + transform: translate(0, 0) scale(1); + opacity: 0.95; + } + 40% { + transform: translate(calc(var(--delta-x) * 0.3), calc(var(--delta-y) * 0.5)) scale(0.9); + opacity: 0.9; + } + 85% { + transform: translate(calc(var(--delta-x) * 0.95), calc(var(--delta-y) * 0.95)) scale(0.7); + opacity: 0.85; + } + 100% { + transform: translate(var(--delta-x), var(--delta-y)) scale(0.6); + opacity: 0; + } + } + .clickable-bar { + transition: all 0.2s ease; + } + .clickable-bar:hover { + transform: scaleY(1.1) scaleX(1.2); + filter: brightness(1.3); + box-shadow: 0 0 10px currentColor; + } + `})]})}function nt(){return{n:0,meanObs:0,m2Obs:0,meanIso:0,m2Iso:0}}function qn(t,n,o){const r=t.n+1,s=n-t.meanObs,i=t.meanObs+s/r,d=t.m2Obs+s*(n-i),l=o-t.meanIso,a=t.meanIso+l/r,u=t.m2Iso+l*(o-a);return{n:r,meanObs:i,m2Obs:d,meanIso:a,m2Iso:u}}function Xn({complexity:t,radius:n,distance:o,theta:r,phi:s,observationMode:i,allSectors:d,cumulative:l,K:a,orbitRadius:u,orbitVelocity:h,thetaDrift:p,thetaJitter:g,phiJitter:y,usePoisson:I,speedup:S,paused:L,sceneView:F,bottomInset:_=0,showNumericDiagnostics:v=!0,compactNumericDiagnostics:$=!1,host:A,centerDistribution:D=!1,hideFlyingBars:W=!1}){const[B,C]=c.useState({current:0,total:0,lastCheck:0,overlaps:0,currentTheory:0,binOverlapsMean:0,currentExpectedLightlane:0}),te=4,j=c.useMemo(()=>Lt({D:u,theta:r,phi:s,observationMode:i,velocity:h,thetaDrift:p,thetaJitter:g,phiJitter:y,distance:o,hitTestModel:"segment",bin_size:1,complexity:t,sub_bin_sampling:te,flux:a,lane_radius:n,allSectors:d,cumulative:l,usePoisson:I}),[u,r,s,i,h,p,g,y,t,a,n,o,d,l,I]),N=60,H=c.useRef(new Array(N).fill(-1)),R=c.useRef(new Array(N).fill(-1)),E=c.useRef(0),[x,U]=c.useState(new Array(N).fill(-1)),[Se,G]=c.useState(new Array(N).fill(-1)),b=It({flux:a,D:u,lane_radius:n,dt:1,hitTestModel:"segment",lane_length:o}),z=Math.sqrt(b),k=15,w=4*z,K=Math.max(0,b-w),V=b+w,re=I,ge=Math.max(0,Math.floor(K)),he=Math.max(ge,Math.ceil(V)),q=re?he-ge+1:k,X=re?1:Math.max(1e-9,(V-K)/k),O=m=>{if(re){const M=Math.round(m);return M<=ge?0:M>=he?q-1:M-ge}return m=V?q-1:Math.floor((m-K)/X)},me=m=>re?ge+m:K+(m+.5)*X,[ee,fe]=c.useState(new Array(q).fill(0)),[ce,Y]=c.useState(new Array(q).fill(0)),[ae,ie]=c.useState(new Set),[Be,Ce]=c.useState(new Set),[Le,Te]=c.useState([]),Re=c.useRef(0),$e=c.useRef(nt()),[J,_e]=c.useState(nt()),be=c.useRef(L),Ze=c.useRef(0);c.useEffect(()=>{fe(new Array(q).fill(0)),Y(new Array(q).fill(0)),H.current.fill(-1),R.current.fill(-1),E.current=0,U(new Array(N).fill(-1)),G(new Array(N).fill(-1)),ie(new Set),Ce(new Set),Te([]),$e.current=nt(),_e(nt()),C({current:0,total:0,lastCheck:0,overlaps:0,currentTheory:0,binOverlapsMean:0,currentExpectedLightlane:0})},[t,a,n,o,u,r,s,i,h,p,g,y,d,l,I,q]);const Qe=(m,M)=>{if(m.length===0)return;let T=0,le=0,se=0,je=B.binOverlapsMean,Q=B.currentExpectedLightlane,de=$e.current;for(const ue of m){const Me=ue.lightlane,we=ue.isotropic;if(T+=Me,le=Me,se=we,je=ue.overlapsMean,Q=ue.lambdaLightlaneExpected,de=qn(de,Me,we),H.current[E.current]=Me,R.current[E.current]=we,E.current++,E.current>=N){const Ee=Math.max(10,...H.current.filter(oe=>oe>=0),...R.current.filter(oe=>oe>=0));ne([...H.current],[...R.current],Ee),H.current.fill(-1),R.current.fill(-1),E.current=0,ie(new Set),Ce(new Set)}}$e.current=de,C(ue=>({current:le,total:ue.total+T,lastCheck:Date.now(),overlaps:M,currentTheory:se,binOverlapsMean:je,currentExpectedLightlane:Q})),_e(de),U([...H.current]),G([...R.current])},Ne=c.useRef(!1),He=c.useRef(null),Ke=(m,M)=>{m.stopPropagation(),Ne.current=!0,He.current=M,m.target.setPointerCapture(m.pointerId),Ie(A,ke.click,{target:`${M}-periodogram`,action:"pointer-down"})},et=(m,M,T,le)=>{if(!Ne.current||He.current!==M)return;m.stopPropagation();const se=m.currentTarget.getBoundingClientRect(),je=m.clientX-se.left,Q=Math.floor(je/se.width*N);if(Q>=0&&Q=0&&!ue&&Z(Q,de,M,le)}},f=m=>{m.stopPropagation(),Ne.current=!1,He.current=null},P=(m,M,T,le)=>{const se=window.innerWidth,je=m/N*se,Q=se/N,de=Math.max(2,M/le*80),we=T==="observed"?25:110,Ee=O(M),oe=20,Pe=se-2*oe,ze=oe+(Ee+.5)/q*Pe;return{startLeft:je,startBottom:we,barHeight:de,barWidth:Q,targetLeft:ze,targetTop:150,binIndex:Ee}},Z=(m,M,T,le)=>{if(M<0)return;const se=Date.now();se-Ze.current>=45&&(Ze.current=se,Ie(A,ke.computeStep,{target:`${T}-periodogram`,value:M}));const{startLeft:je,startBottom:Q,barHeight:de,barWidth:ue,targetLeft:Me,targetTop:we}=P(m,M,T,le),Ee={id:Re.current++,value:M,startLeft:je,startBottom:Q,barHeight:de,barWidth:ue,targetLeft:Me,targetTop:we,color:T==="observed"?pe.solid:xe.solid,type:T};Te(oe=>[...oe,Ee]),T==="observed"?(ie(oe=>new Set(oe).add(m)),fe(oe=>{const Pe=[...oe],ze=O(M);return Pe[ze]++,Pe})):(Ce(oe=>new Set(oe).add(m)),Y(oe=>{const Pe=[...oe],ze=O(M);return Pe[ze]++,Pe}))},ne=(m,M,T)=>{const le=[],se=[...ee],je=[...ce];m.forEach((Q,de)=>{if(Q>=0){const{startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,binIndex:ze}=P(de,Q,"observed",T);le.push({id:Re.current++,value:Q,startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,color:pe.solid,type:"observed"}),se[ze]++}}),M.forEach((Q,de)=>{if(Q>=0){const{startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,binIndex:ze}=P(de,Q,"theory",T);le.push({id:Re.current++,value:Q,startLeft:ue,startBottom:Me,barHeight:we,barWidth:Ee,targetLeft:oe,targetTop:Pe,color:xe.solid,type:"theory"}),je[ze]++}}),Te(Q=>[...Q,...le]),fe(se),Y(je)};c.useEffect(()=>{if(Le.length>0){const m=setTimeout(()=>{Te([])},1300);return()=>clearTimeout(m)}},[Le.length]);const Ve=c.useRef(0);c.useEffect(()=>{E.current{const m=be.current;if(be.current=L,!L||m)return;const M=j.flushPartialBin();M&&Qe([M],M.overlaps)},[L,j]),We((m,M)=>{if(L)return;const T=j.simulate(M*S);T.subBinEvents>0&&C(le=>({...le,overlaps:T.lastLaneCount})),Qe(T.bins,T.lastLaneCount)});const $t=x.filter(m=>m>=0),Ot=Se.filter(m=>m>=0),rt=Math.max(10,Math.max(0,...$t)),it=Math.max(10,Math.max(0,...Ot)),xt=Math.max(1,...ee,...ce),mt=J.n>1?J.m2Obs/(J.n-1):0,st=J.n>1?J.m2Iso/(J.n-1):0,Dt=J.meanIso>0?J.meanObs/J.meanIso:0,gt=st>0?mt/st:0,at=J.meanObs>0?mt/J.meanObs:0,Je=J.meanIso>0?st/J.meanIso:0,lt=j.getLaneCount(),bt=lt>0&&a>0?lt*b/a:0,yt=v&&!$,qe=F!=="lightlane",Oe=F!=="poisson",At=Le.filter(m=>m.type==="theory"&&qe||m.type==="observed"&&Oe),Wt=F==="poisson"?"Shot Noise Distribution":F==="lightlane"?"Shot Noise + Lightlane":"Head to Head",Ge={background:"rgba(255,255,255,0.04)",border:"1px solid var(--terminal-panel-border)",borderRadius:"6px",padding:"6px 8px",fontFamily:ye},vt=e.jsxs("div",{style:{marginTop:$?"0":"12px",display:"grid",gridTemplateColumns:$?"1fr":"repeat(3, minmax(0, 1fr))",gap:$?"6px":"8px",fontSize:"10px",color:De,fontFamily:ye},children:[e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Samples"}),e.jsx("div",{style:{fontFamily:"monospace"},children:J.n})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Mean Ratio (Lightlane/Poisson)"}),e.jsx("div",{style:{fontFamily:"monospace",color:De},children:J.n>0?Dt.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Var Ratio (Lightlane/Poisson)"}),e.jsx("div",{style:{fontFamily:"monospace",color:gt>1.1?pe.light:xe.light},children:J.n>1?gt.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Fano Lightlane"}),e.jsx("div",{style:{fontFamily:"monospace",color:pe.light},children:J.n>1?at.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Fano Poisson"}),e.jsx("div",{style:{fontFamily:"monospace",color:xe.light},children:J.n>1?Je.toFixed(3):"n/a"})]}),e.jsxs("div",{style:Ge,children:[e.jsx("div",{style:{color:Fe},children:"Fano Ratio (Lightlane/Poisson)"}),e.jsx("div",{style:{fontFamily:"monospace",color:Je>0&&at/Je>1.05?pe.light:De},children:J.n>1&&Je>0?(at/Je).toFixed(3):"n/a"})]})]}),St=e.jsxs("div",{style:{marginTop:$?"6px":"8px",display:$?"grid":"flex",gridTemplateColumns:$?"1fr":void 0,justifyContent:$?void 0:"center",gap:$?"4px":"12px",flexWrap:$?void 0:"wrap",fontSize:"10px",color:Fe,fontFamily:ye},children:[e.jsxs("span",{children:["LC(now): ",B.overlaps]}),e.jsxs("span",{children:["LC(bin avg): ",B.binOverlapsMean.toFixed(2)]}),e.jsxs("span",{children:["LC iso target: ",Number.isFinite(bt)?bt.toFixed(2):"n/a"]}),e.jsxs("span",{children:["E[Lightlane|bin]: ",B.currentExpectedLightlane.toFixed(2)]}),e.jsxs("span",{children:["Lightlane(last): ",typeof B.current=="number"?Number(B.current).toFixed(2):B.current]}),e.jsxs("span",{children:["Lanes: ",lt]}),e.jsxs("span",{children:["Mode: ",i==="randomSphere"?"Random Sphere":"Orbit"]}),e.jsxs("span",{children:["theta drift: ",p.toFixed(3)]}),e.jsxs("span",{children:["theta jitter: ",g.toFixed(3)]}),e.jsxs("span",{children:["phi jitter: ",y.toFixed(3)]})]});return e.jsxs(e.Fragment,{children:[!W&&e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"none"},children:e.jsx(Jn,{bars:At})}),e.jsxs(Ae,{fullscreen:!0,style:{pointerEvents:"none",display:"flex",flexDirection:"column",justifyContent:D?"center":"flex-start"},children:[e.jsxs("div",{style:{position:"absolute",top:"18px",left:"20px",right:"20px",color:De,fontSize:"12px",fontWeight:400,textAlign:"center",textTransform:"uppercase",letterSpacing:"0.16em",fontFamily:tt},children:[Wt,e.jsxs("span",{style:{fontSize:"10px",fontWeight:"normal",marginLeft:"10px",opacity:.8,fontFamily:ye,color:Yn},children:["(λ = ",b.toFixed(1),", σ = ",z.toFixed(1),")"]})]}),e.jsxs("div",{style:{width:"100%",padding:D?"20px":"60px 20px 20px 20px",background:D?"transparent":"linear-gradient(to bottom, rgba(0,0,0,0.9), transparent)",fontFamily:ye,alignSelf:"center"},children:[e.jsx("div",{style:{position:"absolute",left:"5px",top:D?"130px":"170px",transform:"rotate(-90deg)",transformOrigin:"left top",fontSize:"10px",color:Fe,fontStyle:"italic",whiteSpace:"nowrap",fontFamily:ye},children:"← Frequency (how many)"}),e.jsx("div",{style:{display:"flex",height:"100px",gap:"2px",alignItems:"flex-end",padding:"0 20px"},children:ee.map((m,M)=>{const T=ce[M],le=m/xt*100,se=T/xt*100;return e.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",position:"relative",height:"100%",justifyContent:"flex-end"},children:[e.jsxs("div",{style:{width:"100%",display:"flex",justifyContent:"center",gap:"1px",alignItems:"flex-end",height:"100%",position:"relative"},children:[qe&&e.jsx("div",{style:{width:Oe?"45%":"92%",height:`${se}%`,background:`linear-gradient(to top, ${xe.solid}, ${xe.dark})`,borderRadius:"2px 2px 0 0",minHeight:T>0?"2px":"0",transition:"height 0.3s ease",boxShadow:T>0?`0 0 5px ${xe.glow}`:"none",position:"relative"},children:T>0&&e.jsx("div",{style:{position:"absolute",top:"-16px",left:"50%",transform:"translateX(-50%)",fontSize:"9px",fontWeight:"bold",color:xe.solid,textShadow:"0 0 3px rgba(0,0,0,0.8)"},children:T})}),Oe&&e.jsx("div",{style:{width:qe?"45%":"92%",height:`${le}%`,background:`linear-gradient(to top, ${pe.solid}, ${pe.dark})`,borderRadius:"2px 2px 0 0",minHeight:m>0?"2px":"0",transition:"height 0.3s ease",boxShadow:m>0?`0 0 5px ${pe.glow}`:"none",position:"relative"},children:m>0&&e.jsx("div",{style:{position:"absolute",top:"-16px",left:"50%",transform:"translateX(-50%)",fontSize:"9px",fontWeight:"bold",color:pe.solid,textShadow:"0 0 3px rgba(0,0,0,0.8)"},children:m})})]}),e.jsx("div",{style:{position:"absolute",bottom:"-18px",fontSize:"9px",color:Fe,fontWeight:"bold",fontFamily:ye},children:me(M).toFixed(0)})]},M)})}),e.jsx("div",{style:{textAlign:"center",marginTop:"25px",fontSize:"10px",color:Fe,fontStyle:"italic",fontFamily:ye},children:"Photon Count Value →"}),e.jsxs("div",{style:{display:"flex",justifyContent:"center",gap:"20px",marginTop:"25px",fontSize:"10px"},children:[qe&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[e.jsx("div",{style:{width:"12px",height:"12px",background:xe.solid,borderRadius:"2px"}}),e.jsx("span",{style:{color:xe.solid},children:"Theory (Poisson)"})]}),Oe&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px"},children:[e.jsx("div",{style:{width:"12px",height:"12px",background:pe.solid,borderRadius:"2px"}}),e.jsx("span",{style:{color:pe.solid},children:"Observed (Lightlanes)"})]})]}),yt&&vt,yt&&St]})]}),v&&$&&e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"none"},children:e.jsxs("div",{style:{position:"absolute",top:"88px",left:"12px",width:"min(300px, calc(100vw - 24px))",background:"linear-gradient(to bottom, rgba(0,0,0,0.88), rgba(0,0,0,0.55))",border:"1px solid var(--terminal-panel-border)",borderRadius:"10px",padding:"10px",boxShadow:"0 8px 24px rgba(0,0,0,0.35)",fontFamily:ye},children:[e.jsx("div",{style:{color:De,fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.08em",marginBottom:"8px",fontWeight:400,fontFamily:tt},children:"Diagnostics"}),vt,St]})}),e.jsxs(Ae,{fullscreen:!0,style:{pointerEvents:"none",display:"flex",flexDirection:"column",justifyContent:"flex-end",paddingBottom:`${_}px`,boxSizing:"border-box"},children:[qe&&e.jsxs("div",{onPointerDown:m=>Ke(m,"theory"),onPointerMove:m=>et(m,"theory",Se,it),onPointerUp:f,onPointerLeave:f,style:{width:"100%",height:"100px",background:`linear-gradient(to top, ${xe.panel}, transparent)`,display:"flex",alignItems:"flex-end",padding:Oe?"0 20px 5px 20px":"0 20px 20px 20px",gap:"2px",position:"relative",borderBottom:Oe?"1px solid #555":"none",pointerEvents:"auto",touchAction:"none",cursor:"crosshair"},children:[e.jsx("div",{style:{position:"absolute",top:"10px",left:"20px",color:xe.solid,fontSize:"10px",fontWeight:400,pointerEvents:"none",fontFamily:tt,letterSpacing:"0.08em"},children:"THEORY (Poisson) - Swipe or click to count"}),Se.map((m,M)=>{const T=Be.has(M);return e.jsx("div",{className:m>=0&&!T?"clickable-bar":"",style:{flex:1,height:m>=0&&!T?`${m/it*100}%`:"0",background:m===0?"rgba(255,255,255,0.1)":xe.solid,color:xe.solid,minHeight:m>=0&&!T?"1px":"0",transition:"all 0.3s ease",opacity:T?0:.8,borderRadius:"2px 2px 0 0",transform:T?"scale(0)":"scale(1)",pointerEvents:"none"}},M)}),e.jsxs("div",{style:{position:"absolute",bottom:"10px",right:"80px",color:De,fontFamily:ye,fontSize:"10px",pointerEvents:"none"},children:["Max: ",it]})]}),Oe&&e.jsxs("div",{onPointerDown:m=>Ke(m,"observed"),onPointerMove:m=>et(m,"observed",x,rt),onPointerUp:f,onPointerLeave:f,style:{width:"100%",height:"100px",background:"linear-gradient(to top, rgba(0,0,0,0.8), transparent)",display:"flex",alignItems:"flex-end",padding:"0 20px 20px 20px",gap:"2px",position:"relative",pointerEvents:"auto",touchAction:"none",cursor:"crosshair"},children:[e.jsx("div",{style:{position:"absolute",top:"10px",left:"20px",color:pe.solid,fontSize:"10px",fontWeight:400,pointerEvents:"none",fontFamily:tt,letterSpacing:"0.08em"},children:"OBSERVED (Lightlanes) - Swipe or click to count"}),x.map((m,M)=>{const T=ae.has(M);return e.jsx("div",{className:m>=0&&!T?"clickable-bar":"",style:{flex:1,height:m>=0&&!T?`${m/rt*100}%`:"0",background:m===0?"rgba(255,255,255,0.1)":m>0?pe.solid:"transparent",color:pe.solid,minHeight:m>=0&&!T?"2px":"0",transition:"all 0.3s ease",borderTop:m>=0&&!T?`2px solid ${pe.light}`:"none",opacity:T?0:.8,position:"relative",borderRadius:"2px 2px 0 0",transform:T?"scale(0)":"scale(1)",pointerEvents:"none"},children:(M+1)%5===0&&!T&&e.jsx("div",{style:{position:"absolute",bottom:"-20px",left:"50%",transform:"translateX(-50%)",width:"1px",height:"5px",background:"#fff",opacity:.5,pointerEvents:"none"},children:e.jsx("span",{style:{position:"absolute",top:"5px",left:"-50%",fontSize:"10px",color:Fe,fontFamily:ye},children:M+1})})},M)}),e.jsxs("div",{style:{position:"absolute",bottom:"10px",right:"80px",color:De,fontFamily:ye,fontSize:"10px"},children:["Max: ",rt]})]})]})]})}const Zn={complexity:1,radius:2,distance:5,chandraDistance:6,showAxes:!1,lightlanes:!0,allSectors:!0,cumulative:!1,phi:0,theta:Math.PI/2,observationMode:"orbit",orbitSpeed:.2,thetaDrift:0,thetaJitter:0,phiJitter:0,speedup:1,K:1e3,usePoisson:!0,sceneView:"both",hideScenePresentation:!1,hideFlyingBars:!1,hideDataBoxes:!1};function eo(t){const n=t.host,o=t.devUi?.compactNumericDiagnostics??!1,r=t.devUi?.maxComplexity??20,s=t.devUi?.maxSpeedup??240,i=74,d=20,l=t.config?.params||{},{complexity:a,radius:u,distance:h,chandraDistance:p,showAxes:g,lightlanes:y,allSectors:I,cumulative:S,phi:L,theta:F,observationMode:_,orbitSpeed:v,thetaDrift:$,thetaJitter:A,phiJitter:D,speedup:W,K:B,usePoisson:C,sceneView:te,hideScenePresentation:j,hideFlyingBars:N,hideDataBoxes:H}={...Zn,...l},R=!H,E=c.useRef(0),x=c.useRef(0),[U,Se]=c.useState(!1),[G,b]=c.useState("scene"),[z,k]=c.useState(te),[w,K]=c.useState(a),[V,re]=c.useState(W),[ge,he]=c.useState(null),q=c.useRef(null);c.useEffect(()=>{k(te)},[te]),c.useEffect(()=>{K(a)},[a]),c.useEffect(()=>{re(W)},[W]);const X=V>20,O=z!=="lightlane",me=z!=="poisson",ee=G==="scene"&&z!=="poisson",fe=f=>f==="poisson"?"Poisson":f==="lightlane"?"Lightlane":"Both",ce=()=>{Ie(n,ke.hover,{page:G,sceneView:z})},Y=(f,P)=>{Ie(n,ke.click,{page:G,sceneView:z,target:f,...P})},ae=f=>{he(f),q.current&&clearTimeout(q.current),q.current=setTimeout(()=>{he(null),q.current=null},1500)},ie=f=>{const P=Array.from({length:d},(Z,ne)=>ne===0?1:ne===d-1?f:Math.round(1+(f-1)*ne/(d-1)));return Array.from(new Set(P)).sort((Z,ne)=>Z-ne)},Be=(f,P)=>{const Z=ie(P);return Z.find(ne=>f{const Z=ie(P);for(let ne=Z.length-1;ne>=0;ne-=1)if(f>Z[ne])return Z[ne];return Z[0]},Le=(f,P)=>{const Z=ie(P),ne=Z.findIndex(Ve=>f<=Ve);return ne>=0?ne:Z.length-1},Te=Le(w,r),Re=Le(V,s),$e=`${(Te+1)/d*100}%`,J=`${(Re+1)/d*100}%`,_e=ee&&w>ie(r)[0],be=ee&&wie(s)[0],Qe=V{if(!ee)return;const P=f==="up"?Be(w,r):Ce(w,r);P!==w&&(Y("complexity",{direction:f,value:P}),K(P),t.devUi?.onSetParam?.("complexity",P),ae(`Complexity ${P}`))},He=f=>{const P=f==="up"?Be(V,s):Ce(V,s);P!==V&&(Y("turbo",{direction:f,value:P}),re(P),t.devUi?.onSetParam?.("speedup",P),ae(`Turbo ${P}x`))},Ke=()=>{const f=["poisson","lightlane","both"],P=f.indexOf(z),Z=f[(P+1)%f.length];Y("mode",{value:Z}),k(Z),ae(`Mode ${fe(Z)}`)},et=()=>{Y("fano-page",{value:G==="scene"?"fano":"scene"}),b(f=>f==="scene"?"fano":"scene")};return c.useEffect(()=>{const f=P=>{if(P.code!=="Space"||P.repeat)return;const Z=P.target,ne=Z?.tagName;ne==="INPUT"||ne==="TEXTAREA"||Z?.isContentEditable||(P.preventDefault(),Se(Ve=>!Ve))};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[]),c.useEffect(()=>()=>{q.current&&clearTimeout(q.current)},[]),We((f,P)=>{U||G==="fano"||(E.current+=P*v*V,x.current+=P*V)}),c.useEffect(()=>{E.current=0,x.current=0},[w,u,h,p,L,F,_,v,$,A,D,V,B,I,S,C]),e.jsxs(e.Fragment,{children:[e.jsx(Ae,{fullscreen:!0,style:{pointerEvents:"none",zIndex:3e3},children:e.jsx("div",{style:{position:"absolute",top:12,right:12,display:"flex",gap:8,pointerEvents:"auto"},children:e.jsx("button",{type:"button",onClick:()=>{Y("advanced"),t.devUi?.onOpenHarness?.()},onPointerEnter:ce,style:{border:"1px solid var(--terminal-panel-border)",background:"rgba(7,19,11,0.86)",color:"var(--terminal-green-soft)",borderRadius:10,padding:"10px 12px",fontSize:12,fontWeight:400,letterSpacing:"0.08em",fontFamily:"var(--font-headline)",textTransform:"uppercase",cursor:"pointer",boxShadow:"0 8px 24px rgba(0,0,0,0.25)"},children:"Advanced"})})}),e.jsx("ambientLight",{intensity:.4}),e.jsx("directionalLight",{position:[10,10,5],intensity:1,castShadow:!0}),e.jsx("pointLight",{position:[-10,-10,-10],intensity:.5,color:"blue"}),G==="scene"?e.jsxs(e.Fragment,{children:[!j&&O&&e.jsx(Hn,{radius:p}),!j&&me&&e.jsx(yn,{complexity:w,lightlanes:y,radius:u,distance:h,allSectors:I,cumulative:S}),!j&&e.jsx(Vn,{radius:u,paused:U}),e.jsx(Un,{radius:p,theta:F,phi:L,orbitTime:E,simTime:x,thetaDrift:$,paused:U}),e.jsx(Xn,{complexity:w,radius:u,distance:h,theta:F,phi:L,observationMode:_,allSectors:I,cumulative:S,K:B,orbitRadius:p,orbitVelocity:v,thetaDrift:$,thetaJitter:A,phiJitter:D,usePoisson:C,speedup:V,paused:U,sceneView:z,bottomInset:i,showNumericDiagnostics:R,compactNumericDiagnostics:o,host:n,centerDistribution:j,hideFlyingBars:N||X}),U&&e.jsx("group",{position:[0,p+1.5,0],children:e.jsxs("mesh",{children:[e.jsx("sphereGeometry",{args:[.12,16,16]}),e.jsx("meshBasicMaterial",{color:"#ef4444",toneMapped:!1})]})}),g&&e.jsx("axesHelper",{args:[Math.max(5,w)]}),e.jsx(xn,{infiniteGrid:!0,fadeDistance:50,sectionColor:"#333",cellColor:"#111",position:[0,-.01,0]})]}):e.jsx(_n,{radius:u,distance:h,chandraDistance:p,allSectors:I,cumulative:S,theta:F,phi:L,orbitSpeed:v,thetaDrift:$,thetaJitter:A,phiJitter:D,K:B,speedup:V,usePoisson:C,bottomInset:i,onBack:()=>b("scene"),host:n}),e.jsxs(Ae,{fullscreen:!0,style:{pointerEvents:"none",zIndex:3200},children:[ge&&e.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%) skewX(-12deg)",padding:"16px 28px",color:"var(--terminal-green-soft)",fontFamily:"var(--font-headline)",fontStyle:"italic",fontSize:42,letterSpacing:"0.16em",textTransform:"uppercase",textShadow:"0 0 20px rgba(125,255,155,0.38), 0 0 42px rgba(125,255,155,0.18)"},children:e.jsx("span",{style:{display:"inline-block",transform:"skewX(12deg)"},children:ge})}),e.jsx("div",{style:{position:"absolute",left:10,bottom:i+16,width:26,height:"min(44vh, 320px)",display:"flex",alignItems:"flex-end"},children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",borderRadius:14,border:"1px solid rgba(251,191,36,0.35)",background:"linear-gradient(to top, rgba(30,18,0,0.92), rgba(7,19,11,0.15))",boxShadow:"0 0 22px rgba(251,191,36,0.12)",overflow:"hidden",opacity:ee?1:.35,transition:"opacity 0.2s ease"},children:[e.jsx("div",{style:{position:"absolute",inset:"6px",borderRadius:10,border:"1px solid rgba(251,191,36,0.14)"}}),e.jsx("div",{style:{position:"absolute",left:5,right:5,bottom:5,height:$e,borderRadius:9,background:"linear-gradient(to top, rgba(245,158,11,0.96), rgba(253,224,71,0.96))",boxShadow:"0 0 18px rgba(251,191,36,0.5)",transition:"height 0.25s ease"}}),e.jsx("div",{style:{position:"absolute",inset:"8px 7px",display:"grid",gridTemplateRows:`repeat(${d}, 1fr)`,pointerEvents:"none"},children:Array.from({length:d}).map((f,P)=>e.jsx("div",{style:{borderTop:P===0?"none":"1px solid rgba(251,191,36,0.15)"}},`complexity-tick-${P}`))}),e.jsxs("div",{style:{position:"absolute",left:34,bottom:0,color:"#fcd34d",fontFamily:"var(--font-headline)",fontSize:10,letterSpacing:"0.08em",textTransform:"uppercase",writingMode:"vertical-rl",transform:"rotate(180deg)",textShadow:"0 0 12px rgba(251,191,36,0.25)"},children:["Complexity ",Te+1,"/",d]})]})}),e.jsx("div",{style:{position:"absolute",right:10,bottom:i+16,width:26,height:"min(44vh, 320px)",display:"flex",alignItems:"flex-end"},children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",borderRadius:14,border:"1px solid rgba(244,114,182,0.35)",background:"linear-gradient(to top, rgba(42,7,23,0.94), rgba(7,19,11,0.15))",boxShadow:"0 0 22px rgba(244,114,182,0.14)",overflow:"hidden"},children:[e.jsx("div",{style:{position:"absolute",inset:"6px",borderRadius:10,border:"1px solid rgba(244,114,182,0.14)"}}),e.jsx("div",{style:{position:"absolute",left:5,right:5,bottom:5,height:J,borderRadius:9,background:"linear-gradient(to top, rgba(236,72,153,0.96), rgba(244,114,182,0.98))",boxShadow:"0 0 18px rgba(244,114,182,0.5)",transition:"height 0.25s ease"}}),e.jsx("div",{style:{position:"absolute",inset:"8px 7px",display:"grid",gridTemplateRows:`repeat(${d}, 1fr)`,pointerEvents:"none"},children:Array.from({length:d}).map((f,P)=>e.jsx("div",{style:{borderTop:P===0?"none":"1px solid rgba(244,114,182,0.15)"}},`turbo-tick-${P}`))}),e.jsxs("div",{style:{position:"absolute",right:34,bottom:0,color:"#f9a8d4",fontFamily:"var(--font-headline)",fontSize:10,letterSpacing:"0.08em",textTransform:"uppercase",writingMode:"vertical-rl",textShadow:"0 0 12px rgba(244,114,182,0.25)"},children:["Turbo ",Re+1,"/",d]})]})}),e.jsx("div",{style:{position:"absolute",left:12,right:12,bottom:10,display:"grid",gridTemplateColumns:"repeat(4, minmax(0, 1fr))",gap:8,pointerEvents:"auto"},children:[{label:"Complexity",kind:"adjust",active:!1,disabled:!ee,accent:"rgba(245,158,11,0.2)",sublabel:`${w} • ${Te+1}/${d}`,meterColor:"linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))",meterSide:"left",meterFill:$e,onDecrease:()=>Ne("down"),onIncrease:()=>Ne("up"),canDecrease:_e,canIncrease:be},{label:"Mode",kind:"action",onClick:Ke,active:!1,accent:"rgba(59,130,246,0.18)",sublabel:fe(z)},{label:"Fano Sweep",kind:"action",onClick:et,active:G==="fano",accent:"rgba(59,130,246,0.22)",sublabel:G==="fano"?"Open":"Scene"},{label:"Turbo",kind:"adjust",active:!1,accent:"rgba(34,197,94,0.2)",sublabel:`${V}x • ${Re+1}/${d}`,meterColor:"linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))",meterSide:"right",meterFill:J,onDecrease:()=>He("down"),onIncrease:()=>He("up"),canDecrease:Ze,canIncrease:Qe}].map(f=>f.kind==="adjust"?e.jsxs("div",{style:{minHeight:54,border:"1px solid var(--terminal-panel-border)",background:f.active?f.accent:"rgba(7,19,11,0.86)",color:"var(--terminal-green-soft)",borderRadius:10,padding:"8px 10px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:6,boxShadow:f.active?"0 0 18px rgba(125,255,155,0.12)":"0 8px 24px rgba(0,0,0,0.25)",position:"relative",overflow:"hidden",opacity:f.disabled?.38:1},children:["meterColor"in f&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{position:"absolute",top:6,bottom:6,left:f.meterSide==="left"?6:void 0,right:f.meterSide==="right"?6:void 0,width:6,borderRadius:999,background:"rgba(255,255,255,0.07)",border:"1px solid rgba(255,255,255,0.08)"}}),e.jsx("div",{style:{position:"absolute",bottom:7,left:f.meterSide==="left"?7:void 0,right:f.meterSide==="right"?7:void 0,width:4,height:f.meterFill,borderRadius:999,background:f.meterColor,boxShadow:f.meterSide==="left"?"0 0 10px rgba(251,191,36,0.45)":"0 0 10px rgba(244,114,182,0.45)",transition:"height 0.25s ease"}})]}),e.jsx("span",{style:{fontFamily:"var(--font-headline)",fontSize:11,fontWeight:400,letterSpacing:"0.08em",textTransform:"uppercase",lineHeight:1.1},children:f.label}),e.jsx("span",{style:{fontFamily:"var(--font-ui)",fontSize:10,color:"var(--terminal-green)",letterSpacing:"0.08em",lineHeight:1},children:f.sublabel}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:6,width:"100%",marginTop:"auto"},children:[e.jsx("button",{type:"button",onClick:f.onDecrease,onPointerEnter:ce,disabled:f.disabled||!f.canDecrease,style:{border:"1px solid rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.04)",color:"var(--terminal-green-soft)",borderRadius:8,minHeight:24,cursor:f.disabled||!f.canDecrease?"not-allowed":"pointer",fontFamily:"var(--font-headline)",fontSize:12,letterSpacing:"0.08em",opacity:f.disabled||!f.canDecrease?.35:1,position:"relative",zIndex:1},children:"-"}),e.jsx("button",{type:"button",onClick:f.onIncrease,onPointerEnter:ce,disabled:f.disabled||!f.canIncrease,style:{border:"1px solid rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.04)",color:"var(--terminal-green-soft)",borderRadius:8,minHeight:24,cursor:f.disabled||!f.canIncrease?"not-allowed":"pointer",fontFamily:"var(--font-headline)",fontSize:12,letterSpacing:"0.08em",opacity:f.disabled||!f.canIncrease?.35:1,position:"relative",zIndex:1},children:"+"})]})]},f.label):e.jsxs("button",{type:"button",onClick:f.onClick,onPointerEnter:ce,disabled:"disabled"in f?f.disabled:!1,style:{minHeight:54,border:"1px solid var(--terminal-panel-border)",background:f.active?f.accent:"rgba(7,19,11,0.86)",color:"var(--terminal-green-soft)",borderRadius:10,padding:"8px 10px",cursor:"disabled"in f&&f.disabled?"not-allowed":"pointer",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,boxShadow:f.active?"0 0 18px rgba(125,255,155,0.12)":"0 8px 24px rgba(0,0,0,0.25)",position:"relative",overflow:"hidden",opacity:"disabled"in f&&f.disabled?.38:1},children:[e.jsx("span",{style:{fontFamily:"var(--font-headline)",fontSize:11,fontWeight:400,letterSpacing:"0.08em",textTransform:"uppercase",lineHeight:1.1},children:f.label}),e.jsx("span",{style:{fontFamily:"var(--font-ui)",fontSize:10,color:"var(--terminal-green)",letterSpacing:"0.08em",lineHeight:1},children:f.sublabel})]},f.label))})]}),e.jsx("color",{attach:"background",args:["#050505"]})]})}const to={name:"lightlane",displayName:"Lightlane Challenge",version:"1.1.0",paramSchema:{hideScenePresentation:{type:"boolean",label:"Hide Sphere + Lightlanes",default:!1},hideFlyingBars:{type:"boolean",label:"Hide Flying Bars",default:!1},hideDataBoxes:{type:"boolean",label:"Hide Data Boxes",default:!1},complexity:{type:"range",label:"Complexity",default:5,min:1,max:20,step:1},radius:{type:"range",label:"Distance to star",default:2,min:.1,max:5,step:.1},chandraDistance:{type:"range",label:"Chandra Camera Distance",default:6,min:5,max:30,step:.5},observationMode:{type:"select",label:"Observation Mode",default:"randomSphere",options:[{value:"orbit",label:"Orbit"},{value:"randomSphere",label:"Random Sphere"}]},sceneView:{type:"select",label:"Scene View",default:"both",options:[{value:"both",label:"Both"},{value:"poisson",label:"Poisson"},{value:"lightlane",label:"Lightlane"}]},orbitSpeed:{type:"range",label:"Orbit Speed",default:.2,min:0,max:2,step:.01},thetaDrift:{type:"range",label:"Theta Drift",default:0,min:-1,max:1,step:.01},thetaJitter:{type:"range",label:"Theta Jitter",default:0,min:0,max:.25,step:.005},phiJitter:{type:"range",label:"Phi Jitter",default:0,min:0,max:.5,step:.01},speedup:{type:"range",label:"Speedup",default:1,min:1,max:240,step:1}},defaultParams:{complexity:5,radius:2,orbitSpeed:.2,thetaDrift:0,thetaJitter:0,phiJitter:0,chandraDistance:6,observationMode:"randomSphere",sceneView:"both",speedup:1,distance:5,showAxes:!1,lightlanes:!0,allSectors:!0,cumulative:!1,phi:0,theta:Math.PI/2,K:1e3,usePoisson:!0,hideScenePresentation:!1,hideFlyingBars:!1,hideDataBoxes:!1}};export{eo as default,to as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-CDPygLjY.js b/public/glitch/glitch_gallery/assets/index-CDPygLjY.js new file mode 100644 index 0000000..3431fff --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-CDPygLjY.js @@ -0,0 +1 @@ +import{j as a,G as r}from"./index-CEeZxcxj.js";function l({className:e}){return a.jsx("div",{className:e,children:a.jsx(r,{})})}const s={name:"gallery",displayName:"Glitch Gallery",version:"0.1.0",paramSchema:{},defaultParams:{}};export{l as default,s as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-CEeZxcxj.js b/public/glitch/glitch_gallery/assets/index-CEeZxcxj.js new file mode 100644 index 0000000..3be31df --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-CEeZxcxj.js @@ -0,0 +1,4031 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-B1PtMIUq.js","assets/index-DOIp2aoq.css","assets/index-CMvlyyxu.js","assets/index-Bdi24PkQ.css","assets/index-CwQ-ysLn.js","assets/index-BoeEa7xH.css","assets/index-CRhmqMwz.js","assets/index-B7Erow2S.css","assets/index-BOUPxVBe.js","assets/index-WVFKiT6G.css","assets/index-DOdpM0HQ.js","assets/index-hWn6tbl7.css","assets/index-MgCr_Urj.js","assets/index-D0SeHWP2.css","assets/index-Be41ZfS7.js","assets/index-C2PFO5cD.css","assets/index-DnqmHVBx.js","assets/index-mpZwhQDb.css"])))=>i.map(i=>d[i]); +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const u of s)if(u.type==="childList")for(const f of u.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&n(f)}).observe(document,{childList:!0,subtree:!0});function t(s){const u={};return s.integrity&&(u.integrity=s.integrity),s.referrerPolicy&&(u.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?u.credentials="include":s.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function n(s){if(s.ep)return;s.ep=!0;const u=t(s);fetch(s.href,u)}})();function py(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var I_={exports:{}},Lp={};var jS;function $A(){if(jS)return Lp;jS=1;var r=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function t(n,s,u){var f=null;if(u!==void 0&&(f=""+u),s.key!==void 0&&(f=""+s.key),"key"in s){u={};for(var h in s)h!=="key"&&(u[h]=s[h])}else u=s;return s=u.ref,{$$typeof:r,type:n,key:f,ref:s!==void 0?s:null,props:u}}return Lp.Fragment=e,Lp.jsx=t,Lp.jsxs=t,Lp}var YS;function ew(){return YS||(YS=1,I_.exports=$A()),I_.exports}var he=ew(),O_={exports:{}},Up={},P_={exports:{}},z_={};var ZS;function tw(){return ZS||(ZS=1,(function(r){function e(Y,q){var ne=Y.length;Y.push(q);e:for(;0>>1,Ne=Y[be];if(0>>1;bes(Ae,ne))Fes(lt,Ae)?(Y[be]=lt,Y[Fe]=ne,be=Fe):(Y[be]=Ae,Y[oe]=ne,be=oe);else if(Fes(lt,ne))Y[be]=lt,Y[Fe]=ne,be=Fe;else break e}}return q}function s(Y,q){var ne=Y.sortIndex-q.sortIndex;return ne!==0?ne:Y.id-q.id}if(r.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;r.unstable_now=function(){return u.now()}}else{var f=Date,h=f.now();r.unstable_now=function(){return f.now()-h}}var m=[],g=[],_=1,x=null,b=3,M=!1,A=!1,R=!1,w=!1,E=typeof setTimeout=="function"?setTimeout:null,N=typeof clearTimeout=="function"?clearTimeout:null,D=typeof setImmediate<"u"?setImmediate:null;function U(Y){for(var q=t(g);q!==null;){if(q.callback===null)n(g);else if(q.startTime<=Y)n(g),q.sortIndex=q.expirationTime,e(m,q);else break;q=t(g)}}function B(Y){if(R=!1,U(Y),!A)if(t(m)!==null)A=!0,z||(z=!0,se());else{var q=t(g);q!==null&&pe(B,q.startTime-Y)}}var z=!1,H=-1,W=5,I=-1;function P(){return w?!0:!(r.unstable_now()-IY&&P());){var be=x.callback;if(typeof be=="function"){x.callback=null,b=x.priorityLevel;var Ne=be(x.expirationTime<=Y);if(Y=r.unstable_now(),typeof Ne=="function"){x.callback=Ne,U(Y),q=!0;break t}x===t(m)&&n(m),U(Y)}else n(m);x=t(m)}if(x!==null)q=!0;else{var X=t(g);X!==null&&pe(B,X.startTime-Y),q=!1}}break e}finally{x=null,b=ne,M=!1}q=void 0}}finally{q?se():z=!1}}}var se;if(typeof D=="function")se=function(){D(Z)};else if(typeof MessageChannel<"u"){var te=new MessageChannel,fe=te.port2;te.port1.onmessage=Z,se=function(){fe.postMessage(null)}}else se=function(){E(Z,0)};function pe(Y,q){H=E(function(){Y(r.unstable_now())},q)}r.unstable_IdlePriority=5,r.unstable_ImmediatePriority=1,r.unstable_LowPriority=4,r.unstable_NormalPriority=3,r.unstable_Profiling=null,r.unstable_UserBlockingPriority=2,r.unstable_cancelCallback=function(Y){Y.callback=null},r.unstable_forceFrameRate=function(Y){0>Y||125be?(Y.sortIndex=ne,e(g,Y),t(m)===null&&Y===t(g)&&(R?(N(H),H=-1):R=!0,pe(B,ne-be))):(Y.sortIndex=Ne,e(m,Y),A||M||(A=!0,z||(z=!0,se()))),Y},r.unstable_shouldYield=P,r.unstable_wrapCallback=function(Y){var q=b;return function(){var ne=b;b=q;try{return Y.apply(this,arguments)}finally{b=ne}}}})(z_)),z_}var QS;function nE(){return QS||(QS=1,P_.exports=tw()),P_.exports}var B_={exports:{}},Qt={};var KS;function nw(){if(KS)return Qt;KS=1;var r=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),f=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),g=Symbol.for("react.memo"),_=Symbol.for("react.lazy"),x=Symbol.for("react.activity"),b=Symbol.iterator;function M(X){return X===null||typeof X!="object"?null:(X=b&&X[b]||X["@@iterator"],typeof X=="function"?X:null)}var A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},R=Object.assign,w={};function E(X,oe,Ae){this.props=X,this.context=oe,this.refs=w,this.updater=Ae||A}E.prototype.isReactComponent={},E.prototype.setState=function(X,oe){if(typeof X!="object"&&typeof X!="function"&&X!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,X,oe,"setState")},E.prototype.forceUpdate=function(X){this.updater.enqueueForceUpdate(this,X,"forceUpdate")};function N(){}N.prototype=E.prototype;function D(X,oe,Ae){this.props=X,this.context=oe,this.refs=w,this.updater=Ae||A}var U=D.prototype=new N;U.constructor=D,R(U,E.prototype),U.isPureReactComponent=!0;var B=Array.isArray;function z(){}var H={H:null,A:null,T:null,S:null},W=Object.prototype.hasOwnProperty;function I(X,oe,Ae){var Fe=Ae.ref;return{$$typeof:r,type:X,key:oe,ref:Fe!==void 0?Fe:null,props:Ae}}function P(X,oe){return I(X.type,oe,X.props)}function Z(X){return typeof X=="object"&&X!==null&&X.$$typeof===r}function se(X){var oe={"=":"=0",":":"=2"};return"$"+X.replace(/[=:]/g,function(Ae){return oe[Ae]})}var te=/\/+/g;function fe(X,oe){return typeof X=="object"&&X!==null&&X.key!=null?se(""+X.key):oe.toString(36)}function pe(X){switch(X.status){case"fulfilled":return X.value;case"rejected":throw X.reason;default:switch(typeof X.status=="string"?X.then(z,z):(X.status="pending",X.then(function(oe){X.status==="pending"&&(X.status="fulfilled",X.value=oe)},function(oe){X.status==="pending"&&(X.status="rejected",X.reason=oe)})),X.status){case"fulfilled":return X.value;case"rejected":throw X.reason}}throw X}function Y(X,oe,Ae,Fe,lt){var de=typeof X;(de==="undefined"||de==="boolean")&&(X=null);var Re=!1;if(X===null)Re=!0;else switch(de){case"bigint":case"string":case"number":Re=!0;break;case"object":switch(X.$$typeof){case r:case e:Re=!0;break;case _:return Re=X._init,Y(Re(X._payload),oe,Ae,Fe,lt)}}if(Re)return lt=lt(X),Re=Fe===""?"."+fe(X,0):Fe,B(lt)?(Ae="",Re!=null&&(Ae=Re.replace(te,"$&/")+"/"),Y(lt,oe,Ae,"",function(ht){return ht})):lt!=null&&(Z(lt)&&(lt=P(lt,Ae+(lt.key==null||X&&X.key===lt.key?"":(""+lt.key).replace(te,"$&/")+"/")+Re)),oe.push(lt)),1;Re=0;var tt=Fe===""?".":Fe+":";if(B(X))for(var st=0;st"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(e){console.error(e)}}return r(),F_.exports=iw(),F_.exports}var tM;function sw(){if(tM)return Up;tM=1;var r=nE(),e=Tm(),t=aw();function n(i){var a="https://react.dev/errors/"+i;if(1Ne||(i.current=be[Ne],be[Ne]=null,Ne--)}function Ae(i,a){Ne++,be[Ne]=i.current,i.current=a}var Fe=X(null),lt=X(null),de=X(null),Re=X(null);function tt(i,a){switch(Ae(de,a),Ae(lt,i),Ae(Fe,null),a.nodeType){case 9:case 11:i=(i=a.documentElement)&&(i=i.namespaceURI)?gS(i):0;break;default:if(i=a.tagName,a=a.namespaceURI)a=gS(a),i=vS(a,i);else switch(i){case"svg":i=1;break;case"math":i=2;break;default:i=0}}oe(Fe),Ae(Fe,i)}function st(){oe(Fe),oe(lt),oe(de)}function ht(i){i.memoizedState!==null&&Ae(Re,i);var a=Fe.current,c=vS(a,i.type);a!==c&&(Ae(lt,i),Ae(Fe,c))}function jt(i){lt.current===i&&(oe(Fe),oe(lt)),Re.current===i&&(oe(Re),Cp._currentValue=ne)}var tn,Nt;function Le(i){if(tn===void 0)try{throw Error()}catch(c){var a=c.stack.trim().match(/\n( *(at )?)/);tn=a&&a[1]||"",Nt=-1)":-1y||$[d]!==ve[y]){var De=` +`+$[d].replace(" at new "," at ");return i.displayName&&De.includes("")&&(De=De.replace("",i.displayName)),De}while(1<=d&&0<=y);break}}}finally{He=!1,Error.prepareStackTrace=c}return(c=i?i.displayName||i.name:"")?Le(c):""}function nt(i,a){switch(i.tag){case 26:case 27:case 5:return Le(i.type);case 16:return Le("Lazy");case 13:return i.child!==a&&a!==null?Le("Suspense Fallback"):Le("Suspense");case 19:return Le("SuspenseList");case 0:case 15:return Oe(i.type,!1);case 11:return Oe(i.type.render,!1);case 1:return Oe(i.type,!0);case 31:return Le("Activity");default:return""}}function Q(i){try{var a="",c=null;do a+=nt(i,c),c=i,i=i.return;while(i);return a}catch(d){return` +Error generating stack: `+d.message+` +`+d.stack}}var Et=Object.prototype.hasOwnProperty,ot=r.unstable_scheduleCallback,Tt=r.unstable_cancelCallback,Qe=r.unstable_shouldYield,G=r.unstable_requestPaint,O=r.unstable_now,ae=r.unstable_getCurrentPriorityLevel,Te=r.unstable_ImmediatePriority,Ie=r.unstable_UserBlockingPriority,Ee=r.unstable_NormalPriority,dt=r.unstable_LowPriority,Ke=r.unstable_IdlePriority,vt=r.log,Dt=r.unstable_setDisableYieldValue,Ve=null,Ze=null;function ct(i){if(typeof vt=="function"&&Dt(i),Ze&&typeof Ze.setStrictMode=="function")try{Ze.setStrictMode(Ve,i)}catch{}}var K=Math.clz32?Math.clz32:J,me=Math.log,et=Math.LN2;function J(i){return i>>>=0,i===0?32:31-(me(i)/et|0)|0}var je=256,Ge=262144,at=4194304;function Xe(i){var a=i&42;if(a!==0)return a;switch(i&-i){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return i&261888;case 262144:case 524288:case 1048576:case 2097152:return i&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return i&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return i}}function Ue(i,a,c){var d=i.pendingLanes;if(d===0)return 0;var y=0,S=i.suspendedLanes,L=i.pingedLanes;i=i.warmLanes;var V=d&134217727;return V!==0?(d=V&~S,d!==0?y=Xe(d):(L&=V,L!==0?y=Xe(L):c||(c=V&~i,c!==0&&(y=Xe(c))))):(V=d&~S,V!==0?y=Xe(V):L!==0?y=Xe(L):c||(c=d&~i,c!==0&&(y=Xe(c)))),y===0?0:a!==0&&a!==y&&(a&S)===0&&(S=y&-y,c=a&-a,S>=c||S===32&&(c&4194048)!==0)?a:y}function Ye(i,a){return(i.pendingLanes&~(i.suspendedLanes&~i.pingedLanes)&a)===0}function Ct(i,a){switch(i){case 1:case 2:case 4:case 8:case 64:return a+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Jt(){var i=at;return at<<=1,(at&62914560)===0&&(at=4194304),i}function nn(i){for(var a=[],c=0;31>c;c++)a.push(i);return a}function Jn(i,a){i.pendingLanes|=a,a!==268435456&&(i.suspendedLanes=0,i.pingedLanes=0,i.warmLanes=0)}function Ci(i,a,c,d,y,S){var L=i.pendingLanes;i.pendingLanes=c,i.suspendedLanes=0,i.pingedLanes=0,i.warmLanes=0,i.expiredLanes&=c,i.entangledLanes&=c,i.errorRecoveryDisabledLanes&=c,i.shellSuspendCounter=0;var V=i.entanglements,$=i.expirationTimes,ve=i.hiddenUpdates;for(c=L&~c;0"u")return null;try{return i.activeElement||i.body}catch{return i.body}}var _n=/[\n"\\]/g;function Ft(i){return i.replace(_n,function(a){return"\\"+a.charCodeAt(0).toString(16)+" "})}function xi(i,a,c,d,y,S,L,V){i.name="",L!=null&&typeof L!="function"&&typeof L!="symbol"&&typeof L!="boolean"?i.type=L:i.removeAttribute("type"),a!=null?L==="number"?(a===0&&i.value===""||i.value!=a)&&(i.value=""+Pt(a)):i.value!==""+Pt(a)&&(i.value=""+Pt(a)):L!=="submit"&&L!=="reset"||i.removeAttribute("value"),a!=null?Wn(i,L,Pt(a)):c!=null?Wn(i,L,Pt(c)):d!=null&&i.removeAttribute("value"),y==null&&S!=null&&(i.defaultChecked=!!S),y!=null&&(i.checked=y&&typeof y!="function"&&typeof y!="symbol"),V!=null&&typeof V!="function"&&typeof V!="symbol"&&typeof V!="boolean"?i.name=""+Pt(V):i.removeAttribute("name")}function Ls(i,a,c,d,y,S,L,V){if(S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"&&(i.type=S),a!=null||c!=null){if(!(S!=="submit"&&S!=="reset"||a!=null)){In(i);return}c=c!=null?""+Pt(c):"",a=a!=null?""+Pt(a):c,V||a===i.value||(i.value=a),i.defaultValue=a}d=d??y,d=typeof d!="function"&&typeof d!="symbol"&&!!d,i.checked=V?i.checked:!!d,i.defaultChecked=!!d,L!=null&&typeof L!="function"&&typeof L!="symbol"&&typeof L!="boolean"&&(i.name=L),In(i)}function Wn(i,a,c){a==="number"&&ut(i.ownerDocument)===i||i.defaultValue===""+c||(i.defaultValue=""+c)}function la(i,a,c,d){if(i=i.options,a){a={};for(var y=0;y"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),fd=!1;if(Ws)try{var Ol={};Object.defineProperty(Ol,"passive",{get:function(){fd=!0}}),window.addEventListener("test",Ol,Ol),window.removeEventListener("test",Ol,Ol)}catch{fd=!1}var Ga=null,pf=null,jo=null;function Wu(){if(jo)return jo;var i,a=pf,c=a.length,d,y="value"in Ga?Ga.value:Ga.textContent,S=y.length;for(i=0;i=kl),Jm=" ",Qu=!1;function Sf(i,a){switch(i){case"keyup":return Km.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function yd(i){return i=i.detail,typeof i=="object"&&"data"in i?i.data:null}var Qo=!1;function $m(i,a){switch(i){case"compositionend":return yd(a);case"keypress":return a.which!==32?null:(Qu=!0,Jm);case"textInput":return i=a.data,i===Jm&&Qu?null:i;default:return null}}function _d(i,a){if(Qo)return i==="compositionend"||!Zo&&Sf(i,a)?(i=Wu(),jo=pf=Ga=null,Qo=!1,i):null;switch(i){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1=a)return{node:c,offset:a-i};i=d}e:{for(;c;){if(c.nextSibling){c=c.nextSibling;break e}c=c.parentNode}c=void 0}c=$u(c)}}function Fn(i,a){return i&&a?i===a?!0:i&&i.nodeType===3?!1:a&&a.nodeType===3?Fn(i,a.parentNode):"contains"in i?i.contains(a):i.compareDocumentPosition?!!(i.compareDocumentPosition(a)&16):!1:!1}function ag(i){i=i!=null&&i.ownerDocument!=null&&i.ownerDocument.defaultView!=null?i.ownerDocument.defaultView:window;for(var a=ut(i.document);a instanceof i.HTMLIFrameElement;){try{var c=typeof a.contentWindow.location.href=="string"}catch{c=!1}if(c)i=a.contentWindow;else break;a=ut(i.document)}return a}function wd(i){var a=i&&i.nodeName&&i.nodeName.toLowerCase();return a&&(a==="input"&&(i.type==="text"||i.type==="search"||i.type==="tel"||i.type==="url"||i.type==="password")||a==="textarea"||i.contentEditable==="true")}var sg=Ws&&"documentMode"in document&&11>=document.documentMode,js=null,Ys=null,Xl=null,Ef=!1;function Wl(i,a,c){var d=c.window===c?c.document:c.nodeType===9?c:c.ownerDocument;Ef||js==null||js!==ut(d)||(d=js,"selectionStart"in d&&wd(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Xl&&Hl(Xl,d)||(Xl=d,d=a0(Ys,"onSelect"),0>=L,y-=L,ti=1<<32-K(a)+y|c<ln?(bn=At,At=null):bn=At.sibling;var Nn=xe(le,At,ge[ln],Pe);if(Nn===null){At===null&&(At=bn);break}i&&At&&Nn.alternate===null&&a(le,At),ie=S(Nn,ie,ln),Rn===null?It=Nn:Rn.sibling=Nn,Rn=Nn,At=bn}if(ln===ge.length)return c(le,At),mn&&Qs(le,ln),It;if(At===null){for(;lnln?(bn=At,At=null):bn=At.sibling;var Su=xe(le,At,Nn.value,Pe);if(Su===null){At===null&&(At=bn);break}i&&At&&Su.alternate===null&&a(le,At),ie=S(Su,ie,ln),Rn===null?It=Su:Rn.sibling=Su,Rn=Su,At=bn}if(Nn.done)return c(le,At),mn&&Qs(le,ln),It;if(At===null){for(;!Nn.done;ln++,Nn=ge.next())Nn=Be(le,Nn.value,Pe),Nn!==null&&(ie=S(Nn,ie,ln),Rn===null?It=Nn:Rn.sibling=Nn,Rn=Nn);return mn&&Qs(le,ln),It}for(At=d(At);!Nn.done;ln++,Nn=ge.next())Nn=Ce(At,le,ln,Nn.value,Pe),Nn!==null&&(i&&Nn.alternate!==null&&At.delete(Nn.key===null?ln:Nn.key),ie=S(Nn,ie,ln),Rn===null?It=Nn:Rn.sibling=Nn,Rn=Nn);return i&&At.forEach(function(JA){return a(le,JA)}),mn&&Qs(le,ln),It}function Gn(le,ie,ge,Pe){if(typeof ge=="object"&&ge!==null&&ge.type===R&&ge.key===null&&(ge=ge.props.children),typeof ge=="object"&&ge!==null){switch(ge.$$typeof){case M:e:{for(var It=ge.key;ie!==null;){if(ie.key===It){if(It=ge.type,It===R){if(ie.tag===7){c(le,ie.sibling),Pe=y(ie,ge.props.children),Pe.return=le,le=Pe;break e}}else if(ie.elementType===It||typeof It=="object"&&It!==null&&It.$$typeof===W&&tl(It)===ie.type){c(le,ie.sibling),Pe=y(ie,ge.props),ds(Pe,ge),Pe.return=le,le=Pe;break e}c(le,ie);break}else a(le,ie);ie=ie.sibling}ge.type===R?(Pe=ro(ge.props.children,le.mode,Pe,ge.key),Pe.return=le,le=Pe):(Pe=Zs(ge.type,ge.key,ge.props,null,le.mode,Pe),ds(Pe,ge),Pe.return=le,le=Pe)}return L(le);case A:e:{for(It=ge.key;ie!==null;){if(ie.key===It)if(ie.tag===4&&ie.stateNode.containerInfo===ge.containerInfo&&ie.stateNode.implementation===ge.implementation){c(le,ie.sibling),Pe=y(ie,ge.children||[]),Pe.return=le,le=Pe;break e}else{c(le,ie);break}else a(le,ie);ie=ie.sibling}Pe=Rf(ge,le.mode,Pe),Pe.return=le,le=Pe}return L(le);case W:return ge=tl(ge),Gn(le,ie,ge,Pe)}if(pe(ge))return Mt(le,ie,ge,Pe);if(se(ge)){if(It=se(ge),typeof It!="function")throw Error(n(150));return ge=It.call(ge),kt(le,ie,ge,Pe)}if(typeof ge.then=="function")return Gn(le,ie,uc(ge),Pe);if(ge.$$typeof===D)return Gn(le,ie,$l(le,ge),Pe);eu(le,ge)}return typeof ge=="string"&&ge!==""||typeof ge=="number"||typeof ge=="bigint"?(ge=""+ge,ie!==null&&ie.tag===6?(c(le,ie.sibling),Pe=y(ie,ge),Pe.return=le,le=Pe):(c(le,ie),Pe=Cf(ge,le.mode,Pe),Pe.return=le,le=Pe),L(le)):c(le,ie)}return function(le,ie,ge,Pe){try{sl=0;var It=Gn(le,ie,ge,Pe);return al=null,It}catch(At){if(At===el||At===an)throw At;var Rn=ei(29,At,null,le.mode);return Rn.lanes=Pe,Rn.return=le,Rn}}}var Dr=Ff(!0),kf=Ff(!1),ha=!1;function cc(i){i.updateQueue={baseState:i.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function zd(i,a){i=i.updateQueue,a.updateQueue===i&&(a.updateQueue={baseState:i.baseState,firstBaseUpdate:i.firstBaseUpdate,lastBaseUpdate:i.lastBaseUpdate,shared:i.shared,callbacks:null})}function Lr(i){return{lane:i,tag:0,payload:null,callback:null,next:null}}function po(i,a,c){var d=i.updateQueue;if(d===null)return null;if(d=d.shared,(wt&2)!==0){var y=d.pending;return y===null?a.next=a:(a.next=y.next,y.next=a),d.pending=a,a=fs(i),ao(i,null,c),a}return Hi(i,d,a,c),fs(i)}function mo(i,a,c){if(a=a.updateQueue,a!==null&&(a=a.shared,(c&4194048)!==0)){var d=a.lanes;d&=i.pendingLanes,c|=d,a.lanes=c,Kr(i,c)}}function Ut(i,a){var c=i.updateQueue,d=i.alternate;if(d!==null&&(d=d.updateQueue,c===d)){var y=null,S=null;if(c=c.firstBaseUpdate,c!==null){do{var L={lane:c.lane,tag:c.tag,payload:c.payload,callback:null,next:null};S===null?y=S=L:S=S.next=L,c=c.next}while(c!==null);S===null?y=S=a:S=S.next=a}else y=S=a;c={baseState:d.baseState,firstBaseUpdate:y,lastBaseUpdate:S,shared:d.shared,callbacks:d.callbacks},i.updateQueue=c;return}i=c.lastBaseUpdate,i===null?c.firstBaseUpdate=a:i.next=a,c.lastBaseUpdate=a}var Bd=!1;function fc(){if(Bd){var i=hs;if(i!==null)throw i}}function tu(i,a,c,d){Bd=!1;var y=i.updateQueue;ha=!1;var S=y.firstBaseUpdate,L=y.lastBaseUpdate,V=y.shared.pending;if(V!==null){y.shared.pending=null;var $=V,ve=$.next;$.next=null,L===null?S=ve:L.next=ve,L=$;var De=i.alternate;De!==null&&(De=De.updateQueue,V=De.lastBaseUpdate,V!==L&&(V===null?De.firstBaseUpdate=ve:V.next=ve,De.lastBaseUpdate=$))}if(S!==null){var Be=y.baseState;L=0,De=ve=$=null,V=S;do{var xe=V.lane&-536870913,Ce=xe!==V.lane;if(Ce?($t&xe)===xe:(d&xe)===xe){xe!==0&&xe===Nr&&(Bd=!0),De!==null&&(De=De.next={lane:0,tag:V.tag,payload:V.payload,callback:null,next:null});e:{var Mt=i,kt=V;xe=a;var Gn=c;switch(kt.tag){case 1:if(Mt=kt.payload,typeof Mt=="function"){Be=Mt.call(Gn,Be,xe);break e}Be=Mt;break e;case 3:Mt.flags=Mt.flags&-65537|128;case 0:if(Mt=kt.payload,xe=typeof Mt=="function"?Mt.call(Gn,Be,xe):Mt,xe==null)break e;Be=x({},Be,xe);break e;case 2:ha=!0}}xe=V.callback,xe!==null&&(i.flags|=64,Ce&&(i.flags|=8192),Ce=y.callbacks,Ce===null?y.callbacks=[xe]:Ce.push(xe))}else Ce={lane:xe,tag:V.tag,payload:V.payload,callback:V.callback,next:null},De===null?(ve=De=Ce,$=Be):De=De.next=Ce,L|=xe;if(V=V.next,V===null){if(V=y.shared.pending,V===null)break;Ce=V,V=Ce.next,Ce.next=null,y.lastBaseUpdate=Ce,y.shared.pending=null}}while(!0);De===null&&($=Be),y.baseState=$,y.firstBaseUpdate=ve,y.lastBaseUpdate=De,S===null&&(y.shared.lanes=0),cr|=L,i.lanes=L,i.memoizedState=Be}}function nu(i,a){if(typeof i!="function")throw Error(n(191,i));i.call(a)}function pg(i,a){var c=i.callbacks;if(c!==null)for(i.callbacks=null,i=0;iS?S:8;var L=Y.T,V={};Y.T=V,op(i,!1,a,c);try{var $=y(),ve=Y.S;if(ve!==null&&ve(V,$),$!==null&&typeof $=="object"&&typeof $.then=="function"){var De=Od($,d);mc(i,a,De,Ja(i))}else mc(i,a,d,Ja(i))}catch(Be){mc(i,a,{then:function(){},status:"rejected",reason:Be},Ja())}finally{q.p=S,L!==null&&V.types!==null&&(L.types=V.types),Y.T=L}}function o_(){}function sp(i,a,c,d){if(i.tag!==5)throw Error(n(476));var y=Vg(i).queue;kg(i,y,a,ne,c===null?o_:function(){return Hg(i),c(d)})}function Vg(i){var a=i.memoizedState;if(a!==null)return a;a={memoizedState:ne,baseState:ne,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ir,lastRenderedState:ne},next:null};var c={};return a.next={memoizedState:c,baseState:c,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ir,lastRenderedState:c},next:null},i.memoizedState=a,i=i.alternate,i!==null&&(i.memoizedState=a),a}function Hg(i){var a=Vg(i);a.next===null&&(a=i.alternate.memoizedState),mc(i,a.next.queue,{},Ja())}function rp(){return Vt(Cp)}function Gg(){return di().memoizedState}function Xg(){return di().memoizedState}function l_(i){for(var a=i.return;a!==null;){switch(a.tag){case 24:case 3:var c=Ja();i=Lr(c);var d=po(a,i,c);d!==null&&(rn(d,a,c),mo(d,a,c)),a={cache:Ld()},i.payload=a;return}a=a.return}}function u_(i,a,c){var d=Ja();c={lane:d,revertLane:0,gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Zf(i)?qg(a,c):(c=Af(i,a,c,d),c!==null&&(rn(c,i,d),jg(c,a,d)))}function Wg(i,a,c){var d=Ja();mc(i,a,c,d)}function mc(i,a,c,d){var y={lane:d,revertLane:0,gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null};if(Zf(i))qg(a,y);else{var S=i.alternate;if(i.lanes===0&&(S===null||S.lanes===0)&&(S=a.lastRenderedReducer,S!==null))try{var L=a.lastRenderedState,V=S(L,c);if(y.hasEagerState=!0,y.eagerState=V,ca(V,L))return Hi(i,a,y,0),Gt===null&&ac(),!1}catch{}if(c=Af(i,a,y,d),c!==null)return rn(c,i,d),jg(c,a,d),!0}return!1}function op(i,a,c,d){if(d={lane:2,revertLane:Me(),gesture:null,action:d,hasEagerState:!1,eagerState:null,next:null},Zf(i)){if(a)throw Error(n(479))}else a=Af(i,c,d,2),a!==null&&rn(a,i,2)}function Zf(i){var a=i.alternate;return i===Yt||a!==null&&a===Yt}function qg(i,a){au=ps=!0;var c=i.pending;c===null?a.next=a:(a.next=c.next,c.next=a),i.pending=a}function jg(i,a,c){if((c&4194048)!==0){var d=a.lanes;d&=i.pendingLanes,c|=d,a.lanes=c,Kr(i,c)}}var ru={readContext:Vt,use:go,useCallback:ni,useContext:ni,useEffect:ni,useImperativeHandle:ni,useLayoutEffect:ni,useInsertionEffect:ni,useMemo:ni,useReducer:ni,useRef:ni,useState:ni,useDebugValue:ni,useDeferredValue:ni,useTransition:ni,useSyncExternalStore:ni,useId:ni,useHostTransitionStatus:ni,useFormState:ni,useActionState:ni,useOptimistic:ni,useMemoCache:ni,useCacheRefresh:ni};ru.useEffectEvent=ni;var Yg={readContext:Vt,use:go,useCallback:function(i,a){return Di().memoizedState=[i,a===void 0?null:a],i},useContext:Vt,useEffect:Ng,useImperativeHandle:function(i,a,c){c=c!=null?c.concat([i]):null,jf(4194308,4,Og.bind(null,a,i),c)},useLayoutEffect:function(i,a){return jf(4194308,4,i,a)},useInsertionEffect:function(i,a){jf(4,2,i,a)},useMemo:function(i,a){var c=Di();a=a===void 0?null:a;var d=i();if(rl){ct(!0);try{i()}finally{ct(!1)}}return c.memoizedState=[d,a],d},useReducer:function(i,a,c){var d=Di();if(c!==void 0){var y=c(a);if(rl){ct(!0);try{c(a)}finally{ct(!1)}}}else y=a;return d.memoizedState=d.baseState=y,i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:i,lastRenderedState:y},d.queue=i,i=i.dispatch=u_.bind(null,Yt,i),[d.memoizedState,i]},useRef:function(i){var a=Di();return i={current:i},a.memoizedState=i},useState:function(i){i=Zd(i);var a=i.queue,c=Wg.bind(null,Yt,a);return a.dispatch=c,[i.memoizedState,c]},useDebugValue:ip,useDeferredValue:function(i,a){var c=Di();return ap(c,i,a)},useTransition:function(){var i=Zd(!1);return i=kg.bind(null,Yt,i.queue,!0,!1),Di().memoizedState=i,[!1,i]},useSyncExternalStore:function(i,a,c){var d=Yt,y=Di();if(mn){if(c===void 0)throw Error(n(407));c=c()}else{if(c=a(),Gt===null)throw Error(n(349));($t&127)!==0||_g(d,a,c)}y.memoizedState=c;var S={value:c,getSnapshot:a};return y.queue=S,Ng(bg.bind(null,d,S,i),[i]),d.flags|=2048,vo(9,{destroy:void 0},xg.bind(null,d,S,c,a),null),c},useId:function(){var i=Di(),a=Gt.identifierPrefix;if(mn){var c=Us,d=ti;c=(d&~(1<<32-K(d)-1)).toString(32)+c,a="_"+a+"R_"+c,c=Hf++,0<\/script>",S=S.removeChild(S.firstChild);break;case"select":S=typeof d.is=="string"?L.createElement("select",{is:d.is}):L.createElement("select"),d.multiple?S.multiple=!0:d.size&&(S.size=d.size);break;default:S=typeof d.is=="string"?L.createElement(y,{is:d.is}):L.createElement(y)}}S[$n]=a,S[Ri]=d;e:for(L=a.child;L!==null;){if(L.tag===5||L.tag===6)S.appendChild(L.stateNode);else if(L.tag!==4&&L.tag!==27&&L.child!==null){L.child.return=L,L=L.child;continue}if(L===a)break e;for(;L.sibling===null;){if(L.return===null||L.return===a)break e;L=L.return}L.sibling.return=L.return,L=L.sibling}a.stateNode=S;e:switch(ya(S,y,d),y){case"button":case"input":case"select":case"textarea":d=!!d.autoFocus;break e;case"img":d=!0;break e;default:d=!1}d&&sr(a)}}return Pn(a),_c(a,a.type,i===null?null:i.memoizedProps,a.pendingProps,c),null;case 6:if(i&&a.stateNode!=null)i.memoizedProps!==d&&sr(a);else{if(typeof d!="string"&&a.stateNode===null)throw Error(n(166));if(i=de.current,Kl(a)){if(i=a.stateNode,c=a.memoizedProps,d=null,y=li,y!==null)switch(y.tag){case 27:case 5:d=y.memoizedProps}i[$n]=a,i=!!(i.nodeValue===c||d!==null&&d.suppressHydrationWarning===!0||pS(i.nodeValue,c)),i||Js(a,!0)}else i=s0(i).createTextNode(d),i[$n]=a,a.stateNode=i}return Pn(a),null;case 31:if(c=a.memoizedState,i===null||i.memoizedState!==null){if(d=Kl(a),c!==null){if(i===null){if(!d)throw Error(n(318));if(i=a.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(n(557));i[$n]=a}else uo(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;Pn(a),i=!1}else c=Lf(),i!==null&&i.memoizedState!==null&&(i.memoizedState.hydrationErrors=c),i=!0;if(!i)return a.flags&256?(hi(a),a):(hi(a),null);if((a.flags&128)!==0)throw Error(n(558))}return Pn(a),null;case 13:if(d=a.memoizedState,i===null||i.memoizedState!==null&&i.memoizedState.dehydrated!==null){if(y=Kl(a),d!==null&&d.dehydrated!==null){if(i===null){if(!y)throw Error(n(318));if(y=a.memoizedState,y=y!==null?y.dehydrated:null,!y)throw Error(n(317));y[$n]=a}else uo(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;Pn(a),y=!1}else y=Lf(),i!==null&&i.memoizedState!==null&&(i.memoizedState.hydrationErrors=y),y=!0;if(!y)return a.flags&256?(hi(a),a):(hi(a),null)}return hi(a),(a.flags&128)!==0?(a.lanes=c,a):(c=d!==null,i=i!==null&&i.memoizedState!==null,c&&(d=a.child,y=null,d.alternate!==null&&d.alternate.memoizedState!==null&&d.alternate.memoizedState.cachePool!==null&&(y=d.alternate.memoizedState.cachePool.pool),S=null,d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(S=d.memoizedState.cachePool.pool),S!==y&&(d.flags|=2048)),c!==i&&c&&(a.child.flags|=8192),Or(a,a.updateQueue),Pn(a),null);case 4:return st(),i===null&&p_(a.stateNode.containerInfo),Pn(a),null;case 10:return tr(a.type),Pn(a),null;case 19:if(oe(gn),d=a.memoizedState,d===null)return Pn(a),null;if(y=(a.flags&128)!==0,S=d.rendering,S===null)if(y)rr(d,!1);else{if(ii!==0||i!==null&&(i.flags&128)!==0)for(i=a.child;i!==null;){if(S=ja(i),S!==null){for(a.flags|=128,rr(d,!1),i=S.updateQueue,a.updateQueue=i,Or(a,i),a.subtreeFlags=0,i=c,c=a.child;c!==null;)ql(c,i),c=c.sibling;return Ae(gn,gn.current&1|2),mn&&Qs(a,d.treeForkCount),a.child}i=i.sibling}d.tail!==null&&O()>mi&&(a.flags|=128,y=!0,rr(d,!1),a.lanes=4194304)}else{if(!y)if(i=ja(S),i!==null){if(a.flags|=128,y=!0,i=i.updateQueue,a.updateQueue=i,Or(a,i),rr(d,!0),d.tail===null&&d.tailMode==="hidden"&&!S.alternate&&!mn)return Pn(a),null}else 2*O()-d.renderingStartTime>mi&&c!==536870912&&(a.flags|=128,y=!0,rr(d,!1),a.lanes=4194304);d.isBackwards?(S.sibling=a.child,a.child=S):(i=d.last,i!==null?i.sibling=S:a.child=S,d.last=S)}return d.tail!==null?(i=d.tail,d.rendering=i,d.tail=i.sibling,d.renderingStartTime=O(),i.sibling=null,c=gn.current,Ae(gn,y?c&1|2:c&1),mn&&Qs(a,d.treeForkCount),i):(Pn(a),null);case 22:case 23:return hi(a),hc(),d=a.memoizedState!==null,i!==null?i.memoizedState!==null!==d&&(a.flags|=8192):d&&(a.flags|=8192),d?(c&536870912)!==0&&(a.flags&128)===0&&(Pn(a),a.subtreeFlags&6&&(a.flags|=8192)):Pn(a),c=a.updateQueue,c!==null&&Or(a,c.retryQueue),c=null,i!==null&&i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(c=i.memoizedState.cachePool.pool),d=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(d=a.memoizedState.cachePool.pool),d!==c&&(a.flags|=2048),i!==null&&oe(ho),null;case 24:return c=null,i!==null&&(c=i.memoizedState.cache),a.memoizedState.cache!==c&&(a.flags|=2048),tr(Si),Pn(a),null;case 25:return null;case 30:return null}throw Error(n(156,a.tag))}function gs(i,a){switch(Nf(a),a.tag){case 1:return i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 3:return tr(Si),st(),i=a.flags,(i&65536)!==0&&(i&128)===0?(a.flags=i&-65537|128,a):null;case 26:case 27:case 5:return jt(a),null;case 31:if(a.memoizedState!==null){if(hi(a),a.alternate===null)throw Error(n(340));uo()}return i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 13:if(hi(a),i=a.memoizedState,i!==null&&i.dehydrated!==null){if(a.alternate===null)throw Error(n(340));uo()}return i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 19:return oe(gn),null;case 4:return st(),null;case 10:return tr(a.type),null;case 22:case 23:return hi(a),hc(),i!==null&&oe(ho),i=a.flags,i&65536?(a.flags=i&-65537|128,a):null;case 24:return tr(Si),null;case 25:return null;default:return null}}function Ya(i,a){switch(Nf(a),a.tag){case 3:tr(Si),st();break;case 26:case 27:case 5:jt(a);break;case 4:st();break;case 31:a.memoizedState!==null&&hi(a);break;case 13:hi(a);break;case 19:oe(gn);break;case 10:tr(a.type);break;case 22:case 23:hi(a),hc(),i!==null&&oe(ho);break;case 24:tr(Si)}}function vs(i,a){try{var c=a.updateQueue,d=c!==null?c.lastEffect:null;if(d!==null){var y=d.next;c=y;do{if((c.tag&i)===i){d=void 0;var S=c.create,L=c.inst;d=S(),L.destroy=d}c=c.next}while(c!==y)}}catch(V){En(a,a.return,V)}}function Qi(i,a,c){try{var d=a.updateQueue,y=d!==null?d.lastEffect:null;if(y!==null){var S=y.next;d=S;do{if((d.tag&i)===i){var L=d.inst,V=L.destroy;if(V!==void 0){L.destroy=void 0,y=a;var $=c,ve=V;try{ve()}catch(De){En(y,$,De)}}}d=d.next}while(d!==S)}}catch(De){En(a,a.return,De)}}function Is(i){var a=i.updateQueue;if(a!==null){var c=i.stateNode;try{pg(a,c)}catch(d){En(i,i.return,d)}}}function Xi(i,a,c){c.props=yo(i.type,i.memoizedProps),c.state=i.memoizedState;try{c.componentWillUnmount()}catch(d){En(i,a,d)}}function Pr(i,a){try{var c=i.ref;if(c!==null){switch(i.tag){case 26:case 27:case 5:var d=i.stateNode;break;case 30:d=i.stateNode;break;default:d=i.stateNode}typeof c=="function"?i.refCleanup=c(d):c.current=d}}catch(y){En(i,a,y)}}function Ki(i,a){var c=i.ref,d=i.refCleanup;if(c!==null)if(typeof d=="function")try{d()}catch(y){En(i,a,y)}finally{i.refCleanup=null,i=i.alternate,i!=null&&(i.refCleanup=null)}else if(typeof c=="function")try{c(null)}catch(y){En(i,a,y)}else c.current=null}function bc(i){var a=i.type,c=i.memoizedProps,d=i.stateNode;try{e:switch(a){case"button":case"input":case"select":case"textarea":c.autoFocus&&d.focus();break e;case"img":c.src?d.src=c.src:c.srcSet&&(d.srcset=c.srcSet)}}catch(y){En(i,i.return,y)}}function Ui(i,a,c){try{var d=i.stateNode;SA(d,i.type,c,a),d[Ri]=a}catch(y){En(i,i.return,y)}}function Qn(i){return i.tag===5||i.tag===3||i.tag===26||i.tag===27&&vu(i.type)||i.tag===4}function dn(i){e:for(;;){for(;i.sibling===null;){if(i.return===null||Qn(i.return))return null;i=i.return}for(i.sibling.return=i.return,i=i.sibling;i.tag!==5&&i.tag!==6&&i.tag!==18;){if(i.tag===27&&vu(i.type)||i.flags&2||i.child===null||i.tag===4)continue e;i.child.return=i,i=i.child}if(!(i.flags&2))return i.stateNode}}function or(i,a,c){var d=i.tag;if(d===5||d===6)i=i.stateNode,a?(c.nodeType===9?c.body:c.nodeName==="HTML"?c.ownerDocument.body:c).insertBefore(i,a):(a=c.nodeType===9?c.body:c.nodeName==="HTML"?c.ownerDocument.body:c,a.appendChild(i),c=c._reactRootContainer,c!=null||a.onclick!==null||(a.onclick=Er));else if(d!==4&&(d===27&&vu(i.type)&&(c=i.stateNode,a=null),i=i.child,i!==null))for(or(i,a,c),i=i.sibling;i!==null;)or(i,a,c),i=i.sibling}function pa(i,a,c){var d=i.tag;if(d===5||d===6)i=i.stateNode,a?c.insertBefore(i,a):c.appendChild(i);else if(d!==4&&(d===27&&vu(i.type)&&(c=i.stateNode),i=i.child,i!==null))for(pa(i,a,c),i=i.sibling;i!==null;)pa(i,a,c),i=i.sibling}function oh(i){var a=i.stateNode,c=i.memoizedProps;try{for(var d=i.type,y=a.attributes;y.length;)a.removeAttributeNode(y[0]);ya(a,d,c),a[$n]=i,a[Ri]=c}catch(S){En(i,i.return,S)}}var ys=!1,Vn=!1,Os=!1,n0=typeof WeakSet=="function"?WeakSet:Set,Wi=null;function f_(i,a){if(i=i.containerInfo,v_=h0,i=ag(i),wd(i)){if("selectionStart"in i)var c={start:i.selectionStart,end:i.selectionEnd};else e:{c=(c=i.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&d.rangeCount!==0){c=d.anchorNode;var y=d.anchorOffset,S=d.focusNode;d=d.focusOffset;try{c.nodeType,S.nodeType}catch{c=null;break e}var L=0,V=-1,$=-1,ve=0,De=0,Be=i,xe=null;t:for(;;){for(var Ce;Be!==c||y!==0&&Be.nodeType!==3||(V=L+y),Be!==S||d!==0&&Be.nodeType!==3||($=L+d),Be.nodeType===3&&(L+=Be.nodeValue.length),(Ce=Be.firstChild)!==null;)xe=Be,Be=Ce;for(;;){if(Be===i)break t;if(xe===c&&++ve===y&&(V=L),xe===S&&++De===d&&($=L),(Ce=Be.nextSibling)!==null)break;Be=xe,xe=Be.parentNode}Be=Ce}c=V===-1||$===-1?null:{start:V,end:$}}else c=null}c=c||{start:0,end:0}}else c=null;for(y_={focusedElem:i,selectionRange:c},h0=!1,Wi=a;Wi!==null;)if(a=Wi,i=a.child,(a.subtreeFlags&1028)!==0&&i!==null)i.return=a,Wi=i;else for(;Wi!==null;){switch(a=Wi,S=a.alternate,i=a.flags,a.tag){case 0:if((i&4)!==0&&(i=a.updateQueue,i=i!==null?i.events:null,i!==null))for(c=0;c title"))),ya(S,d,c),S[$n]=i,k(S),d=S;break e;case"link":var L=DS("link","href",y).get(d+(c.href||""));if(L){for(var V=0;VGn&&(L=Gn,Gn=kt,kt=L);var le=Gl(V,kt),ie=Gl(V,Gn);if(le&&ie&&(Ce.rangeCount!==1||Ce.anchorNode!==le.node||Ce.anchorOffset!==le.offset||Ce.focusNode!==ie.node||Ce.focusOffset!==ie.offset)){var ge=Be.createRange();ge.setStart(le.node,le.offset),Ce.removeAllRanges(),kt>Gn?(Ce.addRange(ge),Ce.extend(ie.node,ie.offset)):(ge.setEnd(ie.node,ie.offset),Ce.addRange(ge))}}}}for(Be=[],Ce=V;Ce=Ce.parentNode;)Ce.nodeType===1&&Be.push({element:Ce,left:Ce.scrollLeft,top:Ce.scrollTop});for(typeof V.focus=="function"&&V.focus(),V=0;Vc?32:c,Y.T=null,c=hu,hu=null;var S=Ka,L=Ms;if(Ln=0,cu=Ka=null,Ms=0,(wt&6)!==0)throw Error(n(331));var V=wt;if(wt|=4,wa(S.current),xp(S,S.current,L,c),wt=V,gt(0,!1),Ze&&typeof Ze.onPostCommitFiberRoot=="function")try{Ze.onPostCommitFiberRoot(Ve,S)}catch{}return!0}finally{q.p=y,Y.T=d,hr(i,a)}}function Mp(i,a,c){a=Xa(c,a),a=dp(i.stateNode,a,2),i=po(i,a,2),i!==null&&(Jn(i,2),We(i))}function En(i,a,c){if(i.tag===3)Mp(i,i,c);else for(;a!==null;){if(a.tag===3){Mp(a,i,c);break}else if(a.tag===1){var d=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof d.componentDidCatch=="function"&&(gi===null||!gi.has(d))){i=Xa(c,i),c=pp(2),d=po(a,c,2),d!==null&&(Kg(c,d,a,i),Jn(d,2),We(d));break}}a=a.return}}function Cc(i,a,c){var d=i.pingCache;if(d===null){d=i.pingCache=new Zt;var y=new Set;d.set(a,y)}else y=d.get(a),y===void 0&&(y=new Set,d.set(a,y));y.has(c)||(bp=!0,y.add(c),i=o.bind(null,i,a,c),a.then(i,i))}function o(i,a,c){var d=i.pingCache;d!==null&&d.delete(a),i.pingedLanes|=i.suspendedLanes&c,i.warmLanes&=~c,Gt===i&&($t&c)===c&&(ii===4||ii===3&&($t&62914560)===$t&&300>O()-uu?(wt&2)===0&&Ao(i,0):Mc|=c,qn===$t&&(qn=0)),We(i)}function l(i,a){a===0&&(a=Jt()),i=fa(i,a),i!==null&&(Jn(i,a),We(i))}function p(i){var a=i.memoizedState,c=0;a!==null&&(c=a.retryLane),l(i,c)}function v(i,a){var c=0;switch(i.tag){case 31:case 13:var d=i.stateNode,y=i.memoizedState;y!==null&&(c=y.retryLane);break;case 19:d=i.stateNode;break;case 22:d=i.stateNode._retryCache;break;default:throw Error(n(314))}d!==null&&d.delete(a),l(i,c)}function T(i,a){return ot(i,a)}var C=null,F=null,ee=!1,we=!1,ke=!1,it=0;function We(i){i!==F&&i.next===null&&(F===null?C=F=i:F=F.next=i),we=!0,ee||(ee=!0,ce())}function gt(i,a){if(!ke&&we){ke=!0;do for(var c=!1,d=C;d!==null;){if(i!==0){var y=d.pendingLanes;if(y===0)var S=0;else{var L=d.suspendedLanes,V=d.pingedLanes;S=(1<<31-K(42|i)+1)-1,S&=y&~(L&~V),S=S&201326741?S&201326741|1:S?S|2:0}S!==0&&(c=!0,_e(d,S))}else S=$t,S=Ue(d,d===Gt?S:0,d.cancelPendingCommit!==null||d.timeoutHandle!==-1),(S&3)===0||Ye(d,S)||(c=!0,_e(d,S));d=d.next}while(c);ke=!1}}function qt(){vi()}function vi(){we=ee=!1;var i=0;it!==0&&EA()&&(i=it);for(var a=O(),c=null,d=C;d!==null;){var y=d.next,S=gu(d,a);S===0?(d.next=null,c===null?C=y:c.next=y,y===null&&(F=c)):(c=d,(i!==0||(S&3)!==0)&&(we=!0)),d=y}Ln!==0&&Ln!==5||gt(i),it!==0&&(it=0)}function gu(i,a){for(var c=i.suspendedLanes,d=i.pingedLanes,y=i.expirationTimes,S=i.pendingLanes&-62914561;0V)break;var De=$.transferSize,Be=$.initiatorType;De&&mS(Be)&&($=$.responseEnd,L+=De*($"u"?null:document;function wS(i,a,c){var d=dh;if(d&&typeof a=="string"&&a){var y=Ft(a);y='link[rel="'+i+'"][href="'+y+'"]',typeof c=="string"&&(y+='[crossorigin="'+c+'"]'),AS.has(y)||(AS.add(y),i={rel:i,crossOrigin:c,href:a},d.querySelector(y)===null&&(a=d.createElement("link"),ya(a,"link",i),k(a),d.head.appendChild(a)))}}function UA(i){xl.D(i),wS("dns-prefetch",i,null)}function IA(i,a){xl.C(i,a),wS("preconnect",i,a)}function OA(i,a,c){xl.L(i,a,c);var d=dh;if(d&&i&&a){var y='link[rel="preload"][as="'+Ft(a)+'"]';a==="image"&&c&&c.imageSrcSet?(y+='[imagesrcset="'+Ft(c.imageSrcSet)+'"]',typeof c.imageSizes=="string"&&(y+='[imagesizes="'+Ft(c.imageSizes)+'"]')):y+='[href="'+Ft(i)+'"]';var S=y;switch(a){case"style":S=ph(i);break;case"script":S=mh(i)}pr.has(S)||(i=x({rel:"preload",href:a==="image"&&c&&c.imageSrcSet?void 0:i,as:a},c),pr.set(S,i),d.querySelector(y)!==null||a==="style"&&d.querySelector(Ap(S))||a==="script"&&d.querySelector(wp(S))||(a=d.createElement("link"),ya(a,"link",i),k(a),d.head.appendChild(a)))}}function PA(i,a){xl.m(i,a);var c=dh;if(c&&i){var d=a&&typeof a.as=="string"?a.as:"script",y='link[rel="modulepreload"][as="'+Ft(d)+'"][href="'+Ft(i)+'"]',S=y;switch(d){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":S=mh(i)}if(!pr.has(S)&&(i=x({rel:"modulepreload",href:i},a),pr.set(S,i),c.querySelector(y)===null)){switch(d){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(c.querySelector(wp(S)))return}d=c.createElement("link"),ya(d,"link",i),k(d),c.head.appendChild(d)}}}function zA(i,a,c){xl.S(i,a,c);var d=dh;if(d&&i){var y=Xs(d).hoistableStyles,S=ph(i);a=a||"default";var L=y.get(S);if(!L){var V={loading:0,preload:null};if(L=d.querySelector(Ap(S)))V.loading=5;else{i=x({rel:"stylesheet",href:i,"data-precedence":a},c),(c=pr.get(S))&&T_(i,c);var $=L=d.createElement("link");k($),ya($,"link",i),$._p=new Promise(function(ve,De){$.onload=ve,$.onerror=De}),$.addEventListener("load",function(){V.loading|=1}),$.addEventListener("error",function(){V.loading|=2}),V.loading|=4,o0(L,a,d)}L={type:"stylesheet",instance:L,count:1,state:V},y.set(S,L)}}}function BA(i,a){xl.X(i,a);var c=dh;if(c&&i){var d=Xs(c).hoistableScripts,y=mh(i),S=d.get(y);S||(S=c.querySelector(wp(y)),S||(i=x({src:i,async:!0},a),(a=pr.get(y))&&A_(i,a),S=c.createElement("script"),k(S),ya(S,"link",i),c.head.appendChild(S)),S={type:"script",instance:S,count:1,state:null},d.set(y,S))}}function FA(i,a){xl.M(i,a);var c=dh;if(c&&i){var d=Xs(c).hoistableScripts,y=mh(i),S=d.get(y);S||(S=c.querySelector(wp(y)),S||(i=x({src:i,async:!0,type:"module"},a),(a=pr.get(y))&&A_(i,a),S=c.createElement("script"),k(S),ya(S,"link",i),c.head.appendChild(S)),S={type:"script",instance:S,count:1,state:null},d.set(y,S))}}function CS(i,a,c,d){var y=(y=de.current)?r0(y):null;if(!y)throw Error(n(446));switch(i){case"meta":case"title":return null;case"style":return typeof c.precedence=="string"&&typeof c.href=="string"?(a=ph(c.href),c=Xs(y).hoistableStyles,d=c.get(a),d||(d={type:"style",instance:null,count:0,state:null},c.set(a,d)),d):{type:"void",instance:null,count:0,state:null};case"link":if(c.rel==="stylesheet"&&typeof c.href=="string"&&typeof c.precedence=="string"){i=ph(c.href);var S=Xs(y).hoistableStyles,L=S.get(i);if(L||(y=y.ownerDocument||y,L={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},S.set(i,L),(S=y.querySelector(Ap(i)))&&!S._p&&(L.instance=S,L.state.loading=5),pr.has(i)||(c={rel:"preload",as:"style",href:c.href,crossOrigin:c.crossOrigin,integrity:c.integrity,media:c.media,hrefLang:c.hrefLang,referrerPolicy:c.referrerPolicy},pr.set(i,c),S||kA(y,i,c,L.state))),a&&d===null)throw Error(n(528,""));return L}if(a&&d!==null)throw Error(n(529,""));return null;case"script":return a=c.async,c=c.src,typeof c=="string"&&a&&typeof a!="function"&&typeof a!="symbol"?(a=mh(c),c=Xs(y).hoistableScripts,d=c.get(a),d||(d={type:"script",instance:null,count:0,state:null},c.set(a,d)),d):{type:"void",instance:null,count:0,state:null};default:throw Error(n(444,i))}}function ph(i){return'href="'+Ft(i)+'"'}function Ap(i){return'link[rel="stylesheet"]['+i+"]"}function RS(i){return x({},i,{"data-precedence":i.precedence,precedence:null})}function kA(i,a,c,d){i.querySelector('link[rel="preload"][as="style"]['+a+"]")?d.loading=1:(a=i.createElement("link"),d.preload=a,a.addEventListener("load",function(){return d.loading|=1}),a.addEventListener("error",function(){return d.loading|=2}),ya(a,"link",c),k(a),i.head.appendChild(a))}function mh(i){return'[src="'+Ft(i)+'"]'}function wp(i){return"script[async]"+i}function NS(i,a,c){if(a.count++,a.instance===null)switch(a.type){case"style":var d=i.querySelector('style[data-href~="'+Ft(c.href)+'"]');if(d)return a.instance=d,k(d),d;var y=x({},c,{"data-href":c.href,"data-precedence":c.precedence,href:null,precedence:null});return d=(i.ownerDocument||i).createElement("style"),k(d),ya(d,"style",y),o0(d,c.precedence,i),a.instance=d;case"stylesheet":y=ph(c.href);var S=i.querySelector(Ap(y));if(S)return a.state.loading|=4,a.instance=S,k(S),S;d=RS(c),(y=pr.get(y))&&T_(d,y),S=(i.ownerDocument||i).createElement("link"),k(S);var L=S;return L._p=new Promise(function(V,$){L.onload=V,L.onerror=$}),ya(S,"link",d),a.state.loading|=4,o0(S,c.precedence,i),a.instance=S;case"script":return S=mh(c.src),(y=i.querySelector(wp(S)))?(a.instance=y,k(y),y):(d=c,(y=pr.get(S))&&(d=x({},c),A_(d,y)),i=i.ownerDocument||i,y=i.createElement("script"),k(y),ya(y,"link",d),i.head.appendChild(y),a.instance=y);case"void":return null;default:throw Error(n(443,a.type))}else a.type==="stylesheet"&&(a.state.loading&4)===0&&(d=a.instance,a.state.loading|=4,o0(d,c.precedence,i));return a.instance}function o0(i,a,c){for(var d=c.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),y=d.length?d[d.length-1]:null,S=y,L=0;L title"):null)}function VA(i,a,c){if(c===1||a.itemProp!=null)return!1;switch(i){case"meta":case"title":return!0;case"style":if(typeof a.precedence!="string"||typeof a.href!="string"||a.href==="")break;return!0;case"link":if(typeof a.rel!="string"||typeof a.href!="string"||a.href===""||a.onLoad||a.onError)break;return a.rel==="stylesheet"?(i=a.disabled,typeof a.precedence=="string"&&i==null):!0;case"script":if(a.async&&typeof a.async!="function"&&typeof a.async!="symbol"&&!a.onLoad&&!a.onError&&a.src&&typeof a.src=="string")return!0}return!1}function US(i){return!(i.type==="stylesheet"&&(i.state.loading&3)===0)}function HA(i,a,c,d){if(c.type==="stylesheet"&&(typeof d.media!="string"||matchMedia(d.media).matches!==!1)&&(c.state.loading&4)===0){if(c.instance===null){var y=ph(d.href),S=a.querySelector(Ap(y));if(S){a=S._p,a!==null&&typeof a=="object"&&typeof a.then=="function"&&(i.count++,i=u0.bind(i),a.then(i,i)),c.state.loading|=4,c.instance=S,k(S);return}S=a.ownerDocument||a,d=RS(d),(y=pr.get(y))&&T_(d,y),S=S.createElement("link"),k(S);var L=S;L._p=new Promise(function(V,$){L.onload=V,L.onerror=$}),ya(S,"link",d),c.instance=S}i.stylesheets===null&&(i.stylesheets=new Map),i.stylesheets.set(c,a),(a=c.state.preload)&&(c.state.loading&3)===0&&(i.count++,c=u0.bind(i),a.addEventListener("load",c),a.addEventListener("error",c))}}var w_=0;function GA(i,a){return i.stylesheets&&i.count===0&&f0(i,i.stylesheets),0w_?50:800)+a);return i.unsuspend=c,function(){i.unsuspend=null,clearTimeout(d),clearTimeout(y)}}:null}function u0(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)f0(this,this.stylesheets);else if(this.unsuspend){var i=this.unsuspend;this.unsuspend=null,i()}}}var c0=null;function f0(i,a){i.stylesheets=null,i.unsuspend!==null&&(i.count++,c0=new Map,a.forEach(XA,i),c0=null,u0.call(i))}function XA(i,a){if(!(a.state.loading&4)){var c=c0.get(i);if(c)var d=c.get(null);else{c=new Map,c0.set(i,c);for(var y=i.querySelectorAll("link[data-precedence],style[data-precedence]"),S=0;S"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(e){console.error(e)}}return r(),O_.exports=sw(),O_.exports}var ow=rw();const lw=py(ow),uw="modulepreload",cw=function(r){return"/"+r},iM={},Hr=function(e,t,n){let s=Promise.resolve();if(t&&t.length>0){let m=function(g){return Promise.all(g.map(_=>Promise.resolve(_).then(x=>({status:"fulfilled",value:x}),x=>({status:"rejected",reason:x}))))};document.getElementsByTagName("link");const f=document.querySelector("meta[property=csp-nonce]"),h=f?.nonce||f?.getAttribute("nonce");s=m(t.map(g=>{if(g=cw(g),g in iM)return;iM[g]=!0;const _=g.endsWith(".css"),x=_?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${g}"]${x}`))return;const b=document.createElement("link");if(b.rel=_?"stylesheet":uw,_||(b.as="script"),b.crossOrigin="",b.href=g,h&&b.setAttribute("nonce",h),document.head.appendChild(b),_)return new Promise((M,A)=>{b.addEventListener("load",M),b.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${g}`)))})}))}function u(f){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=f,window.dispatchEvent(h),!h.defaultPrevented)throw f}return s.then(f=>{for(const h of f||[])h.status==="rejected"&&u(h.reason);return e().catch(u)})},fw="assumption-toggle",hw="Assumption Toggle",dw="1.0.0",pw="glitch_assumption_toggle",mw="@nommo/assumption-toggle",gw="dist/assumption-toggle.js",vw="src/index.tsx",yw=["glitch-component","crt","logic"],_w={componentId:fw,displayName:hw,version:dw,folderName:pw,packageName:mw,entry:gw,source:vw,tags:yw},xw="ccd",bw="CCD Photon Explorer",Sw="0.1.0",Mw="glitch_ccd",Ew="@glitch-components/ccd",Tw="dist/index.html",Aw="src/index.tsx",ww=["internal","visualization","tooling"],Cw={componentId:xw,displayName:bw,version:Sw,folderName:Mw,packageName:Ew,entry:Tw,source:Aw,tags:ww},Rw="chess_analogy",Nw="Chess Move Set Lab",Dw="1.0.0",Lw="glitch_chess_analogy",Uw="@glitch-components/chess-analogy",Iw="dist/chess_analogy.js",Ow="src/index.tsx",Pw=["glitch-component","reference","2d","chess"],zw={componentId:Rw,displayName:Nw,version:Dw,folderName:Lw,packageName:Uw,entry:Iw,source:Ow,tags:Pw},Bw="gallery",Fw="Glitch Gallery",kw="0.1.0",Vw="glitch_gallery",Hw="@glitch-components/gallery",Gw="dist/index.html",Xw="src/index.tsx",Ww=["internal","tooling","preview"],qw={componentId:Bw,displayName:Fw,version:kw,folderName:Vw,packageName:Hw,entry:Gw,source:Xw,tags:Ww},jw="level-questions",Yw="Level Questions",Zw="1.0.0",Qw="glitch_level_questions",Kw="level-questions",Jw="dist/level-questions.js",$w="src/index.tsx",eC=["glitch-component","quiz","role-mapping"],tC={componentId:jw,displayName:Yw,version:Zw,folderName:Qw,packageName:Kw,entry:Jw,source:$w,tags:eC},nC="lightlane",iC="Lightlane Challenge",aC="0.1.0",sC="glitch_lightlane",rC="@nommo/lightlane",oC="dist/lightlane.js",lC="src/index.tsx",uC=["glitch-component","reference","3d"],cC={componentId:nC,displayName:iC,version:aC,folderName:sC,packageName:rC,entry:oC,source:lC,tags:uC},fC="migration-paradox",hC="The Migration Paradox",dC="1.0.0",pC="glitch_migration_paradox",mC="migration-paradox",gC="dist/migration-paradox.js",vC="src/index.tsx",yC=["glitch-component","paradox","narrative"],_C={componentId:fC,displayName:hC,version:dC,folderName:pC,packageName:mC,entry:gC,source:vC,tags:yC},xC="onboarding",bC="Glitch University Onboarding",SC="1.0.0",MC="glitch_onboarding",EC="@glitch-components/onboarding",TC="dist/onboarding.js",AC="src/index.tsx",wC=["glitch-component","onboarding","narrative"],CC={componentId:xC,displayName:bC,version:SC,folderName:MC,packageName:EC,entry:TC,source:AC,tags:wC},RC="onboarding2",NC="Facility Slideshow",DC="1.0.0",LC="glitch_onboarding2",UC="@glitch-components/onboarding2",IC="dist/onboarding2.js",OC="src/index.tsx",PC=["glitch-component","onboarding","slideshow"],zC={componentId:RC,displayName:NC,version:DC,folderName:LC,packageName:UC,entry:IC,source:OC,tags:PC},BC="sphere-paradox",FC="Create a Perfect Sphere",kC="1.0.0",VC="glitch_sphere_paradox",HC="sphere-paradox",GC="dist/sphere-paradox.js",XC="src/index.tsx",WC=["glitch-component","3d","paradox"],qC={componentId:BC,displayName:FC,version:kC,folderName:VC,packageName:HC,entry:GC,source:XC,tags:WC},jC="voxel-universe",YC="Voxel Universe",ZC="1.0.0",QC="glitch_voxel_universe",KC="@glitch-components/voxel-universe",JC="dist/voxel_universe.js",$C="src/index.tsx",e3=["glitch-component","voxel","geometry"],t3={componentId:jC,displayName:YC,version:ZC,folderName:QC,packageName:KC,entry:JC,source:$C,tags:e3};function kx(){return kx=Object.assign?Object.assign.bind():function(r){for(var e=1;e=0;--e)if(r[e]>=65535)return!0;return!1}const G3={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Hh(r,e){return new G3[r](e)}function FE(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}function mm(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function kE(){const r=mm("canvas");return r.style.display="block",r}const aM={};let Bu=null;function X3(r){Bu=r}function W3(){return Bu}function gm(...r){const e="THREE."+r.shift();Bu?Bu("log",e,...r):console.log(e,...r)}function ft(...r){const e="THREE."+r.shift();Bu?Bu("warn",e,...r):console.warn(e,...r)}function Rt(...r){const e="THREE."+r.shift();Bu?Bu("error",e,...r):console.error(e,...r)}function Zh(...r){const e=r.join(" ");e in aM||(aM[e]=!0,ft(...r))}function q3(r,e,t){return new Promise(function(n,s){function u(){switch(r.clientWaitSync(e,r.SYNC_FLUSH_COMMANDS_BIT,0)){case r.WAIT_FAILED:s();break;case r.TIMEOUT_EXPIRED:setTimeout(u,t);break;default:n()}}setTimeout(u,t)})}let ko=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const n=this._listeners;if(n===void 0)return;const s=n[e];if(s!==void 0){const u=s.indexOf(t);u!==-1&&s.splice(u,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const n=t[e.type];if(n!==void 0){e.target=this;const s=n.slice(0);for(let u=0,f=s.length;u>8&255]+Da[r>>16&255]+Da[r>>24&255]+"-"+Da[e&255]+Da[e>>8&255]+"-"+Da[e>>16&15|64]+Da[e>>24&255]+"-"+Da[t&63|128]+Da[t>>8&255]+"-"+Da[t>>16&255]+Da[t>>24&255]+Da[n&255]+Da[n>>8&255]+Da[n>>16&255]+Da[n>>24&255]).toLowerCase()}function Ht(r,e,t){return Math.max(e,Math.min(t,r))}function wb(r,e){return(r%e+e)%e}function j3(r,e,t,n,s){return n+(r-e)*(s-n)/(t-e)}function Y3(r,e,t){return r!==e?(t-r)/(e-r):0}function im(r,e,t){return(1-t)*r+t*e}function Z3(r,e,t,n){return im(r,e,1-Math.exp(-t*n))}function Q3(r,e=1){return e-Math.abs(wb(r,e*2)-e)}function K3(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function J3(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function $3(r,e){return r+Math.floor(Math.random()*(e-r+1))}function eR(r,e){return r+Math.random()*(e-r)}function tR(r){return r*(.5-Math.random())}function nR(r){r!==void 0&&(sM=r);let e=sM+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function iR(r){return r*Jc}function aR(r){return r*Qh}function sR(r){return(r&r-1)===0&&r!==0}function rR(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function oR(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function lR(r,e,t,n,s){const u=Math.cos,f=Math.sin,h=u(t/2),m=f(t/2),g=u((e+n)/2),_=f((e+n)/2),x=u((e-n)/2),b=f((e-n)/2),M=u((n-e)/2),A=f((n-e)/2);switch(s){case"XYX":r.set(h*_,m*x,m*b,h*g);break;case"YZY":r.set(m*b,h*_,m*x,h*g);break;case"ZXZ":r.set(m*x,m*b,h*_,h*g);break;case"XZX":r.set(h*_,m*A,m*M,h*g);break;case"YXY":r.set(m*M,h*_,m*A,h*g);break;case"ZYZ":r.set(m*A,m*M,h*_,h*g);break;default:ft("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+s)}}function ns(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function on(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}const uR={DEG2RAD:Jc,RAD2DEG:Qh,generateUUID:Vs,clamp:Ht,euclideanModulo:wb,mapLinear:j3,inverseLerp:Y3,lerp:im,damp:Z3,pingpong:Q3,smoothstep:K3,smootherstep:J3,randInt:$3,randFloat:eR,randFloatSpread:tR,seededRandom:nR,degToRad:iR,radToDeg:aR,isPowerOfTwo:sR,ceilPowerOfTwo:rR,floorPowerOfTwo:oR,setQuaternionFromProperEuler:lR,normalize:on,denormalize:ns};class ze{constructor(e=0,t=0){ze.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6],this.y=s[1]*t+s[4]*n+s[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Ht(this.x,e.x,t.x),this.y=Ht(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Ht(this.x,e,t),this.y=Ht(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ht(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ht(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),s=Math.sin(t),u=this.x-e.x,f=this.y-e.y;return this.x=u*n-f*s+e.x,this.y=u*s+f*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Pa{constructor(e=0,t=0,n=0,s=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=s}static slerpFlat(e,t,n,s,u,f,h){let m=n[s+0],g=n[s+1],_=n[s+2],x=n[s+3],b=u[f+0],M=u[f+1],A=u[f+2],R=u[f+3];if(h<=0){e[t+0]=m,e[t+1]=g,e[t+2]=_,e[t+3]=x;return}if(h>=1){e[t+0]=b,e[t+1]=M,e[t+2]=A,e[t+3]=R;return}if(x!==R||m!==b||g!==M||_!==A){let w=m*b+g*M+_*A+x*R;w<0&&(b=-b,M=-M,A=-A,R=-R,w=-w);let E=1-h;if(w<.9995){const N=Math.acos(w),D=Math.sin(N);E=Math.sin(E*N)/D,h=Math.sin(h*N)/D,m=m*E+b*h,g=g*E+M*h,_=_*E+A*h,x=x*E+R*h}else{m=m*E+b*h,g=g*E+M*h,_=_*E+A*h,x=x*E+R*h;const N=1/Math.sqrt(m*m+g*g+_*_+x*x);m*=N,g*=N,_*=N,x*=N}}e[t]=m,e[t+1]=g,e[t+2]=_,e[t+3]=x}static multiplyQuaternionsFlat(e,t,n,s,u,f){const h=n[s],m=n[s+1],g=n[s+2],_=n[s+3],x=u[f],b=u[f+1],M=u[f+2],A=u[f+3];return e[t]=h*A+_*x+m*M-g*b,e[t+1]=m*A+_*b+g*x-h*M,e[t+2]=g*A+_*M+h*b-m*x,e[t+3]=_*A-h*x-m*b-g*M,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,s){return this._x=e,this._y=t,this._z=n,this._w=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,s=e._y,u=e._z,f=e._order,h=Math.cos,m=Math.sin,g=h(n/2),_=h(s/2),x=h(u/2),b=m(n/2),M=m(s/2),A=m(u/2);switch(f){case"XYZ":this._x=b*_*x+g*M*A,this._y=g*M*x-b*_*A,this._z=g*_*A+b*M*x,this._w=g*_*x-b*M*A;break;case"YXZ":this._x=b*_*x+g*M*A,this._y=g*M*x-b*_*A,this._z=g*_*A-b*M*x,this._w=g*_*x+b*M*A;break;case"ZXY":this._x=b*_*x-g*M*A,this._y=g*M*x+b*_*A,this._z=g*_*A+b*M*x,this._w=g*_*x-b*M*A;break;case"ZYX":this._x=b*_*x-g*M*A,this._y=g*M*x+b*_*A,this._z=g*_*A-b*M*x,this._w=g*_*x+b*M*A;break;case"YZX":this._x=b*_*x+g*M*A,this._y=g*M*x+b*_*A,this._z=g*_*A-b*M*x,this._w=g*_*x-b*M*A;break;case"XZY":this._x=b*_*x-g*M*A,this._y=g*M*x-b*_*A,this._z=g*_*A+b*M*x,this._w=g*_*x+b*M*A;break;default:ft("Quaternion: .setFromEuler() encountered an unknown order: "+f)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,s=Math.sin(n);return this._x=e.x*s,this._y=e.y*s,this._z=e.z*s,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],s=t[4],u=t[8],f=t[1],h=t[5],m=t[9],g=t[2],_=t[6],x=t[10],b=n+h+x;if(b>0){const M=.5/Math.sqrt(b+1);this._w=.25/M,this._x=(_-m)*M,this._y=(u-g)*M,this._z=(f-s)*M}else if(n>h&&n>x){const M=2*Math.sqrt(1+n-h-x);this._w=(_-m)/M,this._x=.25*M,this._y=(s+f)/M,this._z=(u+g)/M}else if(h>x){const M=2*Math.sqrt(1+h-n-x);this._w=(u-g)/M,this._x=(s+f)/M,this._y=.25*M,this._z=(m+_)/M}else{const M=2*Math.sqrt(1+x-n-h);this._w=(f-s)/M,this._x=(u+g)/M,this._y=(m+_)/M,this._z=.25*M}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<1e-8?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ht(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const s=Math.min(1,t/n);return this.slerp(e,s),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,s=e._y,u=e._z,f=e._w,h=t._x,m=t._y,g=t._z,_=t._w;return this._x=n*_+f*h+s*g-u*m,this._y=s*_+f*m+u*h-n*g,this._z=u*_+f*g+n*m-s*h,this._w=f*_-n*h-s*m-u*g,this._onChangeCallback(),this}slerp(e,t){if(t<=0)return this;if(t>=1)return this.copy(e);let n=e._x,s=e._y,u=e._z,f=e._w,h=this.dot(e);h<0&&(n=-n,s=-s,u=-u,f=-f,h=-h);let m=1-t;if(h<.9995){const g=Math.acos(h),_=Math.sin(g);m=Math.sin(m*g)/_,t=Math.sin(t*g)/_,this._x=this._x*m+n*t,this._y=this._y*m+s*t,this._z=this._z*m+u*t,this._w=this._w*m+f*t,this._onChangeCallback()}else this._x=this._x*m+n*t,this._y=this._y*m+s*t,this._z=this._z*m+u*t,this._w=this._w*m+f*t,this.normalize();return this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),s=Math.sqrt(1-n),u=Math.sqrt(n);return this.set(s*Math.sin(e),s*Math.cos(e),u*Math.sin(t),u*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class j{constructor(e=0,t=0,n=0){j.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(rM.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(rM.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,s=this.z,u=e.elements;return this.x=u[0]*t+u[3]*n+u[6]*s,this.y=u[1]*t+u[4]*n+u[7]*s,this.z=u[2]*t+u[5]*n+u[8]*s,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,s=this.z,u=e.elements,f=1/(u[3]*t+u[7]*n+u[11]*s+u[15]);return this.x=(u[0]*t+u[4]*n+u[8]*s+u[12])*f,this.y=(u[1]*t+u[5]*n+u[9]*s+u[13])*f,this.z=(u[2]*t+u[6]*n+u[10]*s+u[14])*f,this}applyQuaternion(e){const t=this.x,n=this.y,s=this.z,u=e.x,f=e.y,h=e.z,m=e.w,g=2*(f*s-h*n),_=2*(h*t-u*s),x=2*(u*n-f*t);return this.x=t+m*g+f*x-h*_,this.y=n+m*_+h*g-u*x,this.z=s+m*x+u*_-f*g,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,s=this.z,u=e.elements;return this.x=u[0]*t+u[4]*n+u[8]*s,this.y=u[1]*t+u[5]*n+u[9]*s,this.z=u[2]*t+u[6]*n+u[10]*s,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Ht(this.x,e.x,t.x),this.y=Ht(this.y,e.y,t.y),this.z=Ht(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Ht(this.x,e,t),this.y=Ht(this.y,e,t),this.z=Ht(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ht(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,s=e.y,u=e.z,f=t.x,h=t.y,m=t.z;return this.x=s*m-u*h,this.y=u*f-n*m,this.z=n*h-s*f,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return k_.copy(this).projectOnVector(e),this.sub(k_)}reflect(e){return this.sub(k_.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ht(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,s=this.z-e.z;return t*t+n*n+s*s}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const s=Math.sin(t)*e;return this.x=s*Math.sin(n),this.y=Math.cos(t)*e,this.z=s*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),s=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=s,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const k_=new j,rM=new Pa;class en{constructor(e,t,n,s,u,f,h,m,g){en.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,s,u,f,h,m,g)}set(e,t,n,s,u,f,h,m,g){const _=this.elements;return _[0]=e,_[1]=s,_[2]=h,_[3]=t,_[4]=u,_[5]=m,_[6]=n,_[7]=f,_[8]=g,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,s=t.elements,u=this.elements,f=n[0],h=n[3],m=n[6],g=n[1],_=n[4],x=n[7],b=n[2],M=n[5],A=n[8],R=s[0],w=s[3],E=s[6],N=s[1],D=s[4],U=s[7],B=s[2],z=s[5],H=s[8];return u[0]=f*R+h*N+m*B,u[3]=f*w+h*D+m*z,u[6]=f*E+h*U+m*H,u[1]=g*R+_*N+x*B,u[4]=g*w+_*D+x*z,u[7]=g*E+_*U+x*H,u[2]=b*R+M*N+A*B,u[5]=b*w+M*D+A*z,u[8]=b*E+M*U+A*H,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],s=e[2],u=e[3],f=e[4],h=e[5],m=e[6],g=e[7],_=e[8];return t*f*_-t*h*g-n*u*_+n*h*m+s*u*g-s*f*m}invert(){const e=this.elements,t=e[0],n=e[1],s=e[2],u=e[3],f=e[4],h=e[5],m=e[6],g=e[7],_=e[8],x=_*f-h*g,b=h*m-_*u,M=g*u-f*m,A=t*x+n*b+s*M;if(A===0)return this.set(0,0,0,0,0,0,0,0,0);const R=1/A;return e[0]=x*R,e[1]=(s*g-_*n)*R,e[2]=(h*n-s*f)*R,e[3]=b*R,e[4]=(_*t-s*m)*R,e[5]=(s*u-h*t)*R,e[6]=M*R,e[7]=(n*m-g*t)*R,e[8]=(f*t-n*u)*R,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,s,u,f,h){const m=Math.cos(u),g=Math.sin(u);return this.set(n*m,n*g,-n*(m*f+g*h)+f+e,-s*g,s*m,-s*(-g*f+m*h)+h+t,0,0,1),this}scale(e,t){return this.premultiply(V_.makeScale(e,t)),this}rotate(e){return this.premultiply(V_.makeRotation(-e)),this}translate(e,t){return this.premultiply(V_.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let s=0;s<9;s++)if(t[s]!==n[s])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const V_=new en,oM=new en().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),lM=new en().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function cR(){const r={enabled:!0,workingColorSpace:zu,spaces:{},convert:function(s,u,f){return this.enabled===!1||u===f||!u||!f||(this.spaces[u].transfer===zn&&(s.r=Nl(s.r),s.g=Nl(s.g),s.b=Nl(s.b)),this.spaces[u].primaries!==this.spaces[f].primaries&&(s.applyMatrix3(this.spaces[u].toXYZ),s.applyMatrix3(this.spaces[f].fromXYZ)),this.spaces[f].transfer===zn&&(s.r=Wh(s.r),s.g=Wh(s.g),s.b=Wh(s.b))),s},workingToColorSpace:function(s,u){return this.convert(s,this.workingColorSpace,u)},colorSpaceToWorking:function(s,u){return this.convert(s,u,this.workingColorSpace)},getPrimaries:function(s){return this.spaces[s].primaries},getTransfer:function(s){return s===Cl?dm:this.spaces[s].transfer},getToneMappingMode:function(s){return this.spaces[s].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(s,u=this.workingColorSpace){return s.fromArray(this.spaces[u].luminanceCoefficients)},define:function(s){Object.assign(this.spaces,s)},_getMatrix:function(s,u,f){return s.copy(this.spaces[u].toXYZ).multiply(this.spaces[f].fromXYZ)},_getDrawingBufferColorSpace:function(s){return this.spaces[s].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(s=this.workingColorSpace){return this.spaces[s].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(s,u){return Zh("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),r.workingToColorSpace(s,u)},toWorkingColorSpace:function(s,u){return Zh("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),r.colorSpaceToWorking(s,u)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return r.define({[zu]:{primaries:e,whitePoint:n,transfer:dm,toXYZ:oM,fromXYZ:lM,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Ia},outputColorSpaceConfig:{drawingBufferColorSpace:Ia}},[Ia]:{primaries:e,whitePoint:n,transfer:zn,toXYZ:oM,fromXYZ:lM,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Ia}}}),r}const Sn=cR();function Nl(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function Wh(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}let vh;class VE{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{vh===void 0&&(vh=mm("canvas")),vh.width=e.width,vh.height=e.height;const s=vh.getContext("2d");e instanceof ImageData?s.putImageData(e,0,0):s.drawImage(e,0,0,e.width,e.height),n=vh}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=mm("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const s=n.getImageData(0,0,e.width,e.height),u=s.data;for(let f=0;f1),this.pmremVersion=0}get width(){return this.source.getSize(G_).x}get height(){return this.source.getSize(G_).y}get depth(){return this.source.getSize(G_).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const n=e[t];if(n===void 0){ft(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const s=this[t];if(s===void 0){ft(`Texture.setValues(): property '${t}' does not exist.`);continue}s&&n&&s.isVector2&&n.isVector2||s&&n&&s.isVector3&&n.isVector3||s&&n&&s.isMatrix3&&n.isMatrix3?s.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const n={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==vy)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case um:e.x=e.x-Math.floor(e.x);break;case Rs:e.x=e.x<0?0:1;break;case cm:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case um:e.y=e.y-Math.floor(e.y);break;case Rs:e.y=e.y<0?0:1;break;case cm:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}wi.DEFAULT_IMAGE=null;wi.DEFAULT_MAPPING=vy;wi.DEFAULT_ANISOTROPY=1;class jn{constructor(e=0,t=0,n=0,s=1){jn.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=s}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,s){return this.x=e,this.y=t,this.z=n,this.w=s,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,s=this.z,u=this.w,f=e.elements;return this.x=f[0]*t+f[4]*n+f[8]*s+f[12]*u,this.y=f[1]*t+f[5]*n+f[9]*s+f[13]*u,this.z=f[2]*t+f[6]*n+f[10]*s+f[14]*u,this.w=f[3]*t+f[7]*n+f[11]*s+f[15]*u,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,s,u;const m=e.elements,g=m[0],_=m[4],x=m[8],b=m[1],M=m[5],A=m[9],R=m[2],w=m[6],E=m[10];if(Math.abs(_-b)<.01&&Math.abs(x-R)<.01&&Math.abs(A-w)<.01){if(Math.abs(_+b)<.1&&Math.abs(x+R)<.1&&Math.abs(A+w)<.1&&Math.abs(g+M+E-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const D=(g+1)/2,U=(M+1)/2,B=(E+1)/2,z=(_+b)/4,H=(x+R)/4,W=(A+w)/4;return D>U&&D>B?D<.01?(n=0,s=.707106781,u=.707106781):(n=Math.sqrt(D),s=z/n,u=H/n):U>B?U<.01?(n=.707106781,s=0,u=.707106781):(s=Math.sqrt(U),n=z/s,u=W/s):B<.01?(n=.707106781,s=.707106781,u=0):(u=Math.sqrt(B),n=H/u,s=W/u),this.set(n,s,u,t),this}let N=Math.sqrt((w-A)*(w-A)+(x-R)*(x-R)+(b-_)*(b-_));return Math.abs(N)<.001&&(N=1),this.x=(w-A)/N,this.y=(x-R)/N,this.z=(b-_)/N,this.w=Math.acos((g+M+E-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Ht(this.x,e.x,t.x),this.y=Ht(this.y,e.y,t.y),this.z=Ht(this.z,e.z,t.z),this.w=Ht(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Ht(this.x,e,t),this.y=Ht(this.y,e,t),this.z=Ht(this.z,e,t),this.w=Ht(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ht(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Cb extends ko{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:oi,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},n),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth,this.scissor=new jn(0,0,e,t),this.scissorTest=!1,this.viewport=new jn(0,0,e,t);const s={width:e,height:t,depth:n.depth},u=new wi(s);this.textures=[];const f=n.count;for(let h=0;h1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,n=e.textures.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Gr),Gr.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Ip),x0.subVectors(this.max,Ip),yh.subVectors(e.a,Ip),_h.subVectors(e.b,Ip),xh.subVectors(e.c,Ip),Mu.subVectors(_h,yh),Eu.subVectors(xh,_h),Rc.subVectors(yh,xh);let t=[0,-Mu.z,Mu.y,0,-Eu.z,Eu.y,0,-Rc.z,Rc.y,Mu.z,0,-Mu.x,Eu.z,0,-Eu.x,Rc.z,0,-Rc.x,-Mu.y,Mu.x,0,-Eu.y,Eu.x,0,-Rc.y,Rc.x,0];return!X_(t,yh,_h,xh,x0)||(t=[1,0,0,0,1,0,0,0,1],!X_(t,yh,_h,xh,x0))?!1:(b0.crossVectors(Mu,Eu),t=[b0.x,b0.y,b0.z],X_(t,yh,_h,xh,x0))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Gr).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Gr).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(bl[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),bl[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),bl[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),bl[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),bl[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),bl[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),bl[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),bl[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(bl),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const bl=[new j,new j,new j,new j,new j,new j,new j,new j],Gr=new j,_0=new za,yh=new j,_h=new j,xh=new j,Mu=new j,Eu=new j,Rc=new j,Ip=new j,x0=new j,b0=new j,Nc=new j;function X_(r,e,t,n,s){for(let u=0,f=r.length-3;u<=f;u+=3){Nc.fromArray(r,u);const h=s.x*Math.abs(Nc.x)+s.y*Math.abs(Nc.y)+s.z*Math.abs(Nc.z),m=e.dot(Nc),g=t.dot(Nc),_=n.dot(Nc);if(Math.max(-Math.max(m,g,_),Math.min(m,g,_))>h)return!1}return!0}const mR=new za,Op=new j,W_=new j;class _a{constructor(e=new j,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):mR.setFromPoints(e).getCenter(n);let s=0;for(let u=0,f=e.length;uthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Op.subVectors(e,this.center);const t=Op.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),s=(n-this.radius)*.5;this.center.addScaledVector(Op,s/n),this.radius+=s}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(W_.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Op.copy(e.center).add(W_)),this.expandByPoint(Op.copy(e.center).sub(W_))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const Sl=new j,q_=new j,S0=new j,Tu=new j,j_=new j,M0=new j,Y_=new j;class of{constructor(e=new j,t=new j(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Sl)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=Sl.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Sl.copy(this.origin).addScaledVector(this.direction,t),Sl.distanceToSquared(e))}distanceSqToSegment(e,t,n,s){q_.copy(e).add(t).multiplyScalar(.5),S0.copy(t).sub(e).normalize(),Tu.copy(this.origin).sub(q_);const u=e.distanceTo(t)*.5,f=-this.direction.dot(S0),h=Tu.dot(this.direction),m=-Tu.dot(S0),g=Tu.lengthSq(),_=Math.abs(1-f*f);let x,b,M,A;if(_>0)if(x=f*m-h,b=f*h-m,A=u*_,x>=0)if(b>=-A)if(b<=A){const R=1/_;x*=R,b*=R,M=x*(x+f*b+2*h)+b*(f*x+b+2*m)+g}else b=u,x=Math.max(0,-(f*b+h)),M=-x*x+b*(b+2*m)+g;else b=-u,x=Math.max(0,-(f*b+h)),M=-x*x+b*(b+2*m)+g;else b<=-A?(x=Math.max(0,-(-f*u+h)),b=x>0?-u:Math.min(Math.max(-u,-m),u),M=-x*x+b*(b+2*m)+g):b<=A?(x=0,b=Math.min(Math.max(-u,-m),u),M=b*(b+2*m)+g):(x=Math.max(0,-(f*u+h)),b=x>0?u:Math.min(Math.max(-u,-m),u),M=-x*x+b*(b+2*m)+g);else b=f>0?-u:u,x=Math.max(0,-(f*b+h)),M=-x*x+b*(b+2*m)+g;return n&&n.copy(this.origin).addScaledVector(this.direction,x),s&&s.copy(q_).addScaledVector(S0,b),M}intersectSphere(e,t){Sl.subVectors(e.center,this.origin);const n=Sl.dot(this.direction),s=Sl.dot(Sl)-n*n,u=e.radius*e.radius;if(s>u)return null;const f=Math.sqrt(u-s),h=n-f,m=n+f;return m<0?null:h<0?this.at(m,t):this.at(h,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,s,u,f,h,m;const g=1/this.direction.x,_=1/this.direction.y,x=1/this.direction.z,b=this.origin;return g>=0?(n=(e.min.x-b.x)*g,s=(e.max.x-b.x)*g):(n=(e.max.x-b.x)*g,s=(e.min.x-b.x)*g),_>=0?(u=(e.min.y-b.y)*_,f=(e.max.y-b.y)*_):(u=(e.max.y-b.y)*_,f=(e.min.y-b.y)*_),n>f||u>s||((u>n||isNaN(n))&&(n=u),(f=0?(h=(e.min.z-b.z)*x,m=(e.max.z-b.z)*x):(h=(e.max.z-b.z)*x,m=(e.min.z-b.z)*x),n>m||h>s)||((h>n||n!==n)&&(n=h),(m=0?n:s,t)}intersectsBox(e){return this.intersectBox(e,Sl)!==null}intersectTriangle(e,t,n,s,u){j_.subVectors(t,e),M0.subVectors(n,e),Y_.crossVectors(j_,M0);let f=this.direction.dot(Y_),h;if(f>0){if(s)return null;h=1}else if(f<0)h=-1,f=-f;else return null;Tu.subVectors(this.origin,e);const m=h*this.direction.dot(M0.crossVectors(Tu,M0));if(m<0)return null;const g=h*this.direction.dot(j_.cross(Tu));if(g<0||m+g>f)return null;const _=-h*Tu.dot(Y_);return _<0?null:this.at(_/f,u)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Xt{constructor(e,t,n,s,u,f,h,m,g,_,x,b,M,A,R,w){Xt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,s,u,f,h,m,g,_,x,b,M,A,R,w)}set(e,t,n,s,u,f,h,m,g,_,x,b,M,A,R,w){const E=this.elements;return E[0]=e,E[4]=t,E[8]=n,E[12]=s,E[1]=u,E[5]=f,E[9]=h,E[13]=m,E[2]=g,E[6]=_,E[10]=x,E[14]=b,E[3]=M,E[7]=A,E[11]=R,E[15]=w,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Xt().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return this.determinant()===0?(e.set(1,0,0),t.set(0,1,0),n.set(0,0,1),this):(e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this)}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){if(e.determinant()===0)return this.identity();const t=this.elements,n=e.elements,s=1/bh.setFromMatrixColumn(e,0).length(),u=1/bh.setFromMatrixColumn(e,1).length(),f=1/bh.setFromMatrixColumn(e,2).length();return t[0]=n[0]*s,t[1]=n[1]*s,t[2]=n[2]*s,t[3]=0,t[4]=n[4]*u,t[5]=n[5]*u,t[6]=n[6]*u,t[7]=0,t[8]=n[8]*f,t[9]=n[9]*f,t[10]=n[10]*f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,s=e.y,u=e.z,f=Math.cos(n),h=Math.sin(n),m=Math.cos(s),g=Math.sin(s),_=Math.cos(u),x=Math.sin(u);if(e.order==="XYZ"){const b=f*_,M=f*x,A=h*_,R=h*x;t[0]=m*_,t[4]=-m*x,t[8]=g,t[1]=M+A*g,t[5]=b-R*g,t[9]=-h*m,t[2]=R-b*g,t[6]=A+M*g,t[10]=f*m}else if(e.order==="YXZ"){const b=m*_,M=m*x,A=g*_,R=g*x;t[0]=b+R*h,t[4]=A*h-M,t[8]=f*g,t[1]=f*x,t[5]=f*_,t[9]=-h,t[2]=M*h-A,t[6]=R+b*h,t[10]=f*m}else if(e.order==="ZXY"){const b=m*_,M=m*x,A=g*_,R=g*x;t[0]=b-R*h,t[4]=-f*x,t[8]=A+M*h,t[1]=M+A*h,t[5]=f*_,t[9]=R-b*h,t[2]=-f*g,t[6]=h,t[10]=f*m}else if(e.order==="ZYX"){const b=f*_,M=f*x,A=h*_,R=h*x;t[0]=m*_,t[4]=A*g-M,t[8]=b*g+R,t[1]=m*x,t[5]=R*g+b,t[9]=M*g-A,t[2]=-g,t[6]=h*m,t[10]=f*m}else if(e.order==="YZX"){const b=f*m,M=f*g,A=h*m,R=h*g;t[0]=m*_,t[4]=R-b*x,t[8]=A*x+M,t[1]=x,t[5]=f*_,t[9]=-h*_,t[2]=-g*_,t[6]=M*x+A,t[10]=b-R*x}else if(e.order==="XZY"){const b=f*m,M=f*g,A=h*m,R=h*g;t[0]=m*_,t[4]=-x,t[8]=g*_,t[1]=b*x+R,t[5]=f*_,t[9]=M*x-A,t[2]=A*x-M,t[6]=h*_,t[10]=R*x+b}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(gR,e,vR)}lookAt(e,t,n){const s=this.elements;return Bs.subVectors(e,t),Bs.lengthSq()===0&&(Bs.z=1),Bs.normalize(),Au.crossVectors(n,Bs),Au.lengthSq()===0&&(Math.abs(n.z)===1?Bs.x+=1e-4:Bs.z+=1e-4,Bs.normalize(),Au.crossVectors(n,Bs)),Au.normalize(),E0.crossVectors(Bs,Au),s[0]=Au.x,s[4]=E0.x,s[8]=Bs.x,s[1]=Au.y,s[5]=E0.y,s[9]=Bs.y,s[2]=Au.z,s[6]=E0.z,s[10]=Bs.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,s=t.elements,u=this.elements,f=n[0],h=n[4],m=n[8],g=n[12],_=n[1],x=n[5],b=n[9],M=n[13],A=n[2],R=n[6],w=n[10],E=n[14],N=n[3],D=n[7],U=n[11],B=n[15],z=s[0],H=s[4],W=s[8],I=s[12],P=s[1],Z=s[5],se=s[9],te=s[13],fe=s[2],pe=s[6],Y=s[10],q=s[14],ne=s[3],be=s[7],Ne=s[11],X=s[15];return u[0]=f*z+h*P+m*fe+g*ne,u[4]=f*H+h*Z+m*pe+g*be,u[8]=f*W+h*se+m*Y+g*Ne,u[12]=f*I+h*te+m*q+g*X,u[1]=_*z+x*P+b*fe+M*ne,u[5]=_*H+x*Z+b*pe+M*be,u[9]=_*W+x*se+b*Y+M*Ne,u[13]=_*I+x*te+b*q+M*X,u[2]=A*z+R*P+w*fe+E*ne,u[6]=A*H+R*Z+w*pe+E*be,u[10]=A*W+R*se+w*Y+E*Ne,u[14]=A*I+R*te+w*q+E*X,u[3]=N*z+D*P+U*fe+B*ne,u[7]=N*H+D*Z+U*pe+B*be,u[11]=N*W+D*se+U*Y+B*Ne,u[15]=N*I+D*te+U*q+B*X,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],s=e[8],u=e[12],f=e[1],h=e[5],m=e[9],g=e[13],_=e[2],x=e[6],b=e[10],M=e[14],A=e[3],R=e[7],w=e[11],E=e[15],N=m*M-g*b,D=h*M-g*x,U=h*b-m*x,B=f*M-g*_,z=f*b-m*_,H=f*x-h*_;return t*(R*N-w*D+E*U)-n*(A*N-w*B+E*z)+s*(A*D-R*B+E*H)-u*(A*U-R*z+w*H)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const s=this.elements;return e.isVector3?(s[12]=e.x,s[13]=e.y,s[14]=e.z):(s[12]=e,s[13]=t,s[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],s=e[2],u=e[3],f=e[4],h=e[5],m=e[6],g=e[7],_=e[8],x=e[9],b=e[10],M=e[11],A=e[12],R=e[13],w=e[14],E=e[15],N=x*w*g-R*b*g+R*m*M-h*w*M-x*m*E+h*b*E,D=A*b*g-_*w*g-A*m*M+f*w*M+_*m*E-f*b*E,U=_*R*g-A*x*g+A*h*M-f*R*M-_*h*E+f*x*E,B=A*x*m-_*R*m-A*h*b+f*R*b+_*h*w-f*x*w,z=t*N+n*D+s*U+u*B;if(z===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const H=1/z;return e[0]=N*H,e[1]=(R*b*u-x*w*u-R*s*M+n*w*M+x*s*E-n*b*E)*H,e[2]=(h*w*u-R*m*u+R*s*g-n*w*g-h*s*E+n*m*E)*H,e[3]=(x*m*u-h*b*u-x*s*g+n*b*g+h*s*M-n*m*M)*H,e[4]=D*H,e[5]=(_*w*u-A*b*u+A*s*M-t*w*M-_*s*E+t*b*E)*H,e[6]=(A*m*u-f*w*u-A*s*g+t*w*g+f*s*E-t*m*E)*H,e[7]=(f*b*u-_*m*u+_*s*g-t*b*g-f*s*M+t*m*M)*H,e[8]=U*H,e[9]=(A*x*u-_*R*u-A*n*M+t*R*M+_*n*E-t*x*E)*H,e[10]=(f*R*u-A*h*u+A*n*g-t*R*g-f*n*E+t*h*E)*H,e[11]=(_*h*u-f*x*u-_*n*g+t*x*g+f*n*M-t*h*M)*H,e[12]=B*H,e[13]=(_*R*s-A*x*s+A*n*b-t*R*b-_*n*w+t*x*w)*H,e[14]=(A*h*s-f*R*s-A*n*m+t*R*m+f*n*w-t*h*w)*H,e[15]=(f*x*s-_*h*s+_*n*m-t*x*m-f*n*b+t*h*b)*H,this}scale(e){const t=this.elements,n=e.x,s=e.y,u=e.z;return t[0]*=n,t[4]*=s,t[8]*=u,t[1]*=n,t[5]*=s,t[9]*=u,t[2]*=n,t[6]*=s,t[10]*=u,t[3]*=n,t[7]*=s,t[11]*=u,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],s=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,s))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),s=Math.sin(t),u=1-n,f=e.x,h=e.y,m=e.z,g=u*f,_=u*h;return this.set(g*f+n,g*h-s*m,g*m+s*h,0,g*h+s*m,_*h+n,_*m-s*f,0,g*m-s*h,_*m+s*f,u*m*m+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,s,u,f){return this.set(1,n,u,0,e,1,f,0,t,s,1,0,0,0,0,1),this}compose(e,t,n){const s=this.elements,u=t._x,f=t._y,h=t._z,m=t._w,g=u+u,_=f+f,x=h+h,b=u*g,M=u*_,A=u*x,R=f*_,w=f*x,E=h*x,N=m*g,D=m*_,U=m*x,B=n.x,z=n.y,H=n.z;return s[0]=(1-(R+E))*B,s[1]=(M+U)*B,s[2]=(A-D)*B,s[3]=0,s[4]=(M-U)*z,s[5]=(1-(b+E))*z,s[6]=(w+N)*z,s[7]=0,s[8]=(A+D)*H,s[9]=(w-N)*H,s[10]=(1-(b+R))*H,s[11]=0,s[12]=e.x,s[13]=e.y,s[14]=e.z,s[15]=1,this}decompose(e,t,n){const s=this.elements;if(e.x=s[12],e.y=s[13],e.z=s[14],this.determinant()===0)return n.set(1,1,1),t.identity(),this;let u=bh.set(s[0],s[1],s[2]).length();const f=bh.set(s[4],s[5],s[6]).length(),h=bh.set(s[8],s[9],s[10]).length();this.determinant()<0&&(u=-u),Xr.copy(this);const g=1/u,_=1/f,x=1/h;return Xr.elements[0]*=g,Xr.elements[1]*=g,Xr.elements[2]*=g,Xr.elements[4]*=_,Xr.elements[5]*=_,Xr.elements[6]*=_,Xr.elements[8]*=x,Xr.elements[9]*=x,Xr.elements[10]*=x,t.setFromRotationMatrix(Xr),n.x=u,n.y=f,n.z=h,this}makePerspective(e,t,n,s,u,f,h=ks,m=!1){const g=this.elements,_=2*u/(t-e),x=2*u/(n-s),b=(t+e)/(t-e),M=(n+s)/(n-s);let A,R;if(m)A=u/(f-u),R=f*u/(f-u);else if(h===ks)A=-(f+u)/(f-u),R=-2*f*u/(f-u);else if(h===Yh)A=-f/(f-u),R=-f*u/(f-u);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+h);return g[0]=_,g[4]=0,g[8]=b,g[12]=0,g[1]=0,g[5]=x,g[9]=M,g[13]=0,g[2]=0,g[6]=0,g[10]=A,g[14]=R,g[3]=0,g[7]=0,g[11]=-1,g[15]=0,this}makeOrthographic(e,t,n,s,u,f,h=ks,m=!1){const g=this.elements,_=2/(t-e),x=2/(n-s),b=-(t+e)/(t-e),M=-(n+s)/(n-s);let A,R;if(m)A=1/(f-u),R=f/(f-u);else if(h===ks)A=-2/(f-u),R=-(f+u)/(f-u);else if(h===Yh)A=-1/(f-u),R=-u/(f-u);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+h);return g[0]=_,g[4]=0,g[8]=0,g[12]=b,g[1]=0,g[5]=x,g[9]=0,g[13]=M,g[2]=0,g[6]=0,g[10]=A,g[14]=R,g[3]=0,g[7]=0,g[11]=0,g[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let s=0;s<16;s++)if(t[s]!==n[s])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const bh=new j,Xr=new Xt,gR=new j(0,0,0),vR=new j(1,1,1),Au=new j,E0=new j,Bs=new j,uM=new Xt,cM=new Pa;class Gs{constructor(e=0,t=0,n=0,s=Gs.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=s}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,s=this._order){return this._x=e,this._y=t,this._z=n,this._order=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const s=e.elements,u=s[0],f=s[4],h=s[8],m=s[1],g=s[5],_=s[9],x=s[2],b=s[6],M=s[10];switch(t){case"XYZ":this._y=Math.asin(Ht(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(-_,M),this._z=Math.atan2(-f,u)):(this._x=Math.atan2(b,g),this._z=0);break;case"YXZ":this._x=Math.asin(-Ht(_,-1,1)),Math.abs(_)<.9999999?(this._y=Math.atan2(h,M),this._z=Math.atan2(m,g)):(this._y=Math.atan2(-x,u),this._z=0);break;case"ZXY":this._x=Math.asin(Ht(b,-1,1)),Math.abs(b)<.9999999?(this._y=Math.atan2(-x,M),this._z=Math.atan2(-f,g)):(this._y=0,this._z=Math.atan2(m,u));break;case"ZYX":this._y=Math.asin(-Ht(x,-1,1)),Math.abs(x)<.9999999?(this._x=Math.atan2(b,M),this._z=Math.atan2(m,u)):(this._x=0,this._z=Math.atan2(-f,g));break;case"YZX":this._z=Math.asin(Ht(m,-1,1)),Math.abs(m)<.9999999?(this._x=Math.atan2(-_,g),this._y=Math.atan2(-x,u)):(this._x=0,this._y=Math.atan2(h,M));break;case"XZY":this._z=Math.asin(-Ht(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(b,g),this._y=Math.atan2(h,u)):(this._x=Math.atan2(-_,M),this._y=0);break;default:ft("Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return uM.makeRotationFromQuaternion(e),this.setFromRotationMatrix(uM,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return cM.setFromEuler(this),this.setFromQuaternion(cM,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Gs.DEFAULT_ORDER="XYZ";class Kh{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let n=0;n0&&(s.userData=this.userData),s.layers=this.layers.mask,s.matrix=this.matrix.toArray(),s.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(s.matrixAutoUpdate=!1),this.isInstancedMesh&&(s.type="InstancedMesh",s.count=this.count,s.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(s.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(s.type="BatchedMesh",s.perObjectFrustumCulled=this.perObjectFrustumCulled,s.sortObjects=this.sortObjects,s.drawRanges=this._drawRanges,s.reservedRanges=this._reservedRanges,s.geometryInfo=this._geometryInfo.map(h=>({...h,boundingBox:h.boundingBox?h.boundingBox.toJSON():void 0,boundingSphere:h.boundingSphere?h.boundingSphere.toJSON():void 0})),s.instanceInfo=this._instanceInfo.map(h=>({...h})),s.availableInstanceIds=this._availableInstanceIds.slice(),s.availableGeometryIds=this._availableGeometryIds.slice(),s.nextIndexStart=this._nextIndexStart,s.nextVertexStart=this._nextVertexStart,s.geometryCount=this._geometryCount,s.maxInstanceCount=this._maxInstanceCount,s.maxVertexCount=this._maxVertexCount,s.maxIndexCount=this._maxIndexCount,s.geometryInitialized=this._geometryInitialized,s.matricesTexture=this._matricesTexture.toJSON(e),s.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(s.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(s.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(s.boundingBox=this.boundingBox.toJSON()));function u(h,m){return h[m.uuid]===void 0&&(h[m.uuid]=m.toJSON(e)),m.uuid}if(this.isScene)this.background&&(this.background.isColor?s.background=this.background.toJSON():this.background.isTexture&&(s.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(s.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){s.geometry=u(e.geometries,this.geometry);const h=this.geometry.parameters;if(h!==void 0&&h.shapes!==void 0){const m=h.shapes;if(Array.isArray(m))for(let g=0,_=m.length;g<_;g++){const x=m[g];u(e.shapes,x)}else u(e.shapes,m)}}if(this.isSkinnedMesh&&(s.bindMode=this.bindMode,s.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(u(e.skeletons,this.skeleton),s.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const h=[];for(let m=0,g=this.material.length;m0){s.children=[];for(let h=0;h0){s.animations=[];for(let h=0;h0&&(n.geometries=h),m.length>0&&(n.materials=m),g.length>0&&(n.textures=g),_.length>0&&(n.images=_),x.length>0&&(n.shapes=x),b.length>0&&(n.skeletons=b),M.length>0&&(n.animations=M),A.length>0&&(n.nodes=A)}return n.object=s,n;function f(h){const m=[];for(const g in h){const _=h[g];delete _.metadata,m.push(_)}return m}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n0?s.multiplyScalar(1/Math.sqrt(u)):s.set(0,0,0)}static getBarycoord(e,t,n,s,u){Wr.subVectors(s,t),El.subVectors(n,t),Q_.subVectors(e,t);const f=Wr.dot(Wr),h=Wr.dot(El),m=Wr.dot(Q_),g=El.dot(El),_=El.dot(Q_),x=f*g-h*h;if(x===0)return u.set(0,0,0),null;const b=1/x,M=(g*m-h*_)*b,A=(f*_-h*m)*b;return u.set(1-M-A,A,M)}static containsPoint(e,t,n,s){return this.getBarycoord(e,t,n,s,Tl)===null?!1:Tl.x>=0&&Tl.y>=0&&Tl.x+Tl.y<=1}static getInterpolation(e,t,n,s,u,f,h,m){return this.getBarycoord(e,t,n,s,Tl)===null?(m.x=0,m.y=0,"z"in m&&(m.z=0),"w"in m&&(m.w=0),null):(m.setScalar(0),m.addScaledVector(u,Tl.x),m.addScaledVector(f,Tl.y),m.addScaledVector(h,Tl.z),m)}static getInterpolatedAttribute(e,t,n,s,u,f){return ex.setScalar(0),tx.setScalar(0),nx.setScalar(0),ex.fromBufferAttribute(e,t),tx.fromBufferAttribute(e,n),nx.fromBufferAttribute(e,s),f.setScalar(0),f.addScaledVector(ex,u.x),f.addScaledVector(tx,u.y),f.addScaledVector(nx,u.z),f}static isFrontFacing(e,t,n,s){return Wr.subVectors(n,t),El.subVectors(e,t),Wr.cross(El).dot(s)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,s){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[s]),this}setFromAttributeAndIndices(e,t,n,s){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,s),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Wr.subVectors(this.c,this.b),El.subVectors(this.a,this.b),Wr.cross(El).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Cs.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Cs.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,s,u){return Cs.getInterpolation(e,this.a,this.b,this.c,t,n,s,u)}containsPoint(e){return Cs.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Cs.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,s=this.b,u=this.c;let f,h;Eh.subVectors(s,n),Th.subVectors(u,n),K_.subVectors(e,n);const m=Eh.dot(K_),g=Th.dot(K_);if(m<=0&&g<=0)return t.copy(n);J_.subVectors(e,s);const _=Eh.dot(J_),x=Th.dot(J_);if(_>=0&&x<=_)return t.copy(s);const b=m*x-_*g;if(b<=0&&m>=0&&_<=0)return f=m/(m-_),t.copy(n).addScaledVector(Eh,f);$_.subVectors(e,u);const M=Eh.dot($_),A=Th.dot($_);if(A>=0&&M<=A)return t.copy(u);const R=M*g-m*A;if(R<=0&&g>=0&&A<=0)return h=g/(g-A),t.copy(n).addScaledVector(Th,h);const w=_*A-M*x;if(w<=0&&x-_>=0&&M-A>=0)return gM.subVectors(u,s),h=(x-_)/(x-_+(M-A)),t.copy(s).addScaledVector(gM,h);const E=1/(w+R+b);return f=R*E,h=b*E,t.copy(n).addScaledVector(Eh,f).addScaledVector(Th,h)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const HE={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},wu={h:0,s:0,l:0},A0={h:0,s:0,l:0};function ix(r,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?r+(e-r)*6*t:t<1/2?e:t<2/3?r+(e-r)*6*(2/3-t):r}class yt{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const s=e;s&&s.isColor?this.copy(s):typeof s=="number"?this.setHex(s):typeof s=="string"&&this.setStyle(s)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Ia){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Sn.colorSpaceToWorking(this,t),this}setRGB(e,t,n,s=Sn.workingColorSpace){return this.r=e,this.g=t,this.b=n,Sn.colorSpaceToWorking(this,s),this}setHSL(e,t,n,s=Sn.workingColorSpace){if(e=wb(e,1),t=Ht(t,0,1),n=Ht(n,0,1),t===0)this.r=this.g=this.b=n;else{const u=n<=.5?n*(1+t):n+t-n*t,f=2*n-u;this.r=ix(f,u,e+1/3),this.g=ix(f,u,e),this.b=ix(f,u,e-1/3)}return Sn.colorSpaceToWorking(this,s),this}setStyle(e,t=Ia){function n(u){u!==void 0&&parseFloat(u)<1&&ft("Color: Alpha component of "+e+" will be ignored.")}let s;if(s=/^(\w+)\(([^\)]*)\)/.exec(e)){let u;const f=s[1],h=s[2];switch(f){case"rgb":case"rgba":if(u=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(h))return n(u[4]),this.setRGB(Math.min(255,parseInt(u[1],10))/255,Math.min(255,parseInt(u[2],10))/255,Math.min(255,parseInt(u[3],10))/255,t);if(u=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(h))return n(u[4]),this.setRGB(Math.min(100,parseInt(u[1],10))/100,Math.min(100,parseInt(u[2],10))/100,Math.min(100,parseInt(u[3],10))/100,t);break;case"hsl":case"hsla":if(u=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(h))return n(u[4]),this.setHSL(parseFloat(u[1])/360,parseFloat(u[2])/100,parseFloat(u[3])/100,t);break;default:ft("Color: Unknown color model "+e)}}else if(s=/^\#([A-Fa-f\d]+)$/.exec(e)){const u=s[1],f=u.length;if(f===3)return this.setRGB(parseInt(u.charAt(0),16)/15,parseInt(u.charAt(1),16)/15,parseInt(u.charAt(2),16)/15,t);if(f===6)return this.setHex(parseInt(u,16),t);ft("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Ia){const n=HE[e.toLowerCase()];return n!==void 0?this.setHex(n,t):ft("Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Nl(e.r),this.g=Nl(e.g),this.b=Nl(e.b),this}copyLinearToSRGB(e){return this.r=Wh(e.r),this.g=Wh(e.g),this.b=Wh(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Ia){return Sn.workingToColorSpace(La.copy(this),e),Math.round(Ht(La.r*255,0,255))*65536+Math.round(Ht(La.g*255,0,255))*256+Math.round(Ht(La.b*255,0,255))}getHexString(e=Ia){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Sn.workingColorSpace){Sn.workingToColorSpace(La.copy(this),t);const n=La.r,s=La.g,u=La.b,f=Math.max(n,s,u),h=Math.min(n,s,u);let m,g;const _=(h+f)/2;if(h===f)m=0,g=0;else{const x=f-h;switch(g=_<=.5?x/(f+h):x/(2-f-h),f){case n:m=(s-u)/x+(s0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){ft(`Material: parameter '${t}' has value of undefined.`);continue}const s=this[t];if(s===void 0){ft(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}s&&s.isColor?s.set(n):s&&s.isVector3&&n&&n.isVector3?s.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(n.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(n.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Kc&&(n.blending=this.blending),this.side!==Ll&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==vv&&(n.blendSrc=this.blendSrc),this.blendDst!==yv&&(n.blendDst=this.blendDst),this.blendEquation!==Du&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==ef&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==qx&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Wc&&(n.stencilFail=this.stencilFail),this.stencilZFail!==Wc&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==Wc&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.allowOverride===!1&&(n.allowOverride=!1),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function s(u){const f=[];for(const h in u){const m=u[h];delete m.metadata,f.push(m)}return f}if(t){const u=s(e.textures),f=s(e.images);u.length>0&&(n.textures=u),f.length>0&&(n.images=f)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const s=t.length;n=new Array(s);for(let u=0;u!==s;++u)n[u]=t[u].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.allowOverride=e.allowOverride,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class Vu extends Ba{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new yt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Gs,this.combine=Am,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Rl=MR();function MR(){const r=new ArrayBuffer(4),e=new Float32Array(r),t=new Uint32Array(r),n=new Uint32Array(512),s=new Uint32Array(512);for(let m=0;m<256;++m){const g=m-127;g<-27?(n[m]=0,n[m|256]=32768,s[m]=24,s[m|256]=24):g<-14?(n[m]=1024>>-g-14,n[m|256]=1024>>-g-14|32768,s[m]=-g-1,s[m|256]=-g-1):g<=15?(n[m]=g+15<<10,n[m|256]=g+15<<10|32768,s[m]=13,s[m|256]=13):g<128?(n[m]=31744,n[m|256]=64512,s[m]=24,s[m|256]=24):(n[m]=31744,n[m|256]=64512,s[m]=13,s[m|256]=13)}const u=new Uint32Array(2048),f=new Uint32Array(64),h=new Uint32Array(64);for(let m=1;m<1024;++m){let g=m<<13,_=0;for(;(g&8388608)===0;)g<<=1,_-=8388608;g&=-8388609,_+=947912704,u[m]=g|_}for(let m=1024;m<2048;++m)u[m]=939524096+(m-1024<<13);for(let m=1;m<31;++m)f[m]=m<<23;f[31]=1199570944,f[32]=2147483648;for(let m=33;m<63;++m)f[m]=2147483648+(m-32<<23);f[63]=3347054592;for(let m=1;m<64;++m)m!==32&&(h[m]=1024);return{floatView:e,uint32View:t,baseTable:n,shiftTable:s,mantissaTable:u,exponentTable:f,offsetTable:h}}function As(r){Math.abs(r)>65504&&ft("DataUtils.toHalfFloat(): Value out of range."),r=Ht(r,-65504,65504),Rl.floatView[0]=r;const e=Rl.uint32View[0],t=e>>23&511;return Rl.baseTable[t]+((e&8388607)>>Rl.shiftTable[t])}function Yp(r){const e=r>>10;return Rl.uint32View[0]=Rl.mantissaTable[Rl.offsetTable[e]+(r&1023)]+Rl.exponentTable[e],Rl.floatView[0]}class ER{static toHalfFloat(e){return As(e)}static fromHalfFloat(e){return Yp(e)}}const ji=new j,w0=new ze;let TR=0;class Xn{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:TR++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=pm,this.updateRanges=[],this.gpuType=is,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let s=0,u=this.itemSize;st.count&&ft("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new za);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){Rt("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new j(-1/0,-1/0,-1/0),new j(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,s=t.length;n0&&(e.userData=this.userData),this.parameters!==void 0){const m=this.parameters;for(const g in m)m[g]!==void 0&&(e[g]=m[g]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const m in n){const g=n[m];e.data.attributes[m]=g.toJSON(e.data)}const s={};let u=!1;for(const m in this.morphAttributes){const g=this.morphAttributes[m],_=[];for(let x=0,b=g.length;x0&&(s[m]=_,u=!0)}u&&(e.data.morphAttributes=s,e.data.morphTargetsRelative=this.morphTargetsRelative);const f=this.groups;f.length>0&&(e.data.groups=JSON.parse(JSON.stringify(f)));const h=this.boundingSphere;return h!==null&&(e.data.boundingSphere=h.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone());const s=e.attributes;for(const g in s){const _=s[g];this.setAttribute(g,_.clone(t))}const u=e.morphAttributes;for(const g in u){const _=[],x=u[g];for(let b=0,M=x.length;b0){const s=t[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let u=0,f=s.length;u(e.far-e.near)**2))&&(vM.copy(u).invert(),Dc.copy(e.ray).applyMatrix4(vM),!(n.boundingBox!==null&&Dc.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Dc)))}_computeIntersections(e,t,n){let s;const u=this.geometry,f=this.material,h=u.index,m=u.attributes.position,g=u.attributes.uv,_=u.attributes.uv1,x=u.attributes.normal,b=u.groups,M=u.drawRange;if(h!==null)if(Array.isArray(f))for(let A=0,R=b.length;At.far?null:{distance:g,point:U0.clone(),object:r}}function I0(r,e,t,n,s,u,f,h,m,g){r.getVertexPosition(h,R0),r.getVertexPosition(m,N0),r.getVertexPosition(g,D0);const _=UR(r,e,t,n,R0,N0,D0,_M);if(_){const x=new j;Cs.getBarycoord(_M,R0,N0,D0,x),s&&(_.uv=Cs.getInterpolatedAttribute(s,h,m,g,x,new ze)),u&&(_.uv1=Cs.getInterpolatedAttribute(u,h,m,g,x,new ze)),f&&(_.normal=Cs.getInterpolatedAttribute(f,h,m,g,x,new j),_.normal.dot(n.direction)>0&&_.normal.multiplyScalar(-1));const b={a:h,b:m,c:g,normal:new j,materialIndex:0};Cs.getNormal(R0,N0,D0,b.normal),_.face=b,_.barycoord=x}return _}class lf extends Kt{constructor(e=1,t=1,n=1,s=1,u=1,f=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:s,heightSegments:u,depthSegments:f};const h=this;s=Math.floor(s),u=Math.floor(u),f=Math.floor(f);const m=[],g=[],_=[],x=[];let b=0,M=0;A("z","y","x",-1,-1,n,t,e,f,u,0),A("z","y","x",1,-1,n,t,-e,f,u,1),A("x","z","y",1,1,e,n,t,s,f,2),A("x","z","y",1,-1,e,n,-t,s,f,3),A("x","y","z",1,-1,e,t,n,s,u,4),A("x","y","z",-1,-1,e,t,-n,s,u,5),this.setIndex(m),this.setAttribute("position",new bt(g,3)),this.setAttribute("normal",new bt(_,3)),this.setAttribute("uv",new bt(x,2));function A(R,w,E,N,D,U,B,z,H,W,I){const P=U/H,Z=B/W,se=U/2,te=B/2,fe=z/2,pe=H+1,Y=W+1;let q=0,ne=0;const be=new j;for(let Ne=0;Ne0?1:-1,_.push(be.x,be.y,be.z),x.push(oe/H),x.push(1-Ne/W),q+=1}}for(let Ne=0;Ne0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const s in this.extensions)this.extensions[s]===!0&&(n[s]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class Ry extends Cn{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Xt,this.projectionMatrix=new Xt,this.projectionMatrixInverse=new Xt,this.coordinateSystem=ks,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Cu=new j,xM=new ze,bM=new ze;class zi extends Ry{constructor(e=50,t=1,n=.1,s=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=s,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=Qh*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Jc*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Qh*2*Math.atan(Math.tan(Jc*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){Cu.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(Cu.x,Cu.y).multiplyScalar(-e/Cu.z),Cu.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(Cu.x,Cu.y).multiplyScalar(-e/Cu.z)}getViewSize(e,t){return this.getViewBounds(e,xM,bM),t.subVectors(bM,xM)}setViewOffset(e,t,n,s,u,f){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=s,this.view.width=u,this.view.height=f,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Jc*.5*this.fov)/this.zoom,n=2*t,s=this.aspect*n,u=-.5*s;const f=this.view;if(this.view!==null&&this.view.enabled){const m=f.fullWidth,g=f.fullHeight;u+=f.offsetX*s/m,t-=f.offsetY*n/g,s*=f.width/m,n*=f.height/g}const h=this.filmOffset;h!==0&&(u+=e*h/this.getFilmWidth()),this.projectionMatrix.makePerspective(u,u+s,t,t-n,e,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const wh=-90,Ch=1;class WE extends Cn{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const s=new zi(wh,Ch,e,t);s.layers=this.layers,this.add(s);const u=new zi(wh,Ch,e,t);u.layers=this.layers,this.add(u);const f=new zi(wh,Ch,e,t);f.layers=this.layers,this.add(f);const h=new zi(wh,Ch,e,t);h.layers=this.layers,this.add(h);const m=new zi(wh,Ch,e,t);m.layers=this.layers,this.add(m);const g=new zi(wh,Ch,e,t);g.layers=this.layers,this.add(g)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[n,s,u,f,h,m]=t;for(const g of t)this.remove(g);if(e===ks)n.up.set(0,1,0),n.lookAt(1,0,0),s.up.set(0,1,0),s.lookAt(-1,0,0),u.up.set(0,0,-1),u.lookAt(0,1,0),f.up.set(0,0,1),f.lookAt(0,-1,0),h.up.set(0,1,0),h.lookAt(0,0,1),m.up.set(0,1,0),m.lookAt(0,0,-1);else if(e===Yh)n.up.set(0,-1,0),n.lookAt(-1,0,0),s.up.set(0,-1,0),s.lookAt(1,0,0),u.up.set(0,0,1),u.lookAt(0,1,0),f.up.set(0,0,-1),f.lookAt(0,-1,0),h.up.set(0,-1,0),h.lookAt(0,0,1),m.up.set(0,-1,0),m.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const g of t)this.add(g),g.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:s}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[u,f,h,m,g,_]=this.children,x=e.getRenderTarget(),b=e.getActiveCubeFace(),M=e.getActiveMipmapLevel(),A=e.xr.enabled;e.xr.enabled=!1;const R=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,s),e.render(t,u),e.setRenderTarget(n,1,s),e.render(t,f),e.setRenderTarget(n,2,s),e.render(t,h),e.setRenderTarget(n,3,s),e.render(t,m),e.setRenderTarget(n,4,s),e.render(t,g),n.texture.generateMipmaps=R,e.setRenderTarget(n,5,s),e.render(t,_),e.setRenderTarget(x,b,M),e.xr.enabled=A,n.texture.needsPMREMUpdate=!0}}class Cm extends wi{constructor(e=[],t=zo,n,s,u,f,h,m,g,_){super(e,t,n,s,u,f,h,m,g,_),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Db extends Hs{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},s=[n,n,n,n,n,n];this.texture=new Cm(s),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},s=new lf(5,5,5),u=new yr({name:"CubemapFromEquirect",uniforms:Jh(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:as,blending:Po});u.uniforms.tEquirect.value=t;const f=new Yi(s,u),h=t.minFilter;return t.minFilter===Io&&(t.minFilter=oi),new WE(1,10,this).update(e,f),t.minFilter=h,f.geometry.dispose(),f.material.dispose(),this}clear(e,t=!0,n=!0,s=!0){const u=e.getRenderTarget();for(let f=0;f<6;f++)e.setRenderTarget(this,f),e.clear(t,n,s);e.setRenderTarget(u)}}class Gh extends Cn{constructor(){super(),this.isGroup=!0,this.type="Group"}}const zR={type:"move"};class pv{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Gh,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Gh,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new j,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new j),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Gh,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new j,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new j),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let s=null,u=null,f=null;const h=this._targetRay,m=this._grip,g=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(g&&e.hand){f=!0;for(const R of e.hand.values()){const w=t.getJointPose(R,n),E=this._getHandJoint(g,R);w!==null&&(E.matrix.fromArray(w.transform.matrix),E.matrix.decompose(E.position,E.rotation,E.scale),E.matrixWorldNeedsUpdate=!0,E.jointRadius=w.radius),E.visible=w!==null}const _=g.joints["index-finger-tip"],x=g.joints["thumb-tip"],b=_.position.distanceTo(x.position),M=.02,A=.005;g.inputState.pinching&&b>M+A?(g.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!g.inputState.pinching&&b<=M-A&&(g.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else m!==null&&e.gripSpace&&(u=t.getPose(e.gripSpace,n),u!==null&&(m.matrix.fromArray(u.transform.matrix),m.matrix.decompose(m.position,m.rotation,m.scale),m.matrixWorldNeedsUpdate=!0,u.linearVelocity?(m.hasLinearVelocity=!0,m.linearVelocity.copy(u.linearVelocity)):m.hasLinearVelocity=!1,u.angularVelocity?(m.hasAngularVelocity=!0,m.angularVelocity.copy(u.angularVelocity)):m.hasAngularVelocity=!1));h!==null&&(s=t.getPose(e.targetRaySpace,n),s===null&&u!==null&&(s=u),s!==null&&(h.matrix.fromArray(s.transform.matrix),h.matrix.decompose(h.position,h.rotation,h.scale),h.matrixWorldNeedsUpdate=!0,s.linearVelocity?(h.hasLinearVelocity=!0,h.linearVelocity.copy(s.linearVelocity)):h.hasLinearVelocity=!1,s.angularVelocity?(h.hasAngularVelocity=!0,h.angularVelocity.copy(s.angularVelocity)):h.hasAngularVelocity=!1,this.dispatchEvent(zR)))}return h!==null&&(h.visible=s!==null),m!==null&&(m.visible=u!==null),g!==null&&(g.visible=f!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new Gh;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class Ny{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new yt(e),this.density=t}clone(){return new Ny(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class Dy{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new yt(e),this.near=t,this.far=n}clone(){return new Dy(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Lb extends Cn{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Gs,this.environmentIntensity=1,this.environmentRotation=new Gs,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class Ly{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=pm,this.updateRanges=[],this.version=0,this.uuid=Vs()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let s=0,u=this.stride;se.far||t.push({distance:m,point:Bp.clone(),uv:Cs.getInterpolation(Bp,O0,kp,P0,SM,rx,MM,new ze),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function z0(r,e,t,n,s,u){Lh.subVectors(r,t).addScalar(.5).multiply(n),s!==void 0?(Fp.x=u*Lh.x-s*Lh.y,Fp.y=s*Lh.x+u*Lh.y):Fp.copy(Lh),r.copy(e),r.x+=Fp.x,r.y+=Fp.y,r.applyMatrix4(qE)}const B0=new j,EM=new j;class YE extends Cn{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let n=0,s=t.length;n0){let n,s;for(n=1,s=t.length;n0){B0.setFromMatrixPosition(this.matrixWorld);const s=e.ray.origin.distanceTo(B0);this.getObjectForDistance(s).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){B0.setFromMatrixPosition(e.matrixWorld),EM.setFromMatrixPosition(this.matrixWorld);const n=B0.distanceTo(EM)/e.zoom;t[0].object.visible=!0;let s,u;for(s=1,u=t.length;s=f)t[s-1].object.visible=!1,t[s].object.visible=!0;else break}for(this._currentLevel=s-1;s1?null:t.copy(e.start).addScaledVector(n,u)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||HR.getNormalMatrix(e),s=this.coplanarPoint(ux).applyMatrix4(e),u=this.normal.applyMatrix3(n).normalize();return this.constant=-s.dot(u),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Lc=new _a,GR=new ze(.5,.5),V0=new j;class ad{constructor(e=new wl,t=new wl,n=new wl,s=new wl,u=new wl,f=new wl){this.planes=[e,t,n,s,u,f]}set(e,t,n,s,u,f){const h=this.planes;return h[0].copy(e),h[1].copy(t),h[2].copy(n),h[3].copy(s),h[4].copy(u),h[5].copy(f),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=ks,n=!1){const s=this.planes,u=e.elements,f=u[0],h=u[1],m=u[2],g=u[3],_=u[4],x=u[5],b=u[6],M=u[7],A=u[8],R=u[9],w=u[10],E=u[11],N=u[12],D=u[13],U=u[14],B=u[15];if(s[0].setComponents(g-f,M-_,E-A,B-N).normalize(),s[1].setComponents(g+f,M+_,E+A,B+N).normalize(),s[2].setComponents(g+h,M+x,E+R,B+D).normalize(),s[3].setComponents(g-h,M-x,E-R,B-D).normalize(),n)s[4].setComponents(m,b,w,U).normalize(),s[5].setComponents(g-m,M-b,E-w,B-U).normalize();else if(s[4].setComponents(g-m,M-b,E-w,B-U).normalize(),t===ks)s[5].setComponents(g+m,M+b,E+w,B+U).normalize();else if(t===Yh)s[5].setComponents(m,b,w,U).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Lc.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Lc.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Lc)}intersectsSprite(e){Lc.center.set(0,0,0);const t=GR.distanceTo(e.center);return Lc.radius=.7071067811865476+t,Lc.applyMatrix4(e.matrixWorld),this.intersectsSphere(Lc)}intersectsSphere(e){const t=this.planes,n=e.center,s=-e.radius;for(let u=0;u<6;u++)if(t[u].distanceToPoint(n)0?e.max.x:e.min.x,V0.y=s.normal.y>0?e.max.y:e.min.y,V0.z=s.normal.z>0?e.max.z:e.min.z,s.distanceToPoint(V0)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}const No=new Xt,Do=new ad;class Iy{constructor(){this.coordinateSystem=ks}intersectsObject(e,t){if(!t.isArrayCamera||t.cameras.length===0)return!1;for(let n=0;n=u.length&&u.push({start:-1,count:-1,z:-1,index:-1});const h=u[this.index];f.push(h),this.index++,h.start=e,h.count=t,h.z=n,h.index=s}reset(){this.list.length=0,this.index=0}}const Ts=new Xt,jR=new yt(1,1,1),UM=new ad,YR=new Iy,H0=new za,Uc=new _a,Gp=new j,IM=new j,ZR=new j,fx=new qR,Ua=new Yi,G0=[];function QR(r,e,t=0){const n=e.itemSize;if(r.isInterleavedBufferAttribute||r.array.constructor!==e.array.constructor){const s=r.count;for(let u=0;u65535?new Uint32Array(s):new Uint16Array(s);t.setIndex(new Xn(u,1))}this._geometryInitialized=!0}}_validateGeometry(e){const t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(const n in t.attributes){if(!e.hasAttribute(n))throw new Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);const s=e.getAttribute(n),u=t.getAttribute(n);if(s.itemSize!==u.itemSize||s.normalized!==u.normalized)throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){const t=this._instanceInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){const t=this._geometryInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new za);const e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let n=0,s=t.length;n=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw new Error("THREE.BatchedMesh: Maximum item count reached.");const n={visible:!0,active:!0,geometryIndex:e};let s=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(cx),s=this._availableInstanceIds.shift(),this._instanceInfo[s]=n):(s=this._instanceInfo.length,this._instanceInfo.push(n));const u=this._matricesTexture;Ts.identity().toArray(u.image.data,s*16),u.needsUpdate=!0;const f=this._colorsTexture;return f&&(jR.toArray(f.image.data,s*4),f.needsUpdate=!0),this._visibilityChanged=!0,s}addGeometry(e,t=-1,n=-1){this._initializeGeometry(e),this._validateGeometry(e);const s={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},u=this._geometryInfo;s.vertexStart=this._nextVertexStart,s.reservedVertexCount=t===-1?e.getAttribute("position").count:t;const f=e.getIndex();if(f!==null&&(s.indexStart=this._nextIndexStart,s.reservedIndexCount=n===-1?f.count:n),s.indexStart!==-1&&s.indexStart+s.reservedIndexCount>this._maxIndexCount||s.vertexStart+s.reservedVertexCount>this._maxVertexCount)throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");let m;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(cx),m=this._availableGeometryIds.shift(),u[m]=s):(m=this._geometryCount,this._geometryCount++,u.push(s)),this.setGeometryAt(m,e),this._nextIndexStart=s.indexStart+s.reservedIndexCount,this._nextVertexStart=s.vertexStart+s.reservedVertexCount,m}setGeometryAt(e,t){if(e>=this._geometryCount)throw new Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);const n=this.geometry,s=n.getIndex()!==null,u=n.getIndex(),f=t.getIndex(),h=this._geometryInfo[e];if(s&&f.count>h.reservedIndexCount||t.attributes.position.count>h.reservedVertexCount)throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");const m=h.vertexStart,g=h.reservedVertexCount;h.vertexCount=t.getAttribute("position").count;for(const _ in n.attributes){const x=t.getAttribute(_),b=n.getAttribute(_);QR(x,b,m);const M=x.itemSize;for(let A=x.count,R=g;A=t.length||t[e].active===!1)return this;const n=this._instanceInfo;for(let s=0,u=n.length;sh).sort((f,h)=>n[f].vertexStart-n[h].vertexStart),u=this.geometry;for(let f=0,h=n.length;f=this._geometryCount)return null;const n=this.geometry,s=this._geometryInfo[e];if(s.boundingBox===null){const u=new za,f=n.index,h=n.attributes.position;for(let m=s.start,g=s.start+s.count;m=this._geometryCount)return null;const n=this.geometry,s=this._geometryInfo[e];if(s.boundingSphere===null){const u=new _a;this.getBoundingBoxAt(e,H0),H0.getCenter(u.center);const f=n.index,h=n.attributes.position;let m=0;for(let g=s.start,_=s.start+s.count;g<_;g++){let x=g;f&&(x=f.getX(x)),Gp.fromBufferAttribute(h,x),m=Math.max(m,u.center.distanceToSquared(Gp))}u.radius=Math.sqrt(m),s.boundingSphere=u}return t.copy(s.boundingSphere),t}setMatrixAt(e,t){this.validateInstanceId(e);const n=this._matricesTexture,s=this._matricesTexture.image.data;return t.toArray(s,e*16),n.needsUpdate=!0,this}getMatrixAt(e,t){return this.validateInstanceId(e),t.fromArray(this._matricesTexture.image.data,e*16)}setColorAt(e,t){return this.validateInstanceId(e),this._colorsTexture===null&&this._initColorsTexture(),t.toArray(this._colorsTexture.image.data,e*4),this._colorsTexture.needsUpdate=!0,this}getColorAt(e,t){return this.validateInstanceId(e),t.fromArray(this._colorsTexture.image.data,e*4)}setVisibleAt(e,t){return this.validateInstanceId(e),this._instanceInfo[e].visible===t?this:(this._instanceInfo[e].visible=t,this._visibilityChanged=!0,this)}getVisibleAt(e){return this.validateInstanceId(e),this._instanceInfo[e].visible}setGeometryIdAt(e,t){return this.validateInstanceId(e),this.validateGeometryId(t),this._instanceInfo[e].geometryIndex=t,this}getGeometryIdAt(e){return this.validateInstanceId(e),this._instanceInfo[e].geometryIndex}getGeometryRangeAt(e,t={}){this.validateGeometryId(e);const n=this._geometryInfo[e];return t.vertexStart=n.vertexStart,t.vertexCount=n.vertexCount,t.reservedVertexCount=n.reservedVertexCount,t.indexStart=n.indexStart,t.indexCount=n.indexCount,t.reservedIndexCount=n.reservedIndexCount,t.start=n.start,t.count=n.count,t}setInstanceCount(e){const t=this._availableInstanceIds,n=this._instanceInfo;for(t.sort(cx);t[t.length-1]===n.length-1;)n.pop(),t.pop();if(eh.active);if(Math.max(...n.map(h=>h.vertexStart+h.reservedVertexCount))>e)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...n.map(m=>m.indexStart+m.reservedIndexCount))>t)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);const u=this.geometry;u.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new Kt,this._initializeGeometry(u));const f=this.geometry;u.index&&Ic(u.index.array,f.index.array);for(const h in u.attributes)Ic(u.attributes[h].array,f.attributes[h].array)}raycast(e,t){const n=this._instanceInfo,s=this._geometryInfo,u=this.matrixWorld,f=this.geometry;Ua.material=this.material,Ua.geometry.index=f.index,Ua.geometry.attributes=f.attributes,Ua.geometry.boundingBox===null&&(Ua.geometry.boundingBox=new za),Ua.geometry.boundingSphere===null&&(Ua.geometry.boundingSphere=new _a);for(let h=0,m=n.length;h({...t,boundingBox:t.boundingBox!==null?t.boundingBox.clone():null,boundingSphere:t.boundingSphere!==null?t.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(t=>({...t})),this._availableInstanceIds=e._availableInstanceIds.slice(),this._availableGeometryIds=e._availableGeometryIds.slice(),this._nextIndexStart=e._nextIndexStart,this._nextVertexStart=e._nextVertexStart,this._geometryCount=e._geometryCount,this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._indirectTexture=e._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(e,t,n,s,u){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const f=s.getIndex(),h=f===null?1:f.array.BYTES_PER_ELEMENT,m=this._instanceInfo,g=this._multiDrawStarts,_=this._multiDrawCounts,x=this._geometryInfo,b=this.perObjectFrustumCulled,M=this._indirectTexture,A=M.image.data,R=n.isArrayCamera?YR:UM;b&&!n.isArrayCamera&&(Ts.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),UM.setFromProjectionMatrix(Ts,n.coordinateSystem,n.reversedDepth));let w=0;if(this.sortObjects){Ts.copy(this.matrixWorld).invert(),Gp.setFromMatrixPosition(n.matrixWorld).applyMatrix4(Ts),IM.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(Ts);for(let D=0,U=m.length;D0){const s=t[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let u=0,f=s.length;un)return;hx.applyMatrix4(r.matrixWorld);const g=e.ray.origin.distanceTo(hx);if(!(ge.far))return{distance:g,point:PM.clone().applyMatrix4(r.matrixWorld),index:f,face:null,faceIndex:null,barycoord:null,object:r}}const zM=new j,BM=new j;class Vo extends Fu{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[];for(let s=0,u=t.count;s0){const s=t[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let u=0,f=s.length;us.far)return;u.push({distance:g,distanceToRay:Math.sqrt(h),point:m,index:e,face:null,faceIndex:null,barycoord:null,object:f})}}class eT extends wi{constructor(e,t,n,s,u=oi,f=oi,h,m,g){super(e,t,n,s,u,f,h,m,g),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;const _=this;function x(){_.needsUpdate=!0,_._requestVideoFrameCallbackId=e.requestVideoFrameCallback(x)}"requestVideoFrameCallback"in e&&(this._requestVideoFrameCallbackId=e.requestVideoFrameCallback(x))}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}}class KR extends eT{constructor(e,t,n,s,u,f,h,m){super({},e,t,n,s,u,f,h,m),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}}class JR extends wi{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=Bi,this.minFilter=Bi,this.generateMipmaps=!1,this.needsUpdate=!0}}class Oy extends wi{constructor(e,t,n,s,u,f,h,m,g,_,x,b){super(null,f,h,m,g,_,s,u,x,b),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class $R extends Oy{constructor(e,t,n,s,u,f){super(e,t,n,u,f),this.isCompressedArrayTexture=!0,this.image.depth=s,this.wrapR=Rs,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class eN extends Oy{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,zo),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class tN extends wi{constructor(e,t,n,s,u,f,h,m,g){super(e,t,n,s,u,f,h,m,g),this.isCanvasTexture=!0,this.needsUpdate=!0}}class ed extends wi{constructor(e,t,n=vr,s,u,f,h=Bi,m=Bi,g,_=Fo,x=1){if(_!==Fo&&_!==Uu)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const b={width:e,height:t,depth:x};super(b,s,u,f,h,m,_,n,g),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Iu(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class tT extends ed{constructor(e,t=vr,n=zo,s,u,f=Bi,h=Bi,m,g=Fo){const _={width:e,height:e,depth:1},x=[_,_,_,_,_,_];super(e,e,t,n,s,u,f,h,m,g),this.image=x,this.isCubeDepthTexture=!0,this.isCubeTexture=!0}get images(){return this.image}set images(e){this.image=e}}class Pb extends wi{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}}class Py extends Kt{constructor(e=1,t=1,n=4,s=8,u=1){super(),this.type="CapsuleGeometry",this.parameters={radius:e,height:t,capSegments:n,radialSegments:s,heightSegments:u},t=Math.max(0,t),n=Math.max(1,Math.floor(n)),s=Math.max(3,Math.floor(s)),u=Math.max(1,Math.floor(u));const f=[],h=[],m=[],g=[],_=t/2,x=Math.PI/2*e,b=t,M=2*x+b,A=n*2+u,R=s+1,w=new j,E=new j;for(let N=0;N<=A;N++){let D=0,U=0,B=0,z=0;if(N<=n){const I=N/n,P=I*Math.PI/2;U=-_-e*Math.cos(P),B=e*Math.sin(P),z=-e*Math.cos(P),D=I*x}else if(N<=n+u){const I=(N-n)/u;U=-_+I*t,B=e,z=0,D=x+I*b}else{const I=(N-n-u)/n,P=I*Math.PI/2;U=_+e*Math.sin(P),B=e*Math.cos(P),z=e*Math.sin(P),D=x+b+I*x}const H=Math.max(0,Math.min(1,D/M));let W=0;N===0?W=.5/s:N===A&&(W=-.5/s);for(let I=0;I<=s;I++){const P=I/s,Z=P*Math.PI*2,se=Math.sin(Z),te=Math.cos(Z);E.x=-B*te,E.y=U,E.z=B*se,h.push(E.x,E.y,E.z),w.set(-B*te,z,B*se),w.normalize(),m.push(w.x,w.y,w.z),g.push(P+W,H)}if(N>0){const I=(N-1)*R;for(let P=0;P0&&D(!0),t>0&&D(!1)),this.setIndex(_),this.setAttribute("position",new bt(x,3)),this.setAttribute("normal",new bt(b,3)),this.setAttribute("uv",new bt(M,2));function N(){const U=new j,B=new j;let z=0;const H=(t-e)/n;for(let W=0;W<=u;W++){const I=[],P=W/u,Z=P*(t-e)+e;for(let se=0;se<=s;se++){const te=se/s,fe=te*m+h,pe=Math.sin(fe),Y=Math.cos(fe);B.x=Z*pe,B.y=-P*n+w,B.z=Z*Y,x.push(B.x,B.y,B.z),U.set(pe,H,Y).normalize(),b.push(U.x,U.y,U.z),M.push(te,1-P),I.push(A++)}R.push(I)}for(let W=0;W0||I!==0)&&(_.push(P,Z,te),z+=3),(t>0||I!==u-1)&&(_.push(Z,se,te),z+=3)}g.addGroup(E,z,0),E+=z}function D(U){const B=A,z=new ze,H=new j;let W=0;const I=U===!0?e:t,P=U===!0?1:-1;for(let se=1;se<=s;se++)x.push(0,w*P,0),b.push(0,P,0),M.push(.5,.5),A++;const Z=A;for(let se=0;se<=s;se++){const fe=se/s*m+h,pe=Math.cos(fe),Y=Math.sin(fe);H.x=I*Y,H.y=w*P,H.z=I*pe,x.push(H.x,H.y,H.z),b.push(0,P,0),z.x=pe*.5+.5,z.y=Y*.5*P+.5,M.push(z.x,z.y),A++}for(let se=0;se.9&&H<.1&&(D<.2&&(f[N+0]+=1),U<.2&&(f[N+2]+=1),B<.2&&(f[N+4]+=1))}}function b(N){u.push(N.x,N.y,N.z)}function M(N,D){const U=N*3;D.x=e[U+0],D.y=e[U+1],D.z=e[U+2]}function A(){const N=new j,D=new j,U=new j,B=new j,z=new ze,H=new ze,W=new ze;for(let I=0,P=0;I0)m=s-1;else{m=s;break}if(s=m,n[s]===f)return s/(u-1);const _=n[s],b=n[s+1]-_,M=(f-_)/b;return(s+M)/(u-1)}getTangent(e,t){let s=e-1e-4,u=e+1e-4;s<0&&(s=0),u>1&&(u=1);const f=this.getPoint(s),h=this.getPoint(u),m=t||(f.isVector2?new ze:new j);return m.copy(h).sub(f).normalize(),m}getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){const n=new j,s=[],u=[],f=[],h=new j,m=new Xt;for(let M=0;M<=e;M++){const A=M/e;s[M]=this.getTangentAt(A,new j)}u[0]=new j,f[0]=new j;let g=Number.MAX_VALUE;const _=Math.abs(s[0].x),x=Math.abs(s[0].y),b=Math.abs(s[0].z);_<=g&&(g=_,n.set(1,0,0)),x<=g&&(g=x,n.set(0,1,0)),b<=g&&n.set(0,0,1),h.crossVectors(s[0],n).normalize(),u[0].crossVectors(s[0],h),f[0].crossVectors(s[0],u[0]);for(let M=1;M<=e;M++){if(u[M]=u[M-1].clone(),f[M]=f[M-1].clone(),h.crossVectors(s[M-1],s[M]),h.length()>Number.EPSILON){h.normalize();const A=Math.acos(Ht(s[M-1].dot(s[M]),-1,1));u[M].applyMatrix4(m.makeRotationAxis(h,A))}f[M].crossVectors(s[M],u[M])}if(t===!0){let M=Math.acos(Ht(u[0].dot(u[e]),-1,1));M/=e,s[0].dot(h.crossVectors(u[0],u[e]))>0&&(M=-M);for(let A=1;A<=e;A++)u[A].applyMatrix4(m.makeRotationAxis(s[A],M*A)),f[A].crossVectors(s[A],u[A])}return{tangents:s,normals:u,binormals:f}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class Fy extends Zr{constructor(e=0,t=0,n=1,s=1,u=0,f=Math.PI*2,h=!1,m=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=s,this.aStartAngle=u,this.aEndAngle=f,this.aClockwise=h,this.aRotation=m}getPoint(e,t=new ze){const n=t,s=Math.PI*2;let u=this.aEndAngle-this.aStartAngle;const f=Math.abs(u)s;)u-=s;u0?0:(Math.floor(Math.abs(h)/u)+1)*u:m===0&&h===u-1&&(h=u-2,m=1);let g,_;this.closed||h>0?g=s[(h-1)%u]:(K0.subVectors(s[0],s[1]).add(s[0]),g=K0);const x=s[h%u],b=s[(h+1)%u];if(this.closed||h+2s.length-2?s.length-1:f+1],x=s[f>s.length-3?s.length-1:f+2];return n.set(VM(h,m.x,g.x,_.x,x.x),VM(h,m.y,g.y,_.y,x.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){const f=s[u]-n,h=this.curves[u],m=h.getLength(),g=m===0?0:1-f/m;return h.getPointAt(g,t)}u++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let n=0,s=this.curves.length;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){const x=g.getPoint(0);x.equals(this.currentPoint)||this.lineTo(x.x,x.y)}this.curves.push(g);const _=g.getPoint(1);return this.currentPoint.copy(_),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class $c extends ly{constructor(e){super(e),this.uuid=Vs(),this.type="Shape",this.holes=[]}getPointsHoles(e){const t=[];for(let n=0,s=this.holes.length;n80*t){h=r[0],m=r[1];let _=h,x=m;for(let b=t;b_&&(_=M),A>x&&(x=A)}g=Math.max(_-h,x-m),g=g!==0?32767/g:0}return vm(u,f,t,h,m,g,0),f}function lT(r,e,t,n,s){let u;if(s===TN(r,e,t,n)>0)for(let f=e;f=e;f-=n)u=HM(f/n|0,r[f],r[f+1],u);return u&&td(u,u.next)&&(_m(u),u=u.next),u}function af(r,e){if(!r)return r;e||(e=r);let t=r,n;do if(n=!1,!t.steiner&&(td(t,t.next)||_i(t.prev,t,t.next)===0)){if(_m(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function vm(r,e,t,n,s,u,f){if(!r)return;!f&&u&&_N(r,n,s,u);let h=r;for(;r.prev!==r.next;){const m=r.prev,g=r.next;if(u?fN(r,n,s,u):cN(r)){e.push(m.i,r.i,g.i),_m(r),r=g.next,h=g.next;continue}if(r=g,r===h){f?f===1?(r=hN(af(r),e),vm(r,e,t,n,s,u,2)):f===2&&dN(r,e,t,n,s,u):vm(af(r),e,t,n,s,u,1);break}}}function cN(r){const e=r.prev,t=r,n=r.next;if(_i(e,t,n)>=0)return!1;const s=e.x,u=t.x,f=n.x,h=e.y,m=t.y,g=n.y,_=Math.min(s,u,f),x=Math.min(h,m,g),b=Math.max(s,u,f),M=Math.max(h,m,g);let A=n.next;for(;A!==e;){if(A.x>=_&&A.x<=b&&A.y>=x&&A.y<=M&&Zp(s,h,u,m,f,g,A.x,A.y)&&_i(A.prev,A,A.next)>=0)return!1;A=A.next}return!0}function fN(r,e,t,n){const s=r.prev,u=r,f=r.next;if(_i(s,u,f)>=0)return!1;const h=s.x,m=u.x,g=f.x,_=s.y,x=u.y,b=f.y,M=Math.min(h,m,g),A=Math.min(_,x,b),R=Math.max(h,m,g),w=Math.max(_,x,b),E=Zx(M,A,e,t,n),N=Zx(R,w,e,t,n);let D=r.prevZ,U=r.nextZ;for(;D&&D.z>=E&&U&&U.z<=N;){if(D.x>=M&&D.x<=R&&D.y>=A&&D.y<=w&&D!==s&&D!==f&&Zp(h,_,m,x,g,b,D.x,D.y)&&_i(D.prev,D,D.next)>=0||(D=D.prevZ,U.x>=M&&U.x<=R&&U.y>=A&&U.y<=w&&U!==s&&U!==f&&Zp(h,_,m,x,g,b,U.x,U.y)&&_i(U.prev,U,U.next)>=0))return!1;U=U.nextZ}for(;D&&D.z>=E;){if(D.x>=M&&D.x<=R&&D.y>=A&&D.y<=w&&D!==s&&D!==f&&Zp(h,_,m,x,g,b,D.x,D.y)&&_i(D.prev,D,D.next)>=0)return!1;D=D.prevZ}for(;U&&U.z<=N;){if(U.x>=M&&U.x<=R&&U.y>=A&&U.y<=w&&U!==s&&U!==f&&Zp(h,_,m,x,g,b,U.x,U.y)&&_i(U.prev,U,U.next)>=0)return!1;U=U.nextZ}return!0}function hN(r,e){let t=r;do{const n=t.prev,s=t.next.next;!td(n,s)&&cT(n,t,t.next,s)&&ym(n,s)&&ym(s,n)&&(e.push(n.i,t.i,s.i),_m(t),_m(t.next),t=r=s),t=t.next}while(t!==r);return af(t)}function dN(r,e,t,n,s,u){let f=r;do{let h=f.next.next;for(;h!==f.prev;){if(f.i!==h.i&&SN(f,h)){let m=fT(f,h);f=af(f,f.next),m=af(m,m.next),vm(f,e,t,n,s,u,0),vm(m,e,t,n,s,u,0);return}h=h.next}f=f.next}while(f!==r)}function pN(r,e,t,n){const s=[];for(let u=0,f=e.length;u=t.next.y&&t.next.y!==t.y){const x=t.x+(s-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(x<=n&&x>u&&(u=x,f=t.x=t.x&&t.x>=m&&n!==t.x&&uT(sf.x||t.x===f.x&&yN(f,t)))&&(f=t,_=x)}t=t.next}while(t!==h);return f}function yN(r,e){return _i(r.prev,r,e.prev)<0&&_i(e.next,r,r.next)<0}function _N(r,e,t,n){let s=r;do s.z===0&&(s.z=Zx(s.x,s.y,e,t,n)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==r);s.prevZ.nextZ=null,s.prevZ=null,xN(s)}function xN(r){let e,t=1;do{let n=r,s;r=null;let u=null;for(e=0;n;){e++;let f=n,h=0;for(let g=0;g0||m>0&&f;)h!==0&&(m===0||!f||n.z<=f.z)?(s=n,n=n.nextZ,h--):(s=f,f=f.nextZ,m--),u?u.nextZ=s:r=s,s.prevZ=u,u=s;n=f}u.nextZ=null,t*=2}while(e>1);return r}function Zx(r,e,t,n,s){return r=(r-t)*s|0,e=(e-n)*s|0,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,r|e<<1}function bN(r){let e=r,t=r;do(e.x=(r-f)*(u-h)&&(r-f)*(n-h)>=(t-f)*(e-h)&&(t-f)*(u-h)>=(s-f)*(n-h)}function Zp(r,e,t,n,s,u,f,h){return!(r===f&&e===h)&&uT(r,e,t,n,s,u,f,h)}function SN(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!MN(r,e)&&(ym(r,e)&&ym(e,r)&&EN(r,e)&&(_i(r.prev,r,e.prev)||_i(r,e.prev,e))||td(r,e)&&_i(r.prev,r,r.next)>0&&_i(e.prev,e,e.next)>0)}function _i(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function td(r,e){return r.x===e.x&&r.y===e.y}function cT(r,e,t,n){const s=$0(_i(r,e,t)),u=$0(_i(r,e,n)),f=$0(_i(t,n,r)),h=$0(_i(t,n,e));return!!(s!==u&&f!==h||s===0&&J0(r,t,e)||u===0&&J0(r,n,e)||f===0&&J0(t,r,n)||h===0&&J0(t,e,n))}function J0(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function $0(r){return r>0?1:r<0?-1:0}function MN(r,e){let t=r;do{if(t.i!==r.i&&t.next.i!==r.i&&t.i!==e.i&&t.next.i!==e.i&&cT(t,t.next,r,e))return!0;t=t.next}while(t!==r);return!1}function ym(r,e){return _i(r.prev,r,r.next)<0?_i(r,e,r.next)>=0&&_i(r,r.prev,e)>=0:_i(r,e,r.prev)<0||_i(r,r.next,e)<0}function EN(r,e){let t=r,n=!1;const s=(r.x+e.x)/2,u=(r.y+e.y)/2;do t.y>u!=t.next.y>u&&t.next.y!==t.y&&s<(t.next.x-t.x)*(u-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==r);return n}function fT(r,e){const t=Qx(r.i,r.x,r.y),n=Qx(e.i,e.x,e.y),s=r.next,u=e.prev;return r.next=e,e.prev=r,t.next=s,s.prev=t,n.next=t,t.prev=n,u.next=n,n.prev=u,n}function HM(r,e,t,n){const s=Qx(r,e,t);return n?(s.next=n.next,s.prev=n,n.next.prev=s,n.next=s):(s.prev=s,s.next=s),s}function _m(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function Qx(r,e,t){return{i:r,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function TN(r,e,t,n){let s=0;for(let u=e,f=t-n;u2&&r[e-1].equals(r[0])&&r.pop()}function XM(r,e){for(let t=0;tNumber.EPSILON){const Te=Math.sqrt(O),Ie=Math.sqrt(Qe*Qe+G*G),Ee=He.x-Tt/Te,dt=He.y+ot/Te,Ke=Oe.x-G/Ie,vt=Oe.y+Qe/Ie,Dt=((Ke-Ee)*G-(vt-dt)*Qe)/(ot*G-Tt*Qe);nt=Ee+ot*Dt-Le.x,Q=dt+Tt*Dt-Le.y;const Ve=nt*nt+Q*Q;if(Ve<=2)return new ze(nt,Q);Et=Math.sqrt(Ve/2)}else{let Te=!1;ot>Number.EPSILON?Qe>Number.EPSILON&&(Te=!0):ot<-Number.EPSILON?Qe<-Number.EPSILON&&(Te=!0):Math.sign(Tt)===Math.sign(G)&&(Te=!0),Te?(nt=-Tt,Q=ot,Et=Math.sqrt(O)):(nt=ot,Q=Tt,Et=Math.sqrt(O/2))}return new ze(nt/Et,Q/Et)}const be=[];for(let Le=0,He=pe.length,Oe=He-1,nt=Le+1;Le=0;Le--){const He=Le/w,Oe=M*Math.cos(He*Math.PI/2),nt=A*Math.sin(He*Math.PI/2)+R;for(let Q=0,Et=pe.length;Q=0;){const nt=Oe;let Q=Oe-1;Q<0&&(Q=Le.length-1);for(let Et=0,ot=_+w*2;Et0)&&M.push(D,U,z),(E!==n-1||m0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class mT extends Ba{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new yt(16777215),this.specular=new yt(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new yt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Gs,this.combine=Am,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class gT extends Ba{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new yt(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new yt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class vT extends Ba{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class yT extends Ba{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new yt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new yt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Gs,this.combine=Am,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Wb extends Ba{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=NE,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class qb extends Ba{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}class _T extends Ba{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new yt(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ku,this.normalScale=new ze(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this.fog=e.fog,this}}class xT extends ss{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function Qc(r,e){return!r||r.constructor===e?r:typeof e.BYTES_PER_ELEMENT=="number"?new e(r):Array.prototype.slice.call(r)}function bT(r){function e(s,u){return r[s]-r[u]}const t=r.length,n=new Array(t);for(let s=0;s!==t;++s)n[s]=s;return n.sort(e),n}function Kx(r,e,t){const n=r.length,s=new r.constructor(n);for(let u=0,f=0;f!==n;++u){const h=t[u]*e;for(let m=0;m!==e;++m)s[f++]=r[h+m]}return s}function jb(r,e,t,n){let s=1,u=r[0];for(;u!==void 0&&u[n]===void 0;)u=r[s++];if(u===void 0)return;let f=u[n];if(f!==void 0)if(Array.isArray(f))do f=u[n],f!==void 0&&(e.push(u.time),t.push(...f)),u=r[s++];while(u!==void 0);else if(f.toArray!==void 0)do f=u[n],f!==void 0&&(e.push(u.time),f.toArray(t,t.length)),u=r[s++];while(u!==void 0);else do f=u[n],f!==void 0&&(e.push(u.time),t.push(f)),u=r[s++];while(u!==void 0)}function NN(r,e,t,n,s=30){const u=r.clone();u.name=e;const f=[];for(let m=0;m=n)){x.push(g.times[M]);for(let R=0;R<_;++R)b.push(g.values[M*_+R])}}x.length!==0&&(g.times=Qc(x,g.times.constructor),g.values=Qc(b,g.values.constructor),f.push(g))}u.tracks=f;let h=1/0;for(let m=0;mu.tracks[m].times[0]&&(h=u.tracks[m].times[0]);for(let m=0;m=h.times[A]){const E=A*x+_,N=E+x-_;R=h.values.slice(E,N)}else{const E=h.createInterpolant(),N=_,D=x-_;E.evaluate(u),R=E.resultBuffer.slice(N,D)}m==="quaternion"&&new Pa().fromArray(R).normalize().conjugate().toArray(R);const w=g.times.length;for(let E=0;E=u)){const h=t[1];e=u)break t}f=n,n=0;break n}break e}for(;n>>1;et;)--f;if(++f,u!==0||f!==s){u>=f&&(f=Math.max(f,1),u=f-1);const h=this.getValueSize();this.times=n.slice(u,f),this.values=this.values.slice(u*h,f*h)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(Rt("KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,s=this.values,u=n.length;u===0&&(Rt("KeyframeTrack: Track is empty.",this),e=!1);let f=null;for(let h=0;h!==u;h++){const m=n[h];if(typeof m=="number"&&isNaN(m)){Rt("KeyframeTrack: Time is not a valid number.",this,h,m),e=!1;break}if(f!==null&&f>m){Rt("KeyframeTrack: Out of order keys.",this,h,m,f),e=!1;break}f=m}if(s!==void 0&&FE(s))for(let h=0,m=s.length;h!==m;++h){const g=s[h];if(isNaN(g)){Rt("KeyframeTrack: Value is not a valid number.",this,h,g),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),s=this.getInterpolation()===dv,u=e.length-1;let f=1;for(let h=1;h0){e[f]=e[u];for(let h=u*n,m=f*n,g=0;g!==n;++g)t[m+g]=t[h+g];++f}return f!==e.length?(this.times=e.slice(0,f),this.values=t.slice(0,f*n)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),n=this.constructor,s=new n(this.name,e,t);return s.createInterpolant=this.createInterpolant,s}}_r.prototype.ValueTypeName="";_r.prototype.TimeBufferType=Float32Array;_r.prototype.ValueBufferType=Float32Array;_r.prototype.DefaultInterpolation=ay;class uf extends _r{constructor(e,t,n){super(e,t,n)}}uf.prototype.ValueTypeName="bool";uf.prototype.ValueBufferType=Array;uf.prototype.DefaultInterpolation=fm;uf.prototype.InterpolantFactoryMethodLinear=void 0;uf.prototype.InterpolantFactoryMethodSmooth=void 0;class Zb extends _r{constructor(e,t,n,s){super(e,t,n,s)}}Zb.prototype.ValueTypeName="color";class xm extends _r{constructor(e,t,n,s){super(e,t,n,s)}}xm.prototype.ValueTypeName="number";class ET extends Um{constructor(e,t,n,s){super(e,t,n,s)}interpolate_(e,t,n,s){const u=this.resultBuffer,f=this.sampleValues,h=this.valueSize,m=(n-t)/(s-t);let g=e*h;for(let _=g+h;g!==_;g+=4)Pa.slerpFlat(u,0,f,g-h,f,g,m);return u}}class Im extends _r{constructor(e,t,n,s){super(e,t,n,s)}InterpolantFactoryMethodLinear(e){return new ET(this.times,this.values,this.getValueSize(),e)}}Im.prototype.ValueTypeName="quaternion";Im.prototype.InterpolantFactoryMethodSmooth=void 0;class cf extends _r{constructor(e,t,n){super(e,t,n)}}cf.prototype.ValueTypeName="string";cf.prototype.ValueBufferType=Array;cf.prototype.DefaultInterpolation=fm;cf.prototype.InterpolantFactoryMethodLinear=void 0;cf.prototype.InterpolantFactoryMethodSmooth=void 0;class bm extends _r{constructor(e,t,n,s){super(e,t,n,s)}}bm.prototype.ValueTypeName="vector";class Sm{constructor(e="",t=-1,n=[],s=Ey){this.name=e,this.tracks=n,this.duration=t,this.blendMode=s,this.uuid=Vs(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,s=1/(e.fps||1);for(let f=0,h=n.length;f!==h;++f)t.push(IN(n[f]).scale(s));const u=new this(e.name,e.duration,t,e.blendMode);return u.uuid=e.uuid,u.userData=JSON.parse(e.userData||"{}"),u}static toJSON(e){const t=[],n=e.tracks,s={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let u=0,f=n.length;u!==f;++u)t.push(_r.toJSON(n[u]));return s}static CreateFromMorphTargetSequence(e,t,n,s){const u=t.length,f=[];for(let h=0;h1){const x=_[1];let b=s[x];b||(s[x]=b=[]),b.push(g)}}const f=[];for(const h in s)f.push(this.CreateFromMorphTargetSequence(h,s[h],t,n));return f}static parseAnimation(e,t){if(ft("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return Rt("AnimationClip: No animation in JSONLoader data."),null;const n=function(x,b,M,A,R){if(M.length!==0){const w=[],E=[];jb(M,w,E,A),w.length!==0&&R.push(new x(b,w,E))}},s=[],u=e.name||"default",f=e.fps||30,h=e.blendMode;let m=e.length||-1;const g=e.hierarchy||[];for(let x=0;x{t&&t(u),this.manager.itemEnd(e)},0),u;if(Al[e]!==void 0){Al[e].push({onLoad:t,onProgress:n,onError:s});return}Al[e]=[],Al[e].push({onLoad:t,onProgress:n,onError:s});const f=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),h=this.mimeType,m=this.responseType;fetch(f).then(g=>{if(g.status===200||g.status===0){if(g.status===0&&ft("FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||g.body===void 0||g.body.getReader===void 0)return g;const _=Al[e],x=g.body.getReader(),b=g.headers.get("X-File-Size")||g.headers.get("Content-Length"),M=b?parseInt(b):0,A=M!==0;let R=0;const w=new ReadableStream({start(E){N();function N(){x.read().then(({done:D,value:U})=>{if(D)E.close();else{R+=U.byteLength;const B=new ProgressEvent("progress",{lengthComputable:A,loaded:R,total:M});for(let z=0,H=_.length;z{E.error(D)})}}});return new Response(w)}else throw new ON(`fetch for "${g.url}" responded with ${g.status}: ${g.statusText}`,g)}).then(g=>{switch(m){case"arraybuffer":return g.arrayBuffer();case"blob":return g.blob();case"document":return g.text().then(_=>new DOMParser().parseFromString(_,h));case"json":return g.json();default:if(h==="")return g.text();{const x=/charset="?([^;"\s]*)"?/i.exec(h),b=x&&x[1]?x[1].toLowerCase():void 0,M=new TextDecoder(b);return g.arrayBuffer().then(A=>M.decode(A))}}}).then(g=>{Oo.add(`file:${e}`,g);const _=Al[e];delete Al[e];for(let x=0,b=_.length;x{const _=Al[e];if(_===void 0)throw this.manager.itemError(e),g;delete Al[e];for(let x=0,b=_.length;x{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class PN extends Ns{constructor(e){super(e)}load(e,t,n,s){const u=this,f=new Ul(this.manager);f.setPath(this.path),f.setRequestHeader(this.requestHeader),f.setWithCredentials(this.withCredentials),f.load(e,function(h){try{t(u.parse(JSON.parse(h)))}catch(m){s?s(m):Rt(m),u.manager.itemError(e)}},n,s)}parse(e){const t=[];for(let n=0;n0:s.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const u in e.uniforms){const f=e.uniforms[u];switch(s.uniforms[u]={},f.type){case"t":s.uniforms[u].value=n(f.value);break;case"c":s.uniforms[u].value=new yt().setHex(f.value);break;case"v2":s.uniforms[u].value=new ze().fromArray(f.value);break;case"v3":s.uniforms[u].value=new j().fromArray(f.value);break;case"v4":s.uniforms[u].value=new jn().fromArray(f.value);break;case"m3":s.uniforms[u].value=new en().fromArray(f.value);break;case"m4":s.uniforms[u].value=new Xt().fromArray(f.value);break;default:s.uniforms[u].value=f.value}}if(e.defines!==void 0&&(s.defines=e.defines),e.vertexShader!==void 0&&(s.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(s.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(s.glslVersion=e.glslVersion),e.extensions!==void 0)for(const u in e.extensions)s.extensions[u]=e.extensions[u];if(e.lights!==void 0&&(s.lights=e.lights),e.clipping!==void 0&&(s.clipping=e.clipping),e.size!==void 0&&(s.size=e.size),e.sizeAttenuation!==void 0&&(s.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(s.map=n(e.map)),e.matcap!==void 0&&(s.matcap=n(e.matcap)),e.alphaMap!==void 0&&(s.alphaMap=n(e.alphaMap)),e.bumpMap!==void 0&&(s.bumpMap=n(e.bumpMap)),e.bumpScale!==void 0&&(s.bumpScale=e.bumpScale),e.normalMap!==void 0&&(s.normalMap=n(e.normalMap)),e.normalMapType!==void 0&&(s.normalMapType=e.normalMapType),e.normalScale!==void 0){let u=e.normalScale;Array.isArray(u)===!1&&(u=[u,u]),s.normalScale=new ze().fromArray(u)}return e.displacementMap!==void 0&&(s.displacementMap=n(e.displacementMap)),e.displacementScale!==void 0&&(s.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(s.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(s.roughnessMap=n(e.roughnessMap)),e.metalnessMap!==void 0&&(s.metalnessMap=n(e.metalnessMap)),e.emissiveMap!==void 0&&(s.emissiveMap=n(e.emissiveMap)),e.emissiveIntensity!==void 0&&(s.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(s.specularMap=n(e.specularMap)),e.specularIntensityMap!==void 0&&(s.specularIntensityMap=n(e.specularIntensityMap)),e.specularColorMap!==void 0&&(s.specularColorMap=n(e.specularColorMap)),e.envMap!==void 0&&(s.envMap=n(e.envMap)),e.envMapRotation!==void 0&&s.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(s.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(s.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(s.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(s.lightMap=n(e.lightMap)),e.lightMapIntensity!==void 0&&(s.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(s.aoMap=n(e.aoMap)),e.aoMapIntensity!==void 0&&(s.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(s.gradientMap=n(e.gradientMap)),e.clearcoatMap!==void 0&&(s.clearcoatMap=n(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(s.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(s.clearcoatNormalMap=n(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(s.clearcoatNormalScale=new ze().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(s.iridescenceMap=n(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(s.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(s.transmissionMap=n(e.transmissionMap)),e.thicknessMap!==void 0&&(s.thicknessMap=n(e.thicknessMap)),e.anisotropyMap!==void 0&&(s.anisotropyMap=n(e.anisotropyMap)),e.sheenColorMap!==void 0&&(s.sheenColorMap=n(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(s.sheenRoughnessMap=n(e.sheenRoughnessMap)),s}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return Zy.createMaterialFromType(e)}static createMaterialFromType(e){const t={ShadowMaterial:dT,SpriteMaterial:Ub,RawShaderMaterial:Gb,ShaderMaterial:yr,PointsMaterial:Ob,MeshPhysicalMaterial:pT,MeshStandardMaterial:Xb,MeshPhongMaterial:mT,MeshToonMaterial:gT,MeshNormalMaterial:vT,MeshLambertMaterial:yT,MeshDepthMaterial:Wb,MeshDistanceMaterial:qb,MeshBasicMaterial:Vu,MeshMatcapMaterial:_T,LineDashedMaterial:xT,LineBasicMaterial:ss,Material:Ba};return new t[e]}}class Jx{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class UT extends Kt{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class IT extends Ns{constructor(e){super(e)}load(e,t,n,s){const u=this,f=new Ul(u.manager);f.setPath(u.path),f.setRequestHeader(u.requestHeader),f.setWithCredentials(u.withCredentials),f.load(e,function(h){try{t(u.parse(JSON.parse(h)))}catch(m){s?s(m):Rt(m),u.manager.itemError(e)}},n,s)}parse(e){const t={},n={};function s(M,A){if(t[A]!==void 0)return t[A];const w=M.interleavedBuffers[A],E=u(M,w.buffer),N=Hh(w.type,E),D=new Ly(N,w.stride);return D.uuid=w.uuid,t[A]=D,D}function u(M,A){if(n[A]!==void 0)return n[A];const w=M.arrayBuffers[A],E=new Uint32Array(w).buffer;return n[A]=E,E}const f=e.isInstancedBufferGeometry?new UT:new Kt,h=e.data.index;if(h!==void 0){const M=Hh(h.type,h.array);f.setIndex(new Xn(M,1))}const m=e.data.attributes;for(const M in m){const A=m[M];let R;if(A.isInterleavedBufferAttribute){const w=s(e.data,A.data);R=new nf(w,A.itemSize,A.offset,A.normalized)}else{const w=Hh(A.type,A.array),E=A.isInstancedBufferAttribute?$h:Xn;R=new E(w,A.itemSize,A.normalized)}A.name!==void 0&&(R.name=A.name),A.usage!==void 0&&R.setUsage(A.usage),f.setAttribute(M,R)}const g=e.data.morphAttributes;if(g)for(const M in g){const A=g[M],R=[];for(let w=0,E=A.length;w0){const m=new Qb(t);u=new Mm(m),u.setCrossOrigin(this.crossOrigin);for(let g=0,_=e.length;g<_;g++){const x=e[g],b=x.url;if(Array.isArray(b)){const M=[];for(let A=0,R=b.length;A0){s=new Mm(this.manager),s.setCrossOrigin(this.crossOrigin);for(let f=0,h=e.length;f{let E=null,N=null;return w.boundingBox!==void 0&&(E=new za().fromJSON(w.boundingBox)),w.boundingSphere!==void 0&&(N=new _a().fromJSON(w.boundingSphere)),{...w,boundingBox:E,boundingSphere:N}}),f._instanceInfo=e.instanceInfo,f._availableInstanceIds=e._availableInstanceIds,f._availableGeometryIds=e._availableGeometryIds,f._nextIndexStart=e.nextIndexStart,f._nextVertexStart=e.nextVertexStart,f._geometryCount=e.geometryCount,f._maxInstanceCount=e.maxInstanceCount,f._maxVertexCount=e.maxVertexCount,f._maxIndexCount=e.maxIndexCount,f._geometryInitialized=e.geometryInitialized,f._matricesTexture=g(e.matricesTexture.uuid),f._indirectTexture=g(e.indirectTexture.uuid),e.colorsTexture!==void 0&&(f._colorsTexture=g(e.colorsTexture.uuid)),e.boundingSphere!==void 0&&(f.boundingSphere=new _a().fromJSON(e.boundingSphere)),e.boundingBox!==void 0&&(f.boundingBox=new za().fromJSON(e.boundingBox));break;case"LOD":f=new YE;break;case"Line":f=new Fu(h(e.geometry),m(e.material));break;case"LineLoop":f=new JE(h(e.geometry),m(e.material));break;case"LineSegments":f=new Vo(h(e.geometry),m(e.material));break;case"PointCloud":case"Points":f=new $E(h(e.geometry),m(e.material));break;case"Sprite":f=new jE(m(e.material));break;case"Group":f=new Gh;break;case"Bone":f=new Ib;break;default:f=new Cn}if(f.uuid=e.uuid,e.name!==void 0&&(f.name=e.name),e.matrix!==void 0?(f.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(f.matrixAutoUpdate=e.matrixAutoUpdate),f.matrixAutoUpdate&&f.matrix.decompose(f.position,f.quaternion,f.scale)):(e.position!==void 0&&f.position.fromArray(e.position),e.rotation!==void 0&&f.rotation.fromArray(e.rotation),e.quaternion!==void 0&&f.quaternion.fromArray(e.quaternion),e.scale!==void 0&&f.scale.fromArray(e.scale)),e.up!==void 0&&f.up.fromArray(e.up),e.castShadow!==void 0&&(f.castShadow=e.castShadow),e.receiveShadow!==void 0&&(f.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(f.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(f.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(f.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(f.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&f.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(f.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(f.visible=e.visible),e.frustumCulled!==void 0&&(f.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(f.renderOrder=e.renderOrder),e.userData!==void 0&&(f.userData=e.userData),e.layers!==void 0&&(f.layers.mask=e.layers),e.children!==void 0){const b=e.children;for(let M=0;M"u"&&ft("ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&ft("ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"},this._abortController=new AbortController}setOptions(e){return this.options=e,this}load(e,t,n,s){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const u=this,f=Oo.get(`image-bitmap:${e}`);if(f!==void 0){if(u.manager.itemStart(e),f.then){f.then(g=>{if(yx.has(f)===!0)s&&s(yx.get(f)),u.manager.itemError(e),u.manager.itemEnd(e);else return t&&t(g),u.manager.itemEnd(e),g});return}return setTimeout(function(){t&&t(f),u.manager.itemEnd(e)},0),f}const h={};h.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",h.headers=this.requestHeader,h.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;const m=fetch(e,h).then(function(g){return g.blob()}).then(function(g){return createImageBitmap(g,Object.assign(u.options,{colorSpaceConversion:"none"}))}).then(function(g){return Oo.add(`image-bitmap:${e}`,g),t&&t(g),u.manager.itemEnd(e),g}).catch(function(g){s&&s(g),yx.set(m,g),Oo.remove(`image-bitmap:${e}`),u.manager.itemError(e),u.manager.itemEnd(e)});Oo.add(`image-bitmap:${e}`,m),u.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}let ev;class $b{static getContext(){return ev===void 0&&(ev=new(window.AudioContext||window.webkitAudioContext)),ev}static setContext(e){ev=e}}class jN extends Ns{constructor(e){super(e)}load(e,t,n,s){const u=this,f=new Ul(this.manager);f.setResponseType("arraybuffer"),f.setPath(this.path),f.setRequestHeader(this.requestHeader),f.setWithCredentials(this.withCredentials),f.load(e,function(m){try{const g=m.slice(0);$b.getContext().decodeAudioData(g,function(x){t(x)}).catch(h)}catch(g){h(g)}},n,s);function h(m){s?s(m):Rt(m),u.manager.itemError(e)}}}const KM=new Xt,JM=new Xt,Oc=new Xt;class YN{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new zi,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new zi,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Oc.copy(e.projectionMatrix);const s=t.eyeSep/2,u=s*t.near/t.focus,f=t.near*Math.tan(Jc*t.fov*.5)/t.zoom;let h,m;JM.elements[12]=-s,KM.elements[12]=s,h=-f*t.aspect+u,m=f*t.aspect+u,Oc.elements[0]=2*t.near/(m-h),Oc.elements[8]=(m+h)/(m-h),this.cameraL.projectionMatrix.copy(Oc),h=-f*t.aspect-u,m=f*t.aspect-u,Oc.elements[0]=2*t.near/(m-h),Oc.elements[8]=(m+h)/(m-h),this.cameraR.projectionMatrix.copy(Oc)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(JM),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(KM)}}class OT extends zi{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class eS{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=performance.now();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}const Pc=new j,_x=new Pa,ZN=new j,zc=new j,Bc=new j;class QN extends Cn{constructor(){super(),this.type="AudioListener",this.context=$b.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new eS}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Pc,_x,ZN),zc.set(0,0,-1).applyQuaternion(_x),Bc.set(0,1,0).applyQuaternion(_x),t.positionX){const n=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Pc.x,n),t.positionY.linearRampToValueAtTime(Pc.y,n),t.positionZ.linearRampToValueAtTime(Pc.z,n),t.forwardX.linearRampToValueAtTime(zc.x,n),t.forwardY.linearRampToValueAtTime(zc.y,n),t.forwardZ.linearRampToValueAtTime(zc.z,n),t.upX.linearRampToValueAtTime(Bc.x,n),t.upY.linearRampToValueAtTime(Bc.y,n),t.upZ.linearRampToValueAtTime(Bc.z,n)}else t.setPosition(Pc.x,Pc.y,Pc.z),t.setOrientation(zc.x,zc.y,zc.z,Bc.x,Bc.y,Bc.z)}}let PT=class extends Cn{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){ft("Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){ft("Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){ft("Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){ft("Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,s,this._addIndex*t,1,t);for(let m=t,g=t+t;m!==g;++m)if(n[m]!==n[m+t]){h.setValue(n,s);break}}saveOriginalState(){const e=this.binding,t=this.buffer,n=this.valueSize,s=n*this._origIndex;e.getValue(t,s);for(let u=n,f=s;u!==f;++u)t[u]=t[s+u%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let f=0;f!==u;++f)e[t+f]=e[n+f]}_slerp(e,t,n,s){Pa.slerpFlat(e,t,e,t,e,n,s)}_slerpAdditive(e,t,n,s,u){const f=this._workIndex*u;Pa.multiplyQuaternionsFlat(e,f,e,t,e,n),Pa.slerpFlat(e,t,e,t,e,f,s)}_lerp(e,t,n,s,u){const f=1-s;for(let h=0;h!==u;++h){const m=t+h;e[m]=e[m]*f+e[n+h]*s}}_lerpAdditive(e,t,n,s,u){for(let f=0;f!==u;++f){const h=t+f;e[h]=e[h]+e[n+f]*s}}}const tS="\\[\\]\\.:\\/",eD=new RegExp("["+tS+"]","g"),nS="[^"+tS+"]",tD="[^"+tS.replace("\\.","")+"]",nD=/((?:WC+[\/:])*)/.source.replace("WC",nS),iD=/(WCOD+)?/.source.replace("WCOD",tD),aD=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",nS),sD=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",nS),rD=new RegExp("^"+nD+iD+aD+sD+"$"),oD=["material","materials","bones","map"];class lD{constructor(e,t,n){const s=n||wn.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,s)}getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,s=this._bindings[n];s!==void 0&&s.getValue(e,t)}setValue(e,t){const n=this._bindings;for(let s=this._targetGroup.nCachedObjects_,u=n.length;s!==u;++s)n[s].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}}class wn{constructor(e,t,n){this.path=t,this.parsedPath=n||wn.parseTrackName(t),this.node=wn.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new wn.Composite(e,t,n):new wn(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(eD,"")}static parseTrackName(e){const t=rD.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},s=n.nodeName&&n.nodeName.lastIndexOf(".");if(s!==void 0&&s!==-1){const u=n.nodeName.substring(s+1);oD.indexOf(u)!==-1&&(n.nodeName=n.nodeName.substring(0,s),n.objectName=u)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){const n=function(u){for(let f=0;f=u){const x=u++,b=e[x];t[b.uuid]=_,e[_]=b,t[g]=x,e[x]=m;for(let M=0,A=s;M!==A;++M){const R=n[M],w=R[x],E=R[_];R[_]=w,R[x]=E}}}this.nCachedObjects_=u}uncache(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,s=n.length;let u=this.nCachedObjects_,f=e.length;for(let h=0,m=arguments.length;h!==m;++h){const g=arguments[h],_=g.uuid,x=t[_];if(x!==void 0)if(delete t[_],x0&&(t[M.uuid]=x),e[x]=M,e.pop();for(let A=0,R=s;A!==R;++A){const w=n[A];w[x]=w[b],w.pop()}}}this.nCachedObjects_=u}subscribe_(e,t){const n=this._bindingsIndicesByPath;let s=n[e];const u=this._bindings;if(s!==void 0)return u[s];const f=this._paths,h=this._parsedPaths,m=this._objects,g=m.length,_=this.nCachedObjects_,x=new Array(g);s=u.length,n[e]=s,f.push(e),h.push(t),u.push(x);for(let b=_,M=m.length;b!==M;++b){const A=m[b];x[b]=new wn(A,e,t)}return x}unsubscribe_(e){const t=this._bindingsIndicesByPath,n=t[e];if(n!==void 0){const s=this._paths,u=this._parsedPaths,f=this._bindings,h=f.length-1,m=f[h],g=e[h];t[g]=n,f[n]=m,f.pop(),u[n]=u[h],u.pop(),s[n]=s[h],s.pop()}}}class BT{constructor(e,t,n=null,s=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=s;const u=t.tracks,f=u.length,h=new Array(f),m={endingStart:Yc,endingEnd:Yc};for(let g=0;g!==f;++g){const _=u[g].createInterpolant(null);h[g]=_,_.settings=m}this._interpolantSettings=m,this._interpolants=h,this._propertyBindings=new Array(f),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=CE,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n=!1){if(e.fadeOut(t),this.fadeIn(t),n===!0){const s=this._clip.duration,u=e._clip.duration,f=u/s,h=s/u;e.warp(1,f,t),this.warp(h,1,t)}return this}crossFadeTo(e,t,n=!1){return e.crossFadeFrom(this,t,n)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){const s=this._mixer,u=s.time,f=this.timeScale;let h=this._timeScaleInterpolant;h===null&&(h=s._lendControlInterpolant(),this._timeScaleInterpolant=h);const m=h.parameterPositions,g=h.sampleValues;return m[0]=u,m[1]=u+n,g[0]=e/f,g[1]=t/f,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,s){if(!this.enabled){this._updateWeight(e);return}const u=this._startTime;if(u!==null){const m=(e-u)*n;m<0||n===0?t=0:(this._startTime=null,t=n*m)}t*=this._updateTimeScale(e);const f=this._updateTime(t),h=this._updateWeight(e);if(h>0){const m=this._interpolants,g=this._propertyBindings;switch(this.blendMode){case Ab:for(let _=0,x=m.length;_!==x;++_)m[_].evaluate(f),g[_].accumulateAdditive(h);break;case Ey:default:for(let _=0,x=m.length;_!==x;++_)m[_].evaluate(f),g[_].accumulate(s,h)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const n=this._weightInterpolant;if(n!==null){const s=n.evaluate(e)[0];t*=s,e>n.parameterPositions[1]&&(this.stopFading(),s===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const n=this._timeScaleInterpolant;if(n!==null){const s=n.evaluate(e)[0];t*=s,e>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,n=this.loop;let s=this.time+e,u=this._loopCount;const f=n===RE;if(e===0)return u===-1?s:f&&(u&1)===1?t-s:s;if(n===wE){u===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(s>=t)s=t;else if(s<0)s=0;else{this.time=s;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(u===-1&&(e>=0?(u=0,this._setEndings(!0,this.repetitions===0,f)):this._setEndings(this.repetitions===0,!0,f)),s>=t||s<0){const h=Math.floor(s/t);s-=t*h,u+=Math.abs(h);const m=this.repetitions-u;if(m<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,s=e>0?t:0,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(m===1){const g=e<0;this._setEndings(g,!g,f)}else this._setEndings(!1,!1,f);this._loopCount=u,this.time=s,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:h})}}else this.time=s;if(f&&(u&1)===1)return t-s}return s}_setEndings(e,t,n){const s=this._interpolantSettings;n?(s.endingStart=Zc,s.endingEnd=Zc):(e?s.endingStart=this.zeroSlopeAtStart?Zc:Yc:s.endingStart=hm,t?s.endingEnd=this.zeroSlopeAtEnd?Zc:Yc:s.endingEnd=hm)}_scheduleFading(e,t,n){const s=this._mixer,u=s.time;let f=this._weightInterpolant;f===null&&(f=s._lendControlInterpolant(),this._weightInterpolant=f);const h=f.parameterPositions,m=f.sampleValues;return h[0]=u,m[0]=t,h[1]=u+e,m[1]=n,this}}const cD=new Float32Array(1);class fD extends ko{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const n=e._localRoot||this._root,s=e._clip.tracks,u=s.length,f=e._propertyBindings,h=e._interpolants,m=n.uuid,g=this._bindingsByRootAndName;let _=g[m];_===void 0&&(_={},g[m]=_);for(let x=0;x!==u;++x){const b=s[x],M=b.name;let A=_[M];if(A!==void 0)++A.referenceCount,f[x]=A;else{if(A=f[x],A!==void 0){A._cacheIndex===null&&(++A.referenceCount,this._addInactiveBinding(A,m,M));continue}const R=t&&t._propertyBindings[x].binding.parsedPath;A=new zT(wn.create(n,M,R),b.ValueTypeName,b.getValueSize()),++A.referenceCount,this._addInactiveBinding(A,m,M),f[x]=A}h[x].resultBuffer=A.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const n=(e._localRoot||this._root).uuid,s=e._clip.uuid,u=this._actionsByClip[s];this._bindAction(e,u&&u.knownActions[0]),this._addInactiveAction(e,s,n)}const t=e._propertyBindings;for(let n=0,s=t.length;n!==s;++n){const u=t[n];u.useCount++===0&&(this._lendBinding(u),u.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let n=0,s=t.length;n!==s;++n){const u=t[n];--u.useCount===0&&(u.restoreOriginalState(),this._takeBackBinding(u))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return t!==null&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;const t=this._actions,n=this._nActiveActions,s=this.time+=e,u=Math.sign(e),f=this._accuIndex^=1;for(let g=0;g!==n;++g)t[g]._update(s,e,u,f);const h=this._bindings,m=this._nActiveBindings;for(let g=0;g!==m;++g)h[g].apply(f);return this}setTime(e){this.time=0;for(let t=0;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,n1).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const i1=new j,tv=new j,Oh=new j,Ph=new j,xx=new j,bD=new j,SD=new j;class MD{constructor(e=new j,t=new j){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){i1.subVectors(e,this.start),tv.subVectors(this.end,this.start);const n=tv.dot(tv);let u=tv.dot(i1)/n;return t&&(u=Ht(u,0,1)),u}closestPointToPoint(e,t,n){const s=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(s).add(this.start)}distanceSqToLine3(e,t=bD,n=SD){const s=10000000000000001e-32;let u,f;const h=this.start,m=e.start,g=this.end,_=e.end;Oh.subVectors(g,h),Ph.subVectors(_,m),xx.subVectors(h,m);const x=Oh.dot(Oh),b=Ph.dot(Ph),M=Ph.dot(xx);if(x<=s&&b<=s)return t.copy(h),n.copy(m),t.sub(n),t.dot(t);if(x<=s)u=0,f=M/b,f=Ht(f,0,1);else{const A=Oh.dot(xx);if(b<=s)f=0,u=Ht(-A/x,0,1);else{const R=Oh.dot(Ph),w=x*b-R*R;w!==0?u=Ht((R*M-A*b)/w,0,1):u=0,f=(R*u+M)/b,f<0?(f=0,u=Ht(-A/x,0,1)):f>1&&(f=1,u=Ht((R-A)/x,0,1))}}return t.copy(h).add(Oh.multiplyScalar(u)),n.copy(m).add(Ph.multiplyScalar(f)),t.sub(n),t.dot(t)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const a1=new j;class ED extends Cn{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const n=new Kt,s=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let f=0,h=1,m=32;f1)for(let x=0;x.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{u1.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(u1,t)}}setLength(e,t=e*.2,n=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class zD extends Vo{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],s=new Kt;s.setAttribute("position",new bt(t,3)),s.setAttribute("color",new bt(n,3));const u=new ss({vertexColors:!0,toneMapped:!1});super(s,u),this.type="AxesHelper"}setColors(e,t,n){const s=new yt,u=this.geometry.attributes.color.array;return s.set(e),s.toArray(u,0),s.toArray(u,3),s.set(t),s.toArray(u,6),s.toArray(u,9),s.set(n),s.toArray(u,12),s.toArray(u,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class BD{constructor(){this.type="ShapePath",this.color=new yt,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new ly,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,s){return this.currentPath.quadraticCurveTo(e,t,n,s),this}bezierCurveTo(e,t,n,s,u,f){return this.currentPath.bezierCurveTo(e,t,n,s,u,f),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(E){const N=[];for(let D=0,U=E.length;DNumber.EPSILON){if(P<0&&(H=N[z],I=-I,W=N[B],P=-P),E.yW.y)continue;if(E.y===H.y){if(E.x===H.x)return!0}else{const Z=P*(E.x-H.x)-I*(E.y-H.y);if(Z===0)return!0;if(Z<0)continue;U=!U}}else{if(E.y!==H.y)continue;if(W.x<=E.x&&E.x<=H.x||H.x<=E.x&&E.x<=W.x)return!0}}return U}const s=jr.isClockWise,u=this.subPaths;if(u.length===0)return[];let f,h,m;const g=[];if(u.length===1)return h=u[0],m=new $c,m.curves=h.curves,g.push(m),g;let _=!s(u[0].getPoints());_=e?!_:_;const x=[],b=[];let M=[],A=0,R;b[A]=void 0,M[A]=[];for(let E=0,N=u.length;E1){let E=!1,N=0;for(let D=0,U=b.length;D0&&E===!1&&(M=x)}let w;for(let E=0,N=b.length;Ee?(r.repeat.x=1,r.repeat.y=t/e,r.offset.x=0,r.offset.y=(1-r.repeat.y)/2):(r.repeat.x=e/t,r.repeat.y=1,r.offset.x=(1-r.repeat.x)/2,r.offset.y=0),r}function VD(r,e){const t=r.image&&r.image.width?r.image.width/r.image.height:1;return t>e?(r.repeat.x=e/t,r.repeat.y=1,r.offset.x=(1-r.repeat.x)/2,r.offset.y=0):(r.repeat.x=1,r.repeat.y=t/e,r.offset.x=0,r.offset.y=(1-r.repeat.y)/2),r}function HD(r){return r.repeat.x=1,r.repeat.y=1,r.offset.x=0,r.offset.y=0,r}function tb(r,e,t,n){const s=GD(n);switch(t){case Eb:return r*e;case by:return r*e/s.components*s.byteLength;case wm:return r*e/s.components*s.byteLength;case tf:return r*e*2/s.components*s.byteLength;case Sy:return r*e*2/s.components*s.byteLength;case Tb:return r*e*3/s.components*s.byteLength;case Oa:return r*e*4/s.components*s.byteLength;case My:return r*e*4/s.components*s.byteLength;case $p:case em:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*8;case tm:case nm:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*16;case wv:case Rv:return Math.max(r,16)*Math.max(e,8)/4;case Av:case Cv:return Math.max(r,8)*Math.max(e,8)/2;case Nv:case Dv:case Uv:case Iv:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*8;case Lv:case Ov:case Pv:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*16;case zv:return Math.floor((r+3)/4)*Math.floor((e+3)/4)*16;case Bv:return Math.floor((r+4)/5)*Math.floor((e+3)/4)*16;case Fv:return Math.floor((r+4)/5)*Math.floor((e+4)/5)*16;case kv:return Math.floor((r+5)/6)*Math.floor((e+4)/5)*16;case Vv:return Math.floor((r+5)/6)*Math.floor((e+5)/6)*16;case Hv:return Math.floor((r+7)/8)*Math.floor((e+4)/5)*16;case Gv:return Math.floor((r+7)/8)*Math.floor((e+5)/6)*16;case Xv:return Math.floor((r+7)/8)*Math.floor((e+7)/8)*16;case Wv:return Math.floor((r+9)/10)*Math.floor((e+4)/5)*16;case qv:return Math.floor((r+9)/10)*Math.floor((e+5)/6)*16;case jv:return Math.floor((r+9)/10)*Math.floor((e+7)/8)*16;case Yv:return Math.floor((r+9)/10)*Math.floor((e+9)/10)*16;case Zv:return Math.floor((r+11)/12)*Math.floor((e+9)/10)*16;case Qv:return Math.floor((r+11)/12)*Math.floor((e+11)/12)*16;case Kv:case Jv:case $v:return Math.ceil(r/4)*Math.ceil(e/4)*16;case ey:case ty:return Math.ceil(r/4)*Math.ceil(e/4)*8;case ny:case iy:return Math.ceil(r/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function GD(r){switch(r){case ts:case xb:return{byteLength:1,components:1};case qh:case bb:case Bo:return{byteLength:2,components:1};case _y:case xy:return{byteLength:2,components:4};case vr:case yy:case is:return{byteLength:4,components:1};case Sb:case Mb:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${r}.`)}class XD{static contain(e,t){return kD(e,t)}static cover(e,t){return VD(e,t)}static fill(e){return HD(e)}static getByteLength(e,t,n,s){return tb(e,t,n,s)}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:my}}));typeof window<"u"&&(window.__THREE__?ft("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=my);function VT(){let r=null,e=!1,t=null,n=null;function s(u,f){t(u,f),n=r.requestAnimationFrame(s)}return{start:function(){e!==!0&&t!==null&&(n=r.requestAnimationFrame(s),e=!0)},stop:function(){r.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(u){t=u},setContext:function(u){r=u}}}function WD(r){const e=new WeakMap;function t(h,m){const g=h.array,_=h.usage,x=g.byteLength,b=r.createBuffer();r.bindBuffer(m,b),r.bufferData(m,g,_),h.onUploadCallback();let M;if(g instanceof Float32Array)M=r.FLOAT;else if(typeof Float16Array<"u"&&g instanceof Float16Array)M=r.HALF_FLOAT;else if(g instanceof Uint16Array)h.isFloat16BufferAttribute?M=r.HALF_FLOAT:M=r.UNSIGNED_SHORT;else if(g instanceof Int16Array)M=r.SHORT;else if(g instanceof Uint32Array)M=r.UNSIGNED_INT;else if(g instanceof Int32Array)M=r.INT;else if(g instanceof Int8Array)M=r.BYTE;else if(g instanceof Uint8Array)M=r.UNSIGNED_BYTE;else if(g instanceof Uint8ClampedArray)M=r.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+g);return{buffer:b,type:M,bytesPerElement:g.BYTES_PER_ELEMENT,version:h.version,size:x}}function n(h,m,g){const _=m.array,x=m.updateRanges;if(r.bindBuffer(g,h),x.length===0)r.bufferSubData(g,0,_);else{x.sort((M,A)=>M.start-A.start);let b=0;for(let M=1;M 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,lL=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,uL=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,cL=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,fL=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,hL=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,dL=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,pL=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,mL=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,gL=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,vL=`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,yL=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,_L=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,xL=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE + emissiveColor = sRGBTransferEOTF( emissiveColor ); + #endif + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,bL=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,SL="gl_FragColor = linearToOutputTexel( gl_FragColor );",ML=`vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferEOTF( in vec4 value ) { + return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a ); +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,EL=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,TL=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif +#endif`,AL=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,wL=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,CL=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,RL=`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,NL=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,DL=`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,LL=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,UL=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,IL=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,OL=`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,PL=`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,zL=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,BL=`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, pow4( roughness ) ) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,FL=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,kL=`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,VL=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,HL=`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,GL=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.diffuseContribution = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +material.metalness = metalnessFactor; +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor; + material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = vec3( 0.04 ); + material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.0001, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,XL=`uniform sampler2D dfgLUT; +struct PhysicalMaterial { + vec3 diffuseColor; + vec3 diffuseContribution; + vec3 specularColor; + vec3 specularColorBlended; + float roughness; + float metalness; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + vec3 iridescenceFresnelDielectric; + vec3 iridescenceFresnelMetallic; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return v; + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColorBlended; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transpose( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float rInv = 1.0 / ( roughness + 0.1 ); + float a = -1.9362 + 1.0678 * roughness + 0.4573 * r2 - 0.8469 * rInv; + float b = -0.6014 + 0.5538 * roughness - 0.4670 * r2 - 0.1255 * rInv; + float DG = exp( a * dotNV + b ); + return saturate( DG ); +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg; + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg; + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +vec3 BRDF_GGX_Multiscatter( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 singleScatter = BRDF_GGX( lightDir, viewDir, normal, material ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 dfgV = texture2D( dfgLUT, vec2( material.roughness, dotNV ) ).rg; + vec2 dfgL = texture2D( dfgLUT, vec2( material.roughness, dotNL ) ).rg; + vec3 FssEss_V = material.specularColorBlended * dfgV.x + material.specularF90 * dfgV.y; + vec3 FssEss_L = material.specularColorBlended * dfgL.x + material.specularF90 * dfgL.y; + float Ess_V = dfgV.x + dfgV.y; + float Ess_L = dfgL.x + dfgL.y; + float Ems_V = 1.0 - Ess_V; + float Ems_L = 1.0 - Ess_L; + vec3 Favg = material.specularColorBlended + ( 1.0 - material.specularColorBlended ) * 0.047619; + vec3 Fms = FssEss_V * FssEss_L * Favg / ( 1.0 - Ems_V * Ems_L * Favg + EPSILON ); + float compensationFactor = Ems_V * Ems_L; + vec3 multiScatter = Fms * compensationFactor; + return singleScatter + multiScatter; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColorBlended * t2.x + ( vec3( 1.0 ) - material.specularColorBlended ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseContribution * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + + float sheenAlbedoV = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenAlbedoL = IBLSheenBRDF( geometryNormal, directLight.direction, material.sheenRoughness ); + + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * max( sheenAlbedoV, sheenAlbedoL ); + + irradiance *= sheenEnergyComp; + + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX_Multiscatter( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseContribution ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 diffuse = irradiance * BRDF_Lambert( material.diffuseContribution ); + #ifdef USE_SHEEN + float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo; + diffuse *= sheenEnergyComp; + #endif + reflectedLight.indirectDiffuse += diffuse; +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ) * RECIPROCAL_PI; + #endif + vec3 singleScatteringDielectric = vec3( 0.0 ); + vec3 multiScatteringDielectric = vec3( 0.0 ); + vec3 singleScatteringMetallic = vec3( 0.0 ); + vec3 multiScatteringMetallic = vec3( 0.0 ); + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnelDielectric, material.roughness, singleScatteringDielectric, multiScatteringDielectric ); + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.iridescence, material.iridescenceFresnelMetallic, material.roughness, singleScatteringMetallic, multiScatteringMetallic ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScatteringDielectric, multiScatteringDielectric ); + computeMultiscattering( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.roughness, singleScatteringMetallic, multiScatteringMetallic ); + #endif + vec3 singleScattering = mix( singleScatteringDielectric, singleScatteringMetallic, material.metalness ); + vec3 multiScattering = mix( multiScatteringDielectric, multiScatteringMetallic, material.metalness ); + vec3 totalScatteringDielectric = singleScatteringDielectric + multiScatteringDielectric; + vec3 diffuse = material.diffuseContribution * ( 1.0 - totalScatteringDielectric ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + vec3 indirectSpecular = radiance * singleScattering; + indirectSpecular += multiScattering * cosineWeightedIrradiance; + vec3 indirectDiffuse = diffuse * cosineWeightedIrradiance; + #ifdef USE_SHEEN + float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo; + indirectSpecular *= sheenEnergyComp; + indirectDiffuse *= sheenEnergyComp; + #endif + reflectedLight.indirectSpecular += indirectSpecular; + reflectedLight.indirectDiffuse += indirectDiffuse; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,WL=` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnelDielectric = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceFresnelMetallic = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.diffuseColor ); + material.iridescenceFresnel = mix( material.iridescenceFresnelDielectric, material.iridescenceFresnelMetallic, material.metalness ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,qL=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,jL=`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,YL=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,ZL=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,QL=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER + varying float vFragDepth; + varying float vIsPerspective; +#endif`,KL=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,JL=`#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,$L=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,eU=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,tU=`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,nU=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,iU=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,aU=`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,sU=`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,rU=`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,oU=`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,lU=`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,uU=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,cU=`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,fU=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,hU=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,dU=`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,pU=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,mU=`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,gU=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,vU=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,yU=`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,_U=`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,xU=`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,bU=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,SU=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,MU=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,EU=`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,TU=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,AU=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,wU=`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform sampler2DShadow directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + #else + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform sampler2DShadow spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + #else + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform samplerCubeShadow pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + #elif defined( SHADOWMAP_TYPE_BASIC ) + uniform samplerCube pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + #if defined( SHADOWMAP_TYPE_PCF ) + float interleavedGradientNoise( vec2 position ) { + return fract( 52.9829189 * fract( dot( position, vec2( 0.06711056, 0.00583715 ) ) ) ); + } + vec2 vogelDiskSample( int sampleIndex, int samplesCount, float phi ) { + const float goldenAngle = 2.399963229728653; + float r = sqrt( ( float( sampleIndex ) + 0.5 ) / float( samplesCount ) ); + float theta = float( sampleIndex ) * goldenAngle + phi; + return vec2( cos( theta ), sin( theta ) ) * r; + } + #endif + #if defined( SHADOWMAP_TYPE_PCF ) + float getShadow( sampler2DShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float radius = shadowRadius * texelSize.x; + float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718; + shadow = ( + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 0, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 1, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 2, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 3, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 4, 5, phi ) * radius, shadowCoord.z ) ) + ) * 0.2; + } + return mix( 1.0, shadow, shadowIntensity ); + } + #elif defined( SHADOWMAP_TYPE_VSM ) + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + vec2 distribution = texture2D( shadowMap, shadowCoord.xy ).rg; + float mean = distribution.x; + float variance = distribution.y * distribution.y; + #ifdef USE_REVERSED_DEPTH_BUFFER + float hard_shadow = step( mean, shadowCoord.z ); + #else + float hard_shadow = step( shadowCoord.z, mean ); + #endif + if ( hard_shadow == 1.0 ) { + shadow = 1.0; + } else { + variance = max( variance, 0.0000001 ); + float d = shadowCoord.z - mean; + float p_max = variance / ( variance + d * d ); + p_max = clamp( ( p_max - 0.3 ) / 0.65, 0.0, 1.0 ); + shadow = max( hard_shadow, p_max ); + } + } + return mix( 1.0, shadow, shadowIntensity ); + } + #else + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + float depth = texture2D( shadowMap, shadowCoord.xy ).r; + #ifdef USE_REVERSED_DEPTH_BUFFER + shadow = step( depth, shadowCoord.z ); + #else + shadow = step( shadowCoord.z, depth ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + float getPointShadow( samplerCubeShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + vec3 bd3D = normalize( lightToPosition ); + vec3 absVec = abs( lightToPosition ); + float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z ); + if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) { + float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) ); + dp += shadowBias; + float texelSize = shadowRadius / shadowMapSize.x; + vec3 absDir = abs( bd3D ); + vec3 tangent = absDir.x > absDir.z ? vec3( 0.0, 1.0, 0.0 ) : vec3( 1.0, 0.0, 0.0 ); + tangent = normalize( cross( bd3D, tangent ) ); + vec3 bitangent = cross( bd3D, tangent ); + float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718; + shadow = ( + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 0, 5, phi ).x + bitangent * vogelDiskSample( 0, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 1, 5, phi ).x + bitangent * vogelDiskSample( 1, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 2, 5, phi ).x + bitangent * vogelDiskSample( 2, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 3, 5, phi ).x + bitangent * vogelDiskSample( 3, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 4, 5, phi ).x + bitangent * vogelDiskSample( 4, 5, phi ).y ) * texelSize, dp ) ) + ) * 0.2; + } + return mix( 1.0, shadow, shadowIntensity ); + } + #elif defined( SHADOWMAP_TYPE_BASIC ) + float getPointShadow( samplerCube shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + vec3 bd3D = normalize( lightToPosition ); + vec3 absVec = abs( lightToPosition ); + float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z ); + if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) { + float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) ); + dp += shadowBias; + float depth = textureCube( shadowMap, bd3D ).r; + #ifdef USE_REVERSED_DEPTH_BUFFER + shadow = step( depth, dp ); + #else + shadow = step( dp, depth ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + #endif + #endif +#endif`,CU=`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,RU=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,NU=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) ) + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,DU=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,LU=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,UU=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,IU=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,OU=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,PU=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,zU=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,BU=`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,FU=`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseContribution, material.specularColorBlended, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,kU=`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + #else + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,VU=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,HU=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,GU=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,XU=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`;const WU=`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,qU=`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,jU=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,YU=`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,ZU=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,QU=`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,KU=`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,JU=`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + #ifdef USE_REVERSED_DEPTH_BUFFER + float fragCoordZ = vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ]; + #else + float fragCoordZ = 0.5 * vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ] + 0.5; + #endif + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,$U=`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,eI=`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = vec4( dist, 0.0, 0.0, 1.0 ); +}`,tI=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,nI=`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,iI=`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,aI=`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,sI=`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,rI=`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,oI=`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,lI=`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,uI=`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,cI=`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,fI=`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,hI=`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( normalize( normal ) * 0.5 + 0.5, diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,dI=`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,pI=`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,mI=`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,gI=`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + + outgoingLight = outgoingLight + sheenSpecularDirect + sheenSpecularIndirect; + + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,vI=`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,yI=`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,_I=`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,xI=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,bI=`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,SI=`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,MI=`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,EI=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`,un={alphahash_fragment:qD,alphahash_pars_fragment:jD,alphamap_fragment:YD,alphamap_pars_fragment:ZD,alphatest_fragment:QD,alphatest_pars_fragment:KD,aomap_fragment:JD,aomap_pars_fragment:$D,batching_pars_vertex:eL,batching_vertex:tL,begin_vertex:nL,beginnormal_vertex:iL,bsdfs:aL,iridescence_fragment:sL,bumpmap_pars_fragment:rL,clipping_planes_fragment:oL,clipping_planes_pars_fragment:lL,clipping_planes_pars_vertex:uL,clipping_planes_vertex:cL,color_fragment:fL,color_pars_fragment:hL,color_pars_vertex:dL,color_vertex:pL,common:mL,cube_uv_reflection_fragment:gL,defaultnormal_vertex:vL,displacementmap_pars_vertex:yL,displacementmap_vertex:_L,emissivemap_fragment:xL,emissivemap_pars_fragment:bL,colorspace_fragment:SL,colorspace_pars_fragment:ML,envmap_fragment:EL,envmap_common_pars_fragment:TL,envmap_pars_fragment:AL,envmap_pars_vertex:wL,envmap_physical_pars_fragment:BL,envmap_vertex:CL,fog_vertex:RL,fog_pars_vertex:NL,fog_fragment:DL,fog_pars_fragment:LL,gradientmap_pars_fragment:UL,lightmap_pars_fragment:IL,lights_lambert_fragment:OL,lights_lambert_pars_fragment:PL,lights_pars_begin:zL,lights_toon_fragment:FL,lights_toon_pars_fragment:kL,lights_phong_fragment:VL,lights_phong_pars_fragment:HL,lights_physical_fragment:GL,lights_physical_pars_fragment:XL,lights_fragment_begin:WL,lights_fragment_maps:qL,lights_fragment_end:jL,logdepthbuf_fragment:YL,logdepthbuf_pars_fragment:ZL,logdepthbuf_pars_vertex:QL,logdepthbuf_vertex:KL,map_fragment:JL,map_pars_fragment:$L,map_particle_fragment:eU,map_particle_pars_fragment:tU,metalnessmap_fragment:nU,metalnessmap_pars_fragment:iU,morphinstance_vertex:aU,morphcolor_vertex:sU,morphnormal_vertex:rU,morphtarget_pars_vertex:oU,morphtarget_vertex:lU,normal_fragment_begin:uU,normal_fragment_maps:cU,normal_pars_fragment:fU,normal_pars_vertex:hU,normal_vertex:dU,normalmap_pars_fragment:pU,clearcoat_normal_fragment_begin:mU,clearcoat_normal_fragment_maps:gU,clearcoat_pars_fragment:vU,iridescence_pars_fragment:yU,opaque_fragment:_U,packing:xU,premultiplied_alpha_fragment:bU,project_vertex:SU,dithering_fragment:MU,dithering_pars_fragment:EU,roughnessmap_fragment:TU,roughnessmap_pars_fragment:AU,shadowmap_pars_fragment:wU,shadowmap_pars_vertex:CU,shadowmap_vertex:RU,shadowmask_pars_fragment:NU,skinbase_vertex:DU,skinning_pars_vertex:LU,skinning_vertex:UU,skinnormal_vertex:IU,specularmap_fragment:OU,specularmap_pars_fragment:PU,tonemapping_fragment:zU,tonemapping_pars_fragment:BU,transmission_fragment:FU,transmission_pars_fragment:kU,uv_pars_fragment:VU,uv_pars_vertex:HU,uv_vertex:GU,worldpos_vertex:XU,background_vert:WU,background_frag:qU,backgroundCube_vert:jU,backgroundCube_frag:YU,cube_vert:ZU,cube_frag:QU,depth_vert:KU,depth_frag:JU,distance_vert:$U,distance_frag:eI,equirect_vert:tI,equirect_frag:nI,linedashed_vert:iI,linedashed_frag:aI,meshbasic_vert:sI,meshbasic_frag:rI,meshlambert_vert:oI,meshlambert_frag:lI,meshmatcap_vert:uI,meshmatcap_frag:cI,meshnormal_vert:fI,meshnormal_frag:hI,meshphong_vert:dI,meshphong_frag:pI,meshphysical_vert:mI,meshphysical_frag:gI,meshtoon_vert:vI,meshtoon_frag:yI,points_vert:_I,points_frag:xI,shadow_vert:bI,shadow_frag:SI,sprite_vert:MI,sprite_frag:EI},pt={common:{diffuse:{value:new yt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new en},alphaMap:{value:null},alphaMapTransform:{value:new en},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new en}},envmap:{envMap:{value:null},envMapRotation:{value:new en},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new en}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new en}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new en},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new en},normalScale:{value:new ze(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new en},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new en}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new en}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new en}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new yt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new yt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new en},alphaTest:{value:0},uvTransform:{value:new en}},sprite:{diffuse:{value:new yt(16777215)},opacity:{value:1},center:{value:new ze(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new en},alphaMap:{value:null},alphaMapTransform:{value:new en},alphaTest:{value:0}}},qr={basic:{uniforms:es([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.fog]),vertexShader:un.meshbasic_vert,fragmentShader:un.meshbasic_frag},lambert:{uniforms:es([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,pt.lights,{emissive:{value:new yt(0)}}]),vertexShader:un.meshlambert_vert,fragmentShader:un.meshlambert_frag},phong:{uniforms:es([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,pt.lights,{emissive:{value:new yt(0)},specular:{value:new yt(1118481)},shininess:{value:30}}]),vertexShader:un.meshphong_vert,fragmentShader:un.meshphong_frag},standard:{uniforms:es([pt.common,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.roughnessmap,pt.metalnessmap,pt.fog,pt.lights,{emissive:{value:new yt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:un.meshphysical_vert,fragmentShader:un.meshphysical_frag},toon:{uniforms:es([pt.common,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.gradientmap,pt.fog,pt.lights,{emissive:{value:new yt(0)}}]),vertexShader:un.meshtoon_vert,fragmentShader:un.meshtoon_frag},matcap:{uniforms:es([pt.common,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,{matcap:{value:null}}]),vertexShader:un.meshmatcap_vert,fragmentShader:un.meshmatcap_frag},points:{uniforms:es([pt.points,pt.fog]),vertexShader:un.points_vert,fragmentShader:un.points_frag},dashed:{uniforms:es([pt.common,pt.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:un.linedashed_vert,fragmentShader:un.linedashed_frag},depth:{uniforms:es([pt.common,pt.displacementmap]),vertexShader:un.depth_vert,fragmentShader:un.depth_frag},normal:{uniforms:es([pt.common,pt.bumpmap,pt.normalmap,pt.displacementmap,{opacity:{value:1}}]),vertexShader:un.meshnormal_vert,fragmentShader:un.meshnormal_frag},sprite:{uniforms:es([pt.sprite,pt.fog]),vertexShader:un.sprite_vert,fragmentShader:un.sprite_frag},background:{uniforms:{uvTransform:{value:new en},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:un.background_vert,fragmentShader:un.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new en}},vertexShader:un.backgroundCube_vert,fragmentShader:un.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:un.cube_vert,fragmentShader:un.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:un.equirect_vert,fragmentShader:un.equirect_frag},distance:{uniforms:es([pt.common,pt.displacementmap,{referencePosition:{value:new j},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:un.distance_vert,fragmentShader:un.distance_frag},shadow:{uniforms:es([pt.lights,pt.fog,{color:{value:new yt(0)},opacity:{value:1}}]),vertexShader:un.shadow_vert,fragmentShader:un.shadow_frag}};qr.physical={uniforms:es([qr.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new en},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new en},clearcoatNormalScale:{value:new ze(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new en},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new en},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new en},sheen:{value:0},sheenColor:{value:new yt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new en},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new en},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new en},transmissionSamplerSize:{value:new ze},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new en},attenuationDistance:{value:0},attenuationColor:{value:new yt(0)},specularColor:{value:new yt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new en},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new en},anisotropyVector:{value:new ze},anisotropyMap:{value:null},anisotropyMapTransform:{value:new en}}]),vertexShader:un.meshphysical_vert,fragmentShader:un.meshphysical_frag};const ov={r:0,b:0,g:0},Vc=new Gs,TI=new Xt;function AI(r,e,t,n,s,u,f){const h=new yt(0);let m=u===!0?0:1,g,_,x=null,b=0,M=null;function A(D){let U=D.isScene===!0?D.background:null;return U&&U.isTexture&&(U=(D.backgroundBlurriness>0?t:e).get(U)),U}function R(D){let U=!1;const B=A(D);B===null?E(h,m):B&&B.isColor&&(E(B,1),U=!0);const z=r.xr.getEnvironmentBlendMode();z==="additive"?n.buffers.color.setClear(0,0,0,1,f):z==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,f),(r.autoClear||U)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil))}function w(D,U){const B=A(U);B&&(B.isCubeTexture||B.mapping===id)?(_===void 0&&(_=new Yi(new lf(1,1,1),new yr({name:"BackgroundCubeMaterial",uniforms:Jh(qr.backgroundCube.uniforms),vertexShader:qr.backgroundCube.vertexShader,fragmentShader:qr.backgroundCube.fragmentShader,side:as,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),_.geometry.deleteAttribute("normal"),_.geometry.deleteAttribute("uv"),_.onBeforeRender=function(z,H,W){this.matrixWorld.copyPosition(W.matrixWorld)},Object.defineProperty(_.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),s.update(_)),Vc.copy(U.backgroundRotation),Vc.x*=-1,Vc.y*=-1,Vc.z*=-1,B.isCubeTexture&&B.isRenderTargetTexture===!1&&(Vc.y*=-1,Vc.z*=-1),_.material.uniforms.envMap.value=B,_.material.uniforms.flipEnvMap.value=B.isCubeTexture&&B.isRenderTargetTexture===!1?-1:1,_.material.uniforms.backgroundBlurriness.value=U.backgroundBlurriness,_.material.uniforms.backgroundIntensity.value=U.backgroundIntensity,_.material.uniforms.backgroundRotation.value.setFromMatrix4(TI.makeRotationFromEuler(Vc)),_.material.toneMapped=Sn.getTransfer(B.colorSpace)!==zn,(x!==B||b!==B.version||M!==r.toneMapping)&&(_.material.needsUpdate=!0,x=B,b=B.version,M=r.toneMapping),_.layers.enableAll(),D.unshift(_,_.geometry,_.material,0,0,null)):B&&B.isTexture&&(g===void 0&&(g=new Yi(new sd(2,2),new yr({name:"BackgroundMaterial",uniforms:Jh(qr.background.uniforms),vertexShader:qr.background.vertexShader,fragmentShader:qr.background.fragmentShader,side:Ll,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),g.geometry.deleteAttribute("normal"),Object.defineProperty(g.material,"map",{get:function(){return this.uniforms.t2D.value}}),s.update(g)),g.material.uniforms.t2D.value=B,g.material.uniforms.backgroundIntensity.value=U.backgroundIntensity,g.material.toneMapped=Sn.getTransfer(B.colorSpace)!==zn,B.matrixAutoUpdate===!0&&B.updateMatrix(),g.material.uniforms.uvTransform.value.copy(B.matrix),(x!==B||b!==B.version||M!==r.toneMapping)&&(g.material.needsUpdate=!0,x=B,b=B.version,M=r.toneMapping),g.layers.enableAll(),D.unshift(g,g.geometry,g.material,0,0,null))}function E(D,U){D.getRGB(ov,GE(r)),n.buffers.color.setClear(ov.r,ov.g,ov.b,U,f)}function N(){_!==void 0&&(_.geometry.dispose(),_.material.dispose(),_=void 0),g!==void 0&&(g.geometry.dispose(),g.material.dispose(),g=void 0)}return{getClearColor:function(){return h},setClearColor:function(D,U=1){h.set(D),m=U,E(h,m)},getClearAlpha:function(){return m},setClearAlpha:function(D){m=D,E(h,m)},render:R,addToRenderList:w,dispose:N}}function wI(r,e){const t=r.getParameter(r.MAX_VERTEX_ATTRIBS),n={},s=b(null);let u=s,f=!1;function h(P,Z,se,te,fe){let pe=!1;const Y=x(te,se,Z);u!==Y&&(u=Y,g(u.object)),pe=M(P,te,se,fe),pe&&A(P,te,se,fe),fe!==null&&e.update(fe,r.ELEMENT_ARRAY_BUFFER),(pe||f)&&(f=!1,U(P,Z,se,te),fe!==null&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,e.get(fe).buffer))}function m(){return r.createVertexArray()}function g(P){return r.bindVertexArray(P)}function _(P){return r.deleteVertexArray(P)}function x(P,Z,se){const te=se.wireframe===!0;let fe=n[P.id];fe===void 0&&(fe={},n[P.id]=fe);let pe=fe[Z.id];pe===void 0&&(pe={},fe[Z.id]=pe);let Y=pe[te];return Y===void 0&&(Y=b(m()),pe[te]=Y),Y}function b(P){const Z=[],se=[],te=[];for(let fe=0;fe=0){const Ne=fe[ne];let X=pe[ne];if(X===void 0&&(ne==="instanceMatrix"&&P.instanceMatrix&&(X=P.instanceMatrix),ne==="instanceColor"&&P.instanceColor&&(X=P.instanceColor)),Ne===void 0||Ne.attribute!==X||X&&Ne.data!==X.data)return!0;Y++}return u.attributesNum!==Y||u.index!==te}function A(P,Z,se,te){const fe={},pe=Z.attributes;let Y=0;const q=se.getAttributes();for(const ne in q)if(q[ne].location>=0){let Ne=pe[ne];Ne===void 0&&(ne==="instanceMatrix"&&P.instanceMatrix&&(Ne=P.instanceMatrix),ne==="instanceColor"&&P.instanceColor&&(Ne=P.instanceColor));const X={};X.attribute=Ne,Ne&&Ne.data&&(X.data=Ne.data),fe[ne]=X,Y++}u.attributes=fe,u.attributesNum=Y,u.index=te}function R(){const P=u.newAttributes;for(let Z=0,se=P.length;Z=0){let be=fe[q];if(be===void 0&&(q==="instanceMatrix"&&P.instanceMatrix&&(be=P.instanceMatrix),q==="instanceColor"&&P.instanceColor&&(be=P.instanceColor)),be!==void 0){const Ne=be.normalized,X=be.itemSize,oe=e.get(be);if(oe===void 0)continue;const Ae=oe.buffer,Fe=oe.type,lt=oe.bytesPerElement,de=Fe===r.INT||Fe===r.UNSIGNED_INT||be.gpuType===yy;if(be.isInterleavedBufferAttribute){const Re=be.data,tt=Re.stride,st=be.offset;if(Re.isInstancedInterleavedBuffer){for(let ht=0;ht0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT).precision>0)return"highp";H="mediump"}return H==="mediump"&&r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.MEDIUM_FLOAT).precision>0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let g=t.precision!==void 0?t.precision:"highp";const _=m(g);_!==g&&(ft("WebGLRenderer:",g,"not supported, using",_,"instead."),g=_);const x=t.logarithmicDepthBuffer===!0,b=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control"),M=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS),A=r.getParameter(r.MAX_VERTEX_TEXTURE_IMAGE_UNITS),R=r.getParameter(r.MAX_TEXTURE_SIZE),w=r.getParameter(r.MAX_CUBE_MAP_TEXTURE_SIZE),E=r.getParameter(r.MAX_VERTEX_ATTRIBS),N=r.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),D=r.getParameter(r.MAX_VARYING_VECTORS),U=r.getParameter(r.MAX_FRAGMENT_UNIFORM_VECTORS),B=r.getParameter(r.MAX_SAMPLES),z=r.getParameter(r.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:u,getMaxPrecision:m,textureFormatReadable:f,textureTypeReadable:h,precision:g,logarithmicDepthBuffer:x,reversedDepthBuffer:b,maxTextures:M,maxVertexTextures:A,maxTextureSize:R,maxCubemapSize:w,maxAttributes:E,maxVertexUniforms:N,maxVaryings:D,maxFragmentUniforms:U,maxSamples:B,samples:z}}function NI(r){const e=this;let t=null,n=0,s=!1,u=!1;const f=new wl,h=new en,m={value:null,needsUpdate:!1};this.uniform=m,this.numPlanes=0,this.numIntersection=0,this.init=function(x,b){const M=x.length!==0||b||n!==0||s;return s=b,n=x.length,M},this.beginShadows=function(){u=!0,_(null)},this.endShadows=function(){u=!1},this.setGlobalState=function(x,b){t=_(x,b,0)},this.setState=function(x,b,M){const A=x.clippingPlanes,R=x.clipIntersection,w=x.clipShadows,E=r.get(x);if(!s||A===null||A.length===0||u&&!w)u?_(null):g();else{const N=u?0:n,D=N*4;let U=E.clippingState||null;m.value=U,U=_(A,b,D,M);for(let B=0;B!==D;++B)U[B]=t[B];E.clippingState=U,this.numIntersection=R?this.numPlanes:0,this.numPlanes+=N}};function g(){m.value!==t&&(m.value=t,m.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function _(x,b,M,A){const R=x!==null?x.length:0;let w=null;if(R!==0){if(w=m.value,A!==!0||w===null){const E=M+R*4,N=b.matrixWorldInverse;h.getNormalMatrix(N),(w===null||w.length0){const g=new Db(m.height);return g.fromEquirectangularTexture(r,f),e.set(f,g),f.addEventListener("dispose",s),t(g.texture,f.mapping)}else return null}}return f}function s(f){const h=f.target;h.removeEventListener("dispose",s);const m=e.get(h);m!==void 0&&(e.delete(h),m.dispose())}function u(){e=new WeakMap}return{get:n,dispose:u}}const Ou=4,c1=[.125,.215,.35,.446,.526,.582],qc=20,LI=256,Wp=new Dl,f1=new yt;let Mx=null,Ex=0,Tx=0,Ax=!1;const UI=new j;class nb{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,n=.1,s=100,u={}){const{size:f=256,position:h=UI}=u;Mx=this._renderer.getRenderTarget(),Ex=this._renderer.getActiveCubeFace(),Tx=this._renderer.getActiveMipmapLevel(),Ax=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(f);const m=this._allocateTargets();return m.depthBuffer=!0,this._sceneToCubeUV(e,n,s,m,h),t>0&&this._blur(m,0,0,t),this._applyPMREM(m),this._cleanup(m),m}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=p1(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=d1(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?B:0,B,B),x.setRenderTarget(s),E&&x.render(R,m),x.render(e,m)}x.toneMapping=M,x.autoClear=b,e.background=N}_textureToCubeUV(e,t){const n=this._renderer,s=e.mapping===zo||e.mapping===Pu;s?(this._cubemapMaterial===null&&(this._cubemapMaterial=p1()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=d1());const u=s?this._cubemapMaterial:this._equirectMaterial,f=this._lodMeshes[0];f.material=u;const h=u.uniforms;h.envMap.value=e;const m=this._cubeSize;zh(t,0,0,3*m,2*m),n.setRenderTarget(t),n.render(f,Wp)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const s=this._lodMeshes.length;for(let u=1;uA-Ou?n-A+Ou:0),E=4*(this._cubeSize-R);m.envMap.value=e.texture,m.roughness.value=M,m.mipInt.value=A-t,zh(u,w,E,3*R,2*R),s.setRenderTarget(u),s.render(h,Wp),m.envMap.value=u.texture,m.roughness.value=0,m.mipInt.value=A-n,zh(e,w,E,3*R,2*R),s.setRenderTarget(e),s.render(h,Wp)}_blur(e,t,n,s,u){const f=this._pingPongRenderTarget;this._halfBlur(e,f,t,n,s,"latitudinal",u),this._halfBlur(f,e,n,n,s,"longitudinal",u)}_halfBlur(e,t,n,s,u,f,h){const m=this._renderer,g=this._blurMaterial;f!=="latitudinal"&&f!=="longitudinal"&&Rt("blur direction must be either latitudinal or longitudinal!");const _=3,x=this._lodMeshes[s];x.material=g;const b=g.uniforms,M=this._sizeLods[n]-1,A=isFinite(u)?Math.PI/(2*M):2*Math.PI/(2*qc-1),R=u/A,w=isFinite(u)?1+Math.floor(_*R):qc;w>qc&&ft(`sigmaRadians, ${u}, is too large and will clip, as it requested ${w} samples when the maximum is set to ${qc}`);const E=[];let N=0;for(let H=0;HD-Ou?s-D+Ou:0),z=4*(this._cubeSize-U);zh(t,B,z,3*U,2*U),m.setRenderTarget(t),m.render(x,Wp)}}function II(r){const e=[],t=[],n=[];let s=r;const u=r-Ou+1+c1.length;for(let f=0;fr-Ou?m=c1[f-r+Ou-1]:f===0&&(m=0),t.push(m);const g=1/(h-2),_=-g,x=1+g,b=[_,_,x,_,x,x,_,_,x,x,_,x],M=6,A=6,R=3,w=2,E=1,N=new Float32Array(R*A*M),D=new Float32Array(w*A*M),U=new Float32Array(E*A*M);for(let z=0;z2?0:-1,I=[H,W,0,H+2/3,W,0,H+2/3,W+1,0,H,W,0,H+2/3,W+1,0,H,W+1,0];N.set(I,R*A*z),D.set(b,w*A*z);const P=[z,z,z,z,z,z];U.set(P,E*A*z)}const B=new Kt;B.setAttribute("position",new Xn(N,R)),B.setAttribute("uv",new Xn(D,w)),B.setAttribute("faceIndex",new Xn(U,E)),n.push(new Yi(B,null)),s>Ou&&s--}return{lodMeshes:n,sizeLods:e,sigmas:t}}function h1(r,e,t){const n=new Hs(r,e,t);return n.texture.mapping=id,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function zh(r,e,t,n,s){r.viewport.set(e,t,n,s),r.scissor.set(e,t,n,s)}function OI(r,e,t){return new yr({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:LI,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:Qy(),fragmentShader:` + + precision highp float; + precision highp int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform float roughness; + uniform float mipInt; + + #define ENVMAP_TYPE_CUBE_UV + #include + + #define PI 3.14159265359 + + // Van der Corput radical inverse + float radicalInverse_VdC(uint bits) { + bits = (bits << 16u) | (bits >> 16u); + bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u); + bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u); + bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u); + bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u); + return float(bits) * 2.3283064365386963e-10; // / 0x100000000 + } + + // Hammersley sequence + vec2 hammersley(uint i, uint N) { + return vec2(float(i) / float(N), radicalInverse_VdC(i)); + } + + // GGX VNDF importance sampling (Eric Heitz 2018) + // "Sampling the GGX Distribution of Visible Normals" + // https://jcgt.org/published/0007/04/01/ + vec3 importanceSampleGGX_VNDF(vec2 Xi, vec3 V, float roughness) { + float alpha = roughness * roughness; + + // Section 3.2: Transform view direction to hemisphere configuration + vec3 Vh = normalize(vec3(alpha * V.x, alpha * V.y, V.z)); + + // Section 4.1: Orthonormal basis + float lensq = Vh.x * Vh.x + Vh.y * Vh.y; + vec3 T1 = lensq > 0.0 ? vec3(-Vh.y, Vh.x, 0.0) / sqrt(lensq) : vec3(1.0, 0.0, 0.0); + vec3 T2 = cross(Vh, T1); + + // Section 4.2: Parameterization of projected area + float r = sqrt(Xi.x); + float phi = 2.0 * PI * Xi.y; + float t1 = r * cos(phi); + float t2 = r * sin(phi); + float s = 0.5 * (1.0 + Vh.z); + t2 = (1.0 - s) * sqrt(1.0 - t1 * t1) + s * t2; + + // Section 4.3: Reprojection onto hemisphere + vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) * Vh; + + // Section 3.4: Transform back to ellipsoid configuration + return normalize(vec3(alpha * Nh.x, alpha * Nh.y, max(0.0, Nh.z))); + } + + void main() { + vec3 N = normalize(vOutputDirection); + vec3 V = N; // Assume view direction equals normal for pre-filtering + + vec3 prefilteredColor = vec3(0.0); + float totalWeight = 0.0; + + // For very low roughness, just sample the environment directly + if (roughness < 0.001) { + gl_FragColor = vec4(bilinearCubeUV(envMap, N, mipInt), 1.0); + return; + } + + // Tangent space basis for VNDF sampling + vec3 up = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangent = normalize(cross(up, N)); + vec3 bitangent = cross(N, tangent); + + for(uint i = 0u; i < uint(GGX_SAMPLES); i++) { + vec2 Xi = hammersley(i, uint(GGX_SAMPLES)); + + // For PMREM, V = N, so in tangent space V is always (0, 0, 1) + vec3 H_tangent = importanceSampleGGX_VNDF(Xi, vec3(0.0, 0.0, 1.0), roughness); + + // Transform H back to world space + vec3 H = normalize(tangent * H_tangent.x + bitangent * H_tangent.y + N * H_tangent.z); + vec3 L = normalize(2.0 * dot(V, H) * H - V); + + float NdotL = max(dot(N, L), 0.0); + + if(NdotL > 0.0) { + // Sample environment at fixed mip level + // VNDF importance sampling handles the distribution filtering + vec3 sampleColor = bilinearCubeUV(envMap, L, mipInt); + + // Weight by NdotL for the split-sum approximation + // VNDF PDF naturally accounts for the visible microfacet distribution + prefilteredColor += sampleColor * NdotL; + totalWeight += NdotL; + } + } + + if (totalWeight > 0.0) { + prefilteredColor = prefilteredColor / totalWeight; + } + + gl_FragColor = vec4(prefilteredColor, 1.0); + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function PI(r,e,t){const n=new Float32Array(qc),s=new j(0,1,0);return new yr({name:"SphericalGaussianBlur",defines:{n:qc,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:s}},vertexShader:Qy(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function d1(){return new yr({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Qy(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function p1(){return new yr({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Qy(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:Po,depthTest:!1,depthWrite:!1})}function Qy(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function zI(r){let e=new WeakMap,t=null;function n(h){if(h&&h.isTexture){const m=h.mapping,g=m===om||m===lm,_=m===zo||m===Pu;if(g||_){let x=e.get(h);const b=x!==void 0?x.texture.pmremVersion:0;if(h.isRenderTargetTexture&&h.pmremVersion!==b)return t===null&&(t=new nb(r)),x=g?t.fromEquirectangular(h,x):t.fromCubemap(h,x),x.texture.pmremVersion=h.pmremVersion,e.set(h,x),x.texture;if(x!==void 0)return x.texture;{const M=h.image;return g&&M&&M.height>0||_&&M&&s(M)?(t===null&&(t=new nb(r)),x=g?t.fromEquirectangular(h):t.fromCubemap(h),x.texture.pmremVersion=h.pmremVersion,e.set(h,x),h.addEventListener("dispose",u),x.texture):null}}}return h}function s(h){let m=0;const g=6;for(let _=0;_e.maxTextureSize&&(B=Math.ceil(U/e.maxTextureSize),U=e.maxTextureSize);const z=new Float32Array(U*B*4*x),H=new wy(z,U,B,x);H.type=is,H.needsUpdate=!0;const W=D*4;for(let P=0;P + #include + + void main() { + gl_FragColor = texture2D( tDiffuse, vUv ); + + #ifdef LINEAR_TONE_MAPPING + gl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb ); + #elif defined( REINHARD_TONE_MAPPING ) + gl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb ); + #elif defined( CINEON_TONE_MAPPING ) + gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb ); + #elif defined( ACES_FILMIC_TONE_MAPPING ) + gl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb ); + #elif defined( AGX_TONE_MAPPING ) + gl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb ); + #elif defined( NEUTRAL_TONE_MAPPING ) + gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb ); + #elif defined( CUSTOM_TONE_MAPPING ) + gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb ); + #endif + + #ifdef SRGB_TRANSFER + gl_FragColor = sRGBTransferOETF( gl_FragColor ); + #endif + }`,depthTest:!1,depthWrite:!1}),g=new Yi(h,m),_=new Dl(-1,1,1,-1,0,1);let x=null,b=null,M=!1,A,R=null,w=[],E=!1;this.setSize=function(N,D){u.setSize(N,D),f.setSize(N,D);for(let U=0;U0&&w[0].isRenderPass===!0;const D=u.width,U=u.height;for(let B=0;B0)return r;const s=e*t;let u=m1[s];if(u===void 0&&(u=new Float32Array(s),m1[s]=u),e!==0){n.toArray(u,0);for(let f=1,h=0;f!==e;++f)h+=t,r[f].toArray(u,h)}return u}function ea(r,e){if(r.length!==e.length)return!1;for(let t=0,n=r.length;t0&&(this.seq=s.concat(u))}setValue(e,t,n,s){const u=this.map[t];u!==void 0&&u.setValue(e,n,s)}setOptional(e,t,n){const s=t[n];s!==void 0&&this.setValue(e,n,s)}static upload(e,t,n,s){for(let u=0,f=t.length;u!==f;++u){const h=t[u],m=n[h.id];m.needsUpdate!==!1&&h.setValue(e,m.value,s)}}static seqWithValue(e,t){const n=[];for(let s=0,u=e.length;s!==u;++s){const f=e[s];f.id in t&&n.push(f)}return n}}function b1(r,e,t){const n=r.createShader(e);return r.shaderSource(n,t),r.compileShader(n),n}const PO=37297;let zO=0;function BO(r,e){const t=r.split(` +`),n=[],s=Math.max(e-6,0),u=Math.min(e+6,t.length);for(let f=s;f":" "} ${h}: ${t[f]}`)}return n.join(` +`)}const S1=new en;function FO(r){Sn._getMatrix(S1,Sn.workingColorSpace,r);const e=`mat3( ${S1.elements.map(t=>t.toFixed(4))} )`;switch(Sn.getTransfer(r)){case dm:return[e,"LinearTransferOETF"];case zn:return[e,"sRGBTransferOETF"];default:return ft("WebGLProgram: Unsupported color space: ",r),[e,"LinearTransferOETF"]}}function M1(r,e,t){const n=r.getShaderParameter(e,r.COMPILE_STATUS),u=(r.getShaderInfoLog(e)||"").trim();if(n&&u==="")return"";const f=/ERROR: 0:(\d+)/.exec(u);if(f){const h=parseInt(f[1]);return t.toUpperCase()+` + +`+u+` + +`+BO(r.getShaderSource(e),h)}else return u}function kO(r,e){const t=FO(e);return[`vec4 ${r}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(` +`)}const VO={[db]:"Linear",[pb]:"Reinhard",[mb]:"Cineon",[gy]:"ACESFilmic",[vb]:"AgX",[yb]:"Neutral",[gb]:"Custom"};function HO(r,e){const t=VO[e];return t===void 0?(ft("WebGLProgram: Unsupported toneMapping:",e),"vec3 "+r+"( vec3 color ) { return LinearToneMapping( color ); }"):"vec3 "+r+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const lv=new j;function GO(){Sn.getLuminanceCoefficients(lv);const r=lv.x.toFixed(4),e=lv.y.toFixed(4),t=lv.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${r}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` +`)}function XO(r){return[r.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",r.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(Qp).join(` +`)}function WO(r){const e=[];for(const t in r){const n=r[t];n!==!1&&e.push("#define "+t+" "+n)}return e.join(` +`)}function qO(r,e){const t={},n=r.getProgramParameter(e,r.ACTIVE_ATTRIBUTES);for(let s=0;s/gm;function ab(r){return r.replace(jO,ZO)}const YO=new Map;function ZO(r,e){let t=un[e];if(t===void 0){const n=YO.get(e);if(n!==void 0)t=un[n],ft('WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return ab(t)}const QO=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function A1(r){return r.replace(QO,KO)}function KO(r,e,t,n){let s="";for(let u=parseInt(e);u0&&(w+=` +`),E=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,A].filter(Qp).join(` +`),E.length>0&&(E+=` +`)):(w=[w1(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,A,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+_:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+m:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(Qp).join(` +`),E=[w1(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,A,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+g:"",t.envMap?"#define "+_:"",t.envMap?"#define "+x:"",b?"#define CUBEUV_TEXEL_WIDTH "+b.texelWidth:"",b?"#define CUBEUV_TEXEL_HEIGHT "+b.texelHeight:"",b?"#define CUBEUV_MAX_MIP "+b.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+m:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==gr?"#define TONE_MAPPING":"",t.toneMapping!==gr?un.tonemapping_pars_fragment:"",t.toneMapping!==gr?HO("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",un.colorspace_pars_fragment,kO("linearToOutputTexel",t.outputColorSpace),GO(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(Qp).join(` +`)),f=ab(f),f=E1(f,t),f=T1(f,t),h=ab(h),h=E1(h,t),h=T1(h,t),f=A1(f),h=A1(h),t.isRawShaderMaterial!==!0&&(N=`#version 300 es +`,w=[M,"#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+w,E=["#define varying in",t.glslVersion===jx?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===jx?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`)+` +`+E);const D=N+w+f,U=N+E+h,B=b1(s,s.VERTEX_SHADER,D),z=b1(s,s.FRAGMENT_SHADER,U);s.attachShader(R,B),s.attachShader(R,z),t.index0AttributeName!==void 0?s.bindAttribLocation(R,0,t.index0AttributeName):t.morphTargets===!0&&s.bindAttribLocation(R,0,"position"),s.linkProgram(R);function H(Z){if(r.debug.checkShaderErrors){const se=s.getProgramInfoLog(R)||"",te=s.getShaderInfoLog(B)||"",fe=s.getShaderInfoLog(z)||"",pe=se.trim(),Y=te.trim(),q=fe.trim();let ne=!0,be=!0;if(s.getProgramParameter(R,s.LINK_STATUS)===!1)if(ne=!1,typeof r.debug.onShaderError=="function")r.debug.onShaderError(s,R,B,z);else{const Ne=M1(s,B,"vertex"),X=M1(s,z,"fragment");Rt("THREE.WebGLProgram: Shader Error "+s.getError()+" - VALIDATE_STATUS "+s.getProgramParameter(R,s.VALIDATE_STATUS)+` + +Material Name: `+Z.name+` +Material Type: `+Z.type+` + +Program Info Log: `+pe+` +`+Ne+` +`+X)}else pe!==""?ft("WebGLProgram: Program Info Log:",pe):(Y===""||q==="")&&(be=!1);be&&(Z.diagnostics={runnable:ne,programLog:pe,vertexShader:{log:Y,prefix:w},fragmentShader:{log:q,prefix:E}})}s.deleteShader(B),s.deleteShader(z),W=new mv(s,R),I=qO(s,R)}let W;this.getUniforms=function(){return W===void 0&&H(this),W};let I;this.getAttributes=function(){return I===void 0&&H(this),I};let P=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return P===!1&&(P=s.getProgramParameter(R,PO)),P},this.destroy=function(){n.releaseStatesOfProgram(this),s.deleteProgram(R),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=zO++,this.cacheKey=e,this.usedTimes=1,this.program=R,this.vertexShader=B,this.fragmentShader=z,this}let lP=0;class uP{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,s=this._getShaderStage(t),u=this._getShaderStage(n),f=this._getShaderCacheForMaterial(e);return f.has(s)===!1&&(f.add(s),s.usedTimes++),f.has(u)===!1&&(f.add(u),u.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new cP(e),t.set(e,n)),n}}class cP{constructor(e){this.id=lP++,this.code=e,this.usedTimes=0}}function fP(r,e,t,n,s,u,f){const h=new Kh,m=new uP,g=new Set,_=[],x=new Map,b=s.logarithmicDepthBuffer;let M=s.precision;const A={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distance",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function R(I){return g.add(I),I===0?"uv":`uv${I}`}function w(I,P,Z,se,te){const fe=se.fog,pe=te.geometry,Y=I.isMeshStandardMaterial?se.environment:null,q=(I.isMeshStandardMaterial?t:e).get(I.envMap||Y),ne=q&&q.mapping===id?q.image.height:null,be=A[I.type];I.precision!==null&&(M=s.getMaxPrecision(I.precision),M!==I.precision&&ft("WebGLProgram.getParameters:",I.precision,"not supported, using",M,"instead."));const Ne=pe.morphAttributes.position||pe.morphAttributes.normal||pe.morphAttributes.color,X=Ne!==void 0?Ne.length:0;let oe=0;pe.morphAttributes.position!==void 0&&(oe=1),pe.morphAttributes.normal!==void 0&&(oe=2),pe.morphAttributes.color!==void 0&&(oe=3);let Ae,Fe,lt,de;if(be){const nn=qr[be];Ae=nn.vertexShader,Fe=nn.fragmentShader}else Ae=I.vertexShader,Fe=I.fragmentShader,m.update(I),lt=m.getVertexShaderID(I),de=m.getFragmentShaderID(I);const Re=r.getRenderTarget(),tt=r.state.buffers.depth.getReversed(),st=te.isInstancedMesh===!0,ht=te.isBatchedMesh===!0,jt=!!I.map,tn=!!I.matcap,Nt=!!q,Le=!!I.aoMap,He=!!I.lightMap,Oe=!!I.bumpMap,nt=!!I.normalMap,Q=!!I.displacementMap,Et=!!I.emissiveMap,ot=!!I.metalnessMap,Tt=!!I.roughnessMap,Qe=I.anisotropy>0,G=I.clearcoat>0,O=I.dispersion>0,ae=I.iridescence>0,Te=I.sheen>0,Ie=I.transmission>0,Ee=Qe&&!!I.anisotropyMap,dt=G&&!!I.clearcoatMap,Ke=G&&!!I.clearcoatNormalMap,vt=G&&!!I.clearcoatRoughnessMap,Dt=ae&&!!I.iridescenceMap,Ve=ae&&!!I.iridescenceThicknessMap,Ze=Te&&!!I.sheenColorMap,ct=Te&&!!I.sheenRoughnessMap,K=!!I.specularMap,me=!!I.specularColorMap,et=!!I.specularIntensityMap,J=Ie&&!!I.transmissionMap,je=Ie&&!!I.thicknessMap,Ge=!!I.gradientMap,at=!!I.alphaMap,Xe=I.alphaTest>0,Ue=!!I.alphaHash,Ye=!!I.extensions;let Ct=gr;I.toneMapped&&(Re===null||Re.isXRRenderTarget===!0)&&(Ct=r.toneMapping);const Jt={shaderID:be,shaderType:I.type,shaderName:I.name,vertexShader:Ae,fragmentShader:Fe,defines:I.defines,customVertexShaderID:lt,customFragmentShaderID:de,isRawShaderMaterial:I.isRawShaderMaterial===!0,glslVersion:I.glslVersion,precision:M,batching:ht,batchingColor:ht&&te._colorsTexture!==null,instancing:st,instancingColor:st&&te.instanceColor!==null,instancingMorph:st&&te.morphTexture!==null,outputColorSpace:Re===null?r.outputColorSpace:Re.isXRRenderTarget===!0?Re.texture.colorSpace:zu,alphaToCoverage:!!I.alphaToCoverage,map:jt,matcap:tn,envMap:Nt,envMapMode:Nt&&q.mapping,envMapCubeUVHeight:ne,aoMap:Le,lightMap:He,bumpMap:Oe,normalMap:nt,displacementMap:Q,emissiveMap:Et,normalMapObjectSpace:nt&&I.normalMapType===DE,normalMapTangentSpace:nt&&I.normalMapType===ku,metalnessMap:ot,roughnessMap:Tt,anisotropy:Qe,anisotropyMap:Ee,clearcoat:G,clearcoatMap:dt,clearcoatNormalMap:Ke,clearcoatRoughnessMap:vt,dispersion:O,iridescence:ae,iridescenceMap:Dt,iridescenceThicknessMap:Ve,sheen:Te,sheenColorMap:Ze,sheenRoughnessMap:ct,specularMap:K,specularColorMap:me,specularIntensityMap:et,transmission:Ie,transmissionMap:J,thicknessMap:je,gradientMap:Ge,opaque:I.transparent===!1&&I.blending===Kc&&I.alphaToCoverage===!1,alphaMap:at,alphaTest:Xe,alphaHash:Ue,combine:I.combine,mapUv:jt&&R(I.map.channel),aoMapUv:Le&&R(I.aoMap.channel),lightMapUv:He&&R(I.lightMap.channel),bumpMapUv:Oe&&R(I.bumpMap.channel),normalMapUv:nt&&R(I.normalMap.channel),displacementMapUv:Q&&R(I.displacementMap.channel),emissiveMapUv:Et&&R(I.emissiveMap.channel),metalnessMapUv:ot&&R(I.metalnessMap.channel),roughnessMapUv:Tt&&R(I.roughnessMap.channel),anisotropyMapUv:Ee&&R(I.anisotropyMap.channel),clearcoatMapUv:dt&&R(I.clearcoatMap.channel),clearcoatNormalMapUv:Ke&&R(I.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:vt&&R(I.clearcoatRoughnessMap.channel),iridescenceMapUv:Dt&&R(I.iridescenceMap.channel),iridescenceThicknessMapUv:Ve&&R(I.iridescenceThicknessMap.channel),sheenColorMapUv:Ze&&R(I.sheenColorMap.channel),sheenRoughnessMapUv:ct&&R(I.sheenRoughnessMap.channel),specularMapUv:K&&R(I.specularMap.channel),specularColorMapUv:me&&R(I.specularColorMap.channel),specularIntensityMapUv:et&&R(I.specularIntensityMap.channel),transmissionMapUv:J&&R(I.transmissionMap.channel),thicknessMapUv:je&&R(I.thicknessMap.channel),alphaMapUv:at&&R(I.alphaMap.channel),vertexTangents:!!pe.attributes.tangent&&(nt||Qe),vertexColors:I.vertexColors,vertexAlphas:I.vertexColors===!0&&!!pe.attributes.color&&pe.attributes.color.itemSize===4,pointsUvs:te.isPoints===!0&&!!pe.attributes.uv&&(jt||at),fog:!!fe,useFog:I.fog===!0,fogExp2:!!fe&&fe.isFogExp2,flatShading:I.flatShading===!0&&I.wireframe===!1,sizeAttenuation:I.sizeAttenuation===!0,logarithmicDepthBuffer:b,reversedDepthBuffer:tt,skinning:te.isSkinnedMesh===!0,morphTargets:pe.morphAttributes.position!==void 0,morphNormals:pe.morphAttributes.normal!==void 0,morphColors:pe.morphAttributes.color!==void 0,morphTargetsCount:X,morphTextureStride:oe,numDirLights:P.directional.length,numPointLights:P.point.length,numSpotLights:P.spot.length,numSpotLightMaps:P.spotLightMap.length,numRectAreaLights:P.rectArea.length,numHemiLights:P.hemi.length,numDirLightShadows:P.directionalShadowMap.length,numPointLightShadows:P.pointShadowMap.length,numSpotLightShadows:P.spotShadowMap.length,numSpotLightShadowsWithMaps:P.numSpotLightShadowsWithMaps,numLightProbes:P.numLightProbes,numClippingPlanes:f.numPlanes,numClipIntersection:f.numIntersection,dithering:I.dithering,shadowMapEnabled:r.shadowMap.enabled&&Z.length>0,shadowMapType:r.shadowMap.type,toneMapping:Ct,decodeVideoTexture:jt&&I.map.isVideoTexture===!0&&Sn.getTransfer(I.map.colorSpace)===zn,decodeVideoTextureEmissive:Et&&I.emissiveMap.isVideoTexture===!0&&Sn.getTransfer(I.emissiveMap.colorSpace)===zn,premultipliedAlpha:I.premultipliedAlpha,doubleSided:I.side===Uo,flipSided:I.side===as,useDepthPacking:I.depthPacking>=0,depthPacking:I.depthPacking||0,index0AttributeName:I.index0AttributeName,extensionClipCullDistance:Ye&&I.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(Ye&&I.extensions.multiDraw===!0||ht)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:I.customProgramCacheKey()};return Jt.vertexUv1s=g.has(1),Jt.vertexUv2s=g.has(2),Jt.vertexUv3s=g.has(3),g.clear(),Jt}function E(I){const P=[];if(I.shaderID?P.push(I.shaderID):(P.push(I.customVertexShaderID),P.push(I.customFragmentShaderID)),I.defines!==void 0)for(const Z in I.defines)P.push(Z),P.push(I.defines[Z]);return I.isRawShaderMaterial===!1&&(N(P,I),D(P,I),P.push(r.outputColorSpace)),P.push(I.customProgramCacheKey),P.join()}function N(I,P){I.push(P.precision),I.push(P.outputColorSpace),I.push(P.envMapMode),I.push(P.envMapCubeUVHeight),I.push(P.mapUv),I.push(P.alphaMapUv),I.push(P.lightMapUv),I.push(P.aoMapUv),I.push(P.bumpMapUv),I.push(P.normalMapUv),I.push(P.displacementMapUv),I.push(P.emissiveMapUv),I.push(P.metalnessMapUv),I.push(P.roughnessMapUv),I.push(P.anisotropyMapUv),I.push(P.clearcoatMapUv),I.push(P.clearcoatNormalMapUv),I.push(P.clearcoatRoughnessMapUv),I.push(P.iridescenceMapUv),I.push(P.iridescenceThicknessMapUv),I.push(P.sheenColorMapUv),I.push(P.sheenRoughnessMapUv),I.push(P.specularMapUv),I.push(P.specularColorMapUv),I.push(P.specularIntensityMapUv),I.push(P.transmissionMapUv),I.push(P.thicknessMapUv),I.push(P.combine),I.push(P.fogExp2),I.push(P.sizeAttenuation),I.push(P.morphTargetsCount),I.push(P.morphAttributeCount),I.push(P.numDirLights),I.push(P.numPointLights),I.push(P.numSpotLights),I.push(P.numSpotLightMaps),I.push(P.numHemiLights),I.push(P.numRectAreaLights),I.push(P.numDirLightShadows),I.push(P.numPointLightShadows),I.push(P.numSpotLightShadows),I.push(P.numSpotLightShadowsWithMaps),I.push(P.numLightProbes),I.push(P.shadowMapType),I.push(P.toneMapping),I.push(P.numClippingPlanes),I.push(P.numClipIntersection),I.push(P.depthPacking)}function D(I,P){h.disableAll(),P.instancing&&h.enable(0),P.instancingColor&&h.enable(1),P.instancingMorph&&h.enable(2),P.matcap&&h.enable(3),P.envMap&&h.enable(4),P.normalMapObjectSpace&&h.enable(5),P.normalMapTangentSpace&&h.enable(6),P.clearcoat&&h.enable(7),P.iridescence&&h.enable(8),P.alphaTest&&h.enable(9),P.vertexColors&&h.enable(10),P.vertexAlphas&&h.enable(11),P.vertexUv1s&&h.enable(12),P.vertexUv2s&&h.enable(13),P.vertexUv3s&&h.enable(14),P.vertexTangents&&h.enable(15),P.anisotropy&&h.enable(16),P.alphaHash&&h.enable(17),P.batching&&h.enable(18),P.dispersion&&h.enable(19),P.batchingColor&&h.enable(20),P.gradientMap&&h.enable(21),I.push(h.mask),h.disableAll(),P.fog&&h.enable(0),P.useFog&&h.enable(1),P.flatShading&&h.enable(2),P.logarithmicDepthBuffer&&h.enable(3),P.reversedDepthBuffer&&h.enable(4),P.skinning&&h.enable(5),P.morphTargets&&h.enable(6),P.morphNormals&&h.enable(7),P.morphColors&&h.enable(8),P.premultipliedAlpha&&h.enable(9),P.shadowMapEnabled&&h.enable(10),P.doubleSided&&h.enable(11),P.flipSided&&h.enable(12),P.useDepthPacking&&h.enable(13),P.dithering&&h.enable(14),P.transmission&&h.enable(15),P.sheen&&h.enable(16),P.opaque&&h.enable(17),P.pointsUvs&&h.enable(18),P.decodeVideoTexture&&h.enable(19),P.decodeVideoTextureEmissive&&h.enable(20),P.alphaToCoverage&&h.enable(21),I.push(h.mask)}function U(I){const P=A[I.type];let Z;if(P){const se=qr[P];Z=XE.clone(se.uniforms)}else Z=I.uniforms;return Z}function B(I,P){let Z=x.get(P);return Z!==void 0?++Z.usedTimes:(Z=new oP(r,P,I,u),_.push(Z),x.set(P,Z)),Z}function z(I){if(--I.usedTimes===0){const P=_.indexOf(I);_[P]=_[_.length-1],_.pop(),x.delete(I.cacheKey),I.destroy()}}function H(I){m.remove(I)}function W(){m.dispose()}return{getParameters:w,getProgramCacheKey:E,getUniforms:U,acquireProgram:B,releaseProgram:z,releaseShaderCache:H,programs:_,dispose:W}}function hP(){let r=new WeakMap;function e(f){return r.has(f)}function t(f){let h=r.get(f);return h===void 0&&(h={},r.set(f,h)),h}function n(f){r.delete(f)}function s(f,h,m){r.get(f)[h]=m}function u(){r=new WeakMap}return{has:e,get:t,remove:n,update:s,dispose:u}}function dP(r,e){return r.groupOrder!==e.groupOrder?r.groupOrder-e.groupOrder:r.renderOrder!==e.renderOrder?r.renderOrder-e.renderOrder:r.material.id!==e.material.id?r.material.id-e.material.id:r.z!==e.z?r.z-e.z:r.id-e.id}function C1(r,e){return r.groupOrder!==e.groupOrder?r.groupOrder-e.groupOrder:r.renderOrder!==e.renderOrder?r.renderOrder-e.renderOrder:r.z!==e.z?e.z-r.z:r.id-e.id}function R1(){const r=[];let e=0;const t=[],n=[],s=[];function u(){e=0,t.length=0,n.length=0,s.length=0}function f(x,b,M,A,R,w){let E=r[e];return E===void 0?(E={id:x.id,object:x,geometry:b,material:M,groupOrder:A,renderOrder:x.renderOrder,z:R,group:w},r[e]=E):(E.id=x.id,E.object=x,E.geometry=b,E.material=M,E.groupOrder=A,E.renderOrder=x.renderOrder,E.z=R,E.group=w),e++,E}function h(x,b,M,A,R,w){const E=f(x,b,M,A,R,w);M.transmission>0?n.push(E):M.transparent===!0?s.push(E):t.push(E)}function m(x,b,M,A,R,w){const E=f(x,b,M,A,R,w);M.transmission>0?n.unshift(E):M.transparent===!0?s.unshift(E):t.unshift(E)}function g(x,b){t.length>1&&t.sort(x||dP),n.length>1&&n.sort(b||C1),s.length>1&&s.sort(b||C1)}function _(){for(let x=e,b=r.length;x=u.length?(f=new R1,u.push(f)):f=u[s],f}function t(){r=new WeakMap}return{get:e,dispose:t}}function mP(){const r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new j,color:new yt};break;case"SpotLight":t={position:new j,direction:new j,color:new yt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new j,color:new yt,distance:0,decay:0};break;case"HemisphereLight":t={direction:new j,skyColor:new yt,groundColor:new yt};break;case"RectAreaLight":t={color:new yt,position:new j,halfWidth:new j,halfHeight:new j};break}return r[e.id]=t,t}}}function gP(){const r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ze};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ze};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ze,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[e.id]=t,t}}}let vP=0;function yP(r,e){return(e.castShadow?2:0)-(r.castShadow?2:0)+(e.map?1:0)-(r.map?1:0)}function _P(r){const e=new mP,t=gP(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let g=0;g<9;g++)n.probe.push(new j);const s=new j,u=new Xt,f=new Xt;function h(g){let _=0,x=0,b=0;for(let I=0;I<9;I++)n.probe[I].set(0,0,0);let M=0,A=0,R=0,w=0,E=0,N=0,D=0,U=0,B=0,z=0,H=0;g.sort(yP);for(let I=0,P=g.length;I0&&(r.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=pt.LTC_FLOAT_1,n.rectAreaLTC2=pt.LTC_FLOAT_2):(n.rectAreaLTC1=pt.LTC_HALF_1,n.rectAreaLTC2=pt.LTC_HALF_2)),n.ambient[0]=_,n.ambient[1]=x,n.ambient[2]=b;const W=n.hash;(W.directionalLength!==M||W.pointLength!==A||W.spotLength!==R||W.rectAreaLength!==w||W.hemiLength!==E||W.numDirectionalShadows!==N||W.numPointShadows!==D||W.numSpotShadows!==U||W.numSpotMaps!==B||W.numLightProbes!==H)&&(n.directional.length=M,n.spot.length=R,n.rectArea.length=w,n.point.length=A,n.hemi.length=E,n.directionalShadow.length=N,n.directionalShadowMap.length=N,n.pointShadow.length=D,n.pointShadowMap.length=D,n.spotShadow.length=U,n.spotShadowMap.length=U,n.directionalShadowMatrix.length=N,n.pointShadowMatrix.length=D,n.spotLightMatrix.length=U+B-z,n.spotLightMap.length=B,n.numSpotLightShadowsWithMaps=z,n.numLightProbes=H,W.directionalLength=M,W.pointLength=A,W.spotLength=R,W.rectAreaLength=w,W.hemiLength=E,W.numDirectionalShadows=N,W.numPointShadows=D,W.numSpotShadows=U,W.numSpotMaps=B,W.numLightProbes=H,n.version=vP++)}function m(g,_){let x=0,b=0,M=0,A=0,R=0;const w=_.matrixWorldInverse;for(let E=0,N=g.length;E=f.length?(h=new N1(r),f.push(h)):h=f[u],h}function n(){e=new WeakMap}return{get:t,dispose:n}}const bP=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,SP=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ).rg; + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ).r; + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( max( 0.0, squared_mean - mean * mean ) ); + gl_FragColor = vec4( mean, std_dev, 0.0, 1.0 ); +}`,MP=[new j(1,0,0),new j(-1,0,0),new j(0,1,0),new j(0,-1,0),new j(0,0,1),new j(0,0,-1)],EP=[new j(0,-1,0),new j(0,-1,0),new j(0,0,1),new j(0,0,-1),new j(0,-1,0),new j(0,-1,0)],D1=new Xt,qp=new j,Cx=new j;function TP(r,e,t){let n=new ad;const s=new ze,u=new ze,f=new jn,h=new Wb,m=new qb,g={},_=t.maxTextureSize,x={[Ll]:as,[as]:Ll,[Uo]:Uo},b=new yr({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new ze},radius:{value:4}},vertexShader:bP,fragmentShader:SP}),M=b.clone();M.defines.HORIZONTAL_PASS=1;const A=new Kt;A.setAttribute("position",new Xn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const R=new Yi(A,b),w=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Xh;let E=this.type;this.render=function(z,H,W){if(w.enabled===!1||w.autoUpdate===!1&&w.needsUpdate===!1||z.length===0)return;z.type===Kp&&(ft("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),z.type=Xh);const I=r.getRenderTarget(),P=r.getActiveCubeFace(),Z=r.getActiveMipmapLevel(),se=r.state;se.setBlending(Po),se.buffers.depth.getReversed()===!0?se.buffers.color.setClear(0,0,0,0):se.buffers.color.setClear(1,1,1,1),se.buffers.depth.setTest(!0),se.setScissorTest(!1);const te=E!==this.type;te&&H.traverse(function(fe){fe.material&&(Array.isArray(fe.material)?fe.material.forEach(pe=>pe.needsUpdate=!0):fe.material.needsUpdate=!0)});for(let fe=0,pe=z.length;fe_||s.y>_)&&(s.x>_&&(u.x=Math.floor(_/ne.x),s.x=u.x*ne.x,q.mapSize.x=u.x),s.y>_&&(u.y=Math.floor(_/ne.y),s.y=u.y*ne.y,q.mapSize.y=u.y)),q.map===null||te===!0){if(q.map!==null&&(q.map.depthTexture!==null&&(q.map.depthTexture.dispose(),q.map.depthTexture=null),q.map.dispose()),this.type===jc){if(Y.isPointLight){ft("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}q.map=new Hs(s.x,s.y,{format:tf,type:Bo,minFilter:oi,magFilter:oi,generateMipmaps:!1}),q.map.texture.name=Y.name+".shadowMap",q.map.depthTexture=new ed(s.x,s.y,is),q.map.depthTexture.name=Y.name+".shadowMapDepth",q.map.depthTexture.format=Fo,q.map.depthTexture.compareFunction=null,q.map.depthTexture.minFilter=Bi,q.map.depthTexture.magFilter=Bi}else{Y.isPointLight?(q.map=new Db(s.x),q.map.depthTexture=new tT(s.x,vr)):(q.map=new Hs(s.x,s.y),q.map.depthTexture=new ed(s.x,s.y,vr)),q.map.depthTexture.name=Y.name+".shadowMap",q.map.depthTexture.format=Fo;const Ne=r.state.buffers.depth.getReversed();this.type===Xh?(q.map.depthTexture.compareFunction=Ne?Ay:Ty,q.map.depthTexture.minFilter=oi,q.map.depthTexture.magFilter=oi):(q.map.depthTexture.compareFunction=null,q.map.depthTexture.minFilter=Bi,q.map.depthTexture.magFilter=Bi)}q.camera.updateProjectionMatrix()}const be=q.map.isWebGLCubeRenderTarget?6:1;for(let Ne=0;Ne0||H.map&&H.alphaTest>0||H.alphaToCoverage===!0){const se=P.uuid,te=H.uuid;let fe=g[se];fe===void 0&&(fe={},g[se]=fe);let pe=fe[te];pe===void 0&&(pe=P.clone(),fe[te]=pe,H.addEventListener("dispose",B)),P=pe}if(P.visible=H.visible,P.wireframe=H.wireframe,I===jc?P.side=H.shadowSide!==null?H.shadowSide:H.side:P.side=H.shadowSide!==null?H.shadowSide:x[H.side],P.alphaMap=H.alphaMap,P.alphaTest=H.alphaToCoverage===!0?.5:H.alphaTest,P.map=H.map,P.clipShadows=H.clipShadows,P.clippingPlanes=H.clippingPlanes,P.clipIntersection=H.clipIntersection,P.displacementMap=H.displacementMap,P.displacementScale=H.displacementScale,P.displacementBias=H.displacementBias,P.wireframeLinewidth=H.wireframeLinewidth,P.linewidth=H.linewidth,W.isPointLight===!0&&P.isMeshDistanceMaterial===!0){const se=r.properties.get(P);se.light=W}return P}function U(z,H,W,I,P){if(z.visible===!1)return;if(z.layers.test(H.layers)&&(z.isMesh||z.isLine||z.isPoints)&&(z.castShadow||z.receiveShadow&&P===jc)&&(!z.frustumCulled||n.intersectsObject(z))){z.modelViewMatrix.multiplyMatrices(W.matrixWorldInverse,z.matrixWorld);const te=e.update(z),fe=z.material;if(Array.isArray(fe)){const pe=te.groups;for(let Y=0,q=pe.length;Y=1):ne.indexOf("OpenGL ES")!==-1&&(q=parseFloat(/^OpenGL ES (\d)/.exec(ne)[1]),Y=q>=2);let be=null,Ne={};const X=r.getParameter(r.SCISSOR_BOX),oe=r.getParameter(r.VIEWPORT),Ae=new jn().fromArray(X),Fe=new jn().fromArray(oe);function lt(J,je,Ge,at){const Xe=new Uint8Array(4),Ue=r.createTexture();r.bindTexture(J,Ue),r.texParameteri(J,r.TEXTURE_MIN_FILTER,r.NEAREST),r.texParameteri(J,r.TEXTURE_MAG_FILTER,r.NEAREST);for(let Ye=0;Ye"u"?!1:/OculusBrowser/g.test(navigator.userAgent),g=new ze,_=new WeakMap;let x;const b=new WeakMap;let M=!1;try{M=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function A(G,O){return M?new OffscreenCanvas(G,O):mm("canvas")}function R(G,O,ae){let Te=1;const Ie=Qe(G);if((Ie.width>ae||Ie.height>ae)&&(Te=ae/Math.max(Ie.width,Ie.height)),Te<1)if(typeof HTMLImageElement<"u"&&G instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&G instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&G instanceof ImageBitmap||typeof VideoFrame<"u"&&G instanceof VideoFrame){const Ee=Math.floor(Te*Ie.width),dt=Math.floor(Te*Ie.height);x===void 0&&(x=A(Ee,dt));const Ke=O?A(Ee,dt):x;return Ke.width=Ee,Ke.height=dt,Ke.getContext("2d").drawImage(G,0,0,Ee,dt),ft("WebGLRenderer: Texture has been resized from ("+Ie.width+"x"+Ie.height+") to ("+Ee+"x"+dt+")."),Ke}else return"data"in G&&ft("WebGLRenderer: Image in DataTexture is too big ("+Ie.width+"x"+Ie.height+")."),G;return G}function w(G){return G.generateMipmaps}function E(G){r.generateMipmap(G)}function N(G){return G.isWebGLCubeRenderTarget?r.TEXTURE_CUBE_MAP:G.isWebGL3DRenderTarget?r.TEXTURE_3D:G.isWebGLArrayRenderTarget||G.isCompressedArrayTexture?r.TEXTURE_2D_ARRAY:r.TEXTURE_2D}function D(G,O,ae,Te,Ie=!1){if(G!==null){if(r[G]!==void 0)return r[G];ft("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+G+"'")}let Ee=O;if(O===r.RED&&(ae===r.FLOAT&&(Ee=r.R32F),ae===r.HALF_FLOAT&&(Ee=r.R16F),ae===r.UNSIGNED_BYTE&&(Ee=r.R8)),O===r.RED_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.R8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.R16UI),ae===r.UNSIGNED_INT&&(Ee=r.R32UI),ae===r.BYTE&&(Ee=r.R8I),ae===r.SHORT&&(Ee=r.R16I),ae===r.INT&&(Ee=r.R32I)),O===r.RG&&(ae===r.FLOAT&&(Ee=r.RG32F),ae===r.HALF_FLOAT&&(Ee=r.RG16F),ae===r.UNSIGNED_BYTE&&(Ee=r.RG8)),O===r.RG_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.RG8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.RG16UI),ae===r.UNSIGNED_INT&&(Ee=r.RG32UI),ae===r.BYTE&&(Ee=r.RG8I),ae===r.SHORT&&(Ee=r.RG16I),ae===r.INT&&(Ee=r.RG32I)),O===r.RGB_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.RGB8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.RGB16UI),ae===r.UNSIGNED_INT&&(Ee=r.RGB32UI),ae===r.BYTE&&(Ee=r.RGB8I),ae===r.SHORT&&(Ee=r.RGB16I),ae===r.INT&&(Ee=r.RGB32I)),O===r.RGBA_INTEGER&&(ae===r.UNSIGNED_BYTE&&(Ee=r.RGBA8UI),ae===r.UNSIGNED_SHORT&&(Ee=r.RGBA16UI),ae===r.UNSIGNED_INT&&(Ee=r.RGBA32UI),ae===r.BYTE&&(Ee=r.RGBA8I),ae===r.SHORT&&(Ee=r.RGBA16I),ae===r.INT&&(Ee=r.RGBA32I)),O===r.RGB&&(ae===r.UNSIGNED_INT_5_9_9_9_REV&&(Ee=r.RGB9_E5),ae===r.UNSIGNED_INT_10F_11F_11F_REV&&(Ee=r.R11F_G11F_B10F)),O===r.RGBA){const dt=Ie?dm:Sn.getTransfer(Te);ae===r.FLOAT&&(Ee=r.RGBA32F),ae===r.HALF_FLOAT&&(Ee=r.RGBA16F),ae===r.UNSIGNED_BYTE&&(Ee=dt===zn?r.SRGB8_ALPHA8:r.RGBA8),ae===r.UNSIGNED_SHORT_4_4_4_4&&(Ee=r.RGBA4),ae===r.UNSIGNED_SHORT_5_5_5_1&&(Ee=r.RGB5_A1)}return(Ee===r.R16F||Ee===r.R32F||Ee===r.RG16F||Ee===r.RG32F||Ee===r.RGBA16F||Ee===r.RGBA32F)&&e.get("EXT_color_buffer_float"),Ee}function U(G,O){let ae;return G?O===null||O===vr||O===jh?ae=r.DEPTH24_STENCIL8:O===is?ae=r.DEPTH32F_STENCIL8:O===qh&&(ae=r.DEPTH24_STENCIL8,ft("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):O===null||O===vr||O===jh?ae=r.DEPTH_COMPONENT24:O===is?ae=r.DEPTH_COMPONENT32F:O===qh&&(ae=r.DEPTH_COMPONENT16),ae}function B(G,O){return w(G)===!0||G.isFramebufferTexture&&G.minFilter!==Bi&&G.minFilter!==oi?Math.log2(Math.max(O.width,O.height))+1:G.mipmaps!==void 0&&G.mipmaps.length>0?G.mipmaps.length:G.isCompressedTexture&&Array.isArray(G.image)?O.mipmaps.length:1}function z(G){const O=G.target;O.removeEventListener("dispose",z),W(O),O.isVideoTexture&&_.delete(O)}function H(G){const O=G.target;O.removeEventListener("dispose",H),P(O)}function W(G){const O=n.get(G);if(O.__webglInit===void 0)return;const ae=G.source,Te=b.get(ae);if(Te){const Ie=Te[O.__cacheKey];Ie.usedTimes--,Ie.usedTimes===0&&I(G),Object.keys(Te).length===0&&b.delete(ae)}n.remove(G)}function I(G){const O=n.get(G);r.deleteTexture(O.__webglTexture);const ae=G.source,Te=b.get(ae);delete Te[O.__cacheKey],f.memory.textures--}function P(G){const O=n.get(G);if(G.depthTexture&&(G.depthTexture.dispose(),n.remove(G.depthTexture)),G.isWebGLCubeRenderTarget)for(let Te=0;Te<6;Te++){if(Array.isArray(O.__webglFramebuffer[Te]))for(let Ie=0;Ie=s.maxTextures&&ft("WebGLTextures: Trying to use "+G+" texture units while this GPU supports only "+s.maxTextures),Z+=1,G}function fe(G){const O=[];return O.push(G.wrapS),O.push(G.wrapT),O.push(G.wrapR||0),O.push(G.magFilter),O.push(G.minFilter),O.push(G.anisotropy),O.push(G.internalFormat),O.push(G.format),O.push(G.type),O.push(G.generateMipmaps),O.push(G.premultiplyAlpha),O.push(G.flipY),O.push(G.unpackAlignment),O.push(G.colorSpace),O.join()}function pe(G,O){const ae=n.get(G);if(G.isVideoTexture&&ot(G),G.isRenderTargetTexture===!1&&G.isExternalTexture!==!0&&G.version>0&&ae.__version!==G.version){const Te=G.image;if(Te===null)ft("WebGLRenderer: Texture marked for update but no image data found.");else if(Te.complete===!1)ft("WebGLRenderer: Texture marked for update but image is incomplete");else{de(ae,G,O);return}}else G.isExternalTexture&&(ae.__webglTexture=G.sourceTexture?G.sourceTexture:null);t.bindTexture(r.TEXTURE_2D,ae.__webglTexture,r.TEXTURE0+O)}function Y(G,O){const ae=n.get(G);if(G.isRenderTargetTexture===!1&&G.version>0&&ae.__version!==G.version){de(ae,G,O);return}else G.isExternalTexture&&(ae.__webglTexture=G.sourceTexture?G.sourceTexture:null);t.bindTexture(r.TEXTURE_2D_ARRAY,ae.__webglTexture,r.TEXTURE0+O)}function q(G,O){const ae=n.get(G);if(G.isRenderTargetTexture===!1&&G.version>0&&ae.__version!==G.version){de(ae,G,O);return}t.bindTexture(r.TEXTURE_3D,ae.__webglTexture,r.TEXTURE0+O)}function ne(G,O){const ae=n.get(G);if(G.isCubeDepthTexture!==!0&&G.version>0&&ae.__version!==G.version){Re(ae,G,O);return}t.bindTexture(r.TEXTURE_CUBE_MAP,ae.__webglTexture,r.TEXTURE0+O)}const be={[um]:r.REPEAT,[Rs]:r.CLAMP_TO_EDGE,[cm]:r.MIRRORED_REPEAT},Ne={[Bi]:r.NEAREST,[_b]:r.NEAREST_MIPMAP_NEAREST,[Vh]:r.NEAREST_MIPMAP_LINEAR,[oi]:r.LINEAR,[Jp]:r.LINEAR_MIPMAP_NEAREST,[Io]:r.LINEAR_MIPMAP_LINEAR},X={[LE]:r.NEVER,[zE]:r.ALWAYS,[UE]:r.LESS,[Ty]:r.LEQUAL,[IE]:r.EQUAL,[Ay]:r.GEQUAL,[OE]:r.GREATER,[PE]:r.NOTEQUAL};function oe(G,O){if(O.type===is&&e.has("OES_texture_float_linear")===!1&&(O.magFilter===oi||O.magFilter===Jp||O.magFilter===Vh||O.magFilter===Io||O.minFilter===oi||O.minFilter===Jp||O.minFilter===Vh||O.minFilter===Io)&&ft("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),r.texParameteri(G,r.TEXTURE_WRAP_S,be[O.wrapS]),r.texParameteri(G,r.TEXTURE_WRAP_T,be[O.wrapT]),(G===r.TEXTURE_3D||G===r.TEXTURE_2D_ARRAY)&&r.texParameteri(G,r.TEXTURE_WRAP_R,be[O.wrapR]),r.texParameteri(G,r.TEXTURE_MAG_FILTER,Ne[O.magFilter]),r.texParameteri(G,r.TEXTURE_MIN_FILTER,Ne[O.minFilter]),O.compareFunction&&(r.texParameteri(G,r.TEXTURE_COMPARE_MODE,r.COMPARE_REF_TO_TEXTURE),r.texParameteri(G,r.TEXTURE_COMPARE_FUNC,X[O.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(O.magFilter===Bi||O.minFilter!==Vh&&O.minFilter!==Io||O.type===is&&e.has("OES_texture_float_linear")===!1)return;if(O.anisotropy>1||n.get(O).__currentAnisotropy){const ae=e.get("EXT_texture_filter_anisotropic");r.texParameterf(G,ae.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(O.anisotropy,s.getMaxAnisotropy())),n.get(O).__currentAnisotropy=O.anisotropy}}}function Ae(G,O){let ae=!1;G.__webglInit===void 0&&(G.__webglInit=!0,O.addEventListener("dispose",z));const Te=O.source;let Ie=b.get(Te);Ie===void 0&&(Ie={},b.set(Te,Ie));const Ee=fe(O);if(Ee!==G.__cacheKey){Ie[Ee]===void 0&&(Ie[Ee]={texture:r.createTexture(),usedTimes:0},f.memory.textures++,ae=!0),Ie[Ee].usedTimes++;const dt=Ie[G.__cacheKey];dt!==void 0&&(Ie[G.__cacheKey].usedTimes--,dt.usedTimes===0&&I(O)),G.__cacheKey=Ee,G.__webglTexture=Ie[Ee].texture}return ae}function Fe(G,O,ae){return Math.floor(Math.floor(G/ae)/O)}function lt(G,O,ae,Te){const Ee=G.updateRanges;if(Ee.length===0)t.texSubImage2D(r.TEXTURE_2D,0,0,0,O.width,O.height,ae,Te,O.data);else{Ee.sort((Ve,Ze)=>Ve.start-Ze.start);let dt=0;for(let Ve=1;Ve0){J&&je&&t.texStorage2D(r.TEXTURE_2D,at,K,et[0].width,et[0].height);for(let Xe=0,Ue=et.length;Xe0){const Ye=tb(me.width,me.height,O.format,O.type);for(const Ct of O.layerUpdates){const Jt=me.data.subarray(Ct*Ye/me.data.BYTES_PER_ELEMENT,(Ct+1)*Ye/me.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,Xe,0,0,Ct,me.width,me.height,1,Ze,Jt)}O.clearLayerUpdates()}else t.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,Xe,0,0,0,me.width,me.height,Ve.depth,Ze,me.data)}else t.compressedTexImage3D(r.TEXTURE_2D_ARRAY,Xe,K,me.width,me.height,Ve.depth,0,me.data,0,0);else ft("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else J?Ge&&t.texSubImage3D(r.TEXTURE_2D_ARRAY,Xe,0,0,0,me.width,me.height,Ve.depth,Ze,ct,me.data):t.texImage3D(r.TEXTURE_2D_ARRAY,Xe,K,me.width,me.height,Ve.depth,0,Ze,ct,me.data)}else{J&&je&&t.texStorage2D(r.TEXTURE_2D,at,K,et[0].width,et[0].height);for(let Xe=0,Ue=et.length;Xe0){const Xe=tb(Ve.width,Ve.height,O.format,O.type);for(const Ue of O.layerUpdates){const Ye=Ve.data.subarray(Ue*Xe/Ve.data.BYTES_PER_ELEMENT,(Ue+1)*Xe/Ve.data.BYTES_PER_ELEMENT);t.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,Ue,Ve.width,Ve.height,1,Ze,ct,Ye)}O.clearLayerUpdates()}else t.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,0,Ve.width,Ve.height,Ve.depth,Ze,ct,Ve.data)}else t.texImage3D(r.TEXTURE_2D_ARRAY,0,K,Ve.width,Ve.height,Ve.depth,0,Ze,ct,Ve.data);else if(O.isData3DTexture)J?(je&&t.texStorage3D(r.TEXTURE_3D,at,K,Ve.width,Ve.height,Ve.depth),Ge&&t.texSubImage3D(r.TEXTURE_3D,0,0,0,0,Ve.width,Ve.height,Ve.depth,Ze,ct,Ve.data)):t.texImage3D(r.TEXTURE_3D,0,K,Ve.width,Ve.height,Ve.depth,0,Ze,ct,Ve.data);else if(O.isFramebufferTexture){if(je)if(J)t.texStorage2D(r.TEXTURE_2D,at,K,Ve.width,Ve.height);else{let Xe=Ve.width,Ue=Ve.height;for(let Ye=0;Ye>=1,Ue>>=1}}else if(et.length>0){if(J&&je){const Xe=Qe(et[0]);t.texStorage2D(r.TEXTURE_2D,at,K,Xe.width,Xe.height)}for(let Xe=0,Ue=et.length;Xe0&&at++;const Ue=Qe(Ze[0]);t.texStorage2D(r.TEXTURE_CUBE_MAP,at,et,Ue.width,Ue.height)}for(let Ue=0;Ue<6;Ue++)if(Ve){J?Ge&&t.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+Ue,0,0,0,Ze[Ue].width,Ze[Ue].height,K,me,Ze[Ue].data):t.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+Ue,0,et,Ze[Ue].width,Ze[Ue].height,0,K,me,Ze[Ue].data);for(let Ye=0;Ye>Ee),ct=Math.max(1,O.height>>Ee);Ie===r.TEXTURE_3D||Ie===r.TEXTURE_2D_ARRAY?t.texImage3D(Ie,Ee,vt,Ze,ct,O.depth,0,dt,Ke,null):t.texImage2D(Ie,Ee,vt,Ze,ct,0,dt,Ke,null)}t.bindFramebuffer(r.FRAMEBUFFER,G),Et(O)?h.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,Te,Ie,Ve.__webglTexture,0,Q(O)):(Ie===r.TEXTURE_2D||Ie>=r.TEXTURE_CUBE_MAP_POSITIVE_X&&Ie<=r.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&r.framebufferTexture2D(r.FRAMEBUFFER,Te,Ie,Ve.__webglTexture,Ee),t.bindFramebuffer(r.FRAMEBUFFER,null)}function st(G,O,ae){if(r.bindRenderbuffer(r.RENDERBUFFER,G),O.depthBuffer){const Te=O.depthTexture,Ie=Te&&Te.isDepthTexture?Te.type:null,Ee=U(O.stencilBuffer,Ie),dt=O.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT;Et(O)?h.renderbufferStorageMultisampleEXT(r.RENDERBUFFER,Q(O),Ee,O.width,O.height):ae?r.renderbufferStorageMultisample(r.RENDERBUFFER,Q(O),Ee,O.width,O.height):r.renderbufferStorage(r.RENDERBUFFER,Ee,O.width,O.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,dt,r.RENDERBUFFER,G)}else{const Te=O.textures;for(let Ie=0;Ie{delete O.__boundDepthTexture,delete O.__depthDisposeCallback,Te.removeEventListener("dispose",Ie)};Te.addEventListener("dispose",Ie),O.__depthDisposeCallback=Ie}O.__boundDepthTexture=Te}if(G.depthTexture&&!O.__autoAllocateDepthBuffer)if(ae)for(let Te=0;Te<6;Te++)ht(O.__webglFramebuffer[Te],G,Te);else{const Te=G.texture.mipmaps;Te&&Te.length>0?ht(O.__webglFramebuffer[0],G,0):ht(O.__webglFramebuffer,G,0)}else if(ae){O.__webglDepthbuffer=[];for(let Te=0;Te<6;Te++)if(t.bindFramebuffer(r.FRAMEBUFFER,O.__webglFramebuffer[Te]),O.__webglDepthbuffer[Te]===void 0)O.__webglDepthbuffer[Te]=r.createRenderbuffer(),st(O.__webglDepthbuffer[Te],G,!1);else{const Ie=G.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,Ee=O.__webglDepthbuffer[Te];r.bindRenderbuffer(r.RENDERBUFFER,Ee),r.framebufferRenderbuffer(r.FRAMEBUFFER,Ie,r.RENDERBUFFER,Ee)}}else{const Te=G.texture.mipmaps;if(Te&&Te.length>0?t.bindFramebuffer(r.FRAMEBUFFER,O.__webglFramebuffer[0]):t.bindFramebuffer(r.FRAMEBUFFER,O.__webglFramebuffer),O.__webglDepthbuffer===void 0)O.__webglDepthbuffer=r.createRenderbuffer(),st(O.__webglDepthbuffer,G,!1);else{const Ie=G.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,Ee=O.__webglDepthbuffer;r.bindRenderbuffer(r.RENDERBUFFER,Ee),r.framebufferRenderbuffer(r.FRAMEBUFFER,Ie,r.RENDERBUFFER,Ee)}}t.bindFramebuffer(r.FRAMEBUFFER,null)}function tn(G,O,ae){const Te=n.get(G);O!==void 0&&tt(Te.__webglFramebuffer,G,G.texture,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,0),ae!==void 0&&jt(G)}function Nt(G){const O=G.texture,ae=n.get(G),Te=n.get(O);G.addEventListener("dispose",H);const Ie=G.textures,Ee=G.isWebGLCubeRenderTarget===!0,dt=Ie.length>1;if(dt||(Te.__webglTexture===void 0&&(Te.__webglTexture=r.createTexture()),Te.__version=O.version,f.memory.textures++),Ee){ae.__webglFramebuffer=[];for(let Ke=0;Ke<6;Ke++)if(O.mipmaps&&O.mipmaps.length>0){ae.__webglFramebuffer[Ke]=[];for(let vt=0;vt0){ae.__webglFramebuffer=[];for(let Ke=0;Ke0&&Et(G)===!1){ae.__webglMultisampledFramebuffer=r.createFramebuffer(),ae.__webglColorRenderbuffer=[],t.bindFramebuffer(r.FRAMEBUFFER,ae.__webglMultisampledFramebuffer);for(let Ke=0;Ke0)for(let vt=0;vt0)for(let vt=0;vt0){if(Et(G)===!1){const O=G.textures,ae=G.width,Te=G.height;let Ie=r.COLOR_BUFFER_BIT;const Ee=G.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,dt=n.get(G),Ke=O.length>1;if(Ke)for(let Dt=0;Dt0?t.bindFramebuffer(r.DRAW_FRAMEBUFFER,dt.__webglFramebuffer[0]):t.bindFramebuffer(r.DRAW_FRAMEBUFFER,dt.__webglFramebuffer);for(let Dt=0;Dt0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&O.__useRenderToTexture!==!1}function ot(G){const O=f.render.frame;_.get(G)!==O&&(_.set(G,O),G.update())}function Tt(G,O){const ae=G.colorSpace,Te=G.format,Ie=G.type;return G.isCompressedTexture===!0||G.isVideoTexture===!0||ae!==zu&&ae!==Cl&&(Sn.getTransfer(ae)===zn?(Te!==Oa||Ie!==ts)&&ft("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):Rt("WebGLTextures: Unsupported texture color space:",ae)),O}function Qe(G){return typeof HTMLImageElement<"u"&&G instanceof HTMLImageElement?(g.width=G.naturalWidth||G.width,g.height=G.naturalHeight||G.height):typeof VideoFrame<"u"&&G instanceof VideoFrame?(g.width=G.displayWidth,g.height=G.displayHeight):(g.width=G.width,g.height=G.height),g}this.allocateTextureUnit=te,this.resetTextureUnits=se,this.setTexture2D=pe,this.setTexture2DArray=Y,this.setTexture3D=q,this.setTextureCube=ne,this.rebindTextures=tn,this.setupRenderTarget=Nt,this.updateRenderTargetMipmap=Le,this.updateMultisampleRenderTarget=nt,this.setupDepthRenderbuffer=jt,this.setupFrameBufferTexture=tt,this.useMultisampledRTT=Et,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function qT(r,e){function t(n,s=Cl){let u;const f=Sn.getTransfer(s);if(n===ts)return r.UNSIGNED_BYTE;if(n===_y)return r.UNSIGNED_SHORT_4_4_4_4;if(n===xy)return r.UNSIGNED_SHORT_5_5_5_1;if(n===Sb)return r.UNSIGNED_INT_5_9_9_9_REV;if(n===Mb)return r.UNSIGNED_INT_10F_11F_11F_REV;if(n===xb)return r.BYTE;if(n===bb)return r.SHORT;if(n===qh)return r.UNSIGNED_SHORT;if(n===yy)return r.INT;if(n===vr)return r.UNSIGNED_INT;if(n===is)return r.FLOAT;if(n===Bo)return r.HALF_FLOAT;if(n===Eb)return r.ALPHA;if(n===Tb)return r.RGB;if(n===Oa)return r.RGBA;if(n===Fo)return r.DEPTH_COMPONENT;if(n===Uu)return r.DEPTH_STENCIL;if(n===by)return r.RED;if(n===wm)return r.RED_INTEGER;if(n===tf)return r.RG;if(n===Sy)return r.RG_INTEGER;if(n===My)return r.RGBA_INTEGER;if(n===$p||n===em||n===tm||n===nm)if(f===zn)if(u=e.get("WEBGL_compressed_texture_s3tc_srgb"),u!==null){if(n===$p)return u.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===em)return u.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===tm)return u.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===nm)return u.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(u=e.get("WEBGL_compressed_texture_s3tc"),u!==null){if(n===$p)return u.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===em)return u.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===tm)return u.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===nm)return u.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===Av||n===wv||n===Cv||n===Rv)if(u=e.get("WEBGL_compressed_texture_pvrtc"),u!==null){if(n===Av)return u.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===wv)return u.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Cv)return u.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Rv)return u.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===Nv||n===Dv||n===Lv||n===Uv||n===Iv||n===Ov||n===Pv)if(u=e.get("WEBGL_compressed_texture_etc"),u!==null){if(n===Nv||n===Dv)return f===zn?u.COMPRESSED_SRGB8_ETC2:u.COMPRESSED_RGB8_ETC2;if(n===Lv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:u.COMPRESSED_RGBA8_ETC2_EAC;if(n===Uv)return u.COMPRESSED_R11_EAC;if(n===Iv)return u.COMPRESSED_SIGNED_R11_EAC;if(n===Ov)return u.COMPRESSED_RG11_EAC;if(n===Pv)return u.COMPRESSED_SIGNED_RG11_EAC}else return null;if(n===zv||n===Bv||n===Fv||n===kv||n===Vv||n===Hv||n===Gv||n===Xv||n===Wv||n===qv||n===jv||n===Yv||n===Zv||n===Qv)if(u=e.get("WEBGL_compressed_texture_astc"),u!==null){if(n===zv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:u.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Bv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:u.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===Fv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:u.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===kv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:u.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Vv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:u.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Hv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:u.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Gv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:u.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Xv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:u.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Wv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:u.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===qv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:u.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===jv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:u.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Yv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:u.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Zv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:u.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===Qv)return f===zn?u.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:u.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===Kv||n===Jv||n===$v)if(u=e.get("EXT_texture_compression_bptc"),u!==null){if(n===Kv)return f===zn?u.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:u.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Jv)return u.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===$v)return u.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===ey||n===ty||n===ny||n===iy)if(u=e.get("EXT_texture_compression_rgtc"),u!==null){if(n===ey)return u.COMPRESSED_RED_RGTC1_EXT;if(n===ty)return u.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===ny)return u.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===iy)return u.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===jh?r.UNSIGNED_INT_24_8:r[n]!==void 0?r[n]:null}return{convert:t}}const RP=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,NP=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`;class DP{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){const n=new Pb(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=n}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new yr({vertexShader:RP,fragmentShader:NP,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Yi(new sd(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class LP extends ko{constructor(e,t){super();const n=this;let s=null,u=1,f=null,h="local-floor",m=1,g=null,_=null,x=null,b=null,M=null,A=null;const R=typeof XRWebGLBinding<"u",w=new DP,E={},N=t.getContextAttributes();let D=null,U=null;const B=[],z=[],H=new ze;let W=null;const I=new zi;I.viewport=new jn;const P=new zi;P.viewport=new jn;const Z=[I,P],se=new OT;let te=null,fe=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(de){let Re=B[de];return Re===void 0&&(Re=new pv,B[de]=Re),Re.getTargetRaySpace()},this.getControllerGrip=function(de){let Re=B[de];return Re===void 0&&(Re=new pv,B[de]=Re),Re.getGripSpace()},this.getHand=function(de){let Re=B[de];return Re===void 0&&(Re=new pv,B[de]=Re),Re.getHandSpace()};function pe(de){const Re=z.indexOf(de.inputSource);if(Re===-1)return;const tt=B[Re];tt!==void 0&&(tt.update(de.inputSource,de.frame,g||f),tt.dispatchEvent({type:de.type,data:de.inputSource}))}function Y(){s.removeEventListener("select",pe),s.removeEventListener("selectstart",pe),s.removeEventListener("selectend",pe),s.removeEventListener("squeeze",pe),s.removeEventListener("squeezestart",pe),s.removeEventListener("squeezeend",pe),s.removeEventListener("end",Y),s.removeEventListener("inputsourceschange",q);for(let de=0;de=0&&(z[st]=null,B[st].disconnect(tt))}for(let Re=0;Re=z.length){z.push(tt),st=jt;break}else if(z[jt]===null){z[jt]=tt,st=jt;break}if(st===-1)break}const ht=B[st];ht&&ht.connect(tt)}}const ne=new j,be=new j;function Ne(de,Re,tt){ne.setFromMatrixPosition(Re.matrixWorld),be.setFromMatrixPosition(tt.matrixWorld);const st=ne.distanceTo(be),ht=Re.projectionMatrix.elements,jt=tt.projectionMatrix.elements,tn=ht[14]/(ht[10]-1),Nt=ht[14]/(ht[10]+1),Le=(ht[9]+1)/ht[5],He=(ht[9]-1)/ht[5],Oe=(ht[8]-1)/ht[0],nt=(jt[8]+1)/jt[0],Q=tn*Oe,Et=tn*nt,ot=st/(-Oe+nt),Tt=ot*-Oe;if(Re.matrixWorld.decompose(de.position,de.quaternion,de.scale),de.translateX(Tt),de.translateZ(ot),de.matrixWorld.compose(de.position,de.quaternion,de.scale),de.matrixWorldInverse.copy(de.matrixWorld).invert(),ht[10]===-1)de.projectionMatrix.copy(Re.projectionMatrix),de.projectionMatrixInverse.copy(Re.projectionMatrixInverse);else{const Qe=tn+ot,G=Nt+ot,O=Q-Tt,ae=Et+(st-Tt),Te=Le*Nt/G*Qe,Ie=He*Nt/G*Qe;de.projectionMatrix.makePerspective(O,ae,Te,Ie,Qe,G),de.projectionMatrixInverse.copy(de.projectionMatrix).invert()}}function X(de,Re){Re===null?de.matrixWorld.copy(de.matrix):de.matrixWorld.multiplyMatrices(Re.matrixWorld,de.matrix),de.matrixWorldInverse.copy(de.matrixWorld).invert()}this.updateCamera=function(de){if(s===null)return;let Re=de.near,tt=de.far;w.texture!==null&&(w.depthNear>0&&(Re=w.depthNear),w.depthFar>0&&(tt=w.depthFar)),se.near=P.near=I.near=Re,se.far=P.far=I.far=tt,(te!==se.near||fe!==se.far)&&(s.updateRenderState({depthNear:se.near,depthFar:se.far}),te=se.near,fe=se.far),se.layers.mask=de.layers.mask|6,I.layers.mask=se.layers.mask&3,P.layers.mask=se.layers.mask&5;const st=de.parent,ht=se.cameras;X(se,st);for(let jt=0;jt0&&(w.alphaTest.value=E.alphaTest);const N=e.get(E),D=N.envMap,U=N.envMapRotation;D&&(w.envMap.value=D,Hc.copy(U),Hc.x*=-1,Hc.y*=-1,Hc.z*=-1,D.isCubeTexture&&D.isRenderTargetTexture===!1&&(Hc.y*=-1,Hc.z*=-1),w.envMapRotation.value.setFromMatrix4(UP.makeRotationFromEuler(Hc)),w.flipEnvMap.value=D.isCubeTexture&&D.isRenderTargetTexture===!1?-1:1,w.reflectivity.value=E.reflectivity,w.ior.value=E.ior,w.refractionRatio.value=E.refractionRatio),E.lightMap&&(w.lightMap.value=E.lightMap,w.lightMapIntensity.value=E.lightMapIntensity,t(E.lightMap,w.lightMapTransform)),E.aoMap&&(w.aoMap.value=E.aoMap,w.aoMapIntensity.value=E.aoMapIntensity,t(E.aoMap,w.aoMapTransform))}function f(w,E){w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,E.map&&(w.map.value=E.map,t(E.map,w.mapTransform))}function h(w,E){w.dashSize.value=E.dashSize,w.totalSize.value=E.dashSize+E.gapSize,w.scale.value=E.scale}function m(w,E,N,D){w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,w.size.value=E.size*N,w.scale.value=D*.5,E.map&&(w.map.value=E.map,t(E.map,w.uvTransform)),E.alphaMap&&(w.alphaMap.value=E.alphaMap,t(E.alphaMap,w.alphaMapTransform)),E.alphaTest>0&&(w.alphaTest.value=E.alphaTest)}function g(w,E){w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,w.rotation.value=E.rotation,E.map&&(w.map.value=E.map,t(E.map,w.mapTransform)),E.alphaMap&&(w.alphaMap.value=E.alphaMap,t(E.alphaMap,w.alphaMapTransform)),E.alphaTest>0&&(w.alphaTest.value=E.alphaTest)}function _(w,E){w.specular.value.copy(E.specular),w.shininess.value=Math.max(E.shininess,1e-4)}function x(w,E){E.gradientMap&&(w.gradientMap.value=E.gradientMap)}function b(w,E){w.metalness.value=E.metalness,E.metalnessMap&&(w.metalnessMap.value=E.metalnessMap,t(E.metalnessMap,w.metalnessMapTransform)),w.roughness.value=E.roughness,E.roughnessMap&&(w.roughnessMap.value=E.roughnessMap,t(E.roughnessMap,w.roughnessMapTransform)),E.envMap&&(w.envMapIntensity.value=E.envMapIntensity)}function M(w,E,N){w.ior.value=E.ior,E.sheen>0&&(w.sheenColor.value.copy(E.sheenColor).multiplyScalar(E.sheen),w.sheenRoughness.value=E.sheenRoughness,E.sheenColorMap&&(w.sheenColorMap.value=E.sheenColorMap,t(E.sheenColorMap,w.sheenColorMapTransform)),E.sheenRoughnessMap&&(w.sheenRoughnessMap.value=E.sheenRoughnessMap,t(E.sheenRoughnessMap,w.sheenRoughnessMapTransform))),E.clearcoat>0&&(w.clearcoat.value=E.clearcoat,w.clearcoatRoughness.value=E.clearcoatRoughness,E.clearcoatMap&&(w.clearcoatMap.value=E.clearcoatMap,t(E.clearcoatMap,w.clearcoatMapTransform)),E.clearcoatRoughnessMap&&(w.clearcoatRoughnessMap.value=E.clearcoatRoughnessMap,t(E.clearcoatRoughnessMap,w.clearcoatRoughnessMapTransform)),E.clearcoatNormalMap&&(w.clearcoatNormalMap.value=E.clearcoatNormalMap,t(E.clearcoatNormalMap,w.clearcoatNormalMapTransform),w.clearcoatNormalScale.value.copy(E.clearcoatNormalScale),E.side===as&&w.clearcoatNormalScale.value.negate())),E.dispersion>0&&(w.dispersion.value=E.dispersion),E.iridescence>0&&(w.iridescence.value=E.iridescence,w.iridescenceIOR.value=E.iridescenceIOR,w.iridescenceThicknessMinimum.value=E.iridescenceThicknessRange[0],w.iridescenceThicknessMaximum.value=E.iridescenceThicknessRange[1],E.iridescenceMap&&(w.iridescenceMap.value=E.iridescenceMap,t(E.iridescenceMap,w.iridescenceMapTransform)),E.iridescenceThicknessMap&&(w.iridescenceThicknessMap.value=E.iridescenceThicknessMap,t(E.iridescenceThicknessMap,w.iridescenceThicknessMapTransform))),E.transmission>0&&(w.transmission.value=E.transmission,w.transmissionSamplerMap.value=N.texture,w.transmissionSamplerSize.value.set(N.width,N.height),E.transmissionMap&&(w.transmissionMap.value=E.transmissionMap,t(E.transmissionMap,w.transmissionMapTransform)),w.thickness.value=E.thickness,E.thicknessMap&&(w.thicknessMap.value=E.thicknessMap,t(E.thicknessMap,w.thicknessMapTransform)),w.attenuationDistance.value=E.attenuationDistance,w.attenuationColor.value.copy(E.attenuationColor)),E.anisotropy>0&&(w.anisotropyVector.value.set(E.anisotropy*Math.cos(E.anisotropyRotation),E.anisotropy*Math.sin(E.anisotropyRotation)),E.anisotropyMap&&(w.anisotropyMap.value=E.anisotropyMap,t(E.anisotropyMap,w.anisotropyMapTransform))),w.specularIntensity.value=E.specularIntensity,w.specularColor.value.copy(E.specularColor),E.specularColorMap&&(w.specularColorMap.value=E.specularColorMap,t(E.specularColorMap,w.specularColorMapTransform)),E.specularIntensityMap&&(w.specularIntensityMap.value=E.specularIntensityMap,t(E.specularIntensityMap,w.specularIntensityMapTransform))}function A(w,E){E.matcap&&(w.matcap.value=E.matcap)}function R(w,E){const N=e.get(E).light;w.referencePosition.value.setFromMatrixPosition(N.matrixWorld),w.nearDistance.value=N.shadow.camera.near,w.farDistance.value=N.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:s}}function OP(r,e,t,n){let s={},u={},f=[];const h=r.getParameter(r.MAX_UNIFORM_BUFFER_BINDINGS);function m(N,D){const U=D.program;n.uniformBlockBinding(N,U)}function g(N,D){let U=s[N.id];U===void 0&&(A(N),U=_(N),s[N.id]=U,N.addEventListener("dispose",w));const B=D.program;n.updateUBOMapping(N,B);const z=e.render.frame;u[N.id]!==z&&(b(N),u[N.id]=z)}function _(N){const D=x();N.__bindingPointIndex=D;const U=r.createBuffer(),B=N.__size,z=N.usage;return r.bindBuffer(r.UNIFORM_BUFFER,U),r.bufferData(r.UNIFORM_BUFFER,B,z),r.bindBuffer(r.UNIFORM_BUFFER,null),r.bindBufferBase(r.UNIFORM_BUFFER,D,U),U}function x(){for(let N=0;N0&&(U+=B-z),N.__size=U,N.__cache={},this}function R(N){const D={boundary:0,storage:0};return typeof N=="number"||typeof N=="boolean"?(D.boundary=4,D.storage=4):N.isVector2?(D.boundary=8,D.storage=8):N.isVector3||N.isColor?(D.boundary=16,D.storage=12):N.isVector4?(D.boundary=16,D.storage=16):N.isMatrix3?(D.boundary=48,D.storage=48):N.isMatrix4?(D.boundary=64,D.storage=64):N.isTexture?ft("WebGLRenderer: Texture samplers can not be part of an uniforms group."):ft("WebGLRenderer: Unsupported uniform value type.",N),D}function w(N){const D=N.target;D.removeEventListener("dispose",w);const U=f.indexOf(D.__bindingPointIndex);f.splice(U,1),r.deleteBuffer(s[D.id]),delete s[D.id],delete u[D.id]}function E(){for(const N in s)r.deleteBuffer(s[N]);f=[],s={},u={}}return{bind:m,update:g,dispose:E}}const PP=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]);let Lo=null;function zP(){return Lo===null&&(Lo=new Yr(PP,16,16,tf,Bo),Lo.name="DFG_LUT",Lo.minFilter=oi,Lo.magFilter=oi,Lo.wrapS=Rs,Lo.wrapT=Rs,Lo.generateMipmaps=!1,Lo.needsUpdate=!0),Lo}class jT{constructor(e={}){const{canvas:t=kE(),context:n=null,depth:s=!0,stencil:u=!1,alpha:f=!1,antialias:h=!1,premultipliedAlpha:m=!0,preserveDrawingBuffer:g=!1,powerPreference:_="default",failIfMajorPerformanceCaveat:x=!1,reversedDepthBuffer:b=!1,outputBufferType:M=ts}=e;this.isWebGLRenderer=!0;let A;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");A=n.getContextAttributes().alpha}else A=f;const R=M,w=new Set([My,Sy,wm]),E=new Set([ts,vr,qh,jh,_y,xy]),N=new Uint32Array(4),D=new Int32Array(4);let U=null,B=null;const z=[],H=[];let W=null;this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=gr,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const I=this;let P=!1;this._outputColorSpace=Ia;let Z=0,se=0,te=null,fe=-1,pe=null;const Y=new jn,q=new jn;let ne=null;const be=new yt(0);let Ne=0,X=t.width,oe=t.height,Ae=1,Fe=null,lt=null;const de=new jn(0,0,X,oe),Re=new jn(0,0,X,oe);let tt=!1;const st=new ad;let ht=!1,jt=!1;const tn=new Xt,Nt=new j,Le=new jn,He={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Oe=!1;function nt(){return te===null?Ae:1}let Q=n;function Et(k,re){return t.getContext(k,re)}try{const k={alpha:!0,depth:s,stencil:u,antialias:h,premultipliedAlpha:m,preserveDrawingBuffer:g,powerPreference:_,failIfMajorPerformanceCaveat:x};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${my}`),t.addEventListener("webglcontextlost",Ct,!1),t.addEventListener("webglcontextrestored",Jt,!1),t.addEventListener("webglcontextcreationerror",nn,!1),Q===null){const re="webgl2";if(Q=Et(re,k),Q===null)throw Et(re)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(k){throw Rt("WebGLRenderer: "+k.message),k}let ot,Tt,Qe,G,O,ae,Te,Ie,Ee,dt,Ke,vt,Dt,Ve,Ze,ct,K,me,et,J,je,Ge,at,Xe;function Ue(){ot=new BI(Q),ot.init(),Ge=new qT(Q,ot),Tt=new RI(Q,ot,e,Ge),Qe=new wP(Q,ot),Tt.reversedDepthBuffer&&b&&Qe.buffers.depth.setReversed(!0),G=new VI(Q),O=new hP,ae=new CP(Q,ot,Qe,O,Tt,Ge,G),Te=new DI(I),Ie=new zI(I),Ee=new WD(Q),at=new wI(Q,Ee),dt=new FI(Q,Ee,G,at),Ke=new GI(Q,dt,Ee,G),et=new HI(Q,Tt,ae),ct=new NI(O),vt=new fP(I,Te,Ie,ot,Tt,at,ct),Dt=new IP(I,O),Ve=new pP,Ze=new xP(ot),me=new AI(I,Te,Ie,Qe,Ke,A,m),K=new TP(I,Ke,Tt),Xe=new OP(Q,G,Tt,Qe),J=new CI(Q,ot,G),je=new kI(Q,ot,G),G.programs=vt.programs,I.capabilities=Tt,I.extensions=ot,I.properties=O,I.renderLists=Ve,I.shadowMap=K,I.state=Qe,I.info=G}Ue(),R!==ts&&(W=new WI(R,t.width,t.height,s,u));const Ye=new LP(I,Q);this.xr=Ye,this.getContext=function(){return Q},this.getContextAttributes=function(){return Q.getContextAttributes()},this.forceContextLoss=function(){const k=ot.get("WEBGL_lose_context");k&&k.loseContext()},this.forceContextRestore=function(){const k=ot.get("WEBGL_lose_context");k&&k.restoreContext()},this.getPixelRatio=function(){return Ae},this.setPixelRatio=function(k){k!==void 0&&(Ae=k,this.setSize(X,oe,!1))},this.getSize=function(k){return k.set(X,oe)},this.setSize=function(k,re,Se=!0){if(Ye.isPresenting){ft("WebGLRenderer: Can't change size while VR device is presenting.");return}X=k,oe=re,t.width=Math.floor(k*Ae),t.height=Math.floor(re*Ae),Se===!0&&(t.style.width=k+"px",t.style.height=re+"px"),W!==null&&W.setSize(t.width,t.height),this.setViewport(0,0,k,re)},this.getDrawingBufferSize=function(k){return k.set(X*Ae,oe*Ae).floor()},this.setDrawingBufferSize=function(k,re,Se){X=k,oe=re,Ae=Se,t.width=Math.floor(k*Se),t.height=Math.floor(re*Se),this.setViewport(0,0,k,re)},this.setEffects=function(k){if(R===ts){console.error("THREE.WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.");return}if(k){for(let re=0;re{function Je(){if(ye.forEach(function(mt){O.get(mt).currentProgram.isReady()&&ye.delete(mt)}),ye.size===0){ue(k);return}setTimeout(Je,10)}ot.get("KHR_parallel_shader_compile")!==null?Je():setTimeout(Je,10)})};let Ho=null;function Jr(k){Ho&&Ho(k)}function xr(){na.stop()}function Go(){na.start()}const na=new VT;na.setAnimationLoop(Jr),typeof self<"u"&&na.setContext(self),this.setAnimationLoop=function(k){Ho=k,Ye.setAnimationLoop(k),k===null?na.stop():na.start()},Ye.addEventListener("sessionstart",xr),Ye.addEventListener("sessionend",Go),this.render=function(k,re){if(re!==void 0&&re.isCamera!==!0){Rt("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(P===!0)return;const Se=Ye.enabled===!0&&Ye.isPresenting===!0,ye=W!==null&&(te===null||Se)&&W.begin(I,te);if(k.matrixWorldAutoUpdate===!0&&k.updateMatrixWorld(),re.parent===null&&re.matrixWorldAutoUpdate===!0&&re.updateMatrixWorld(),Ye.enabled===!0&&Ye.isPresenting===!0&&(W===null||W.isCompositing()===!1)&&(Ye.cameraAutoUpdate===!0&&Ye.updateCamera(re),re=Ye.getCamera()),k.isScene===!0&&k.onBeforeRender(I,k,re,te),B=Ze.get(k,H.length),B.init(re),H.push(B),tn.multiplyMatrices(re.projectionMatrix,re.matrixWorldInverse),st.setFromProjectionMatrix(tn,ks,re.reversedDepth),jt=this.localClippingEnabled,ht=ct.init(this.clippingPlanes,jt),U=Ve.get(k,z.length),U.init(),z.push(U),Ye.enabled===!0&&Ye.isPresenting===!0){const mt=I.xr.getDepthSensingMesh();mt!==null&&Fa(mt,re,-1/0,I.sortObjects)}Fa(k,re,0,I.sortObjects),U.finish(),I.sortObjects===!0&&U.sort(Fe,lt),Oe=Ye.enabled===!1||Ye.isPresenting===!1||Ye.hasDepthSensing()===!1,Oe&&me.addToRenderList(U,k),this.info.render.frame++,ht===!0&&ct.beginShadows();const ue=B.state.shadowsArray;if(K.render(ue,k,re),ht===!0&&ct.endShadows(),this.info.autoReset===!0&&this.info.reset(),(ye&&W.hasRenderPass())===!1){const mt=U.opaque,qe=U.transmissive;if(B.setupLights(),re.isArrayCamera){const _t=re.cameras;if(qe.length>0)for(let xt=0,Lt=_t.length;xt0&&Ri(mt,qe,k,re),Oe&&me.render(k),$n(U,k,re)}te!==null&&se===0&&(ae.updateMultisampleRenderTarget(te),ae.updateRenderTargetMipmap(te)),ye&&W.end(I),k.isScene===!0&&k.onAfterRender(I,k,re),at.resetDefaultState(),fe=-1,pe=null,H.pop(),H.length>0?(B=H[H.length-1],ht===!0&&ct.setGlobalState(I.clippingPlanes,B.state.camera)):B=null,z.pop(),z.length>0?U=z[z.length-1]:U=null};function Fa(k,re,Se,ye){if(k.visible===!1)return;if(k.layers.test(re.layers)){if(k.isGroup)Se=k.renderOrder;else if(k.isLOD)k.autoUpdate===!0&&k.update(re);else if(k.isLight)B.pushLight(k),k.castShadow&&B.pushShadow(k);else if(k.isSprite){if(!k.frustumCulled||st.intersectsSprite(k)){ye&&Le.setFromMatrixPosition(k.matrixWorld).applyMatrix4(tn);const mt=Ke.update(k),qe=k.material;qe.visible&&U.push(k,mt,qe,Se,Le.z,null)}}else if((k.isMesh||k.isLine||k.isPoints)&&(!k.frustumCulled||st.intersectsObject(k))){const mt=Ke.update(k),qe=k.material;if(ye&&(k.boundingSphere!==void 0?(k.boundingSphere===null&&k.computeBoundingSphere(),Le.copy(k.boundingSphere.center)):(mt.boundingSphere===null&&mt.computeBoundingSphere(),Le.copy(mt.boundingSphere.center)),Le.applyMatrix4(k.matrixWorld).applyMatrix4(tn)),Array.isArray(qe)){const _t=mt.groups;for(let xt=0,Lt=_t.length;xt0&&ka(ue,re,Se),Je.length>0&&ka(Je,re,Se),mt.length>0&&ka(mt,re,Se),Qe.buffers.depth.setTest(!0),Qe.buffers.depth.setMask(!0),Qe.buffers.color.setMask(!0),Qe.setPolygonOffset(!1)}function Ri(k,re,Se,ye){if((Se.isScene===!0?Se.overrideMaterial:null)!==null)return;if(B.state.transmissionRenderTarget[ye.id]===void 0){const Pt=ot.has("EXT_color_buffer_half_float")||ot.has("EXT_color_buffer_float");B.state.transmissionRenderTarget[ye.id]=new Hs(1,1,{generateMipmaps:!0,type:Pt?Bo:ts,minFilter:Io,samples:Tt.samples,stencilBuffer:u,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Sn.workingColorSpace})}const Je=B.state.transmissionRenderTarget[ye.id],mt=ye.viewport||Y;Je.setSize(mt.z*I.transmissionResolutionScale,mt.w*I.transmissionResolutionScale);const qe=I.getRenderTarget(),_t=I.getActiveCubeFace(),xt=I.getActiveMipmapLevel();I.setRenderTarget(Je),I.getClearColor(be),Ne=I.getClearAlpha(),Ne<1&&I.setClearColor(16777215,.5),I.clear(),Oe&&me.render(Se);const Lt=I.toneMapping;I.toneMapping=gr;const St=ye.viewport;if(ye.viewport!==void 0&&(ye.viewport=void 0),B.setupLightsView(ye),ht===!0&&ct.setGlobalState(I.clippingPlanes,ye),ka(k,Se,ye),ae.updateMultisampleRenderTarget(Je),ae.updateRenderTargetMipmap(Je),ot.has("WEBGL_multisampled_render_to_texture")===!1){let Pt=!1;for(let Mn=0,Bn=re.length;Mn0),St=!!Se.morphAttributes.position,Pt=!!Se.morphAttributes.normal,Mn=!!Se.morphAttributes.color;let Bn=gr;ye.toneMapped&&(te===null||te.isXRRenderTarget===!0)&&(Bn=I.toneMapping);const In=Se.morphAttributes.position||Se.morphAttributes.normal||Se.morphAttributes.color,Wt=In!==void 0?In.length:0,ut=O.get(ye),_n=B.state.lights;if(ht===!0&&(jt===!0||k!==pe)){const Fi=k===pe&&ye.id===fe;ct.setState(ye,k,Fi)}let Ft=!1;ye.version===ut.__version?(ut.needsLights&&ut.lightsStateVersion!==_n.state.version||ut.outputColorSpace!==qe||ue.isBatchedMesh&&ut.batching===!1||!ue.isBatchedMesh&&ut.batching===!0||ue.isBatchedMesh&&ut.batchingColor===!0&&ue.colorTexture===null||ue.isBatchedMesh&&ut.batchingColor===!1&&ue.colorTexture!==null||ue.isInstancedMesh&&ut.instancing===!1||!ue.isInstancedMesh&&ut.instancing===!0||ue.isSkinnedMesh&&ut.skinning===!1||!ue.isSkinnedMesh&&ut.skinning===!0||ue.isInstancedMesh&&ut.instancingColor===!0&&ue.instanceColor===null||ue.isInstancedMesh&&ut.instancingColor===!1&&ue.instanceColor!==null||ue.isInstancedMesh&&ut.instancingMorph===!0&&ue.morphTexture===null||ue.isInstancedMesh&&ut.instancingMorph===!1&&ue.morphTexture!==null||ut.envMap!==_t||ye.fog===!0&&ut.fog!==Je||ut.numClippingPlanes!==void 0&&(ut.numClippingPlanes!==ct.numPlanes||ut.numIntersection!==ct.numIntersection)||ut.vertexAlphas!==xt||ut.vertexTangents!==Lt||ut.morphTargets!==St||ut.morphNormals!==Pt||ut.morphColors!==Mn||ut.toneMapping!==Bn||ut.morphTargetsCount!==Wt)&&(Ft=!0):(Ft=!0,ut.__version=ye.version);let xi=ut.currentProgram;Ft===!0&&(xi=Ha(ye,re,ue));let Ls=!1,Wn=!1,la=!1;const An=xi.getUniforms(),Ni=ut.uniforms;if(Qe.useProgram(xi.program)&&(Ls=!0,Wn=!0,la=!0),ye.id!==fe&&(fe=ye.id,Wn=!0),Ls||pe!==k){Qe.buffers.depth.getReversed()&&k.reversedDepth!==!0&&(k._reversedDepth=!0,k.updateProjectionMatrix()),An.setValue(Q,"projectionMatrix",k.projectionMatrix),An.setValue(Q,"viewMatrix",k.matrixWorldInverse);const ki=An.map.cameraPosition;ki!==void 0&&ki.setValue(Q,Nt.setFromMatrixPosition(k.matrixWorld)),Tt.logarithmicDepthBuffer&&An.setValue(Q,"logDepthBufFC",2/(Math.log(k.far+1)/Math.LN2)),(ye.isMeshPhongMaterial||ye.isMeshToonMaterial||ye.isMeshLambertMaterial||ye.isMeshBasicMaterial||ye.isMeshStandardMaterial||ye.isShaderMaterial)&&An.setValue(Q,"isOrthographic",k.isOrthographicCamera===!0),pe!==k&&(pe=k,Wn=!0,la=!0)}if(ut.needsLights&&(_n.state.directionalShadowMap.length>0&&An.setValue(Q,"directionalShadowMap",_n.state.directionalShadowMap,ae),_n.state.spotShadowMap.length>0&&An.setValue(Q,"spotShadowMap",_n.state.spotShadowMap,ae),_n.state.pointShadowMap.length>0&&An.setValue(Q,"pointShadowMap",_n.state.pointShadowMap,ae)),ue.isSkinnedMesh){An.setOptional(Q,ue,"bindMatrix"),An.setOptional(Q,ue,"bindMatrixInverse");const Fi=ue.skeleton;Fi&&(Fi.boneTexture===null&&Fi.computeBoneTexture(),An.setValue(Q,"boneTexture",Fi.boneTexture,ae))}ue.isBatchedMesh&&(An.setOptional(Q,ue,"batchingTexture"),An.setValue(Q,"batchingTexture",ue._matricesTexture,ae),An.setOptional(Q,ue,"batchingIdTexture"),An.setValue(Q,"batchingIdTexture",ue._indirectTexture,ae),An.setOptional(Q,ue,"batchingColorTexture"),ue._colorsTexture!==null&&An.setValue(Q,"batchingColorTexture",ue._colorsTexture,ae));const bi=Se.morphAttributes;if((bi.position!==void 0||bi.normal!==void 0||bi.color!==void 0)&&et.update(ue,Se,xi),(Wn||ut.receiveShadow!==ue.receiveShadow)&&(ut.receiveShadow=ue.receiveShadow,An.setValue(Q,"receiveShadow",ue.receiveShadow)),ye.isMeshGouraudMaterial&&ye.envMap!==null&&(Ni.envMap.value=_t,Ni.flipEnvMap.value=_t.isCubeTexture&&_t.isRenderTargetTexture===!1?-1:1),ye.isMeshStandardMaterial&&ye.envMap===null&&re.environment!==null&&(Ni.envMapIntensity.value=re.environmentIntensity),Ni.dfgLUT!==void 0&&(Ni.dfgLUT.value=zP()),Wn&&(An.setValue(Q,"toneMappingExposure",I.toneMappingExposure),ut.needsLights&&br(Ni,la),Je&&ye.fog===!0&&Dt.refreshFogUniforms(Ni,Je),Dt.refreshMaterialUniforms(Ni,ye,Ae,oe,B.state.transmissionRenderTarget[k.id]),mv.upload(Q,$r(ut),Ni,ae)),ye.isShaderMaterial&&ye.uniformsNeedUpdate===!0&&(mv.upload(Q,$r(ut),Ni,ae),ye.uniformsNeedUpdate=!1),ye.isSpriteMaterial&&An.setValue(Q,"center",ue.center),An.setValue(Q,"modelViewMatrix",ue.modelViewMatrix),An.setValue(Q,"normalMatrix",ue.normalMatrix),An.setValue(Q,"modelMatrix",ue.matrixWorld),ye.isShaderMaterial||ye.isRawShaderMaterial){const Fi=ye.uniformsGroups;for(let ki=0,Wo=Fi.length;ki0&&ae.useMultisampledRTT(k)===!1?ye=O.get(k).__webglMultisampledFramebuffer:Array.isArray(xt)?ye=xt[Se]:ye=xt,Y.copy(k.viewport),q.copy(k.scissor),ne=k.scissorTest}else Y.copy(de).multiplyScalar(Ae).floor(),q.copy(Re).multiplyScalar(Ae).floor(),ne=tt;if(Se!==0&&(ye=Mr),Qe.bindFramebuffer(Q.FRAMEBUFFER,ye)&&Qe.drawBuffers(k,ye),Qe.viewport(Y),Qe.scissor(q),Qe.setScissorTest(ne),ue){const qe=O.get(k.texture);Q.framebufferTexture2D(Q.FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Q.TEXTURE_CUBE_MAP_POSITIVE_X+re,qe.__webglTexture,Se)}else if(Je){const qe=re;for(let _t=0;_t=0&&re<=k.width-ye&&Se>=0&&Se<=k.height-ue&&(k.textures.length>1&&Q.readBuffer(Q.COLOR_ATTACHMENT0+qe),Q.readPixels(re,Se,ye,ue,Ge.convert(Lt),Ge.convert(St),Je))}finally{const xt=te!==null?O.get(te).__webglFramebuffer:null;Qe.bindFramebuffer(Q.FRAMEBUFFER,xt)}}},this.readRenderTargetPixelsAsync=async function(k,re,Se,ye,ue,Je,mt,qe=0){if(!(k&&k.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let _t=O.get(k).__webglFramebuffer;if(k.isWebGLCubeRenderTarget&&mt!==void 0&&(_t=_t[mt]),_t)if(re>=0&&re<=k.width-ye&&Se>=0&&Se<=k.height-ue){Qe.bindFramebuffer(Q.FRAMEBUFFER,_t);const xt=k.textures[qe],Lt=xt.format,St=xt.type;if(!Tt.textureFormatReadable(Lt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Tt.textureTypeReadable(St))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const Pt=Q.createBuffer();Q.bindBuffer(Q.PIXEL_PACK_BUFFER,Pt),Q.bufferData(Q.PIXEL_PACK_BUFFER,Je.byteLength,Q.STREAM_READ),k.textures.length>1&&Q.readBuffer(Q.COLOR_ATTACHMENT0+qe),Q.readPixels(re,Se,ye,ue,Ge.convert(Lt),Ge.convert(St),0);const Mn=te!==null?O.get(te).__webglFramebuffer:null;Qe.bindFramebuffer(Q.FRAMEBUFFER,Mn);const Bn=Q.fenceSync(Q.SYNC_GPU_COMMANDS_COMPLETE,0);return Q.flush(),await q3(Q,Bn,4),Q.bindBuffer(Q.PIXEL_PACK_BUFFER,Pt),Q.getBufferSubData(Q.PIXEL_PACK_BUFFER,0,Je),Q.deleteBuffer(Pt),Q.deleteSync(Bn),Je}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(k,re=null,Se=0){const ye=Math.pow(2,-Se),ue=Math.floor(k.image.width*ye),Je=Math.floor(k.image.height*ye),mt=re!==null?re.x:0,qe=re!==null?re.y:0;ae.setTexture2D(k,0),Q.copyTexSubImage2D(Q.TEXTURE_2D,Se,0,0,mt,qe,ue,Je),Qe.unbindTexture()};const eo=Q.createFramebuffer(),Xs=Q.createFramebuffer();this.copyTextureToTexture=function(k,re,Se=null,ye=null,ue=0,Je=null){Je===null&&(ue!==0?(Zh("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),Je=ue,ue=0):Je=0);let mt,qe,_t,xt,Lt,St,Pt,Mn,Bn;const In=k.isCompressedTexture?k.mipmaps[Je]:k.image;if(Se!==null)mt=Se.max.x-Se.min.x,qe=Se.max.y-Se.min.y,_t=Se.isBox3?Se.max.z-Se.min.z:1,xt=Se.min.x,Lt=Se.min.y,St=Se.isBox3?Se.min.z:0;else{const bi=Math.pow(2,-ue);mt=Math.floor(In.width*bi),qe=Math.floor(In.height*bi),k.isDataArrayTexture?_t=In.depth:k.isData3DTexture?_t=Math.floor(In.depth*bi):_t=1,xt=0,Lt=0,St=0}ye!==null?(Pt=ye.x,Mn=ye.y,Bn=ye.z):(Pt=0,Mn=0,Bn=0);const Wt=Ge.convert(re.format),ut=Ge.convert(re.type);let _n;re.isData3DTexture?(ae.setTexture3D(re,0),_n=Q.TEXTURE_3D):re.isDataArrayTexture||re.isCompressedArrayTexture?(ae.setTexture2DArray(re,0),_n=Q.TEXTURE_2D_ARRAY):(ae.setTexture2D(re,0),_n=Q.TEXTURE_2D),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,re.flipY),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,re.premultiplyAlpha),Q.pixelStorei(Q.UNPACK_ALIGNMENT,re.unpackAlignment);const Ft=Q.getParameter(Q.UNPACK_ROW_LENGTH),xi=Q.getParameter(Q.UNPACK_IMAGE_HEIGHT),Ls=Q.getParameter(Q.UNPACK_SKIP_PIXELS),Wn=Q.getParameter(Q.UNPACK_SKIP_ROWS),la=Q.getParameter(Q.UNPACK_SKIP_IMAGES);Q.pixelStorei(Q.UNPACK_ROW_LENGTH,In.width),Q.pixelStorei(Q.UNPACK_IMAGE_HEIGHT,In.height),Q.pixelStorei(Q.UNPACK_SKIP_PIXELS,xt),Q.pixelStorei(Q.UNPACK_SKIP_ROWS,Lt),Q.pixelStorei(Q.UNPACK_SKIP_IMAGES,St);const An=k.isDataArrayTexture||k.isData3DTexture,Ni=re.isDataArrayTexture||re.isData3DTexture;if(k.isDepthTexture){const bi=O.get(k),Fi=O.get(re),ki=O.get(bi.__renderTarget),Wo=O.get(Fi.__renderTarget);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,ki.__webglFramebuffer),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,Wo.__webglFramebuffer);for(let rs=0;rs<_t;rs++)An&&(Q.framebufferTextureLayer(Q.READ_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,O.get(k).__webglTexture,ue,St+rs),Q.framebufferTextureLayer(Q.DRAW_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,O.get(re).__webglTexture,Je,Bn+rs)),Q.blitFramebuffer(xt,Lt,mt,qe,Pt,Mn,mt,qe,Q.DEPTH_BUFFER_BIT,Q.NEAREST);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,null),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,null)}else if(ue!==0||k.isRenderTargetTexture||O.has(k)){const bi=O.get(k),Fi=O.get(re);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,eo),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,Xs);for(let ki=0;ki<_t;ki++)An?Q.framebufferTextureLayer(Q.READ_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,bi.__webglTexture,ue,St+ki):Q.framebufferTexture2D(Q.READ_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Q.TEXTURE_2D,bi.__webglTexture,ue),Ni?Q.framebufferTextureLayer(Q.DRAW_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Fi.__webglTexture,Je,Bn+ki):Q.framebufferTexture2D(Q.DRAW_FRAMEBUFFER,Q.COLOR_ATTACHMENT0,Q.TEXTURE_2D,Fi.__webglTexture,Je),ue!==0?Q.blitFramebuffer(xt,Lt,mt,qe,Pt,Mn,mt,qe,Q.COLOR_BUFFER_BIT,Q.NEAREST):Ni?Q.copyTexSubImage3D(_n,Je,Pt,Mn,Bn+ki,xt,Lt,mt,qe):Q.copyTexSubImage2D(_n,Je,Pt,Mn,xt,Lt,mt,qe);Qe.bindFramebuffer(Q.READ_FRAMEBUFFER,null),Qe.bindFramebuffer(Q.DRAW_FRAMEBUFFER,null)}else Ni?k.isDataTexture||k.isData3DTexture?Q.texSubImage3D(_n,Je,Pt,Mn,Bn,mt,qe,_t,Wt,ut,In.data):re.isCompressedArrayTexture?Q.compressedTexSubImage3D(_n,Je,Pt,Mn,Bn,mt,qe,_t,Wt,In.data):Q.texSubImage3D(_n,Je,Pt,Mn,Bn,mt,qe,_t,Wt,ut,In):k.isDataTexture?Q.texSubImage2D(Q.TEXTURE_2D,Je,Pt,Mn,mt,qe,Wt,ut,In.data):k.isCompressedTexture?Q.compressedTexSubImage2D(Q.TEXTURE_2D,Je,Pt,Mn,In.width,In.height,Wt,In.data):Q.texSubImage2D(Q.TEXTURE_2D,Je,Pt,Mn,mt,qe,Wt,ut,In);Q.pixelStorei(Q.UNPACK_ROW_LENGTH,Ft),Q.pixelStorei(Q.UNPACK_IMAGE_HEIGHT,xi),Q.pixelStorei(Q.UNPACK_SKIP_PIXELS,Ls),Q.pixelStorei(Q.UNPACK_SKIP_ROWS,Wn),Q.pixelStorei(Q.UNPACK_SKIP_IMAGES,la),Je===0&&re.generateMipmaps&&Q.generateMipmap(_n),Qe.unbindTexture()},this.initRenderTarget=function(k){O.get(k).__webglFramebuffer===void 0&&ae.setupRenderTarget(k)},this.initTexture=function(k){k.isCubeTexture?ae.setTextureCube(k,0):k.isData3DTexture?ae.setTexture3D(k,0):k.isDataArrayTexture||k.isCompressedArrayTexture?ae.setTexture2DArray(k,0):ae.setTexture2D(k,0),Qe.unbindTexture()},this.resetState=function(){Z=0,se=0,te=null,Qe.reset(),at.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return ks}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=Sn._getDrawingBufferColorSpace(e),t.unpackColorSpace=Sn._getUnpackColorSpace()}}const BP=Object.freeze(Object.defineProperty({__proto__:null,ACESFilmicToneMapping:gy,AddEquation:Du,AddOperation:TE,AdditiveAnimationBlendMode:Ab,AdditiveBlending:Hx,AgXToneMapping:vb,AlphaFormat:Eb,AlwaysCompare:zE,AlwaysDepth:xv,AlwaysStencilFunc:qx,AmbientLight:NT,AnimationAction:BT,AnimationClip:Sm,AnimationLoader:PN,AnimationMixer:fD,AnimationObjectGroup:uD,AnimationUtils:LN,ArcCurve:iT,ArrayCamera:OT,ArrowHelper:PD,AttachedBindMode:Wx,Audio:PT,AudioAnalyser:$N,AudioContext:$b,AudioListener:QN,AudioLoader:jN,AxesHelper:zD,BackSide:as,BasicDepthPacking:NE,BasicShadowMap:sE,BatchedMesh:KE,Bone:Ib,BooleanKeyframeTrack:uf,Box2:xD,Box3:za,Box3Helper:ID,BoxGeometry:lf,BoxHelper:UD,BufferAttribute:Xn,BufferGeometry:Kt,BufferGeometryLoader:IT,ByteType:xb,Cache:Oo,Camera:Ry,CameraHelper:LD,CanvasTexture:tN,CapsuleGeometry:Py,CatmullRomCurve3:aT,CineonToneMapping:mb,CircleGeometry:zy,ClampToEdgeWrapping:Rs,Clock:eS,Color:yt,ColorKeyframeTrack:Zb,ColorManagement:Sn,CompressedArrayTexture:$R,CompressedCubeTexture:eN,CompressedTexture:Oy,CompressedTextureLoader:zN,ConeGeometry:Nm,ConstantAlphaFactor:SE,ConstantColorFactor:xE,Controls:FD,CubeCamera:WE,CubeDepthTexture:tT,CubeReflectionMapping:zo,CubeRefractionMapping:Pu,CubeTexture:Cm,CubeTextureLoader:BN,CubeUVReflectionMapping:id,CubicBezierCurve:Bb,CubicBezierCurve3:sT,CubicInterpolant:ST,CullFaceBack:Vx,CullFaceFront:aE,CullFaceFrontBack:n3,CullFaceNone:iE,Curve:Zr,CurvePath:oT,CustomBlending:rE,CustomToneMapping:gb,CylinderGeometry:Rm,Cylindrical:_D,Data3DTexture:Cy,DataArrayTexture:wy,DataTexture:Yr,DataTextureLoader:FN,DataUtils:ER,DecrementStencilOp:x3,DecrementWrapStencilOp:S3,DefaultLoadingManager:TT,DepthFormat:Fo,DepthStencilFormat:Uu,DepthTexture:ed,DetachedBindMode:AE,DirectionalLight:RT,DirectionalLightHelper:DD,DiscreteInterpolant:MT,DodecahedronGeometry:By,DoubleSide:Uo,DstAlphaFactor:mE,DstColorFactor:vE,DynamicCopyUsage:z3,DynamicDrawUsage:D3,DynamicReadUsage:I3,EdgesGeometry:nT,EllipseCurve:Fy,EqualCompare:IE,EqualDepth:Sv,EqualStencilFunc:A3,EquirectangularReflectionMapping:om,EquirectangularRefractionMapping:lm,Euler:Gs,EventDispatcher:ko,ExternalTexture:Pb,ExtrudeGeometry:ky,FileLoader:Ul,Float16BufferAttribute:DR,Float32BufferAttribute:bt,FloatType:is,Fog:Dy,FogExp2:Ny,FramebufferTexture:JR,FrontSide:Ll,Frustum:ad,FrustumArray:Iy,GLBufferAttribute:gD,GLSL1:F3,GLSL3:jx,GreaterCompare:OE,GreaterDepth:Ev,GreaterEqualCompare:Ay,GreaterEqualDepth:Mv,GreaterEqualStencilFunc:N3,GreaterStencilFunc:C3,GridHelper:RD,Group:Gh,HalfFloatType:Bo,HemisphereLight:AT,HemisphereLightHelper:CD,IcosahedronGeometry:Vy,ImageBitmapLoader:qN,ImageLoader:Mm,ImageUtils:VE,IncrementStencilOp:_3,IncrementWrapStencilOp:b3,InstancedBufferAttribute:$h,InstancedBufferGeometry:UT,InstancedInterleavedBuffer:mD,InstancedMesh:QE,Int16BufferAttribute:RR,Int32BufferAttribute:NR,Int8BufferAttribute:AR,IntType:yy,InterleavedBuffer:Ly,InterleavedBufferAttribute:nf,Interpolant:Um,InterpolateDiscrete:fm,InterpolateLinear:ay,InterpolateSmooth:dv,InterpolationSamplingMode:H3,InterpolationSamplingType:V3,InvertStencilOp:M3,KeepStencilOp:Wc,KeyframeTrack:_r,LOD:YE,LatheGeometry:Hy,Layers:Kh,LessCompare:UE,LessDepth:bv,LessEqualCompare:Ty,LessEqualDepth:ef,LessEqualStencilFunc:w3,LessStencilFunc:T3,Light:Gu,LightProbe:LT,Line:Fu,Line3:MD,LineBasicMaterial:ss,LineCurve:Fb,LineCurve3:rT,LineDashedMaterial:xT,LineLoop:JE,LineSegments:Vo,LinearFilter:oi,LinearInterpolant:Yb,LinearMipMapLinearFilter:r3,LinearMipMapNearestFilter:s3,LinearMipmapLinearFilter:Io,LinearMipmapNearestFilter:Jp,LinearSRGBColorSpace:zu,LinearToneMapping:db,LinearTransfer:dm,Loader:Ns,LoaderUtils:Jx,LoadingManager:Qb,LoopOnce:wE,LoopPingPong:RE,LoopRepeat:CE,MOUSE:Gc,Material:Ba,MaterialLoader:Zy,MathUtils:uR,Matrix2:aS,Matrix3:en,Matrix4:Xt,MaxEquation:cE,Mesh:Yi,MeshBasicMaterial:Vu,MeshDepthMaterial:Wb,MeshDistanceMaterial:qb,MeshLambertMaterial:yT,MeshMatcapMaterial:_T,MeshNormalMaterial:vT,MeshPhongMaterial:mT,MeshPhysicalMaterial:pT,MeshStandardMaterial:Xb,MeshToonMaterial:gT,MinEquation:uE,MirroredRepeatWrapping:cm,MixOperation:EE,MultiplyBlending:Xx,MultiplyOperation:Am,NearestFilter:Bi,NearestMipMapLinearFilter:a3,NearestMipMapNearestFilter:i3,NearestMipmapLinearFilter:Vh,NearestMipmapNearestFilter:_b,NeutralToneMapping:yb,NeverCompare:LE,NeverDepth:_v,NeverStencilFunc:E3,NoBlending:Po,NoColorSpace:Cl,NoNormalPacking:p3,NoToneMapping:gr,NormalAnimationBlendMode:Ey,NormalBlending:Kc,NormalGAPacking:g3,NormalRGPacking:m3,NotEqualCompare:PE,NotEqualDepth:Tv,NotEqualStencilFunc:R3,NumberKeyframeTrack:xm,Object3D:Cn,ObjectLoader:XN,ObjectSpaceNormalMap:DE,OctahedronGeometry:Dm,OneFactor:hE,OneMinusConstantAlphaFactor:ME,OneMinusConstantColorFactor:bE,OneMinusDstAlphaFactor:gE,OneMinusDstColorFactor:yE,OneMinusSrcAlphaFactor:yv,OneMinusSrcColorFactor:pE,OrthographicCamera:Dl,PCFShadowMap:Xh,PCFSoftShadowMap:Kp,PMREMGenerator:nb,Path:ly,PerspectiveCamera:zi,Plane:wl,PlaneGeometry:sd,PlaneHelper:OD,PointLight:CT,PointLightHelper:AD,Points:$E,PointsMaterial:Ob,PolarGridHelper:ND,PolyhedronGeometry:Hu,PositionalAudio:JN,PropertyBinding:wn,PropertyMixer:zT,QuadraticBezierCurve:kb,QuadraticBezierCurve3:Vb,Quaternion:Pa,QuaternionKeyframeTrack:Im,QuaternionLinearInterpolant:ET,R11_EAC_Format:Uv,RED_GREEN_RGTC2_Format:ny,RED_RGTC1_Format:ey,REVISION:my,RG11_EAC_Format:Ov,RGBADepthPacking:f3,RGBAFormat:Oa,RGBAIntegerFormat:My,RGBA_ASTC_10x10_Format:Yv,RGBA_ASTC_10x5_Format:Wv,RGBA_ASTC_10x6_Format:qv,RGBA_ASTC_10x8_Format:jv,RGBA_ASTC_12x10_Format:Zv,RGBA_ASTC_12x12_Format:Qv,RGBA_ASTC_4x4_Format:zv,RGBA_ASTC_5x4_Format:Bv,RGBA_ASTC_5x5_Format:Fv,RGBA_ASTC_6x5_Format:kv,RGBA_ASTC_6x6_Format:Vv,RGBA_ASTC_8x5_Format:Hv,RGBA_ASTC_8x6_Format:Gv,RGBA_ASTC_8x8_Format:Xv,RGBA_BPTC_Format:Kv,RGBA_ETC2_EAC_Format:Lv,RGBA_PVRTC_2BPPV1_Format:Rv,RGBA_PVRTC_4BPPV1_Format:Cv,RGBA_S3TC_DXT1_Format:em,RGBA_S3TC_DXT3_Format:tm,RGBA_S3TC_DXT5_Format:nm,RGBDepthPacking:h3,RGBFormat:Tb,RGBIntegerFormat:o3,RGB_BPTC_SIGNED_Format:Jv,RGB_BPTC_UNSIGNED_Format:$v,RGB_ETC1_Format:Nv,RGB_ETC2_Format:Dv,RGB_PVRTC_2BPPV1_Format:wv,RGB_PVRTC_4BPPV1_Format:Av,RGB_S3TC_DXT1_Format:$p,RGDepthPacking:d3,RGFormat:tf,RGIntegerFormat:Sy,RawShaderMaterial:Gb,Ray:of,Raycaster:FT,RectAreaLight:DT,RedFormat:by,RedIntegerFormat:wm,ReinhardToneMapping:pb,RenderTarget:Cb,RenderTarget3D:hD,RepeatWrapping:um,ReplaceStencilOp:y3,ReverseSubtractEquation:lE,RingGeometry:Gy,SIGNED_R11_EAC_Format:Iv,SIGNED_RED_GREEN_RGTC2_Format:iy,SIGNED_RED_RGTC1_Format:ty,SIGNED_RG11_EAC_Format:Pv,SRGBColorSpace:Ia,SRGBTransfer:zn,Scene:Lb,ShaderChunk:un,ShaderLib:qr,ShaderMaterial:yr,ShadowMaterial:dT,Shape:$c,ShapeGeometry:Xy,ShapePath:BD,ShapeUtils:jr,ShortType:bb,Skeleton:Uy,SkeletonHelper:TD,SkinnedMesh:ZE,Source:Iu,Sphere:_a,SphereGeometry:Lm,Spherical:eb,SphericalHarmonics3:Jb,SplineCurve:Hb,SpotLight:wT,SpotLightHelper:ED,Sprite:jE,SpriteMaterial:Ub,SrcAlphaFactor:vv,SrcAlphaSaturateFactor:_E,SrcColorFactor:dE,StaticCopyUsage:P3,StaticDrawUsage:pm,StaticReadUsage:U3,StereoCamera:YN,StreamCopyUsage:B3,StreamDrawUsage:L3,StreamReadUsage:O3,StringKeyframeTrack:cf,SubtractEquation:oE,SubtractiveBlending:Gx,TOUCH:Xc,TangentSpaceNormalMap:ku,TetrahedronGeometry:Wy,Texture:wi,TextureLoader:kN,TextureUtils:XD,Timer:vD,TimestampQuery:k3,TorusGeometry:qy,TorusKnotGeometry:jy,Triangle:Cs,TriangleFanDrawMode:c3,TriangleStripDrawMode:u3,TrianglesDrawMode:l3,TubeGeometry:Yy,UVMapping:vy,Uint16BufferAttribute:Rb,Uint32BufferAttribute:Nb,Uint8BufferAttribute:wR,Uint8ClampedBufferAttribute:CR,Uniform:iS,UniformsGroup:pD,UniformsLib:pt,UniformsUtils:XE,UnsignedByteType:ts,UnsignedInt101111Type:Mb,UnsignedInt248Type:jh,UnsignedInt5999Type:Sb,UnsignedIntType:vr,UnsignedShort4444Type:_y,UnsignedShort5551Type:xy,UnsignedShortType:qh,VSMShadowMap:jc,Vector2:ze,Vector3:j,Vector4:jn,VectorKeyframeTrack:bm,VideoFrameTexture:KR,VideoTexture:eT,WebGL3DRenderTarget:pR,WebGLArrayRenderTarget:dR,WebGLCoordinateSystem:ks,WebGLCubeRenderTarget:Db,WebGLRenderTarget:Hs,WebGLRenderer:jT,WebGLUtils:qT,WebGPUCoordinateSystem:Yh,WebXRController:pv,WireframeGeometry:hT,WrapAroundEnding:hm,ZeroCurvatureEnding:Yc,ZeroFactor:fE,ZeroSlopeEnding:Zc,ZeroStencilOp:v3,createCanvasElement:kE,error:Rt,getConsoleFunction:W3,log:gm,setConsoleFunction:X3,warn:ft,warnOnce:Zh},Symbol.toStringTag,{value:"Module"}));var Rx={exports:{}},Nx={},Dx={exports:{}},Lx={};var L1;function FP(){if(L1)return Lx;L1=1;var r=Tm();function e(x,b){return x===b&&(x!==0||1/x===1/b)||x!==x&&b!==b}var t=typeof Object.is=="function"?Object.is:e,n=r.useState,s=r.useEffect,u=r.useLayoutEffect,f=r.useDebugValue;function h(x,b){var M=b(),A=n({inst:{value:M,getSnapshot:b}}),R=A[0].inst,w=A[1];return u(function(){R.value=M,R.getSnapshot=b,m(R)&&w({inst:R})},[x,M,b]),s(function(){return m(R)&&w({inst:R}),x(function(){m(R)&&w({inst:R})})},[x]),f(M),M}function m(x){var b=x.getSnapshot;x=x.value;try{var M=b();return!t(x,M)}catch{return!0}}function g(x,b){return b()}var _=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?g:h;return Lx.useSyncExternalStore=r.useSyncExternalStore!==void 0?r.useSyncExternalStore:_,Lx}var U1;function kP(){return U1||(U1=1,Dx.exports=FP()),Dx.exports}var I1;function VP(){if(I1)return Nx;I1=1;var r=Tm(),e=kP();function t(g,_){return g===_&&(g!==0||1/g===1/_)||g!==g&&_!==_}var n=typeof Object.is=="function"?Object.is:t,s=e.useSyncExternalStore,u=r.useRef,f=r.useEffect,h=r.useMemo,m=r.useDebugValue;return Nx.useSyncExternalStoreWithSelector=function(g,_,x,b,M){var A=u(null);if(A.current===null){var R={hasValue:!1,value:null};A.current=R}else R=A.current;A=h(function(){function E(z){if(!N){if(N=!0,D=z,z=b(z),M!==void 0&&R.hasValue){var H=R.value;if(M(H,z))return U=H}return U=z}if(H=U,n(D,z))return H;var W=b(z);return M!==void 0&&M(H,W)?(D=z,H):(D=z,U=W)}var N=!1,D,U,B=x===void 0?null:x;return[function(){return E(_())},B===null?void 0:function(){return E(B())}]},[_,x,b,M]);var w=s(g,A[0],A[1]);return f(function(){R.hasValue=!0,R.value=w},[w]),m(w),w},Nx}var O1;function HP(){return O1||(O1=1,Rx.exports=VP()),Rx.exports}var GP=HP();const XP=py(GP),P1=r=>{let e;const t=new Set,n=(g,_)=>{const x=typeof g=="function"?g(e):g;if(!Object.is(x,e)){const b=e;e=_??(typeof x!="object"||x===null)?x:Object.assign({},e,x),t.forEach(M=>M(e,b))}},s=()=>e,h={setState:n,getState:s,getInitialState:()=>m,subscribe:g=>(t.add(g),()=>t.delete(g))},m=e=r(n,s,h);return h},WP=(r=>r?P1(r):P1),{useSyncExternalStoreWithSelector:qP}=XP,jP=r=>r;function YP(r,e=jP,t){const n=qP(r.subscribe,r.getState,r.getInitialState,e,t);return hb.useDebugValue(n),n}const z1=(r,e)=>{const t=WP(r),n=(s,u=e)=>YP(t,s,u);return Object.assign(n,t),n},ZP=((r,e)=>r?z1(r,e):z1);var sb=nE();const QP=py(sb);function sS(r,e,t){if(!r)return;if(t(r)===!0)return r;let n=e?r.return:r.child;for(;n;){const s=sS(n,e,t);if(s)return s;n=e?null:n.sibling}}function YT(r){try{return Object.defineProperties(r,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return r}}const rS=YT(rt.createContext(null));class ZT extends rt.Component{render(){return rt.createElement(rS.Provider,{value:this._reactInternals},this.props.children)}}function QT(){const r=rt.useContext(rS);if(r===null)throw new Error("its-fine: useFiber must be called within a !");const e=rt.useId();return rt.useMemo(()=>{for(const t of[r,r?.alternate]){if(!t)continue;const n=sS(t,!1,s=>{let u=s.memoizedState;for(;u;){if(u.memoizedState===e)return!0;u=u.next}});if(n)return n}},[r,e])}const KP=Symbol.for("react.context"),JP=r=>r!==null&&typeof r=="object"&&"$$typeof"in r&&r.$$typeof===KP;function $P(){const r=QT(),[e]=rt.useState(()=>new Map);e.clear();let t=r;for(;t;){const n=t.type;JP(n)&&n!==rS&&!e.has(n)&&e.set(n,rt.use(YT(n))),t=t.return}return e}function ez(){const r=$P();return rt.useMemo(()=>Array.from(r.keys()).reduce((e,t)=>n=>rt.createElement(e,null,rt.createElement(t.Provider,{...n,value:r.get(t)})),e=>rt.createElement(ZT,{...e})),[r])}function KT(r){let e=r.root;for(;e.getState().previousRoot;)e=e.getState().previousRoot;return e}const JT=r=>r&&r.isOrthographicCamera,tz=r=>r&&r.hasOwnProperty("current"),nz=r=>r!=null&&(typeof r=="string"||typeof r=="number"||r.isColor),Om=((r,e)=>typeof window<"u"&&(((r=window.document)==null?void 0:r.createElement)||((e=window.navigator)==null?void 0:e.product)==="ReactNative"))()?rt.useLayoutEffect:rt.useEffect;function $T(r){const e=rt.useRef(r);return Om(()=>{e.current=r},[r]),e}function iz(){const r=QT(),e=ez();return rt.useMemo(()=>({children:t})=>{const s=!!sS(r,!0,u=>u.type===rt.StrictMode)?rt.StrictMode:rt.Fragment;return he.jsx(s,{children:he.jsx(e,{children:t})})},[r,e])}function az({set:r}){return Om(()=>(r(new Promise(()=>null)),()=>r(!1)),[r]),null}const sz=(r=>(r=class extends rt.Component{constructor(...t){super(...t),this.state={error:!1}}componentDidCatch(t){this.props.set(t)}render(){return this.state.error?null:this.props.children}},r.getDerivedStateFromError=()=>({error:!0}),r))();function eA(r){var e;const t=typeof window<"u"?(e=window.devicePixelRatio)!=null?e:2:1;return Array.isArray(r)?Math.min(Math.max(r[0],t),r[1]):r}function Bh(r){var e;return(e=r.__r3f)==null?void 0:e.root.getState()}const yi={obj:r=>r===Object(r)&&!yi.arr(r)&&typeof r!="function",fun:r=>typeof r=="function",str:r=>typeof r=="string",num:r=>typeof r=="number",boo:r=>typeof r=="boolean",und:r=>r===void 0,nul:r=>r===null,arr:r=>Array.isArray(r),equ(r,e,{arrays:t="shallow",objects:n="reference",strict:s=!0}={}){if(typeof r!=typeof e||!!r!=!!e)return!1;if(yi.str(r)||yi.num(r)||yi.boo(r))return r===e;const u=yi.obj(r);if(u&&n==="reference")return r===e;const f=yi.arr(r);if(f&&t==="reference")return r===e;if((f||u)&&r===e)return!0;let h;for(h in r)if(!(h in e))return!1;if(u&&t==="shallow"&&n==="shallow"){for(h in s?e:r)if(!yi.equ(r[h],e[h],{strict:s,objects:"reference"}))return!1}else for(h in s?e:r)if(r[h]!==e[h])return!1;if(yi.und(h)){if(f&&r.length===0&&e.length===0||u&&Object.keys(r).length===0&&Object.keys(e).length===0)return!0;if(r!==e)return!1}return!0}};function rz(r){r.type!=="Scene"&&(r.dispose==null||r.dispose());for(const e in r){const t=r[e];t?.type!=="Scene"&&(t==null||t.dispose==null||t.dispose())}}const tA=["children","key","ref"];function oz(r){const e={};for(const t in r)tA.includes(t)||(e[t]=r[t]);return e}function uy(r,e,t,n){const s=r;let u=s?.__r3f;return u||(u={root:e,type:t,parent:null,children:[],props:oz(n),object:s,eventCount:0,handlers:{},isHidden:!1},s&&(s.__r3f=u)),u}function Em(r,e){if(!e.includes("-"))return{root:r,key:e,target:r[e]};if(e in r)return{root:r,key:e,target:r[e]};let t=r;const n=e.split("-");for(const s of n){if(typeof t!="object"||t===null){if(t!==void 0){const u=n.slice(n.indexOf(s)).join("-");return{root:t,key:u,target:void 0}}return{root:r,key:e,target:void 0}}e=s,r=t,t=t[e]}return{root:r,key:e,target:t}}const B1=/-\d+$/;function cy(r,e){if(yi.str(e.props.attach)){if(B1.test(e.props.attach)){const s=e.props.attach.replace(B1,""),{root:u,key:f}=Em(r.object,s);Array.isArray(u[f])||(u[f]=[])}const{root:t,key:n}=Em(r.object,e.props.attach);e.previousAttach=t[n],t[n]=e.object}else yi.fun(e.props.attach)&&(e.previousAttach=e.props.attach(r.object,e.object))}function fy(r,e){if(yi.str(e.props.attach)){const{root:t,key:n}=Em(r.object,e.props.attach),s=e.previousAttach;s===void 0?delete t[n]:t[n]=s}else e.previousAttach==null||e.previousAttach(r.object,e.object);delete e.previousAttach}const rb=[...tA,"args","dispose","attach","object","onUpdate","dispose"],F1=new Map;function lz(r){let e=F1.get(r.constructor);try{e||(e=new r.constructor,F1.set(r.constructor,e))}catch{}return e}function uz(r,e){const t={};for(const n in e)if(!rb.includes(n)&&!yi.equ(e[n],r.props[n])){t[n]=e[n];for(const s in e)s.startsWith(`${n}-`)&&(t[s]=e[s])}for(const n in r.props){if(rb.includes(n)||e.hasOwnProperty(n))continue;const{root:s,key:u}=Em(r.object,n);if(s.constructor&&s.constructor.length===0){const f=lz(s);yi.und(f)||(t[u]=f[u])}else t[u]=0}return t}const cz=["map","emissiveMap","sheenColorMap","specularColorMap","envMap"],fz=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function Lu(r,e){var t;const n=r.__r3f,s=n&&KT(n).getState(),u=n?.eventCount;for(const h in e){let m=e[h];if(rb.includes(h))continue;if(n&&fz.test(h)){typeof m=="function"?n.handlers[h]=m:delete n.handlers[h],n.eventCount=Object.keys(n.handlers).length;continue}if(m===void 0)continue;let{root:g,key:_,target:x}=Em(r,h);if(x===void 0&&(typeof g!="object"||g===null))throw Error(`R3F: Cannot set "${h}". Ensure it is an object before setting "${_}".`);if(x instanceof Kh&&m instanceof Kh)x.mask=m.mask;else if(x instanceof yt&&nz(m))x.set(m);else if(x!==null&&typeof x=="object"&&typeof x.set=="function"&&typeof x.copy=="function"&&m!=null&&m.constructor&&x.constructor===m.constructor)x.copy(m);else if(x!==null&&typeof x=="object"&&typeof x.set=="function"&&Array.isArray(m))typeof x.fromArray=="function"?x.fromArray(m):x.set(...m);else if(x!==null&&typeof x=="object"&&typeof x.set=="function"&&typeof m=="number")typeof x.setScalar=="function"?x.setScalar(m):x.set(m);else{var f;g[_]=m,s&&!s.linear&&cz.includes(_)&&(f=g[_])!=null&&f.isTexture&&g[_].format===Oa&&g[_].type===ts&&(g[_].colorSpace=Ia)}}if(n!=null&&n.parent&&s!=null&&s.internal&&(t=n.object)!=null&&t.isObject3D&&u!==n.eventCount){const h=n.object,m=s.internal.interaction.indexOf(h);m>-1&&s.internal.interaction.splice(m,1),n.eventCount&&h.raycast!==null&&s.internal.interaction.push(h)}return n&&n.props.attach===void 0&&(n.object.isBufferGeometry?n.props.attach="geometry":n.object.isMaterial&&(n.props.attach="material")),n&&od(n),r}function od(r){var e;if(!r.parent)return;r.props.onUpdate==null||r.props.onUpdate(r.object);const t=(e=r.root)==null||e.getState==null?void 0:e.getState();t&&t.internal.frames===0&&t.invalidate()}function hz(r,e){r.manual||(JT(r)?(r.left=e.width/-2,r.right=e.width/2,r.top=e.height/2,r.bottom=e.height/-2):r.aspect=e.width/e.height,r.updateProjectionMatrix())}const ws=r=>r?.isObject3D;function uv(r){return(r.eventObject||r.object).uuid+"/"+r.index+r.instanceId}function nA(r,e,t,n){const s=t.get(e);s&&(t.delete(e),t.size===0&&(r.delete(n),s.target.releasePointerCapture(n)))}function dz(r,e){const{internal:t}=r.getState();t.interaction=t.interaction.filter(n=>n!==e),t.initialHits=t.initialHits.filter(n=>n!==e),t.hovered.forEach((n,s)=>{(n.eventObject===e||n.object===e)&&t.hovered.delete(s)}),t.capturedMap.forEach((n,s)=>{nA(t.capturedMap,e,n,s)})}function pz(r){function e(m){const{internal:g}=r.getState(),_=m.offsetX-g.initialClick[0],x=m.offsetY-g.initialClick[1];return Math.round(Math.sqrt(_*_+x*x))}function t(m){return m.filter(g=>["Move","Over","Enter","Out","Leave"].some(_=>{var x;return(x=g.__r3f)==null?void 0:x.handlers["onPointer"+_]}))}function n(m,g){const _=r.getState(),x=new Set,b=[],M=g?g(_.internal.interaction):_.internal.interaction;for(let E=0;E{const D=Bh(E.object),U=Bh(N.object);return!D||!U?E.distance-N.distance:U.events.priority-D.events.priority||E.distance-N.distance}).filter(E=>{const N=uv(E);return x.has(N)?!1:(x.add(N),!0)});_.events.filter&&(R=_.events.filter(R,_));for(const E of R){let N=E.object;for(;N;){var w;(w=N.__r3f)!=null&&w.eventCount&&b.push({...E,eventObject:N}),N=N.parent}}if("pointerId"in m&&_.internal.capturedMap.has(m.pointerId))for(let E of _.internal.capturedMap.get(m.pointerId).values())x.has(uv(E.intersection))||b.push(E.intersection);return b}function s(m,g,_,x){if(m.length){const b={stopped:!1};for(const M of m){let A=Bh(M.object);if(A||M.object.traverseAncestors(R=>{const w=Bh(R);if(w)return A=w,!1}),A){const{raycaster:R,pointer:w,camera:E,internal:N}=A,D=new j(w.x,w.y,0).unproject(E),U=I=>{var P,Z;return(P=(Z=N.capturedMap.get(I))==null?void 0:Z.has(M.eventObject))!=null?P:!1},B=I=>{const P={intersection:M,target:g.target};N.capturedMap.has(I)?N.capturedMap.get(I).set(M.eventObject,P):N.capturedMap.set(I,new Map([[M.eventObject,P]])),g.target.setPointerCapture(I)},z=I=>{const P=N.capturedMap.get(I);P&&nA(N.capturedMap,M.eventObject,P,I)};let H={};for(let I in g){let P=g[I];typeof P!="function"&&(H[I]=P)}let W={...M,...H,pointer:w,intersections:m,stopped:b.stopped,delta:_,unprojectedPoint:D,ray:R.ray,camera:E,stopPropagation(){const I="pointerId"in g&&N.capturedMap.get(g.pointerId);if((!I||I.has(M.eventObject))&&(W.stopped=b.stopped=!0,N.hovered.size&&Array.from(N.hovered.values()).find(P=>P.eventObject===M.eventObject))){const P=m.slice(0,m.indexOf(M));u([...P,M])}},target:{hasPointerCapture:U,setPointerCapture:B,releasePointerCapture:z},currentTarget:{hasPointerCapture:U,setPointerCapture:B,releasePointerCapture:z},nativeEvent:g};if(x(W),b.stopped===!0)break}}}return m}function u(m){const{internal:g}=r.getState();for(const _ of g.hovered.values())if(!m.length||!m.find(x=>x.object===_.object&&x.index===_.index&&x.instanceId===_.instanceId)){const b=_.eventObject.__r3f;if(g.hovered.delete(uv(_)),b!=null&&b.eventCount){const M=b.handlers,A={..._,intersections:m};M.onPointerOut==null||M.onPointerOut(A),M.onPointerLeave==null||M.onPointerLeave(A)}}}function f(m,g){for(let _=0;_u([]);case"onLostPointerCapture":return g=>{const{internal:_}=r.getState();"pointerId"in g&&_.capturedMap.has(g.pointerId)&&requestAnimationFrame(()=>{_.capturedMap.has(g.pointerId)&&(_.capturedMap.delete(g.pointerId),u([]))})}}return function(_){const{onPointerMissed:x,internal:b}=r.getState();b.lastEvent.current=_;const M=m==="onPointerMove",A=m==="onClick"||m==="onContextMenu"||m==="onDoubleClick",w=n(_,M?t:void 0),E=A?e(_):0;m==="onPointerDown"&&(b.initialClick=[_.offsetX,_.offsetY],b.initialHits=w.map(D=>D.eventObject)),A&&!w.length&&E<=2&&(f(_,b.interaction),x&&x(_)),M&&u(w);function N(D){const U=D.eventObject,B=U.__r3f;if(!(B!=null&&B.eventCount))return;const z=B.handlers;if(M){if(z.onPointerOver||z.onPointerEnter||z.onPointerOut||z.onPointerLeave){const H=uv(D),W=b.hovered.get(H);W?W.stopped&&D.stopPropagation():(b.hovered.set(H,D),z.onPointerOver==null||z.onPointerOver(D),z.onPointerEnter==null||z.onPointerEnter(D))}z.onPointerMove==null||z.onPointerMove(D)}else{const H=z[m];H?(!A||b.initialHits.includes(U))&&(f(_,b.interaction.filter(W=>!b.initialHits.includes(W))),H(D)):A&&b.initialHits.includes(U)&&f(_,b.interaction.filter(W=>!b.initialHits.includes(W)))}}s(w,_,E,N)}}return{handlePointer:h}}const k1=r=>!!(r!=null&&r.render),iA=rt.createContext(null),mz=(r,e)=>{const t=ZP((h,m)=>{const g=new j,_=new j,x=new j;function b(E=m().camera,N=_,D=m().size){const{width:U,height:B,top:z,left:H}=D,W=U/B;N.isVector3?x.copy(N):x.set(...N);const I=E.getWorldPosition(g).distanceTo(x);if(JT(E))return{width:U/E.zoom,height:B/E.zoom,top:z,left:H,factor:1,distance:I,aspect:W};{const P=E.fov*Math.PI/180,Z=2*Math.tan(P/2)*I,se=Z*(U/B);return{width:se,height:Z,top:z,left:H,factor:U/se,distance:I,aspect:W}}}let M;const A=E=>h(N=>({performance:{...N.performance,current:E}})),R=new ze;return{set:h,get:m,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(E=1)=>r(m(),E),advance:(E,N)=>e(E,N,m()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new eS,pointer:R,mouse:R,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{const E=m();M&&clearTimeout(M),E.performance.current!==E.performance.min&&A(E.performance.min),M=setTimeout(()=>A(m().performance.max),E.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:b},setEvents:E=>h(N=>({...N,events:{...N.events,...E}})),setSize:(E,N,D=0,U=0)=>{const B=m().camera,z={width:E,height:N,top:D,left:U};h(H=>({size:z,viewport:{...H.viewport,...b(B,_,z)}}))},setDpr:E=>h(N=>{const D=eA(E);return{viewport:{...N.viewport,dpr:D,initialDpr:N.viewport.initialDpr||D}}}),setFrameloop:(E="always")=>{const N=m().clock;N.stop(),N.elapsedTime=0,E!=="never"&&(N.start(),N.elapsedTime=0),h(()=>({frameloop:E}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:rt.createRef(),active:!1,frames:0,priority:0,subscribe:(E,N,D)=>{const U=m().internal;return U.priority=U.priority+(N>0?1:0),U.subscribers.push({ref:E,priority:N,store:D}),U.subscribers=U.subscribers.sort((B,z)=>B.priority-z.priority),()=>{const B=m().internal;B!=null&&B.subscribers&&(B.priority=B.priority-(N>0?1:0),B.subscribers=B.subscribers.filter(z=>z.ref!==E))}}}}}),n=t.getState();let s=n.size,u=n.viewport.dpr,f=n.camera;return t.subscribe(()=>{const{camera:h,size:m,viewport:g,gl:_,set:x}=t.getState();if(m.width!==s.width||m.height!==s.height||g.dpr!==u){s=m,u=g.dpr,hz(h,m),g.dpr>0&&_.setPixelRatio(g.dpr);const b=typeof HTMLCanvasElement<"u"&&_.domElement instanceof HTMLCanvasElement;_.setSize(m.width,m.height,b)}h!==f&&(f=h,x(b=>({viewport:{...b.viewport,...b.viewport.getCurrentViewport(h)}})))}),t.subscribe(h=>r(h)),t};function aA(){const r=rt.useContext(iA);if(!r)throw new Error("R3F: Hooks can only be used within the Canvas component!");return r}function Nu(r=t=>t,e){return aA()(r,e)}function gz(r,e=0){const t=aA(),n=t.getState().internal.subscribe,s=$T(r);return Om(()=>n(s,e,t),[e,n,t]),null}const vz=1,yz=8,_z=32,xz=2;var bz={version:"9.5.0"};function Sz(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var V1={exports:{}},H1={exports:{}},G1;function Mz(){return G1||(G1=1,(function(r){r.exports=function(e){function t(o,l,p,v){return new Ld(o,l,p,v)}function n(){}function s(o){var l="https://react.dev/errors/"+o;if(1cl||(o.current=$f[cl],$f[cl]=null,cl--)}function A(o,l){cl++,$f[cl]=o.current,o.current=l}function R(o){return o>>>=0,o===0?32:31-(eh(o)/Jg|0)|0}function w(o){var l=o&42;if(l!==0)return l;switch(o&-o){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return o&261888;case 262144:case 524288:case 1048576:case 2097152:return o&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return o&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return o}}function E(o,l,p){var v=o.pendingLanes;if(v===0)return 0;var T=0,C=o.suspendedLanes,F=o.pingedLanes;o=o.warmLanes;var ee=v&134217727;return ee!==0?(v=ee&~C,v!==0?T=w(v):(F&=ee,F!==0?T=w(F):p||(p=ee&~o,p!==0&&(T=w(p))))):(ee=v&~C,ee!==0?T=w(ee):F!==0?T=w(F):p||(p=v&~o,p!==0&&(T=w(p)))),T===0?0:l!==0&&l!==T&&(l&C)===0&&(C=T&-T,p=l&-l,C>=p||C===32&&(p&4194048)!==0)?l:T}function N(o,l){return(o.pendingLanes&~(o.suspendedLanes&~o.pingedLanes)&l)===0}function D(o,l){switch(o){case 1:case 2:case 4:case 8:case 64:return l+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function U(){var o=ou;return ou<<=1,(ou&62914560)===0&&(ou=4194304),o}function B(o){for(var l=[],p=0;31>p;p++)l.push(o);return l}function z(o,l){o.pendingLanes|=l,l!==268435456&&(o.suspendedLanes=0,o.pingedLanes=0,o.warmLanes=0)}function H(o,l,p,v,T,C){var F=o.pendingLanes;o.pendingLanes=p,o.suspendedLanes=0,o.pingedLanes=0,o.warmLanes=0,o.expiredLanes&=p,o.entangledLanes&=p,o.errorRecoveryDisabledLanes&=p,o.shellSuspendCounter=0;var ee=o.entanglements,we=o.expirationTimes,ke=o.hiddenUpdates;for(p=F&~p;0)":-1T||we[v]!==ke[T]){var it=` +`+we[v].replace(" at new "," at ");return o.displayName&&it.includes("")&&(it=it.replace("",o.displayName)),it}while(1<=v&&0<=T);break}}}finally{_c=!1,Error.prepareStackTrace=p}return(p=o?o.displayName||o.name:"")?pe(p):""}function q(o,l){switch(o.tag){case 26:case 27:case 5:return pe(o.type);case 16:return pe("Lazy");case 13:return o.child!==l&&l!==null?pe("Suspense Fallback"):pe("Suspense");case 19:return pe("SuspenseList");case 0:case 15:return Y(o.type,!1);case 11:return Y(o.type.render,!1);case 1:return Y(o.type,!0);case 31:return pe("Activity");default:return""}}function ne(o){try{var l="",p=null;do l+=q(o,p),p=o,o=o.return;while(o);return l}catch(v){return` +Error generating stack: `+v.message+` +`+v.stack}}function be(o,l){if(typeof o=="object"&&o!==null){var p=yp.get(o);return p!==void 0?p:(l={value:o,source:l,stack:ne(l)},yp.set(o,l),l)}return{value:o,source:l,stack:ne(l)}}function Ne(o,l){Or[rr++]=xc,Or[rr++]=Pn,Pn=o,xc=l}function X(o,l,p){gs[Ya++]=Qi,gs[Ya++]=Is,gs[Ya++]=vs,vs=o;var v=Qi;o=Is;var T=32-Ta(v)-1;v&=~(1<>=F,T-=F,Qi=1<<32-Ta(l)+T|p<xn?(qi=zt,zt=null):qi=zt.sibling;var Tn=gt(_e,zt,Me[xn],$e);if(Tn===null){zt===null&&(zt=qi);break}o&&zt&&Tn.alternate===null&&l(_e,zt),ce=C(Tn,ce,xn),ri===null?Ot=Tn:ri.sibling=Tn,ri=Tn,zt=qi}if(xn===Me.length)return p(_e,zt),dn&&Ne(_e,xn),Ot;if(zt===null){for(;xnxn?(qi=zt,zt=null):qi=zt.sibling;var Es=gt(_e,zt,Tn.value,$e);if(Es===null){zt===null&&(zt=qi);break}o&&zt&&Es.alternate===null&&l(_e,zt),ce=C(Es,ce,xn),ri===null?Ot=Es:ri.sibling=Es,ri=Es,zt=qi}if(Tn.done)return p(_e,zt),dn&&Ne(_e,xn),Ot;if(zt===null){for(;!Tn.done;xn++,Tn=Me.next())Tn=We(_e,Tn.value,$e),Tn!==null&&(ce=C(Tn,ce,xn),ri===null?Ot=Tn:ri.sibling=Tn,ri=Tn);return dn&&Ne(_e,xn),Ot}for(zt=v(zt);!Tn.done;xn++,Tn=Me.next())Tn=qt(zt,_e,xn,Tn.value,$e),Tn!==null&&(o&&Tn.alternate!==null&&zt.delete(Tn.key===null?xn:Tn.key),ce=C(Tn,ce,xn),ri===null?Ot=Tn:ri.sibling=Tn,ri=Tn);return o&&zt.forEach(function(h_){return l(_e,h_)}),dn&&Ne(_e,xn),Ot}function Ro(_e,ce,Me,$e){if(typeof Me=="object"&&Me!==null&&Me.type===il&&Me.key===null&&(Me=Me.props.children),typeof Me=="object"&&Me!==null){switch(Me.$$typeof){case ir:e:{for(var Ot=Me.key;ce!==null;){if(ce.key===Ot){if(Ot=Me.type,Ot===il){if(ce.tag===7){p(_e,ce.sibling),$e=T(ce,Me.props.children),$e.return=_e,_e=$e;break e}}else if(ce.elementType===Ot||typeof Ot=="object"&&Ot!==null&&Ot.$$typeof===ha&&Jt(Ot)===ce.type){p(_e,ce.sibling),$e=T(ce,Me.props),Qr($e,Me),$e.return=_e,_e=$e;break e}p(_e,ce);break}else l(_e,ce);ce=ce.sibling}Me.type===il?($e=hs(Me.props.children,_e.mode,$e,Me.key),$e.return=_e,_e=$e):($e=Nr(Me.type,Me.key,Me.props,null,_e.mode,$e),Qr($e,Me),$e.return=_e,_e=$e)}return F(_e);case nl:e:{for(Ot=Me.key;ce!==null;){if(ce.key===Ot)if(ce.tag===4&&ce.stateNode.containerInfo===Me.containerInfo&&ce.stateNode.implementation===Me.implementation){p(_e,ce.sibling),$e=T(ce,Me.children||[]),$e.return=_e,_e=$e;break e}else{p(_e,ce);break}else l(_e,ce);ce=ce.sibling}$e=Od(Me,_e.mode,$e),$e.return=_e,_e=$e}return F(_e);case ha:return Me=Jt(Me),Ro(_e,ce,Me,$e)}if(mo(Me))return vi(_e,ce,Me,$e);if(_(Me)){if(Ot=_(Me),typeof Ot!="function")throw Error(s(150));return Me=Ot.call(Me),gu(_e,ce,Me,$e)}if(typeof Me.then=="function")return Ro(_e,ce,Ci(Me),$e);if(Me.$$typeof===ds)return Ro(_e,ce,O(_e,Me),$e);Kr(_e,Me)}return typeof Me=="string"&&Me!==""||typeof Me=="number"||typeof Me=="bigint"?(Me=""+Me,ce!==null&&ce.tag===6?(p(_e,ce.sibling),$e=T(ce,Me),$e.return=_e,_e=$e):(p(_e,ce),$e=Ud(Me,_e.mode,$e),$e.return=_e,_e=$e),F(_e)):p(_e,ce)}return function(_e,ce,Me,$e){try{dl=0;var Ot=Ro(_e,ce,Me,$e);return bo=null,Ot}catch(zt){if(zt===Oi||zt===bs)throw zt;var ri=t(29,zt,null,_e.mode);return ri.lanes=$e,ri.return=_e,ri}}}function Jr(){for(var o=ur,l=pl=ur=0;lC?C:8);var F=Ut.T,ee={};Ut.T=ee,vf(o,!1,l,p);try{var we=T(),ke=Ut.S;if(ke!==null&&ke(ee,we),we!==null&&typeof we=="object"&&typeof we.then=="function"){var it=je(we,v);Zu(o,l,it,Yn(o))}else Zu(o,l,v,Yn(o))}catch(We){Zu(o,l,{then:function(){},status:"rejected",reason:We},Yn())}finally{hn(C),F!==null&&ee.types!==null&&(F.types=ee.types),Ut.T=F}}function km(o){var l=o.memoizedState;if(l!==null)return l;l={memoizedState:ol,baseState:ol,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Wn,lastRenderedState:ol},next:null};var p={};return l.next={memoizedState:p,baseState:p,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Wn,lastRenderedState:p},next:null},o.memoizedState=l,o=o.alternate,o!==null&&(o.memoizedState=l),l}function dd(){return G(ll)}function gf(){return ut().memoizedState}function Vm(){return ut().memoizedState}function e_(o){for(var l=o.return;l!==null;){switch(l.tag){case 24:case 3:var p=Yn();o=Va(p);var v=Ha(l,o,p);v!==null&&(ti(v,l,p),$r(v,l,p)),l={cache:Te()},o.payload=l;return}l=l.return}}function t_(o,l,p){var v=Yn();p={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null},yf(o)?Gm(l,p):(p=Go(o,l,p,v),p!==null&&(ti(p,o,v),Xm(p,l,v)))}function Hm(o,l,p){var v=Yn();Zu(o,l,p,v)}function Zu(o,l,p,v){var T={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null};if(yf(o))Gm(l,T);else{var C=o.alternate;if(o.lanes===0&&(C===null||C.lanes===0)&&(C=l.lastRenderedReducer,C!==null))try{var F=l.lastRenderedState,ee=C(F,p);if(T.hasEagerState=!0,T.eagerState=ee,pi(ee,F))return xr(o,l,T,0),rn===null&&Jr(),!1}catch{}if(p=Go(o,l,T,v),p!==null)return ti(p,o,v),Xm(p,l,v),!0}return!1}function vf(o,l,p,v){if(v={lane:2,revertLane:me(),gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},yf(o)){if(l)throw Error(s(479))}else l=Go(o,p,v,2),l!==null&&ti(l,o,2)}function yf(o){var l=o.alternate;return o===Zt||l!==null&&l===Zt}function Gm(o,l){$t=sn=!0;var p=o.pending;p===null?l.next=l:(l.next=p.next,p.next=l),o.pending=l}function Xm(o,l,p){if((p&4194048)!==0){var v=l.lanes;v&=o.pendingLanes,p|=v,l.lanes=p,I(o,p)}}function pd(o,l,p,v){l=o.memoizedState,p=p(v,l),p=p==null?l:Bf({},l,p),o.memoizedState=p,o.lanes===0&&(o.updateQueue.baseState=p)}function _f(o,l,p,v,T,C,F){return o=o.stateNode,typeof o.shouldComponentUpdate=="function"?o.shouldComponentUpdate(v,C,F):l.prototype&&l.prototype.isPureReactComponent?!Ue(p,v)||!Ue(T,C):!0}function Wm(o,l,p,v){o=l.state,typeof l.componentWillReceiveProps=="function"&&l.componentWillReceiveProps(p,v),typeof l.UNSAFE_componentWillReceiveProps=="function"&&l.UNSAFE_componentWillReceiveProps(p,v),l.state!==o&&Mc.enqueueReplaceState(l,l.state,null)}function Yo(o,l){var p=l;if("ref"in l){p={};for(var v in l)v!=="ref"&&(p[v]=l[v])}if(o=o.defaultProps){p===l&&(p=Bf({},p));for(var T in o)p[T]===void 0&&(p[T]=o[T])}return p}function xf(o,l){try{var p=o.onUncaughtError;p(l.value,{componentStack:l.stack})}catch(v){setTimeout(function(){throw v})}}function md(o,l,p){try{var v=o.onCaughtError;v(p.value,{componentStack:p.stack,errorBoundary:l.tag===1?l.stateNode:null})}catch(T){setTimeout(function(){throw T})}}function gd(o,l,p){return p=Va(p),p.tag=3,p.payload={element:null},p.callback=function(){xf(o,l)},p}function qm(o){return o=Va(o),o.tag=3,o}function jm(o,l,p,v){var T=p.type.getDerivedStateFromError;if(typeof T=="function"){var C=v.value;o.payload=function(){return T(C)},o.callback=function(){md(l,p,v)}}var F=p.stateNode;F!==null&&typeof F.componentDidCatch=="function"&&(o.callback=function(){md(l,p,v),typeof T!="function"&&(kr===null?kr=new Set([this]):kr.add(this));var ee=v.stack;this.componentDidCatch(v.value,{componentStack:ee!==null?ee:""})})}function n_(o,l,p,v,T){if(p.flags|=32768,v!==null&&typeof v=="object"&&typeof v.then=="function"){if(l=p.alternate,l!==null&&ot(l,p,T,!0),p=wa.current,p!==null){switch(p.tag){case 31:case 13:return Ca===null?Ql():p.alternate===null&&si===0&&(si=3),p.flags&=-257,p.flags|=65536,p.lanes=T,v===lr?p.flags|=16384:(l=p.updateQueue,l===null?p.updateQueue=new Set([v]):l.add(v),$l(o,v,T)),!1;case 22:return p.flags|=65536,v===lr?p.flags|=16384:(l=p.updateQueue,l===null?(l={transitions:null,markerInstances:null,retryQueue:new Set([v])},p.updateQueue=l):(p=l.retryQueue,p===null?l.retryQueue=new Set([v]):p.add(v)),$l(o,v,T)),!1}throw Error(s(435,p.tag))}return $l(o,v,T),Ql(),!1}if(dn)return l=wa.current,l!==null?((l.flags&65536)===0&&(l.flags|=256),l.flags|=65536,l.lanes=T,v!==oh&&(o=Error(s(422),{cause:v}),He(be(o,p)))):(v!==oh&&(l=Error(s(423),{cause:v}),He(be(l,p))),o=o.current.alternate,o.flags|=65536,T&=-T,o.lanes|=T,v=be(v,p),T=gd(o.stateNode,v,T),Xo(o,T),si!==4&&(si=2)),!1;var C=Error(s(520),{cause:v});if(C=be(C,p),Tc===null?Tc=[C]:Tc.push(C),si!==4&&(si=2),l===null)return!0;v=be(v,p),p=l;do{switch(p.tag){case 3:return p.flags|=65536,o=T&-T,p.lanes|=o,o=gd(p.stateNode,v,o),Xo(p,o),!1;case 1:if(l=p.type,C=p.stateNode,(p.flags&128)===0&&(typeof l.getDerivedStateFromError=="function"||C!==null&&typeof C.componentDidCatch=="function"&&(kr===null||!kr.has(C))))return p.flags|=65536,T&=-T,p.lanes|=T,T=qm(T),jm(T,o,p,v),Xo(p,T),!1}p=p.return}while(p!==null);return!1}function Zi(o,l,p,v){l.child=o===null?xp(l,null,p,v):Ji(l,o.child,p,v)}function Ym(o,l,p,v,T){p=p.render;var C=l.ref;if("ref"in v){var F={};for(var ee in v)ee!=="ref"&&(F[ee]=v[ee])}else F=v;return Qe(l),v=xt(o,l,p,F,C,T),ee=Mn(),o!==null&&!qn?(Bn(o,l,T),qs(o,l,T)):(dn&&ee&&oe(l),l.flags|=1,Zi(o,l,v,T),l.child)}function Zm(o,l,p,v,T){if(o===null){var C=p.type;return typeof C=="function"&&!$o(C)&&C.defaultProps===void 0&&p.compare===null?(l.tag=15,l.type=C,Qm(o,l,C,v,T)):(o=Nr(p.type,null,v,l,l.mode,T),o.ref=l.ref,o.return=l,l.child=o)}if(C=o.child,!Ku(o,T)){var F=C.memoizedProps;if(p=p.compare,p=p!==null?p:Ue,p(F,v)&&o.ref===l.ref)return qs(o,l,T)}return l.flags|=1,o=qa(C,v),o.ref=l.ref,o.return=l,l.child=o}function Qm(o,l,p,v,T){if(o!==null){var C=o.memoizedProps;if(Ue(C,v)&&o.ref===l.ref)if(qn=!1,l.pendingProps=v=C,Ku(o,T))(o.flags&131072)!==0&&(qn=!0);else return l.lanes=o.lanes,qs(o,l,T)}return Sf(o,l,p,v,T)}function Km(o,l,p,v){var T=v.children,C=o!==null?o.memoizedState:null;if(o===null&&l.stateNode===null&&(l.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),v.mode==="hidden"){if((l.flags&128)!==0){if(C=C!==null?C.baseLanes|p:p,o!==null){for(v=l.child=o.child,T=0;v!==null;)T=T|v.lanes|v.childLanes,v=v.sibling;v=T&~C}else v=0,l.child=null;return kl(o,l,C,p,v)}if((p&536870912)!==0)l.memoizedState={baseLanes:0,cachePool:null},o!==null&&at(l,C!==null?C.cachePool:null),C!==null?eo(l,C):Xs(),ye(l);else return v=l.lanes=536870912,kl(o,l,C!==null?C.baseLanes|p:p,p,v)}else C!==null?(at(l,C.cachePool),eo(l,C),ue(),l.memoizedState=null):(o!==null&&at(l,null),Xs(),ue());return Zi(o,l,T,p),l.child}function Zo(o,l){return o!==null&&o.tag===22||l.stateNode!==null||(l.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),l.sibling}function kl(o,l,p,v,T){var C=Ge();return C=C===null?null:{parent:hi?Kn._currentValue:Kn._currentValue2,pool:C},l.memoizedState={baseLanes:p,cachePool:C},o!==null&&at(l,null),Xs(),ye(l),o!==null&&ot(o,l,v,!0),l.childLanes=T,null}function bf(o,l){return l=io({mode:l.mode,children:l.children},o.mode),l.ref=o.ref,o.child=l,l.return=o,l}function vd(o,l,p){return Ji(l,o.child,null,p),o=bf(l,l.pendingProps),o.flags|=2,Je(l),l.memoizedState=null,o}function Jm(o,l,p){var v=l.pendingProps,T=(l.flags&128)!==0;if(l.flags&=-129,o===null){if(dn){if(v.mode==="hidden")return o=bf(l,v),l.lanes=536870912,Zo(null,o);if(Se(l),(o=Qn)?(o=ap(o,pa),o!==null&&(l.memoizedState={dehydrated:o,treeContext:vs!==null?{id:Qi,overflow:Is}:null,retryLane:536870912,hydrationErrors:null},p=Id(o),p.return=l,l.child=p,Ui=l,Qn=null)):o=null,o===null)throw st(l);return l.lanes=536870912,null}return bf(l,v)}var C=o.memoizedState;if(C!==null){var F=C.dehydrated;if(Se(l),T)if(l.flags&256)l.flags&=-257,l=vd(o,l,p);else if(l.memoizedState!==null)l.child=o.child,l.flags|=128,l=null;else throw Error(s(558));else if(qn||ot(o,l,p,!1),T=(p&o.childLanes)!==0,qn||T){if(v=rn,v!==null&&(F=P(v,p),F!==0&&F!==C.retryLane))throw C.retryLane=F,na(o,F),ti(v,o,F),ga;Ql(),l=vd(o,l,p)}else o=C.treeContext,Zn&&(Qn=Og(F),Ui=l,dn=!0,or=null,pa=!1,o!==null&&Fe(l,o)),l=bf(l,v),l.flags|=4096;return l}return o=qa(o.child,{mode:v.mode,children:v.children}),o.ref=l.ref,l.child=o,o.return=l,o}function Qu(o,l){var p=l.ref;if(p===null)o!==null&&o.ref!==null&&(l.flags|=4194816);else{if(typeof p!="function"&&typeof p!="object")throw Error(s(284));(o===null||o.ref!==p)&&(l.flags|=4194816)}}function Sf(o,l,p,v,T){return Qe(l),p=xt(o,l,p,v,void 0,T),v=Mn(),o!==null&&!qn?(Bn(o,l,T),qs(o,l,T)):(dn&&v&&oe(l),l.flags|=1,Zi(o,l,p,T),l.child)}function yd(o,l,p,v,T,C){return Qe(l),l.updateQueue=null,p=St(l,v,p,T),Lt(o),v=Mn(),o!==null&&!qn?(Bn(o,l,C),qs(o,l,C)):(dn&&v&&oe(l),l.flags|=1,Zi(o,l,p,C),l.child)}function Qo(o,l,p,v,T){if(Qe(l),l.stateNode===null){var C=ar,F=p.contextType;typeof F=="object"&&F!==null&&(C=G(F)),C=new p(v,C),l.memoizedState=C.state!==null&&C.state!==void 0?C.state:null,C.updater=Mc,l.stateNode=C,C._reactInternals=l,C=l.stateNode,C.props=v,C.state=l.memoizedState,C.refs={},Ri(l),F=p.contextType,C.context=typeof F=="object"&&F!==null?G(F):ar,C.state=l.memoizedState,F=p.getDerivedStateFromProps,typeof F=="function"&&(pd(l,p,F,v),C.state=l.memoizedState),typeof p.getDerivedStateFromProps=="function"||typeof C.getSnapshotBeforeUpdate=="function"||typeof C.UNSAFE_componentWillMount!="function"&&typeof C.componentWillMount!="function"||(F=C.state,typeof C.componentWillMount=="function"&&C.componentWillMount(),typeof C.UNSAFE_componentWillMount=="function"&&C.UNSAFE_componentWillMount(),F!==C.state&&Mc.enqueueReplaceState(C,C.state,null),br(l,v,C,T),Ds(),C.state=l.memoizedState),typeof C.componentDidMount=="function"&&(l.flags|=4194308),v=!0}else if(o===null){C=l.stateNode;var ee=l.memoizedProps,we=Yo(p,ee);C.props=we;var ke=C.context,it=p.contextType;F=ar,typeof it=="object"&&it!==null&&(F=G(it));var We=p.getDerivedStateFromProps;it=typeof We=="function"||typeof C.getSnapshotBeforeUpdate=="function",ee=l.pendingProps!==ee,it||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(ee||ke!==F)&&Wm(l,C,v,F),Za=!1;var gt=l.memoizedState;C.state=gt,br(l,v,C,T),Ds(),ke=l.memoizedState,ee||gt!==ke||Za?(typeof We=="function"&&(pd(l,p,We,v),ke=l.memoizedState),(we=Za||_f(l,p,we,v,gt,ke,F))?(it||typeof C.UNSAFE_componentWillMount!="function"&&typeof C.componentWillMount!="function"||(typeof C.componentWillMount=="function"&&C.componentWillMount(),typeof C.UNSAFE_componentWillMount=="function"&&C.UNSAFE_componentWillMount()),typeof C.componentDidMount=="function"&&(l.flags|=4194308)):(typeof C.componentDidMount=="function"&&(l.flags|=4194308),l.memoizedProps=v,l.memoizedState=ke),C.props=v,C.state=ke,C.context=F,v=we):(typeof C.componentDidMount=="function"&&(l.flags|=4194308),v=!1)}else{C=l.stateNode,ka(o,l),F=l.memoizedProps,it=Yo(p,F),C.props=it,We=l.pendingProps,gt=C.context,ke=p.contextType,we=ar,typeof ke=="object"&&ke!==null&&(we=G(ke)),ee=p.getDerivedStateFromProps,(ke=typeof ee=="function"||typeof C.getSnapshotBeforeUpdate=="function")||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(F!==We||gt!==we)&&Wm(l,C,v,we),Za=!1,gt=l.memoizedState,C.state=gt,br(l,v,C,T),Ds();var qt=l.memoizedState;F!==We||gt!==qt||Za||o!==null&&o.dependencies!==null&&Tt(o.dependencies)?(typeof ee=="function"&&(pd(l,p,ee,v),qt=l.memoizedState),(it=Za||_f(l,p,it,v,gt,qt,we)||o!==null&&o.dependencies!==null&&Tt(o.dependencies))?(ke||typeof C.UNSAFE_componentWillUpdate!="function"&&typeof C.componentWillUpdate!="function"||(typeof C.componentWillUpdate=="function"&&C.componentWillUpdate(v,qt,we),typeof C.UNSAFE_componentWillUpdate=="function"&&C.UNSAFE_componentWillUpdate(v,qt,we)),typeof C.componentDidUpdate=="function"&&(l.flags|=4),typeof C.getSnapshotBeforeUpdate=="function"&&(l.flags|=1024)):(typeof C.componentDidUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=1024),l.memoizedProps=v,l.memoizedState=qt),C.props=v,C.state=qt,C.context=we,v=it):(typeof C.componentDidUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||F===o.memoizedProps&>===o.memoizedState||(l.flags|=1024),v=!1)}return C=v,Qu(o,l),v=(l.flags&128)!==0,C||v?(C=l.stateNode,p=v&&typeof p.getDerivedStateFromError!="function"?null:C.render(),l.flags|=1,o!==null&&v?(l.child=Ji(l,o.child,null,T),l.child=Ji(l,null,p,T)):Zi(o,l,p,T),l.memoizedState=C.state,o=l.child):o=qs(o,l,T),o}function $m(o,l,p,v){return Nt(),l.flags|=256,Zi(o,l,p,v),l.child}function _d(o){return{baseLanes:o,cachePool:Xe()}}function xd(o,l,p){return o=o!==null?o.childLanes&~p:0,l&&(o|=va),o}function bd(o,l,p){var v=l.pendingProps,T=!1,C=(l.flags&128)!==0,F;if((F=C)||(F=o!==null&&o.memoizedState===null?!1:(ui.current&2)!==0),F&&(T=!0,l.flags&=-129),F=(l.flags&32)!==0,l.flags&=-33,o===null){if(dn){if(T?re(l):ue(),(o=Qn)?(o=Fg(o,pa),o!==null&&(l.memoizedState={dehydrated:o,treeContext:vs!==null?{id:Qi,overflow:Is}:null,retryLane:536870912,hydrationErrors:null},p=Id(o),p.return=l,l.child=p,Ui=l,Qn=null)):o=null,o===null)throw st(l);return qf(o)?l.lanes=32:l.lanes=536870912,null}var ee=v.children;return v=v.fallback,T?(ue(),T=l.mode,ee=io({mode:"hidden",children:ee},T),v=hs(v,T,p,null),ee.return=l,v.return=l,ee.sibling=v,l.child=ee,v=l.child,v.memoizedState=_d(p),v.childLanes=xd(o,F,p),l.memoizedState=gl,Zo(null,v)):(re(l),Mf(l,ee))}var we=o.memoizedState;if(we!==null&&(ee=we.dehydrated,ee!==null)){if(C)l.flags&256?(re(l),l.flags&=-257,l=Ko(o,l,p)):l.memoizedState!==null?(ue(),l.child=o.child,l.flags|=128,l=null):(ue(),ee=v.fallback,T=l.mode,v=io({mode:"visible",children:v.children},T),ee=hs(ee,T,p,null),ee.flags|=2,v.return=l,ee.return=l,v.sibling=ee,l.child=v,Ji(l,o.child,null,p),v=l.child,v.memoizedState=_d(p),v.childLanes=xd(o,F,p),l.memoizedState=gl,l=Zo(null,v));else if(re(l),qf(ee))F=jf(ee).digest,v=Error(s(419)),v.stack="",v.digest=F,He({value:v,source:null,stack:null}),l=Ko(o,l,p);else if(qn||ot(o,l,p,!1),F=(p&o.childLanes)!==0,qn||F){if(F=rn,F!==null&&(v=P(F,p),v!==0&&v!==we.retryLane))throw we.retryLane=v,na(o,v),ti(F,o,v),ga;vo(ee)||Ql(),l=Ko(o,l,p)}else vo(ee)?(l.flags|=192,l.child=o.child,l=null):(o=we.treeContext,Zn&&(Qn=Pg(ee),Ui=l,dn=!0,or=null,pa=!1,o!==null&&Fe(l,o)),l=Mf(l,v.children),l.flags|=4096);return l}return T?(ue(),ee=v.fallback,T=l.mode,we=o.child,C=we.sibling,v=qa(we,{mode:"hidden",children:v.children}),v.subtreeFlags=we.subtreeFlags&65011712,C!==null?ee=qa(C,ee):(ee=hs(ee,T,p,null),ee.flags|=2),ee.return=l,v.return=l,v.sibling=ee,l.child=v,Zo(null,v),v=l.child,ee=o.child.memoizedState,ee===null?ee=_d(p):(T=ee.cachePool,T!==null?(we=hi?Kn._currentValue:Kn._currentValue2,T=T.parent!==we?{parent:we,pool:we}:T):T=Xe(),ee={baseLanes:ee.baseLanes|p,cachePool:T}),v.memoizedState=ee,v.childLanes=xd(o,F,p),l.memoizedState=gl,Zo(o.child,v)):(re(l),p=o.child,o=p.sibling,p=qa(p,{mode:"visible",children:v.children}),p.return=l,p.sibling=null,o!==null&&(F=l.deletions,F===null?(l.deletions=[o],l.flags|=16):F.push(o)),l.child=p,l.memoizedState=null,p)}function Mf(o,l){return l=io({mode:"visible",children:l},o.mode),l.return=o,o.child=l}function io(o,l){return o=t(22,o,null,l),o.lanes=0,o}function Ko(o,l,p){return Ji(l,o.child,null,p),o=Mf(l,l.pendingProps.children),o.flags|=2,l.memoizedState=null,o}function eg(o,l,p){o.lanes|=l;var v=o.alternate;v!==null&&(v.lanes|=l),Q(o.return,l,p)}function Vl(o,l,p,v,T,C){var F=o.memoizedState;F===null?o.memoizedState={isBackwards:l,rendering:null,renderingStartTime:0,last:v,tail:p,tailMode:T,treeForkCount:C}:(F.isBackwards=l,F.rendering=null,F.renderingStartTime=0,F.last=v,F.tail=p,F.tailMode=T,F.treeForkCount=C)}function Sd(o,l,p){var v=l.pendingProps,T=v.revealOrder,C=v.tail;v=v.children;var F=ui.current,ee=(F&2)!==0;if(ee?(F=F&1|2,l.flags|=128):F&=1,A(ui,F),Zi(o,l,v,p),v=dn?xc:0,!ee&&o!==null&&(o.flags&128)!==0)e:for(o=l.child;o!==null;){if(o.tag===13)o.memoizedState!==null&&eg(o,p,l);else if(o.tag===19)eg(o,p,l);else if(o.child!==null){o.child.return=o,o=o.child;continue}if(o===l)break e;for(;o.sibling===null;){if(o.return===null||o.return===l)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}switch(T){case"forwards":for(p=l.child,T=null;p!==null;)o=p.alternate,o!==null&&mt(o)===null&&(T=p),p=p.sibling;p=T,p===null?(T=l.child,l.child=null):(T=p.sibling,p.sibling=null),Vl(l,!1,T,p,C,v);break;case"backwards":case"unstable_legacy-backwards":for(p=null,T=l.child,l.child=null;T!==null;){if(o=T.alternate,o!==null&&mt(o)===null){l.child=T;break}o=T.sibling,T.sibling=p,p=T,T=o}Vl(l,!0,p,null,C,v);break;case"together":Vl(l,!1,null,null,void 0,v);break;default:l.memoizedState=null}return l.child}function qs(o,l,p){if(o!==null&&(l.dependencies=o.dependencies),Fr|=l.lanes,(p&l.childLanes)===0)if(o!==null){if(ot(o,l,p,!1),(p&l.childLanes)===0)return null}else return null;if(o!==null&&l.child!==o.child)throw Error(s(153));if(l.child!==null){for(o=l.child,p=qa(o,o.pendingProps),l.child=p,p.return=l;o.sibling!==null;)o=o.sibling,p=p.sibling=qa(o,o.pendingProps),p.return=l;p.sibling=null}return l.child}function Ku(o,l){return(o.lanes&l)!==0?!0:(o=o.dependencies,!!(o!==null&&Tt(o)))}function Md(o,l,p){switch(l.tag){case 3:lt(l,l.stateNode.containerInfo),Oe(l,Kn,o.memoizedState.cache),Nt();break;case 27:case 5:Re(l);break;case 4:lt(l,l.stateNode.containerInfo);break;case 10:Oe(l,l.type,l.memoizedProps.value);break;case 31:if(l.memoizedState!==null)return l.flags|=128,Se(l),null;break;case 13:var v=l.memoizedState;if(v!==null)return v.dehydrated!==null?(re(l),l.flags|=128,null):(p&l.child.childLanes)!==0?bd(o,l,p):(re(l),o=qs(o,l,p),o!==null?o.sibling:null);re(l);break;case 19:var T=(o.flags&128)!==0;if(v=(p&l.childLanes)!==0,v||(ot(o,l,p,!1),v=(p&l.childLanes)!==0),T){if(v)return Sd(o,l,p);l.flags|=128}if(T=l.memoizedState,T!==null&&(T.rendering=null,T.tail=null,T.lastEffect=null),A(ui,ui.current),v)break;return null;case 22:return l.lanes=0,Km(o,l,p,l.pendingProps);case 24:Oe(l,Kn,o.memoizedState.cache)}return qs(o,l,p)}function Ed(o,l,p){if(o!==null)if(o.memoizedProps!==l.pendingProps)qn=!0;else{if(!Ku(o,p)&&(l.flags&128)===0)return qn=!1,Md(o,l,p);qn=(o.flags&131072)!==0}else qn=!1,dn&&(l.flags&1048576)!==0&&X(l,xc,l.index);switch(l.lanes=0,l.tag){case 16:e:{var v=l.pendingProps;if(o=Jt(l.elementType),l.type=o,typeof o=="function")$o(o)?(v=Yo(o,v),l.tag=1,l=Qo(null,l,o,v,p)):(l.tag=0,l=Sf(null,l,o,v,p));else{if(o!=null){var T=o.$$typeof;if(T===eu){l.tag=11,l=Ym(null,l,o,v,p);break e}else if(T===kf){l.tag=14,l=Zm(null,l,o,v,p);break e}}throw l=x(o)||o,Error(s(306,l,""))}}return l;case 0:return Sf(o,l,l.type,l.pendingProps,p);case 1:return v=l.type,T=Yo(v,l.pendingProps),Qo(o,l,v,T,p);case 3:e:{if(lt(l,l.stateNode.containerInfo),o===null)throw Error(s(387));var C=l.pendingProps;T=l.memoizedState,v=T.element,ka(o,l),br(l,C,null,p);var F=l.memoizedState;if(C=F.cache,Oe(l,Kn,C),C!==T.cache&&Et(l,[Kn],p,!0),Ds(),C=F.element,Zn&&T.isDehydrated)if(T={element:C,isDehydrated:!1,cache:F.cache},l.updateQueue.baseState=T,l.memoizedState=T,l.flags&256){l=$m(o,l,C,p);break e}else if(C!==v){v=be(Error(s(424)),l),He(v),l=$m(o,l,C,p);break e}else for(Zn&&(Qn=Ig(l.stateNode.containerInfo),Ui=l,dn=!0,or=null,pa=!0),p=xp(l,null,C,p),l.child=p;p;)p.flags=p.flags&-3|4096,p=p.sibling;else{if(Nt(),C===v){l=qs(o,l,p);break e}Zi(o,l,C,p)}l=l.child}return l;case 26:if(ms)return Qu(o,l),o===null?(p=up(l.type,null,l.pendingProps,null))?l.memoizedState=p:dn||(l.stateNode=Kf(l.type,l.pendingProps,Ki.current,l)):l.memoizedState=up(l.type,o.memoizedProps,l.pendingProps,o.memoizedState),null;case 27:if(Li)return Re(l),o===null&&Li&&dn&&(v=l.stateNode=Jf(l.type,l.pendingProps,Ki.current,Xi.current,!1),Ui=l,pa=!0,Qn=ip(l.type,v,Qn)),Zi(o,l,l.pendingProps.children,p),Qu(o,l),o===null&&(l.flags|=4194304),l.child;case 5:return o===null&&dn&&(Yg(l.type,l.pendingProps,Xi.current),(T=v=Qn)&&(v=zg(v,l.type,l.pendingProps,pa),v!==null?(l.stateNode=v,Ui=l,Qn=Ug(v),pa=!1,T=!0):T=!1),T||st(l)),Re(l),T=l.type,C=l.pendingProps,F=o!==null?o.memoizedProps:null,v=C.children,da(T,C)?v=null:F!==null&&da(T,F)&&(l.flags|=32),l.memoizedState!==null&&(T=xt(o,l,Pt,null,null,p),hi?ll._currentValue=T:ll._currentValue2=T),Qu(o,l),Zi(o,l,v,p),l.child;case 6:return o===null&&dn&&(lp(l.pendingProps,Xi.current),(o=p=Qn)&&(p=Bg(p,l.pendingProps,pa),p!==null?(l.stateNode=p,Ui=l,Qn=null,o=!0):o=!1),o||st(l)),null;case 13:return bd(o,l,p);case 4:return lt(l,l.stateNode.containerInfo),v=l.pendingProps,o===null?l.child=Ji(l,null,v,p):Zi(o,l,v,p),l.child;case 11:return Ym(o,l,l.type,l.pendingProps,p);case 7:return Zi(o,l,l.pendingProps,p),l.child;case 8:return Zi(o,l,l.pendingProps.children,p),l.child;case 12:return Zi(o,l,l.pendingProps.children,p),l.child;case 10:return v=l.pendingProps,Oe(l,l.type,v.value),Zi(o,l,v.children,p),l.child;case 9:return T=l.type._context,v=l.pendingProps.children,Qe(l),T=G(T),v=v(T),l.flags|=1,Zi(o,l,v,p),l.child;case 14:return Zm(o,l,l.type,l.pendingProps,p);case 15:return Qm(o,l,l.type,l.pendingProps,p);case 19:return Sd(o,l,p);case 31:return Jm(o,l,p);case 22:return Km(o,l,p,l.pendingProps);case 24:return Qe(l),v=G(Kn),o===null?(T=Ge(),T===null&&(T=rn,C=Te(),T.pooledCache=C,C.refCount++,C!==null&&(T.pooledCacheLanes|=p),T=C),l.memoizedState={parent:v,cache:T},Ri(l),Oe(l,Kn,T)):((o.lanes&p)!==0&&(ka(o,l),br(l,null,null,p),Ds()),T=o.memoizedState,C=l.memoizedState,T.parent!==v?(T={parent:v,cache:v},l.memoizedState=T,l.lanes===0&&(l.memoizedState=l.updateQueue.baseState=T),Oe(l,Kn,v)):(v=C.cache,Oe(l,Kn,v),v!==T.cache&&Et(l,[Kn],p,!0))),Zi(o,l,l.pendingProps.children,p),l.child;case 29:throw l.pendingProps}throw Error(s(156,l.tag))}function os(o){o.flags|=4}function Ju(o){ja&&(o.flags|=8)}function tg(o,l){if(o!==null&&o.child===l.child)return!1;if((l.flags&16)!==0)return!0;for(o=l.child;o!==null;){if((o.flags&8218)!==0||(o.subtreeFlags&8218)!==0)return!0;o=o.sibling}return!1}function Td(o,l,p,v){if(gn)for(p=l.child;p!==null;){if(p.tag===5||p.tag===6)hc(o,p.stateNode);else if(!(p.tag===4||Li&&p.tag===27)&&p.child!==null){p.child.return=p,p=p.child;continue}if(p===l)break;for(;p.sibling===null;){if(p.return===null||p.return===l)return;p=p.return}p.sibling.return=p.return,p=p.sibling}else if(ja)for(var T=l.child;T!==null;){if(T.tag===5){var C=T.stateNode;p&&v&&(C=Rg(C,T.type,T.memoizedProps)),hc(o,C)}else if(T.tag===6)C=T.stateNode,p&&v&&(C=tp(C,T.memoizedProps)),hc(o,C);else if(T.tag!==4){if(T.tag===22&&T.memoizedState!==null)C=T.child,C!==null&&(C.return=T),Td(o,T,!0,!0);else if(T.child!==null){T.child.return=T,T=T.child;continue}}if(T===l)break;for(;T.sibling===null;){if(T.return===null||T.return===l)return;T=T.return}T.sibling.return=T.return,T=T.sibling}}function ng(o,l,p,v){var T=!1;if(ja)for(var C=l.child;C!==null;){if(C.tag===5){var F=C.stateNode;p&&v&&(F=Rg(F,C.type,C.memoizedProps)),$d(o,F)}else if(C.tag===6)F=C.stateNode,p&&v&&(F=tp(F,C.memoizedProps)),$d(o,F);else if(C.tag!==4){if(C.tag===22&&C.memoizedState!==null)T=C.child,T!==null&&(T.return=C),ng(o,C,!0,!0),T=!0;else if(C.child!==null){C.child.return=C,C=C.child;continue}}if(C===l)break;for(;C.sibling===null;){if(C.return===null||C.return===l)return T;C=C.return}C.sibling.return=C.return,C=C.sibling}return T}function ig(o,l){if(ja&&tg(o,l)){o=l.stateNode;var p=o.containerInfo,v=Jd();ng(v,l,!1,!1),o.pendingChildren=v,os(l),Cg(p,v)}}function Ad(o,l,p,v){if(gn)o.memoizedProps!==v&&os(l);else if(ja){var T=o.stateNode,C=o.memoizedProps;if((o=tg(o,l))||C!==v){var F=Xi.current;C=wg(T,p,C,v,!o,null),C===T?l.stateNode=T:(Ju(l),Ma(C,p,v,F)&&os(l),l.stateNode=C,o&&Td(C,l,!1,!1))}else l.stateNode=T}}function ca(o,l,p,v,T){if((o.mode&32)!==0&&(p===null?dc(l,v):su(l,p,v))){if(o.flags|=16777216,(T&335544128)===T||Vd(l,v))if(ni(o.stateNode,l,v))o.flags|=8192;else if(mn())o.flags|=8192;else throw ma=lr,uh}else o.flags&=-16777217}function Hl(o,l){if(dp(l)){if(o.flags|=16777216,!pp(l))if(mn())o.flags|=8192;else throw ma=lr,uh}else o.flags&=-16777217}function $u(o,l){l!==null&&(o.flags|=4),o.flags&16384&&(l=o.tag!==22?U():536870912,o.lanes|=l,pu|=l)}function Gl(o,l){if(!dn)switch(o.tailMode){case"hidden":l=o.tail;for(var p=null;l!==null;)l.alternate!==null&&(p=l),l=l.sibling;p===null?o.tail=null:p.sibling=null;break;case"collapsed":p=o.tail;for(var v=null;p!==null;)p.alternate!==null&&(v=p),p=p.sibling;v===null?l||o.tail===null?o.tail=null:o.tail.sibling=null:v.sibling=null}}function Fn(o){var l=o.alternate!==null&&o.alternate.child===o.child,p=0,v=0;if(l)for(var T=o.child;T!==null;)p|=T.lanes|T.childLanes,v|=T.subtreeFlags&65011712,v|=T.flags&65011712,T.return=o,T=T.sibling;else for(T=o.child;T!==null;)p|=T.lanes|T.childLanes,v|=T.subtreeFlags,v|=T.flags,T.return=o,T=T.sibling;return o.subtreeFlags|=v,o.childLanes=p,l}function ag(o,l,p){var v=l.pendingProps;switch(Ae(l),l.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Fn(l),null;case 1:return Fn(l),null;case 3:return p=l.stateNode,v=null,o!==null&&(v=o.memoizedState.cache),l.memoizedState.cache!==v&&(l.flags|=2048),nt(Kn),de(),p.pendingContext&&(p.context=p.pendingContext,p.pendingContext=null),(o===null||o.child===null)&&(tn(l)?os(l):o===null||o.memoizedState.isDehydrated&&(l.flags&256)===0||(l.flags|=1024,Le())),ig(o,l),Fn(l),null;case 26:if(ms){var T=l.type,C=l.memoizedState;return o===null?(os(l),C!==null?(Fn(l),Hl(l,C)):(Fn(l),ca(l,T,null,v,p))):C?C!==o.memoizedState?(os(l),Fn(l),Hl(l,C)):(Fn(l),l.flags&=-16777217):(C=o.memoizedProps,gn?C!==v&&os(l):Ad(o,l,T,v),Fn(l),ca(l,T,C,v,p)),null}case 27:if(Li){if(tt(l),p=Ki.current,T=l.type,o!==null&&l.stateNode!=null)gn?o.memoizedProps!==v&&os(l):Ad(o,l,T,v);else{if(!v){if(l.stateNode===null)throw Error(s(166));return Fn(l),null}o=Xi.current,tn(l)?ht(l,o):(o=Jf(T,v,p,o,!0),l.stateNode=o,os(l))}return Fn(l),null}case 5:if(tt(l),T=l.type,o!==null&&l.stateNode!=null)Ad(o,l,T,v);else{if(!v){if(l.stateNode===null)throw Error(s(166));return Fn(l),null}if(C=Xi.current,tn(l))ht(l,C),Wg(l.stateNode,T,v,C)&&(l.flags|=64);else{var F=Fd(T,v,Ki.current,C,l);Ju(l),Td(F,l,!1,!1),l.stateNode=F,Ma(F,T,v,C)&&os(l)}}return Fn(l),ca(l,l.type,o===null?null:o.memoizedProps,l.pendingProps,p),null;case 6:if(o&&l.stateNode!=null)p=o.memoizedProps,gn?p!==v&&os(l):ja&&(p!==v?(o=Ki.current,p=Xi.current,Ju(l),l.stateNode=Ur(v,o,p,l)):l.stateNode=o.stateNode);else{if(typeof v!="string"&&l.stateNode===null)throw Error(s(166));if(o=Ki.current,p=Xi.current,tn(l)){if(!Zn)throw Error(s(176));if(o=l.stateNode,p=l.memoizedProps,v=null,T=Ui,T!==null)switch(T.tag){case 27:case 5:v=T.memoizedProps}o_(o,p,l,v)||st(l,!0)}else Ju(l),l.stateNode=Ur(v,o,p,l)}return Fn(l),null;case 31:if(p=l.memoizedState,o===null||o.memoizedState!==null){if(v=tn(l),p!==null){if(o===null){if(!v)throw Error(s(318));if(!Zn)throw Error(s(556));if(o=l.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(s(557));sp(o,l)}else Nt(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;Fn(l),o=!1}else p=Le(),o!==null&&o.memoizedState!==null&&(o.memoizedState.hydrationErrors=p),o=!0;if(!o)return l.flags&256?(Je(l),l):(Je(l),null);if((l.flags&128)!==0)throw Error(s(558))}return Fn(l),null;case 13:if(v=l.memoizedState,o===null||o.memoizedState!==null&&o.memoizedState.dehydrated!==null){if(T=tn(l),v!==null&&v.dehydrated!==null){if(o===null){if(!T)throw Error(s(318));if(!Zn)throw Error(s(344));if(T=l.memoizedState,T=T!==null?T.dehydrated:null,!T)throw Error(s(317));Vg(T,l)}else Nt(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;Fn(l),T=!1}else T=Le(),o!==null&&o.memoizedState!==null&&(o.memoizedState.hydrationErrors=T),T=!0;if(!T)return l.flags&256?(Je(l),l):(Je(l),null)}return Je(l),(l.flags&128)!==0?(l.lanes=p,l):(p=v!==null,o=o!==null&&o.memoizedState!==null,p&&(v=l.child,T=null,v.alternate!==null&&v.alternate.memoizedState!==null&&v.alternate.memoizedState.cachePool!==null&&(T=v.alternate.memoizedState.cachePool.pool),C=null,v.memoizedState!==null&&v.memoizedState.cachePool!==null&&(C=v.memoizedState.cachePool.pool),C!==T&&(v.flags|=2048)),p!==o&&p&&(l.child.flags|=8192),$u(l,l.updateQueue),Fn(l),null);case 4:return de(),ig(o,l),o===null&&On(l.stateNode.containerInfo),Fn(l),null;case 10:return nt(l.type),Fn(l),null;case 19:if(M(ui),v=l.memoizedState,v===null)return Fn(l),null;if(T=(l.flags&128)!==0,C=v.rendering,C===null)if(T)Gl(v,!1);else{if(si!==0||o!==null&&(o.flags&128)!==0)for(o=l.child;o!==null;){if(C=mt(o),C!==null){for(l.flags|=128,Gl(v,!1),o=C.updateQueue,l.updateQueue=o,$u(l,o),l.subtreeFlags=0,o=p,p=l.child;p!==null;)Of(p,o),p=p.sibling;return A(ui,ui.current&1|2),dn&&Ne(l,v.treeForkCount),l.child}o=o.sibling}v.tail!==null&&aa()>Co&&(l.flags|=128,T=!0,Gl(v,!1),l.lanes=4194304)}else{if(!T)if(o=mt(C),o!==null){if(l.flags|=128,T=!0,o=o.updateQueue,l.updateQueue=o,$u(l,o),Gl(v,!0),v.tail===null&&v.tailMode==="hidden"&&!C.alternate&&!dn)return Fn(l),null}else 2*aa()-v.renderingStartTime>Co&&p!==536870912&&(l.flags|=128,T=!0,Gl(v,!1),l.lanes=4194304);v.isBackwards?(C.sibling=l.child,l.child=C):(o=v.last,o!==null?o.sibling=C:l.child=C,v.last=C)}return v.tail!==null?(o=v.tail,v.rendering=o,v.tail=o.sibling,v.renderingStartTime=aa(),o.sibling=null,p=ui.current,A(ui,T?p&1|2:p&1),dn&&Ne(l,v.treeForkCount),o):(Fn(l),null);case 22:case 23:return Je(l),k(),v=l.memoizedState!==null,o!==null?o.memoizedState!==null!==v&&(l.flags|=8192):v&&(l.flags|=8192),v?(p&536870912)!==0&&(l.flags&128)===0&&(Fn(l),l.subtreeFlags&6&&(l.flags|=8192)):Fn(l),p=l.updateQueue,p!==null&&$u(l,p.retryQueue),p=null,o!==null&&o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(p=o.memoizedState.cachePool.pool),v=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(v=l.memoizedState.cachePool.pool),v!==p&&(l.flags|=2048),o!==null&&M(xo),null;case 24:return p=null,o!==null&&(p=o.memoizedState.cache),l.memoizedState.cache!==p&&(l.flags|=2048),nt(Kn),Fn(l),null;case 25:return null;case 30:return null}throw Error(s(156,l.tag))}function wd(o,l){switch(Ae(l),l.tag){case 1:return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 3:return nt(Kn),de(),o=l.flags,(o&65536)!==0&&(o&128)===0?(l.flags=o&-65537|128,l):null;case 26:case 27:case 5:return tt(l),null;case 31:if(l.memoizedState!==null){if(Je(l),l.alternate===null)throw Error(s(340));Nt()}return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 13:if(Je(l),o=l.memoizedState,o!==null&&o.dehydrated!==null){if(l.alternate===null)throw Error(s(340));Nt()}return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 19:return M(ui),null;case 4:return de(),null;case 10:return nt(l.type),null;case 22:case 23:return Je(l),k(),o!==null&&M(xo),o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 24:return nt(Kn),null;case 25:return null;default:return null}}function sg(o,l){switch(Ae(l),l.tag){case 3:nt(Kn),de();break;case 26:case 27:case 5:tt(l);break;case 4:de();break;case 31:l.memoizedState!==null&&Je(l);break;case 13:Je(l);break;case 19:M(ui);break;case 10:nt(l.type);break;case 22:case 23:Je(l),k(),o!==null&&M(xo);break;case 24:nt(Kn)}}function js(o,l){try{var p=l.updateQueue,v=p!==null?p.lastEffect:null;if(v!==null){var T=v.next;p=T;do{if((p.tag&o)===o){v=void 0;var C=p.create,F=p.inst;v=C(),F.destroy=v}p=p.next}while(p!==T)}}catch(ee){Vt(l,l.return,ee)}}function Ys(o,l,p){try{var v=l.updateQueue,T=v!==null?v.lastEffect:null;if(T!==null){var C=T.next;v=C;do{if((v.tag&o)===o){var F=v.inst,ee=F.destroy;if(ee!==void 0){F.destroy=void 0,T=l;var we=p,ke=ee;try{ke()}catch(it){Vt(T,we,it)}}}v=v.next}while(v!==C)}}catch(it){Vt(l,l.return,it)}}function Xl(o){var l=o.updateQueue;if(l!==null){var p=o.stateNode;try{Mr(l,p)}catch(v){Vt(o,o.return,v)}}}function Ef(o,l,p){p.props=Yo(o.type,o.memoizedProps),p.state=o.memoizedState;try{p.componentWillUnmount()}catch(v){Vt(o,l,v)}}function Wl(o,l){try{var p=o.ref;if(p!==null){switch(o.tag){case 26:case 27:case 5:var v=nu(o.stateNode);break;case 30:v=o.stateNode;break;default:v=o.stateNode}typeof p=="function"?o.refCleanup=p(v):p.current=v}}catch(T){Vt(o,l,T)}}function ia(o,l){var p=o.ref,v=o.refCleanup;if(p!==null)if(typeof v=="function")try{v()}catch(T){Vt(o,l,T)}finally{o.refCleanup=null,o=o.alternate,o!=null&&(o.refCleanup=null)}else if(typeof p=="function")try{p(null)}catch(T){Vt(o,l,T)}else p.current=null}function Jo(o){var l=o.type,p=o.memoizedProps,v=o.stateNode;try{_g(v,l,p,o)}catch(T){Vt(o,o.return,T)}}function ec(o,l,p){try{xg(o.stateNode,o.type,p,l,o)}catch(v){Vt(o,o.return,v)}}function Cd(o){return o.tag===5||o.tag===3||(ms?o.tag===26:!1)||(Li?o.tag===27&&ul(o.type):!1)||o.tag===4}function Tr(o){e:for(;;){for(;o.sibling===null;){if(o.return===null||Cd(o.return))return null;o=o.return}for(o.sibling.return=o.return,o=o.sibling;o.tag!==5&&o.tag!==6&&o.tag!==18;){if(Li&&o.tag===27&&ul(o.type)||o.flags&2||o.child===null||o.tag===4)continue e;o.child.return=o,o=o.child}if(!(o.flags&2))return o.stateNode}}function Tf(o,l,p){var v=o.tag;if(v===5||v===6)o=o.stateNode,l?Sg(p,o,l):Yd(p,o);else if(v!==4&&(Li&&v===27&&ul(o.type)&&(p=o.stateNode,l=null),o=o.child,o!==null))for(Tf(o,l,p),o=o.sibling;o!==null;)Tf(o,l,p),o=o.sibling}function tc(o,l,p){var v=o.tag;if(v===5||v===6)o=o.stateNode,l?bg(p,o,l):jd(p,o);else if(v!==4&&(Li&&v===27&&ul(o.type)&&(p=o.stateNode),o=o.child,o!==null))for(tc(o,l,p),o=o.sibling;o!==null;)tc(o,l,p),o=o.sibling}function Rd(o,l,p){o=o.containerInfo;try{ep(o,p)}catch(v){Vt(l,l.return,v)}}function rg(o){var l=o.stateNode,p=o.memoizedProps;try{Mi(o.type,p,l,o)}catch(v){Vt(o,o.return,v)}}function i_(o,l){for(Vf(o.containerInfo),mi=l;mi!==null;)if(o=mi,l=o.child,(o.subtreeFlags&1028)!==0&&l!==null)l.return=o,mi=l;else for(;mi!==null;){o=mi;var p=o.alternate;switch(l=o.flags,o.tag){case 0:if((l&4)!==0&&(l=o.updateQueue,l=l!==null?l.events:null,l!==null))for(var v=0;v";case fu:return":has("+(Yl(o)||"")+")";case hu:return'[role="'+o.value+'"]';case Eo:return'"'+o.value+'"';case Ec:return'[data-testname="'+o.value+'"]';default:throw Error(s(365))}}function Zl(o,l){var p=[];o=[o,0];for(var v=0;vp?32:p;p=Ut.T;var T=ps();try{hn(v),Ut.T=null,v=hh,hh=null;var C=Vr,F=hr;if(Ti=0,_l=Vr=null,hr=0,(cn&6)!==0)throw Error(s(331));var ee=cn;if(cn|=4,Rf(C.current),wf(C,C.current,F,v),cn=ee,Ke(0,!1),Aa&&typeof Aa.onPostCommitFiberRoot=="function")try{Aa.onPostCommitFiberRoot(hl,C)}catch{}return!0}finally{hn(T),Ut.T=p,If(o,l)}}function fo(o,l,p){l=be(p,l),l=gd(o.stateNode,l,2),o=Ha(o,l,2),o!==null&&(z(o,2),dt(o))}function Vt(o,l,p){if(o.tag===3)fo(o,o,p);else for(;l!==null;){if(l.tag===3){fo(l,o,p);break}else if(l.tag===1){var v=l.stateNode;if(typeof l.type.getDerivedStateFromError=="function"||typeof v.componentDidCatch=="function"&&(kr===null||!kr.has(v))){o=be(p,o),p=qm(2),v=Ha(l,p,2),v!==null&&(jm(p,v,l,o),z(v,2),dt(v));break}}l=l.return}}function $l(o,l,p){var v=o.pingCache;if(v===null){v=o.pingCache=new Ja;var T=new Set;v.set(l,T)}else T=v.get(l),T===void 0&&(T=new Set,v.set(l,T));T.has(p)||(Ao=!0,T.add(p),o=fg.bind(null,o,l,p),l.then(o,o))}function fg(o,l,p){var v=o.pingCache;v!==null&&v.delete(l),o.pingedLanes|=o.suspendedLanes&p,o.warmLanes&=~p,rn===o&&(pn&p)===p&&(si===4||si===3&&(pn&62914560)===pn&&300>aa()-Ac?(cn&2)===0&&li(o,0):du|=p,pu===pn&&(pu=0)),dt(o)}function hg(o,l){l===0&&(l=U()),o=na(o,l),o!==null&&(z(o,l),dt(o))}function a_(o){var l=o.memoizedState,p=0;l!==null&&(p=l.retryLane),hg(o,p)}function s_(o,l){var p=0;switch(o.tag){case 31:case 13:var v=o.stateNode,T=o.memoizedState;T!==null&&(p=T.retryLane);break;case 19:v=o.stateNode;break;case 22:v=o.stateNode._retryCache;break;default:throw Error(s(314))}v!==null&&v.delete(l),hg(o,p)}function Si(o,l){return vc(o,l)}function Ld(o,l,p,v){this.tag=o,this.key=p,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=l,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=v,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function $o(o){return o=o.prototype,!(!o||!o.isReactComponent)}function qa(o,l){var p=o.alternate;return p===null?(p=t(o.tag,l,o.key,o.mode),p.elementType=o.elementType,p.type=o.type,p.stateNode=o.stateNode,p.alternate=o,o.alternate=p):(p.pendingProps=l,p.type=o.type,p.flags=0,p.subtreeFlags=0,p.deletions=null),p.flags=o.flags&65011712,p.childLanes=o.childLanes,p.lanes=o.lanes,p.child=o.child,p.memoizedProps=o.memoizedProps,p.memoizedState=o.memoizedState,p.updateQueue=o.updateQueue,l=o.dependencies,p.dependencies=l===null?null:{lanes:l.lanes,firstContext:l.firstContext},p.sibling=o.sibling,p.index=o.index,p.ref=o.ref,p.refCleanup=o.refCleanup,p}function Of(o,l){o.flags&=65011714;var p=o.alternate;return p===null?(o.childLanes=0,o.lanes=l,o.child=null,o.subtreeFlags=0,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null,o.stateNode=null):(o.childLanes=p.childLanes,o.lanes=p.lanes,o.child=p.child,o.subtreeFlags=0,o.deletions=null,o.memoizedProps=p.memoizedProps,o.memoizedState=p.memoizedState,o.updateQueue=p.updateQueue,o.type=p.type,l=p.dependencies,o.dependencies=l===null?null:{lanes:l.lanes,firstContext:l.firstContext}),o}function Nr(o,l,p,v,T,C){var F=0;if(v=o,typeof o=="function")$o(o)&&(F=1);else if(typeof o=="string")F=ms&&Li?Qf(o,p,Xi.current)?26:mp(o)?27:5:ms?Qf(o,p,Xi.current)?26:5:Li&&mp(o)?27:5;else e:switch(o){case cc:return o=t(31,p,l,T),o.elementType=cc,o.lanes=C,o;case il:return hs(p.children,T,C,l);case al:F=8,T|=24;break;case sl:return o=t(12,p,l,T|2),o.elementType=sl,o.lanes=C,o;case Ff:return o=t(13,p,l,T),o.elementType=Ff,o.lanes=C,o;case Dr:return o=t(19,p,l,T),o.elementType=Dr,o.lanes=C,o;default:if(typeof o=="object"&&o!==null)switch(o.$$typeof){case ds:F=10;break e;case uc:F=9;break e;case eu:F=11;break e;case kf:F=14;break e;case ha:F=16,v=null;break e}F=29,p=Error(s(130,o===null?"null":typeof o,"")),v=null}return l=t(F,p,l,T),l.elementType=o,l.type=v,l.lanes=C,l}function hs(o,l,p,v){return o=t(7,o,v,l),o.lanes=p,o}function Ud(o,l,p){return o=t(6,o,null,l),o.lanes=p,o}function Id(o){var l=t(18,null,null,0);return l.stateNode=o,l}function Od(o,l,p){return l=t(4,o.children!==null?o.children:[],o.key,l),l.lanes=p,l.stateNode={containerInfo:o.containerInfo,pendingChildren:null,implementation:o.implementation},l}function dg(o,l,p,v,T,C,F,ee,we){this.tag=1,this.containerInfo=o,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=Ea,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=B(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=B(0),this.hiddenUpdates=B(null),this.identifierPrefix=v,this.onUncaughtError=T,this.onCaughtError=C,this.onRecoverableError=F,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=we,this.incompleteTransitions=new Map}function ho(o,l,p,v,T,C,F,ee,we,ke,it,We){return o=new dg(o,l,p,F,we,ke,it,We,ee),l=1,C===!0&&(l|=24),C=t(3,null,null,l),o.current=C,C.stateNode=o,l=Te(),l.refCount++,o.pooledCache=l,l.refCount++,C.memoizedState={element:v,isDehydrated:p,cache:l},Ri(C),o}function Pf(o){return o?(o=ar,o):ar}function oc(o){var l=o._reactInternals;if(l===void 0)throw typeof o.render=="function"?Error(s(188)):(o=Object.keys(o).join(","),Error(s(268,o)));return o=h(l),o=o!==null?m(o):null,o===null?null:nu(o.stateNode)}function Pd(o,l,p,v,T,C){T=Pf(T),v.context===null?v.context=T:v.pendingContext=T,v=Va(l),v.payload={element:p},C=C===void 0?null:C,C!==null&&(v.callback=C),p=Ha(o,v,l),p!==null&&(ti(p,o,l),$r(p,o,l))}function el(o,l){if(o=o.memoizedState,o!==null&&o.dehydrated!==null){var p=o.retryLane;o.retryLane=p!==0&&p=ke&&C>=We&&T<=it&&F<=gt){o.splice(l,1);break}else if(v!==ke||p.width!==we.width||gtF){if(!(C!==We||p.height!==we.height||itT)){ke>v&&(we.width+=ke-v,we.x=v),itC&&(we.height+=We-C,we.y=C),gtp&&(p=ee)),ee ")+` + +No matching component was found for: + `)+o.join(" > ")}return null},an.getPublicRootInstance=function(o){if(o=o.current,!o.child)return null;switch(o.child.tag){case 27:case 5:return nu(o.child.stateNode);default:return o.child.stateNode}},an.injectIntoDevTools=function(){var o={bundleType:0,version:Bd,rendererPackageName:fc,currentDispatcherRef:Ut,reconcilerVersion:"19.2.0"};if(tu!==null&&(o.rendererConfig=tu),typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")o=!1;else{var l=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(l.isDisabled||!l.supportsFiber)o=!0;else{try{hl=l.inject(o),Aa=l}catch{}o=!!l.checkDCE}}return o},an.isAlreadyRendering=function(){return(cn&6)!==0},an.observeVisibleRects=function(o,l,p,v){if(!Di)throw Error(s(363));o=ba(o,l);var T=Wf(o,p,v).disconnect;return{disconnect:function(){T()}}},an.shouldError=function(){return null},an.shouldSuspend=function(){return!1},an.startHostTransition=function(o,l,p,v){if(o.tag!==5)throw Error(s(476));var T=km(o).queue;Fm(o,T,l,ol,p===null?n:function(){var C=km(o);return C.next===null&&(C=o.alternate.memoizedState),Zu(o,C.next.queue,{},Yn()),p(v)})},an.updateContainer=function(o,l,p,v){var T=l.current,C=Yn();return Pd(T,C,o,l,p,v),C},an.updateContainerSync=function(o,l,p,v){return Pd(l.current,2,o,l,p,v),2},an},r.exports.default=r.exports,Object.defineProperty(r.exports,"__esModule",{value:!0})})(H1)),H1.exports}var X1;function Ez(){return X1||(X1=1,V1.exports=Mz()),V1.exports}var Tz=Ez();const Az=Sz(Tz);function wz(r){const e=Az(r);return e.injectIntoDevTools(),e}const sA=0,nd={},Cz=/^three(?=[A-Z])/,Jy=r=>`${r[0].toUpperCase()}${r.slice(1)}`;let Rz=0;const Nz=r=>typeof r=="function";function Dz(r){if(Nz(r)){const e=`${Rz++}`;return nd[e]=r,e}else Object.assign(nd,r)}function rA(r,e){const t=Jy(r),n=nd[t];if(r!=="primitive"&&!n)throw new Error(`R3F: ${t} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if(r==="primitive"&&!e.object)throw new Error("R3F: Primitives without 'object' are invalid!");if(e.args!==void 0&&!Array.isArray(e.args))throw new Error("R3F: The args prop must be an array!")}function Lz(r,e,t){var n;return r=Jy(r)in nd?r:r.replace(Cz,""),rA(r,e),r==="primitive"&&(n=e.object)!=null&&n.__r3f&&delete e.object.__r3f,uy(e.object,t,r,e)}function Uz(r){if(!r.isHidden){var e;r.props.attach&&(e=r.parent)!=null&&e.object?fy(r.parent,r):ws(r.object)&&(r.object.visible=!1),r.isHidden=!0,od(r)}}function oA(r){if(r.isHidden){var e;r.props.attach&&(e=r.parent)!=null&&e.object?cy(r.parent,r):ws(r.object)&&r.props.visible!==!1&&(r.object.visible=!0),r.isHidden=!1,od(r)}}function oS(r,e,t){const n=e.root.getState();if(!(!r.parent&&r.object!==n.scene)){if(!e.object){var s,u;const f=nd[Jy(e.type)];e.object=(s=e.props.object)!=null?s:new f(...(u=e.props.args)!=null?u:[]),e.object.__r3f=e}if(Lu(e.object,e.props),e.props.attach)cy(r,e);else if(ws(e.object)&&ws(r.object)){const f=r.object.children.indexOf(t?.object);if(t&&f!==-1){const h=r.object.children.indexOf(e.object);if(h!==-1){r.object.children.splice(h,1);const m=h{try{r.dispose()}catch{}};typeof IS_REACT_ACT_ENVIRONMENT<"u"?e():sb.unstable_scheduleCallback(sb.unstable_IdlePriority,e)}}function ob(r,e,t){if(!e)return;e.parent=null;const n=r.children.indexOf(e);n!==-1&&r.children.splice(n,1),e.props.attach?fy(r,e):ws(e.object)&&ws(r.object)&&(r.object.remove(e.object),dz(KT(e),e.object));const s=e.props.dispose!==null&&t!==!1;for(let u=e.children.length-1;u>=0;u--){const f=e.children[u];ob(e,f,s)}e.children.length=0,delete e.object.__r3f,s&&e.type!=="primitive"&&e.object.type!=="Scene"&&lA(e.object),t===void 0&&od(e)}function Iz(r,e){for(const t of[r,r.alternate])if(t!==null)if(typeof t.ref=="function"){t.refCleanup==null||t.refCleanup();const n=t.ref(e);typeof n=="function"&&(t.refCleanup=n)}else t.ref&&(t.ref.current=e)}const gv=[];function Oz(){for(const[t]of gv){const n=t.parent;if(n){t.props.attach?fy(n,t):ws(t.object)&&ws(n.object)&&n.object.remove(t.object);for(const s of t.children)s.props.attach?fy(t,s):ws(s.object)&&ws(t.object)&&t.object.remove(s.object)}t.isHidden&&oA(t),t.object.__r3f&&delete t.object.__r3f,t.type!=="primitive"&&lA(t.object)}for(const[t,n,s]of gv){t.props=n;const u=t.parent;if(u){var r,e;const f=nd[Jy(t.type)];t.object=(r=t.props.object)!=null?r:new f(...(e=t.props.args)!=null?e:[]),t.object.__r3f=t,Iz(s,t.object),Lu(t.object,t.props),t.props.attach?cy(u,t):ws(t.object)&&ws(u.object)&&u.object.add(t.object);for(const h of t.children)h.props.attach?cy(t,h):ws(h.object)&&ws(t.object)&&t.object.add(h.object);od(t)}}gv.length=0}const Ix=()=>{},q1={};let cv=sA;const Pz=0,zz=4,lb=wz({isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:Lz,removeChild:ob,appendChild:Ux,appendInitialChild:Ux,insertBefore:W1,appendChildToContainer(r,e){const t=r.getState().scene.__r3f;!e||!t||Ux(t,e)},removeChildFromContainer(r,e){const t=r.getState().scene.__r3f;!e||!t||ob(t,e)},insertInContainerBefore(r,e,t){const n=r.getState().scene.__r3f;!e||!t||!n||W1(n,e,t)},getRootHostContext:()=>q1,getChildHostContext:()=>q1,commitUpdate(r,e,t,n,s){var u,f,h;rA(e,n);let m=!1;if((r.type==="primitive"&&t.object!==n.object||((u=n.args)==null?void 0:u.length)!==((f=t.args)==null?void 0:f.length)||(h=n.args)!=null&&h.some((_,x)=>{var b;return _!==((b=t.args)==null?void 0:b[x])}))&&(m=!0),m)gv.push([r,{...n},s]);else{const _=uz(r,n);Object.keys(_).length&&(Object.assign(r.props,_),Lu(r.object,_))}(s.sibling===null||(s.flags&zz)===Pz)&&Oz()},finalizeInitialChildren:()=>!1,commitMount(){},getPublicInstance:r=>r?.object,prepareForCommit:()=>null,preparePortalMount:r=>uy(r.getState().scene,r,"",{}),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance:Uz,unhideInstance:oA,createTextInstance:Ix,hideTextInstance:Ix,unhideTextInstance:Ix,scheduleTimeout:typeof setTimeout=="function"?setTimeout:void 0,cancelTimeout:typeof clearTimeout=="function"?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=>null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},prepareScopeUpdate(){},getInstanceFromScope:()=>null,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,requestPostPaintCallback(){},maySuspendCommit:()=>!1,preloadInstance:()=>!0,suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,HostTransitionContext:rt.createContext(null),setCurrentUpdatePriority(r){cv=r},getCurrentUpdatePriority(){return cv},resolveUpdatePriority(){var r;if(cv!==sA)return cv;switch(typeof window<"u"&&((r=window.event)==null?void 0:r.type)){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return xz;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return yz;default:return _z}},resetFormInstance(){},rendererPackageName:"@react-three/fiber",rendererVersion:bz.version,applyViewTransitionName(r,e,t){},restoreViewTransitionName(r,e){},cancelViewTransitionName(r,e,t){},cancelRootViewTransitionName(r){},restoreRootViewTransitionName(r){},InstanceMeasurement:null,measureInstance:r=>null,wasInstanceInViewport:r=>!0,hasInstanceChanged:(r,e)=>!1,hasInstanceAffectedParent:(r,e)=>!1,suspendOnActiveViewTransition(r,e){},startGestureTransition:()=>null,startViewTransition:()=>null,stopViewTransition(r){},createViewTransitionInstance:r=>null,getCurrentGestureOffset(r){throw new Error("startGestureTransition is not yet supported in react-three-fiber.")},cloneMutableInstance(r,e){return r},cloneMutableTextInstance(r){return r},cloneRootViewTransitionContainer(r){throw new Error("Not implemented.")},removeRootViewTransitionClone(r,e){throw new Error("Not implemented.")},createFragmentInstance:r=>null,updateFragmentInstanceFiber(r,e){},commitNewChildToFragmentInstance(r,e){},deleteChildFromFragmentInstance(r,e){},measureClonedInstance:r=>null,maySuspendCommitOnUpdate:(r,e,t)=>!1,maySuspendCommitInSyncRender:(r,e)=>!1,startSuspendingCommit:()=>null,getSuspendedCommitReason:(r,e)=>null}),sf=new Map,Fh={objects:"shallow",strict:!1};function Bz(r,e){if(!e&&typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement&&r.parentElement){const{width:t,height:n,top:s,left:u}=r.parentElement.getBoundingClientRect();return{width:t,height:n,top:s,left:u}}else if(!e&&typeof OffscreenCanvas<"u"&&r instanceof OffscreenCanvas)return{width:r.width,height:r.height,top:0,left:0};return{width:0,height:0,top:0,left:0,...e}}function Fz(r){const e=sf.get(r),t=e?.fiber,n=e?.store;e&&console.warn("R3F.createRoot should only be called once!");const s=typeof reportError=="function"?reportError:console.error,u=n||mz(fb,Y1),f=t||lb.createContainer(u,vz,null,!1,null,"",s,s,s,null);e||sf.set(r,{fiber:f,store:u});let h,m,g=!1,_=null;return{async configure(x={}){let b;_=new Promise(X=>b=X);let{gl:M,size:A,scene:R,events:w,onCreated:E,shadows:N=!1,linear:D=!1,flat:U=!1,legacy:B=!1,orthographic:z=!1,frameloop:H="always",dpr:W=[1,2],performance:I,raycaster:P,camera:Z,onPointerMissed:se}=x,te=u.getState(),fe=te.gl;if(!te.gl){const X={canvas:r,powerPreference:"high-performance",antialias:!0,alpha:!0},oe=typeof M=="function"?await M(X):M;k1(oe)?fe=oe:fe=new jT({...X,...M}),te.set({gl:fe})}let pe=te.raycaster;pe||te.set({raycaster:pe=new FT});const{params:Y,...q}=P||{};if(yi.equ(q,pe,Fh)||Lu(pe,{...q}),yi.equ(Y,pe.params,Fh)||Lu(pe,{params:{...pe.params,...Y}}),!te.camera||te.camera===m&&!yi.equ(m,Z,Fh)){m=Z;const X=Z?.isCamera,oe=X?Z:z?new Dl(0,0,0,0,.1,1e3):new zi(75,0,.1,1e3);X||(oe.position.z=5,Z&&(Lu(oe,Z),oe.manual||("aspect"in Z||"left"in Z||"right"in Z||"bottom"in Z||"top"in Z)&&(oe.manual=!0,oe.updateProjectionMatrix())),!te.camera&&!(Z!=null&&Z.rotation)&&oe.lookAt(0,0,0)),te.set({camera:oe}),pe.camera=oe}if(!te.scene){let X;R!=null&&R.isScene?(X=R,uy(X,u,"",{})):(X=new Lb,uy(X,u,"",{}),R&&Lu(X,R)),te.set({scene:X})}w&&!te.events.handlers&&te.set({events:w(u)});const ne=Bz(r,A);if(yi.equ(ne,te.size,Fh)||te.setSize(ne.width,ne.height,ne.top,ne.left),W&&te.viewport.dpr!==eA(W)&&te.setDpr(W),te.frameloop!==H&&te.setFrameloop(H),te.onPointerMissed||te.set({onPointerMissed:se}),I&&!yi.equ(I,te.performance,Fh)&&te.set(X=>({performance:{...X.performance,...I}})),!te.xr){var be;const X=(Fe,lt)=>{const de=u.getState();de.frameloop!=="never"&&Y1(Fe,!0,de,lt)},oe=()=>{const Fe=u.getState();Fe.gl.xr.enabled=Fe.gl.xr.isPresenting,Fe.gl.xr.setAnimationLoop(Fe.gl.xr.isPresenting?X:null),Fe.gl.xr.isPresenting||fb(Fe)},Ae={connect(){const Fe=u.getState().gl;Fe.xr.addEventListener("sessionstart",oe),Fe.xr.addEventListener("sessionend",oe)},disconnect(){const Fe=u.getState().gl;Fe.xr.removeEventListener("sessionstart",oe),Fe.xr.removeEventListener("sessionend",oe)}};typeof((be=fe.xr)==null?void 0:be.addEventListener)=="function"&&Ae.connect(),te.set({xr:Ae})}if(fe.shadowMap){const X=fe.shadowMap.enabled,oe=fe.shadowMap.type;if(fe.shadowMap.enabled=!!N,yi.boo(N))fe.shadowMap.type=Kp;else if(yi.str(N)){var Ne;const Ae={basic:sE,percentage:Xh,soft:Kp,variance:jc};fe.shadowMap.type=(Ne=Ae[N])!=null?Ne:Kp}else yi.obj(N)&&Object.assign(fe.shadowMap,N);(X!==fe.shadowMap.enabled||oe!==fe.shadowMap.type)&&(fe.shadowMap.needsUpdate=!0)}return Sn.enabled=!B,g||(fe.outputColorSpace=D?zu:Ia,fe.toneMapping=U?gr:gy),te.legacy!==B&&te.set(()=>({legacy:B})),te.linear!==D&&te.set(()=>({linear:D})),te.flat!==U&&te.set(()=>({flat:U})),M&&!yi.fun(M)&&!k1(M)&&!yi.equ(M,fe,Fh)&&Lu(fe,M),h=E,g=!0,b(),this},render(x){return!g&&!_&&this.configure(),_.then(()=>{lb.updateContainer(he.jsx(kz,{store:u,children:x,onCreated:h,rootElement:r}),f,null,()=>{})}),u},unmount(){uA(r)}}}function kz({store:r,children:e,onCreated:t,rootElement:n}){return Om(()=>{const s=r.getState();s.set(u=>({internal:{...u.internal,active:!0}})),t&&t(s),r.getState().events.connected||s.events.connect==null||s.events.connect(n)},[]),he.jsx(iA.Provider,{value:r,children:e})}function uA(r,e){const t=sf.get(r),n=t?.fiber;if(n){const s=t?.store.getState();s&&(s.internal.active=!1),lb.updateContainer(null,n,null,()=>{s&&setTimeout(()=>{try{var u,f,h,m;s.events.disconnect==null||s.events.disconnect(),(u=s.gl)==null||(f=u.renderLists)==null||f.dispose==null||f.dispose(),(h=s.gl)==null||h.forceContextLoss==null||h.forceContextLoss(),(m=s.gl)!=null&&m.xr&&s.xr.disconnect(),rz(s.scene),sf.delete(r)}catch{}},500)})}}const Vz=new Set,Hz=new Set,Gz=new Set;function Ox(r,e){if(r.size)for(const{callback:t}of r.values())t(e)}function rm(r,e){switch(r){case"before":return Ox(Vz,e);case"after":return Ox(Hz,e);case"tail":return Ox(Gz,e)}}let Px,zx;function ub(r,e,t){let n=e.clock.getDelta();e.frameloop==="never"&&typeof r=="number"&&(n=r-e.clock.elapsedTime,e.clock.oldTime=e.clock.elapsedTime,e.clock.elapsedTime=r),Px=e.internal.subscribers;for(let s=0;s0)&&!((e=kh.gl.xr)!=null&&e.isPresenting)&&(Bx+=ub(r,kh))}if(cb=!1,rm("after",r),Bx===0)return rm("tail",r),hy=!1,cancelAnimationFrame(j1)}function fb(r,e=1){var t;if(!r)return sf.forEach(n=>fb(n.store.getState(),e));(t=r.gl.xr)!=null&&t.isPresenting||!r.internal.active||r.frameloop==="never"||(e>1?r.internal.frames=Math.min(60,r.internal.frames+e):cb?r.internal.frames=2:r.internal.frames=1,hy||(hy=!0,requestAnimationFrame(cA)))}function Y1(r,e=!0,t,n){if(e&&rm("before",r),t)ub(r,t,n);else for(const s of sf.values())ub(r,s.store.getState());e&&rm("after",r)}const Fx={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function Xz(r){const{handlePointer:e}=pz(r);return{priority:1,enabled:!0,compute(t,n,s){n.pointer.set(t.offsetX/n.size.width*2-1,-(t.offsetY/n.size.height)*2+1),n.raycaster.setFromCamera(n.pointer,n.camera)},connected:void 0,handlers:Object.keys(Fx).reduce((t,n)=>({...t,[n]:e(n)}),{}),update:()=>{var t;const{events:n,internal:s}=r.getState();(t=s.lastEvent)!=null&&t.current&&n.handlers&&n.handlers.onPointerMove(s.lastEvent.current)},connect:t=>{const{set:n,events:s}=r.getState();if(s.disconnect==null||s.disconnect(),n(u=>({events:{...u.events,connected:t}})),s.handlers)for(const u in s.handlers){const f=s.handlers[u],[h,m]=Fx[u];t.addEventListener(h,f,{passive:m})}},disconnect:()=>{const{set:t,events:n}=r.getState();if(n.connected){if(n.handlers)for(const s in n.handlers){const u=n.handlers[s],[f]=Fx[s];n.connected.removeEventListener(f,u)}t(s=>({events:{...s.events,connected:void 0}}))}}}}function Z1(r,e){let t;return(...n)=>{window.clearTimeout(t),t=window.setTimeout(()=>r(...n),e)}}function Wz({debounce:r,scroll:e,polyfill:t,offsetSize:n}={debounce:0,scroll:!1,offsetSize:!1}){const s=t||(typeof window>"u"?class{}:window.ResizeObserver);if(!s)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[u,f]=rt.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),h=rt.useRef({element:null,scrollContainers:null,resizeObserver:null,lastBounds:u,orientationHandler:null}),m=r?typeof r=="number"?r:r.scroll:null,g=r?typeof r=="number"?r:r.resize:null,_=rt.useRef(!1);rt.useEffect(()=>(_.current=!0,()=>{_.current=!1}));const[x,b,M]=rt.useMemo(()=>{const E=()=>{if(!h.current.element)return;const{left:N,top:D,width:U,height:B,bottom:z,right:H,x:W,y:I}=h.current.element.getBoundingClientRect(),P={left:N,top:D,width:U,height:B,bottom:z,right:H,x:W,y:I};h.current.element instanceof HTMLElement&&n&&(P.height=h.current.element.offsetHeight,P.width=h.current.element.offsetWidth),Object.freeze(P),_.current&&!Zz(h.current.lastBounds,P)&&f(h.current.lastBounds=P)};return[E,g?Z1(E,g):E,m?Z1(E,m):E]},[f,n,m,g]);function A(){h.current.scrollContainers&&(h.current.scrollContainers.forEach(E=>E.removeEventListener("scroll",M,!0)),h.current.scrollContainers=null),h.current.resizeObserver&&(h.current.resizeObserver.disconnect(),h.current.resizeObserver=null),h.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",h.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",h.current.orientationHandler))}function R(){h.current.element&&(h.current.resizeObserver=new s(M),h.current.resizeObserver.observe(h.current.element),e&&h.current.scrollContainers&&h.current.scrollContainers.forEach(E=>E.addEventListener("scroll",M,{capture:!0,passive:!0})),h.current.orientationHandler=()=>{M()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",h.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",h.current.orientationHandler))}const w=E=>{!E||E===h.current.element||(A(),h.current.element=E,h.current.scrollContainers=fA(E),R())};return jz(M,!!e),qz(b),rt.useEffect(()=>{A(),R()},[e,M,b]),rt.useEffect(()=>A,[]),[w,u,x]}function qz(r){rt.useEffect(()=>{const e=r;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}},[r])}function jz(r,e){rt.useEffect(()=>{if(e){const t=r;return window.addEventListener("scroll",t,{capture:!0,passive:!0}),()=>{window.removeEventListener("scroll",t,!0)}}},[r,e])}function fA(r){const e=[];if(!r||r===document.body)return e;const{overflow:t,overflowX:n,overflowY:s}=window.getComputedStyle(r);return[t,n,s].some(u=>u==="auto"||u==="scroll")&&e.push(r),[...e,...fA(r.parentElement)]}const Yz=["x","y","top","bottom","left","right","width","height"],Zz=(r,e)=>Yz.every(t=>r[t]===e[t]);function Qz({ref:r,children:e,fallback:t,resize:n,style:s,gl:u,events:f=Xz,eventSource:h,eventPrefix:m,shadows:g,linear:_,flat:x,legacy:b,orthographic:M,frameloop:A,dpr:R,performance:w,raycaster:E,camera:N,scene:D,onPointerMissed:U,onCreated:B,...z}){rt.useMemo(()=>Dz(BP),[]);const H=iz(),[W,I]=Wz({scroll:!0,debounce:{scroll:50,resize:0},...n}),P=rt.useRef(null),Z=rt.useRef(null);rt.useImperativeHandle(r,()=>P.current);const se=$T(U),[te,fe]=rt.useState(!1),[pe,Y]=rt.useState(!1);if(te)throw te;if(pe)throw pe;const q=rt.useRef(null);Om(()=>{const be=P.current;if(I.width>0&&I.height>0&&be){q.current||(q.current=Fz(be));async function Ne(){await q.current.configure({gl:u,scene:D,events:f,shadows:g,linear:_,flat:x,legacy:b,orthographic:M,frameloop:A,dpr:R,performance:w,raycaster:E,camera:N,size:I,onPointerMissed:(...X)=>se.current==null?void 0:se.current(...X),onCreated:X=>{X.events.connect==null||X.events.connect(h?tz(h)?h.current:h:Z.current),m&&X.setEvents({compute:(oe,Ae)=>{const Fe=oe[m+"X"],lt=oe[m+"Y"];Ae.pointer.set(Fe/Ae.size.width*2-1,-(lt/Ae.size.height)*2+1),Ae.raycaster.setFromCamera(Ae.pointer,Ae.camera)}}),B?.(X)}}),q.current.render(he.jsx(H,{children:he.jsx(sz,{set:Y,children:he.jsx(rt.Suspense,{fallback:he.jsx(az,{set:fe}),children:e??null})})}))}Ne()}}),rt.useEffect(()=>{const be=P.current;if(be)return()=>uA(be)},[]);const ne=h?"none":"auto";return he.jsx("div",{ref:Z,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:ne,...s},...z,children:he.jsx("div",{ref:W,style:{width:"100%",height:"100%"},children:he.jsx("canvas",{ref:P,style:{display:"block"},children:t})})})}function Kz(r){return he.jsx(ZT,{children:he.jsx(Qz,{...r})})}var Jz=Object.defineProperty,$z=(r,e,t)=>e in r?Jz(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,e4=(r,e,t)=>($z(r,e+"",t),t);class t4{constructor(){e4(this,"_listeners")}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const s=this._listeners[e];if(s!==void 0){const u=s.indexOf(t);u!==-1&&s.splice(u,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const n=this._listeners[e.type];if(n!==void 0){e.target=this;const s=n.slice(0);for(let u=0,f=s.length;ue in r?n4(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Bt=(r,e,t)=>(i4(r,typeof e!="symbol"?e+"":e,t),t);const fv=new of,Q1=new wl,a4=Math.cos(70*(Math.PI/180)),K1=(r,e)=>(r%e+e)%e;let s4=class extends t4{constructor(e,t){super(),Bt(this,"object"),Bt(this,"domElement"),Bt(this,"enabled",!0),Bt(this,"target",new j),Bt(this,"minDistance",0),Bt(this,"maxDistance",1/0),Bt(this,"minZoom",0),Bt(this,"maxZoom",1/0),Bt(this,"minPolarAngle",0),Bt(this,"maxPolarAngle",Math.PI),Bt(this,"minAzimuthAngle",-1/0),Bt(this,"maxAzimuthAngle",1/0),Bt(this,"enableDamping",!1),Bt(this,"dampingFactor",.05),Bt(this,"enableZoom",!0),Bt(this,"zoomSpeed",1),Bt(this,"enableRotate",!0),Bt(this,"rotateSpeed",1),Bt(this,"enablePan",!0),Bt(this,"panSpeed",1),Bt(this,"screenSpacePanning",!0),Bt(this,"keyPanSpeed",7),Bt(this,"zoomToCursor",!1),Bt(this,"autoRotate",!1),Bt(this,"autoRotateSpeed",2),Bt(this,"reverseOrbit",!1),Bt(this,"reverseHorizontalOrbit",!1),Bt(this,"reverseVerticalOrbit",!1),Bt(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),Bt(this,"mouseButtons",{LEFT:Gc.ROTATE,MIDDLE:Gc.DOLLY,RIGHT:Gc.PAN}),Bt(this,"touches",{ONE:Xc.ROTATE,TWO:Xc.DOLLY_PAN}),Bt(this,"target0"),Bt(this,"position0"),Bt(this,"zoom0"),Bt(this,"_domElementKeyEvents",null),Bt(this,"getPolarAngle"),Bt(this,"getAzimuthalAngle"),Bt(this,"setPolarAngle"),Bt(this,"setAzimuthalAngle"),Bt(this,"getDistance"),Bt(this,"getZoomScale"),Bt(this,"listenToKeyEvents"),Bt(this,"stopListenToKeyEvents"),Bt(this,"saveState"),Bt(this,"reset"),Bt(this,"update"),Bt(this,"connect"),Bt(this,"dispose"),Bt(this,"dollyIn"),Bt(this,"dollyOut"),Bt(this,"getScale"),Bt(this,"setScale"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>_.phi,this.getAzimuthalAngle=()=>_.theta,this.setPolarAngle=K=>{let me=K1(K,2*Math.PI),et=_.phi;et<0&&(et+=2*Math.PI),me<0&&(me+=2*Math.PI);let J=Math.abs(me-et);2*Math.PI-J{let me=K1(K,2*Math.PI),et=_.theta;et<0&&(et+=2*Math.PI),me<0&&(me+=2*Math.PI);let J=Math.abs(me-et);2*Math.PI-Jn.object.position.distanceTo(n.target),this.listenToKeyEvents=K=>{K.addEventListener("keydown",Ee),this._domElementKeyEvents=K},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",Ee),this._domElementKeyEvents=null},this.saveState=()=>{n.target0.copy(n.target),n.position0.copy(n.object.position),n.zoom0=n.object.zoom},this.reset=()=>{n.target.copy(n.target0),n.object.position.copy(n.position0),n.object.zoom=n.zoom0,n.object.updateProjectionMatrix(),n.dispatchEvent(s),n.update(),m=h.NONE},this.update=(()=>{const K=new j,me=new j(0,1,0),et=new Pa().setFromUnitVectors(e.up,me),J=et.clone().invert(),je=new j,Ge=new Pa,at=2*Math.PI;return function(){const Ue=n.object.position;et.setFromUnitVectors(e.up,me),J.copy(et).invert(),K.copy(Ue).sub(n.target),K.applyQuaternion(et),_.setFromVector3(K),n.autoRotate&&m===h.NONE&&fe(se()),n.enableDamping?(_.theta+=x.theta*n.dampingFactor,_.phi+=x.phi*n.dampingFactor):(_.theta+=x.theta,_.phi+=x.phi);let Ye=n.minAzimuthAngle,Ct=n.maxAzimuthAngle;isFinite(Ye)&&isFinite(Ct)&&(Ye<-Math.PI?Ye+=at:Ye>Math.PI&&(Ye-=at),Ct<-Math.PI?Ct+=at:Ct>Math.PI&&(Ct-=at),Ye<=Ct?_.theta=Math.max(Ye,Math.min(Ct,_.theta)):_.theta=_.theta>(Ye+Ct)/2?Math.max(Ye,_.theta):Math.min(Ct,_.theta)),_.phi=Math.max(n.minPolarAngle,Math.min(n.maxPolarAngle,_.phi)),_.makeSafe(),n.enableDamping===!0?n.target.addScaledVector(M,n.dampingFactor):n.target.add(M),n.zoomToCursor&&I||n.object.isOrthographicCamera?_.radius=Ae(_.radius):_.radius=Ae(_.radius*b),K.setFromSpherical(_),K.applyQuaternion(J),Ue.copy(n.target).add(K),n.object.matrixAutoUpdate||n.object.updateMatrix(),n.object.lookAt(n.target),n.enableDamping===!0?(x.theta*=1-n.dampingFactor,x.phi*=1-n.dampingFactor,M.multiplyScalar(1-n.dampingFactor)):(x.set(0,0,0),M.set(0,0,0));let Jt=!1;if(n.zoomToCursor&&I){let nn=null;if(n.object instanceof zi&&n.object.isPerspectiveCamera){const Jn=K.length();nn=Ae(Jn*b);const Ci=Jn-nn;n.object.position.addScaledVector(H,Ci),n.object.updateMatrixWorld()}else if(n.object.isOrthographicCamera){const Jn=new j(W.x,W.y,0);Jn.unproject(n.object),n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/b)),n.object.updateProjectionMatrix(),Jt=!0;const Ci=new j(W.x,W.y,0);Ci.unproject(n.object),n.object.position.sub(Ci).add(Jn),n.object.updateMatrixWorld(),nn=K.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),n.zoomToCursor=!1;nn!==null&&(n.screenSpacePanning?n.target.set(0,0,-1).transformDirection(n.object.matrix).multiplyScalar(nn).add(n.object.position):(fv.origin.copy(n.object.position),fv.direction.set(0,0,-1).transformDirection(n.object.matrix),Math.abs(n.object.up.dot(fv.direction))g||8*(1-Ge.dot(n.object.quaternion))>g?(n.dispatchEvent(s),je.copy(n.object.position),Ge.copy(n.object.quaternion),Jt=!1,!0):!1}})(),this.connect=K=>{n.domElement=K,n.domElement.style.touchAction="none",n.domElement.addEventListener("contextmenu",vt),n.domElement.addEventListener("pointerdown",Qe),n.domElement.addEventListener("pointercancel",O),n.domElement.addEventListener("wheel",Ie)},this.dispose=()=>{var K,me,et,J,je,Ge;n.domElement&&(n.domElement.style.touchAction="auto"),(K=n.domElement)==null||K.removeEventListener("contextmenu",vt),(me=n.domElement)==null||me.removeEventListener("pointerdown",Qe),(et=n.domElement)==null||et.removeEventListener("pointercancel",O),(J=n.domElement)==null||J.removeEventListener("wheel",Ie),(je=n.domElement)==null||je.ownerDocument.removeEventListener("pointermove",G),(Ge=n.domElement)==null||Ge.ownerDocument.removeEventListener("pointerup",O),n._domElementKeyEvents!==null&&n._domElementKeyEvents.removeEventListener("keydown",Ee)};const n=this,s={type:"change"},u={type:"start"},f={type:"end"},h={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let m=h.NONE;const g=1e-6,_=new eb,x=new eb;let b=1;const M=new j,A=new ze,R=new ze,w=new ze,E=new ze,N=new ze,D=new ze,U=new ze,B=new ze,z=new ze,H=new j,W=new ze;let I=!1;const P=[],Z={};function se(){return 2*Math.PI/60/60*n.autoRotateSpeed}function te(){return Math.pow(.95,n.zoomSpeed)}function fe(K){n.reverseOrbit||n.reverseHorizontalOrbit?x.theta+=K:x.theta-=K}function pe(K){n.reverseOrbit||n.reverseVerticalOrbit?x.phi+=K:x.phi-=K}const Y=(()=>{const K=new j;return function(et,J){K.setFromMatrixColumn(J,0),K.multiplyScalar(-et),M.add(K)}})(),q=(()=>{const K=new j;return function(et,J){n.screenSpacePanning===!0?K.setFromMatrixColumn(J,1):(K.setFromMatrixColumn(J,0),K.crossVectors(n.object.up,K)),K.multiplyScalar(et),M.add(K)}})(),ne=(()=>{const K=new j;return function(et,J){const je=n.domElement;if(je&&n.object instanceof zi&&n.object.isPerspectiveCamera){const Ge=n.object.position;K.copy(Ge).sub(n.target);let at=K.length();at*=Math.tan(n.object.fov/2*Math.PI/180),Y(2*et*at/je.clientHeight,n.object.matrix),q(2*J*at/je.clientHeight,n.object.matrix)}else je&&n.object instanceof Dl&&n.object.isOrthographicCamera?(Y(et*(n.object.right-n.object.left)/n.object.zoom/je.clientWidth,n.object.matrix),q(J*(n.object.top-n.object.bottom)/n.object.zoom/je.clientHeight,n.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),n.enablePan=!1)}})();function be(K){n.object instanceof zi&&n.object.isPerspectiveCamera||n.object instanceof Dl&&n.object.isOrthographicCamera?b=K:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function Ne(K){be(b/K)}function X(K){be(b*K)}function oe(K){if(!n.zoomToCursor||!n.domElement)return;I=!0;const me=n.domElement.getBoundingClientRect(),et=K.clientX-me.left,J=K.clientY-me.top,je=me.width,Ge=me.height;W.x=et/je*2-1,W.y=-(J/Ge)*2+1,H.set(W.x,W.y,1).unproject(n.object).sub(n.object.position).normalize()}function Ae(K){return Math.max(n.minDistance,Math.min(n.maxDistance,K))}function Fe(K){A.set(K.clientX,K.clientY)}function lt(K){oe(K),U.set(K.clientX,K.clientY)}function de(K){E.set(K.clientX,K.clientY)}function Re(K){R.set(K.clientX,K.clientY),w.subVectors(R,A).multiplyScalar(n.rotateSpeed);const me=n.domElement;me&&(fe(2*Math.PI*w.x/me.clientHeight),pe(2*Math.PI*w.y/me.clientHeight)),A.copy(R),n.update()}function tt(K){B.set(K.clientX,K.clientY),z.subVectors(B,U),z.y>0?Ne(te()):z.y<0&&X(te()),U.copy(B),n.update()}function st(K){N.set(K.clientX,K.clientY),D.subVectors(N,E).multiplyScalar(n.panSpeed),ne(D.x,D.y),E.copy(N),n.update()}function ht(K){oe(K),K.deltaY<0?X(te()):K.deltaY>0&&Ne(te()),n.update()}function jt(K){let me=!1;switch(K.code){case n.keys.UP:ne(0,n.keyPanSpeed),me=!0;break;case n.keys.BOTTOM:ne(0,-n.keyPanSpeed),me=!0;break;case n.keys.LEFT:ne(n.keyPanSpeed,0),me=!0;break;case n.keys.RIGHT:ne(-n.keyPanSpeed,0),me=!0;break}me&&(K.preventDefault(),n.update())}function tn(){if(P.length==1)A.set(P[0].pageX,P[0].pageY);else{const K=.5*(P[0].pageX+P[1].pageX),me=.5*(P[0].pageY+P[1].pageY);A.set(K,me)}}function Nt(){if(P.length==1)E.set(P[0].pageX,P[0].pageY);else{const K=.5*(P[0].pageX+P[1].pageX),me=.5*(P[0].pageY+P[1].pageY);E.set(K,me)}}function Le(){const K=P[0].pageX-P[1].pageX,me=P[0].pageY-P[1].pageY,et=Math.sqrt(K*K+me*me);U.set(0,et)}function He(){n.enableZoom&&Le(),n.enablePan&&Nt()}function Oe(){n.enableZoom&&Le(),n.enableRotate&&tn()}function nt(K){if(P.length==1)R.set(K.pageX,K.pageY);else{const et=ct(K),J=.5*(K.pageX+et.x),je=.5*(K.pageY+et.y);R.set(J,je)}w.subVectors(R,A).multiplyScalar(n.rotateSpeed);const me=n.domElement;me&&(fe(2*Math.PI*w.x/me.clientHeight),pe(2*Math.PI*w.y/me.clientHeight)),A.copy(R)}function Q(K){if(P.length==1)N.set(K.pageX,K.pageY);else{const me=ct(K),et=.5*(K.pageX+me.x),J=.5*(K.pageY+me.y);N.set(et,J)}D.subVectors(N,E).multiplyScalar(n.panSpeed),ne(D.x,D.y),E.copy(N)}function Et(K){const me=ct(K),et=K.pageX-me.x,J=K.pageY-me.y,je=Math.sqrt(et*et+J*J);B.set(0,je),z.set(0,Math.pow(B.y/U.y,n.zoomSpeed)),Ne(z.y),U.copy(B)}function ot(K){n.enableZoom&&Et(K),n.enablePan&&Q(K)}function Tt(K){n.enableZoom&&Et(K),n.enableRotate&&nt(K)}function Qe(K){var me,et;n.enabled!==!1&&(P.length===0&&((me=n.domElement)==null||me.ownerDocument.addEventListener("pointermove",G),(et=n.domElement)==null||et.ownerDocument.addEventListener("pointerup",O)),Dt(K),K.pointerType==="touch"?dt(K):ae(K))}function G(K){n.enabled!==!1&&(K.pointerType==="touch"?Ke(K):Te(K))}function O(K){var me,et,J;Ve(K),P.length===0&&((me=n.domElement)==null||me.releasePointerCapture(K.pointerId),(et=n.domElement)==null||et.ownerDocument.removeEventListener("pointermove",G),(J=n.domElement)==null||J.ownerDocument.removeEventListener("pointerup",O)),n.dispatchEvent(f),m=h.NONE}function ae(K){let me;switch(K.button){case 0:me=n.mouseButtons.LEFT;break;case 1:me=n.mouseButtons.MIDDLE;break;case 2:me=n.mouseButtons.RIGHT;break;default:me=-1}switch(me){case Gc.DOLLY:if(n.enableZoom===!1)return;lt(K),m=h.DOLLY;break;case Gc.ROTATE:if(K.ctrlKey||K.metaKey||K.shiftKey){if(n.enablePan===!1)return;de(K),m=h.PAN}else{if(n.enableRotate===!1)return;Fe(K),m=h.ROTATE}break;case Gc.PAN:if(K.ctrlKey||K.metaKey||K.shiftKey){if(n.enableRotate===!1)return;Fe(K),m=h.ROTATE}else{if(n.enablePan===!1)return;de(K),m=h.PAN}break;default:m=h.NONE}m!==h.NONE&&n.dispatchEvent(u)}function Te(K){if(n.enabled!==!1)switch(m){case h.ROTATE:if(n.enableRotate===!1)return;Re(K);break;case h.DOLLY:if(n.enableZoom===!1)return;tt(K);break;case h.PAN:if(n.enablePan===!1)return;st(K);break}}function Ie(K){n.enabled===!1||n.enableZoom===!1||m!==h.NONE&&m!==h.ROTATE||(K.preventDefault(),n.dispatchEvent(u),ht(K),n.dispatchEvent(f))}function Ee(K){n.enabled===!1||n.enablePan===!1||jt(K)}function dt(K){switch(Ze(K),P.length){case 1:switch(n.touches.ONE){case Xc.ROTATE:if(n.enableRotate===!1)return;tn(),m=h.TOUCH_ROTATE;break;case Xc.PAN:if(n.enablePan===!1)return;Nt(),m=h.TOUCH_PAN;break;default:m=h.NONE}break;case 2:switch(n.touches.TWO){case Xc.DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;He(),m=h.TOUCH_DOLLY_PAN;break;case Xc.DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;Oe(),m=h.TOUCH_DOLLY_ROTATE;break;default:m=h.NONE}break;default:m=h.NONE}m!==h.NONE&&n.dispatchEvent(u)}function Ke(K){switch(Ze(K),m){case h.TOUCH_ROTATE:if(n.enableRotate===!1)return;nt(K),n.update();break;case h.TOUCH_PAN:if(n.enablePan===!1)return;Q(K),n.update();break;case h.TOUCH_DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;ot(K),n.update();break;case h.TOUCH_DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;Tt(K),n.update();break;default:m=h.NONE}}function vt(K){n.enabled!==!1&&K.preventDefault()}function Dt(K){P.push(K)}function Ve(K){delete Z[K.pointerId];for(let me=0;me{X(K),n.update()},this.dollyOut=(K=te())=>{Ne(K),n.update()},this.getScale=()=>b,this.setScale=K=>{be(K),n.update()},this.getZoomScale=()=>te(),t!==void 0&&this.connect(t),this.update()}};const r4=rt.forwardRef(({makeDefault:r,camera:e,regress:t,domElement:n,enableDamping:s=!0,keyEvents:u=!1,onChange:f,onStart:h,onEnd:m,...g},_)=>{const x=Nu(z=>z.invalidate),b=Nu(z=>z.camera),M=Nu(z=>z.gl),A=Nu(z=>z.events),R=Nu(z=>z.setEvents),w=Nu(z=>z.set),E=Nu(z=>z.get),N=Nu(z=>z.performance),D=e||b,U=n||A.connected||M.domElement,B=rt.useMemo(()=>new s4(D),[D]);return gz(()=>{B.enabled&&B.update()},-1),rt.useEffect(()=>(u&&B.connect(u===!0?U:u),B.connect(U),()=>{B.dispose()}),[u,U,t,B,x]),rt.useEffect(()=>{const z=I=>{x(),t&&N.regress(),f&&f(I)},H=I=>{h&&h(I)},W=I=>{m&&m(I)};return B.addEventListener("change",z),B.addEventListener("start",H),B.addEventListener("end",W),()=>{B.removeEventListener("start",H),B.removeEventListener("end",W),B.removeEventListener("change",z)}},[f,h,m,B,x,R]),rt.useEffect(()=>{if(r){const z=E().controls;return w({controls:B}),()=>w({controls:z})}},[r,B]),rt.createElement("primitive",kx({ref:_,object:B,enableDamping:s},g))}),o4=Object.assign({"../../glitch_assumption_toggle/src/index.tsx":()=>Hr(()=>import("./index-B1PtMIUq.js"),__vite__mapDeps([0,1])),"../../glitch_ccd/src/index.tsx":()=>Hr(()=>import("./index-CMvlyyxu.js"),__vite__mapDeps([2,3])),"../../glitch_chess_analogy/src/index.tsx":()=>Hr(()=>import("./index-CwQ-ysLn.js"),__vite__mapDeps([4,5])),"./index.tsx":()=>Hr(()=>import("./index-CDPygLjY.js"),[]),"../../glitch_level_questions/src/index.tsx":()=>Hr(()=>import("./index-CRhmqMwz.js"),__vite__mapDeps([6,7])),"../../glitch_lightlane/src/index.tsx":()=>Hr(()=>import("./index-C370CA0j.js"),[]),"../../glitch_migration_paradox/src/index.tsx":()=>Hr(()=>import("./index-BOUPxVBe.js"),__vite__mapDeps([8,9])),"../../glitch_onboarding/src/index.tsx":()=>Hr(()=>import("./index-DOdpM0HQ.js"),__vite__mapDeps([10,11])),"../../glitch_onboarding2/src/index.tsx":()=>Hr(()=>import("./index-MgCr_Urj.js"),__vite__mapDeps([12,13])),"../../glitch_sphere_paradox/src/index.tsx":()=>Hr(()=>import("./index-Be41ZfS7.js"),__vite__mapDeps([14,15])),"../../glitch_voxel_universe/src/index.tsx":()=>Hr(()=>import("./index-DnqmHVBx.js"),__vite__mapDeps([16,17]))}),l4=Object.assign({"../../glitch_assumption_toggle/glitch.manifest.json":_w,"../../glitch_ccd/glitch.manifest.json":Cw,"../../glitch_chess_analogy/glitch.manifest.json":zw,"../glitch.manifest.json":qw,"../../glitch_level_questions/glitch.manifest.json":tC,"../../glitch_lightlane/glitch.manifest.json":cC,"../../glitch_migration_paradox/glitch.manifest.json":_C,"../../glitch_onboarding/glitch.manifest.json":CC,"../../glitch_onboarding2/glitch.manifest.json":zC,"../../glitch_sphere_paradox/glitch.manifest.json":qC,"../../glitch_voxel_universe/glitch.manifest.json":t3}),$y=new Set(["glitch_gallery"]),lS=Object.fromEntries(Object.entries(o4).map(([r,e])=>[gA(r),e]).filter(([r])=>!$y.has(r))),u4=Object.fromEntries(Object.entries(l4).map(([r,e])=>[gA(r),e]).filter(([r])=>!$y.has(r))),uS=Object.keys(lS).sort((r,e)=>r.localeCompare(e)),c4=[{folder:"glitch_epicycles",note:"No exported GlitchComponent entry point yet."},{folder:"glitch_threshold_theory",note:"Standalone HTML experiment, not a React GlitchComponent."}],hA=new Set(["glitch_lightlane"]),dA=[{id:"fluid",label:"Fluid",width:null,height:null,note:"Host size"},{id:"desktop",label:"Desktop",width:1440,height:900,note:"1440×900"},{id:"tablet",label:"Tablet",width:834,height:1112,note:"834×1112"},{id:"mobile",label:"Mobile",width:390,height:844,note:"390×844"},{id:"narrow",label:"Narrow",width:320,height:640,note:"320×640"}],f4={primary:"#7dff9b",accent:"#ffb84d",bg:"#050505",bgSecondary:"#101613",text:"#f3ffee",textMuted:"#8cc99a",border:"rgba(125, 255, 155, 0.22)"},h4=new URL("/assets/blblblbl-D60GLrQ8.mp3",import.meta.url).href,d4=new URL("/assets/blblblbl-BrzQxThI.m4a",import.meta.url).href,p4={glitch_assumption_toggle:{"machine.compute_step":[h4,d4]}},J1={"ui.button_click":[{frequency:640,durationMs:55,gain:.025,type:"square"},{frequency:880,durationMs:40,gain:.018,type:"triangle",delayMs:36}],"ui.button_hover":[{frequency:540,durationMs:40,gain:.012,type:"sine"}],"machine.compute_start":[{frequency:240,durationMs:90,gain:.02,type:"sawtooth"},{frequency:320,durationMs:90,gain:.018,type:"sawtooth",delayMs:82},{frequency:430,durationMs:90,gain:.016,type:"triangle",delayMs:164}],"machine.compute_step":[{frequency:780,durationMs:26,gain:.009,type:"square"}],"machine.compute_done":[{frequency:520,durationMs:80,gain:.018,type:"triangle"},{frequency:780,durationMs:110,gain:.018,type:"triangle",delayMs:70}],"machine.verdict_stable":[{frequency:440,durationMs:90,gain:.016,type:"triangle"},{frequency:554,durationMs:90,gain:.016,type:"triangle",delayMs:65},{frequency:659,durationMs:140,gain:.015,type:"triangle",delayMs:130}],"machine.verdict_alert":[{frequency:180,durationMs:120,gain:.022,type:"sawtooth"},{frequency:140,durationMs:140,gain:.02,type:"sawtooth",delayMs:100}]},pA=Object.fromEntries(dA.map(r=>[r.id,r])),dy=uS.map(r=>{const e=u4[r];return{folder:r,componentId:e?.componentId??rf(r).replace(/\s+/g,"-").toLowerCase(),displayName:e?.displayName??rf(r),version:e?.version??"0.0.0",packageName:e?.packageName??r,tags:e?.tags??[],description:e?.description,thumbnailLabel:e?.thumbnailLabel,kind:hA.has(r)?"canvas":"standard"}}).filter(r=>!($y.has(r.folder)||r.componentId==="gallery"||r.packageName==="@glitch-components/gallery")),m4=Object.fromEntries(dy.map(r=>[r.folder,r])),mA="preview";let jp=null;class g4 extends hb.Component{constructor(){super(...arguments),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidUpdate(e){e.resetKey!==this.props.resetKey&&this.state.error&&this.setState({error:null})}render(){return this.state.error?he.jsxs("div",{className:"gallery-state gallery-state-error",children:[he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Render Error"}),he.jsx("h3",{children:"Component crashed while rendering."}),he.jsx("pre",{className:"gallery-pre",children:this.state.error.stack??this.state.error.message})]}):this.props.children}}function gA(r){const e=r.split("/");return e[e.length-3]??r}function rf(r){return r.replace(/^glitch[_-]?/i,"").replace(/[_-]+/g," ").replace(/\b\w/g,e=>e.toUpperCase())}function v4(r,e){const t=e.metadata??{},n=rf(r).replace(/\s+/g,"-").toLowerCase();return{name:t.name??n,displayName:t.displayName??rf(r),version:t.version??"0.0.0",description:t.description,tags:t.tags??[],paramSchema:t.paramSchema??{},defaultParams:t.defaultParams??{}}}function vA(){if(typeof window>"u")return dy[0]?.folder??"";const r=new URLSearchParams(window.location.search).get("component");return r&&!$y.has(r)&&uS.includes(r)?r:dy[0]?.folder??""}function $1(){return typeof window>"u"?!1:new URLSearchParams(window.location.search).get("mode")===mA}function y4(){if(typeof window>"u")return"fluid";const r=new URLSearchParams(window.location.search).get("viewport");return r&&r in pA?r:"fluid"}async function yA(r){const e=lS[r];if(!e)throw new Error("Missing loader for this component folder.");const t=await e();return{Component:t.default,kind:hA.has(r)?"canvas":"standard",metadata:v4(r,t)}}function _4(r){return r.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function eE(r){if(r===void 0)return"undefined";try{return JSON.stringify(r,null,2)}catch(e){return`Could not serialize payload: ${String(e)}`}}function x4(r,e){return String(r.value)===e}function hv(r,e){if(r.type==="boolean")return!!e;if(r.type==="number"||r.type==="range"){const t=Number(e);return Number.isFinite(t)?t:r.default??0}return r.type==="select"&&typeof e=="string"&&r.options?r.options.find(n=>x4(n,e))?.value??e:e}function b4(r){let e=0;for(let n=0;ne.charAt(0).toUpperCase()).join("")}function M4(){if(typeof window>"u")return null;const r=window.AudioContext||window.webkitAudioContext;return r?(jp||(jp=new r),jp.state==="suspended"&&jp.resume(),jp):null}function E4(r,e){const t=r.currentTime+(e.delayMs??0)/1e3,n=t+e.durationMs/1e3,s=r.createOscillator(),u=r.createGain();s.type=e.type??"triangle",s.frequency.setValueAtTime(e.frequency,t),u.gain.setValueAtTime(1e-4,t),u.gain.exponentialRampToValueAtTime(e.gain??.02,t+.008),u.gain.exponentialRampToValueAtTime(1e-4,n),s.connect(u),u.connect(r.destination),s.start(t),s.stop(n+.02)}function tE(r){const e=M4();if(!e)return;const t=J1[r]??J1["ui.button_click"];for(const n of t)E4(e,n)}function T4(r,e){return p4[r]?.[e]??[]}function A4({entry:r,hostBridge:e,params:t,previewKey:n,onComplete:s,onProgress:u}){const h={config:{id:`${r.metadata.name}-gallery`,name:r.metadata.name,version:r.metadata.version,params:t},theme:f4,host:e,onComplete:s,onProgress:u},m=r.Component;return r.kind==="canvas"?he.jsx("div",{className:"gallery-canvas-shell",children:he.jsxs(Kz,{camera:{position:[8,8,8],fov:45},children:[he.jsx(m,{...h}),he.jsx(r4,{makeDefault:!0})]})},n):he.jsx("div",{className:"gallery-standard-shell",children:he.jsx(m,{...h})},n)}function w4({paramKey:r,schema:e,value:t,onChange:n}){const s=e.label??rf(r),u=`gallery-param-${r}`;if(e.type==="boolean")return he.jsxs("label",{className:"gallery-control gallery-checkbox",htmlFor:u,children:[he.jsxs("span",{className:"gallery-control-copy",children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null]}),he.jsx("input",{checked:!!t,id:u,type:"checkbox",onChange:f=>n(r,f.currentTarget.checked)})]});if(e.type==="select")return he.jsxs("label",{className:"gallery-control",htmlFor:u,children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsx("select",{className:"gallery-input",id:u,value:String(t??""),onChange:f=>n(r,hv(e,f.currentTarget.value)),children:(e.options??[]).map(f=>he.jsx("option",{value:String(f.value),children:f.label},`${r}-${f.label}-${f.value}`))})]});if(e.type==="range"){const f=typeof t=="number"?t:Number(e.default??0);return he.jsxs("div",{className:"gallery-control",children:[he.jsx("label",{className:"gallery-control-label",htmlFor:u,children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsxs("div",{className:"gallery-range-row",children:[he.jsx("input",{className:"gallery-range",id:u,max:e.max,min:e.min,step:e.step,type:"range",value:f,onChange:h=>n(r,hv(e,h.currentTarget.value))}),he.jsx("input",{className:"gallery-number",max:e.max,min:e.min,step:e.step,type:"number",value:f,onChange:h=>n(r,hv(e,h.currentTarget.value))})]})]})}return e.type==="number"?he.jsxs("label",{className:"gallery-control",htmlFor:u,children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsx("input",{className:"gallery-input",id:u,max:e.max,min:e.min,step:e.step,type:"number",value:typeof t=="number"?t:Number(e.default??0),onChange:f=>n(r,hv(e,f.currentTarget.value))})]}):he.jsxs("label",{className:"gallery-control",htmlFor:u,children:[he.jsx("span",{className:"gallery-control-label",children:s}),e.description?he.jsx("span",{className:"gallery-control-help",children:e.description}):null,he.jsx("input",{className:"gallery-input",id:u,type:e.type==="color"?"color":"text",value:typeof t=="string"?t:String(t??""),onChange:f=>n(r,f.currentTarget.value)})]})}function C4(){return rt.useEffect(()=>{if(typeof document>"u")return;const r=$1()?"preview":"shell";return document.body.dataset.galleryMode=r,()=>{delete document.body.dataset.galleryMode}},[]),$1()?he.jsx(N4,{}):he.jsx(R4,{})}function R4(){const[r,e]=rt.useState(vA),[t,n]=rt.useState(y4),[s,u]=rt.useState({}),[f,h]=rt.useState({}),[m,g]=rt.useState({}),[_,x]=rt.useState(null),[b,M]=rt.useState(null),[A,R]=rt.useState([]),[w,E]=rt.useState(0),N=rt.useRef(null),[D,U]=rt.useState(!1),B=rt.useCallback((q,ne)=>{R(be=>[{id:Date.now()+be.length,kind:q,payload:ne,timestamp:_4(new Date)},...be].slice(0,32))},[]),z=rt.useCallback(async q=>{if(s[q])return s[q];if(!lS[q])return h(ne=>({...ne,[q]:{status:"error",error:"Missing loader for this component folder."}})),null;h(ne=>({...ne,[q]:{status:"loading"}}));try{const ne=await yA(q);return u(be=>({...be,[q]:ne})),g(be=>be[q]?be:{...be,[q]:{...ne.metadata.defaultParams}}),h(be=>({...be,[q]:{status:"idle"}})),ne}catch(ne){const be=ne instanceof Error?ne.message:String(ne);return h(Ne=>({...Ne,[q]:{status:"error",error:be}})),B("system",{component:q,error:be,type:"load-error"}),null}},[B,s]);rt.useEffect(()=>{if(!r)return;const q=window.setTimeout(()=>{z(r)},0);return()=>window.clearTimeout(q)},[z,r]),rt.useEffect(()=>{if(!r||typeof window>"u")return;const q=new URL(window.location.href);q.searchParams.set("component",r),q.searchParams.set("viewport",t),window.history.replaceState({},"",q)},[r,t]),rt.useEffect(()=>{const q=window.setTimeout(()=>{x(null),M(null),R([]),E(ne=>ne+1),U(!1)},0);return()=>window.clearTimeout(q)},[r]);const H=rt.useCallback(q=>{N.current?.contentWindow&&N.current.contentWindow.postMessage({source:"glitch-gallery-shell",type:"sync",payload:q},window.location.origin)},[]);rt.useEffect(()=>{const q=ne=>{if(!(ne.origin!==window.location.origin||!ne.data||ne.data.source!=="glitch-gallery-preview")){if(ne.data.type==="ready"){U(!0);return}if(ne.data.type==="progress"){x(ne.data.percent),B("progress",{percent:ne.data.percent});return}if(ne.data.type==="complete"){M(ne.data.payload),B("complete",ne.data.payload);return}ne.data.type==="log"&&B(ne.data.kind,ne.data.payload)}};return window.addEventListener("message",q),()=>window.removeEventListener("message",q)},[B]);const W=r?s[r]:void 0,I=r?m4[r]:void 0,P=r?f[r]:void 0,Z=pA[t],se=rt.useMemo(()=>r?m[r]??W?.metadata.defaultParams??{}:{},[m,W?.metadata.defaultParams,r]);rt.useEffect(()=>{!r||!D||H({component:r,params:se,revision:w})},[H,D,w,se,r]);const te=rt.useCallback((q,ne)=>{r&&g(be=>({...be,[r]:{...be[r]??{},[q]:ne}}))},[r]),fe=rt.useCallback(()=>{!r||!W||(g(q=>({...q,[r]:{...W.metadata.defaultParams}})),E(q=>q+1),B("system",{component:r,type:"params-reset"}))},[B,W,r]),pe=rt.useCallback(()=>{r&&(E(q=>q+1),B("system",{component:r,type:"preview-remount"}))},[B,r]),Y=rt.useMemo(()=>{if(typeof window>"u")return"";const q=new URL(window.location.href);return q.search="",q.searchParams.set("mode",mA),q.searchParams.set("component",r),q.toString()},[r]);return he.jsxs("div",{className:"gallery-shell","data-gallery-shell":"true",children:[he.jsxs("aside",{className:"gallery-sidebar",children:[he.jsxs("div",{className:"gallery-sidebar-header",children:[he.jsx("span",{className:"gallery-eyebrow",children:"Dev Host"}),he.jsx("h1",{children:"Glitch Gallery"}),he.jsx("div",{className:"gallery-viewport-switcher gallery-sidebar-viewport-switcher","data-gallery-viewport-switcher":"true",children:dA.map(q=>he.jsxs("button",{className:`gallery-viewport-button gallery-viewport-button-compact${t===q.id?" is-active":""}`,"data-gallery-viewport":q.id,type:"button",onClick:()=>n(q.id),children:[q.label," : ",q.width?`${q.width}px`:"Fluid"]},q.id))})]}),he.jsx("div",{className:"gallery-section",children:he.jsxs("div",{className:"gallery-selected-card",children:[he.jsx("span",{className:"gallery-eyebrow",children:"Selected"}),he.jsx("h2",{className:"gallery-selected-title",children:W?.metadata.displayName??I?.displayName??rf(r)}),he.jsx("p",{className:"gallery-selected-subtitle",children:W?.metadata.description??I?.description??"Gallery loads components lazily and hosts them with the same sound bridge/event logging model used for Glitch University testing."}),he.jsxs("div",{className:"gallery-toolbar-actions gallery-sidebar-actions",children:[he.jsx("button",{className:"gallery-button",type:"button",onClick:pe,children:"Remount Preview"}),he.jsx("button",{className:"gallery-button",type:"button",onClick:fe,disabled:!W,children:"Reset Params"})]})]})}),he.jsxs("div",{className:"gallery-section",children:[he.jsxs("div",{className:"gallery-section-header",children:[he.jsx("h2",{children:"GlitchComponents"}),he.jsx("span",{className:"gallery-badge",children:uS.length})]}),he.jsx("div",{className:"gallery-list","data-gallery-component-list":"true",children:dy.map(q=>{const ne=q.folder,be=s[ne],Ne=r===ne,X=f[ne]?.status??"idle";return he.jsxs("button",{className:`gallery-list-item${Ne?" is-active":""}`,"data-gallery-component":ne,type:"button",onClick:()=>e(ne),style:b4(ne),children:[he.jsx("span",{className:"gallery-list-thumb","aria-hidden":"true",children:he.jsxs("span",{className:"gallery-list-thumb-frame",children:[he.jsx("span",{className:"gallery-list-thumb-type",children:q.kind==="canvas"?"Canvas":"Standard"}),he.jsx("strong",{children:q.thumbnailLabel??S4(q.componentId)}),he.jsx("span",{className:"gallery-list-thumb-id",children:q.componentId})]})}),he.jsxs("span",{className:"gallery-list-copy",children:[he.jsx("span",{className:"gallery-list-title",children:be?.metadata.displayName??q.displayName}),he.jsx("span",{className:"gallery-list-subtitle",children:ne}),he.jsx("span",{className:"gallery-list-note",children:q.tags.slice(0,3).join(" · ")||"No tags exported"})]}),he.jsxs("span",{className:"gallery-list-status",children:[he.jsxs("span",{className:"gallery-badge gallery-badge-muted",children:["v",q.version]}),X==="loading"?he.jsx("span",{className:"gallery-badge",children:"Loading"}):null,X==="error"?he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Error"}):null]})]},ne)})})]}),he.jsxs("div",{className:"gallery-section",children:[he.jsx("div",{className:"gallery-section-header",children:he.jsx("h2",{children:"Not Yet Exported"})}),he.jsx("div",{className:"gallery-list",children:c4.map(q=>he.jsxs("div",{className:"gallery-list-item is-disabled",children:[he.jsxs("span",{className:"gallery-list-copy",children:[he.jsx("span",{className:"gallery-list-title",children:rf(q.folder)}),he.jsx("span",{className:"gallery-list-subtitle",children:q.folder}),he.jsx("span",{className:"gallery-list-note",children:q.note})]}),he.jsx("span",{className:"gallery-badge gallery-badge-muted",children:"Raw"})]},q.folder))})]})]}),he.jsx("main",{className:"gallery-main",children:he.jsxs("div",{className:"gallery-grid",children:[he.jsxs("section",{className:"gallery-preview-panel",children:[he.jsxs("div",{className:"gallery-panel-header",children:[he.jsx("span",{className:"gallery-badge",children:r}),he.jsxs("div",{className:"gallery-stage-badges",children:[he.jsx("span",{className:"gallery-badge gallery-badge-muted",children:Z.width?`${Z.width}px`:"Fluid"}),_!==null?he.jsxs("span",{className:"gallery-badge gallery-badge-accent",children:[Math.round(_),"%"]}):null]})]}),he.jsx("div",{className:"gallery-stage","data-gallery-stage":r,children:he.jsx("div",{className:`gallery-stage-viewport${Z.width?"":" is-fluid"}`,"data-gallery-preview-viewport":t,style:Z.width?{"--gallery-preview-width":`${Z.width}px`,"--gallery-preview-height":`${Z.height}px`}:void 0,children:P?.status==="error"?he.jsxs("div",{className:"gallery-state gallery-state-error",children:[he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Load Error"}),he.jsx("h3",{children:"Unable to import this component."}),he.jsx("pre",{className:"gallery-pre",children:P.error})]}):W?he.jsx("iframe",{ref:N,className:"gallery-preview-frame","data-gallery-preview-frame":r,src:Y,title:`${r} preview`},r):he.jsxs("div",{className:"gallery-state",children:[he.jsx("span",{className:"gallery-badge",children:"Loading"}),he.jsx("h3",{children:"Importing component metadata…"}),he.jsx("p",{children:"The gallery keeps the catalog light and only imports the selected component bundle."})]})})})]}),he.jsxs("aside",{className:"gallery-inspector",children:[he.jsxs("section",{className:"gallery-panel",children:[he.jsx("div",{className:"gallery-section-header",children:he.jsx("h3",{children:"Metadata"})}),W?he.jsxs("dl",{className:"gallery-metadata",children:[he.jsxs("div",{children:[he.jsx("dt",{children:"Name"}),he.jsx("dd",{children:W.metadata.name})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Version"}),he.jsx("dd",{children:W.metadata.version??I?.version})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Wrapper"}),he.jsx("dd",{children:W.kind==="canvas"?"Canvas host":"Standard host"})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Package"}),he.jsx("dd",{children:I?.packageName??"Unknown"})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Viewport"}),he.jsx("dd",{children:Z.width?`${Z.width}px fixed width`:"Fluid host width"})]}),he.jsxs("div",{children:[he.jsx("dt",{children:"Tags"}),he.jsx("dd",{children:W.metadata.tags?.length?W.metadata.tags.join(", "):I?.tags.length?I.tags.join(", "):"None exported"})]})]}):he.jsx("p",{className:"gallery-muted",children:"Metadata appears after the module loads."})]}),he.jsxs("section",{className:"gallery-panel gallery-panel-scroll",children:[he.jsxs("div",{className:"gallery-section-header",children:[he.jsx("h3",{children:"Params"}),W?he.jsx("span",{className:"gallery-badge",children:Object.keys(W.metadata.paramSchema).length}):null]}),W&&Object.keys(W.metadata.paramSchema).length>0?he.jsx("div",{className:"gallery-controls gallery-controls-scroll",children:Object.entries(W.metadata.paramSchema).map(([q,ne])=>he.jsx(w4,{onChange:te,paramKey:q,schema:ne,value:se[q]??ne.default},q))}):he.jsx("p",{className:"gallery-muted",children:"This component does not expose parameter controls."})]}),he.jsxs("section",{className:"gallery-panel",children:[he.jsx("div",{className:"gallery-section-header",children:he.jsx("h3",{children:"Latest Result"})}),b?he.jsx("pre",{className:"gallery-pre",children:eE(b)}):he.jsx("p",{className:"gallery-muted",children:"No completion payload yet."})]}),he.jsxs("section",{className:"gallery-panel",children:[he.jsxs("div",{className:"gallery-section-header",children:[he.jsx("h3",{children:"Event Log"}),he.jsx("button",{className:"gallery-button gallery-button-quiet",type:"button",onClick:()=>R([]),children:"Clear"})]}),A.length>0?he.jsx("div",{className:"gallery-log-list",children:A.map(q=>he.jsxs("article",{className:"gallery-log-item",children:[he.jsxs("div",{className:"gallery-log-header",children:[he.jsx("span",{className:`gallery-badge gallery-badge-${q.kind}`,children:q.kind}),he.jsx("span",{className:"gallery-log-time",children:q.timestamp})]}),he.jsx("pre",{className:"gallery-pre",children:eE(q.payload)})]},q.id))}):he.jsx("p",{className:"gallery-muted",children:"Progress, completion, host events, and sound calls appear here."})]})]})]})})]})}function N4(){const[r,e]=rt.useState(vA),[t,n]=rt.useState(null),[s,u]=rt.useState(null),[f,h]=rt.useState({}),[m,g]=rt.useState(0),_=rt.useRef({}),x=rt.useCallback(M=>{typeof window>"u"||window.parent===window||window.parent.postMessage(M,window.location.origin)},[]);rt.useEffect(()=>{x({source:"glitch-gallery-preview",type:"ready"})},[x]),rt.useEffect(()=>{const M=A=>{if(A.origin!==window.location.origin||!A.data||A.data.source!=="glitch-gallery-shell"||A.data.type!=="sync")return;const R=A.data.payload;e(R.component),h(R.params),g(R.revision)};return window.addEventListener("message",M),()=>window.removeEventListener("message",M)},[]),rt.useEffect(()=>{let M=!1;return yA(r).then(A=>{M||(n(A),u(null),h(R=>Object.keys(R).length>0?R:{...A.metadata.defaultParams}))}).catch(A=>{if(M)return;const R=A instanceof Error?A.message:String(A);n(null),u(R),x({source:"glitch-gallery-preview",type:"log",kind:"system",payload:{type:"load-error",component:r,error:R}})}),()=>{M=!0}},[x,r]);const b=rt.useMemo(()=>({playSound(M,A){const R=`${r}:${M}`,w=T4(r,M);let E=!1;if(w.length>0&&typeof window<"u"){E=!0;const[N]=w,D=_.current[R]??new Audio(N);_.current[R]=D,D.pause(),D.currentTime=0;const U=D.play();U&&U.catch(()=>{tE(M)})}E||tE(M),x({source:"glitch-gallery-preview",type:"log",kind:"sound",payload:{id:M,payload:A}})},stopSound(M,A){const R=`${r}:${M}`,w=_.current[R];w&&(w.pause(),w.currentTime=0),x({source:"glitch-gallery-preview",type:"log",kind:"sound",payload:{id:`stop:${M}`,payload:A}})},emit(M,A){x({source:"glitch-gallery-preview",type:"log",kind:"host",payload:{type:M,payload:A}})}}),[x]);return s?he.jsx("div",{className:"gallery-runtime-root",children:he.jsxs("div",{className:"gallery-state gallery-state-error",children:[he.jsx("span",{className:"gallery-badge gallery-badge-danger",children:"Load Error"}),he.jsx("h3",{children:"Unable to import this component."}),he.jsx("pre",{className:"gallery-pre",children:s})]})}):t?he.jsx("div",{className:"gallery-runtime-root","data-gallery-runtime":r,children:he.jsx(g4,{resetKey:`${r}:${m}`,children:he.jsx(A4,{entry:t,hostBridge:b,onComplete:M=>{x({source:"glitch-gallery-preview",type:"complete",payload:M})},onProgress:M=>{x({source:"glitch-gallery-preview",type:"progress",percent:M})},params:f,previewKey:`${r}:${m}`})})}):he.jsx("div",{className:"gallery-runtime-root",children:he.jsxs("div",{className:"gallery-state",children:[he.jsx("span",{className:"gallery-badge",children:"Loading"}),he.jsx("h3",{children:"Importing preview runtime…"})]})})}lw.createRoot(document.getElementById("root")).render(he.jsx(C4,{}));export{PD as A,as as B,yt as C,Uo as D,Ny as F,C4 as G,QE as I,uR as M,Dl as O,zi as P,Pa as Q,my as R,yr as S,Xc as T,iS as U,j as V,jT as W,kx as _,gz as a,ze as b,ow as c,XE as d,Dz as e,wl as f,Kz as g,r4 as h,Cn as i,he as j,FD as k,Gc as l,eb as m,of as n,Lb as o,Kp as p,qy as q,rt as r,Xb as s,Yi as t,Nu as u,lf as v,Vu as w,NT as x,RT as y,CT as z}; diff --git a/public/glitch/glitch_gallery/assets/index-CMvlyyxu.js b/public/glitch/glitch_gallery/assets/index-CMvlyyxu.js new file mode 100644 index 0000000..99fa45f --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-CMvlyyxu.js @@ -0,0 +1 @@ +import{r as o,j as e}from"./index-CEeZxcxj.js";const F=18,W=F*F,O=1e3,L=12,K=O*L,Q=K+O,J=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],I=["orbit","intro","receptor","transition-photon","photon","transition-eventlist","eventlist","transition-binning","binning","transition-flux","flux","transition-periodogram","periodogram","transition-spectrogram","spectrogram","closing"],j=[{label:"Red",shortLabel:"R",wavelength:690,hue:2,saturation:100,lightness:66,energy:.44,decay:700,radius:.28},{label:"Orange",shortLabel:"O",wavelength:620,hue:18,saturation:100,lightness:64,energy:.5,decay:760,radius:.3},{label:"Amber",shortLabel:"A",wavelength:590,hue:36,saturation:100,lightness:66,energy:.56,decay:820,radius:.32},{label:"Yellow",shortLabel:"Y",wavelength:570,hue:56,saturation:100,lightness:69,energy:.62,decay:900,radius:.34},{label:"Green",shortLabel:"G",wavelength:530,hue:108,saturation:84,lightness:66,energy:.7,decay:980,radius:.36},{label:"Cyan",shortLabel:"C",wavelength:500,hue:188,saturation:94,lightness:68,energy:.8,decay:1120,radius:.4},{label:"Blue",shortLabel:"B",wavelength:450,hue:232,saturation:100,lightness:71,energy:.92,decay:1300,radius:.45},{label:"Violet",shortLabel:"V",wavelength:410,hue:274,saturation:100,lightness:74,energy:1.08,decay:1540,radius:.52}],ee=[{page:"binning",title:"Count events per second",diagram:"count-time",rule:"Group event rows into 1 second time bins and count how many clicks fall into each bin.",output:"Light curve / count periodogram"},{page:"flux",title:"Sum energy per second",diagram:"energy-time",rule:"Group event rows into 1 second time bins and sum the total photon energy inside each bin.",output:"Flux variability"},{page:"periodogram",title:"Sum energy by wavelength bin",diagram:"energy-wavelength",rule:"Group event rows by wavelength and sum the energy across the recent time window.",output:"Spectrum"},{page:"spectrogram",title:"Count events by wavelength over time",diagram:"count-wavelength-time",rule:"Group event rows into both time bins and wavelength bins, then count clicks in each cell.",output:"Spectrogram"}],U={"transition-photon":{title:"Every photon has energy",body:"Colour tells us something about wavelength and energy. Before we record the hits, it helps to see what that means.",nextPage:"photon",emoji:"😶‍🌫️"},"transition-eventlist":{title:"Now record the hits",body:"Each photon hit becomes one row with a time, an energy, and a CCD position.",nextPage:"eventlist",emoji:"📝"},"transition-binning":{title:"Chart #1 : Brightness over time",body:"We now use the data and make the first chart",nextPage:"binning",emoji:"🫰🏻⏰"},"transition-flux":{title:"Chart #2: Energy over time",body:"Instead of counting clicks equally, we sum up the energy of each phton inside each time bin.",nextPage:"flux",emoji:"🔥⏰"},"transition-periodogram":{title:"Chart #3: Build a spectrum",body:"The same event list can also be grouped by wavelength. Is it lots of low-energy red photons, or high-energy violet ones? Let`s find out.",nextPage:"periodogram",emoji:"🌈"},"transition-spectrogram":{title:"Chart #3 : Let´s mix things up",body:"Now try both time bins, and wavelength/energy bins at the same time!",nextPage:"spectrogram",emoji:"🤪"}},Y=["receptor","photon","eventlist","binning","flux","periodogram","spectrogram"];function se(){return Array.from({length:W},(t,n)=>({id:n,level:0,size:.22,decay:900,tint:"hsla(0 0% 100% / 0)",glow:"hsla(0 0% 100% / 0)"}))}function te(){return Array.from({length:j.length},()=>0)}function ne(){return{cells:se(),eventHistory:[],totalPhotons:0}}function G(t,n,s){return Math.min(s,Math.max(n,t))}function ae(t){const n=Math.floor(t/1e3),s=Math.floor(n/60),a=n%60,c=Math.floor(t%1e3/10);return[s,a].map(r=>String(r).padStart(2,"0")).join(":")+"."+String(c).padStart(2,"0")}function ce(t){const n=t.replace(/^#/,"");return J.includes(n)?n:"orbit"}function z(){return typeof window>"u"?"orbit":ce(window.location.hash)}function B(t,n,s,a){return`hsla(${t} ${n}% ${s}% / ${a})`}function k(t,n){const s=j[t],a=G(.08+n*.88,.08,.96),c=Math.min(84,s.lightness+n*10);return`hsla(${s.hue} ${s.saturation}% ${c}% / ${a})`}function V(t,n,s,a){if(t.length===0)return"";const c=a?.min??Math.min(...t),r=a?.max??Math.max(...t),i=Math.max(r-c,1e-4);return t.map((d,p)=>{const u=t.length===1?n/2:p/(t.length-1)*n,m=s-(d-c)/i*(s-8)-4;return`${p===0?"M":"L"} ${u.toFixed(2)} ${m.toFixed(2)}`}).join(" ")}function re(t,n,s,a){return t.length===0?"":`${V(t,n,s,a)} L ${n} ${s} L 0 ${s} Z`}function ie(t){const s=G(t,0,1)*(j.length-1),a=Math.floor(s),c=Math.min(j.length-1,Math.ceil(s)),r=s-a,i=j[a],d=j[c],p=(u,m)=>u+(m-u)*r;return{label:r<.5?i.label:d.label,wavelength:p(i.wavelength,d.wavelength),energy:p(i.energy,d.energy),hue:p(i.hue,d.hue),saturation:p(i.saturation,d.saturation),lightness:p(i.lightness,d.lightness)}}function le(){return Array.from({length:42},(t,n)=>({x:n*73%100/100,y:(n*37+11)%100/100,size:.8+n*17%7*.22,opacity:.24+n*29%10*.05}))}function oe(t){const n=le(),s=t*24e-5,c=Math.cos(s)*178,r=Math.sin(s*.72)*34,i=Math.sin(s)*132,p=c*.72,u=r*.45,m=T=>1+T/620,N=460+(0-p)*.72,f=264+(0-u)*.42+i*.08,M=G(m(-p*.05),.88,1.14),C=460+(c-p)*.72,y=236+(r-u)*.5-i*.16,v=G(m(i),.82,1.34),h=s*.9;return{earth:{x:N,y:f,scale:M},telescope:{x:C,y,scale:v,rotation:h},stars:n}}function de(){const[t,n]=o.useState(0);o.useEffect(()=>{let a=0;const c=performance.now(),r=i=>{n(i-c),a=window.requestAnimationFrame(r)};return a=window.requestAnimationFrame(r),()=>window.cancelAnimationFrame(a)},[]);const s=oe(t);return e.jsxs("div",{className:"ccd-orbit-screen",children:[e.jsxs("div",{className:"ccd-orbit-copy",children:[e.jsx("span",{className:"ccd-stat-label",children:"Glitch Hunters's guide to telescopes"}),e.jsx("h2",{children:"Orbital telescopes"}),e.jsx("p",{children:"Humanity has launched multiple telescopes into orbit, each designed to observe the universe from different vantage points."})]}),e.jsx("div",{className:"ccd-orbit-stage",children:e.jsxs("svg",{className:"ccd-orbit-svg",viewBox:"0 0 920 520","aria-label":"Telescope orbiting Earth",children:[e.jsxs("defs",{children:[e.jsxs("radialGradient",{id:"orbitEarthGlow",cx:"42%",cy:"34%",r:"68%",children:[e.jsx("stop",{offset:"0%",stopColor:"#6bd3ff"}),e.jsx("stop",{offset:"36%",stopColor:"#2f88d8"}),e.jsx("stop",{offset:"72%",stopColor:"#124180"}),e.jsx("stop",{offset:"100%",stopColor:"#061327"})]}),e.jsxs("linearGradient",{id:"orbitCubeFront",x1:"0",x2:"1",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#fff7e9"}),e.jsx("stop",{offset:"100%",stopColor:"#ff9d77"})]}),e.jsxs("linearGradient",{id:"orbitCubeSide",x1:"0",x2:"1",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#d3caf7"}),e.jsx("stop",{offset:"100%",stopColor:"#7967db"})]})]}),s.stars.map((a,c)=>e.jsx("circle",{cx:a.x*920,cy:a.y*520,fill:"rgba(255,255,255,0.92)",opacity:a.opacity,r:a.size},c)),e.jsx("ellipse",{className:"ccd-orbit-track",cx:s.earth.x,cy:s.earth.y+8,rx:174*s.earth.scale,ry:62*s.earth.scale}),e.jsxs("g",{transform:`translate(${s.earth.x} ${s.earth.y}) scale(${s.earth.scale})`,children:[e.jsx("circle",{className:"ccd-orbit-earth-atmosphere",cx:"0",cy:"0",r:"112"}),e.jsx("circle",{cx:"0",cy:"0",fill:"url(#orbitEarthGlow)",r:"96"}),e.jsx("path",{className:"ccd-orbit-continent",d:"M -38 -20 C -18 -46 8 -44 22 -12 C 36 10 18 26 -4 32 C -20 38 -42 22 -48 0 Z"}),e.jsx("path",{className:"ccd-orbit-continent",d:"M 18 20 C 38 14 54 26 48 48 C 42 62 18 62 10 44 C 6 34 8 24 18 20 Z"}),e.jsx("circle",{className:"ccd-orbit-night-shadow",cx:"30",cy:"4",r:"92"})]}),e.jsx("g",{transform:`translate(${s.telescope.x} ${s.telescope.y}) rotate(${s.telescope.rotation*180/Math.PI}) scale(${s.telescope.scale})`,children:e.jsxs("g",{className:"ccd-orbit-telescope",children:[e.jsx("polygon",{points:"-18,-18 12,-28 12,4 -18,14",fill:"url(#orbitCubeFront)"}),e.jsx("polygon",{points:"12,-28 30,-14 30,18 12,4",fill:"url(#orbitCubeSide)"}),e.jsx("polygon",{points:"-18,-18 0,-4 30,-14 12,-28",fill:"rgba(255,255,255,0.82)"}),e.jsx("rect",{x:"-42",y:"-5",width:"18",height:"10",rx:"2.5",fill:"#d9d2f5"}),e.jsx("rect",{x:"30",y:"-4",width:"22",height:"8",rx:"3",fill:"#ffc66f"}),e.jsx("rect",{x:"-6",y:"18",width:"12",height:"34",rx:"5",fill:"#bdb4e8"}),e.jsx("rect",{x:"-34",y:"30",width:"68",height:"10",rx:"5",fill:"#8e78ff",opacity:"0.88"})]})})]})}),e.jsx("div",{className:"ccd-orbit-actions",children:e.jsx("a",{className:"ccd-experience-button",href:"#intro",children:"Next"})})]})}function q(t,n,s,a){const c=Array.from({length:L},()=>0),r=Math.max(0,s-L);return t.forEach(i=>{const d=Math.floor((i.time-n)/O);d=s||(c[d-r]+=a(i))}),c}function he(t,n,s){const a=Array.from({length:j.length},()=>Array.from({length:L},()=>0)),c=Math.max(0,s-L);return t.forEach(r=>{const i=Math.floor((r.time-n)/O);i=s||(a[r.photonIndex][i-c]+=1)}),a}function me(t,n,s){const a=te();if(s<=0)return a;const c=Math.max(0,s-L);return t.forEach(r=>{const i=Math.floor((r.time-n)/O);i>=c&&i"u")return null;const t=window.AudioContext??window.webkitAudioContext;return t?new t:null}function pe(t){const[n,s]=o.useState(()=>ne()),[a,c]=o.useState(0),[r,i]=o.useState(!1),[d,p]=o.useState(!0),[u]=o.useState(()=>Date.now()),m=o.useRef(u),N=o.useRef(null),f=o.useRef(null),M=o.useRef(t),C=o.useRef(null);o.useEffect(()=>{M.current=t},[t]);const y=()=>{const h=C.current??xe();if(!h){p(!1);return}C.current=h,h.resume().then(()=>{p(!0),i(h.state==="running")}).catch(()=>{i(!1)})};o.useEffect(()=>{const h=()=>{y()};return window.addEventListener("pointerdown",h,{passive:!0}),window.addEventListener("keydown",h),()=>{window.removeEventListener("pointerdown",h),window.removeEventListener("keydown",h)}},[]),o.useEffect(()=>()=>{C.current&&C.current.close()},[]);const v=(h,T,R)=>{if(!M.current)return;const E=C.current;if(!E||E.state!=="running")return;const x=E.currentTime+R,b=E.createOscillator(),A=E.createGain(),w=E.createBiquadFilter(),_=j[h],l=820+h*92,g=.006+T*.004,S=.018+T*.02;b.type="triangle",b.frequency.setValueAtTime(l,x),b.frequency.exponentialRampToValueAtTime(l*.74,x+S),w.type="bandpass",w.frequency.setValueAtTime(1400+_.hue*2.4,x),w.Q.setValueAtTime(1.4,x),A.gain.setValueAtTime(1e-4,x),A.gain.exponentialRampToValueAtTime(g,x+.003),A.gain.exponentialRampToValueAtTime(1e-4,x+S),b.connect(w),w.connect(A),A.connect(E.destination),b.start(x),b.stop(x+S+.008)};return o.useEffect(()=>{const h=()=>{c(Date.now()-m.current)};return h(),N.current=window.setInterval(h,90),()=>{N.current!==null&&window.clearInterval(N.current)}},[]),o.useEffect(()=>{let h=!1;const T=()=>{if(h)return;const R=[],E=[];s(x=>{const b=Date.now(),A=x.cells.map(g=>{if(g.level<=.001)return g.level===0?g:{...g,level:0};const S=36/g.decay;return{...g,level:Math.max(0,g.level-S),size:Math.max(.2,g.size-S*.3)}});let w=x.totalPhotons;const _=Math.random()<.28?2:1;for(let g=0;g<_;g+=1){const S=Math.floor(Math.random()*W),$=Math.floor(Math.random()*j.length),P=j[$],H=A[S],X=G(H.level+P.energy,0,1.25),Z=Math.max(H.size,P.radius+P.energy*.22);A[S]={...H,level:X,size:Z,decay:Math.max(H.decay,P.decay),tint:B(P.hue,P.saturation,P.lightness,.96),glow:B(P.hue,P.saturation,Math.min(88,P.lightness+8),.78)},w+=1,R.push({photonIndex:$,energy:P.energy}),E.push({time:b,photonIndex:$,energy:P.energy,cellIndex:S})}const l=[...x.eventHistory,...E].filter(g=>b-g.time{v(x.photonIndex,x.energy,b*.012)}),f.current=window.setTimeout(T,36+Math.random()*70)};return T(),()=>{h=!0,f.current!==null&&window.clearTimeout(f.current)}},[]),{audioArmed:r,audioSupported:d,enableAudio:y,elapsedMilliseconds:a,exposureStartTime:u,simulation:n}}function ge({cells:t,activeHits:n,averageEnergy:s,guide:a}){return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-stage",children:[e.jsx("div",{className:"ccd-grid-frame",children:e.jsxs("div",{className:"ccd-grid","aria-label":"Photon receptor grid",children:[t.map(c=>e.jsx("div",{className:"ccd-cell",children:e.jsx("span",{className:"ccd-hit",style:{opacity:c.opacity,transform:`translate(-50%, -50%) scale(${c.scale})`,width:`${c.size}rem`,height:`${c.size}rem`,background:c.tint,boxShadow:`0 0 ${.9+c.opacity*1.8}rem ${c.glow}`}})},c.id)),e.jsx("div",{className:"ccd-grid-glow"})]})}),a||null,e.jsxs("div",{className:"ccd-readout","aria-label":"Sensor readout",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Active pixels"}),e.jsx("strong",{children:String(n).padStart(3,"0")})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Mean charge"}),e.jsx("strong",{children:s.toFixed(3)})]})]})]})})}const je={eyebrow:"Detector Plane",title:"Telescope detector view",description:"The core of the telescope is a camera, called a CCD array. Photons - light from distant galaxies - strike the CCD and light up specific pixels. This is the raw material for the everything a telescope does."},fe={stepLabel:"Step 1",title:"Photons are hitting the detector",body:"Notice how some pixels are bigger than others? They have more energy."};function ve(){return e.jsx("div",{className:"ccd-intro-screen",children:e.jsxs("div",{className:"ccd-intro-panel",children:[e.jsx("div",{className:"ccd-intro-logo-frame","aria-hidden":"true",children:e.jsx("img",{alt:"",className:"ccd-intro-logo",src:"/glitchhunterlogo.png"})}),e.jsx("div",{className:"ccd-intro-brand",children:e.jsx("span",{className:"ccd-intro-brand-mark",children:"Glitch Hunter's"})}),e.jsxs("div",{className:"ccd-intro-copy",children:[e.jsx("h2",{children:"Guide to Telescopes"}),e.jsx("p",{children:"How do they work? What does the telescope actually do?"})]}),e.jsxs("div",{className:"ccd-intro-covers",children:[e.jsx("span",{className:"ccd-stat-label",children:"In this experience, you will see:"}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"01"}),e.jsx("strong",{children:"The CCD"}),e.jsx("p",{children:"The telescope's eye, where photons land."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"02"}),e.jsx("strong",{children:"Energy and wavelength"}),e.jsx("p",{children:"Colour tells us whether a photon is lower-energy red or higher-energy violet."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"03"}),e.jsx("strong",{children:"The event list"}),e.jsx("p",{children:"Each photon hit becomes a recorded row with time, energy, and detector position."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"04"}),e.jsx("strong",{children:"Periodograms"}),e.jsx("p",{children:"Group events by time or wavelength to see brightness and spectral power."})]}),e.jsxs("div",{className:"ccd-intro-card",children:[e.jsx("span",{className:"ccd-intro-card-index",children:"05"}),e.jsx("strong",{children:"Spectrograms"}),e.jsx("p",{children:"Bin by both time and wavelength to see how the colours evolve."})]})]}),e.jsx("div",{className:"ccd-intro-actions",children:e.jsx("a",{className:"ccd-experience-button",href:"#receptor",children:"Next"})})]})})}function be(t){return t in U}function ye({onComplete:t}){return e.jsx("div",{className:"ccd-closing-screen",children:e.jsxs("div",{className:"ccd-closing-panel",children:[e.jsx("span",{className:"ccd-stat-label",children:"Key Concepts"}),e.jsx("h2",{children:"What to remember"}),e.jsxs("div",{className:"ccd-closing-grid",children:[e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Binning"}),e.jsx("p",{children:"Grouping events because they arrive at a similar time, or have a similar colour."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Energy / wavelength"}),e.jsx("p",{children:"Red means long wavelength and low energy. Violet means short wavelength and high energy."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Periodogram"}),e.jsx("p",{children:"How the brightness goes up and down over time."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Spectrogram"}),e.jsx("p",{children:"How much there is of each colour."})]}),e.jsxs("div",{className:"ccd-closing-card",children:[e.jsx("strong",{children:"Periodo-spectrogram"}),e.jsx("p",{children:"Binning by both time and wavelength / frequency."})]})]}),e.jsx("p",{className:"ccd-closing-message",children:"You're on your way to becoming a Cosmotologist!"}),e.jsxs("div",{className:"ccd-closing-actions",children:[e.jsx("a",{className:"ccd-experience-button ccd-experience-button-secondary",href:"#orbit",children:"Start Over"}),e.jsx("button",{className:"ccd-experience-button",onClick:()=>{t?.({success:!0,score:100,data:{completedExperience:"ccd-photon-explorer",finalPage:"closing"}})},type:"button",children:"Take the Glitch Gate"})]})]})})}function Ne({page:t}){const n=U[t];return e.jsx("div",{className:"ccd-transition-screen",children:e.jsxs("div",{className:"ccd-transition-card",children:[e.jsx("span",{className:"ccd-stat-label emojilarge",children:n.emoji}),e.jsx("h2",{children:n.title}),e.jsx("p",{children:n.body}),e.jsx("div",{className:"ccd-transition-actions",children:e.jsx("a",{className:"ccd-experience-button",href:`#${n.nextPage}`,children:"Next"})})]})})}const D={eyebrow:"",title:"Space telescope 101",description:"In this interactive tutorial, you will see how photons hit eye of the telescope, and how that is turned into turned into different scientific charts. We`ll cover:"};function we(){const[t,n]=o.useState(.5),s=ie(t),a=B(s.hue,s.saturation,s.lightness,.98);return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-energy-panel",children:[e.jsxs("div",{className:"ccd-energy-scale",children:[e.jsx("div",{className:"ccd-energy-spectrum","aria-hidden":"true",style:{"--ccd-spectrum-position":`${t*100}%`,"--ccd-spectrum-color":a}}),e.jsx("div",{className:"ccd-energy-slider-wrap",children:e.jsx("input",{"aria-label":"Photon wavelength and energy slider",className:"ccd-energy-slider",max:1,min:0,onChange:c=>n(Number(c.target.value)),step:.001,type:"range",value:t})}),e.jsxs("div",{className:"ccd-energy-scale-labels",children:[e.jsx("span",{children:"Longer wavelength"}),e.jsx("span",{children:"Shorter wavelength"})]}),e.jsxs("div",{className:"ccd-energy-scale-labels ccd-energy-scale-labels-strong",children:[e.jsx("span",{children:"Red, lower energy"}),e.jsx("span",{children:"Violet, higher energy"})]})]}),e.jsxs("div",{className:"ccd-energy-readout",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Selected colour"}),e.jsx("strong",{style:{color:a},children:s.label})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Wavelength"}),e.jsxs("strong",{children:[s.wavelength.toFixed(0)," nm"]})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Energy"}),e.jsxs("strong",{children:[s.energy.toFixed(2)," units"]})]})]})]})})}const Ee={eyebrow:"Photon Energy And Wavelength",title:"Photon colour maps to wavelength",description:"Each hit has energy and wavelength. Red means longer wavelength and lower energy, while violet means shorter wavelength and higher energy. Wavelength is mesaured in nano-meters (nm). One nanometer is one billionth of a meter - about the size of a virus. The visible spectrum ranges from around 380 nm (violet) to 750 nm (red). But telescopes can see beyond that, into high-energy ultraviolet and infrared wavelengths that our eyes can´t detect."},Se={stepLabel:"Colour has meaning",title:"One photon, one observation",body:"In this demo, whenever you see the 🟣 colour, it indicates high energy - short wavelength. 🔴 is lower energy, but longer wavelength. "};function Pe({type:t}){if(t==="count-wavelength-time")return e.jsx("div",{className:"ccd-mini-diagram ccd-mini-diagram-grid","aria-hidden":"true",children:Array.from({length:12},(s,a)=>e.jsx("span",{className:"ccd-mini-diagram-grid-cell",style:{opacity:.28+a%4*.14}},a))});const n=t==="count-time"?[.28,.58,.38,.76,.46,.66]:t==="energy-time"?[.22,.5,.42,.88,.56,.72]:[.2,.32,.48,.84,.6,.3];return e.jsx("div",{className:"ccd-mini-diagram","aria-hidden":"true",children:n.map((s,a)=>e.jsx("span",{className:`ccd-mini-diagram-bar${t!=="count-time"?" is-energy":""}`,style:{height:`${s*100}%`}},a))})}function Ce({page:t,onSelect:n,showGuide:s,onToggleGuide:a}){const c=t==="receptor",r=t==="photon",i=t==="eventlist";return e.jsxs("section",{className:"ccd-selector","aria-label":"Visualization selector",children:[e.jsxs("div",{className:"ccd-selector-root",children:[e.jsx("span",{className:"ccd-stat-label",children:"These plots are different ways of binning the same event list."}),e.jsx("p",{children:"Everything begins with the CCD receiving photons. Those hits become rows in an event list. After that, different binning rules produce different plots."})]}),e.jsxs("div",{className:"ccd-selector-raw",children:[e.jsxs("a",{className:`ccd-selector-link${c?" is-active":""}`,href:"#receptor",onClick:n,children:[e.jsx("span",{className:"ccd-selector-link-label",children:"Raw data"}),e.jsx("strong",{children:"1. Photons hit CCD pixels"}),e.jsx("span",{children:"This is the detector plane: the spatial pattern of hits on the telescope CCD."})]}),e.jsxs("a",{className:`ccd-selector-link${r?" is-active":""}`,href:"#photon",onClick:n,children:[e.jsx("span",{className:"ccd-selector-link-label",children:"Photon properties"}),e.jsx("strong",{children:"2. Colour indicates wavelength and energy"}),e.jsx("span",{children:"Red means lower energy and violet means higher energy, which is why later plots can bin by wavelength."})]}),e.jsxs("a",{className:`ccd-selector-link${i?" is-active":""}`,href:"#eventlist",onClick:n,children:[e.jsx("span",{className:"ccd-selector-link-label",children:"Recorded data"}),e.jsx("strong",{children:"3. Each hit becomes a row: time, energy, x, y"}),e.jsx("span",{children:"This is the FITS-style event table. Every later diagram is derived from these same rows."})]})]}),e.jsx("div",{className:"ccd-selector-section",children:e.jsxs("div",{className:"ccd-selector-axis",children:[e.jsx("span",{className:"ccd-stat-label",children:"4. Choose a binning rule"}),e.jsx("strong",{children:"Derived view: binned visualization"}),e.jsx("p",{children:"These plots are different ways of grouping the same event rows."})]})}),e.jsx("div",{className:"ccd-selector-results",children:ee.map(d=>e.jsxs("a",{className:`ccd-selector-leaf${d.page===t?" is-active":""}`,href:`#${d.page}`,onClick:n,children:[e.jsx("span",{className:"ccd-selector-leaf-dim",children:"Input: same event list"}),e.jsx(Pe,{type:d.diagram}),e.jsx("strong",{children:d.title}),e.jsxs("span",{children:["Rule: ",d.rule]}),e.jsxs("span",{children:["Output: ",d.output]})]},d.page))}),e.jsxs("div",{className:"ccd-selector-current",children:[e.jsx("span",{className:"ccd-stat-label",children:"Recording"}),e.jsx("button",{className:`ccd-selector-option${s?" is-active":""}`,onClick:a,type:"button",children:s?"Guide overlay on":"Guide overlay off"})]})]})}function Te(t){switch(t){case"intro":return D;case"receptor":return je;case"photon":return Ee;case"eventlist":return ke;case"binning":return We;case"flux":return De;case"periodogram":return Le;case"spectrogram":return $e;case"closing":return D;default:return D}}function Ae(t){switch(t){case"intro":return null;case"receptor":return fe;case"photon":return Se;case"eventlist":return Ge;case"binning":return Ye;case"flux":return Be;case"periodogram":return _e;case"spectrogram":return He}}function Me({page:t}){const n=I.indexOf(t),s=n>0?I[n-1]:null,a=n>=0&&n{const r=ue(a.cellIndex),i=(a.time-n)/1e3;return j[a.photonIndex],e.jsxs("div",{className:"ccd-event-table",children:[e.jsx("span",{children:i.toFixed(3)}),e.jsx("span",{style:{color:k(a.photonIndex,.92)},children:a.energy.toFixed(2)}),e.jsx("span",{children:String(r.x).padStart(2,"0")}),e.jsx("span",{children:String(r.y).padStart(2,"0")})]},`${a.time}-${a.cellIndex}-${c}`)}),s.length===0?e.jsxs("div",{className:"ccd-event-table ccd-event-table-empty",children:[e.jsx("span",{children:"No rows yet"}),e.jsx("span",{children:"Waiting"}),e.jsx("span",{children:"--"}),e.jsx("span",{children:"--"})]}):null]})]}),e.jsx("div",{className:"ccd-flux-legend",children:j.map((a,c)=>e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-legend-dot",style:{background:k(c,.92),boxShadow:`0 0 0.8rem ${k(c,.56)}`}}),e.jsx("span",{children:a.label})]},a.label))})]})})}const ke={eyebrow:"FITS Event Table",title:"Photon event list view",description:"The clicks are recorded in a table, called the event list, with the time, energy, and CCD pixel position."},Ge={stepLabel:"Step 3",title:"Each hit becomes a row in the event list",body:"Astronomy pipelines often save these events as FITS tables. This is the raw data you can download from Telescopes like Chandra!"};function Ie({spectralEnergy:t}){const n=Math.max(...t,.01),s=t.reduce((a,c)=>a+c,0)||1;return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Integrated over last 12 completed 1.0 s bins"}),e.jsxs("strong",{children:[s.toFixed(2)," total energy units"]})]}),e.jsx("div",{className:"ccd-periodogram","aria-label":"Periodogram chart",children:j.map((a,c)=>{const r=G(t[c]/n,0,1),i=t[c]/s;return e.jsxs("div",{className:"ccd-periodogram-band",children:[e.jsx("div",{className:"ccd-bar-shell",children:e.jsx("div",{className:"ccd-bar-fill",style:{height:`${18+r*82}%`,background:`linear-gradient(180deg, ${k(c,.55)}, ${k(c,1)})`,boxShadow:`0 0 1.4rem ${k(c,.72)}`}})}),e.jsxs("div",{className:"ccd-band-meta",children:[e.jsx("strong",{children:a.shortLabel}),e.jsxs("span",{children:[a.wavelength," nm"]}),e.jsxs("span",{children:[t[c].toFixed(2)," E"]}),e.jsxs("span",{children:[(i*100).toFixed(1),"%"]})]})]},a.label)})})]})})}const Le={eyebrow:"Spectral power",title:"Spectrogram of energy",description:"We put low-energy on the left, and high energy on the right. The energy of all the photons in each frequency bin integrated over some period (here last 12 secs) gives us the shape of the spectrum during that time."},_e={stepLabel:"Step 6",title:"Spectral power",body:"Spectral power reveals the energy distribution, and it´s very important for many applications. It can tell us a lot about how stars work"};function Oe({spectrogramBins:t}){const n=Math.max(...t.flat(),1);return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Clicks per 1.0 s time bin"}),e.jsxs("strong",{children:[L," time bins x ",j.length," frequency bins"]})]}),e.jsxs("div",{className:"ccd-spectrogram-shell",children:[e.jsx("div",{className:"ccd-spectrogram-axis",children:j.map(s=>e.jsx("span",{children:s.label},s.label))}),e.jsx("div",{className:"ccd-spectrogram","aria-label":"Spectrogram heat map",children:j.map((s,a)=>e.jsx("div",{className:"ccd-spectrogram-row",children:t[a].map((c,r)=>e.jsx("span",{className:"ccd-spectrogram-cell",style:{background:k(a,c/n),boxShadow:c>0?`0 0 0.8rem ${k(a,c/n)}`:"none"}},`${s.label}-${r}`))},s.label))})]}),e.jsxs("div",{className:"ccd-spectrogram-footer",children:[e.jsx("span",{children:"Earlier"}),e.jsx("span",{children:"Now"})]})]})})}const $e={eyebrow:"Frequency X Time",title:"Periodo-spectro-gram!",description:"You can play around with the same data and make many charts! This shows the energy arriving during each time bin for each frequency bin!"},He={stepLabel:"Step 7",title:"Binned by time and frequency",body:"Is it useful? Maybe not for a lot of applications, but it looks pretty!"};function Fe({fluxBins:t}){const n=t.some(y=>y>0)?t:[1.2,1.8,1.4,2.1,1.7,1.5,2.3,1.6,1.9,1.4,2,1.7],s=n.map((y,v)=>{const h=n.slice(0,v+1);return h.reduce((T,R)=>T+R,0)/h.length}),a=n[n.length-1]??0,c=n.reduce((y,v)=>y+v,0)/n.length,r=n.reduce((y,v)=>y+(v-c)**2,0)/n.length,i=Math.sqrt(r),d=Math.min(...n),p=Math.max(...n),u=Math.min(...s),m=Math.max(...s),N={min:Math.min(d,u),max:Math.max(p,m)},f=V(n,760,240,N),M=re(n,760,240,N),C=V(s,760,240,N);return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Total energy per 1.0 s bin"}),e.jsxs("strong",{children:[a.toFixed(2)," energy units in latest bin"]})]}),e.jsxs("div",{className:"ccd-flux-chart-shell",children:[e.jsxs("svg",{className:"ccd-flux-chart",viewBox:"0 0 760 240","aria-label":"Total flux variability chart",preserveAspectRatio:"none",children:[e.jsxs("defs",{children:[e.jsxs("linearGradient",{id:"fluxArea",x1:"0",x2:"0",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"rgba(255, 113, 74, 0.40)"}),e.jsx("stop",{offset:"100%",stopColor:"rgba(125, 100, 255, 0.03)"})]}),e.jsxs("linearGradient",{id:"fluxLine",x1:"0",x2:"1",y1:"0",y2:"0",children:[e.jsx("stop",{offset:"0%",stopColor:"#ff8d66"}),e.jsx("stop",{offset:"55%",stopColor:"#ffd35d"}),e.jsx("stop",{offset:"100%",stopColor:"#8f7dff"})]})]}),n.map((y,v)=>{const h=760/n.length;return e.jsx("rect",{className:v%2===0?"ccd-flux-bin":"ccd-flux-bin ccd-flux-bin-alt",x:v*h,y:0,width:h,height:240},v)}),e.jsx("path",{className:"ccd-flux-area",d:M,fill:"url(#fluxArea)"}),e.jsx("path",{className:"ccd-flux-line",d:f,stroke:"url(#fluxLine)"}),e.jsx("path",{className:"ccd-flux-mean-line",d:C})]}),e.jsxs("div",{className:"ccd-flux-legend",children:[e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-raw"}),e.jsx("span",{children:"Raw flux"})]}),e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-flux-legend-swatch ccd-flux-legend-swatch-mean"}),e.jsx("span",{children:"Running mean"})]})]}),e.jsxs("div",{className:"ccd-flux-axis",children:[e.jsx("span",{children:"Earlier"}),e.jsx("span",{children:"Now"})]})]}),e.jsxs("div",{className:"ccd-flux-metrics",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Mean flux"}),e.jsx("strong",{children:c.toFixed(4)})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Sigma"}),e.jsx("strong",{children:i.toFixed(4)})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Range"}),e.jsxs("strong",{children:[d.toFixed(4)," to ",p.toFixed(4)]})]})]})]})})}const De={eyebrow:"Flux Variability",title:"Total flux periodogram",description:"If we focus on the energy instead of the count, we get the flux - energy per second. It tells us how the total energy varies over time (1 sec bins)."},Be={stepLabel:"Step 5",title:"Periodogram of flux",body:"This tells you how much the flux varies over time . The dotted line is the running mean, which helps show trends over time."};function Ve({countBins:t}){const n=t.some(c=>c>0)?t:[3,5,4,7,6,5,8,4,6,5,7,4],s=Math.max(...n,1),a=n.reduce((c,r)=>c+r,0)/n.length;return e.jsx("div",{className:"ccd-page",children:e.jsxs("div",{className:"ccd-chart-panel ccd-chart-panel-wide",children:[e.jsxs("div",{className:"ccd-chart-head",children:[e.jsx("span",{className:"ccd-stat-label",children:"Photon clicks per 1.0 s bin"}),e.jsxs("strong",{children:[a.toFixed(1)," clicks / second bin"]})]}),e.jsxs("div",{className:"ccd-counts-shell",children:[e.jsx("div",{className:"ccd-counts-chart","aria-label":"Photon counts per bin chart",children:n.map((c,r)=>e.jsxs("div",{className:"ccd-count-bin",children:[e.jsx("div",{className:"ccd-count-bin-label",children:c}),e.jsx("div",{className:"ccd-count-bar-shell",children:e.jsx("div",{className:"ccd-count-bar",style:{height:`${12+c/s*88}%`}})})]},r))}),e.jsxs("div",{className:"ccd-flux-axis",children:[e.jsx("span",{children:"Earlier"}),e.jsx("span",{children:"Now!"})]})]}),e.jsx("div",{className:"ccd-flux-legend",children:e.jsxs("span",{className:"ccd-flux-legend-item",children:[e.jsx("span",{className:"ccd-flux-legend-swatch ccd-counts-legend-swatch-bin"}),e.jsx("span",{children:"Photon count bins"})]})}),e.jsxs("div",{className:"ccd-flux-metrics",children:[e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Bin width"}),e.jsx("strong",{children:"1.0 s"})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Latest bin"}),e.jsxs("strong",{children:[n[n.length-1]??0," clicks"]})]}),e.jsxs("div",{className:"ccd-stat",children:[e.jsx("span",{className:"ccd-stat-label",children:"Mean bin count"}),e.jsx("strong",{children:a.toFixed(2)})]})]})]})})}const We={eyebrow:"Brightness",title:"Periodogram of counts",description:"The first chart is the periodogram. We put the clicks into groups. They arrive same second, same group! This is called time bining. (each bin 1 sec). This gives us the count per second - or the periodogram of photon counts."},Ye={stepLabel:"Step 4",title:"Brightness is counting clicks!",body:"If we ignore photon energy and just count how many events arrive each second, we get a brightness-style light curve from the same event list."};function ze({onComplete:t,onProgress:n}={}){const[s,a]=o.useState(()=>z()),[c,r]=o.useState(!1),[i,d]=o.useState(!0),{elapsedMilliseconds:p,exposureStartTime:u,simulation:m}=pe(s==="receptor");o.useEffect(()=>{const l=()=>{a(z()),r(!1)};return window.addEventListener("hashchange",l),()=>window.removeEventListener("hashchange",l)},[]),o.useEffect(()=>{const l=I.indexOf(s);l<0||n?.(Math.round(l/(I.length-1)*100))},[n,s]),o.useEffect(()=>{if(!c)return;const l=g=>{g.key==="Escape"&&r(!1)};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[c]);const N=o.useMemo(()=>m.cells.map(l=>({id:l.id,opacity:G(l.level,0,1),scale:.72+G(l.level*.7,0,.86),size:l.size,tint:l.tint,glow:l.glow})),[m.cells]),f=Math.floor(p/O),M=o.useMemo(()=>me(m.eventHistory,u,f),[f,u,m.eventHistory]),C=o.useMemo(()=>q(m.eventHistory,u,f,l=>l.energy),[f,u,m.eventHistory]),y=o.useMemo(()=>q(m.eventHistory,u,f,()=>1),[f,u,m.eventHistory]),v=o.useMemo(()=>he(m.eventHistory,u,f),[f,u,m.eventHistory]),h=N.filter(l=>l.opacity>.08).length,T=N.reduce((l,g)=>l+g.opacity,0)/W,R=M.reduce((l,g,S,$)=>g>$[l]?S:l,0),E=j[R],x=be(s)?s:null,b=s==="orbit"||s==="intro"||s==="closing",A=s==="orbit",w=x||b?null:Te(s),_=i&&!b&&!x?e.jsx(Me,{page:s}):null;return e.jsx("main",{className:"ccd-shell",children:e.jsxs("section",{className:`ccd-panel${A?" ccd-panel-wide-scene":""}`,children:[w?e.jsx("header",{className:"ccd-topbar",children:e.jsxs("div",{className:"ccd-copy",children:[e.jsx("p",{className:"ccd-kicker",children:w.eyebrow}),e.jsx("h1",{children:w.title}),e.jsx("p",{className:"ccd-description",children:w.description})]})}):null,c?e.jsx("div",{className:"ccd-modal-backdrop",onClick:()=>r(!1),role:"presentation",children:e.jsxs("div",{className:"ccd-modal",onClick:l=>l.stopPropagation(),role:"dialog","aria-modal":"true","aria-label":"Visualization chooser",children:[e.jsxs("div",{className:"ccd-modal-header",children:[e.jsxs("div",{className:"ccd-copy",children:[e.jsx("p",{className:"ccd-kicker",children:"Data Pipeline"}),e.jsx("h2",{children:"How do we transform the event list?"})]}),e.jsx("button",{className:"ccd-modal-close",onClick:()=>r(!1),type:"button","aria-label":"Close visualization chooser",children:"Close"})]}),e.jsx(Ce,{page:s,onSelect:()=>r(!1),showGuide:i,onToggleGuide:()=>d(l=>!l)})]})}):null,e.jsxs("div",{className:"ccd-experience-frame",children:[s==="orbit"?e.jsx(de,{}):null,s==="intro"?e.jsx(ve,{}):null,s==="closing"?e.jsx(ye,{onComplete:t}):null,x?e.jsx(Ne,{page:x}):null,s==="receptor"?e.jsx(ge,{cells:N,activeHits:h,averageEnergy:T,guide:_}):null,s==="photon"?e.jsx(we,{}):null,s==="eventlist"?e.jsx(Re,{events:m.eventHistory,exposureStartTime:u}):null,s==="periodogram"?e.jsx(Ie,{spectralEnergy:M}):null,s==="spectrogram"?e.jsx(Oe,{spectrogramBins:v}):null,s==="flux"?e.jsx(Fe,{fluxBins:C}):null,s==="binning"?e.jsx(Ve,{countBins:y}):null,s!=="receptor"?_:null]}),!b&&!x?e.jsxs("div",{className:"ccd-summary-row","aria-label":"Simulation summary",children:[e.jsxs("div",{className:"ccd-summary-card",children:[e.jsx("span",{className:"ccd-stat-label",children:"Exposure time"}),e.jsx("strong",{children:ae(p)})]}),e.jsxs("div",{className:"ccd-summary-card",children:[e.jsx("span",{className:"ccd-stat-label",children:"Photon count"}),e.jsx("strong",{children:m.totalPhotons})]}),e.jsxs("div",{className:"ccd-summary-card",children:[e.jsx("span",{className:"ccd-stat-label",children:"Dominant Band (Last 1 s)"}),e.jsx("strong",{children:E.label})]})]}):null]})})}function Ue({className:t,onComplete:n,onProgress:s}){return e.jsx("div",{className:t,children:e.jsx(ze,{onComplete:n,onProgress:s})})}const Xe={name:"ccd",displayName:"CCD Photon Explorer",version:"0.1.0",paramSchema:{},defaultParams:{}};export{Ue as default,Xe as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-CRhmqMwz.js b/public/glitch/glitch_gallery/assets/index-CRhmqMwz.js new file mode 100644 index 0000000..eb87cac --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-CRhmqMwz.js @@ -0,0 +1,10 @@ +import{r as n,j as e}from"./index-CEeZxcxj.js";const L="_container_12iml_1",$="_introScreen_12iml_19",z="_introTitle_12iml_27",E="_introSubtitle_12iml_33",Q="_carouselDots_12iml_39",W="_carouselDot_12iml_39",F="_active_12iml_53",K="_continueButton_12iml_57",P="_quizScreen_12iml_75",U="_intro_12iml_19",V="_progress_12iml_90",G="_progressDot_12iml_97",H="_completed_12iml_109",J="_questionContainer_12iml_113",X="_questionText_12iml_120",Z="_questionContext_12iml_127",tt="_options_12iml_134",et="_option_12iml_134",st="_selected_12iml_158",ot="_diagnosticComplete_12iml_171",it="_summaryBox_12iml_178",nt="_summaryLabel_12iml_186",rt="_summaryText_12iml_194",ct="_roleCards_12iml_210",at="_roleCard_12iml_210",ut="_recommended_12iml_202",lt="_roleTitle_12iml_242",mt="_roleDescription_12iml_249",dt="_roleStrengths_12iml_255",ht="_strengthTag_12iml_262",yt="_selectable_12iml_267",pt="_resultScreen_12iml_277",_t="_assignedLabel_12iml_285",xt="_resultCard_12iml_292",bt="_resultButtons_12iml_314",gt="_acceptButton_12iml_321",ft="_decideButton_12iml_338",Rt="_selectionScreen_12iml_356",vt="_selectionTitle_12iml_363",t={container:L,introScreen:$,introTitle:z,introSubtitle:E,carouselDots:Q,carouselDot:W,active:F,continueButton:K,quizScreen:P,intro:U,progress:V,progressDot:G,completed:H,questionContainer:J,questionText:X,questionContext:Z,options:tt,option:et,selected:st,diagnosticComplete:ot,summaryBox:it,summaryLabel:nt,summaryText:rt,roleCards:ct,roleCard:at,recommended:ut,roleTitle:lt,roleDescription:mt,roleStrengths:dt,strengthTag:ht,selectable:yt,resultScreen:pt,assignedLabel:_t,resultCard:xt,resultButtons:bt,acceptButton:gt,decideButton:ft,selectionScreen:Rt,selectionTitle:vt},St="Your glitch-modalities will now be tested.",Nt=[{id:"q1",question:'Mom says: "Ask Dad." Dad says: "Ask Mom."',context:"What do you do?",options:[{id:"a",text:"I technically asked both. That's permission.",scores:{authorityAutonomy:2,structureOutcome:1,stabilityReconstruction:0}},{id:"b",text:"I don't have permission. Stop.",scores:{authorityAutonomy:-2,structureOutcome:-1,stabilityReconstruction:-1}},{id:"c",text:"Tell Dad: Mom said you decide.",scores:{authorityAutonomy:1,structureOutcome:0,stabilityReconstruction:1}},{id:"d",text:"Tell Mom: Dad said you decide.",scores:{authorityAutonomy:1,structureOutcome:0,stabilityReconstruction:1}}]},{id:"q2",question:"A system works flawlessly. You discover it rests on a shaky assumption.",context:"Do you:",options:[{id:"a",text:"Ignore it. It works.",scores:{authorityAutonomy:-1,structureOutcome:2,stabilityReconstruction:-2}},{id:"b",text:"Patch the assumption quietly.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:0}},{id:"c",text:"Expose the assumption publicly.",scores:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:1}},{id:"d",text:"Rebuild the system to remove it.",scores:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:2}}]},{id:"q3",question:"You find a paradox in your own model.",context:"Your reaction:",options:[{id:"a",text:"I must be wrong.",scores:{authorityAutonomy:-1,structureOutcome:0,stabilityReconstruction:-1}},{id:"b",text:"The paradox is wrong.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:-1}},{id:"c",text:"The definitions are wrong.",scores:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:1}},{id:"d",text:"This is interesting. Push deeper.",scores:{authorityAutonomy:2,structureOutcome:0,stabilityReconstruction:2}}]},{id:"q4",question:"You prove something elegant. Reality disagrees.",context:"You:",options:[{id:"a",text:"Recheck the math.",scores:{authorityAutonomy:-1,structureOutcome:-1,stabilityReconstruction:0}},{id:"b",text:"Recheck the experiment.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:0}},{id:"c",text:"Recheck the assumptions.",scores:{authorityAutonomy:1,structureOutcome:0,stabilityReconstruction:1}},{id:"d",text:"Accept chaos.",scores:{authorityAutonomy:2,structureOutcome:1,stabilityReconstruction:2}}]},{id:"q5",question:"What annoys you more?",options:[{id:"a",text:"Vague thinking.",scores:{authorityAutonomy:0,structureOutcome:-2,stabilityReconstruction:0}},{id:"b",text:"Sloppy math.",scores:{authorityAutonomy:-1,structureOutcome:-2,stabilityReconstruction:-1}},{id:"c",text:"Blind obedience.",scores:{authorityAutonomy:2,structureOutcome:0,stabilityReconstruction:1}},{id:"d",text:"Overconfidence.",scores:{authorityAutonomy:0,structureOutcome:1,stabilityReconstruction:0}}]}],jt=[{id:"philosopher-builder",name:"philosopher-builder",title:"Philosopher-Builder",description:"You approach systems from first principles. You like pulling assumptions apart and rebuilding from scratch. Formal training may vary — curiosity does not.",strengths:["Identifying hidden assumptions","Navigating paradox","Reconstructing from new foundations"],risk:"Building a house of cards. Impressive but useless.",mission:"Clarify structure before defending it.",axisProfile:{authorityAutonomy:1,structureOutcome:-1,stabilityReconstruction:2},summaries:[`You break loops instead of waiting inside them. +You are comfortable redirecting authority.`,`You question foundations before building on them. +Assumptions are targets, not givens.`,`You prefer rebuilding to patching. +Clarity matters more than comfort.`]},{id:"cross-domain-nerd",name:"cross-domain-nerd",title:"Cross-Domain Nerd",description:"You are fluent somewhere else. Math, biology, finance, code, art — you've built things in another domain. You suspect physics might benefit from outside pattern recognition.",strengths:["Translating ideas across domains","Spotting structural analogies","Bringing alien intuition"],risk:"Overextending metaphors. Using your favourite tool. Always.",mission:"Stress-test physics with alien intuition.",axisProfile:{authorityAutonomy:1,structureOutcome:1,stabilityReconstruction:1},summaries:[`You see patterns that others miss. +Your intuition comes from somewhere else.`,`You translate fluently between worlds. +Analogies are your native tongue.`,`You import tools from foreign domains. +Fresh perspective is your advantage.`]},{id:"formal-student",name:"formal-student",title:"Formal Student",description:"You are inside the machinery of formal education. You work with equations daily. You care about precision.",strengths:["Technical rigor","Mathematical discipline","Knowing what is good enough"],risk:"Over-trusting established formalism. Thinking you own the place.",mission:"Master the tools. Then question them.",axisProfile:{authorityAutonomy:-1,structureOutcome:-1,stabilityReconstruction:-1},summaries:[`You trust the process but verify the details. +Rigor is your foundation.`,`You work within structure to understand it. +Precision is non-negotiable.`,`You respect the machinery of knowledge. +Mastery precedes revolution.`]}],f={intro:St,questions:Nt,roles:jt};function Ct({onComplete:_,onProgress:u,className:j}){const[y,g]=n.useState("intro"),[A,C]=n.useState(0),[m,T]=n.useState(0),[d,q]=n.useState({}),[r,w]=n.useState(null),R=n.useRef(null),O=n.useRef(null),h=f.questions,l=f.roles,v=n.useCallback(s=>{const o={authorityAutonomy:0,structureOutcome:0,stabilityReconstruction:0};return h.forEach(i=>{const c=s[i.id],a=i.options.find(b=>b.id===c);a&&(o.authorityAutonomy+=a.scores.authorityAutonomy,o.structureOutcome+=a.scores.structureOutcome,o.stabilityReconstruction+=a.scores.stabilityReconstruction)}),o},[h]),S=n.useCallback(s=>{let o=l[0],i=1/0;return l.forEach(c=>{const a=Math.sqrt(Math.pow(s.authorityAutonomy-c.axisProfile.authorityAutonomy,2)+Math.pow(s.structureOutcome-c.axisProfile.structureOutcome,2)+Math.pow(s.stabilityReconstruction-c.axisProfile.stabilityReconstruction,2));a{const i=Math.max(Math.abs(o.authorityAutonomy),Math.abs(o.structureOutcome),Math.abs(o.stabilityReconstruction));let c=0;return Math.abs(o.structureOutcome)===i&&(c=1),Math.abs(o.stabilityReconstruction)===i&&(c=2),s.summaries[c]||s.summaries[0]},[]),k=n.useCallback((s,o)=>{const i={...d,[s]:o};q(i);const c=(m+1)/h.length*50;u?.(c),setTimeout(()=>{if(m{if(!r)return;const s=l.find(o=>o.id===r.recommendedRole);s&&(u?.(100),_({success:!0,score:100,data:{selectedRole:s.id,recommendedRole:r.recommendedRole,scores:r.scores,answers:d,completedAt:new Date().toISOString()}}))},[r,l,d,_,u]),B=n.useCallback(()=>{g("selection"),u?.(80)},[u]),Y=n.useCallback(s=>{r&&(u?.(100),_({success:!0,score:100,data:{selectedRole:s.id,recommendedRole:r.recommendedRole,scores:r.scores,answers:d,completedAt:new Date().toISOString()}}))},[r,d,_,u]),M=n.useCallback(()=>{g("quiz"),u?.(10)},[u]);n.useEffect(()=>{const s=R.current;if(!s||y!=="intro")return;const o=()=>{const i=s.scrollLeft,a=Math.round(i/296);C(Math.min(Math.max(a,0),l.length-1))};return s.addEventListener("scroll",o),()=>s.removeEventListener("scroll",o)},[y,l.length]);const p=h[m],x=r?l.find(s=>s.id===r.recommendedRole):null;return e.jsxs("div",{className:`${t.container} ${j||""}`,children:[y==="intro"&&e.jsxs("div",{className:t.introScreen,children:[e.jsx("h2",{className:t.introTitle,children:"Meet the Operator Modes"}),e.jsx("p",{className:t.introSubtitle,children:"Swipe to explore the three paths"}),e.jsx("div",{className:t.roleCards,ref:R,children:l.map(s=>e.jsxs("div",{className:t.roleCard,children:[e.jsx("h3",{className:t.roleTitle,children:s.title}),e.jsx("p",{className:t.roleDescription,children:s.description}),e.jsx("div",{className:t.roleStrengths,children:s.strengths.map((o,i)=>e.jsxs("span",{className:t.strengthTag,children:["+ ",o]},i))})]},s.id))}),e.jsx("div",{className:t.carouselDots,children:l.map((s,o)=>e.jsx("div",{className:`${t.carouselDot} ${o===A?t.active:""}`},o))}),e.jsx("button",{className:t.continueButton,onClick:M,children:"Begin Diagnostic"})]}),y==="quiz"&&e.jsxs("div",{className:t.quizScreen,children:[m===0&&e.jsx("h2",{className:t.intro,children:f.intro}),e.jsx("div",{className:t.progress,children:h.map((s,o)=>e.jsx("div",{className:`${t.progressDot} ${o===m?t.active:""} ${oe.jsx("button",{className:`${t.option} ${d[p.id]===s.id?t.selected:""}`,onClick:()=>k(p.id,s.id),children:s.text},s.id))})]})]}),y==="result"&&r&&x&&e.jsxs("div",{className:t.resultScreen,children:[e.jsx("p",{className:t.diagnosticComplete,children:"Diagnostic complete."}),e.jsxs("div",{className:t.summaryBox,children:[e.jsx("p",{className:t.summaryLabel,children:"Your reflex under uncertainty:"}),e.jsx("p",{className:t.summaryText,children:r.summary})]}),e.jsx("p",{className:t.assignedLabel,children:"Your assigned operator mode:"}),e.jsxs("div",{className:t.resultCard,children:[e.jsx("h3",{className:t.roleTitle,children:x.title}),e.jsx("p",{className:t.roleDescription,children:x.description}),e.jsx("div",{className:t.roleStrengths,children:x.strengths.map((s,o)=>e.jsxs("span",{className:t.strengthTag,children:["+ ",s]},o))})]}),e.jsxs("div",{className:t.resultButtons,children:[e.jsx("button",{className:t.acceptButton,onClick:D,children:"Accept"}),e.jsx("button",{className:t.decideButton,onClick:B,children:"I want to decide"})]})]}),y==="selection"&&r&&e.jsxs("div",{className:t.selectionScreen,children:[e.jsx("p",{className:t.selectionTitle,children:"Choose your operator mode"}),e.jsx("div",{className:t.roleCards,ref:O,children:l.map(s=>e.jsxs("div",{className:`${t.roleCard} ${t.selectable} ${s.id===r.recommendedRole?t.recommended:""}`,onClick:()=>Y(s),children:[e.jsx("h3",{className:t.roleTitle,children:s.title}),e.jsx("p",{className:t.roleDescription,children:s.description}),e.jsx("div",{className:t.roleStrengths,children:s.strengths.map((o,i)=>e.jsxs("span",{className:t.strengthTag,children:["+ ",o]},i))})]},s.id))})]})]})}const Tt={name:"level-questions",displayName:"Level Questions",version:"1.0.0",paramSchema:{},defaultParams:{}};export{Ct as default,Tt as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-CwQ-ysLn.js b/public/glitch/glitch_gallery/assets/index-CwQ-ysLn.js new file mode 100644 index 0000000..5eeef3a --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-CwQ-ysLn.js @@ -0,0 +1 @@ +import{r as n,j as t}from"./index-CEeZxcxj.js";const ke="_wrapper_h2w9g_1",je="_frame_h2w9g_12",Pe="_frameSucceeded_h2w9g_25",ve="_header_h2w9g_33",$e="_title_h2w9g_37",Te="_statsLine_h2w9g_50",Oe="_boardPanel_h2w9g_58",Ee="_board_h2w9g_58",Re="_trailOverlay_h2w9g_76",Ae="_trailPath_h2w9g_85",Le="_trailHead_h2w9g_94",Me="_cell_h2w9g_99",Ie="_lightCell_h2w9g_105",De="_darkCell_h2w9g_109",He="_knight_h2w9g_113",Ge="_target_h2w9g_130",Be="_readout_h2w9g_138",Ue="_readoutLine_h2w9g_145",Fe="_programPanel_h2w9g_154",Ye="_programTrack_h2w9g_160",Ve="_placeholder_h2w9g_171",Xe="_step_h2w9g_176",Ke="_stepExecuted_h2w9g_187",Ze="_programButtons_h2w9g_192",ze="_controlRow_h2w9g_193",We="_button_h2w9g_199",qe="_buttonPrimary_h2w9g_200",Je="_legend_h2w9g_233",Qe="_promptOverlay_h2w9g_239",et="_promptTitle_h2w9g_250",tt="_promptText_h2w9g_258",rt="_promptOptions_h2w9g_264",st="_promptOption_h2w9g_264",nt="_promptSelected_h2w9g_282",at="_promptHint_h2w9g_287",e={wrapper:ke,frame:je,frameSucceeded:Pe,header:ve,title:$e,statsLine:Te,boardPanel:Oe,board:Ee,trailOverlay:Re,trailPath:Ae,trailHead:Le,cell:Me,lightCell:Ie,darkCell:De,knight:He,target:Ge,readout:Be,readoutLine:Ue,programPanel:Fe,programTrack:Ye,placeholder:Ve,step:Xe,stepExecuted:Ke,programButtons:Ze,controlRow:ze,button:We,buttonPrimary:qe,legend:Je,promptOverlay:Qe,promptTitle:et,promptText:tt,promptOptions:rt,promptOption:st,promptSelected:nt,promptHint:at},b=8,h={x:0,y:b-1},ot=220,ct=64,lt=3,I=100,it=5,dt={up:{dx:0,dy:-1},down:{dx:0,dy:1},left:{dx:-1,dy:0},right:{dx:1,dy:0}},pt={up:"↑",down:"↓",left:"←",right:"→"},de=[{dx:0,dy:1},{dx:1,dy:1},{dx:1,dy:2},{dx:1,dy:3},{dx:2,dy:3},{dx:1,dy:5},{dx:1,dy:6}],X=(s,o,u)=>Math.min(u,Math.max(o,s)),pe=s=>s.x>=0&&s.x=0&&s.ys.x===o.x&&s.y===o.y,se=(s,o)=>o===0?s:se(o,s%o),mt=(s,o)=>{const u=Math.abs(o.x-s.x),d=Math.abs(o.y-s.y);if(u===0&&d===0)return 0;if(u===0||d===0)return u+d;const g=se(u,d);return u/g+d/g},ht=s=>new Promise(o=>{window.setTimeout(o,s)}),ie=s=>s==="Enter"||s==="NumpadEnter"||s===" "||s==="Space"||s==="Spacebar",gt=s=>`${(s.x+.5)*I},${(s.y+.5)*I}`,K=s=>X(s,0,de.length-1),ue=s=>de[K(s)],te=s=>{const o=ue(s);return o.dx+o.dy},re=s=>{const o=ue(s),u=[];for(let g=1;git&&u.push(p)}if(u.length===0)return{x:h.x+o.dx,y:h.y-o.dy};const d=Math.floor(Math.random()*u.length);return u[d]};function _t({config:s,onComplete:o,onProgress:u,theme:d,className:g}){const p=n.useMemo(()=>{const a=s.params.goalCaptures;return typeof a!="number"?lt:X(Math.round(a),1,10)},[s.params.goalCaptures]),[N,ne]=n.useState(0),[w,Z]=n.useState(h),[k,ae]=n.useState(()=>re(0)),[x,z]=n.useState([]),[D,H]=n.useState([h]),[_,j]=n.useState("idle"),[me,v]=n.useState(-1),[y,oe]=n.useState(0),[ce,O]=n.useState(""),[E,G]=n.useState("yes"),[R,B]=n.useState("continue"),[f,he]=n.useState(!1),C=n.useRef(0),U=n.useRef(!1),i=_==="running",m=_==="gameOverPrompt"||_==="successPrompt"||_==="finished",W=te(N),ge=n.useMemo(()=>d?{"--gc-primary":d.primary,"--gc-accent":d.accent,"--gc-bg":d.bg,"--gc-bg-secondary":d.bgSecondary,"--gc-text":d.text,"--gc-text-muted":d.textMuted,"--gc-border":d.border}:{},[d]);n.useEffect(()=>{const a=y/p;u?.(Math.round(X(a*100,0,100)))},[y,p,u]);const F=n.useCallback((a,r,c="")=>{C.current+=1,j("idle"),ne(K(a)),Z(h),ae(re(a)),H([h]),v(-1),oe(r),G("yes"),B("continue"),O(c)},[]),q=n.useCallback(()=>{F(N,0,`Looking for a ${W}-step move set.`)},[N,W,F]),Y=n.useCallback((a=0)=>{const r=K(N+1),c=te(r);F(r,a,`Looking for a ${c}-step move set.`)},[N,F]),J=n.useCallback(()=>{U.current||(U.current=!0,C.current+=1,j("finished"),o({success:!1,error:"Player chose no after game over.",data:{captures:y,goalCaptures:p,configId:s.id,completedAt:new Date().toISOString(),hasEverSucceeded:f}}))},[y,s.id,p,f,o]),L=n.useCallback(()=>{U.current||(U.current=!0,C.current+=1,j("finished"),o({success:!0,score:100,data:{captures:y,goalCaptures:p,configId:s.id,completedAt:new Date().toISOString(),hasEverSucceeded:f}}))},[y,s.id,p,f,o]),A=n.useCallback(a=>{z(r=>i||m||r.length>=ct?r:[...r,a])},[m,i]),xe=n.useCallback(()=>{i||m||z(a=>a.slice(0,-1))},[m,i]),_e=n.useCallback(()=>{i||m||z([])},[m,i]),ye=n.useCallback(()=>{C.current+=1,j("idle"),v(-1),O("Program stopped.")},[]),fe=n.useCallback(async()=>{if(i||m||x.length===0)return;const a=C.current+1;C.current=a;let r=w,c=k,l=y,P=0;for(j("running"),v(-1),H([w]),O("");C.current===a;)for(let S=0;S[...T,$]),v(S),ut($,c)){if(l+=1,oe(l),he(!0),l>=p){j("successPrompt"),B("continue"),v(-1),O(`Success. ${l} challenge(s) complete.`);return}const T=K(N+1),ee=re(T),Ne=te(T);r=h,c=ee,j("idle"),ne(T),Z(h),ae(ee),H([h]),v(-1),O(`Challenge ${l}/${p} complete. Looking for a ${Ne}-step move set.`);return}}},[y,N,p,m,w,x,i,k]);n.useEffect(()=>{const a=r=>{const c={ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right"};if(_==="gameOverPrompt"){if(r.key==="ArrowLeft"||r.key==="ArrowUp"){r.preventDefault(),G("yes");return}if(r.key==="ArrowRight"||r.key==="ArrowDown"){r.preventDefault(),G("no");return}ie(r.key)&&(r.preventDefault(),E==="yes"?q():f?L():J());return}if(_==="successPrompt"){if(r.key==="ArrowLeft"||r.key==="ArrowUp"){r.preventDefault(),B("continue");return}if(r.key==="ArrowRight"||r.key==="ArrowDown"){r.preventDefault(),B("done");return}ie(r.key)&&(r.preventDefault(),R==="continue"?Y():L());return}if(_!=="idle")return;const l=c[r.key];l&&(r.preventDefault(),A(l))};return window.addEventListener("keydown",a),()=>{window.removeEventListener("keydown",a)}},[A,J,L,E,f,_,q,Y,R]),n.useEffect(()=>()=>{C.current+=1},[]);const be=n.useMemo(()=>{const a=k.x-w.x,r=w.y-k.y,c=Math.abs(a),l=Math.abs(r),P=mt(w,k);if(c===0&&l===0)return{angle:0,motifLength:P,motif:"On target"};if(c===0||l===0)return{angle:c===0?90:0,motifLength:P,motif:c===0?`${r>=0?"U":"D"} x ${l}`:`${a>=0?"R":"L"} x ${c}`};const S=se(c,l),M=c/S,V=l/S,$=`${a>=0?"R":"L"} x ${M}`,T=`${r>=0?"U":"D"} x ${V}`;return{angle:Math.atan2(l,c)*(180/Math.PI),motifLength:P,motif:`${$}, ${T}`}},[w,k]),we=Math.round(X(y/p*100,0,100)),Ce=g?`${e.wrapper} ${g}`:e.wrapper,le=b*I,Se=D.map(gt).join(" "),Q=D[D.length-1];return t.jsx("div",{className:Ce,style:ge,children:t.jsxs("section",{className:`${e.frame} ${f?e.frameSucceeded:""}`,"aria-label":"Chess move set trainer",children:[t.jsxs("header",{className:e.header,children:[t.jsx("h2",{className:e.title,children:"The Chess Analogy"}),t.jsxs("p",{className:e.statsLine,children:["Captures ",y,"/",p," • Progress ",we,"% • Program ",x.length," • Target ",W]})]}),t.jsx("div",{className:e.boardPanel,children:t.jsxs("div",{className:e.board,role:"grid","aria-label":"8 by 8 checkerboard",children:[t.jsxs("svg",{className:e.trailOverlay,viewBox:`0 0 ${le} ${le}`,preserveAspectRatio:"none","aria-hidden":"true",children:[D.length>1&&t.jsx("polyline",{className:e.trailPath,points:Se}),Q&&t.jsx("circle",{className:e.trailHead,cx:(Q.x+.5)*I,cy:(Q.y+.5)*I,r:6})]}),Array.from({length:b*b}).map((a,r)=>{const c=r%b,l=Math.floor(r/b),P=(c+l)%2===1,S=w.x===c&&w.y===l,M=k.x===c&&k.y===l;return t.jsxs("div",{className:`${e.cell} ${P?e.darkCell:e.lightCell}`,role:"gridcell","aria-label":`x ${c+1}, y ${b-l}`,children:[M&&t.jsx("span",{className:e.target,"aria-hidden":"true",children:"●"}),S&&t.jsx("span",{className:e.knight,"aria-hidden":"true",children:"♞"})]},`${c}-${l}`)})]})}),t.jsxs("div",{className:e.readout,children:[t.jsxs("p",{className:e.readoutLine,children:["Angle: ",t.jsxs("strong",{children:[be.angle.toFixed(1),"°"]})]}),!1]}),t.jsxs("div",{className:e.programPanel,children:[t.jsxs("div",{className:e.programTrack,"aria-live":"polite",children:[x.length===0&&t.jsx("span",{className:e.placeholder,children:"Empty move set"}),x.map((a,r)=>t.jsx("span",{className:`${e.step} ${i&&r===me?e.stepExecuted:""}`,children:pt[a]},`${a}-${r}`))]}),t.jsxs("div",{className:e.programButtons,children:[t.jsx("button",{type:"button",className:e.button,onClick:()=>A("up"),disabled:i||m,children:"↑"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>A("left"),disabled:i||m,children:"←"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>A("down"),disabled:i||m,children:"↓"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>A("right"),disabled:i||m,children:"→"})]}),t.jsxs("div",{className:e.controlRow,children:[t.jsx("button",{type:"button",className:e.button,onClick:xe,disabled:i||m||x.length===0,children:"Undo"}),t.jsx("button",{type:"button",className:e.button,onClick:_e,disabled:i||m||x.length===0,children:"Clear"}),t.jsx("button",{type:"button",className:e.buttonPrimary,onClick:i?ye:fe,disabled:m||x.length===0,children:i?"Stop":"Run"}),t.jsx("button",{type:"button",className:e.button,onClick:()=>Y(),disabled:i,children:"Reset"})]}),ce&&t.jsx("p",{className:e.legend,children:ce})]}),_==="gameOverPrompt"&&t.jsxs("div",{className:e.promptOverlay,role:"dialog","aria-modal":"true","aria-label":"Game over prompt",children:[t.jsx("p",{className:e.promptTitle,children:"Game over"}),t.jsx("p",{className:e.promptText,children:f?"Try again or stop?":"Try again?"}),t.jsxs("div",{className:e.promptOptions,children:[t.jsxs("button",{type:"button",className:`${e.promptOption} ${E==="yes"?e.promptSelected:""}`,onClick:q,children:[E==="yes"?"▶ ":"","Yes"]}),t.jsxs("button",{type:"button",className:`${e.promptOption} ${E==="no"?e.promptSelected:""}`,onClick:f?L:J,children:[E==="no"?"▶ ":"",f?"I'm done":"No"]})]}),t.jsx("p",{className:e.promptHint,children:"Use arrows + Enter."})]}),_==="successPrompt"&&t.jsxs("div",{className:e.promptOverlay,role:"dialog","aria-modal":"true","aria-label":"Success prompt",children:[t.jsx("p",{className:e.promptTitle,children:"Success"}),t.jsx("p",{className:e.promptText,children:"Continue?"}),t.jsxs("div",{className:e.promptOptions,children:[t.jsxs("button",{type:"button",className:`${e.promptOption} ${R==="continue"?e.promptSelected:""}`,onClick:()=>Y(),children:[R==="continue"?"▶ ":"","Yes"]}),t.jsxs("button",{type:"button",className:`${e.promptOption} ${R==="done"?e.promptSelected:""}`,onClick:L,children:[R==="done"?"▶ ":"","I'm done"]})]}),t.jsx("p",{className:e.promptHint,children:"Use arrows + Enter."})]})]})})}const yt={name:"chess_analogy",displayName:"Chess Move Set Lab",version:"1.0.0",paramSchema:{goalCaptures:{type:"range",label:"Targets To Capture",description:"How many red targets must be captured before completion.",default:3,min:1,max:10,step:1}},defaultParams:{goalCaptures:3}};export{_t as default,yt as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-D0SeHWP2.css b/public/glitch/glitch_gallery/assets/index-D0SeHWP2.css new file mode 100644 index 0000000..4264792 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-D0SeHWP2.css @@ -0,0 +1 @@ +._wrapper_61dhl_1{--gc-bg: var(--color-bg, #0a0a0f);--gc-bg-secondary: var(--color-bg-secondary, #12121a);--gc-text: var(--color-text, #e8e8ec);--gc-text-muted: var(--color-text-muted, #9999a8);--gc-primary: var(--color-primary, #6366f1);--gc-accent: var(--color-accent, #22d3ee);--gc-border: var(--color-border, #2a2a3a);--gc-font-main: var(--font-main, "Iceland", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-display: var(--font-display, "Russo One", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-text: "VT323", var(--font-mono, monospace);width:100%}._frame_61dhl_15{position:relative;width:100%;height:100dvh;min-height:100vh;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border) 60%,transparent);color:var(--gc-text);font-family:var(--gc-font-text);background:radial-gradient(circle at 18% 14%,color-mix(in srgb,var(--gc-accent) 18%,transparent),transparent 35%),radial-gradient(circle at 88% 2%,color-mix(in srgb,var(--gc-primary) 22%,transparent),transparent 30%),linear-gradient(165deg,var(--gc-bg),var(--gc-bg-secondary))}._scan_61dhl_30{position:absolute;inset:0;pointer-events:none;opacity:.18;mix-blend-mode:screen;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.1) 0,rgba(255,255,255,.1) 1px,transparent 1px,transparent 3px);animation:_scanDrift_61dhl_1 8s linear infinite}._stack_61dhl_47{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:22px 16px 18px}._meta_61dhl_57{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gc-text-muted);font-family:var(--gc-font-main)}._progressTrack_61dhl_68{margin-top:8px;width:100%;height:3px;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--gc-accent) 20%,transparent)}._progressFill_61dhl_77{height:100%;transition:width .24s ease;background:linear-gradient(90deg,var(--gc-accent),color-mix(in srgb,var(--gc-primary) 45%,var(--gc-accent)))}._slide_61dhl_87{flex:1;display:flex;flex-direction:column;justify-content:center;gap:20px}._title_61dhl_95{margin:0;width:fit-content;font-family:var(--gc-font-display);text-transform:uppercase;letter-spacing:.02em;line-height:1.04;font-size:clamp(28px,8.5vw,46px)}._rgbGlitch_61dhl_105{position:relative;display:inline-block}._rgbBase_61dhl_110{position:relative;z-index:1;color:color-mix(in srgb,var(--gc-text) 38%,#000)}._rgbLayer_61dhl_116{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.2}._layerR_61dhl_124{color:#ff3737bf;animation:_layerRShift_61dhl_1 2.4s infinite steps(2,end)}._layerG_61dhl_129{color:#37ff5fbf;animation:_layerGShift_61dhl_1 2.1s infinite steps(2,end)}._layerB_61dhl_134{color:#4182ffbf;animation:_layerBShift_61dhl_1 2.7s infinite steps(2,end)}._content_61dhl_139{display:flex;flex-direction:column;gap:10px;font-family:var(--gc-font-text);font-size:clamp(16px,4.2vw,22px);line-height:1.45}._line_61dhl_148{margin:0;color:var(--gc-text)}._spacer_61dhl_153{margin:0;min-height:.6em}._list_61dhl_158{margin:3px 0 0;padding-left:1.1em;display:flex;flex-direction:column;gap:7px}._warning_61dhl_166{list-style:none;padding-left:0}._warning_61dhl_166 li:before{content:"- ";color:var(--gc-accent)}._cta_61dhl_176{margin-top:10px;width:fit-content;border:1px solid var(--gc-accent);background:color-mix(in srgb,var(--gc-accent) 8%,transparent);color:var(--gc-accent);font:inherit;letter-spacing:.06em;text-transform:uppercase;padding:10px 14px;cursor:pointer;font-family:var(--gc-font-main);transition:transform .14s ease,background-color .14s ease}._cta_61dhl_176:active{transform:scale(.98)}._controls_61dhl_195{display:grid;grid-template-columns:1fr 1fr;gap:8px}._navButton_61dhl_201{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:color-mix(in srgb,var(--gc-bg-secondary) 75%,transparent);color:var(--gc-text);font:inherit;text-transform:uppercase;letter-spacing:.08em;padding:10px 12px;cursor:pointer;font-family:var(--gc-font-main)}._navButton_61dhl_201:disabled{opacity:.45;cursor:not-allowed}@keyframes _layerRShift_61dhl_1{0%,81%,to{transform:translate(0)}84%{transform:translate(-4px,2px)}88%{transform:translate(4px,-2px)}92%{transform:translate(2px)}96%{transform:translate(-2px,2px)}}@keyframes _layerGShift_61dhl_1{0%,79%,to{transform:translate(0)}83%{transform:translate(2px,-2px)}87%{transform:translate(-2px,4px)}91%{transform:translateY(-2px)}95%{transform:translate(2px)}}@keyframes _layerBShift_61dhl_1{0%,82%,to{transform:translate(0)}86%{transform:translate(4px)}90%{transform:translate(-4px,-2px)}94%{transform:translate(2px,2px)}98%{transform:translate(-2px)}}@keyframes _scanDrift_61dhl_1{0%{transform:translateY(-10px)}to{transform:translateY(10px)}}@media(min-width:600px){._frame_61dhl_15{max-width:420px;margin:0 auto}} diff --git a/public/glitch/glitch_gallery/assets/index-DOIp2aoq.css b/public/glitch/glitch_gallery/assets/index-DOIp2aoq.css new file mode 100644 index 0000000..7476ca3 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-DOIp2aoq.css @@ -0,0 +1 @@ +.gc-assumption-toggle{--shell-bg: radial-gradient(circle at top, rgba(40, 58, 34, .35), transparent 42%), linear-gradient(180deg, #070a08, #0f160f 58%, #090b09);--screen-bg: #616161;--screen-error: #7f1d1d;--screen-glow: rgba(0, 0, 0, .5);--text-primary: var(--gc-text, #0f172a);--text-secondary: var(--gc-text-muted, #6bff5b);--accent-color: var(--gc-accent, #1c6a00);--panel-green: var(--gc-primary, #248a00);--panel-white: rgba(255, 255, 255, .92);--font-display: "Russo One", sans-serif;--font-ui: "VT323", sans-serif;color:var(--text-primary);width:100%}.gc-assumption-toggle *,.gc-assumption-toggle *:before,.gc-assumption-toggle *:after{box-sizing:border-box}.gc-assumption-toggle .component-shell{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px 0;background:var(--shell-bg)}.gc-assumption-toggle .main-wrapper{width:min(100%,1000px);aspect-ratio:1000 / 678;background-image:var(--assumption-frame-image);background-position:center;background-repeat:no-repeat;background-size:100% 100%;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .crt-screen{position:relative;width:51.8%;height:66.3%;transform:translateY(.6%);background:var(--screen-bg);border-radius:7.5%;display:flex;justify-content:center;align-items:center;overflow:hidden;box-shadow:inset 0 0 40px var(--screen-glow);transition:background-color .4s ease}.gc-assumption-toggle .crt-screen.paradox-errors{background:var(--screen-error)}.gc-assumption-toggle .crt-screen:after{content:"";position:absolute;inset:0;background:linear-gradient(#12101000 50%,#0000003d 50%),linear-gradient(90deg,#ff00000d,#00ff0005,#0000ff0d);background-size:100% 2px,3px 100%;pointer-events:none;z-index:20}.gc-assumption-toggle .slides-wrapper{width:100%;height:100%;display:flex;justify-content:center;align-items:center;transform-origin:center}.gc-assumption-toggle .slide{width:100%;height:100%;padding:20px;display:flex;flex-direction:column;justify-content:center;align-items:center}.gc-assumption-toggle .slide-splash{text-align:center}.gc-assumption-toggle .splash-content h1{margin:0 0 18px;font-size:clamp(1.4rem,2.7vw,2.2rem);line-height:1.3;color:var(--text-primary);font-family:var(--font-display);font-weight:400;text-transform:uppercase;text-shadow:0 0 4px rgba(0,0,0,.35)}.gc-assumption-toggle .splash-content h2{margin:0 0 42px;color:var(--text-secondary);font-size:clamp(1rem,1.5vw,1.2rem);font-weight:400;letter-spacing:.08em;font-family:var(--font-ui)}.gc-assumption-toggle .widget-header h1{margin:0 0 18px;color:var(--text-secondary);font-size:clamp(1.4rem,2.5vw,1.8rem);font-weight:400;letter-spacing:.05em;text-transform:uppercase;font-family:var(--font-display);text-shadow:0 0 5px rgba(255,255,255,.35)}.gc-assumption-toggle .switch-group{width:100%;display:flex;flex-direction:column;gap:18px;padding:0 24px}.gc-assumption-toggle .switch-item{width:100%}.gc-assumption-toggle .switch-input{position:absolute;opacity:0;pointer-events:none}.gc-assumption-toggle .toggle-track{position:relative;width:100%;min-height:58px;padding:4px;display:flex;align-items:stretch;justify-content:space-between;gap:8px;border-radius:28px;cursor:pointer;overflow:hidden;border:1px solid rgba(255,255,255,.08);background:#0006}.gc-assumption-toggle .toggle-track:before{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:calc(50% - 4px);border-radius:24px;background:var(--panel-green);transition:transform .35s cubic-bezier(.16,1,.3,1)}.gc-assumption-toggle .switch-input:checked+.toggle-track:before{transform:translate(100%)}.gc-assumption-toggle .option-left,.gc-assumption-toggle .option-right{position:relative;z-index:1;flex:1;display:flex;align-items:center;justify-content:center;text-align:center;padding:10px 8px;color:#ffffff9e;font-size:clamp(.78rem,2vw,1.4rem);font-weight:500;letter-spacing:.04em;line-height:1.15;font-family:var(--font-ui);transition:color .25s ease,font-weight .25s ease}.gc-assumption-toggle .switch-input:not(:checked)+.toggle-track .option-left,.gc-assumption-toggle .switch-input:checked+.toggle-track .option-right{color:#fff;font-weight:700}.gc-assumption-toggle .action-button{margin-top:24px;border:none;border-radius:8px;padding:12px 32px;background:var(--accent-color);color:#fff;cursor:pointer;text-transform:uppercase;font-family:var(--font-display);font-size:clamp(1rem,2vw,1.35rem);font-weight:400;letter-spacing:.06em;box-shadow:0 4px #00000047;transition:transform .12s ease,box-shadow .12s ease,opacity .2s ease}.gc-assumption-toggle .action-button:hover{opacity:.92}.gc-assumption-toggle .action-button:active{transform:translateY(3px);box-shadow:none}.gc-assumption-toggle .action-button.secondary{font-size:1rem;padding:7px 88px;color:var(--text-secondary);background:transparent;border:2px solid var(--text-secondary);box-shadow:none}.gc-assumption-toggle .bottom-container{width:100%;height:100%;display:flex;flex-direction:column;gap:16px}.gc-assumption-toggle .slide-processing{justify-content:flex-start;padding:26px 20px 20px}.gc-assumption-toggle .processing-shell{width:100%;height:100%;display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:18px;background:linear-gradient(180deg,#041207f5,#07180ceb),radial-gradient(circle at top,rgba(87,255,143,.14),transparent 40%);border:1px solid rgba(120,255,154,.22);box-shadow:inset 0 0 28px #00000047}.gc-assumption-toggle .processing-header{display:flex;align-items:center;gap:10px}.gc-assumption-toggle .processing-led{width:10px;height:10px;border-radius:999px;background:#5cff8b;box-shadow:0 0 10px #5cff8be6;animation:assumption-led-pulse 1.2s ease-in-out infinite}.gc-assumption-toggle .processing-header h2{margin:0;color:#dfffe7;font-family:var(--font-display);font-size:clamp(1.05rem,2vw,1.3rem);font-weight:400;letter-spacing:.06em;text-transform:uppercase}.gc-assumption-toggle .processing-subtitle{color:#b6ffc6b8;font-family:var(--font-ui);font-size:clamp(.88rem,1.6vw,1rem);letter-spacing:.05em;text-transform:uppercase}.gc-assumption-toggle .processing-terminal{flex:1;min-height:0;padding:14px 16px;border-radius:14px;background:linear-gradient(180deg,#030904f0,#071008f5),repeating-linear-gradient(180deg,rgba(255,255,255,.02) 0,rgba(255,255,255,.02) 1px,transparent 1px,transparent 18px);border:1px solid rgba(120,255,154,.12);overflow:hidden}.gc-assumption-toggle .processing-line{display:flex;align-items:baseline;gap:8px;min-height:1.45em;color:#b7ffca;font-family:var(--font-ui);font-size:clamp(1rem,1.8vw,1.18rem);letter-spacing:.04em;line-height:1.35;word-break:break-word}.gc-assumption-toggle .processing-line+.processing-line{margin-top:4px}.gc-assumption-toggle .processing-line-active{color:#edfff2}.gc-assumption-toggle .processing-prompt{flex:0 0 auto;color:#5cff8b;font-family:var(--font-display)}.gc-assumption-toggle .processing-cursor{display:inline-block;width:9px;height:1.05em;margin-left:2px;vertical-align:text-bottom;background:#74ff97;box-shadow:0 0 8px #74ff97a6;animation:assumption-cursor-blink .9s steps(1) infinite}.gc-assumption-toggle .visualization-container,.gc-assumption-toggle .result-container{width:100%;border-radius:16px}.gc-assumption-toggle .visualization-container{flex:1.5;min-height:0;display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(255,255,255,.05);background:#00000052}.gc-assumption-toggle .result-container{position:relative;flex:1;min-height:0;padding:18px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#ffffff52;border:1px solid rgba(0,0,0,.08);text-align:center}.gc-assumption-toggle .summary-box{width:100%}.gc-assumption-toggle .summary-label{display:block;margin-bottom:8px;color:var(--text-secondary);font-size:.84rem;letter-spacing:.08em;text-transform:uppercase;font-family:var(--font-display)}.gc-assumption-toggle .summary-value{display:block;color:var(--text-primary);font-size:clamp(.9rem,1.5vw,1rem);letter-spacing:.04em;line-height:1.4;font-family:var(--font-ui)}.gc-assumption-toggle .result-value{display:block;width:100%;margin-top:4px;font-size:clamp(1.7rem,3vw,2rem);font-weight:400;letter-spacing:.05em;background-clip:text;-webkit-background-clip:text;color:transparent;font-family:var(--font-display)}.gc-assumption-toggle .result-stable{background-image:linear-gradient(90deg,#064e3b,#16a34a)}.gc-assumption-toggle .result-warning{background-image:linear-gradient(90deg,#7c2d12,#d97706)}.gc-assumption-toggle .result-paradox{background-image:linear-gradient(90deg,#831843,#be185d)}.gc-assumption-toggle .result-uncertain{background-image:linear-gradient(90deg,#4338ca,#7c3aed)}.gc-assumption-toggle .result-description{display:block;width:100%;margin-top:4px;color:#000;font-size:clamp(.96rem,1.8vw,1.08rem);letter-spacing:.03em;line-height:1.35;font-family:var(--font-ui)}.gc-assumption-toggle .intermediate-result{margin-top:14px;color:var(--text-secondary);font-size:.76rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-family:var(--font-display)}.gc-assumption-toggle .art-canvas{position:relative;width:100%;height:100%;min-height:160px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .art-canvas:after{content:"";position:absolute;width:8px;height:8px;border-radius:999px;background:#fff;box-shadow:0 0 12px #ffffffe6}.gc-assumption-toggle .art-canvas.paradox-point:after,.gc-assumption-toggle .art-canvas.paradox-chunk:after{display:none}.gc-assumption-toggle .cube-wrapper{position:relative;width:64px;height:64px;perspective:400px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .cube{position:relative;width:64px;height:64px;transform-style:preserve-3d;animation:assumption-slow-spin 10s linear infinite}.gc-assumption-toggle .face{position:absolute;inset:0;border:1px solid rgba(255,255,255,.35);background:#ffffff0d}.gc-assumption-toggle .cube .front{transform:translateZ(32px)}.gc-assumption-toggle .cube .back{transform:rotateY(180deg) translateZ(32px)}.gc-assumption-toggle .cube .right{transform:rotateY(90deg) translateZ(32px)}.gc-assumption-toggle .cube .left{transform:rotateY(-90deg) translateZ(32px)}.gc-assumption-toggle .cube .top{transform:rotateX(90deg) translateZ(32px)}.gc-assumption-toggle .cube .bottom{transform:rotateX(-90deg) translateZ(32px)}.gc-assumption-toggle .particle-point{position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:999px;transform:translate(-50%,-50%);background:#a10356;box-shadow:0 0 12px #a10356}.gc-assumption-toggle .info-arrow{position:absolute;left:-70px;top:50%;transform:translateY(-50%);display:flex;align-items:center;opacity:0;animation:assumption-arrow-enter .9s ease forwards .3s}.gc-assumption-toggle .arrow-line{width:34px;height:2px;background:#a10356;box-shadow:0 0 5px #a10356}.gc-assumption-toggle .arrow-head{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid #a10356}.gc-assumption-toggle .infinite-symbol{position:absolute;top:-25px;left:8px;color:#a10356;font-size:1.4rem;font-weight:700;text-shadow:0 0 10px rgba(161,3,86,.45)}.gc-assumption-toggle .chakana-wrapper{position:relative;width:90px;height:90px;transform-style:preserve-3d;transform:rotateX(-30deg) rotateY(45deg);animation:assumption-float 6s ease-in-out infinite}.gc-assumption-toggle .gold-cube{position:absolute;width:42px;height:42px;transform-style:preserve-3d}.gc-assumption-toggle .gold-cube.center{transform:translate(24px,24px)}.gc-assumption-toggle .gold-cube.top-arm{transform:translate(24px,-14px)}.gc-assumption-toggle .gold-cube.bottom-arm{transform:translate(24px,62px)}.gc-assumption-toggle .gold-cube.left-arm{transform:translate(-14px,24px)}.gc-assumption-toggle .gold-cube.right-arm{transform:translate(62px,24px)}.gc-assumption-toggle .gold-cube .face{background:linear-gradient(135deg,#fcd34d,#fbbf24,#d97706);border-color:#0000002e}.gc-assumption-toggle .gold-cube .front{transform:translateZ(21px)}.gc-assumption-toggle .gold-cube .back{transform:rotateY(180deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .right{transform:rotateY(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .left{transform:rotateY(-90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .top{transform:rotateX(90deg) translateZ(21px)}.gc-assumption-toggle .gold-cube .bottom{transform:rotateX(-90deg) translateZ(21px)}.gc-assumption-toggle .chaos-wrapper{position:relative;width:120px;height:120px;perspective:600px}.gc-assumption-toggle .central-source{position:absolute;left:50%;top:50%;width:22px;height:22px;transform-style:preserve-3d;transform:translate(-50%,-50%);animation:assumption-pulsar 2.1s ease-out infinite}.gc-assumption-toggle .central-source .face{background:#a10356;border:1px solid rgba(255,255,255,.78);box-shadow:0 0 15px #c084fc}.gc-assumption-toggle .central-source .front{transform:translateZ(11px)}.gc-assumption-toggle .central-source .back{transform:rotateY(180deg) translateZ(11px)}.gc-assumption-toggle .central-source .right{transform:rotateY(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .left{transform:rotateY(-90deg) translateZ(11px)}.gc-assumption-toggle .central-source .top{transform:rotateX(90deg) translateZ(11px)}.gc-assumption-toggle .central-source .bottom{transform:rotateX(-90deg) translateZ(11px)}.gc-assumption-toggle .debris-cube{position:absolute;left:50%;top:50%;width:10px;height:10px;transform-style:preserve-3d}.gc-assumption-toggle .debris-cube .face{background:linear-gradient(45deg,#c084fc,#a10356);border:1px solid rgba(255,255,255,.4)}.gc-assumption-toggle .debris-cube .front{transform:translateZ(5px)}.gc-assumption-toggle .debris-cube .back{transform:rotateY(180deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .right{transform:rotateY(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .left{transform:rotateY(-90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .top{transform:rotateX(90deg) translateZ(5px)}.gc-assumption-toggle .debris-cube .bottom{transform:rotateX(-90deg) translateZ(5px)}.gc-assumption-toggle .d-0{animation:assumption-explode-0 2.1s linear infinite}.gc-assumption-toggle .d-1{animation:assumption-explode-1 2.3s linear infinite .2s}.gc-assumption-toggle .d-2{animation:assumption-explode-2 1.9s linear infinite .4s}.gc-assumption-toggle .d-3{animation:assumption-explode-3 2.4s linear infinite .1s}.gc-assumption-toggle .d-4{animation:assumption-explode-4 2.1s linear infinite .5s}.gc-assumption-toggle .d-5{animation:assumption-explode-5 1.9s linear infinite .25s}.gc-assumption-toggle .d-6{animation:assumption-explode-6 2.25s linear infinite .45s}.gc-assumption-toggle .d-7{animation:assumption-explode-7 2.4s linear infinite .15s}.gc-assumption-toggle .d-8{animation:assumption-explode-8 1.75s linear infinite .65s}.gc-assumption-toggle .d-9{animation:assumption-explode-9 2.5s linear infinite .1s}.gc-assumption-toggle .signal-orbit,.gc-assumption-toggle .field-node{position:relative;width:112px;height:112px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .signal-ring,.gc-assumption-toggle .field-ring{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-ring{inset:22px;border:2px dashed rgba(255,255,255,.45);animation:assumption-rotate 7s linear infinite}.gc-assumption-toggle .signal-axis{position:absolute;width:100px;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent);transform:rotate(-25deg)}.gc-assumption-toggle .signal-dot,.gc-assumption-toggle .field-core{position:absolute;border-radius:999px}.gc-assumption-toggle .signal-dot{width:14px;height:14px;background:#fc6;box-shadow:0 0 18px #ffcc66b3}.gc-assumption-toggle .signal-cube{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#f5d565,#e08e18);box-shadow:0 0 22px #e08e1899}.gc-assumption-toggle .signal-orbit-point .signal-dot{animation:assumption-jitter .22s infinite}.gc-assumption-toggle .signal-orbit-chunk .signal-cube{animation:assumption-tilt 2.8s ease-in-out infinite}.gc-assumption-toggle .field-ring-outer{inset:10px;border:1px solid rgba(123,245,186,.38)}.gc-assumption-toggle .field-ring-inner{inset:28px;border:1px dashed rgba(123,245,186,.55);animation:assumption-rotate 9s linear infinite reverse}.gc-assumption-toggle .field-core{width:16px;height:16px;background:#4ade80;box-shadow:0 0 18px #4ade80cc}.gc-assumption-toggle .field-core-chunk{width:30px;height:30px;border-radius:10px;background:linear-gradient(135deg,#4ade80,#16a34a)}.gc-assumption-toggle .field-question{position:absolute;top:12px;right:16px;color:#ffffffd9;font-size:1.4rem;font-weight:700}.gc-assumption-toggle .crt-collapse{animation:assumption-crt-collapse .1s cubic-bezier(.25,.46,.45,.94) forwards}.gc-assumption-toggle .crt-expand{animation:assumption-crt-expand .1s cubic-bezier(.25,.46,.45,.94) forwards}@keyframes assumption-crt-collapse{0%{transform:scaleY(1)}60%{transform:scaleY(.1)}to{transform:scaleY(.005)}}@keyframes assumption-crt-expand{0%{transform:scaleY(.005)}60%{transform:scaleY(.1)}to{transform:scaleY(1)}}@keyframes assumption-slow-spin{0%{transform:rotateX(-20deg) rotateY(0)}to{transform:rotateX(-20deg) rotateY(360deg)}}@keyframes assumption-arrow-enter{0%{opacity:0;transform:translate(-12px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes assumption-float{0%{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}50%{transform:rotateX(-30deg) rotateY(45deg) translateY(-10px)}to{transform:rotateX(-30deg) rotateY(45deg) translateY(0)}}@keyframes assumption-pulsar{0%{transform:translate(-50%,-50%) scale3d(.15,.15,.15) rotate(0);opacity:0}50%{transform:translate(-50%,-50%) scale3d(1.45,1.45,1.45) rotate(180deg);opacity:1}to{transform:translate(-50%,-50%) scale3d(3,3,3) rotate(360deg);opacity:0}}@keyframes assumption-explode-0{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(56px,54px) rotate(360deg)}}@keyframes assumption-explode-1{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-72px,48px) rotate(-180deg)}}@keyframes assumption-explode-2{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(30px,-84px) rotate(90deg)}}@keyframes assumption-explode-3{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-58px,-44px) rotate(-270deg)}}@keyframes assumption-explode-4{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(12px,74px) rotate(45deg)}}@keyframes assumption-explode-5{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-92px,6px) rotate(-45deg)}}@keyframes assumption-explode-6{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(48px,-54px) rotate(120deg)}}@keyframes assumption-explode-7{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-64px,58px) rotate(200deg)}}@keyframes assumption-explode-8{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(74px,18px) rotate(-100deg)}}@keyframes assumption-explode-9{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-26px,-82px) rotate(60deg)}}@keyframes assumption-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes assumption-jitter{0%{transform:translate(0)}25%{transform:translate(1px,1px)}50%{transform:translate(-1px,-1px)}75%{transform:translate(-1px,1px)}to{transform:translate(1px,-1px)}}@keyframes assumption-tilt{0%{transform:rotate(0) scale(1)}50%{transform:rotate(18deg) scale(1.08)}to{transform:rotate(0) scale(1)}}@keyframes assumption-cursor-blink{0%,45%{opacity:1}46%,to{opacity:0}}@keyframes assumption-led-pulse{0%,to{opacity:.5;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}@media(max-width:900px){.gc-assumption-toggle .component-shell{padding:12px 0}.gc-assumption-toggle .switch-group{gap:12px;padding:0 14px}.gc-assumption-toggle .toggle-track{min-height:50px}.gc-assumption-toggle .action-button{padding:10px 22px}.gc-assumption-toggle .action-button.secondary{padding:6px 36px}.gc-assumption-toggle .result-container{padding:14px}.gc-assumption-toggle .intermediate-result{margin-top:10px;font-size:.68rem}.gc-assumption-toggle .slide-processing{padding:18px 14px 14px}.gc-assumption-toggle .processing-shell,.gc-assumption-toggle .processing-terminal{padding:12px}}.gc-assumption-toggle .visualization-container{background:radial-gradient(circle at 50% 30%,rgba(156,255,197,.12),transparent 42%),linear-gradient(180deg,#09130de6,#060c08f5)}.gc-assumption-toggle .result-container{background:linear-gradient(180deg,#f7fcf8eb,#dcede2f0);border:1px solid rgba(8,33,18,.12);box-shadow:inset 0 1px #ffffff59}.gc-assumption-toggle .summary-box{padding:4px 0}.gc-assumption-toggle .summary-value{color:#0f2d18}.gc-assumption-toggle .intermediate-result{padding:7px 12px;border-radius:999px;color:#d9ffe5;background:linear-gradient(180deg,#071b0eeb,#0c2814f0);border:1px solid rgba(120,255,154,.18);box-shadow:inset 0 1px #ffffff14,0 8px 20px #0000001f;opacity:1}.gc-assumption-toggle .digital-lattice{position:relative;width:150px;height:150px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .digital-grid{position:absolute;inset:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;transform:rotate(45deg)}.gc-assumption-toggle .digital-cell{border-radius:10px;background:linear-gradient(135deg,#f6cb4d40,#c98010ad),linear-gradient(180deg,#ffffff24,#0000001a);border:1px solid rgba(255,222,118,.35);box-shadow:inset 0 1px #ffffff1a,0 0 18px #f6b7311f;animation:assumption-digital-flicker 2.6s ease-in-out infinite}.gc-assumption-toggle .digital-cell-core{background:linear-gradient(135deg,#ffeb8ecc,#f09c16eb),linear-gradient(180deg,#ffffff2e,#0000000f);box-shadow:0 0 26px #ffd86ba6,inset 0 0 12px #fff3}.gc-assumption-toggle .digital-cell-0{animation-delay:.05s}.gc-assumption-toggle .digital-cell-1{animation-delay:.25s}.gc-assumption-toggle .digital-cell-2{animation-delay:.55s}.gc-assumption-toggle .digital-cell-3{animation-delay:.35s}.gc-assumption-toggle .digital-cell-4{animation-delay:.12s}.gc-assumption-toggle .digital-cell-5{animation-delay:.68s}.gc-assumption-toggle .digital-cell-6{animation-delay:.44s}.gc-assumption-toggle .digital-cell-7{animation-delay:.2s}.gc-assumption-toggle .digital-cell-8{animation-delay:.78s}.gc-assumption-toggle .digital-core{position:relative;z-index:2;width:54px;height:54px;border-radius:16px;border:1px solid rgba(255,230,136,.45);background:radial-gradient(circle at 35% 35%,rgba(255,248,202,.45),transparent 55%),linear-gradient(145deg,#624008eb,#eca718eb);box-shadow:0 0 34px #efb83c5c,inset 0 0 20px #fff6ae33;transform:rotate(45deg)}.gc-assumption-toggle .digital-core-dot{position:absolute;inset:18px;border-radius:12px;background:#fff8d2f0;box-shadow:0 0 18px #fff5be99}.gc-assumption-toggle .digital-scan{position:absolute;z-index:1;border-radius:999px;background:#91ffbf2e}.gc-assumption-toggle .digital-scan-horizontal{width:132px;height:2px;animation:assumption-digital-scan-x 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-scan-vertical{width:2px;height:132px;animation:assumption-digital-scan-y 3.4s ease-in-out infinite}.gc-assumption-toggle .digital-aura{position:absolute;inset:6px;border-radius:28px;border:1px solid rgba(255,226,118,.18);box-shadow:0 0 34px #f5bc3f26}.gc-assumption-toggle .physics-observatory{position:relative;width:158px;height:158px;display:flex;justify-content:center;align-items:center}.gc-assumption-toggle .physics-grid{position:absolute;inset:10px;border-radius:999px;background:radial-gradient(circle,rgba(151,244,209,.09),transparent 58%),repeating-radial-gradient(circle,rgba(255,255,255,.09) 0 1px,transparent 1px 18px);-webkit-mask-image:radial-gradient(circle,black 58%,transparent 78%);mask-image:radial-gradient(circle,black 58%,transparent 78%);opacity:.75}.gc-assumption-toggle .physics-halo{position:absolute;border-radius:999px;border:1px solid rgba(157,253,224,.28)}.gc-assumption-toggle .physics-halo-outer{inset:8px;animation:assumption-rotate 18s linear infinite}.gc-assumption-toggle .physics-halo-inner{inset:28px;border-style:dashed;border-color:#76edc68a;animation:assumption-rotate 12s linear infinite reverse}.gc-assumption-toggle .physics-core-shell{position:absolute;width:54px;height:54px;border-radius:999px;background:radial-gradient(circle at 35% 35%,rgba(255,255,255,.4),transparent 52%),linear-gradient(180deg,#1b5c45e0,#0a241cf2);box-shadow:inset 0 0 22px #b2ffe429,0 0 34px #54d9a452}.gc-assumption-toggle .physics-core-shell-chunk{border-radius:18px;transform:rotate(45deg)}.gc-assumption-toggle .physics-core-point{position:absolute;inset:17px;border-radius:999px;background:radial-gradient(circle,#baffe6,#4ade80 48%,#16825b);box-shadow:0 0 22px #85ffcca6,0 0 42px #5adca242}.gc-assumption-toggle .physics-core-chunk{border-radius:9px}.gc-assumption-toggle .physics-orbit{position:absolute;width:10px;height:10px;border-radius:999px;background:linear-gradient(180deg,#f2fff9,#89ffd0);box-shadow:0 0 16px #89ffd094}.gc-assumption-toggle .physics-orbit-1{animation:assumption-orbit-one 6.4s linear infinite}.gc-assumption-toggle .physics-orbit-2{width:8px;height:8px;background:linear-gradient(180deg,#fff6d7,#ffcf69);box-shadow:0 0 14px #ffcf698c;animation:assumption-orbit-two 8.2s linear infinite reverse}.gc-assumption-toggle .physics-orbit-3{width:6px;height:6px;background:linear-gradient(180deg,#dffcff,#73d4ff);box-shadow:0 0 12px #73d4ff80;animation:assumption-orbit-three 10s linear infinite}.gc-assumption-toggle .physics-question-ring{position:absolute;inset:44px;display:flex;justify-content:center;align-items:center;border-radius:999px;border:1px dashed rgba(255,241,171,.28)}.gc-assumption-toggle .physics-question{color:#fff8d2f0;font-size:1.2rem;font-weight:700;text-shadow:0 0 12px rgba(255,226,130,.35)}@keyframes assumption-digital-flicker{0%,to{opacity:.72;transform:scale(1)}35%{opacity:1;transform:scale(1.04)}60%{opacity:.84;transform:scale(.98)}}@keyframes assumption-digital-scan-x{0%,to{transform:translateY(-48px);opacity:.2}50%{transform:translateY(48px);opacity:.9}}@keyframes assumption-digital-scan-y{0%,to{transform:translate(-48px);opacity:.18}50%{transform:translate(48px);opacity:.88}}@keyframes assumption-orbit-one{0%{transform:rotate(0) translate(54px) rotate(0)}to{transform:rotate(360deg) translate(54px) rotate(-360deg)}}@keyframes assumption-orbit-two{0%{transform:rotate(40deg) translate(34px) translateY(-14px) rotate(0)}to{transform:rotate(400deg) translate(34px) translateY(-14px) rotate(-360deg)}}@keyframes assumption-orbit-three{0%{transform:rotate(-20deg) translate(64px) translateY(4px) rotate(0)}to{transform:rotate(340deg) translate(64px) translateY(4px) rotate(-360deg)}} diff --git a/public/glitch/glitch_gallery/assets/index-DOdpM0HQ.js b/public/glitch/glitch_gallery/assets/index-DOdpM0HQ.js new file mode 100644 index 0000000..327b0a9 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-DOdpM0HQ.js @@ -0,0 +1 @@ +import{r as s,j as t}from"./index-CEeZxcxj.js";const b="_container_18jex_3",B="_grid_18jex_18",C="_textBlock_18jex_34",f="_mainText_18jex_41",k="_delayed_18jex_50",I="_sphere_18jex_63",M="_glitching_18jex_82",S="_voxelOverlay_18jex_113",w="_visible_18jex_122",$="_voxel_18jex_113",A="_rebelText_18jex_137",G="_enterButton_18jex_146",O="_migrationContent_18jex_168",D="_tagline_18jex_175",F="_notList_18jex_183",E="_notItem_18jex_190",L="_isText_18jex_212",R="_ruleBox_18jex_221",W="_ruleTitle_18jex_231",U="_ruleContent_18jex_238",z="_continueButton_18jex_244",H="_agreementContent_18jex_265",P="_agreementTitle_18jex_272",Y="_pledgeText_18jex_280",q="_signatureArea_18jex_293",J="_paper_18jex_302",K="_signatureMark_18jex_313",Q="_pencil_18jex_339",V="_animating_18jex_346",X="_signButton_18jex_365",Z="_navigationContent_18jex_390",ee="_welcomeText_18jex_397",te="_choiceButtons_18jex_405",ne="_choiceButton_18jex_405",se="_choiceTitle_18jex_434",ie="_choiceDesc_18jex_440",ae="_arrow_18jex_445",oe="_screenFadeIn_18jex_463",e={container:b,grid:B,textBlock:C,mainText:f,delayed:k,sphere:I,glitching:M,voxelOverlay:S,visible:w,voxel:$,rebelText:A,enterButton:G,migrationContent:O,tagline:D,notList:F,notItem:E,isText:L,ruleBox:R,ruleTitle:W,ruleContent:U,continueButton:z,agreementContent:H,agreementTitle:P,pledgeText:Y,signatureArea:q,paper:J,signatureMark:K,pencil:Q,animating:V,signButton:X,navigationContent:Z,welcomeText:ee,choiceButtons:te,choiceButton:ne,choiceTitle:se,choiceDesc:ie,arrow:ae,screenFadeIn:oe};function me({onComplete:l,onProgress:d,theme:n,className:h}){const[a,c]=s.useState("disorientation"),[x,m]=s.useState(!1),[_,j]=s.useState(!1),[u,p]=s.useState(!1),o=n?{"--gc-primary":n.primary,"--gc-accent":n.accent,"--gc-bg":n.bg,"--gc-bgSecondary":n.bgSecondary,"--gc-text":n.text,"--gc-textMuted":n.textMuted,"--gc-border":n.border}:{};s.useEffect(()=>{d?.({disorientation:25,migration:50,agreement:75,navigation:100}[a])},[a,d]),s.useEffect(()=>{if(a!=="disorientation")return;const i=()=>{m(!0),setTimeout(()=>m(!1),150)},r=setTimeout(i,4e3),T=setInterval(()=>{const y=Math.random()*3e3+3e3;setTimeout(i,y)},6e3);return()=>{clearTimeout(r),clearInterval(T)}},[a]);const v=s.useCallback(()=>{j(!0),setTimeout(()=>{p(!0),setTimeout(()=>{c("navigation")},1e3)},800)},[]),g=s.useCallback(i=>{l({success:!0,data:{choice:i,agreedToTerms:!0},rewards:{achievements:["onboarding_complete"],unlocks:i==="lesson"?["tech_tree"]:["character_builder"]}})},[l]),N={disorientation:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.textBlock,children:[t.jsx("p",{className:e.mainText,children:"You are standing on a smooth sphere. It looks continuous. It feels continuous."}),t.jsx("div",{className:e.sphere+(x?` ${e.glitching}`:""),children:t.jsx("div",{className:e.voxelOverlay+(x?` ${e.visible}`:""),children:Array.from({length:36}).map((i,r)=>t.jsx("div",{className:e.voxel,style:{opacity:Math.random()>.5?.8:0}},r))})}),t.jsx("p",{className:`${e.mainText} ${e.delayed}`,children:"But what if it isn't?"}),t.jsxs("p",{className:e.rebelText,children:["Most people assume the universe is continuous.",t.jsx("br",{}),"We're not most people."]}),t.jsx("button",{className:e.enterButton,onClick:()=>c("migration"),children:"Enter the Glitch"})]})]}),migration:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.migrationContent,children:[t.jsx("p",{className:e.tagline,children:"A migration project for physics. That might fail. Or not."}),t.jsxs("ul",{className:e.notList,children:[t.jsx("li",{className:e.notItem,children:"This is not a fringe physics forum."}),t.jsx("li",{className:e.notItem,children:"This is not an online RPG."}),t.jsx("li",{className:e.notItem,children:"This is not a lecture series in philosophy, physics and computer science."})]}),t.jsx("p",{className:e.isText,children:"It's all of those things."}),t.jsxs("div",{className:e.ruleBox,children:[t.jsx("div",{className:e.ruleTitle,children:"RULE 1"}),t.jsxs("div",{className:e.ruleContent,children:["Nothing is obvious. Show it.",t.jsx("br",{}),"Predictions matter more than opinions."]})]}),t.jsx("button",{className:e.continueButton,onClick:()=>c("agreement"),children:"Continue →"})]})]}),agreement:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.agreementContent,children:[t.jsx("p",{className:e.agreementTitle,children:"Make your mark and sign here"}),t.jsx("div",{className:e.pledgeText,children:'"I agree to test ideas against reality"'}),t.jsxs("div",{className:e.signatureArea,children:[t.jsx("div",{className:e.paper,children:t.jsx("span",{className:e.signatureMark+(u?` ${e.visible}`:""),children:"✕"})}),t.jsx("span",{className:e.pencil+(_?` ${e.animating}`:""),children:"✏️"})]}),!u&&t.jsx("button",{className:e.signButton,onClick:v,disabled:_,children:"Sign"})]})]}),navigation:()=>t.jsxs("div",{className:`${e.container} ${e.screenFadeIn}`,style:o,children:[t.jsx("div",{className:e.grid}),t.jsxs("div",{className:e.navigationContent,children:[t.jsx("p",{className:e.welcomeText,children:"Welcome to the Glitch. What would you like to do?"}),t.jsxs("div",{className:e.choiceButtons,children:[t.jsxs("button",{className:e.choiceButton,onClick:()=>g("lesson"),children:[t.jsxs("div",{className:e.choiceTitle,children:["Take me to the first lesson ",t.jsx("span",{className:e.arrow,children:"→"})]}),t.jsx("div",{className:e.choiceDesc,children:"Opens the tech tree and begins your journey"})]}),t.jsxs("button",{className:e.choiceButton,onClick:()=>g("character"),children:[t.jsxs("div",{className:e.choiceTitle,children:["Build my character first ",t.jsx("span",{className:e.arrow,children:"→"})]}),t.jsx("div",{className:e.choiceDesc,children:"Customize your presence in the Glitch"})]})]})]})]})};return t.jsx("div",{className:h,children:N[a]()})}const _e={name:"onboarding",version:"1.0.0",displayName:"Glitch University Onboarding",description:"Multi-screen onboarding experience introducing users to the Glitch universe",author:"Glitch.university",paramSchema:{},tags:["onboarding","intro","welcome"]};export{me as OnboardingComponent,me as default,_e as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-DczjPplt.css b/public/glitch/glitch_gallery/assets/index-DczjPplt.css new file mode 100644 index 0000000..aac4251 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-DczjPplt.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Iceland&family=JetBrains+Mono:wght@400;600&family=Russo+One&display=swap";@import"https://fonts.googleapis.com/css2?family=Iceland&family=Russo+One&family=VT323&display=swap";:root{--font-headline: "Russo One", sans-serif;--font-ui: "VT323", "Iceland", sans-serif;--terminal-green: #7dff9b;--terminal-green-soft: #b9ffca;--terminal-green-dim: #5fd67b;--terminal-green-muted: #4f7b59;--terminal-panel-border: rgba(125, 255, 155, .22);font-family:var(--font-ui)}body{margin:0;min-width:320px;min-height:100vh;overflow:hidden;background:radial-gradient(circle at top left,rgba(125,255,155,.12),transparent 26%),radial-gradient(circle at top right,rgba(255,184,77,.08),transparent 22%),linear-gradient(180deg,#040605,#070b08 46%,#050505);color:var(--terminal-green-soft);font-family:var(--font-ui);letter-spacing:.04em;text-shadow:0 0 10px rgba(125,255,155,.08)}#root{width:100%;height:100vh}html,body{width:100%;height:100%;min-height:100%}button,input,select,textarea{font:inherit}code{font-family:SFMono-Regular,Menlo,monospace}.gallery-shell{display:grid;grid-template-columns:280px minmax(0,1fr);width:100%;height:100%}.gallery-sidebar{display:flex;flex-direction:column;gap:22px;padding:24px 18px;border-right:1px solid rgba(125,255,155,.14);background:#060a08eb;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);overflow:auto}.gallery-sidebar-header h1,.gallery-toolbar h2,.gallery-section-header h2,.gallery-section-header h3{margin:0;font-family:var(--font-headline);font-weight:400;letter-spacing:.08em;text-transform:uppercase}.gallery-sidebar-header h1{font-size:1.7rem}.gallery-sidebar-header p,.gallery-toolbar-subtitle,.gallery-muted,.gallery-list-subtitle,.gallery-list-note,.gallery-control-help,.gallery-log-time,.gallery-metadata dt{color:var(--terminal-green-muted)}.gallery-sidebar-header p,.gallery-toolbar-subtitle,.gallery-muted,.gallery-list-note,.gallery-control-help{font-size:.95rem}.gallery-eyebrow{display:inline-flex;margin-bottom:6px;color:var(--terminal-green-dim);font-size:.95rem;text-transform:uppercase;letter-spacing:.18em}.gallery-section{display:flex;flex-direction:column;gap:10px}.gallery-section-header,.gallery-panel-header,.gallery-log-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.gallery-list{display:flex;flex-direction:column;gap:10px}.gallery-list-item{display:flex;align-items:stretch;justify-content:space-between;gap:12px;width:100%;padding:10px 12px;border:1px solid rgba(125,255,155,.14);border-radius:16px;background:#0d1510e0;color:inherit;text-align:left}button.gallery-list-item{cursor:pointer;transition:border-color .18s ease,transform .18s ease,background .18s ease}button.gallery-list-item:hover{transform:translateY(-1px);border-color:#7dff9b57;background:#121d16f0}.gallery-list-item.is-active{border-color:#7dff9b80;box-shadow:0 0 0 1px #7dff9b2e,inset 0 0 0 1px #7dff9b1f}.gallery-list-item.is-disabled{opacity:.7}.gallery-list-copy{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.gallery-list-title{color:var(--terminal-green-soft);font-size:1.08rem}.gallery-list-subtitle{font-family:SFMono-Regular,Menlo,monospace;font-size:.72rem;word-break:break-word}.gallery-list-note{line-height:1.2}.gallery-list-thumb{--gallery-card-accent: hsl(var(--gallery-card-hue, 120) 80% 70%);width:84px;min-width:84px;border-radius:14px;padding:1px;background:linear-gradient(145deg,color-mix(in srgb,var(--gallery-card-accent) 72%,transparent),transparent 62%),#7dff9b1f}.gallery-list-thumb-frame{display:flex;flex-direction:column;justify-content:space-between;gap:8px;min-height:84px;padding:10px;border-radius:13px;background:radial-gradient(circle at top left,color-mix(in srgb,var(--gallery-card-accent) 26%,transparent),transparent 58%),linear-gradient(180deg,#080d0af5,#060907fa)}.gallery-list-thumb-type,.gallery-list-thumb-id{font-size:.64rem;line-height:1;text-transform:uppercase;letter-spacing:.12em}.gallery-list-thumb-type{color:color-mix(in srgb,var(--gallery-card-accent) 72%,white)}.gallery-list-thumb-frame strong{color:#f6fff8;font-family:var(--font-headline);font-size:1.65rem;font-weight:400;line-height:.9}.gallery-list-thumb-id{color:#ffffffad}.gallery-list-status{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.gallery-selected-card{display:flex;flex-direction:column;gap:14px;padding:18px;border:1px solid rgba(125,255,155,.14);border-radius:20px;background:#0a100de0}.gallery-selected-title{margin:0;font-family:var(--font-headline);font-size:1.5rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase}.gallery-selected-subtitle{margin:0;color:var(--terminal-green-muted);font-size:.95rem}.gallery-sidebar-viewport-switcher{margin-top:14px}.gallery-main{display:flex;flex-direction:column;min-width:0;height:100%;padding:20px}.gallery-toolbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.gallery-viewport-switcher{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:8px}.gallery-sidebar-actions{justify-content:flex-start}.gallery-viewport-button{min-width:94px;padding:10px 12px;border:1px solid rgba(125,255,155,.14);border-radius:14px;background:#080e0ae0;color:var(--terminal-green-soft);cursor:pointer;text-align:left;transition:border-color .18s ease,transform .18s ease,background .18s ease}.gallery-viewport-button-compact{min-width:0;padding:6px 10px;border-radius:999px;font-size:.78rem;line-height:1.1;white-space:nowrap}.gallery-viewport-button:hover{transform:translateY(-1px);border-color:#7dff9b52}.gallery-viewport-button.is-active{border-color:#7dff9b6b;background:linear-gradient(180deg,#142018f5,#0a100deb);box-shadow:inset 0 0 0 1px #7dff9b1f}.gallery-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;height:100%;min-height:0;flex:1}.gallery-preview-panel,.gallery-panel{display:flex;flex-direction:column;gap:14px;min-height:0;padding:18px;border:1px solid rgba(125,255,155,.14);border-radius:20px;background:#0a100de0}.gallery-panel-scroll{flex:1 1 0;overflow:hidden}.gallery-inspector{display:flex;flex-direction:column;gap:18px;max-height:100%;min-height:0;overflow-x:hidden;overflow-y:scroll;overscroll-behavior:contain}.gallery-stage{position:relative;align-items:center;justify-content:center;min-height:0;flex:1;border:1px solid rgba(125,255,155,.14);border-radius:18px;background:linear-gradient(180deg,#060b08e0,#040705fa),repeating-linear-gradient(0deg,rgba(125,255,155,.02),rgba(125,255,155,.02) 1px,transparent 1px,transparent 30px);overflow:auto}.gallery-stage-badges{display:flex;align-items:center;gap:8px}.gallery-stage-viewport{width:min(100%,var(--gallery-preview-width));height:min(100%,var(--gallery-preview-height));min-height:0;min-width:0;display:flex;flex:0 0 auto;overflow:hidden;border-radius:14px;box-shadow:0 0 0 1px #7dff9b24,0 18px 38px #00000042}.gallery-stage-viewport.is-fluid{width:100%;height:100%;flex:1 1 auto;border-radius:0;box-shadow:none}.gallery-canvas-shell,.gallery-standard-shell,.gallery-state{width:100%;height:100%;flex:1 1 auto;min-width:100%;min-height:100%}.gallery-preview-frame{display:block;flex:1 1 auto;width:100%;height:100%;border:0;background:transparent}.gallery-runtime-root{display:flex;width:100%;height:100%;min-height:100%}.gallery-canvas-shell{display:flex;height:100%}.gallery-state{display:grid;place-items:center;padding:32px;text-align:center}.gallery-state h3{margin:8px 0 0;font-family:var(--font-headline);font-weight:400}.gallery-state p{max-width:360px}.gallery-state-error{place-items:start;text-align:left}.gallery-controls{display:flex;flex-direction:column;gap:14px}.gallery-controls-scroll{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding-right:4px}.gallery-control{display:flex;flex-direction:column;gap:7px}.gallery-checkbox{flex-direction:row;align-items:center;justify-content:space-between;gap:12px}.gallery-control-copy{display:flex;flex-direction:column;gap:4px}.gallery-control-label{color:var(--terminal-green-soft);font-size:1rem}.gallery-range-row{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:10px}.gallery-input,.gallery-number,.gallery-range,.gallery-button,.gallery-checkbox input{accent-color:var(--terminal-green)}.gallery-input,.gallery-number{width:100%;padding:10px 12px;border:1px solid rgba(125,255,155,.18);border-radius:12px;background:#070c09eb;color:var(--terminal-green-soft)}.gallery-range{width:100%}.gallery-button{padding:10px 14px;border:1px solid rgba(125,255,155,.18);border-radius:999px;background:#0c1610eb;color:var(--terminal-green-soft);cursor:pointer;transition:border-color .18s ease,background .18s ease}.gallery-button:hover:not(:disabled){border-color:#7dff9b57;background:#101c15f5}.gallery-button:disabled{opacity:.45;cursor:not-allowed}.gallery-button-quiet{padding:6px 10px}.gallery-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 9px;border-radius:999px;border:1px solid rgba(125,255,155,.18);background:#0c1610eb;color:var(--terminal-green-soft);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}.gallery-badge-muted{border-color:#7dff9b14;color:var(--terminal-green-muted)}.gallery-badge-accent{border-color:#ffb84d4d;color:#ffcd82}.gallery-badge-danger{border-color:#ff6b6b4d;color:#ff9b9b}.gallery-badge-progress{border-color:#7dff9b4d}.gallery-badge-complete{border-color:#4db8ff57;color:#98dbff}.gallery-badge-sound{border-color:#ffb84d4d;color:#ffcd82}.gallery-badge-host{border-color:#b57dff4d;color:#d8b8ff}.gallery-badge-system{border-color:#7dff9b24;color:var(--terminal-green-muted)}.gallery-metadata{display:grid;gap:12px;margin:0}.gallery-metadata div{display:grid;gap:4px}.gallery-metadata dt{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}.gallery-metadata dd{margin:0;color:var(--terminal-green-soft)}.gallery-log-list{display:flex;flex-direction:column;gap:12px;max-height:360px;overflow:auto}.gallery-log-item{padding:12px;border-radius:14px;background:#070c09eb;border:1px solid rgba(125,255,155,.1)}.gallery-pre{margin:0;white-space:pre-wrap;word-break:break-word;color:#d8f9df;font-family:SFMono-Regular,Menlo,monospace;font-size:.78rem;line-height:1.45}@media(max-width:1200px){.gallery-grid{grid-template-columns:minmax(0,1fr) 320px}}@media(max-width:960px){body{overflow:auto}body[data-gallery-mode=shell] #root{height:auto;min-height:100%}.gallery-shell{grid-template-columns:1fr;height:auto}.gallery-sidebar{border-right:0;border-bottom:1px solid rgba(125,255,155,.14)}.gallery-grid{grid-template-columns:1fr}.gallery-viewport-switcher,.gallery-toolbar-actions{justify-content:flex-start}.gallery-stage{min-height:70vh}} diff --git a/public/glitch/glitch_gallery/assets/index-DnqmHVBx.js b/public/glitch/glitch_gallery/assets/index-DnqmHVBx.js new file mode 100644 index 0000000..10c4a01 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-DnqmHVBx.js @@ -0,0 +1 @@ +import{k as Zt,V as g,l as U,T as Y,Q as yt,m as bt,b as E,n as Ht,f as Kt,M as Ft,r as b,o as gt,C as Et,F as wt,P as Xt,W as Vt,p as Wt,q as qt,s as Pt,t as Gt,v as Bt,w as Qt,I as Mt,i as $t,j as w,x as Jt,y as te,z as Dt}from"./index-CEeZxcxj.js";const St={type:"change"},et={type:"start"},Ct={type:"end"},V=new Ht,Tt=new Kt,ee=Math.cos(70*Ft.DEG2RAD),h=new g,f=2*Math.PI,a={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},$=1e-6;class se extends Zt{constructor(t,e=null){super(t,e),this.state=a.NONE,this.target=new g,this.cursor=new g,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:U.ROTATE,MIDDLE:U.DOLLY,RIGHT:U.PAN},this.touches={ONE:Y.ROTATE,TWO:Y.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new g,this._lastQuaternion=new yt,this._lastTargetPosition=new g,this._quat=new yt().setFromUnitVectors(t.up,new g(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new bt,this._sphericalDelta=new bt,this._scale=1,this._panOffset=new g,this._rotateStart=new E,this._rotateEnd=new E,this._rotateDelta=new E,this._panStart=new E,this._panEnd=new E,this._panDelta=new E,this._dollyStart=new E,this._dollyEnd=new E,this._dollyDelta=new E,this._dollyDirection=new g,this._mouse=new E,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=oe.bind(this),this._onPointerDown=ie.bind(this),this._onPointerUp=ae.bind(this),this._onContextMenu=pe.bind(this),this._onMouseWheel=he.bind(this),this._onKeyDown=le.bind(this),this._onTouchStart=ce.bind(this),this._onTouchMove=de.bind(this),this._onMouseDown=ne.bind(this),this._onMouseMove=re.bind(this),this._interceptControlDown=ue.bind(this),this._interceptControlUp=me.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}connect(t){super.connect(t),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(t){t.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=t}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(St),this.update(),this.state=a.NONE}update(t=null){const e=this.object.position;h.copy(e).sub(this.target),h.applyQuaternion(this._quat),this._spherical.setFromVector3(h),this.autoRotate&&this.state===a.NONE&&this._rotateLeft(this._getAutoRotationAngle(t)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let i=this.minAzimuthAngle,o=this.maxAzimuthAngle;isFinite(i)&&isFinite(o)&&(i<-Math.PI?i+=f:i>Math.PI&&(i-=f),o<-Math.PI?o+=f:o>Math.PI&&(o-=f),i<=o?this._spherical.theta=Math.max(i,Math.min(o,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+o)/2?Math.max(i,this._spherical.theta):Math.min(o,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let n=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const r=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),n=r!=this._spherical.radius}if(h.setFromSpherical(this._spherical),h.applyQuaternion(this._quatInverse),e.copy(this.target).add(h),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let r=null;if(this.object.isPerspectiveCamera){const l=h.length();r=this._clampDistance(l*this._scale);const m=l-r;this.object.position.addScaledVector(this._dollyDirection,m),this.object.updateMatrixWorld(),n=!!m}else if(this.object.isOrthographicCamera){const l=new g(this._mouse.x,this._mouse.y,0);l.unproject(this.object);const m=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),n=m!==this.object.zoom;const c=new g(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(l),this.object.updateMatrixWorld(),r=h.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;r!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(r).add(this.object.position):(V.origin.copy(this.object.position),V.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(V.direction))$||8*(1-this._lastQuaternion.dot(this.object.quaternion))>$||this._lastTargetPosition.distanceToSquared(this.target)>$?(this.dispatchEvent(St),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(t){return t!==null?f/60*this.autoRotateSpeed*t:f/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(t*.01);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){h.setFromMatrixColumn(e,0),h.multiplyScalar(-t),this._panOffset.add(h)}_panUp(t,e){this.screenSpacePanning===!0?h.setFromMatrixColumn(e,1):(h.setFromMatrixColumn(e,0),h.crossVectors(this.object.up,h)),h.multiplyScalar(t),this._panOffset.add(h)}_pan(t,e){const i=this.domElement;if(this.object.isPerspectiveCamera){const o=this.object.position;h.copy(o).sub(this.target);let n=h.length();n*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*n/i.clientHeight,this.object.matrix),this._panUp(2*e*n/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const i=this.domElement.getBoundingClientRect(),o=t-i.left,n=e-i.top,r=i.width,l=i.height;this._mouse.x=o/r*2-1,this._mouse.y=-(n/l)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(f*this._rotateDelta.x/e.clientHeight),this._rotateUp(f*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0;break}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(this._pointers.length===1)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._rotateStart.set(i,o)}}_handleTouchStartPan(t){if(this._pointers.length===1)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._panStart.set(i,o)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,o=t.pageY-e.y,n=Math.sqrt(i*i+o*o);this._dollyStart.set(0,n)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(this._pointers.length==1)this._rotateEnd.set(t.pageX,t.pageY);else{const i=this._getSecondPointerPosition(t),o=.5*(t.pageX+i.x),n=.5*(t.pageY+i.y);this._rotateEnd.set(o,n)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(f*this._rotateDelta.x/e.clientHeight),this._rotateUp(f*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(this._pointers.length===1)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._panEnd.set(i,o)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,o=t.pageY-e.y,n=Math.sqrt(i*i+o*o);this._dollyEnd.set(0,n),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const r=(t.pageX+e.x)*.5,l=(t.pageY+e.y)*.5;this._updateZoomParameters(r,l)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;eMath.min(e,Math.max(t,s)),tt=(s,t,e,i,o=1)=>{if(typeof s!="number"||Number.isNaN(s))return t;const n=Math.round(s/o)*o;return xe(n,e,i)};function Ot(s){const t=new Jt(16777215,.65);s.add(t);const e=new te(16777215,1.1);e.position.set(20,50,20),e.castShadow=!0,e.shadow.mapSize.width=2048,e.shadow.mapSize.height=2048,s.add(e);const i=new Dt(3900150,1.1,50);i.position.set(-10,10,-10),s.add(i);const o=new Dt(16743001,.9,50);o.position.set(10,-10,10),s.add(o)}function Re(s){if(Array.isArray(s)){s.forEach(t=>t.dispose());return}s.dispose()}function Lt(s){s.traverse(t=>{const e=t;e.geometry&&e.geometry.dispose(),e.material&&Re(e.material)})}function Le({config:s,onComplete:t,onProgress:e,theme:i,className:o}){const n=s.params??{},r=tt(n.gridSize,24,12,80,1),l=tt(n.majorRadius,8,4,10,.5),m=tt(n.minorRadius,3,1,5,.25),[c,st]=b.useState(r),[v,jt]=b.useState({layout:"landscape",width:0,height:0}),it=b.useRef(null),ot=b.useRef(null),W=b.useRef(!1);b.useEffect(()=>{const y=it.current;if(!y)return;const T=()=>{const L=y.clientWidth,_=y.clientHeight;if(!L||!_)return;const d=L>=_?"landscape":"portrait";let p=L,N=_;d==="landscape"?(N=Math.min(_,L*(9/16)),p=N*(16/9)):(p=Math.min(L,_/2),N=p*2),jt({layout:d,width:p,height:N})},M=new ResizeObserver(T);return M.observe(y),T(),()=>{M.disconnect()}},[]),b.useEffect(()=>{st(r),W.current=!1},[s.id,r,l,m]);const at=b.useMemo(()=>Math.max(Se,(l+m+1.5)*2),[l,m]),S=b.useMemo(()=>at/c,[at,c]);b.useEffect(()=>{e?.(c===r?0:100)},[r,e,c]),b.useEffect(()=>{c===r||W.current||(W.current=!0,t({success:!0,score:100,data:{configId:s.id,completedAt:new Date().toISOString(),params:{gridSize:c,majorRadius:l,minorRadius:m}}}))},[s.id,r,l,m,t,c]),b.useEffect(()=>{const y=ot.current;if(!y)return;const T=new gt,M=new gt,L=new Et(J);T.background=L,T.fog=new wt(J,.02),M.background=L,M.fog=new wt(J,.02),Ot(T),Ot(M);const _=new Xt(45,1,.1,1e3);_.position.copy(xt);const d=new Vt({antialias:!0,alpha:!0});d.shadowMap.enabled=!0,d.shadowMap.type=Wt,d.setPixelRatio(Math.min(window.devicePixelRatio,2)),d.setScissorTest(!0),y.appendChild(d.domElement);const p=new se(_,d.domElement);p.enableDamping=!0,p.dampingFactor=.05,p.minDistance=5,p.maxDistance=100,p.target.copy(Rt);const N=new qt(l,m,64,128),Nt=new Pt({color:3900150,roughness:.22,metalness:.1}),Z=new Gt(N,Nt);Z.castShadow=!0,Z.receiveShadow=!0,Z.rotation.x=-Math.PI/2,T.add(Z);const kt=S*.12,q=Math.max(S-kt,S*.2),nt=new Bt(q,q,q),zt=new Pt({color:3900150,roughness:.22,metalness:.1}),It=new Qt({color:0,transparent:!0,opacity:.08,wireframe:!0}),rt=Math.pow(c,3),D=new Mt(nt,zt,rt),k=new Mt(nt,It,rt),G=(c-1)*S/2,K=new $t;D.castShadow=!0,D.receiveShadow=!0,M.add(D),M.add(k);let F=0,B=0;for(let O=0;O{x=y.clientWidth,R=y.clientHeight,!(!x||!R)&&(_.aspect=1,_.updateProjectionMatrix(),d.setSize(x,R,!1))},dt=new ResizeObserver(ct);dt.observe(y),ct();const pt=()=>{X=!1,z!==null&&(window.clearTimeout(z),z=null)},ut=()=>{z=window.setTimeout(()=>{X=!0},Te)};p.addEventListener("start",pt),p.addEventListener("end",ut);let mt=0;const _t=()=>{if(mt=window.requestAnimationFrame(_t),X&&(_.position.lerp(ht,.05),p.target.lerp(lt,.05),_.position.distanceTo(ht)<.1&&p.target.distanceTo(lt)<.1&&(X=!1)),Z.rotation.z+=.002,D.rotation.y+=.002,k.rotation.y+=.002,k.visible=!1,p.update(),!x||!R)return;const O=x>=R,u=O?Math.min(x/2,R):Math.min(x,R/2),C=O?(x-u*2)/2:(x-u)/2,j=O?(R-u)/2:(R-u*2)/2,A=C,I=O?j:j+u,H=O?C+u:C,Q=j;d.setScissor(A,I,u,u),d.setViewport(A,I,u,u),d.render(T,_),d.setScissor(H,Q,u,u),d.setViewport(H,Q,u,u),d.render(M,_)};return _t(),()=>{window.cancelAnimationFrame(mt),z!==null&&window.clearTimeout(z),dt.disconnect(),p.removeEventListener("start",pt),p.removeEventListener("end",ut),p.dispose(),d.dispose(),Lt(T),Lt(M),y.removeChild(d.domElement)}},[l,m,c,S]);const At=b.useMemo(()=>({"--gc-primary":i?.primary??"var(--color-primary, #45c4b0)","--gc-accent":i?.accent??"var(--color-accent, #ff7a59)","--gc-bg":i?.bg??"var(--color-bg, #0d1117)","--gc-bg-secondary":i?.bgSecondary??"var(--color-bg-secondary, #182237)","--gc-text":i?.text??"var(--color-text, #f1f4ef)","--gc-text-muted":i?.textMuted??"var(--color-text-muted, #b6c0d4)","--gc-border":i?.border??"var(--color-border, #34516f)"}),[i]),vt=y=>{st(Number(y.target.value))};return w.jsx("div",{className:[P.wrapper,o].filter(Boolean).join(" "),style:At,ref:it,children:w.jsxs("div",{className:P.canvasShell,"data-layout":v.layout,style:{width:v.width?`${v.width}px`:void 0,height:v.height?`${v.height}px`:void 0},children:[w.jsx("div",{className:P.canvas,ref:ot}),w.jsxs("div",{className:P.viewportLabels,"data-layout":v.layout,children:[w.jsx("div",{className:P.splitLabel,children:"Continuous"}),w.jsx("div",{className:P.splitLabel,children:"Discrete"})]}),w.jsx("div",{className:P.controlOverlay,children:w.jsx("label",{className:P.resolutionCard,children:w.jsxs("span",{className:P.resolutionControl,children:[w.jsx("input",{className:P.slider,type:"range",min:"12",max:"80",step:"1",value:c,onChange:vt}),w.jsxs("span",{className:P.sliderValue,children:[S.toFixed(2),"u"]})]})})})]})})}const Ce={name:"voxel_universe",displayName:"Voxel Universe",version:"1.0.0",paramSchema:{gridSize:{type:"range",label:"Voxel Resolution",description:"How many voxels are used per axis. Higher values make each voxel smaller.",default:24,min:12,max:80,step:1},majorRadius:{type:"range",label:"Major Radius",description:"Overall radius of the torus shape.",default:8,min:4,max:10,step:.5},minorRadius:{type:"range",label:"Minor Radius",description:"Thickness of the torus ring.",default:3,min:1,max:5,step:.25}},defaultParams:{gridSize:24,majorRadius:8,minorRadius:3}};export{Le as default,Ce as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-MgCr_Urj.js b/public/glitch/glitch_gallery/assets/index-MgCr_Urj.js new file mode 100644 index 0000000..ee925a2 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-MgCr_Urj.js @@ -0,0 +1 @@ +import{r as c,j as s}from"./index-CEeZxcxj.js";const w="_wrapper_61dhl_1",k="_frame_61dhl_15",v="_scan_61dhl_30",S="_stack_61dhl_47",B="_meta_61dhl_57",$="_progressTrack_61dhl_68",C="_progressFill_61dhl_77",E="_slide_61dhl_87",G="_title_61dhl_95",L="_rgbGlitch_61dhl_105",F="_rgbBase_61dhl_110",R="_rgbLayer_61dhl_116",Y="_layerR_61dhl_124",I="_layerG_61dhl_129",P="_layerB_61dhl_134",W="_content_61dhl_139",M="_line_61dhl_148",A="_spacer_61dhl_153",D="_list_61dhl_158",H="_warning_61dhl_166",O="_cta_61dhl_176",q="_controls_61dhl_195",U="_navButton_61dhl_201",e={wrapper:w,frame:k,scan:v,stack:S,meta:B,progressTrack:$,progressFill:C,slide:E,title:G,rgbGlitch:L,rgbBase:F,rgbLayer:R,layerR:Y,layerG:I,layerB:P,content:W,line:M,spacer:A,list:D,warning:H,cta:O,controls:q,navButton:U},z=40,i=[{title:"The Premise",lines:["This facility tests foundational assumptions.","","Not interpretations.","Assumptions."]},{title:"The method",lines:["This is math and philosophy.","Make assumption.","Pretend it's true.","Where does that lead?"]},{title:"The law",lines:["We make predictions.","If they fail, the idea fails."]},{title:"The way",lines:["You will:"],bullets:["Pass challenges","Collect paradoxes","Examine anomalies","Learn to think sharply"]},{title:"Warning",lines:["You may feel:"],bullets:["This is not a game!","Temporary confusion","The urge to defend existing physics!"],bulletStyle:"warning",after:"Good. This is not for everyone."},{title:"How This Works",lines:["Watch a short module","Pass the glitch gate","Unlock the next tech","That's it. For now."]},{title:"Proceed",lines:["You may proceed as an investigator.","Begin at the intersection","Get briefed"],cta:"[ ENTER FACILITY ]"}];function K({config:h,onComplete:u,onProgress:_,theme:n,className:p}){const[l,g]=c.useState(0),o=c.useRef(null),y=c.useMemo(()=>n?{"--gc-primary":n.primary,"--gc-accent":n.accent,"--gc-bg":n.bg,"--gc-bg-secondary":n.bgSecondary,"--gc-text":n.text,"--gc-text-muted":n.textMuted,"--gc-border":n.border}:{},[n]);c.useEffect(()=>{const t=(l+1)/i.length*100;_?.(Math.round(t))},[l,_]);const d=c.useCallback(t=>{if(t>0&&l===i.length-1){g(0);return}const r=l+t;r<0||r>=i.length||g(r)},[l]),b=c.useCallback(t=>{o.current=t.changedTouches[0]?.clientY??null},[]),x=c.useCallback(t=>{if(o.current==null)return;const r=t.changedTouches[0]?.clientY??o.current,m=o.current-r;Math.abs(m)>z&&d(m>0?1:-1),o.current=null},[d]),f=c.useCallback(()=>{u({success:!0,score:100,data:{sequence:"facility-slideshow",configId:h.id,completedAt:new Date().toISOString()}})},[h.id,u]),a=i[l],j=l===i.length-1,N=(l+1)/i.length*100,T=p?`${e.wrapper} ${p}`:e.wrapper;return s.jsx("div",{className:T,style:y,children:s.jsxs("section",{className:e.frame,"aria-label":"Facility onboarding slideshow",onTouchStart:b,onTouchEnd:x,children:[s.jsx("div",{className:e.scan,"aria-hidden":"true"}),s.jsxs("div",{className:e.stack,children:[s.jsxs("header",{children:[s.jsxs("div",{className:e.meta,children:[s.jsx("span",{children:"Glitch Facility"}),s.jsxs("span",{children:[l+1," / ",i.length]})]}),s.jsx("div",{className:e.progressTrack,children:s.jsx("div",{className:e.progressFill,style:{width:`${N}%`}})})]}),s.jsxs("article",{className:e.slide,"aria-live":"polite",children:[s.jsx("h2",{className:e.title,children:s.jsxs("span",{className:e.rgbGlitch,children:[s.jsx("span",{className:e.rgbBase,children:a.title}),s.jsx("span",{className:`${e.rgbLayer} ${e.layerR}`,"aria-hidden":"true",children:a.title}),s.jsx("span",{className:`${e.rgbLayer} ${e.layerG}`,"aria-hidden":"true",children:a.title}),s.jsx("span",{className:`${e.rgbLayer} ${e.layerB}`,"aria-hidden":"true",children:a.title})]})}),s.jsxs("div",{className:e.content,children:[a.lines.map((t,r)=>t===""?s.jsx("p",{className:e.spacer,"aria-hidden":"true"},`line-${r}`):s.jsx("p",{className:e.line,children:t},`line-${r}`)),a.bullets&&s.jsx("ul",{className:`${e.list} ${a.bulletStyle==="warning"?e.warning:""}`,children:a.bullets.map(t=>s.jsx("li",{children:t},t))}),a.after&&s.jsx("p",{className:e.line,children:a.after}),a.cta&&s.jsx("button",{type:"button",className:e.cta,onClick:f,children:a.cta})]})]}),s.jsxs("nav",{className:e.controls,"aria-label":"Slideshow controls",children:[s.jsx("button",{type:"button",className:e.navButton,onClick:()=>d(-1),disabled:l===0,children:"Previous"}),s.jsx("button",{type:"button",className:e.navButton,onClick:()=>d(1),children:j?"Restart":"Next"})]})]})]})})}const Q={name:"onboarding2",displayName:"Facility Slideshow",version:"1.0.0",paramSchema:{},defaultParams:{}};export{K as default,Q as metadata}; diff --git a/public/glitch/glitch_gallery/assets/index-WVFKiT6G.css b/public/glitch/glitch_gallery/assets/index-WVFKiT6G.css new file mode 100644 index 0000000..5cb8dd1 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-WVFKiT6G.css @@ -0,0 +1 @@ +._container_166qm_3{--component-font-main: var(--font-main, system-ui, sans-serif);--component-font-display: var(--font-display, var(--component-font-main));--component-font-mono: var(--font-mono, monospace);background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:var(--component-font-main);line-height:1.6;max-width:640px;margin:0 auto;padding:1rem}._container_166qm_3 *,._container_166qm_3 *:before,._container_166qm_3 *:after{box-sizing:inherit}._panel_166qm_21{animation:_fadeIn_166qm_1 .3s ease;background:var(--gc-bg-secondary, #12121a);border:4px solid var(--gc-border, #2a2a3a);border-radius:4px;box-shadow:0 0 0 2px var(--gc-bg, #0a0a0f),0 0 20px #6366f126,inset 0 0 60px #00000080}@keyframes _fadeIn_166qm_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}._imageFrame_166qm_38{width:100%;min-height:100%;object-fit:contain;aspect-ratio:16 / 9;background:#000;border-bottom:4px solid var(--gc-border, #2a2a3a);overflow:hidden;position:relative}._imageFrame_166qm_38:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.4) 0%,transparent 20%,transparent 80%,rgba(0,0,0,.2) 100%);pointer-events:none}._sceneImage_166qm_63{width:100%;height:100%;object-fit:contain;image-rendering:auto}._sceneFallback_166qm_70{--scene-accent: var(--gc-primary, #6366f1);--scene-glow: rgb(99 102 241 / 26%);--scene-panel: rgb(8 10 20 / 92%);position:relative;display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:1rem;background:radial-gradient(circle at 20% 18%,var(--scene-glow),transparent 34%),linear-gradient(145deg,#080a14f5,#05060cf5);overflow:hidden}._sceneFallback_166qm_70[data-tone=danger]{--scene-accent: #ef4444;--scene-glow: rgb(239 68 68 / 22%)}._sceneFallback_166qm_70[data-tone=accent]{--scene-accent: var(--gc-accent, #22d3ee);--scene-glow: rgb(34 211 238 / 20%)}._sceneFallback_166qm_70[data-tone=success]{--scene-accent: #22c55e;--scene-glow: rgb(34 197 94 / 20%)}._sceneFallbackGlow_166qm_102{position:absolute;inset:12% auto auto 8%;width:40%;aspect-ratio:1;border-radius:999px;background:radial-gradient(circle,var(--scene-glow),transparent 70%);filter:blur(8px);pointer-events:none}._sceneFallbackHud_166qm_113{position:relative;display:flex;justify-content:space-between;gap:.75rem;align-items:center;z-index:1}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{border:1px solid color-mix(in srgb,var(--scene-accent) 55%,transparent);background:color-mix(in srgb,var(--scene-panel) 88%,transparent);color:color-mix(in srgb,var(--scene-accent) 86%,white);padding:.35rem .55rem;text-transform:uppercase;letter-spacing:.14em;font-family:var(--component-font-mono);font-size:.66rem}._sceneFallbackSignal_166qm_123{opacity:.85}._sceneFallbackCopy_166qm_138{position:relative;z-index:1;display:grid;gap:.45rem;max-width:28rem}._sceneFallbackKicker_166qm_146{margin:0;color:color-mix(in srgb,var(--scene-accent) 78%,white);font-family:var(--component-font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}._sceneFallbackTitle_166qm_155{margin:0;color:#fff;font-family:var(--component-font-display);font-size:clamp(1.3rem,2.8vw,2rem);line-height:1.05;text-transform:uppercase}._sceneFallbackDetail_166qm_164{margin:0;color:#e8e8ecc2;font-size:.88rem;max-width:32ch}._sceneFallbackBars_166qm_171{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;align-items:end}._sceneFallbackBars_166qm_171 span{height:.35rem;border-radius:999px;background:linear-gradient(90deg,var(--scene-accent),color-mix(in srgb,var(--scene-accent) 18%,transparent));opacity:.9}._sceneFallbackBars_166qm_171 span:nth-child(2){width:82%}._sceneFallbackBars_166qm_171 span:nth-child(3){width:64%}._dialogueBox_166qm_196{padding:1.5rem;position:relative}._dialogueBox_166qm_196:before{content:"";position:absolute;top:0;left:1rem;right:1rem;height:1px;background:linear-gradient(90deg,transparent,var(--gc-primary, #6366f1) 20%,var(--gc-primary, #6366f1) 80%,transparent)}._dialogueHeader_166qm_217{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}._title_166qm_224{color:var(--gc-primary, #6366f1);font-family:var(--component-font-display);margin:0;font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 10px rgba(99,102,241,.5)}._loopBadge_166qm_235{background:#ef444433;color:#ef4444;padding:.25rem .75rem;border:2px solid #ef4444;border-radius:2px;font-family:var(--component-font-mono);font-size:.75rem;font-weight:700;letter-spacing:.1em;animation:_loopPulse_166qm_1 1.5s ease-in-out infinite}@keyframes _loopPulse_166qm_1{0%,to{opacity:1}50%{opacity:.6}}._description_166qm_253{color:var(--gc-text-muted, #9999a8);margin:0 0 1.25rem;font-size:.95rem;line-height:1.7}._actionButton_166qm_261{background:linear-gradient(180deg,#4f46e5,#3730a3);color:#fff;border:2px solid #6366f1;padding:.875rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #1e1b4b,0 6px 10px #0000004d;position:relative;top:0}._actionButton_166qm_261:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #1e1b4b,0 8px 15px #0000004d}._actionButton_166qm_261:active{top:4px;box-shadow:0 0 #1e1b4b,0 2px 5px #0000004d}._choices_166qm_296{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}._choiceButton_166qm_303{background:var(--gc-bg, #0a0a0f);border:2px solid var(--gc-border, #2a2a3a);padding:1rem;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;gap:1rem;position:relative;overflow:hidden}._choiceButton_166qm_303:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gc-primary, #6366f1);opacity:0;transition:opacity .15s ease}._choiceButton_166qm_303:hover{border-color:var(--gc-primary, #6366f1);background:#6366f114}._choiceButton_166qm_303:hover:before{opacity:1}._choiceKey_166qm_337{width:2.5rem;height:2.5rem;background:linear-gradient(180deg,#374151,#1f2937);border:2px solid #4b5563;border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--component-font-mono);font-size:1.25rem;font-weight:700;color:#e5e7eb;flex-shrink:0;box-shadow:0 3px #111827,inset 0 1px #ffffff1a;text-shadow:0 1px 2px rgba(0,0,0,.5)}._choiceButton_166qm_303:hover ._choiceKey_166qm_337{background:linear-gradient(180deg,#4f46e5,#3730a3);border-color:#6366f1;box-shadow:0 3px #1e1b4b,inset 0 1px #ffffff26,0 0 10px #6366f14d}._choiceContent_166qm_366{display:flex;flex-direction:column;gap:.25rem;text-align:left}._choiceTitle_166qm_373{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-weight:700;font-size:1rem}._choiceDesc_166qm_380{color:var(--gc-text-muted, #9999a8);font-size:.8rem;font-style:italic}._rejection_166qm_387{background:#ef444414;border:2px solid rgba(239,68,68,.4);padding:1.25rem;margin-bottom:1.25rem;position:relative}._rejectionBadge_166qm_395{display:inline-block;background:#dc2626;color:#fff;padding:.25rem .75rem;font-family:var(--component-font-mono);font-size:.8rem;font-weight:700;letter-spacing:.15em;margin-bottom:1rem;animation:_shake_166qm_1 .5s ease-in-out}@keyframes _shake_166qm_1{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}._quote_166qm_416{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-size:1.1rem;font-weight:700;margin:0 0 .75rem;padding-left:1rem;border-left:3px solid #ef4444}._explanation_166qm_426{color:var(--gc-text-muted, #9999a8);margin:0;font-size:.9rem;padding-left:1rem;border-left:3px solid transparent}._insightButton_166qm_435{background:transparent;border:2px dashed var(--gc-accent, #22d3ee);color:var(--gc-accent, #22d3ee);padding:.75rem 1rem;font-family:var(--component-font-display);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:1rem;width:100%;animation:_glowPulse_166qm_1 2s ease-in-out infinite}@keyframes _glowPulse_166qm_1{0%,to{box-shadow:0 0 5px #22d3ee4d}50%{box-shadow:0 0 15px #22d3ee80}}._insightButton_166qm_435:hover{background:#22d3ee1a;border-style:solid}._insight_166qm_435{text-align:center}._insightTitle_166qm_465{color:var(--gc-accent, #22d3ee);margin:0 0 1.5rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-shadow:0 0 15px rgba(34,211,238,.5)}._paradoxDiagram_166qm_474{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1.5rem;padding:1rem;background:#0006;border:1px solid var(--gc-border, #2a2a3a)}._paradoxNode_166qm_486{background:var(--gc-bg, #0a0a0f);border:1px solid var(--gc-border, #2a2a3a);padding:.4rem .6rem;font-family:var(--component-font-mono);font-size:.7rem;color:var(--gc-text-muted, #9999a8)}._paradoxArrow_166qm_495{color:var(--gc-primary, #6366f1);font-size:1rem;font-weight:700}._paradoxLoop_166qm_501{color:var(--gc-accent, #22d3ee);font-size:1.5rem;margin-left:.5rem;animation:_spin_166qm_1 3s linear infinite}@keyframes _spin_166qm_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._insightText_166qm_513{color:var(--gc-text, #e8e8ec);margin:0 0 1rem;font-size:.9rem;line-height:1.7;text-align:left}._insightText_166qm_513:last-of-type{margin-bottom:0}._insightText_166qm_513 strong{color:var(--gc-accent, #22d3ee)}._completeButton_166qm_530{background:linear-gradient(180deg,#059669,#047857);color:#fff;border:2px solid #10b981;padding:1rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;margin-top:1.5rem;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #064e3b,0 6px 10px #0000004d;position:relative;top:0}._completeButton_166qm_530:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #064e3b,0 8px 15px #0000004d}._completeButton_166qm_530:active{top:4px;box-shadow:0 0 #064e3b,0 2px 5px #0000004d}._successBox_166qm_566{text-align:center}._successTitle_166qm_570{color:#22c55e;margin:0 0 1rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 15px rgba(34,197,94,.5)}._stats_166qm_581{color:var(--gc-text-muted, #9999a8);margin:0 0 1.5rem;font-size:.9rem}._scoreDisplay_166qm_587{background:#0006;border:2px solid var(--gc-accent, #22d3ee);padding:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}._scoreLabel_166qm_597{color:var(--gc-text-muted, #9999a8);font-family:var(--component-font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.2em}._scoreValue_166qm_605{color:var(--gc-accent, #22d3ee);font-size:3rem;font-weight:700;text-shadow:0 0 20px rgba(34,211,238,.5)}@media(max-width:480px){._container_166qm_3{padding:.5rem}._dialogueBox_166qm_196{padding:1rem}._title_166qm_224{font-size:1.1rem}._choiceKey_166qm_337{width:2rem;height:2rem;font-size:1rem}._paradoxDiagram_166qm_474{gap:.25rem;padding:.75rem}._paradoxNode_166qm_486{font-size:.6rem;padding:.3rem .5rem}._sceneFallback_166qm_70{padding:.85rem}._sceneFallbackHud_166qm_113{gap:.5rem}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{font-size:.58rem;padding:.3rem .45rem}._sceneFallbackTitle_166qm_155{font-size:1.1rem}._sceneFallbackDetail_166qm_164{font-size:.78rem}} diff --git a/public/glitch/glitch_gallery/assets/index-hWn6tbl7.css b/public/glitch/glitch_gallery/assets/index-hWn6tbl7.css new file mode 100644 index 0000000..5b74a39 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-hWn6tbl7.css @@ -0,0 +1 @@ +._container_18jex_3{width:100%;height:100vh;background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden}._grid_18jex_18{position:absolute;inset:0;background-image:linear-gradient(rgba(99,102,241,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.03) 1px,transparent 1px);background-size:40px 40px;opacity:.5;animation:_gridPulse_18jex_1 4s ease-in-out infinite}@keyframes _gridPulse_18jex_1{0%,to{opacity:.3}50%{opacity:.6}}._textBlock_18jex_34{max-width:600px;text-align:center;z-index:10;padding:2rem}._mainText_18jex_41{font-size:1.25rem;line-height:1.8;color:var(--gc-text, #e8e8ec);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards}._mainText_18jex_41._delayed_18jex_50{animation-delay:2s}._questionText_18jex_54{font-size:1.1rem;color:var(--gc-textMuted, #9999a8);font-style:italic;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:3.5s}._sphere_18jex_63{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(99,102,241,.3),rgba(34,211,238,.1) 50%,transparent 70%);border:1px solid rgba(99,102,241,.3);margin:2rem auto;position:relative;animation:_sphereFloat_18jex_1 3s ease-in-out infinite}@keyframes _sphereFloat_18jex_1{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}._sphere_18jex_63._glitching_18jex_82{animation:_sphereGlitch_18jex_1 .15s steps(2) forwards}@keyframes _sphereGlitch_18jex_1{0%{border-radius:50%;filter:none}25%{border-radius:10%;filter:hue-rotate(90deg);transform:scale(1.1) skew(5deg)}50%{border-radius:5%;filter:hue-rotate(180deg) saturate(2);transform:scale(.9) skew(-5deg)}75%{border-radius:20%;filter:hue-rotate(270deg);transform:scale(1.05)}to{border-radius:50%;filter:none;transform:scale(1)}}._voxelOverlay_18jex_113{position:absolute;inset:0;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(6,1fr);opacity:0}._voxelOverlay_18jex_113._visible_18jex_122{opacity:1;animation:_voxelFlash_18jex_1 .15s steps(1) forwards}._voxel_18jex_113{background:var(--gc-primary, #6366f1);opacity:.8}@keyframes _voxelFlash_18jex_1{0%{opacity:1}to{opacity:0}}._rebelText_18jex_137{font-size:.95rem;color:var(--gc-accent, #22d3ee);margin-top:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:5s}._enterButton_18jex_146{margin-top:3rem;padding:1rem 2.5rem;background:transparent;border:1px solid var(--gc-primary, #6366f1);color:var(--gc-primary, #6366f1);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:6.5s;transition:all .3s ease}._enterButton_18jex_146:hover{background:var(--gc-primary, #6366f1);color:var(--gc-bg, #0a0a0f);box-shadow:0 0 20px #6366f166}._migrationContent_18jex_168{max-width:650px;text-align:center;z-index:10;padding:2rem}._tagline_18jex_175{font-size:1.4rem;color:var(--gc-accent, #22d3ee);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._notList_18jex_183{list-style:none;padding:0;margin:0 0 2rem;text-align:left}._notItem_18jex_190{font-size:1rem;color:var(--gc-textMuted, #9999a8);padding:.5rem 0 .5rem 2rem;position:relative;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._notItem_18jex_190:before{content:"×";position:absolute;left:0;color:#ef4444b3;font-weight:700}._notItem_18jex_190:nth-child(1){animation-delay:.5s}._notItem_18jex_190:nth-child(2){animation-delay:.8s}._notItem_18jex_190:nth-child(3){animation-delay:1.1s}._isText_18jex_212{font-size:1.1rem;color:var(--gc-text, #e8e8ec);margin:2rem 0;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1.8s}._ruleBox_18jex_221{border:1px solid var(--gc-border, #2a2a3a);padding:1.5rem;margin:2rem 0;text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:2.5s}._ruleTitle_18jex_231{font-size:.85rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem;letter-spacing:.1em}._ruleContent_18jex_238{font-size:1rem;color:var(--gc-text, #e8e8ec);line-height:1.6}._continueButton_18jex_244{margin-top:2rem;padding:.8rem 2rem;background:transparent;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-textMuted, #9999a8);font-family:Courier New,monospace;font-size:.9rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards;animation-delay:3.2s;transition:all .3s ease}._continueButton_18jex_244:hover{border-color:var(--gc-primary, #6366f1);color:var(--gc-text, #e8e8ec)}._agreementContent_18jex_265{max-width:550px;text-align:center;z-index:10;padding:2rem}._agreementTitle_18jex_272{font-size:1.2rem;color:var(--gc-textMuted, #9999a8);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._pledgeText_18jex_280{font-size:1.5rem;color:var(--gc-text, #e8e8ec);font-style:italic;margin:2rem 0;padding:1.5rem;border-left:2px solid var(--gc-primary, #6366f1);text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:.5s}._signatureArea_18jex_293{margin:3rem 0;position:relative;height:120px;display:flex;align-items:center;justify-content:center}._paper_18jex_302{width:200px;height:100px;background:#ffffff08;border:1px solid var(--gc-border, #2a2a3a);position:relative;display:flex;align-items:center;justify-content:center}._signatureMark_18jex_313{font-size:4rem;color:var(--gc-primary, #6366f1);opacity:0;transform:scale(0)}._signatureMark_18jex_313._visible_18jex_122{animation:_drawX_18jex_1 .8s ease forwards}@keyframes _drawX_18jex_1{0%{opacity:0;transform:scale(0) rotate(-45deg)}50%{opacity:1;transform:scale(1.2) rotate(0)}to{opacity:1;transform:scale(1) rotate(0)}}._pencil_18jex_339{position:absolute;font-size:2rem;opacity:0;transform:translate(80px,-60px) rotate(-45deg)}._pencil_18jex_339._animating_18jex_346{animation:_pencilDraw_18jex_1 .8s ease forwards}@keyframes _pencilDraw_18jex_1{0%{opacity:1;transform:translate(80px,-60px) rotate(-45deg)}50%{opacity:1;transform:translate(0) rotate(-45deg)}to{opacity:0;transform:translate(-80px,60px) rotate(-45deg)}}._signButton_18jex_365{padding:1rem 2.5rem;background:var(--gc-primary, #6366f1);border:none;color:var(--gc-bg, #0a0a0f);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1s}._signButton_18jex_365:hover{box-shadow:0 0 25px #6366f180;transform:translateY(-2px)}._signButton_18jex_365:disabled{opacity:.5;cursor:not-allowed}._navigationContent_18jex_390{max-width:600px;text-align:center;z-index:10;padding:2rem}._welcomeText_18jex_397{font-size:1rem;color:var(--gc-textMuted, #9999a8);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._choiceButtons_18jex_405{display:flex;flex-direction:column;gap:1.5rem}._choiceButton_18jex_405{padding:1.5rem 2rem;background:#6366f10d;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;text-align:left;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._choiceButton_18jex_405:nth-child(1){animation-delay:.5s}._choiceButton_18jex_405:nth-child(2){animation-delay:.8s}._choiceButton_18jex_405:hover{border-color:var(--gc-primary, #6366f1);background:#6366f11a;transform:translate(5px)}._choiceTitle_18jex_434{font-size:1.1rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem}._choiceDesc_18jex_440{font-size:.85rem;color:var(--gc-textMuted, #9999a8)}._arrow_18jex_445{float:right;color:var(--gc-primary, #6366f1)}@keyframes _fadeInUp_18jex_1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}._screenFadeIn_18jex_463{animation:_screenEnter_18jex_1 .6s ease forwards}@keyframes _screenEnter_18jex_1{0%{opacity:0}to{opacity:1}} diff --git a/public/glitch/glitch_gallery/assets/index-mpZwhQDb.css b/public/glitch/glitch_gallery/assets/index-mpZwhQDb.css new file mode 100644 index 0000000..9f98957 --- /dev/null +++ b/public/glitch/glitch_gallery/assets/index-mpZwhQDb.css @@ -0,0 +1 @@ +._wrapper_1xs2z_1{--gc-paper: #f2f0ea;box-sizing:border-box;width:100%;height:100%;min-height:100%;margin:0;padding:0;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:24px;background:radial-gradient(circle at 12% 8%,color-mix(in srgb,var(--gc-primary, #45c4b0) 16%,transparent),transparent 34%),radial-gradient(circle at 88% 10%,color-mix(in srgb,var(--gc-accent, #ff7a59) 14%,transparent),transparent 28%),linear-gradient(160deg,var(--gc-bg, #0d1117),var(--gc-bg-secondary, #182237));color:var(--gc-text, #f1f4ef);box-shadow:0 24px 64px #00000047;display:grid;place-items:center}._wrapper_1xs2z_1,._wrapper_1xs2z_1 *,._wrapper_1xs2z_1 *:before,._wrapper_1xs2z_1 *:after{box-sizing:inherit}._canvasShell_1xs2z_28{position:relative;overflow:hidden;flex:none;border:1px solid rgb(0 0 0 / 22%);background:var(--gc-paper, #f2f0ea);box-shadow:inset 0 0 0 1px #ffffff1f}._canvas_1xs2z_28{width:100%;height:100%}._canvas_1xs2z_28 canvas{display:block;width:100%;height:100%}._viewportLabels_1xs2z_48{position:absolute;inset:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));pointer-events:none}._viewportLabels_1xs2z_48[data-layout=portrait]{grid-template-columns:1fr;grid-template-rows:repeat(2,minmax(0,1fr))}._splitLabel_1xs2z_61{display:grid;place-items:center;color:#111827d1;font-size:clamp(1.15rem,2.7vw,2.1rem);font-weight:700;font-family:IBM Plex Sans Condensed,Avenir Next Condensed,sans-serif;text-transform:uppercase;letter-spacing:.34em;text-shadow:0 2px 12px rgb(255 255 255 / 42%)}._controlOverlay_1xs2z_73{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:center;pointer-events:none}._resolutionCard_1xs2z_83{pointer-events:auto;display:flex;align-items:center;justify-content:center;width:min(100%,26rem);padding:.75rem .9rem;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:16px;background:#070f199e;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 30px #0000002e}._resolutionControl_1xs2z_97{display:flex;align-items:center;gap:.85rem;width:100%;min-width:0}._slider_1xs2z_105{width:100%;accent-color:var(--gc-primary, #45c4b0);cursor:pointer}._sliderValue_1xs2z_111{min-width:3.75rem;text-align:right;font-family:IBM Plex Mono,JetBrains Mono,monospace;font-size:.95rem}@media(max-width:900px){._resolutionControl_1xs2z_97{min-width:0}}@media(max-width:720px){._wrapper_1xs2z_1{padding:0}._splitLabel_1xs2z_61{font-size:clamp(.95rem,5vw,1.4rem);letter-spacing:.24em}._controlOverlay_1xs2z_73{right:0rem;bottom:0rem;left:0rem}} diff --git a/public/glitch/glitch_gallery/assets/technoborder-4brzcuN1.png b/public/glitch/glitch_gallery/assets/technoborder-4brzcuN1.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd7f4af423ba286c4e4196a3dedd8b6e6986b8c GIT binary patch literal 846039 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Μ#CKYMQ=78-f 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

    `1_ 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

    ?LgzuWz)2%{-x-^3oWO_{UtMK6^ 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%0A0`nK^zNP1@J0G12AASSw16=8|ibJShb; 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 z z?~9b4GHk@QnEh9bFuIdX)SCeU;XVQ_bTt$YBrkOOQdvGsQ2*SGdB7V13?fwi_cAMR z89^^pg%`$buMN;WCxeW@8SS^W&PPf$@2yw&<=nana(glH?bR3)2XkN+N)`Ula4cNP zu)XE(7{}PRXyA@Z3?28ar+G5pt7iIGr?}cyY8Zyg_WRXJSYtE^H(*qjyf^z75dsfM znZD_f4*saYFSOubJ-F?Q8Vs0jYZlE}IuEw>Y-uTQW-tC|e13y8`FtGZTS7O_;DPbk z*4aHU=t+em#v=CXR}Ur|u@Pu->%Ynvz$$jTr0~D{SZni2&O26=jJKotkxbJ+_C9`e zOCv}KWLh}4@*qJ?u!}sgOM}8Mi%_H4LhgO_$@iu^^h{|NzSb7(JLv80=cp=7i{Y;a zYE{Dr)Jn?Ps?zLslWvo(i%pv?Kf!4ti!w=;4?COuqRk>wpV_sHQINQYs#V-m29sdR zJq@x<>ZjqW3JA5}Pk7zlp(Bvd^qRU3ejIMIZ%vbiC_-E~2Mxy8oDhRZ3eR3(lD`ykaL?C8 zmgH4C+X)Sx%HvzAQ7|iz2xgj5PbYP!n|qY?g+%ff*BYJdU^g6B5~PTo|5F{CK@r}d z{=|p4vaviBcYt_LJUPlsF=JD+!0+1p5Sx(E1MSo~>|(4-_s!BU>h0EFJIvHJ>aAuV zs{fBfWlui-*lhmY8b$AvRlKdOp4@0dZrUv8QK_1+ji`2``R`UL;s~fQMzSCo@)8j* zVsybJsk%9tMsBqUT~WP@)y~h$d(l*@;wFZca4BTBVyR`T={i)9U&;8;77%Oot$+*W zS$!+djEjJ-cVfQ2^MD40XL_lGeC}QsLN>L_s(>Igoabcgj9M5vHskfd6!b~+qVDjN zdw0k#xsIr{l{PSKs!vJaum%I0M=?#SuCZPkqu{mxRh9?kOWyn$IH|ILtbd83Ls_XCEv|5%O#Qx>D4aIzJ zKig@N(}53|(p^xu3B=P?a=HA4614s7mmWXl{j$zjhdYUd`rPH@?ZKM2^sSSr_r(!D z&6pOmwC}VRWnC(?qe5dYX+?pmS`w~fAY^^2o*P>ku^yq)$-Cw(g%sDqvKXE|!~)Yj zvAV?jY!HY1aS7preX($PirhXI7^&6PV%-?|qm|66RT{}pXt?NP<$|TnZ(9B%r{(^M z%u^v-2i6&F>63cd@B%RnFMrE%L+q%vLOlK=yTnrZJ!iRrHX>^C0 z!XBv*qa)~z)A_qcvAevu(n5L{tIjOiRaZ$32gTEUX0nX{CGrsEX=P7WTlc1chk?^Z z7^BzC3ZaI~C~_dTB8KIRYMh|O6s1HoigC;}w&TO*eR5js6)g^U`!iD1l?}K2`+}ZPzV3}LD81K27p3e0rh+-m)XN%PUh=w9&IbuCmUfqE0qCClwJMPb2^6TKY#zqaQ@yV^6mCaDOOq_{q)?-&4E;) zfYd&LZfRwyuloJCdZ$?!!gWRL6r&O0!i1Z=zDZ!{=$~^Xb&8_; zbxB)AJOC_Y2nhcLDAhjFN_-*2>(AZB7Hp!sNnuK=|0N;2<|%*XPs7W*_@(oJrgvfg zLzKM5i|^RMn93Fm9(+{LSuGYz+nSU9#cNUV!Ax4Db-4fp{3LVEvF)Hf&PoYaHTCLC zy%NaFk;d3GiRhc?2hgpsRwEKCiPQHnx%ir+Tw<4N3`vN8sy?a#vJdBMhREB6 z(qV_Rrc=_3nBAGQ^HhqVyV0=P8yANpa-T*0ay86EVyFZeDMKOmW*X!X`~ikUV&9-) zWRGh$XDyL7Mo3MGEnj0zgq( zZ+vi)`DR#vv@yf-MA@G#V?OtX32fw<0Zh&} zh&OyN(WnRFA-?uQ>{Dm>^2YK!Z8wv2=c{SO=YEDb z>z~`nUPs5C`mHp^f`!CamR^W}Zy~c^n*{=!v(m&1Q|&oh3l)*`6)+5{oHEhYf?$F_ zlVX~}>jPM!gfBJGOURG%e<#sq2$4}ZHFX=cE%Ri;Vn9t^Ra4*3=CNHCydPnVf`CKj z|I)dsL^&CbcBY5@8c1ss52)_(tbVbJ_Tuw3e~w{1je+L!Q)3LYie7$3IG#QH@W7i+ ze7jStixI8Tut z*!g|G!k(~T2_amGrBezOy6d)4nCG7NyY99mY;0_1zt29!fEVgKTlF)h23z{kU(hi_ zmfE=zbM6{H9kcJi0&fIaJ&I1<;8c(%CTP+T5JNM52kO&^fV>^9zLVu6>?rkG)aKEy zPSv@mf1z3CAk`E=2z|@JvSgP^ST>#~Nn2d3t#v`hUie16 zC?(x&^%Qm2;qU<;krNS%E5V;w*+>cQLFQ2>dUs>zf{HJg8 zKbG2bUku1Z9!FKcj|X`YnIOqoiMcbm_0B+*MTU(McSPE>0k*O;m82{7>@EhJmNbf8 z<&atL(2A7b^W@+z8S>$+Fqv5~l@YWwwyvmgZB~=SB7$fOvb{`MvLmXZ!fJ)F*8K## zw@CINFM%HkW5Eg2x1HIga=B()lZksMFSlVz`ujIK8YosjLEY|vbt9Q*0fpao(mt)w zVOu0x+UVQnc@JE!R_*^`GrmD^z5YimwF9ST5Q2vs#ti30Yoo1;qZIL&c+OMH5-bAI z)nj>>cHyYzzvnlZQ!pq%3bDeBLaS_!ptE*hG`=3r@nMf5CC{iM!jKrAM`8Ad#b#L> zbw!~IdSaB<8w$EVfdZeetEq|IFZWjnvZ%p56_}Z*#8}WJ1n515z>b!rZMSAlgS9Hq z@9WJIa8hI%6v&3$C$r8%G#(q+$?ox)bGG$dmy@owrQx?n`0`;Q$dm5 z94Cdnc%Iaq;fr{La8#>Ds6)yi^DSKJ1m!f-GWL(eRcmXF4tKuc$sClNLQ%bV$kHfl zZeZg;{QS{ky($OImWNhG;j86n zB$k$Yo6vjVY;dQFruWS+9Qp+7bp5HB4E6<|t;`W7*utIDpOV|)*b#^fr?H_PTruI~pN#zYM2E;R|0@ z&yta|budnxrF`O~)SMu=Uy2plcc4sLH`*S``|uJ58U21nKoAoVUDu=__KoP~I}z>B zWI*({sKNlJEgAFl>t+;&UuW}wN918-_)x>rRyE1IZ56Hgo)^^#Q%2XVNtglD`N;{7k}BGjT4WcG2V z@k5wof@p_?2)l}N0BKyTrF0{C)xMbECemFugXN#$Zc8xf74 ztX@Mxi$fo>-<=uu-}vcez>MAN&X7|0!S{=Q!IQG)d!dWJ7=bwE{r*z z4?{+ftk4^MPYU{6UM0w}

\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'level-questions',\n displayName: 'Level Questions',\n version: '1.0.0',\n paramSchema: {},\n defaultParams: {}\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n QuizQuestion,\n QuizOption,\n Role,\n AxisScores,\n QuizResult\n} from './types';\n"],"names":["LevelQuestions","onComplete","onProgress","className","screen","setScreen","useState","introIndex","setIntroIndex","currentQuestion","setCurrentQuestion","answers","setAnswers","quizResult","setQuizResult","introCarouselRef","useRef","selectionCarouselRef","questions","questionsData","roles","calculateScores","useCallback","userAnswers","totals","q","answerId","option","o","findBestRole","scores","bestRole","bestDistance","role","distance","generateSummary","dominant","index","handleAnswer","questionId","optionId","newAnswers","progress","recommended","summary","handleAcceptRecommended","recommendedRole","r","handleWantToDecide","handleRoleSelect","handleStartQuiz","useEffect","carousel","handleScroll","scrollLeft","newIndex","currentQ","jsxs","styles","jsx","s","i","_","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/public/glitch/glitch_lightlane/Component.d.ts b/public/glitch/glitch_lightlane/Component.d.ts new file mode 100644 index 0000000..b416453 --- /dev/null +++ b/public/glitch/glitch_lightlane/Component.d.ts @@ -0,0 +1,14 @@ +import { type GlitchComponentProps } from './types'; +type ComponentDevUiOverrides = { + showNumericDiagnostics?: boolean; + compactNumericDiagnostics?: boolean; + onOpenHarness?: () => void; + onSetParam?: (name: 'complexity' | 'speedup', value: number) => void; + maxComplexity?: number; + maxSpeedup?: number; +}; +type ComponentProps = GlitchComponentProps & { + devUi?: ComponentDevUiOverrides; +}; +export default function Component(props: ComponentProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/public/glitch/glitch_lightlane/components/DiophantineVectors.d.ts b/public/glitch/glitch_lightlane/components/DiophantineVectors.d.ts new file mode 100644 index 0000000..c58efa8 --- /dev/null +++ b/public/glitch/glitch_lightlane/components/DiophantineVectors.d.ts @@ -0,0 +1,10 @@ +interface DiophantineVectorsProps { + complexity: number; + lightlanes?: boolean; + radius?: number; + distance?: number; + allSectors?: boolean; + cumulative?: boolean; +} +export declare function DiophantineVectors({ complexity, lightlanes, radius, distance, allSectors, cumulative }: DiophantineVectorsProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/public/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts b/public/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts new file mode 100644 index 0000000..b2a1b67 --- /dev/null +++ b/public/glitch/glitch_lightlane/components/FanoSweepPanel.d.ts @@ -0,0 +1,22 @@ +import type { GlitchHostBridge } from '../types'; +interface FanoSweepPanelProps { + radius: number; + distance: number; + chandraDistance: number; + allSectors: boolean; + cumulative: boolean; + theta: number; + phi: number; + orbitSpeed: number; + thetaDrift: number; + thetaJitter: number; + phiJitter: number; + K: number; + speedup: number; + usePoisson: boolean; + bottomInset?: number; + onBack?: () => void; + host?: GlitchHostBridge; +} +export declare function FanoSweepPanel(props: FanoSweepPanelProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/public/glitch/glitch_lightlane/components/OrbitingObject.d.ts b/public/glitch/glitch_lightlane/components/OrbitingObject.d.ts new file mode 100644 index 0000000..8190e96 --- /dev/null +++ b/public/glitch/glitch_lightlane/components/OrbitingObject.d.ts @@ -0,0 +1,12 @@ +import { type MutableRefObject } from 'react'; +interface OrbitingObjectProps { + radius: number; + theta: number; + phi: number; + orbitTime: MutableRefObject; + simTime?: MutableRefObject; + thetaDrift?: number; + paused?: boolean; +} +export declare function OrbitingObject({ radius, theta, phi, orbitTime, simTime, thetaDrift, paused }: OrbitingObjectProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/public/glitch/glitch_lightlane/components/PoissonShell.d.ts b/public/glitch/glitch_lightlane/components/PoissonShell.d.ts new file mode 100644 index 0000000..002434d --- /dev/null +++ b/public/glitch/glitch_lightlane/components/PoissonShell.d.ts @@ -0,0 +1,3 @@ +export declare function PoissonShell({ radius }: { + radius: number; +}): import("react/jsx-runtime").JSX.Element; diff --git a/public/glitch/glitch_lightlane/components/PulsingSphere.d.ts b/public/glitch/glitch_lightlane/components/PulsingSphere.d.ts new file mode 100644 index 0000000..6673eb6 --- /dev/null +++ b/public/glitch/glitch_lightlane/components/PulsingSphere.d.ts @@ -0,0 +1,6 @@ +interface PulsingSphereProps { + radius: number; + paused?: boolean; +} +export declare function PulsingSphere({ radius, paused }: PulsingSphereProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/public/glitch/glitch_lightlane/components/SamplingSystem.d.ts b/public/glitch/glitch_lightlane/components/SamplingSystem.d.ts new file mode 100644 index 0000000..ea738ce --- /dev/null +++ b/public/glitch/glitch_lightlane/components/SamplingSystem.d.ts @@ -0,0 +1,29 @@ +import type { GlitchHostBridge, SceneViewMode } from '../types'; +interface SamplingSystemProps { + complexity: number; + radius: number; + distance: number; + theta: number; + phi: number; + observationMode: 'orbit' | 'randomSphere'; + allSectors: boolean; + cumulative: boolean; + K: number; + orbitRadius: number; + orbitVelocity: number; + thetaDrift: number; + thetaJitter: number; + phiJitter: number; + usePoisson: boolean; + speedup: number; + paused: boolean; + sceneView: SceneViewMode; + bottomInset?: number; + showNumericDiagnostics?: boolean; + compactNumericDiagnostics?: boolean; + host?: GlitchHostBridge; + centerDistribution?: boolean; + hideFlyingBars?: boolean; +} +export declare function SamplingSystem({ complexity, radius, distance, theta, phi, observationMode, allSectors, cumulative, K, orbitRadius, orbitVelocity, thetaDrift, thetaJitter, phiJitter, usePoisson, speedup, paused, sceneView, bottomInset, showNumericDiagnostics, compactNumericDiagnostics, host, centerDistribution, hideFlyingBars }: SamplingSystemProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/public/glitch/glitch_lightlane/components/TargetDisc.d.ts b/public/glitch/glitch_lightlane/components/TargetDisc.d.ts new file mode 100644 index 0000000..4a95429 --- /dev/null +++ b/public/glitch/glitch_lightlane/components/TargetDisc.d.ts @@ -0,0 +1,6 @@ +interface TargetDiscProps { + radius: number; + distance: number; +} +export declare function TargetDisc({ radius, distance }: TargetDiscProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/public/glitch/glitch_lightlane/components/VectorArrow.d.ts b/public/glitch/glitch_lightlane/components/VectorArrow.d.ts new file mode 100644 index 0000000..349ed2a --- /dev/null +++ b/public/glitch/glitch_lightlane/components/VectorArrow.d.ts @@ -0,0 +1,7 @@ +interface VectorArrowProps { + vector: [number, number, number]; + origin?: [number, number, number]; + color?: string; +} +export declare function VectorArrow({ vector, origin, color }: VectorArrowProps): import("react/jsx-runtime").JSX.Element; +export {}; diff --git a/public/glitch/glitch_lightlane/dev.d.ts b/public/glitch/glitch_lightlane/dev.d.ts new file mode 100644 index 0000000..2c068e0 --- /dev/null +++ b/public/glitch/glitch_lightlane/dev.d.ts @@ -0,0 +1 @@ +import './dev-theme.css'; diff --git a/public/glitch/glitch_lightlane/devHostBridge.d.ts b/public/glitch/glitch_lightlane/devHostBridge.d.ts new file mode 100644 index 0000000..3fba17e --- /dev/null +++ b/public/glitch/glitch_lightlane/devHostBridge.d.ts @@ -0,0 +1,8 @@ +import type { GlitchHostBridge } from './types'; +export type DevHostBridgeOptions = { + isMuted?: () => boolean; + onSound?: (id: string, payload?: Record) => void; + onEmit?: (type: string, payload?: unknown) => void; +}; +export declare function createDevHostBridge(options?: DevHostBridgeOptions): GlitchHostBridge; +export declare function attachWindowSoundBridge(host: GlitchHostBridge): () => void; diff --git a/public/glitch/glitch_lightlane/glitch.manifest.json b/public/glitch/glitch_lightlane/glitch.manifest.json new file mode 100644 index 0000000..c4fb622 --- /dev/null +++ b/public/glitch/glitch_lightlane/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "lightlane", + "displayName": "Lightlane Challenge", + "version": "0.1.0", + "folderName": "glitch_lightlane", + "packageName": "@nommo/lightlane", + "entry": "dist/lightlane.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "reference", + "3d" + ] +} diff --git a/public/glitch/glitch_lightlane/hostBridge.d.ts b/public/glitch/glitch_lightlane/hostBridge.d.ts new file mode 100644 index 0000000..fa85f46 --- /dev/null +++ b/public/glitch/glitch_lightlane/hostBridge.d.ts @@ -0,0 +1,17 @@ +import type { GlitchHostBridge } from './types'; +export declare const HOST_SOUND_EVENT = "glitch:play-sound"; +export declare const HOST_STOP_SOUND_EVENT = "glitch:stop-sound"; +export declare const HOST_EMIT_PREFIX = "glitch:host:"; +export declare const SOUND_IDS: { + readonly click: "ui.button_click"; + readonly hover: "ui.button_hover"; + readonly computeStart: "machine.compute_start"; + readonly computeStep: "machine.compute_step"; + readonly computeDone: "machine.compute_done"; + readonly verdictStable: "machine.verdict_stable"; + readonly verdictAlert: "machine.verdict_alert"; +}; +export type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS]; +export declare function safePlaySound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeStopSound(host: GlitchHostBridge | undefined, id: string, payload?: Record): void; +export declare function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown): void; diff --git a/public/glitch/glitch_lightlane/index.d.ts b/public/glitch/glitch_lightlane/index.d.ts new file mode 100644 index 0000000..50f28d5 --- /dev/null +++ b/public/glitch/glitch_lightlane/index.d.ts @@ -0,0 +1,5 @@ +import Component from './Component'; +import { type GlitchComponentMetadata } from './types'; +export default Component; +export declare const metadata: GlitchComponentMetadata; +export type { GlitchComponentProps, GlitchComponentConfig, GlitchComponentResult, GlitchHostBridge } from './types'; diff --git a/public/glitch/glitch_lightlane/lightlane.js b/public/glitch/glitch_lightlane/lightlane.js new file mode 100644 index 0000000..030f745 --- /dev/null +++ b/public/glitch/glitch_lightlane/lightlane.js @@ -0,0 +1,2805 @@ +import { jsx as n, jsxs as i, Fragment as Fe } from "react/jsx-runtime"; +import { useMemo as he, useState as $, useRef as Z, useEffect as de } from "react"; +import { useFrame as Qe } from "@react-three/fiber"; +import { Html as De, Grid as At } from "@react-three/drei"; +import * as Ye from "three"; +import { Color as Dt } from "three"; +function Nt({ vector: e, origin: t = [0, 0, 0], color: o = "#facc15" }) { + const { dir: r, len: l, position: a } = he(() => { + const c = new Ye.Vector3(...t), s = new Ye.Vector3(...e), d = c.distanceTo(s); + return { dir: s.clone().sub(c).normalize(), len: d, position: c }; + }, [e, t]), h = he(() => new Ye.ArrowHelper(r, a, l, o, 0.2 * Math.min(l, 1) + 0.1, 0.1 * Math.min(l, 1) + 0.05), [r, l, a, o]); + return /* @__PURE__ */ n("primitive", { object: h }); +} +function _t(e, t = !1) { + const o = []; + for (let r = 0; r <= e; r++) + for (let l = 0; l <= e - r; l++) { + const a = e - r - l; + if (a >= 0) + if (!t) + o.push([r, l, a]); + else { + const h = r === 0 ? [1] : [1, -1], c = l === 0 ? [1] : [1, -1], s = a === 0 ? [1] : [1, -1]; + for (const d of h) + for (const m of c) + for (const u of s) + o.push([r * d, l * m, a * u]); + } + } + return o; +} +function Ht({ vector: e, radius: t, distance: o, color: r }) { + const { position: l, quaternion: a } = he(() => { + const h = new Ye.Vector3(...e).normalize(), c = new Ye.Vector3(0, 1, 0), s = new Ye.Quaternion().setFromUnitVectors(c, h); + return { position: h.clone().multiplyScalar(o / 2), quaternion: s }; + }, [e, o]); + return /* @__PURE__ */ i("mesh", { position: l, quaternion: a, children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [t, t, o, 32] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: r, opacity: 0.5, transparent: !0 }) + ] }); +} +function Wt({ complexity: e, lightlanes: t = !1, radius: o = 0.5, distance: r = 5, allSectors: l = !1, cumulative: a = !1 }) { + const h = he(() => { + const s = [], d = a ? 1 : e, m = e; + for (let u = d; u <= m; u++) { + const x = _t(u, l); + for (const y of x) + s.push({ vec: y, c: u }); + } + return s; + }, [e, l, a]), c = (s) => { + const d = a ? Math.max(e, 1) : e; + return `hsl(${270 * (1 - (d > 1 ? (s - 1) / (d - 1) : 1))}, 100%, 50%)`; + }; + return /* @__PURE__ */ n("group", { children: h.map((s, d) => { + const m = a ? c(s.c) : t ? "#ff33c5" : "#4ade80"; + return t ? /* @__PURE__ */ n( + Ht, + { + vector: s.vec, + radius: o, + distance: r, + color: m + }, + `cyl-${d}-${s.vec.join(",")}-${s.c}` + ) : /* @__PURE__ */ n( + Nt, + { + vector: s.vec, + color: m + }, + `vec-${d}-${s.vec.join(",")}-${s.c}` + ); + }) }); +} +const Vt = "glitch:play-sound", jt = "glitch:stop-sound", we = { + click: "ui.button_click", + hover: "ui.button_hover", + computeStart: "machine.compute_start", + computeStep: "machine.compute_step", + computeDone: "machine.compute_done" +}; +function Ct(e, t) { + typeof window > "u" || window.dispatchEvent(new CustomEvent(e, { detail: t })); +} +function Ce(e, t, o) { + try { + if (e?.playSound) { + e.playSound(t, o); + return; + } + } catch { + } + Ct(Vt, { id: t, payload: o }); +} +function Yt(e, t, o) { + try { + if (e?.stopSound) { + e.stopSound(t, o); + return; + } + } catch { + } + Ct(jt, { id: t, payload: o }); +} +const Ue = 1e-12; +function ut(e = 123456789) { + let t = e >>> 0; + return function() { + t |= 0, t = t + 1831565813 | 0; + let r = Math.imul(t ^ t >>> 15, 1 | t); + return r = r + Math.imul(r ^ r >>> 7, 61 | r) ^ r, ((r ^ r >>> 14) >>> 0) / 4294967296; + }; +} +function Ut(e, t = Math.random) { + if (!Number.isFinite(e) || e <= 0) return 0; + if (e < 30) { + const h = Math.exp(-e); + let c = 0, s = 1; + do + c++, s *= t(); + while (s > h); + return c - 1; + } + const o = Math.max(1e-12, t()), r = t(), l = Math.sqrt(-2 * Math.log(o)) * Math.cos(2 * Math.PI * r), a = e + Math.sqrt(e) * l; + return Math.max(0, Math.round(a)); +} +function st(e) { + return [e[0] ?? e.x, e[1] ?? e.y, e[2] ?? e.z]; +} +function Gt(e, t, o) { + return Math.sqrt(e * e + t * t + o * o); +} +function kt(e) { + const t = 2 * Math.PI; + let o = e % t; + return o < 0 && (o += t), o; +} +function Jt(e) { + const t = 2 * e() - 1, o = 2 * Math.PI * e(); + return { + theta: Math.acos(Math.max(-1, Math.min(1, t))), + phi: o + }; +} +function mt(e) { + const t = 2 * Math.PI; + let o = e % t; + return o < 0 && (o += t), o > Math.PI && (o = t - o), o; +} +function Mt(e = Math.random) { + const t = Math.max(1e-12, e()), o = e(); + return Math.sqrt(-2 * Math.log(t)) * Math.cos(2 * Math.PI * o); +} +function qt(e, t, o) { + const r = Math.sin(t); + return [ + e * r * Math.cos(o), + e * Math.cos(t), + e * r * Math.sin(o) + ]; +} +function Xt(e, t = !1, o = !1) { + const r = [], l = o ? 1 : e, a = e; + for (let h = l; h <= a; h++) + for (let c = 0; c <= h; c++) + for (let s = 0; s <= h - c; s++) { + const d = h - c - s; + if (!t) { + r.push([c, s, d]); + continue; + } + const m = c === 0 ? [1] : [1, -1], u = s === 0 ? [1] : [1, -1], x = d === 0 ? [1] : [1, -1]; + for (const y of m) + for (const B of u) + for (const F of x) + r.push([c * y, s * B, d * F]); + } + return r; +} +function wt({ + D: e, + complexity: t, + allSectors: o = !1, + cumulative: r = !1 +}) { + if (!Number.isFinite(e) || e <= 0) return []; + if (!Number.isInteger(t) || t < 1) return []; + const l = Xt(t, o, r), a = []; + for (let h = 0; h < l.length; h++) { + const [c, s, d] = l[h], m = Gt(c, s, d); + m <= Ue || a.push([e * c / m, e * s / m, e * d / m]); + } + return a; +} +function Kt(e, t, o) { + if (!e || e.length === 0 || !Number.isFinite(o) || o <= 0) return 0; + const [r, l, a] = st(t), h = o * o; + let c = 0; + for (let s = 0; s < e.length; s++) { + const [d, m, u] = st(e[s]), x = d * d + m * m + u * u; + if (x <= Ue) continue; + let y = (r * d + l * m + a * u) / x; + y < 0 && (y = 0), y > 1 && (y = 1); + const B = y * d, F = y * m, R = y * u, C = r - B, j = l - F, v = a - R; + C * C + j * j + v * v < h && c++; + } + return c; +} +function Qt(e, t, o, r) { + if (!e || e.length === 0 || !Number.isFinite(t) || t <= 0 || !Number.isFinite(r) || r <= 0) return 0; + const [l, a, h] = st(o), s = t * t - 0.5 * r * r; + let d = 0; + for (let m = 0; m < e.length; m++) { + const [u, x, y] = st(e[m]); + l * u + a * x + h * y > s && d++; + } + return d; +} +function Bt({ D: e, lane_radius: t }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(t) || t <= 0) return 0; + const o = t * t / (4 * e * e); + return o <= 0 ? 0 : o > 1 ? 1 : o; +} +function Zt({ D: e, lane_radius: t, lane_length: o }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(t) || t <= 0 || !Number.isFinite(o) || o <= 0) return 0; + if (o >= e - Ue) + return Bt({ D: e, lane_radius: t }); + const r = t, l = o, a = e - l; + if (r <= a) return 0; + if (r >= e + l) return 1; + const h = Math.sqrt(Math.max(0, e * e - l * l)); + let c; + return r < h ? c = (e * e + l * l - r * r) / (2 * e * l) : r < e ? c = Math.sqrt(Math.max(0, 1 - r * r / (e * e))) : c = -1, Number.isFinite(c) ? (c < -1 && (c = -1), c > 1 && (c = 1), (1 - c) / 2) : 0; +} +function en({ flux: e, D: t, lane_radius: o, dt: r }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(r) || r <= 0) return 0; + const l = Bt({ D: t, lane_radius: o }); + return e * l * r; +} +function tn({ flux: e, D: t, lane_radius: o, lane_length: r, dt: l }) { + if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(l) || l <= 0) return 0; + const a = Zt({ D: t, lane_radius: o, lane_length: r }); + return e * a * l; +} +function Et({ + flux: e, + D: t, + lane_radius: o, + dt: r, + hitTestModel: l = "shell", + lane_length: a +}) { + return l === "segment" ? tn({ flux: e, D: t, lane_radius: o, lane_length: a, dt: r }) : en({ flux: e, D: t, lane_radius: o, dt: r }); +} +function nn(e) { + if (!e || typeof e != "object") + throw new Error("createSamplingSimulation: config object is required."); + const t = e.lane_radius ?? e.radius, o = e.D, r = e.complexity, l = e.flux, a = e.bin_size ?? 1, h = e.sub_bin_sampling ?? 4, c = e.thetaDrift ?? e.theta_drift ?? 0, s = e.thetaJitter ?? e.theta_jitter ?? 0, d = e.phiJitter ?? e.phi_jitter ?? 0, m = e.laneLength ?? e.lane_length ?? e.distance ?? o, u = e.hitTestModel ?? e.hit_test_model ?? "shell", x = e.observationMode ?? e.observation_mode ?? "orbit"; + if (!Number.isFinite(o) || o <= 0) + throw new Error("createSamplingSimulation: D must be a positive number."); + if (!Number.isFinite(t) || t <= 0) + throw new Error("createSamplingSimulation: lane_radius (or radius) must be a positive number."); + if (!Number.isInteger(r) || r < 1) + throw new Error("createSamplingSimulation: complexity must be an integer >= 1."); + if (!Number.isFinite(l) || l < 0) + throw new Error("createSamplingSimulation: flux must be a finite number >= 0."); + if (!Number.isFinite(a) || a <= 0) + throw new Error("createSamplingSimulation: bin_size must be a positive number."); + if (!Number.isInteger(h) || h < 1) + throw new Error("createSamplingSimulation: sub_bin_sampling must be an integer >= 1."); + if (!Number.isFinite(c)) + throw new Error("createSamplingSimulation: thetaDrift must be finite."); + if (!Number.isFinite(s) || s < 0) + throw new Error("createSamplingSimulation: thetaJitter must be a finite number >= 0."); + if (!Number.isFinite(d) || d < 0) + throw new Error("createSamplingSimulation: phiJitter must be a finite number >= 0."); + if (!Number.isFinite(m) || m <= 0) + throw new Error("createSamplingSimulation: laneLength/lane_length/distance must be a positive number."); + if (u !== "shell" && u !== "segment") + throw new Error('createSamplingSimulation: hitTestModel must be "shell" or "segment".'); + if (x !== "orbit" && x !== "randomSphere") + throw new Error('createSamplingSimulation: observationMode must be "orbit" or "randomSphere".'); + return { + D: o, + lane_radius: t, + complexity: r, + flux: l, + bin_size: a, + sub_bin_sampling: h, + theta: mt(e.theta ?? Math.PI / 2), + phi: kt(e.phi ?? 0), + velocity: e.velocity ?? 0, + thetaDrift: c, + thetaJitter: s, + phiJitter: d, + lane_length: m, + hitTestModel: u, + observationMode: x, + allSectors: !!e.allSectors, + cumulative: !!e.cumulative, + usePoisson: e.usePoisson !== !1, + seed: Number.isFinite(e.seed) ? e.seed : 1 + }; +} +function It(e) { + const t = nn(e), o = wt(t), r = t.hitTestModel === "segment" ? wt({ ...t, D: t.lane_length }) : o, l = ut(t.seed), a = ut(t.seed + 1), h = ut(t.seed + 2), c = t.bin_size / t.sub_bin_sampling, s = Et({ + flux: t.flux, + D: t.D, + lane_radius: t.lane_radius, + dt: c, + hitTestModel: t.hitTestModel, + lane_length: t.lane_length + }); + let d = 0, m = 0, u = t.phi, x = t.theta, y = 0, B = 0, F = 0, R = 0, C = 0, j = 0, v = 0; + function L(k, A) { + return t.usePoisson ? Ut(k, A) : k; + } + function O(k = x, A = u) { + return qt(t.D, k, A); + } + function J() { + let k, A; + if (t.observationMode === "randomSphere") { + const P = Jt(h); + k = P.theta, A = P.phi; + } else + k = mt( + x + (t.thetaJitter > 0 ? t.thetaJitter * Mt(h) : 0) + ), A = kt( + u + (t.phiJitter > 0 ? t.phiJitter * Mt(h) : 0) + ); + const ee = O(k, A), z = t.hitTestModel === "segment" ? Kt(r, ee, t.lane_radius) : Qt(o, t.D, ee, t.lane_radius); + j = z; + const D = o.length, N = D > 0 ? z * t.flux * c / D : 0; + return B += L(N, l), F += L(s, a), R += N, v += z, C++, { + laneCount: z, + satPos: ee, + lambdaLightlaneSubBin: N, + phase: A, + theta: k + }; + } + function _() { + const k = C > 0 ? C * c : t.bin_size, A = s * t.sub_bin_sampling, D = { + time: y, + bin_size: k, + lightlane: B, + isotropic: F, + lambdaIsotropic: C > 0 ? s * C : A, + overlaps: j, + overlapsMean: C > 0 ? v / C : 0, + subBins: C, + phase: u, + theta: x, + lambdaLightlaneExpected: R + }; + return B = 0, F = 0, R = 0, v = 0, C = 0, D; + } + return { + config: { ...t }, + getLaneCount() { + return o.length; + }, + getState() { + return { + elapsed: y, + phase: u, + theta: x, + timeInBin: d, + timeInSubBin: m, + accumulatedLightlane: B, + accumulatedIsotropic: F, + expectedLightlaneThisBin: R, + processedSubBinsInCurrentBin: C, + lastLaneCount: j, + laneCount: o.length + }; + }, + reset() { + d = 0, m = 0, u = t.phi, x = t.theta, y = 0, B = 0, F = 0, R = 0, C = 0, j = 0, v = 0; + }, + flushPartialBin() { + if (C <= 0) return null; + const k = _(); + return d = 0, m = 0, k; + }, + simulate(k) { + if (!Number.isFinite(k) || k <= 0) + return { + bins: [], + lastLaneCount: j, + subBinEvents: 0, + elapsed: y + }; + let A = k, ee = 0; + const z = []; + for (; A > Ue; ) { + const D = c - m, N = t.bin_size - d, P = Math.min(A, D, N); + u += t.velocity * P, x = mt(x + t.thetaDrift * P), y += P, m += P, d += P, A -= P, m >= c - Ue && (m = 0, J(), ee++), d >= t.bin_size - Ue && (d = 0, z.push(_())); + } + return { + bins: z, + lastLaneCount: j, + subBinEvents: ee, + elapsed: y + }; + } + }; +} +function Ft(e, t) { + const o = e.n + 1, r = t - e.mean, l = e.mean + r / o, a = e.m2 + r * (t - l); + return { n: o, mean: l, m2: a }; +} +function Pt() { + return { n: 0, mean: 0, m2: 0 }; +} +function on({ + complexity: e, + samplesPerPoint: t, + runsPerPoint: o, + binSize: r, + subBinSampling: l, + props: a, + observationMode: h, + seed: c +}) { + let s = Pt(), d = Pt(), m = 0; + for (let F = 0; F < o; F++) { + const R = It({ + D: a.chandraDistance, + theta: a.theta, + phi: a.phi, + observationMode: h, + velocity: a.orbitSpeed, + thetaDrift: a.thetaDrift, + thetaJitter: a.thetaJitter, + phiJitter: a.phiJitter, + bin_size: r, + complexity: e, + sub_bin_sampling: l, + flux: a.K, + lane_radius: a.radius, + distance: a.distance, + hitTestModel: "segment", + allSectors: a.allSectors, + cumulative: a.cumulative, + usePoisson: a.usePoisson, + seed: c + F * 7919 + }); + F === 0 && (m = R.getLaneCount()); + for (let C = 0; C < t; C++) { + const { bins: j } = R.simulate(r), v = j[0]; + v && (s = Ft(s, v.lightlane), d = Ft(d, v.isotropic)); + } + } + const u = s.n > 1 ? s.m2 / (s.n - 1) : 0, x = d.n > 1 ? d.m2 / (d.n - 1) : 0, y = s.mean > 0 ? u / s.mean : 0, B = d.mean > 0 ? x / d.mean : 0; + return { + complexity: e, + laneCount: m, + meanBlue: s.mean, + meanYellow: d.mean, + fanoBlue: y, + fanoYellow: B, + fanoExcess: Math.max(0, y - B) + }; +} +function rn(e, t = 1) { + const o = e.filter((u) => u.complexity >= t && u.complexity > 1 && u.fanoExcess > 1e-6); + if (o.length < 3) return null; + let r = 0, l = 0, a = 0, h = 0; + const c = o.length; + for (const u of o) { + const x = Math.log(u.laneCount), y = Math.log(u.fanoExcess); + r += x, l += y, a += x * x, h += x * y; + } + const s = c * a - r * r; + if (Math.abs(s) < 1e-12) return null; + const d = (c * h - r * l) / s, m = (l - d * r) / c; + return { + A: Math.exp(m), + alpha: -d, + predictFanoExcessFromLaneCount(u) { + return Math.exp(m + d * Math.log(Math.max(1, u))); + } + }; +} +function an(e, t = 1) { + const o = e.filter((c) => c.complexity >= t && c.complexity > 1 && c.fanoExcess > 1e-6); + if (o.length < 4) return null; + const r = Math.min(...o.map((c) => c.fanoExcess)), l = Math.max(0, r * 0.98); + let a = null; + const h = 80; + for (let c = 0; c <= h; c++) { + const s = c / h * l, d = o.map((O) => ({ x: O.laneCount, y: O.fanoExcess - s })).filter((O) => O.y > 1e-9); + if (d.length < 3) continue; + let m = 0, u = 0, x = 0, y = 0; + const B = d.length; + for (const O of d) { + const J = Math.log(O.x), _ = Math.log(O.y); + m += J, u += _, x += J * J, y += J * _; + } + const F = B * x - m * m; + if (Math.abs(F) < 1e-12) continue; + const R = (B * y - m * u) / F, C = (u - R * m) / B, j = Math.exp(C), v = -R; + if (!(j > 0) || !(v > 0)) continue; + let L = 0; + for (const O of o) { + const J = s + j * Math.pow(Math.max(1, O.laneCount), -v), _ = Math.log(Math.max(1e-9, O.fanoExcess)) - Math.log(Math.max(1e-9, J)); + L += _ * _; + } + (!a || L < a.score) && (a = { A: j, alpha: v, B: s, score: L }); + } + return a ? { + A: a.A, + alpha: a.alpha, + B: a.B, + score: a.score, + predictFanoExcessFromLaneCount(c) { + return a.B + a.A * Math.pow(Math.max(1, c), -a.alpha); + } + } : null; +} +function sn(e) { + const t = e.filter((u) => u.x > 0 && u.y > 0); + if (t.length < 3) return null; + let o = 0, r = 0, l = 0, a = 0; + const h = t.length; + for (const u of t) { + const x = Math.log(u.x), y = Math.log(u.y); + o += x, r += y, l += x * x, a += x * y; + } + const c = h * l - o * o; + if (Math.abs(c) < 1e-12) return null; + const s = (h * a - o * r) / c, d = (r - s * o) / h, m = Math.exp(d); + return { + A: m, + beta: s, + predict(u) { + return m * Math.pow(Math.max(1e-9, u), s); + }, + invert(u) { + return m <= 0 || Math.abs(s) < 1e-12 || u <= 0 ? null : Math.pow(u / m, 1 / s); + } + }; +} +function ln(e, t) { + if (!Number.isFinite(t) || t <= 0 || e.length === 0) return null; + const o = [...e].sort((s, d) => s.complexity - d.complexity), r = [...o].sort((s, d) => s.laneCount - d.laneCount), l = r[0], a = r[r.length - 1]; + if (t <= l.laneCount) + return { complexity: l.complexity, mode: "observed-range" }; + for (let s = 1; s < r.length; s++) { + const d = r[s - 1], m = r[s]; + if (t <= m.laneCount) { + const u = Math.max(1e-9, m.laneCount - d.laneCount), x = (t - d.laneCount) / u; + return { + complexity: d.complexity + x * (m.complexity - d.complexity), + mode: "observed-range" + }; + } + } + const c = sn(o.map((s) => ({ x: s.complexity, y: s.laneCount })))?.invert(t) ?? null; + return c && Number.isFinite(c) ? { complexity: c, mode: "extrapolated" } : { complexity: a.complexity, mode: "observed-max" }; +} +function Tt(e, t, o, r) { + return e.map((l, a) => `${a === 0 ? "M" : "L"} ${o(l.complexity)} ${r(t(l))}`).join(" "); +} +function cn(e) { + return e >= 10 ? e.toFixed(0) : e >= 2 ? e.toFixed(1) : e.toFixed(2); +} +function dn(e, t) { + const r = [ + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 1, + 1.1, + 1.2, + 1.4, + 1.6, + 1.8, + 2, + 2.5, + 3, + 4, + 5, + 7.5, + 10 + ].filter((c) => c >= e && c <= t); + if (r.length >= 3) return r; + const l = 5, a = Math.log(e), h = Math.log(t); + return Array.from({ length: l }, (c, s) => { + const d = s / (l - 1); + return Math.exp(a + (h - a) * d); + }); +} +function pn(e) { + const [t, o] = $(40), [r, l] = $(1e3), [a, h] = $(3), [c, s] = $(1), [d, m] = $(4), [u, x] = $("randomSphere"), [y, B] = $(0.05), [F, R] = $(10), [C, j] = $(0), [v, L] = $([]), [O, J] = $(0), [_, k] = $(!1), A = Z(!1), ee = Z(-1), z = () => { + Ce(e.host, we.hover, { page: "fano" }); + }, D = (b, T) => { + Ce(e.host, we.click, { page: "fano", target: b, ...T }); + }; + de(() => { + let b = !1; + return L([]), J(0), k(!0), (async () => { + const T = []; + for (let E = 1; E <= t; E++) { + if (b) return; + const I = on({ + complexity: E, + samplesPerPoint: r, + runsPerPoint: a, + binSize: c, + subBinSampling: d, + props: e, + observationMode: u, + seed: 1e4 + E * 97 + C * 100003 + }); + T.push(I), L([...T]), J(E / t), await new Promise((ne) => setTimeout(ne, 0)); + } + b || k(!1); + })(), () => { + b = !0; + }; + }, [ + t, + r, + a, + c, + d, + u, + C, + e.radius, + e.distance, + e.chandraDistance, + e.allSectors, + e.cumulative, + e.theta, + e.phi, + e.orbitSpeed, + e.thetaDrift, + e.thetaJitter, + e.phiJitter, + e.K, + e.speedup, + e.usePoisson + ]), de(() => { + const b = A.current; + if (A.current = _, _ && !b) { + ee.current = -1, Ce(e.host, we.computeStart, { page: "fano" }); + return; + } + !_ && b && (Yt(e.host, we.computeStep, { page: "fano" }), Ce(e.host, we.computeDone, { page: "fano", points: v.length })); + }, [_, e.host, v.length]), de(() => { + if (!_) return; + const b = Math.floor(O * 10); + b <= ee.current || (ee.current = b, Ce(e.host, we.computeStep, { page: "fano", progress: O })); + }, [O, _, e.host]); + const N = he(() => rn(v, F), [v, F]), P = he(() => an(v, F), [v, F]), H = he(() => { + if (!N || N.alpha <= 0 || y <= 0) return null; + if (P && P.B >= y) + return { + targetExcess: y, + requiredLaneCount: Number.POSITIVE_INFINITY, + measuredCrossing: v.find((se) => se.fanoExcess <= y) ?? null, + complexityEstimate: null, + blockedByFloor: !0, + floorExcess: P.B + }; + const b = P ? Math.max(1e-9, y - P.B) : y, T = P ? P.A : N.A, E = P ? P.alpha : N.alpha, I = Math.pow(T / b, 1 / E); + if (!Number.isFinite(I) || I <= 0) return null; + const ne = v.find((se) => se.fanoExcess <= y) ?? null, G = ln(v, I); + return { + targetExcess: y, + requiredLaneCount: I, + measuredCrossing: ne, + complexityEstimate: G, + blockedByFloor: !1, + floorExcess: P?.B ?? 0 + }; + }, [N, P, v, y]), g = he(() => { + const E = { top: 20, right: 20, bottom: 42, left: 48 }, I = 860 - E.left - E.right, ne = 360 - E.top - E.bottom, G = Math.max(2, t), se = [ + 1, + ...v.map((Y) => Y.fanoBlue), + ...v.map((Y) => Y.fanoYellow), + ...v.map((Y) => 1 + Y.fanoExcess) + ].filter((Y) => Number.isFinite(Y) && Y > 0), ve = Math.min(...se), Re = Math.max(...se), X = Math.max(1e-3, Math.min(0.95, ve * 0.95)), Pe = Math.max(1.05, Re * 1.05), Be = Math.log(X), Je = Math.log(Pe), me = (Y) => E.left + (Y - 1) / (G - 1) * I, Ee = (Y) => { + const Ie = Math.min(Pe, Math.max(X, Y)), le = Math.log(Ie); + return E.top + ne - (le - Be) / Math.max(1e-9, Je - Be) * ne; + }, Se = dn(X, Pe); + return { width: 860, height: 360, margin: E, innerW: I, innerH: ne, xToPx: me, yToPx: Ee, yMax: Pe, yMin: X, yTicks: Se }; + }, [v, t]), ue = he( + () => v.length > 1 ? Tt(v, (b) => b.fanoBlue, g.xToPx, g.yToPx) : "", + [v, g] + ), ke = he( + () => v.length > 1 ? Tt(v, (b) => b.fanoYellow, g.xToPx, g.yToPx) : "", + [v, g] + ), q = v.at(-1) ?? null; + return /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "auto" }, children: /* @__PURE__ */ i( + "div", + { + style: { + width: "100%", + height: "100%", + display: "flex", + flexDirection: "column", + background: "radial-gradient(circle at 20% 10%, rgba(30,41,59,0.9), rgba(2,6,23,0.96))", + color: "var(--terminal-green-soft)", + padding: "16px", + paddingBottom: `${16 + (e.bottomInset ?? 0)}px`, + boxSizing: "border-box", + gap: "12px", + fontFamily: "var(--font-ui)" + }, + children: [ + /* @__PURE__ */ i("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", gap: "12px", flexWrap: "wrap" }, children: [ + /* @__PURE__ */ i("div", { children: [ + /* @__PURE__ */ n("div", { style: { fontSize: "14px", fontWeight: 400, letterSpacing: "0.12em", textTransform: "uppercase", fontFamily: "var(--font-headline)", color: "var(--terminal-green-soft)" }, children: "Fano Sweep" }), + /* @__PURE__ */ i("div", { style: { fontSize: "11px", color: "var(--terminal-green)", marginTop: "4px" }, children: [ + "Goal: show ", + "Fano(Blue)", + " trending toward 1.0 (or toward Yellow) as complexity increases." + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [ + e.onBack && /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("back-to-simulator"), e.onBack?.(); + }, + onPointerEnter: z, + style: { + border: "1px solid var(--terminal-panel-border)", + background: "rgba(7,19,11,0.8)", + color: "var(--terminal-green-soft)", + padding: "8px 12px", + borderRadius: "8px", + cursor: "pointer", + fontSize: "12px", + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.08em", + textTransform: "uppercase" + }, + children: "Back To Simulator" + } + ), + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("rerun-sweep"), j((b) => b + 1); + }, + onPointerEnter: z, + style: { + border: "1px solid var(--terminal-panel-border)", + background: _ ? "rgba(125, 255, 155, 0.14)" : "rgba(7,19,11,0.8)", + color: "var(--terminal-green-soft)", + padding: "8px 12px", + borderRadius: "8px", + cursor: "pointer", + fontSize: "12px", + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.08em", + textTransform: "uppercase" + }, + children: _ ? "Rerun (queued)" : "Rerun Sweep" + } + ) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [ + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("preset-video-demo"), x("randomSphere"), o(60), l(1200), h(2), s(1), m(4), R(12); + }, + onPointerEnter: z, + style: { + border: "1px solid var(--terminal-panel-border)", + background: "rgba(7,19,11,0.8)", + color: "var(--terminal-green-soft)", + padding: "6px 10px", + borderRadius: 8, + cursor: "pointer", + fontSize: 11, + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.06em" + }, + children: "Preset: Video Demo" + } + ), + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + D("preset-robust-sweep"), x("randomSphere"), o(200), l(3e3), h(5), s(1), m(16), R(40); + }, + onPointerEnter: z, + style: { + border: "1px solid rgba(125, 255, 155, 0.32)", + background: "rgba(2,6,23,0.8)", + color: "var(--terminal-green-soft)", + padding: "6px 10px", + borderRadius: 8, + cursor: "pointer", + fontSize: 11, + fontWeight: 400, + fontFamily: "var(--font-headline)", + letterSpacing: "0.06em" + }, + children: "Preset: Robust Sweep" + } + ) + ] }), + /* @__PURE__ */ i("div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(140px, 1fr))", gap: "8px" }, children: [ + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Max Complexity", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 2, + max: 200, + value: t, + onChange: (b) => o(Math.max(2, Math.min(200, Number(b.target.value) || 2))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Samples / Point", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 100, + max: 2e4, + step: 100, + value: r, + onChange: (b) => l(Math.max(100, Math.min(2e4, Number(b.target.value) || 100))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Runs / Point (Seeds)", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1, + max: 20, + step: 1, + value: a, + onChange: (b) => h(Math.max(1, Math.min(20, Number(b.target.value) || 1))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Bin Size (s)", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 0.1, + max: 20, + step: 0.1, + value: c, + onChange: (b) => s(Math.max(0.1, Math.min(20, Number(b.target.value) || 0.1))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Sub-Bin Sampling", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1, + max: 256, + step: 1, + value: d, + onChange: (b) => m(Math.max(1, Math.min(256, Math.round(Number(b.target.value) || 1)))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Observation Mode", + /* @__PURE__ */ i( + "select", + { + value: u, + onChange: (b) => x(b.target.value), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }, + children: [ + /* @__PURE__ */ n("option", { value: "randomSphere", children: "Random Sphere (recommended)" }), + /* @__PURE__ */ n("option", { value: "orbit", children: "Orbit (path-biased)" }) + ] + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Target Excess (B-Y)", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1e-3, + max: 1, + step: 5e-3, + value: y, + onChange: (b) => B(Math.max(1e-3, Math.min(1, Number(b.target.value) || 0.05))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [ + "Fit Start Complexity", + /* @__PURE__ */ n( + "input", + { + type: "number", + min: 1, + max: t, + step: 1, + value: F, + onChange: (b) => R(Math.max(1, Math.min(t, Number(b.target.value) || 1))), + onFocus: () => z(), + style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" } + } + ) + ] }), + /* @__PURE__ */ i("div", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "6px" }, children: [ + "Progress", + /* @__PURE__ */ n("div", { style: { background: "rgba(7,19,11,0.9)", border: "1px solid var(--terminal-panel-border)", borderRadius: "999px", padding: "3px" }, children: /* @__PURE__ */ n( + "div", + { + style: { + height: "8px", + width: `${Math.round(O * 100)}%`, + background: "linear-gradient(90deg, var(--terminal-green-dim), var(--terminal-green-soft))", + borderRadius: "999px", + transition: "width 0.15s ease" + } + } + ) }), + /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: _ ? `Running ${Math.round(O * 100)}%` : "Complete" }) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { display: "flex", flexDirection: "column", gap: "12px", minHeight: 0, flex: 1 }, children: [ + /* @__PURE__ */ n( + "div", + { + style: { + background: "rgba(7,19,11,0.72)", + border: "1px solid var(--terminal-panel-border)", + borderRadius: "10px", + padding: "10px", + width: "100%", + minWidth: 0, + minHeight: "min(58vh, 520px)" + }, + children: /* @__PURE__ */ i("svg", { viewBox: `0 0 ${g.width} ${g.height}`, style: { width: "100%", height: "100%" }, children: [ + /* @__PURE__ */ n("rect", { x: 0, y: 0, width: g.width, height: g.height, fill: "transparent" }), + g.yTicks.map((b, T) => { + const E = g.yToPx(b); + return /* @__PURE__ */ i("g", { children: [ + /* @__PURE__ */ n("line", { x1: g.margin.left, y1: E, x2: g.margin.left + g.innerW, y2: E, stroke: "rgba(125, 255, 155, 0.12)" }), + /* @__PURE__ */ n("text", { x: 8, y: E + 4, fill: "var(--terminal-green)", fontSize: "10", fontFamily: "var(--font-ui)", children: cn(b) }) + ] }, `ygrid-${T}`); + }), + /* @__PURE__ */ n( + "line", + { + x1: g.margin.left, + y1: g.yToPx(1), + x2: g.margin.left + g.innerW, + y2: g.yToPx(1), + stroke: "#f97316", + strokeDasharray: "4 4", + opacity: 0.8 + } + ), + /* @__PURE__ */ n("text", { x: g.margin.left + 6, y: g.yToPx(1) - 6, fill: "#fdba74", fontSize: "10", children: "Fano = 1" }), + /* @__PURE__ */ n("line", { x1: g.margin.left, y1: g.margin.top + g.innerH, x2: g.margin.left + g.innerW, y2: g.margin.top + g.innerH, stroke: "rgba(125, 255, 155, 0.3)" }), + /* @__PURE__ */ n("line", { x1: g.margin.left, y1: g.margin.top, x2: g.margin.left, y2: g.margin.top + g.innerH, stroke: "rgba(125, 255, 155, 0.3)" }), + Array.from({ length: Math.min(t, 10) }, (b, T) => { + const E = 1 + (t - 1) * T / Math.max(1, Math.min(t - 1, 9)), I = g.xToPx(E); + return /* @__PURE__ */ i("g", { children: [ + /* @__PURE__ */ n("line", { x1: I, y1: g.margin.top + g.innerH, x2: I, y2: g.margin.top + g.innerH + 4, stroke: "rgba(125, 255, 155, 0.3)" }), + /* @__PURE__ */ n("text", { x: I, y: g.margin.top + g.innerH + 18, fill: "var(--terminal-green)", fontSize: "10", fontFamily: "var(--font-ui)", textAnchor: "middle", children: Math.round(E) }) + ] }, `xtick-${T}`); + }), + ke && /* @__PURE__ */ n("path", { d: ke, fill: "none", stroke: "#fbbf24", strokeWidth: "2", opacity: 0.95 }), + ue && /* @__PURE__ */ n("path", { d: ue, fill: "none", stroke: "#60a5fa", strokeWidth: "2.25", opacity: 0.95 }), + N && v.length > 2 && (() => { + const b = v.filter((T) => T.complexity >= F).map((T, E) => { + const I = 1 + N.predictFanoExcessFromLaneCount(T.laneCount); + return `${E === 0 ? "M" : "L"} ${g.xToPx(T.complexity)} ${g.yToPx(I)}`; + }).join(" "); + return /* @__PURE__ */ n("path", { d: b, fill: "none", stroke: "#93c5fd", strokeDasharray: "5 4", strokeWidth: "1.5", opacity: 0.8 }); + })(), + P && v.length > 2 && (() => { + const b = v.filter((T) => T.complexity >= F).map((T, E) => { + const I = 1 + P.predictFanoExcessFromLaneCount(T.laneCount); + return `${E === 0 ? "M" : "L"} ${g.xToPx(T.complexity)} ${g.yToPx(I)}`; + }).join(" "); + return /* @__PURE__ */ n("path", { d: b, fill: "none", stroke: "#22d3ee", strokeDasharray: "2 4", strokeWidth: "1.5", opacity: 0.7 }); + })(), + v.map((b) => /* @__PURE__ */ i("g", { children: [ + /* @__PURE__ */ n("circle", { cx: g.xToPx(b.complexity), cy: g.yToPx(b.fanoYellow), r: "2.2", fill: "#fbbf24" }), + /* @__PURE__ */ n("circle", { cx: g.xToPx(b.complexity), cy: g.yToPx(b.fanoBlue), r: "2.5", fill: "#60a5fa" }) + ] }, `dot-${b.complexity}`)), + /* @__PURE__ */ n("text", { x: g.margin.left + g.innerW / 2, y: g.height - 8, fill: "var(--terminal-green)", fontSize: "11", fontFamily: "var(--font-ui)", textAnchor: "middle", children: "Complexity" }), + /* @__PURE__ */ n( + "text", + { + x: 14, + y: g.margin.top + g.innerH / 2, + fill: "var(--terminal-green)", + fontSize: "11", + fontFamily: "var(--font-ui)", + textAnchor: "middle", + transform: `rotate(-90 14 ${g.margin.top + g.innerH / 2})`, + children: "Fano Factor (Var / Mean, log scale)" + } + ) + ] }) + } + ), + /* @__PURE__ */ i( + "div", + { + style: { + display: "grid", + gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))", + gap: "8px", + alignItems: "start" + }, + children: [ + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Legend" }), + /* @__PURE__ */ n("div", { style: { color: "#60a5fa" }, children: "Blue: Lightlane Fano" }), + /* @__PURE__ */ n("div", { style: { color: "#fbbf24" }, children: "Yellow: Isotropic Fano" }), + /* @__PURE__ */ n("div", { style: { color: "#fdba74", marginTop: "4px" }, children: "Dashed orange: Fano = 1" }), + /* @__PURE__ */ n("div", { style: { color: "#93c5fd", marginTop: "4px" }, children: "Dashed blue: power-fit extrapolation (blue excess over yellow)" }), + /* @__PURE__ */ n("div", { style: { color: "#22d3ee", marginTop: "4px" }, children: "Dashed cyan: floor-aware fit (B + A×N^-α)" }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Latest Point" }), + q ? /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ i("div", { children: [ + "Complexity: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.complexity }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Lanes: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.laneCount }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Mean Ratio (B/Y): ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: (q.meanBlue / Math.max(1e-9, q.meanYellow)).toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Fano Blue: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#93c5fd" }, children: q.fanoBlue.toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Fano Yellow: ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#fef3c7" }, children: q.fanoYellow.toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Excess (B-Y): ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.fanoExcess.toFixed(3) }) + ] }), + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ + "Aggregated over ", + r.toLocaleString(), + " bins × ", + a, + " seeds" + ] }) + ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "No points yet." }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Power Fit" }), + N ? /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green-soft)" }, children: [ + "Excess ≈ ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: N.A.toExponential(2) }), + " × N", + /* @__PURE__ */ i("sup", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: [ + "-", + N.alpha.toFixed(2) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ + "Fit is on blue excess over yellow using lane count N, starting at complexity ", + F, + "." + ] }) + ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "Need more points with nonzero excess." }), + P && /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [ + "Floor fit: excess ≈ ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: P.B.toFixed(3) }), + " + ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: P.A.toExponential(2) }), + " × N", + /* @__PURE__ */ i("sup", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: [ + "-", + P.alpha.toFixed(2) + ] }) + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [ + /* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Indistinguishable Target" }), + /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginBottom: "6px" }, children: [ + "Criterion: ", + /* @__PURE__ */ i("span", { style: { color: "var(--terminal-green-soft)" }, children: [ + "Fano Blue - Fano Yellow ≤ ", + y.toFixed(3) + ] }) + ] }), + H ? /* @__PURE__ */ i(Fe, { children: [ + H.blockedByFloor ? /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ n("div", { style: { color: "#ff8f8f" }, children: "Floor-aware fit predicts no finite crossing for this threshold." }), + /* @__PURE__ */ i("div", { children: [ + "Fitted excess floor:", + " ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: H.floorExcess.toFixed(3) }) + ] }), + /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: "Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau." }) + ] }) : /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ i("div", { children: [ + "Required lane count N (fit):", + " ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: Math.round(H.requiredLaneCount).toLocaleString() }) + ] }), + /* @__PURE__ */ i("div", { children: [ + "Estimated complexity:", + " ", + /* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#93c5fd" }, children: H.complexityEstimate ? Math.ceil(H.complexityEstimate.complexity).toLocaleString() : "n/a" }), + H.complexityEstimate && /* @__PURE__ */ i("span", { style: { color: "var(--terminal-green)" }, children: [ + " ", + "(", + H.complexityEstimate.mode === "observed-range" ? "interpolated from current sweep" : H.complexityEstimate.mode === "extrapolated" ? "extrapolated" : "bounded by current sweep", + ")" + ] }) + ] }) + ] }), + /* @__PURE__ */ n("div", { style: { marginTop: "6px", color: "var(--terminal-green)" }, children: H.measuredCrossing ? `Observed crossing already reached at complexity ${H.measuredCrossing.complexity}.` : "No observed crossing yet in current sweep; estimate uses fit." }) + ] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "Need a stable excess fit (nonzero blue excess across multiple points)." }) + ] }), + /* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px", color: "var(--terminal-green)" }, children: [ + "Use ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "Random Sphere" }), + " to isolate discretization convergence from path bias. Orbit mode is still useful to show persistent anisotropy on specific trajectories.", + /* @__PURE__ */ i("div", { style: { marginTop: "6px" }, children: [ + "For a stronger/cleaner claim in the video: report the threshold estimate together with ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "bin size" }), + ", ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "sub-bin sampling" }), + ", and ", + /* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "runs/point" }), + "." + ] }), + /* @__PURE__ */ n("div", { style: { marginTop: "6px" }, children: "If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers." }) + ] }) + ] + } + ) + ] }) + ] + } + ) }); +} +const Ge = new Dt("#dbeafe"); +function hn(e, t) { + const o = new Float32Array(t * 3), r = new Float32Array(t * 3), l = [], a = e + 0.01; + for (let h = 0; h < t; h += 1) { + const c = Math.random(), s = Math.random(), d = 2 * Math.PI * c, m = 1 - 2 * s, u = Math.sqrt(Math.max(0, 1 - m * m)), x = h * 3; + o[x] = a * u * Math.cos(d), o[x + 1] = a * u * Math.sin(d), o[x + 2] = a * m, r[x] = Ge.r * 0.15, r[x + 1] = Ge.g * 0.15, r[x + 2] = Ge.b * 0.15, l.push({ + speed: 0.8 + Math.random() * 2.6, + phase: Math.random() * Math.PI * 2, + minBrightness: 0.03 + Math.random() * 0.06, + maxBoost: 0.35 + Math.random() * 0.85 + }); + } + return { positions: o, colors: r, sparklePoints: l }; +} +function un({ radius: e }) { + const t = Z(null), o = 16e3, { positions: r, colors: l, sparklePoints: a } = he( + () => hn(e, o), + [e] + ); + return Qe(({ clock: h }) => { + const c = t.current; + if (!c) return; + const s = c.geometry.getAttribute("color"); + if (!s) return; + const d = h.getElapsedTime(), m = s.array; + for (let u = 0; u < a.length; u += 1) { + const x = a[u], y = Math.pow(Math.max(0, Math.sin(d * x.speed + x.phase)), 24), B = x.minBrightness + y * x.maxBoost, F = u * 3; + m[F] = Ge.r * B, m[F + 1] = Ge.g * B, m[F + 2] = Ge.b * B; + } + s.needsUpdate = !0; + }), /* @__PURE__ */ i("group", { children: [ + /* @__PURE__ */ i("mesh", { children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [e, 64, 64] }), + /* @__PURE__ */ n( + "meshStandardMaterial", + { + color: "#60a5fa", + emissive: "#1d4ed8", + emissiveIntensity: 0.18, + transparent: !0, + opacity: 0.08, + roughness: 0.15, + metalness: 0.05 + } + ) + ] }), + /* @__PURE__ */ i("mesh", { renderOrder: 2, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [e, 48, 48] }), + /* @__PURE__ */ n( + "meshBasicMaterial", + { + color: "#93c5fd", + wireframe: !0, + transparent: !0, + opacity: 0.14, + toneMapped: !1 + } + ) + ] }), + /* @__PURE__ */ i("points", { ref: t, renderOrder: 3, children: [ + /* @__PURE__ */ i("bufferGeometry", { children: [ + /* @__PURE__ */ n("bufferAttribute", { attach: "attributes-position", args: [r, 3] }), + /* @__PURE__ */ n("bufferAttribute", { attach: "attributes-color", args: [l, 3] }) + ] }), + /* @__PURE__ */ n( + "pointsMaterial", + { + size: Math.max(0.06, e * 0.018), + sizeAttenuation: !0, + transparent: !0, + opacity: 0.95, + vertexColors: !0, + depthWrite: !1, + toneMapped: !1 + } + ) + ] }) + ] }); +} +function mn({ radius: e, paused: t = !1 }) { + const o = Z(null); + return Qe((r) => { + if (!t && o.current) { + const l = r.clock.elapsedTime * 3, a = 0.5 + (Math.sin(l) + 1) / 2 * 1.5; + o.current.emissiveIntensity = a; + } + }), /* @__PURE__ */ i("mesh", { position: [0, 0, 0], children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [e, 64, 64] }), + /* @__PURE__ */ n( + "meshStandardMaterial", + { + ref: o, + color: "#ec4899", + emissive: "#db2777", + emissiveIntensity: 1, + toneMapped: !1 + } + ) + ] }); +} +function fn(e) { + const t = 2 * Math.PI; + let o = e % t; + return o < 0 && (o += t), o > Math.PI && (o = t - o), o; +} +function gn({ radius: e, theta: t, phi: o, orbitTime: r, simTime: l, thetaDrift: a = 0, paused: h = !1 }) { + const c = Z(null); + return Qe(() => { + if (!h && c.current) { + const s = o + r.current, d = fn(t + (l?.current ?? 0) * a), m = e * Math.sin(d) * Math.cos(s), u = e * Math.cos(d), x = e * Math.sin(d) * Math.sin(s); + c.current.position.set(m, u, x), c.current.lookAt(0, 0, 0); + } + }), /* @__PURE__ */ i("group", { ref: c, children: [ + /* @__PURE__ */ i("mesh", { renderOrder: 10, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.09, 16, 16] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#22d3ee", toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("mesh", { renderOrder: 9, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.16, 16, 16] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#22d3ee", transparent: !0, opacity: 0.18, toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("mesh", { rotation: [Math.PI / 2, 0, 0], children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.14, 0.18, 1, 16] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#c0c0c0", metalness: 0.8, roughness: 0.2 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.3], rotation: [Math.PI / 2, 0, 0], children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.18, 0.18, 0.16, 8] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#d4af37", metalness: 0.95, roughness: 0.18 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.6], rotation: [Math.PI / 2, 0, 0], children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.22, 0.22, 0.2, 16] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#ffd700", metalness: 1, roughness: 0.1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.7], renderOrder: 11, children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.05, 12, 12] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#f97316", toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0, 0, 0.35], rotation: [Math.PI / 2, 0, 0], renderOrder: 8, children: [ + /* @__PURE__ */ n("cylinderGeometry", { args: [0.015, 0.015, 0.7, 8] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#f97316", transparent: !0, opacity: 0.7, toneMapped: !1 }) + ] }), + /* @__PURE__ */ i("group", { position: [0, 0, 0.22], children: [ + /* @__PURE__ */ i("mesh", { position: [0.6, 0, 0], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.8, 0.4, 0.05] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#1e3a8a", metalness: 0.5, roughness: 0.1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [-0.6, 0, 0], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.8, 0.4, 0.05] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#1e3a8a", metalness: 0.5, roughness: 0.1 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [0.28, 0, -0.01], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.18, 0.05, 0.04] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#94a3b8", metalness: 0.7, roughness: 0.22 }) + ] }), + /* @__PURE__ */ i("mesh", { position: [-0.28, 0, -0.01], children: [ + /* @__PURE__ */ n("boxGeometry", { args: [0.18, 0.05, 0.04] }), + /* @__PURE__ */ n("meshStandardMaterial", { color: "#94a3b8", metalness: 0.7, roughness: 0.22 }) + ] }) + ] }) + ] }); +} +const ce = { + solid: "#60a5fa", + dark: "#3b82f6", + light: "#93c5fd", + glow: "rgba(96,165,250,0.5)", + panel: "rgba(0,20,40,0.8)" +}, ae = { + solid: "#fbbf24", + dark: "#f59e0b", + light: "#fef3c7", + glow: "rgba(251,191,36,0.5)" +}, it = "var(--font-headline)", pe = "var(--font-ui)", xn = "var(--terminal-green)", Ae = "var(--terminal-green-soft)", ye = "var(--terminal-green-muted)"; +function bn({ bars: e }) { + const t = window.innerHeight; + return /* @__PURE__ */ i(Fe, { children: [ + e.map((o) => { + const r = t - o.startBottom - o.barHeight, l = o.targetLeft - o.startLeft, a = o.targetTop - r; + return /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: `${o.startLeft}px`, + top: `${r}px`, + width: `${o.barWidth}px`, + height: `${o.barHeight}px`, + background: o.color, + borderRadius: "2px 2px 0 0", + opacity: 0.95, + animation: "flyToDistribution 1.2s ease-in-out forwards", + "--delta-x": `${l}px`, + "--delta-y": `${a}px`, + zIndex: 1e3, + boxShadow: `0 0 15px ${o.color}` + } + }, + o.id + ); + }), + /* @__PURE__ */ n("style", { children: ` + @keyframes flyToDistribution { + 0% { + transform: translate(0, 0) scale(1); + opacity: 0.95; + } + 40% { + transform: translate(calc(var(--delta-x) * 0.3), calc(var(--delta-y) * 0.5)) scale(0.9); + opacity: 0.9; + } + 85% { + transform: translate(calc(var(--delta-x) * 0.95), calc(var(--delta-y) * 0.95)) scale(0.7); + opacity: 0.85; + } + 100% { + transform: translate(var(--delta-x), var(--delta-y)) scale(0.6); + opacity: 0; + } + } + .clickable-bar { + transition: all 0.2s ease; + } + .clickable-bar:hover { + transform: scaleY(1.1) scaleX(1.2); + filter: brightness(1.3); + box-shadow: 0 0 10px currentColor; + } + ` }) + ] }); +} +function at() { + return { n: 0, meanObs: 0, m2Obs: 0, meanIso: 0, m2Iso: 0 }; +} +function yn(e, t, o) { + const r = e.n + 1, l = t - e.meanObs, a = e.meanObs + l / r, h = e.m2Obs + l * (t - a), c = o - e.meanIso, s = e.meanIso + c / r, d = e.m2Iso + c * (o - s); + return { n: r, meanObs: a, m2Obs: h, meanIso: s, m2Iso: d }; +} +function vn({ + complexity: e, + radius: t, + distance: o, + theta: r, + phi: l, + observationMode: a, + allSectors: h, + cumulative: c, + K: s, + orbitRadius: d, + orbitVelocity: m, + thetaDrift: u, + thetaJitter: x, + phiJitter: y, + usePoisson: B, + speedup: F, + paused: R, + sceneView: C, + bottomInset: j = 0, + showNumericDiagnostics: v = !0, + compactNumericDiagnostics: L = !1, + host: O, + centerDistribution: J = !1, + hideFlyingBars: _ = !1 +}) { + const [k, A] = $({ + current: 0, + total: 0, + lastCheck: 0, + overlaps: 0, + currentTheory: 0, + binOverlapsMean: 0, + currentExpectedLightlane: 0 + }), ee = 4, z = he(() => It({ + D: d, + theta: r, + phi: l, + observationMode: a, + velocity: m, + thetaDrift: u, + thetaJitter: x, + phiJitter: y, + distance: o, + hitTestModel: "segment", + bin_size: 1, + complexity: e, + sub_bin_sampling: ee, + flux: s, + lane_radius: t, + allSectors: h, + cumulative: c, + usePoisson: B + }), [d, r, l, a, m, u, x, y, e, s, t, o, h, c, B]), D = 60, N = Z(new Array(D).fill(-1)), P = Z(new Array(D).fill(-1)), H = Z(0), [g, ue] = $(new Array(D).fill(-1)), [ke, q] = $(new Array(D).fill(-1)), b = Et({ + flux: s, + D: d, + lane_radius: t, + dt: 1, + hitTestModel: "segment", + lane_length: o + }), T = Math.sqrt(b), E = 15, I = 4 * T, ne = Math.max(0, b - I), G = b + I, se = B, ve = Math.max(0, Math.floor(ne)), Re = Math.max(ve, Math.ceil(G)), X = se ? Re - ve + 1 : E, Pe = se ? 1 : Math.max(1e-9, (G - ne) / E), Be = (f) => { + if (se) { + const S = Math.round(f); + return S <= ve ? 0 : S >= Re ? X - 1 : S - ve; + } + return f < ne ? 0 : f >= G ? X - 1 : Math.floor((f - ne) / Pe); + }, Je = (f) => se ? ve + f : ne + (f + 0.5) * Pe, [me, Ee] = $(new Array(X).fill(0)), [Se, Y] = $(new Array(X).fill(0)), [Ie, le] = $(/* @__PURE__ */ new Set()), [qe, Le] = $(/* @__PURE__ */ new Set()), [Ne, ze] = $([]), $e = Z(0), _e = Z(at()), [U, Ze] = $(at()), et = Z(R), tt = Z(0); + de(() => { + Ee(new Array(X).fill(0)), Y(new Array(X).fill(0)), N.current.fill(-1), P.current.fill(-1), H.current = 0, ue(new Array(D).fill(-1)), q(new Array(D).fill(-1)), le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set()), ze([]), _e.current = at(), Ze(at()), A({ + current: 0, + total: 0, + lastCheck: 0, + overlaps: 0, + currentTheory: 0, + binOverlapsMean: 0, + currentExpectedLightlane: 0 + }); + }, [e, s, t, o, d, r, l, a, m, u, x, y, h, c, B, X]); + const nt = (f, S) => { + if (f.length === 0) return; + let w = 0, oe = 0, te = 0, fe = k.binOverlapsMean, V = k.currentExpectedLightlane, re = _e.current; + for (const ie of f) { + const ge = ie.lightlane, xe = ie.isotropic; + if (w += ge, oe = ge, te = xe, fe = ie.overlapsMean, V = ie.lambdaLightlaneExpected, re = yn(re, ge, xe), N.current[H.current] = ge, P.current[H.current] = xe, H.current++, H.current >= D) { + const Me = Math.max(10, ...N.current.filter((Q) => Q >= 0), ...P.current.filter((Q) => Q >= 0)); + K([...N.current], [...P.current], Me), N.current.fill(-1), P.current.fill(-1), H.current = 0, le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set()); + } + } + _e.current = re, A((ie) => ({ + current: oe, + total: ie.total + w, + lastCheck: Date.now(), + overlaps: S, + currentTheory: te, + binOverlapsMean: fe, + currentExpectedLightlane: V + })), Ze(re), ue([...N.current]), q([...P.current]); + }, He = Z(!1), We = Z(null), ot = (f, S) => { + f.stopPropagation(), He.current = !0, We.current = S, f.target.setPointerCapture(f.pointerId), Ce(O, we.click, { target: `${S}-periodogram`, action: "pointer-down" }); + }, rt = (f, S, w, oe) => { + if (!He.current || We.current !== S) return; + f.stopPropagation(); + const te = f.currentTarget.getBoundingClientRect(), fe = f.clientX - te.left, V = Math.floor(fe / te.width * D); + if (V >= 0 && V < D) { + const re = w[V], ie = S === "observed" ? Ie.has(V) : qe.has(V); + re >= 0 && !ie && W(V, re, S, oe); + } + }, p = (f) => { + f.stopPropagation(), He.current = !1, We.current = null; + }, M = (f, S, w, oe) => { + const te = window.innerWidth, fe = f / D * te, V = te / D, re = Math.max(2, S / oe * 80), xe = w === "observed" ? 25 : 110, Me = Be(S), Q = 20, be = te - 2 * Q, Te = Q + (Me + 0.5) / X * be; + return { startLeft: fe, startBottom: xe, barHeight: re, barWidth: V, targetLeft: Te, targetTop: 150, binIndex: Me }; + }, W = (f, S, w, oe) => { + if (S < 0) return; + const te = Date.now(); + te - tt.current >= 45 && (tt.current = te, Ce(O, we.computeStep, { target: `${w}-periodogram`, value: S })); + const { startLeft: fe, startBottom: V, barHeight: re, barWidth: ie, targetLeft: ge, targetTop: xe } = M(f, S, w, oe), Me = { + id: $e.current++, + value: S, + startLeft: fe, + startBottom: V, + barHeight: re, + barWidth: ie, + targetLeft: ge, + targetTop: xe, + color: w === "observed" ? ae.solid : ce.solid, + type: w + }; + ze((Q) => [...Q, Me]), w === "observed" ? (le((Q) => new Set(Q).add(f)), Ee((Q) => { + const be = [...Q], Te = Be(S); + return be[Te]++, be; + })) : (Le((Q) => new Set(Q).add(f)), Y((Q) => { + const be = [...Q], Te = Be(S); + return be[Te]++, be; + })); + }, K = (f, S, w) => { + const oe = [], te = [...me], fe = [...Se]; + f.forEach((V, re) => { + if (V >= 0) { + const { startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, binIndex: Te } = M(re, V, "observed", w); + oe.push({ + id: $e.current++, + value: V, + startLeft: ie, + startBottom: ge, + barHeight: xe, + barWidth: Me, + targetLeft: Q, + targetTop: be, + color: ae.solid, + type: "observed" + }), te[Te]++; + } + }), S.forEach((V, re) => { + if (V >= 0) { + const { startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, binIndex: Te } = M(re, V, "theory", w); + oe.push({ + id: $e.current++, + value: V, + startLeft: ie, + startBottom: ge, + barHeight: xe, + barWidth: Me, + targetLeft: Q, + targetTop: be, + color: ce.solid, + type: "theory" + }), fe[Te]++; + } + }), ze((V) => [...V, ...oe]), Ee(te), Y(fe); + }; + de(() => { + if (Ne.length > 0) { + const f = setTimeout(() => { + ze([]); + }, 1300); + return () => clearTimeout(f); + } + }, [Ne.length]); + const Ve = Z(0); + de(() => { + H.current < Ve.current && (le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set())), Ve.current = H.current; + }), de(() => { + const f = et.current; + if (et.current = R, !R || f) return; + const S = z.flushPartialBin(); + S && nt([S], S.overlaps); + }, [R, z]), Qe((f, S) => { + if (R) return; + const w = z.simulate(S * F); + w.subBinEvents > 0 && A((oe) => ({ ...oe, overlaps: w.lastLaneCount })), nt(w.bins, w.lastLaneCount); + }); + const zt = g.filter((f) => f >= 0), Rt = ke.filter((f) => f >= 0), lt = Math.max(10, Math.max(0, ...zt)), ct = Math.max(10, Math.max(0, ...Rt)), ft = Math.max(1, ...me, ...Se), gt = U.n > 1 ? U.m2Obs / (U.n - 1) : 0, dt = U.n > 1 ? U.m2Iso / (U.n - 1) : 0, Lt = U.meanIso > 0 ? U.meanObs / U.meanIso : 0, xt = dt > 0 ? gt / dt : 0, pt = U.meanObs > 0 ? gt / U.meanObs : 0, Xe = U.meanIso > 0 ? dt / U.meanIso : 0, ht = z.getLaneCount(), bt = ht > 0 && s > 0 ? ht * b / s : 0, yt = v && !L, Ke = C !== "lightlane", Oe = C !== "poisson", $t = Ne.filter((f) => f.type === "theory" && Ke || f.type === "observed" && Oe), Ot = C === "poisson" ? "Shot Noise Distribution" : C === "lightlane" ? "Shot Noise + Lightlane" : "Head to Head", je = { + background: "rgba(255,255,255,0.04)", + border: "1px solid var(--terminal-panel-border)", + borderRadius: "6px", + padding: "6px 8px", + fontFamily: pe + }, vt = /* @__PURE__ */ i("div", { style: { + marginTop: L ? "0" : "12px", + display: "grid", + gridTemplateColumns: L ? "1fr" : "repeat(3, minmax(0, 1fr))", + gap: L ? "6px" : "8px", + fontSize: "10px", + color: Ae, + fontFamily: pe + }, children: [ + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Samples" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace" }, children: U.n }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Mean Ratio (Lightlane/Poisson)" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: Ae }, children: U.n > 0 ? Lt.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Var Ratio (Lightlane/Poisson)" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: xt > 1.1 ? ae.light : ce.light }, children: U.n > 1 ? xt.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Lightlane" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: ae.light }, children: U.n > 1 ? pt.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Poisson" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: ce.light }, children: U.n > 1 ? Xe.toFixed(3) : "n/a" }) + ] }), + /* @__PURE__ */ i("div", { style: je, children: [ + /* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Ratio (Lightlane/Poisson)" }), + /* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: Xe > 0 && pt / Xe > 1.05 ? ae.light : Ae }, children: U.n > 1 && Xe > 0 ? (pt / Xe).toFixed(3) : "n/a" }) + ] }) + ] }), St = /* @__PURE__ */ i("div", { style: { + marginTop: L ? "6px" : "8px", + display: L ? "grid" : "flex", + gridTemplateColumns: L ? "1fr" : void 0, + justifyContent: L ? void 0 : "center", + gap: L ? "4px" : "12px", + flexWrap: L ? void 0 : "wrap", + fontSize: "10px", + color: ye, + fontFamily: pe + }, children: [ + /* @__PURE__ */ i("span", { children: [ + "LC(now): ", + k.overlaps + ] }), + /* @__PURE__ */ i("span", { children: [ + "LC(bin avg): ", + k.binOverlapsMean.toFixed(2) + ] }), + /* @__PURE__ */ i("span", { children: [ + "LC iso target: ", + Number.isFinite(bt) ? bt.toFixed(2) : "n/a" + ] }), + /* @__PURE__ */ i("span", { children: [ + "E[Lightlane|bin]: ", + k.currentExpectedLightlane.toFixed(2) + ] }), + /* @__PURE__ */ i("span", { children: [ + "Lightlane(last): ", + typeof k.current == "number" ? Number(k.current).toFixed(2) : k.current + ] }), + /* @__PURE__ */ i("span", { children: [ + "Lanes: ", + ht + ] }), + /* @__PURE__ */ i("span", { children: [ + "Mode: ", + a === "randomSphere" ? "Random Sphere" : "Orbit" + ] }), + /* @__PURE__ */ i("span", { children: [ + "theta drift: ", + u.toFixed(3) + ] }), + /* @__PURE__ */ i("span", { children: [ + "theta jitter: ", + x.toFixed(3) + ] }), + /* @__PURE__ */ i("span", { children: [ + "phi jitter: ", + y.toFixed(3) + ] }) + ] }); + return /* @__PURE__ */ i(Fe, { children: [ + !_ && /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none" }, children: /* @__PURE__ */ n(bn, { bars: $t }) }), + /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", display: "flex", flexDirection: "column", justifyContent: J ? "center" : "flex-start" }, children: [ + /* @__PURE__ */ i("div", { style: { + position: "absolute", + top: "18px", + left: "20px", + right: "20px", + color: Ae, + fontSize: "12px", + fontWeight: 400, + textAlign: "center", + textTransform: "uppercase", + letterSpacing: "0.16em", + fontFamily: it + }, children: [ + Ot, + /* @__PURE__ */ i("span", { style: { fontSize: "10px", fontWeight: "normal", marginLeft: "10px", opacity: 0.8, fontFamily: pe, color: xn }, children: [ + "(λ = ", + b.toFixed(1), + ", σ = ", + T.toFixed(1), + ")" + ] }) + ] }), + /* @__PURE__ */ i("div", { style: { + width: "100%", + padding: J ? "20px" : "60px 20px 20px 20px", + background: J ? "transparent" : "linear-gradient(to bottom, rgba(0,0,0,0.9), transparent)", + fontFamily: pe, + alignSelf: "center" + }, children: [ + /* @__PURE__ */ n("div", { style: { + position: "absolute", + left: "5px", + top: J ? "130px" : "170px", + transform: "rotate(-90deg)", + transformOrigin: "left top", + fontSize: "10px", + color: ye, + fontStyle: "italic", + whiteSpace: "nowrap", + fontFamily: pe + }, children: "← Frequency (how many)" }), + /* @__PURE__ */ n("div", { style: { + display: "flex", + height: "100px", + gap: "2px", + alignItems: "flex-end", + padding: "0 20px" + }, children: me.map((f, S) => { + const w = Se[S], oe = f / ft * 100, te = w / ft * 100; + return /* @__PURE__ */ i("div", { style: { + flex: 1, + display: "flex", + flexDirection: "column", + alignItems: "center", + position: "relative", + height: "100%", + justifyContent: "flex-end" + }, children: [ + /* @__PURE__ */ i("div", { style: { + width: "100%", + display: "flex", + justifyContent: "center", + gap: "1px", + alignItems: "flex-end", + height: "100%", + position: "relative" + }, children: [ + Ke && /* @__PURE__ */ n("div", { style: { + width: Oe ? "45%" : "92%", + height: `${te}%`, + background: `linear-gradient(to top, ${ce.solid}, ${ce.dark})`, + borderRadius: "2px 2px 0 0", + minHeight: w > 0 ? "2px" : "0", + transition: "height 0.3s ease", + boxShadow: w > 0 ? `0 0 5px ${ce.glow}` : "none", + position: "relative" + }, children: w > 0 && /* @__PURE__ */ n("div", { style: { + position: "absolute", + top: "-16px", + left: "50%", + transform: "translateX(-50%)", + fontSize: "9px", + fontWeight: "bold", + color: ce.solid, + textShadow: "0 0 3px rgba(0,0,0,0.8)" + }, children: w }) }), + Oe && /* @__PURE__ */ n("div", { style: { + width: Ke ? "45%" : "92%", + height: `${oe}%`, + background: `linear-gradient(to top, ${ae.solid}, ${ae.dark})`, + borderRadius: "2px 2px 0 0", + minHeight: f > 0 ? "2px" : "0", + transition: "height 0.3s ease", + boxShadow: f > 0 ? `0 0 5px ${ae.glow}` : "none", + position: "relative" + }, children: f > 0 && /* @__PURE__ */ n("div", { style: { + position: "absolute", + top: "-16px", + left: "50%", + transform: "translateX(-50%)", + fontSize: "9px", + fontWeight: "bold", + color: ae.solid, + textShadow: "0 0 3px rgba(0,0,0,0.8)" + }, children: f }) }) + ] }), + /* @__PURE__ */ n("div", { style: { + position: "absolute", + bottom: "-18px", + fontSize: "9px", + color: ye, + fontWeight: "bold", + fontFamily: pe + }, children: Je(S).toFixed(0) }) + ] }, S); + }) }), + /* @__PURE__ */ n("div", { style: { + textAlign: "center", + marginTop: "25px", + fontSize: "10px", + color: ye, + fontStyle: "italic", + fontFamily: pe + }, children: "Photon Count Value →" }), + /* @__PURE__ */ i("div", { style: { + display: "flex", + justifyContent: "center", + gap: "20px", + marginTop: "25px", + fontSize: "10px" + }, children: [ + Ke && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "5px" }, children: [ + /* @__PURE__ */ n("div", { style: { width: "12px", height: "12px", background: ce.solid, borderRadius: "2px" } }), + /* @__PURE__ */ n("span", { style: { color: ce.solid }, children: "Theory (Poisson)" }) + ] }), + Oe && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "5px" }, children: [ + /* @__PURE__ */ n("div", { style: { width: "12px", height: "12px", background: ae.solid, borderRadius: "2px" } }), + /* @__PURE__ */ n("span", { style: { color: ae.solid }, children: "Observed (Lightlanes)" }) + ] }) + ] }), + yt && vt, + yt && St + ] }) + ] }), + v && L && /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none" }, children: /* @__PURE__ */ i("div", { style: { + position: "absolute", + top: "88px", + left: "12px", + width: "min(300px, calc(100vw - 24px))", + background: "linear-gradient(to bottom, rgba(0,0,0,0.88), rgba(0,0,0,0.55))", + border: "1px solid var(--terminal-panel-border)", + borderRadius: "10px", + padding: "10px", + boxShadow: "0 8px 24px rgba(0,0,0,0.35)", + fontFamily: pe + }, children: [ + /* @__PURE__ */ n("div", { style: { + color: Ae, + fontSize: "10px", + textTransform: "uppercase", + letterSpacing: "0.08em", + marginBottom: "8px", + fontWeight: 400, + fontFamily: it + }, children: "Diagnostics" }), + vt, + St + ] }) }), + /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", display: "flex", flexDirection: "column", justifyContent: "flex-end", paddingBottom: `${j}px`, boxSizing: "border-box" }, children: [ + Ke && /* @__PURE__ */ i( + "div", + { + onPointerDown: (f) => ot(f, "theory"), + onPointerMove: (f) => rt(f, "theory", ke, ct), + onPointerUp: p, + onPointerLeave: p, + style: { + width: "100%", + height: "100px", + background: `linear-gradient(to top, ${ce.panel}, transparent)`, + display: "flex", + alignItems: "flex-end", + padding: Oe ? "0 20px 5px 20px" : "0 20px 20px 20px", + gap: "2px", + position: "relative", + borderBottom: Oe ? "1px solid #555" : "none", + pointerEvents: "auto", + touchAction: "none", + cursor: "crosshair" + }, + children: [ + /* @__PURE__ */ n("div", { style: { position: "absolute", top: "10px", left: "20px", color: ce.solid, fontSize: "10px", fontWeight: 400, pointerEvents: "none", fontFamily: it, letterSpacing: "0.08em" }, children: "THEORY (Poisson) - Swipe or click to count" }), + ke.map((f, S) => { + const w = qe.has(S); + return /* @__PURE__ */ n( + "div", + { + className: f >= 0 && !w ? "clickable-bar" : "", + style: { + flex: 1, + height: f >= 0 && !w ? `${f / ct * 100}%` : "0", + background: f === 0 ? "rgba(255,255,255,0.1)" : ce.solid, + color: ce.solid, + minHeight: f >= 0 && !w ? "1px" : "0", + transition: "all 0.3s ease", + opacity: w ? 0 : 0.8, + borderRadius: "2px 2px 0 0", + transform: w ? "scale(0)" : "scale(1)", + pointerEvents: "none" + } + }, + S + ); + }), + /* @__PURE__ */ i("div", { style: { position: "absolute", bottom: "10px", right: "80px", color: Ae, fontFamily: pe, fontSize: "10px", pointerEvents: "none" }, children: [ + "Max: ", + ct + ] }) + ] + } + ), + Oe && /* @__PURE__ */ i( + "div", + { + onPointerDown: (f) => ot(f, "observed"), + onPointerMove: (f) => rt(f, "observed", g, lt), + onPointerUp: p, + onPointerLeave: p, + style: { + width: "100%", + height: "100px", + background: "linear-gradient(to top, rgba(0,0,0,0.8), transparent)", + display: "flex", + alignItems: "flex-end", + padding: "0 20px 20px 20px", + gap: "2px", + position: "relative", + pointerEvents: "auto", + touchAction: "none", + cursor: "crosshair" + }, + children: [ + /* @__PURE__ */ n("div", { style: { position: "absolute", top: "10px", left: "20px", color: ae.solid, fontSize: "10px", fontWeight: 400, pointerEvents: "none", fontFamily: it, letterSpacing: "0.08em" }, children: "OBSERVED (Lightlanes) - Swipe or click to count" }), + g.map((f, S) => { + const w = Ie.has(S); + return /* @__PURE__ */ n( + "div", + { + className: f >= 0 && !w ? "clickable-bar" : "", + style: { + flex: 1, + height: f >= 0 && !w ? `${f / lt * 100}%` : "0", + background: f === 0 ? "rgba(255,255,255,0.1)" : f > 0 ? ae.solid : "transparent", + color: ae.solid, + minHeight: f >= 0 && !w ? "2px" : "0", + transition: "all 0.3s ease", + borderTop: f >= 0 && !w ? `2px solid ${ae.light}` : "none", + opacity: w ? 0 : 0.8, + position: "relative", + borderRadius: "2px 2px 0 0", + transform: w ? "scale(0)" : "scale(1)", + pointerEvents: "none" + }, + children: (S + 1) % 5 === 0 && !w && /* @__PURE__ */ n("div", { style: { + position: "absolute", + bottom: "-20px", + left: "50%", + transform: "translateX(-50%)", + width: "1px", + height: "5px", + background: "#fff", + opacity: 0.5, + pointerEvents: "none" + }, children: /* @__PURE__ */ n("span", { style: { position: "absolute", top: "5px", left: "-50%", fontSize: "10px", color: ye, fontFamily: pe }, children: S + 1 }) }) + }, + S + ); + }), + /* @__PURE__ */ i("div", { style: { position: "absolute", bottom: "10px", right: "80px", color: Ae, fontFamily: pe, fontSize: "10px" }, children: [ + "Max: ", + lt + ] }) + ] + } + ) + ] }) + ] }); +} +const Sn = { + complexity: 1, + radius: 2, + distance: 5, + chandraDistance: 6, + showAxes: !1, + // Cleaner look for challenge + lightlanes: !0, + // Always show lightlanes + allSectors: !0, + cumulative: !1, + phi: 0, + theta: Math.PI / 2, + observationMode: "orbit", + orbitSpeed: 0.2, + thetaDrift: 0, + thetaJitter: 0, + phiJitter: 0, + speedup: 1, + K: 1e3, + usePoisson: !0, + sceneView: "both", + hideScenePresentation: !1, + hideFlyingBars: !1, + hideDataBoxes: !1 +}; +function kn(e) { + const t = e.host, o = e.devUi?.compactNumericDiagnostics ?? !1, r = e.devUi?.maxComplexity ?? 20, l = e.devUi?.maxSpeedup ?? 240, a = 74, h = 20, c = e.config?.params || {}, { + complexity: s, + radius: d, + distance: m, + chandraDistance: u, + showAxes: x, + lightlanes: y, + allSectors: B, + cumulative: F, + phi: R, + theta: C, + observationMode: j, + orbitSpeed: v, + thetaDrift: L, + thetaJitter: O, + phiJitter: J, + speedup: _, + K: k, + usePoisson: A, + sceneView: ee, + hideScenePresentation: z, + hideFlyingBars: D, + hideDataBoxes: N + } = { ...Sn, ...c }, P = !N, H = Z(0), g = Z(0), [ue, ke] = $(!1), [q, b] = $("scene"), [T, E] = $(ee), [I, ne] = $(s), [G, se] = $(_), [ve, Re] = $(null), X = Z(null); + de(() => { + E(ee); + }, [ee]), de(() => { + ne(s); + }, [s]), de(() => { + se(_); + }, [_]); + const Pe = G > 20, Be = T !== "lightlane", Je = T !== "poisson", me = q === "scene" && T !== "poisson", Ee = (p) => p === "poisson" ? "Poisson" : p === "lightlane" ? "Lightlane" : "Both", Se = () => { + Ce(t, we.hover, { page: q, sceneView: T }); + }, Y = (p, M) => { + Ce(t, we.click, { page: q, sceneView: T, target: p, ...M }); + }, Ie = (p) => { + Re(p), X.current && clearTimeout(X.current), X.current = setTimeout(() => { + Re(null), X.current = null; + }, 1500); + }, le = (p) => { + const M = Array.from({ length: h }, (W, K) => K === 0 ? 1 : K === h - 1 ? p : Math.round(1 + (p - 1) * K / (h - 1))); + return Array.from(new Set(M)).sort((W, K) => W - K); + }, qe = (p, M) => { + const W = le(M); + return W.find((K) => p < K) ?? W[W.length - 1]; + }, Le = (p, M) => { + const W = le(M); + for (let K = W.length - 1; K >= 0; K -= 1) + if (p > W[K]) return W[K]; + return W[0]; + }, Ne = (p, M) => { + const W = le(M), K = W.findIndex((Ve) => p <= Ve); + return K >= 0 ? K : W.length - 1; + }, ze = Ne(I, r), $e = Ne(G, l), _e = `${(ze + 1) / h * 100}%`, U = `${($e + 1) / h * 100}%`, Ze = me && I > le(r)[0], et = me && I < le(r).at(-1), tt = G > le(l)[0], nt = G < le(l).at(-1), He = (p) => { + if (!me) return; + const M = p === "up" ? qe(I, r) : Le(I, r); + M !== I && (Y("complexity", { direction: p, value: M }), ne(M), e.devUi?.onSetParam?.("complexity", M), Ie(`Complexity ${M}`)); + }, We = (p) => { + const M = p === "up" ? qe(G, l) : Le(G, l); + M !== G && (Y("turbo", { direction: p, value: M }), se(M), e.devUi?.onSetParam?.("speedup", M), Ie(`Turbo ${M}x`)); + }, ot = () => { + const p = ["poisson", "lightlane", "both"], M = p.indexOf(T), W = p[(M + 1) % p.length]; + Y("mode", { value: W }), E(W), Ie(`Mode ${Ee(W)}`); + }, rt = () => { + Y("fano-page", { value: q === "scene" ? "fano" : "scene" }), b((p) => p === "scene" ? "fano" : "scene"); + }; + return de(() => { + const p = (M) => { + if (M.code !== "Space" || M.repeat) return; + const W = M.target, K = W?.tagName; + K === "INPUT" || K === "TEXTAREA" || W?.isContentEditable || (M.preventDefault(), ke((Ve) => !Ve)); + }; + return window.addEventListener("keydown", p), () => window.removeEventListener("keydown", p); + }, []), de(() => () => { + X.current && clearTimeout(X.current); + }, []), Qe((p, M) => { + ue || q === "fano" || (H.current += M * v * G, g.current += M * G); + }), de(() => { + H.current = 0, g.current = 0; + }, [ + I, + d, + m, + u, + R, + C, + j, + v, + L, + O, + J, + G, + k, + B, + F, + A + ]), /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none", zIndex: 3e3 }, children: /* @__PURE__ */ n("div", { style: { position: "absolute", top: 12, right: 12, display: "flex", gap: 8, pointerEvents: "auto" }, children: /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: () => { + Y("advanced"), e.devUi?.onOpenHarness?.(); + }, + onPointerEnter: Se, + style: { + border: "1px solid var(--terminal-panel-border)", + background: "rgba(7,19,11,0.86)", + color: "var(--terminal-green-soft)", + borderRadius: 10, + padding: "10px 12px", + fontSize: 12, + fontWeight: 400, + letterSpacing: "0.08em", + fontFamily: "var(--font-headline)", + textTransform: "uppercase", + cursor: "pointer", + boxShadow: "0 8px 24px rgba(0,0,0,0.25)" + }, + children: "Advanced" + } + ) }) }), + /* @__PURE__ */ n("ambientLight", { intensity: 0.4 }), + /* @__PURE__ */ n("directionalLight", { position: [10, 10, 5], intensity: 1, castShadow: !0 }), + /* @__PURE__ */ n("pointLight", { position: [-10, -10, -10], intensity: 0.5, color: "blue" }), + q === "scene" ? /* @__PURE__ */ i(Fe, { children: [ + !z && Be && /* @__PURE__ */ n(un, { radius: u }), + !z && Je && /* @__PURE__ */ n( + Wt, + { + complexity: I, + lightlanes: y, + radius: d, + distance: m, + allSectors: B, + cumulative: F + } + ), + !z && /* @__PURE__ */ n(mn, { radius: d, paused: ue }), + /* @__PURE__ */ n( + gn, + { + radius: u, + theta: C, + phi: R, + orbitTime: H, + simTime: g, + thetaDrift: L, + paused: ue + } + ), + /* @__PURE__ */ n( + vn, + { + complexity: I, + radius: d, + distance: m, + theta: C, + phi: R, + observationMode: j, + allSectors: B, + cumulative: F, + K: k, + orbitRadius: u, + orbitVelocity: v, + thetaDrift: L, + thetaJitter: O, + phiJitter: J, + usePoisson: A, + speedup: G, + paused: ue, + sceneView: T, + bottomInset: a, + showNumericDiagnostics: P, + compactNumericDiagnostics: o, + host: t, + centerDistribution: z, + hideFlyingBars: D || Pe + } + ), + ue && /* @__PURE__ */ n("group", { position: [0, u + 1.5, 0], children: /* @__PURE__ */ i("mesh", { children: [ + /* @__PURE__ */ n("sphereGeometry", { args: [0.12, 16, 16] }), + /* @__PURE__ */ n("meshBasicMaterial", { color: "#ef4444", toneMapped: !1 }) + ] }) }), + x && /* @__PURE__ */ n("axesHelper", { args: [Math.max(5, I)] }), + /* @__PURE__ */ n( + At, + { + infiniteGrid: !0, + fadeDistance: 50, + sectionColor: "#333", + cellColor: "#111", + position: [0, -0.01, 0] + } + ) + ] }) : /* @__PURE__ */ n( + pn, + { + radius: d, + distance: m, + chandraDistance: u, + allSectors: B, + cumulative: F, + theta: C, + phi: R, + orbitSpeed: v, + thetaDrift: L, + thetaJitter: O, + phiJitter: J, + K: k, + speedup: G, + usePoisson: A, + bottomInset: a, + onBack: () => b("scene"), + host: t + } + ), + /* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", zIndex: 3200 }, children: [ + ve && /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%) skewX(-12deg)", + padding: "16px 28px", + color: "var(--terminal-green-soft)", + fontFamily: "var(--font-headline)", + fontStyle: "italic", + fontSize: 42, + letterSpacing: "0.16em", + textTransform: "uppercase", + textShadow: "0 0 20px rgba(125,255,155,0.38), 0 0 42px rgba(125,255,155,0.18)" + }, + children: /* @__PURE__ */ n("span", { style: { display: "inline-block", transform: "skewX(12deg)" }, children: ve }) + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 10, + bottom: a + 16, + width: 26, + height: "min(44vh, 320px)", + display: "flex", + alignItems: "flex-end" + }, + children: /* @__PURE__ */ i( + "div", + { + style: { + position: "relative", + width: "100%", + height: "100%", + borderRadius: 14, + border: "1px solid rgba(251,191,36,0.35)", + background: "linear-gradient(to top, rgba(30,18,0,0.92), rgba(7,19,11,0.15))", + boxShadow: "0 0 22px rgba(251,191,36,0.12)", + overflow: "hidden", + opacity: me ? 1 : 0.35, + transition: "opacity 0.2s ease" + }, + children: [ + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "6px", + borderRadius: 10, + border: "1px solid rgba(251,191,36,0.14)" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 5, + right: 5, + bottom: 5, + height: _e, + borderRadius: 9, + background: "linear-gradient(to top, rgba(245,158,11,0.96), rgba(253,224,71,0.96))", + boxShadow: "0 0 18px rgba(251,191,36,0.5)", + transition: "height 0.25s ease" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "8px 7px", + display: "grid", + gridTemplateRows: `repeat(${h}, 1fr)`, + pointerEvents: "none" + }, + children: Array.from({ length: h }).map((p, M) => /* @__PURE__ */ n( + "div", + { + style: { + borderTop: M === 0 ? "none" : "1px solid rgba(251,191,36,0.15)" + } + }, + `complexity-tick-${M}` + )) + } + ), + /* @__PURE__ */ i( + "div", + { + style: { + position: "absolute", + left: 34, + bottom: 0, + color: "#fcd34d", + fontFamily: "var(--font-headline)", + fontSize: 10, + letterSpacing: "0.08em", + textTransform: "uppercase", + writingMode: "vertical-rl", + transform: "rotate(180deg)", + textShadow: "0 0 12px rgba(251,191,36,0.25)" + }, + children: [ + "Complexity ", + ze + 1, + "/", + h + ] + } + ) + ] + } + ) + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + right: 10, + bottom: a + 16, + width: 26, + height: "min(44vh, 320px)", + display: "flex", + alignItems: "flex-end" + }, + children: /* @__PURE__ */ i( + "div", + { + style: { + position: "relative", + width: "100%", + height: "100%", + borderRadius: 14, + border: "1px solid rgba(244,114,182,0.35)", + background: "linear-gradient(to top, rgba(42,7,23,0.94), rgba(7,19,11,0.15))", + boxShadow: "0 0 22px rgba(244,114,182,0.14)", + overflow: "hidden" + }, + children: [ + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "6px", + borderRadius: 10, + border: "1px solid rgba(244,114,182,0.14)" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 5, + right: 5, + bottom: 5, + height: U, + borderRadius: 9, + background: "linear-gradient(to top, rgba(236,72,153,0.96), rgba(244,114,182,0.98))", + boxShadow: "0 0 18px rgba(244,114,182,0.5)", + transition: "height 0.25s ease" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + inset: "8px 7px", + display: "grid", + gridTemplateRows: `repeat(${h}, 1fr)`, + pointerEvents: "none" + }, + children: Array.from({ length: h }).map((p, M) => /* @__PURE__ */ n( + "div", + { + style: { + borderTop: M === 0 ? "none" : "1px solid rgba(244,114,182,0.15)" + } + }, + `turbo-tick-${M}` + )) + } + ), + /* @__PURE__ */ i( + "div", + { + style: { + position: "absolute", + right: 34, + bottom: 0, + color: "#f9a8d4", + fontFamily: "var(--font-headline)", + fontSize: 10, + letterSpacing: "0.08em", + textTransform: "uppercase", + writingMode: "vertical-rl", + textShadow: "0 0 12px rgba(244,114,182,0.25)" + }, + children: [ + "Turbo ", + $e + 1, + "/", + h + ] + } + ) + ] + } + ) + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + left: 12, + right: 12, + bottom: 10, + display: "grid", + gridTemplateColumns: "repeat(4, minmax(0, 1fr))", + gap: 8, + pointerEvents: "auto" + }, + children: [ + { + label: "Complexity", + kind: "adjust", + active: !1, + disabled: !me, + accent: "rgba(245,158,11,0.2)", + sublabel: `${I} • ${ze + 1}/${h}`, + meterColor: "linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))", + meterSide: "left", + meterFill: _e, + onDecrease: () => He("down"), + onIncrease: () => He("up"), + canDecrease: Ze, + canIncrease: et + }, + { + label: "Mode", + kind: "action", + onClick: ot, + active: !1, + accent: "rgba(59,130,246,0.18)", + sublabel: Ee(T) + }, + { + label: "Fano Sweep", + kind: "action", + onClick: rt, + active: q === "fano", + accent: "rgba(59,130,246,0.22)", + sublabel: q === "fano" ? "Open" : "Scene" + }, + { + label: "Turbo", + kind: "adjust", + active: !1, + accent: "rgba(34,197,94,0.2)", + sublabel: `${G}x • ${$e + 1}/${h}`, + meterColor: "linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))", + meterSide: "right", + meterFill: U, + onDecrease: () => We("down"), + onIncrease: () => We("up"), + canDecrease: tt, + canIncrease: nt + } + ].map((p) => p.kind === "adjust" ? /* @__PURE__ */ i( + "div", + { + style: { + minHeight: 54, + border: "1px solid var(--terminal-panel-border)", + background: p.active ? p.accent : "rgba(7,19,11,0.86)", + color: "var(--terminal-green-soft)", + borderRadius: 10, + padding: "8px 10px", + display: "flex", + flexDirection: "column", + alignItems: "center", + justifyContent: "center", + gap: 6, + boxShadow: p.active ? "0 0 18px rgba(125,255,155,0.12)" : "0 8px 24px rgba(0,0,0,0.25)", + position: "relative", + overflow: "hidden", + opacity: p.disabled ? 0.38 : 1 + }, + children: [ + "meterColor" in p && /* @__PURE__ */ i(Fe, { children: [ + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + top: 6, + bottom: 6, + left: p.meterSide === "left" ? 6 : void 0, + right: p.meterSide === "right" ? 6 : void 0, + width: 6, + borderRadius: 999, + background: "rgba(255,255,255,0.07)", + border: "1px solid rgba(255,255,255,0.08)" + } + } + ), + /* @__PURE__ */ n( + "div", + { + style: { + position: "absolute", + bottom: 7, + left: p.meterSide === "left" ? 7 : void 0, + right: p.meterSide === "right" ? 7 : void 0, + width: 4, + height: p.meterFill, + borderRadius: 999, + background: p.meterColor, + boxShadow: p.meterSide === "left" ? "0 0 10px rgba(251,191,36,0.45)" : "0 0 10px rgba(244,114,182,0.45)", + transition: "height 0.25s ease" + } + } + ) + ] }), + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-headline)", + fontSize: 11, + fontWeight: 400, + letterSpacing: "0.08em", + textTransform: "uppercase", + lineHeight: 1.1 + }, + children: p.label + } + ), + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-ui)", + fontSize: 10, + color: "var(--terminal-green)", + letterSpacing: "0.08em", + lineHeight: 1 + }, + children: p.sublabel + } + ), + /* @__PURE__ */ i("div", { style: { display: "grid", gridTemplateColumns: "repeat(2, minmax(0, 1fr))", gap: 6, width: "100%", marginTop: "auto" }, children: [ + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: p.onDecrease, + onPointerEnter: Se, + disabled: p.disabled || !p.canDecrease, + style: { + border: "1px solid rgba(255,255,255,0.12)", + background: "rgba(255,255,255,0.04)", + color: "var(--terminal-green-soft)", + borderRadius: 8, + minHeight: 24, + cursor: p.disabled || !p.canDecrease ? "not-allowed" : "pointer", + fontFamily: "var(--font-headline)", + fontSize: 12, + letterSpacing: "0.08em", + opacity: p.disabled || !p.canDecrease ? 0.35 : 1, + position: "relative", + zIndex: 1 + }, + children: "-" + } + ), + /* @__PURE__ */ n( + "button", + { + type: "button", + onClick: p.onIncrease, + onPointerEnter: Se, + disabled: p.disabled || !p.canIncrease, + style: { + border: "1px solid rgba(255,255,255,0.12)", + background: "rgba(255,255,255,0.04)", + color: "var(--terminal-green-soft)", + borderRadius: 8, + minHeight: 24, + cursor: p.disabled || !p.canIncrease ? "not-allowed" : "pointer", + fontFamily: "var(--font-headline)", + fontSize: 12, + letterSpacing: "0.08em", + opacity: p.disabled || !p.canIncrease ? 0.35 : 1, + position: "relative", + zIndex: 1 + }, + children: "+" + } + ) + ] }) + ] + }, + p.label + ) : /* @__PURE__ */ i( + "button", + { + type: "button", + onClick: p.onClick, + onPointerEnter: Se, + disabled: "disabled" in p ? p.disabled : !1, + style: { + minHeight: 54, + border: "1px solid var(--terminal-panel-border)", + background: p.active ? p.accent : "rgba(7,19,11,0.86)", + color: "var(--terminal-green-soft)", + borderRadius: 10, + padding: "8px 10px", + cursor: "disabled" in p && p.disabled ? "not-allowed" : "pointer", + display: "flex", + flexDirection: "column", + alignItems: "center", + justifyContent: "center", + gap: 2, + boxShadow: p.active ? "0 0 18px rgba(125,255,155,0.12)" : "0 8px 24px rgba(0,0,0,0.25)", + position: "relative", + overflow: "hidden", + opacity: "disabled" in p && p.disabled ? 0.38 : 1 + }, + children: [ + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-headline)", + fontSize: 11, + fontWeight: 400, + letterSpacing: "0.08em", + textTransform: "uppercase", + lineHeight: 1.1 + }, + children: p.label + } + ), + /* @__PURE__ */ n( + "span", + { + style: { + fontFamily: "var(--font-ui)", + fontSize: 10, + color: "var(--terminal-green)", + letterSpacing: "0.08em", + lineHeight: 1 + }, + children: p.sublabel + } + ) + ] + }, + p.label + )) + } + ) + ] }), + /* @__PURE__ */ n("color", { attach: "background", args: ["#050505"] }) + ] }); +} +const Bn = { + name: "lightlane", + displayName: "Lightlane Challenge", + version: "1.1.0", + paramSchema: { + hideScenePresentation: { type: "boolean", label: "Hide Sphere + Lightlanes", default: !1 }, + hideFlyingBars: { type: "boolean", label: "Hide Flying Bars", default: !1 }, + hideDataBoxes: { type: "boolean", label: "Hide Data Boxes", default: !1 }, + complexity: { type: "range", label: "Complexity", default: 5, min: 1, max: 20, step: 1 }, + radius: { type: "range", label: "Distance to star", default: 2, min: 0.1, max: 5, step: 0.1 }, + chandraDistance: { type: "range", label: "Chandra Camera Distance", default: 6, min: 5, max: 30, step: 0.5 }, + observationMode: { + type: "select", + label: "Observation Mode", + default: "randomSphere", + options: [ + { value: "orbit", label: "Orbit" }, + { value: "randomSphere", label: "Random Sphere" } + ] + }, + sceneView: { + type: "select", + label: "Scene View", + default: "both", + options: [ + { value: "both", label: "Both" }, + { value: "poisson", label: "Poisson" }, + { value: "lightlane", label: "Lightlane" } + ] + }, + orbitSpeed: { type: "range", label: "Orbit Speed", default: 0.2, min: 0, max: 2, step: 0.01 }, + thetaDrift: { type: "range", label: "Theta Drift", default: 0, min: -1, max: 1, step: 0.01 }, + thetaJitter: { type: "range", label: "Theta Jitter", default: 0, min: 0, max: 0.25, step: 5e-3 }, + phiJitter: { type: "range", label: "Phi Jitter", default: 0, min: 0, max: 0.5, step: 0.01 }, + speedup: { type: "range", label: "Speedup", default: 1, min: 1, max: 240, step: 1 } + }, + defaultParams: { + complexity: 5, + radius: 2, + orbitSpeed: 0.2, + thetaDrift: 0, + thetaJitter: 0, + phiJitter: 0, + chandraDistance: 6, + observationMode: "randomSphere", + sceneView: "both", + speedup: 1, + // Internal defaults will handle the rest + distance: 5, + showAxes: !1, + lightlanes: !0, + allSectors: !0, + cumulative: !1, + phi: 0, + theta: Math.PI / 2, + K: 1e3, + usePoisson: !0, + hideScenePresentation: !1, + hideFlyingBars: !1, + hideDataBoxes: !1 + } +}; +export { + kn as default, + Bn as metadata +}; +//# sourceMappingURL=lightlane.js.map diff --git a/public/glitch/glitch_lightlane/lightlane.js.map b/public/glitch/glitch_lightlane/lightlane.js.map new file mode 100644 index 0000000..6b3be1e --- /dev/null +++ b/public/glitch/glitch_lightlane/lightlane.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lightlane.js","sources":["../src/components/VectorArrow.tsx","../src/vectors.ts","../src/components/DiophantineVectors.tsx","../src/hostBridge.ts","../src/components/lightlane-engine.js","../src/components/FanoSweepPanel.tsx","../src/components/PoissonShell.tsx","../src/components/PulsingSphere.tsx","../src/components/OrbitingObject.tsx","../src/components/SamplingSystem.tsx","../src/types.ts","../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport * as THREE from 'three';\n\ninterface VectorArrowProps {\n vector: [number, number, number];\n origin?: [number, number, number];\n color?: string;\n}\n\nexport function VectorArrow({ vector, origin = [0, 0, 0], color = '#facc15' }: VectorArrowProps) {\n const { dir, len, position } = useMemo(() => {\n const start = new THREE.Vector3(...origin);\n const end = new THREE.Vector3(...vector);\n\n const len = start.distanceTo(end);\n const dir = end.clone().sub(start).normalize();\n\n // ArrowHelper takes direction, origin, length.\n return { dir, len, position: start };\n }, [vector, origin]);\n\n // Using primitive ArrowHelper for geometrical correctness and simplicity\n // We can wrap it in a primitive. \n // However, ArrowHelper manages its own geometry updates which can be tricky in React.\n // Re-creating the helper when props change is a safe pattern for simple props.\n const arrowHelper = useMemo(() => {\n return new THREE.ArrowHelper(dir, position, len, color, 0.2 * Math.min(len, 1) + 0.1, 0.1 * Math.min(len, 1) + 0.05);\n }, [dir, len, position, color]);\n\n return ;\n}\n","export type Vector3Tuple = [number, number, number];\n\nexport function getVectors(complexity: number, allSectors: boolean = false): Vector3Tuple[] {\n const vectors: Vector3Tuple[] = [];\n\n // Complexity N corresponds to integer solutions for x + y + z = N\n // where x, y, z >= 0\n\n for (let x = 0; x <= complexity; x++) {\n for (let y = 0; y <= complexity - x; y++) {\n const z = complexity - x - y;\n\n if (z >= 0) {\n if (!allSectors) {\n vectors.push([x, y, z]);\n } else {\n // Generate permutations for all octants\n // For each component, if it's non-zero, it can be + or -\n const xSigns = x === 0 ? [1] : [1, -1];\n const ySigns = y === 0 ? [1] : [1, -1];\n const zSigns = z === 0 ? [1] : [1, -1];\n\n for (const sx of xSigns) {\n for (const sy of ySigns) {\n for (const sz of zSigns) {\n vectors.push([x * sx, y * sy, z * sz]);\n }\n }\n }\n }\n }\n }\n }\n\n return vectors;\n}\n","import { useMemo } from 'react';\nimport { VectorArrow } from './VectorArrow';\nimport { getVectors } from '../vectors';\nimport * as THREE from 'three';\n\ninterface DiophantineVectorsProps {\n complexity: number;\n lightlanes?: boolean;\n radius?: number;\n distance?: number;\n allSectors?: boolean;\n cumulative?: boolean;\n}\n\nfunction LightlaneCylinder({ vector, radius, distance, color }: { vector: [number, number, number], radius: number, distance: number, color: string }) {\n const { position, quaternion } = useMemo(() => {\n const v = new THREE.Vector3(...vector).normalize();\n const up = new THREE.Vector3(0, 1, 0);\n const quaternion = new THREE.Quaternion().setFromUnitVectors(up, v);\n const position = v.clone().multiplyScalar(distance / 2);\n return { position, quaternion };\n }, [vector, distance]);\n\n return (\n \n \n \n \n );\n}\n\nexport function DiophantineVectors({ complexity, lightlanes = false, radius = 0.5, distance = 5, allSectors = false, cumulative = false }: DiophantineVectorsProps) {\n const vectorData = useMemo(() => {\n const data: { vec: [number, number, number], c: number }[] = [];\n\n const start = cumulative ? 1 : complexity;\n const end = complexity;\n\n for (let c = start; c <= end; c++) {\n const result = getVectors(c, allSectors);\n for (const v of result) {\n data.push({ vec: v, c });\n }\n }\n return data;\n }, [complexity, allSectors, cumulative]);\n\n // Helper to get color based on complexity\n // Low (1) -> Purple (~270)\n // High (max) -> Red (~0 or 360, but let's go down to 0)\n // But wait, standard HSL: Red=0/360, Purple=270.\n // User wants: Higher = Red, Lower = Purple.\n // So mapping: c=1 -> 270, c=max -> 0.\n const getColor = (c: number) => {\n const maxC = cumulative ? Math.max(complexity, 1) : complexity;\n const ratio = maxC > 1 ? (c - 1) / (maxC - 1) : 1;\n // inverse ratio for hue: 1 -> 0, 0 -> 1 ?\n // We want ratio 0 (c=1) -> 270\n // We want ratio 1 (c=max) -> 0\n const hue = 270 * (1 - ratio);\n return `hsl(${hue}, 100%, 50%)`;\n };\n\n return (\n \n {vectorData.map((item, i) => {\n const color = cumulative ? getColor(item.c) : (lightlanes ? \"#ff33c5\" : \"#4ade80\");\n\n return lightlanes ? (\n \n ) : (\n \n );\n })}\n \n );\n}\n","import type { GlitchHostBridge } from './types';\n\nexport const HOST_SOUND_EVENT = 'glitch:play-sound';\nexport const HOST_STOP_SOUND_EVENT = 'glitch:stop-sound';\nexport const HOST_EMIT_PREFIX = 'glitch:host:';\n\nexport const SOUND_IDS = {\n click: 'ui.button_click',\n hover: 'ui.button_hover',\n computeStart: 'machine.compute_start',\n computeStep: 'machine.compute_step',\n computeDone: 'machine.compute_done',\n verdictStable: 'machine.verdict_stable',\n verdictAlert: 'machine.verdict_alert'\n} as const;\n\nexport type SoundId = (typeof SOUND_IDS)[keyof typeof SOUND_IDS];\n\nfunction dispatchWindowEvent(type: string, detail: T) {\n if (typeof window === 'undefined') return;\n window.dispatchEvent(new CustomEvent(type, { detail }));\n}\n\nexport function safePlaySound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.playSound) {\n host.playSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_SOUND_EVENT, { id, payload });\n}\n\nexport function safeStopSound(\n host: GlitchHostBridge | undefined,\n id: string,\n payload?: Record\n) {\n try {\n if (host?.stopSound) {\n host.stopSound(id, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(HOST_STOP_SOUND_EVENT, { id, payload });\n}\n\nexport function safeEmit(host: GlitchHostBridge | undefined, type: string, payload?: unknown) {\n try {\n if (host?.emit) {\n host.emit(type, payload);\n return;\n }\n } catch {\n // Host bridge errors should not break the component.\n }\n\n dispatchWindowEvent(`${HOST_EMIT_PREFIX}${type}`, payload);\n}\n","// Pure JS sampling/simulation engine used by the React visualization.\n// The module owns the sampling state and exposes simulate(dt).\n\nconst EPS = 1e-12;\n\nexport function createRng(seed = 123456789) {\n let a = seed >>> 0;\n return function rand() {\n a |= 0;\n a = (a + 0x6d2b79f5) | 0;\n let t = Math.imul(a ^ (a >>> 15), 1 | a);\n t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n };\n}\n\nexport function samplePoisson(lambda, rand = Math.random) {\n if (!Number.isFinite(lambda) || lambda <= 0) return 0;\n\n if (lambda < 30) {\n const L = Math.exp(-lambda);\n let k = 0;\n let p = 1;\n do {\n k++;\n p *= rand();\n } while (p > L);\n return k - 1;\n }\n\n const u1 = Math.max(1e-12, rand());\n const u2 = rand();\n const z = Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n const x = lambda + Math.sqrt(lambda) * z;\n return Math.max(0, Math.round(x));\n}\n\nfunction toXYZ(v) {\n return [v[0] ?? v.x, v[1] ?? v.y, v[2] ?? v.z];\n}\n\nfunction norm3(x, y, z) {\n return Math.sqrt(x * x + y * y + z * z);\n}\n\nfunction wrapAngle(angle) {\n const twoPi = 2 * Math.PI;\n let a = angle % twoPi;\n if (a < 0) a += twoPi;\n return a;\n}\n\nfunction randomSphereAngles(rand) {\n const u = 2 * rand() - 1; // cos(theta) uniform\n const phi = 2 * Math.PI * rand();\n return {\n theta: Math.acos(Math.max(-1, Math.min(1, u))),\n phi,\n };\n}\n\n// Reflect polar angle back into [0, pi] so continuous drift can pass poles\n// without creating invalid spherical coordinates.\nexport function reflectPolarTheta(theta) {\n const twoPi = 2 * Math.PI;\n let t = theta % twoPi;\n if (t < 0) t += twoPi;\n if (t > Math.PI) t = twoPi - t;\n return t;\n}\n\nexport function sampleNormal(rand = Math.random) {\n const u1 = Math.max(1e-12, rand());\n const u2 = rand();\n return Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n}\n\nexport function vecOnSphereFromAngles(D, theta, phi) {\n const sinT = Math.sin(theta);\n return [\n D * sinT * Math.cos(phi),\n D * Math.cos(theta),\n D * sinT * Math.sin(phi),\n ];\n}\n\nexport function getDiophantineVectors(complexity, allSectors = false, cumulative = false) {\n const vectors = [];\n const start = cumulative ? 1 : complexity;\n const end = complexity;\n\n for (let c = start; c <= end; c++) {\n for (let x = 0; x <= c; x++) {\n for (let y = 0; y <= c - x; y++) {\n const z = c - x - y;\n if (!allSectors) {\n vectors.push([x, y, z]);\n continue;\n }\n\n const xSigns = x === 0 ? [1] : [1, -1];\n const ySigns = y === 0 ? [1] : [1, -1];\n const zSigns = z === 0 ? [1] : [1, -1];\n for (const sx of xSigns) {\n for (const sy of ySigns) {\n for (const sz of zSigns) {\n vectors.push([x * sx, y * sy, z * sz]);\n }\n }\n }\n }\n }\n }\n\n return vectors;\n}\n\nexport function buildLaneEndpointsOnShell({\n D,\n complexity,\n allSectors = false,\n cumulative = false,\n}) {\n if (!Number.isFinite(D) || D <= 0) return [];\n if (!Number.isInteger(complexity) || complexity < 1) return [];\n\n const raw = getDiophantineVectors(complexity, allSectors, cumulative);\n const out = [];\n for (let i = 0; i < raw.length; i++) {\n const [x, y, z] = raw[i];\n const n = norm3(x, y, z);\n if (n <= EPS) continue;\n out.push([(D * x) / n, (D * y) / n, (D * z) / n]);\n }\n return out;\n}\n\nexport function countLaneOverlapsOnSegments(lanes, satPos, laneRadius) {\n if (!lanes || lanes.length === 0) return 0;\n if (!Number.isFinite(laneRadius) || laneRadius <= 0) return 0;\n\n const [Px, Py, Pz] = toXYZ(satPos);\n const r2 = laneRadius * laneRadius;\n let count = 0;\n\n for (let i = 0; i < lanes.length; i++) {\n const [Bx, By, Bz] = toXYZ(lanes[i]);\n const b2 = Bx * Bx + By * By + Bz * Bz;\n if (b2 <= EPS) continue;\n\n let t = (Px * Bx + Py * By + Pz * Bz) / b2;\n if (t < 0) t = 0;\n if (t > 1) t = 1;\n\n const Cx = t * Bx;\n const Cy = t * By;\n const Cz = t * Bz;\n const dx = Px - Cx;\n const dy = Py - Cy;\n const dz = Pz - Cz;\n\n if (dx * dx + dy * dy + dz * dz < r2) count++;\n }\n\n return count;\n}\n\nexport function countLaneOverlapsOnShell(lanes, D, satPos, laneRadius) {\n if (!lanes || lanes.length === 0) return 0;\n if (!Number.isFinite(D) || D <= 0) return 0;\n if (!Number.isFinite(laneRadius) || laneRadius <= 0) return 0;\n\n const [Px, Py, Pz] = toXYZ(satPos);\n const R2 = D * D;\n const dotThreshold = R2 - 0.5 * laneRadius * laneRadius;\n\n let count = 0;\n for (let i = 0; i < lanes.length; i++) {\n const [Bx, By, Bz] = toXYZ(lanes[i]);\n if (Px * Bx + Py * By + Pz * Bz > dotThreshold) count++;\n }\n return count;\n}\n\nexport function isotropicCoverageProbability({ D, lane_radius }) {\n if (!Number.isFinite(D) || D <= 0) return 0;\n if (!Number.isFinite(lane_radius) || lane_radius <= 0) return 0;\n const p = (lane_radius * lane_radius) / (4 * D * D);\n if (p <= 0) return 0;\n return p > 1 ? 1 : p;\n}\n\nexport function isotropicCoverageProbabilitySegment({ D, lane_radius, lane_length }) {\n if (!Number.isFinite(D) || D <= 0) return 0;\n if (!Number.isFinite(lane_radius) || lane_radius <= 0) return 0;\n if (!Number.isFinite(lane_length) || lane_length <= 0) return 0;\n\n // If the visual segment reaches the observation shell, the shell-cap model is exact.\n if (lane_length >= D - EPS) {\n return isotropicCoverageProbability({ D, lane_radius });\n }\n\n const r = lane_radius;\n const L = lane_length;\n\n // No possible hit if the aperture is smaller than the endpoint gap.\n const dMin = D - L;\n if (r <= dMin) return 0;\n\n // For unrealistic very large apertures, clamp to full coverage.\n if (r >= D + L) return 1;\n\n // Minimum distance to the segment is a monotone function of c = cos(alpha) on c in [0,1].\n // The hit set is a spherical cap c > c0.\n const dJoin = Math.sqrt(Math.max(0, D * D - L * L)); // distance at projection hitting the endpoint boundary\n let c0;\n\n if (r < dJoin) {\n // Endpoint-limited branch (nearest point is the segment endpoint)\n c0 = (D * D + L * L - r * r) / (2 * D * L);\n } else if (r < D) {\n // Interior cylinder branch\n c0 = Math.sqrt(Math.max(0, 1 - (r * r) / (D * D)));\n } else {\n // r >= D covers the whole front hemisphere and may extend beyond; clamp conservatively.\n c0 = -1;\n }\n\n if (!Number.isFinite(c0)) return 0;\n if (c0 < -1) c0 = -1;\n if (c0 > 1) c0 = 1;\n return (1 - c0) / 2;\n}\n\nexport function lambdaIsotropic({ flux, D, lane_radius, dt }) {\n if (!Number.isFinite(flux) || flux <= 0) return 0;\n if (!Number.isFinite(dt) || dt <= 0) return 0;\n const p = isotropicCoverageProbability({ D, lane_radius });\n return flux * p * dt;\n}\n\nexport function lambdaIsotropicSegment({ flux, D, lane_radius, lane_length, dt }) {\n if (!Number.isFinite(flux) || flux <= 0) return 0;\n if (!Number.isFinite(dt) || dt <= 0) return 0;\n const p = isotropicCoverageProbabilitySegment({ D, lane_radius, lane_length });\n return flux * p * dt;\n}\n\nexport function lambdaIsotropicForGeometry({\n flux,\n D,\n lane_radius,\n dt,\n hitTestModel = \"shell\",\n lane_length,\n}) {\n if (hitTestModel === \"segment\") {\n return lambdaIsotropicSegment({ flux, D, lane_radius, lane_length, dt });\n }\n return lambdaIsotropic({ flux, D, lane_radius, dt });\n}\n\nfunction validateConfig(config) {\n if (!config || typeof config !== \"object\") {\n throw new Error(\"createSamplingSimulation: config object is required.\");\n }\n\n const lane_radius = config.lane_radius ?? config.radius;\n const D = config.D;\n const complexity = config.complexity;\n const flux = config.flux;\n const bin_size = config.bin_size ?? 1;\n const sub_bin_sampling = config.sub_bin_sampling ?? 4;\n const thetaDrift = config.thetaDrift ?? config.theta_drift ?? 0;\n const thetaJitter = config.thetaJitter ?? config.theta_jitter ?? 0;\n const phiJitter = config.phiJitter ?? config.phi_jitter ?? 0;\n const lane_length = config.laneLength ?? config.lane_length ?? config.distance ?? D;\n const hitTestModel = config.hitTestModel ?? config.hit_test_model ?? \"shell\";\n const observationMode = config.observationMode ?? config.observation_mode ?? \"orbit\";\n\n if (!Number.isFinite(D) || D <= 0) {\n throw new Error(\"createSamplingSimulation: D must be a positive number.\");\n }\n if (!Number.isFinite(lane_radius) || lane_radius <= 0) {\n throw new Error(\"createSamplingSimulation: lane_radius (or radius) must be a positive number.\");\n }\n if (!Number.isInteger(complexity) || complexity < 1) {\n throw new Error(\"createSamplingSimulation: complexity must be an integer >= 1.\");\n }\n if (!Number.isFinite(flux) || flux < 0) {\n throw new Error(\"createSamplingSimulation: flux must be a finite number >= 0.\");\n }\n if (!Number.isFinite(bin_size) || bin_size <= 0) {\n throw new Error(\"createSamplingSimulation: bin_size must be a positive number.\");\n }\n if (!Number.isInteger(sub_bin_sampling) || sub_bin_sampling < 1) {\n throw new Error(\"createSamplingSimulation: sub_bin_sampling must be an integer >= 1.\");\n }\n if (!Number.isFinite(thetaDrift)) {\n throw new Error(\"createSamplingSimulation: thetaDrift must be finite.\");\n }\n if (!Number.isFinite(thetaJitter) || thetaJitter < 0) {\n throw new Error(\"createSamplingSimulation: thetaJitter must be a finite number >= 0.\");\n }\n if (!Number.isFinite(phiJitter) || phiJitter < 0) {\n throw new Error(\"createSamplingSimulation: phiJitter must be a finite number >= 0.\");\n }\n if (!Number.isFinite(lane_length) || lane_length <= 0) {\n throw new Error(\"createSamplingSimulation: laneLength/lane_length/distance must be a positive number.\");\n }\n if (hitTestModel !== \"shell\" && hitTestModel !== \"segment\") {\n throw new Error('createSamplingSimulation: hitTestModel must be \"shell\" or \"segment\".');\n }\n if (observationMode !== \"orbit\" && observationMode !== \"randomSphere\") {\n throw new Error('createSamplingSimulation: observationMode must be \"orbit\" or \"randomSphere\".');\n }\n\n return {\n D,\n lane_radius,\n complexity,\n flux,\n bin_size,\n sub_bin_sampling,\n theta: reflectPolarTheta(config.theta ?? Math.PI / 2),\n phi: wrapAngle(config.phi ?? 0),\n velocity: config.velocity ?? 0,\n thetaDrift,\n thetaJitter,\n phiJitter,\n lane_length,\n hitTestModel,\n observationMode,\n allSectors: Boolean(config.allSectors),\n cumulative: Boolean(config.cumulative),\n usePoisson: config.usePoisson !== false,\n seed: Number.isFinite(config.seed) ? config.seed : 1,\n };\n}\n\nexport function createSamplingSimulation(config) {\n const cfg = validateConfig(config);\n const lanes = buildLaneEndpointsOnShell(cfg);\n const laneSegments =\n cfg.hitTestModel === \"segment\"\n ? buildLaneEndpointsOnShell({ ...cfg, D: cfg.lane_length })\n : lanes;\n const lightlaneRand = createRng(cfg.seed);\n const isotropicRand = createRng(cfg.seed + 1);\n const pathRand = createRng(cfg.seed + 2);\n\n const subBinSize = cfg.bin_size / cfg.sub_bin_sampling;\n const lambdaIsoSubBin = lambdaIsotropicForGeometry({\n flux: cfg.flux,\n D: cfg.D,\n lane_radius: cfg.lane_radius,\n dt: subBinSize,\n hitTestModel: cfg.hitTestModel,\n lane_length: cfg.lane_length,\n });\n let timeInBin = 0;\n let timeInSubBin = 0;\n let phase = cfg.phi;\n let thetaNow = cfg.theta;\n let elapsed = 0;\n let accumulatedLightlane = 0;\n let accumulatedIsotropic = 0;\n let expectedLightlaneThisBin = 0;\n let processedSubBinsInCurrentBin = 0;\n let lastLaneCount = 0;\n let overlapSumThisBin = 0;\n\n function sampleCount(lambda, rand) {\n return cfg.usePoisson ? samplePoisson(lambda, rand) : lambda;\n }\n\n function currentSatPos(sampleTheta = thetaNow, samplePhi = phase) {\n return vecOnSphereFromAngles(cfg.D, sampleTheta, samplePhi);\n }\n\n function processSubBin() {\n let sampleTheta;\n let samplePhi;\n if (cfg.observationMode === \"randomSphere\") {\n const ang = randomSphereAngles(pathRand);\n sampleTheta = ang.theta;\n samplePhi = ang.phi;\n } else {\n sampleTheta = reflectPolarTheta(\n thetaNow + (cfg.thetaJitter > 0 ? cfg.thetaJitter * sampleNormal(pathRand) : 0)\n );\n samplePhi = wrapAngle(\n phase + (cfg.phiJitter > 0 ? cfg.phiJitter * sampleNormal(pathRand) : 0)\n );\n }\n const satPos = currentSatPos(sampleTheta, samplePhi);\n const laneCount =\n cfg.hitTestModel === \"segment\"\n ? countLaneOverlapsOnSegments(laneSegments, satPos, cfg.lane_radius)\n : countLaneOverlapsOnShell(lanes, cfg.D, satPos, cfg.lane_radius);\n lastLaneCount = laneCount;\n\n const N = lanes.length;\n const lam = N > 0 ? (laneCount * cfg.flux * subBinSize) / N : 0;\n accumulatedLightlane += sampleCount(lam, lightlaneRand);\n accumulatedIsotropic += sampleCount(lambdaIsoSubBin, isotropicRand);\n expectedLightlaneThisBin += lam;\n overlapSumThisBin += laneCount;\n processedSubBinsInCurrentBin++;\n\n return {\n laneCount,\n satPos,\n lambdaLightlaneSubBin: lam,\n phase: samplePhi,\n theta: sampleTheta,\n };\n }\n\n function finalizeBin() {\n const effectiveBinSize =\n processedSubBinsInCurrentBin > 0 ? processedSubBinsInCurrentBin * subBinSize : cfg.bin_size;\n const lamIso = lambdaIsoSubBin * cfg.sub_bin_sampling;\n const isotropic = accumulatedIsotropic;\n const lightlane = accumulatedLightlane;\n\n const bin = {\n time: elapsed,\n bin_size: effectiveBinSize,\n lightlane,\n isotropic,\n lambdaIsotropic: processedSubBinsInCurrentBin > 0 ? lambdaIsoSubBin * processedSubBinsInCurrentBin : lamIso,\n overlaps: lastLaneCount,\n overlapsMean:\n processedSubBinsInCurrentBin > 0\n ? overlapSumThisBin / processedSubBinsInCurrentBin\n : 0,\n subBins: processedSubBinsInCurrentBin,\n phase,\n theta: thetaNow,\n lambdaLightlaneExpected: expectedLightlaneThisBin,\n };\n\n accumulatedLightlane = 0;\n accumulatedIsotropic = 0;\n expectedLightlaneThisBin = 0;\n overlapSumThisBin = 0;\n processedSubBinsInCurrentBin = 0;\n return bin;\n }\n\n return {\n config: { ...cfg },\n getLaneCount() {\n return lanes.length;\n },\n getState() {\n return {\n elapsed,\n phase,\n theta: thetaNow,\n timeInBin,\n timeInSubBin,\n accumulatedLightlane,\n accumulatedIsotropic,\n expectedLightlaneThisBin,\n processedSubBinsInCurrentBin,\n lastLaneCount,\n laneCount: lanes.length,\n };\n },\n reset() {\n timeInBin = 0;\n timeInSubBin = 0;\n phase = cfg.phi;\n thetaNow = cfg.theta;\n elapsed = 0;\n accumulatedLightlane = 0;\n accumulatedIsotropic = 0;\n expectedLightlaneThisBin = 0;\n processedSubBinsInCurrentBin = 0;\n lastLaneCount = 0;\n overlapSumThisBin = 0;\n },\n flushPartialBin() {\n if (processedSubBinsInCurrentBin <= 0) return null;\n const bin = finalizeBin();\n // Drop any partial sub-bin time so the visual pause appears immediate.\n timeInBin = 0;\n timeInSubBin = 0;\n return bin;\n },\n simulate(dt) {\n if (!Number.isFinite(dt) || dt <= 0) {\n return {\n bins: [],\n lastLaneCount,\n subBinEvents: 0,\n elapsed,\n };\n }\n\n let remaining = dt;\n let subBinEvents = 0;\n const bins = [];\n\n while (remaining > EPS) {\n const untilSub = subBinSize - timeInSubBin;\n const untilBin = cfg.bin_size - timeInBin;\n const step = Math.min(remaining, untilSub, untilBin);\n\n phase += cfg.velocity * step;\n thetaNow = reflectPolarTheta(thetaNow + cfg.thetaDrift * step);\n elapsed += step;\n timeInSubBin += step;\n timeInBin += step;\n remaining -= step;\n\n if (timeInSubBin >= subBinSize - EPS) {\n timeInSubBin = 0;\n processSubBin();\n subBinEvents++;\n }\n\n if (timeInBin >= cfg.bin_size - EPS) {\n timeInBin = 0;\n bins.push(finalizeBin());\n }\n }\n\n return {\n bins,\n lastLaneCount,\n subBinEvents,\n elapsed,\n };\n },\n };\n}\n\n// Backwards-compatible aliases while transitioning callers.\nexport const createDualRegimeSimulation = createSamplingSimulation;\n","import { Html } from '@react-three/drei';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { SOUND_IDS, safePlaySound, safeStopSound } from '../hostBridge';\nimport type { GlitchHostBridge } from '../types';\nimport { createSamplingSimulation } from './lightlane-engine.js';\n\ninterface FanoSweepPanelProps {\n radius: number;\n distance: number;\n chandraDistance: number;\n allSectors: boolean;\n cumulative: boolean;\n theta: number;\n phi: number;\n orbitSpeed: number;\n thetaDrift: number;\n thetaJitter: number;\n phiJitter: number;\n K: number;\n speedup: number;\n usePoisson: boolean;\n bottomInset?: number;\n onBack?: () => void;\n host?: GlitchHostBridge;\n}\n\ninterface SweepPoint {\n complexity: number;\n laneCount: number;\n meanBlue: number;\n meanYellow: number;\n fanoBlue: number;\n fanoYellow: number;\n fanoExcess: number;\n}\n\ninterface RunningMoments {\n n: number;\n mean: number;\n m2: number;\n}\n\nfunction updateMoments(m: RunningMoments, x: number): RunningMoments {\n const n = m.n + 1;\n const delta = x - m.mean;\n const mean = m.mean + delta / n;\n const m2 = m.m2 + delta * (x - mean);\n return { n, mean, m2 };\n}\n\nfunction emptyMoments(): RunningMoments {\n return { n: 0, mean: 0, m2: 0 };\n}\n\nfunction sampleFanoPoint({\n complexity,\n samplesPerPoint,\n runsPerPoint,\n binSize,\n subBinSampling,\n props,\n observationMode,\n seed,\n}: {\n complexity: number;\n samplesPerPoint: number;\n runsPerPoint: number;\n binSize: number;\n subBinSampling: number;\n props: FanoSweepPanelProps;\n observationMode: 'orbit' | 'randomSphere';\n seed: number;\n}): SweepPoint {\n let blue = emptyMoments();\n let yellow = emptyMoments();\n let laneCount = 0;\n\n for (let run = 0; run < runsPerPoint; run++) {\n const sim = createSamplingSimulation({\n D: props.chandraDistance,\n theta: props.theta,\n phi: props.phi,\n observationMode,\n velocity: props.orbitSpeed,\n thetaDrift: props.thetaDrift,\n thetaJitter: props.thetaJitter,\n phiJitter: props.phiJitter,\n bin_size: binSize,\n complexity,\n sub_bin_sampling: subBinSampling,\n flux: props.K,\n lane_radius: props.radius,\n distance: props.distance,\n hitTestModel: 'segment',\n allSectors: props.allSectors,\n cumulative: props.cumulative,\n usePoisson: props.usePoisson,\n seed: seed + run * 7_919,\n });\n if (run === 0) laneCount = sim.getLaneCount();\n\n for (let i = 0; i < samplesPerPoint; i++) {\n const { bins } = sim.simulate(binSize);\n const bin = bins[0];\n if (!bin) continue;\n blue = updateMoments(blue, bin.lightlane);\n yellow = updateMoments(yellow, bin.isotropic);\n }\n }\n\n const varBlue = blue.n > 1 ? blue.m2 / (blue.n - 1) : 0;\n const varYellow = yellow.n > 1 ? yellow.m2 / (yellow.n - 1) : 0;\n const fanoBlue = blue.mean > 0 ? varBlue / blue.mean : 0;\n const fanoYellow = yellow.mean > 0 ? varYellow / yellow.mean : 0;\n\n return {\n complexity,\n laneCount,\n meanBlue: blue.mean,\n meanYellow: yellow.mean,\n fanoBlue,\n fanoYellow,\n fanoExcess: Math.max(0, fanoBlue - fanoYellow),\n };\n}\n\nfunction fitPowerLaw(points: SweepPoint[], minComplexity = 1) {\n const usable = points.filter(p => p.complexity >= minComplexity && p.complexity > 1 && p.fanoExcess > 1e-6);\n if (usable.length < 3) return null;\n\n let sx = 0;\n let sy = 0;\n let sxx = 0;\n let sxy = 0;\n const n = usable.length;\n\n for (const p of usable) {\n const x = Math.log(p.laneCount);\n const y = Math.log(p.fanoExcess);\n sx += x;\n sy += y;\n sxx += x * x;\n sxy += x * y;\n }\n\n const denom = n * sxx - sx * sx;\n if (Math.abs(denom) < 1e-12) return null;\n\n const slope = (n * sxy - sx * sy) / denom;\n const intercept = (sy - slope * sx) / n;\n\n return {\n A: Math.exp(intercept),\n alpha: -slope,\n predictFanoExcessFromLaneCount(laneCount: number) {\n return Math.exp(intercept + slope * Math.log(Math.max(1, laneCount)));\n },\n };\n}\n\nfunction fitPowerLawWithFloor(points: SweepPoint[], minComplexity = 1) {\n const usable = points.filter(p => p.complexity >= minComplexity && p.complexity > 1 && p.fanoExcess > 1e-6);\n if (usable.length < 4) return null;\n\n const minY = Math.min(...usable.map((p) => p.fanoExcess));\n const maxB = Math.max(0, minY * 0.98);\n let best: null | {\n A: number;\n alpha: number;\n B: number;\n score: number;\n } = null;\n\n const steps = 80;\n for (let i = 0; i <= steps; i++) {\n const B = (i / steps) * maxB;\n const shifted = usable\n .map((p) => ({ x: p.laneCount, y: p.fanoExcess - B }))\n .filter((p) => p.y > 1e-9);\n if (shifted.length < 3) continue;\n\n let sx = 0;\n let sy = 0;\n let sxx = 0;\n let sxy = 0;\n const n = shifted.length;\n\n for (const p of shifted) {\n const x = Math.log(p.x);\n const y = Math.log(p.y);\n sx += x;\n sy += y;\n sxx += x * x;\n sxy += x * y;\n }\n\n const denom = n * sxx - sx * sx;\n if (Math.abs(denom) < 1e-12) continue;\n\n const slope = (n * sxy - sx * sy) / denom;\n const intercept = (sy - slope * sx) / n;\n const A = Math.exp(intercept);\n const alpha = -slope;\n if (!(A > 0) || !(alpha > 0)) continue;\n\n let score = 0;\n for (const p of usable) {\n const pred = B + A * Math.pow(Math.max(1, p.laneCount), -alpha);\n const err = Math.log(Math.max(1e-9, p.fanoExcess)) - Math.log(Math.max(1e-9, pred));\n score += err * err;\n }\n\n if (!best || score < best.score) {\n best = { A, alpha, B, score };\n }\n }\n\n if (!best) return null;\n\n return {\n A: best.A,\n alpha: best.alpha,\n B: best.B,\n score: best.score,\n predictFanoExcessFromLaneCount(laneCount: number) {\n return best.B + best.A * Math.pow(Math.max(1, laneCount), -best.alpha);\n },\n };\n}\n\nfunction fitPowerXY(samples: Array<{ x: number; y: number }>) {\n const usable = samples.filter((s) => s.x > 0 && s.y > 0);\n if (usable.length < 3) return null;\n\n let sx = 0;\n let sy = 0;\n let sxx = 0;\n let sxy = 0;\n const n = usable.length;\n\n for (const s of usable) {\n const x = Math.log(s.x);\n const y = Math.log(s.y);\n sx += x;\n sy += y;\n sxx += x * x;\n sxy += x * y;\n }\n\n const denom = n * sxx - sx * sx;\n if (Math.abs(denom) < 1e-12) return null;\n\n const slope = (n * sxy - sx * sy) / denom;\n const intercept = (sy - slope * sx) / n;\n const A = Math.exp(intercept);\n\n return {\n A,\n beta: slope,\n predict(x: number) {\n return A * Math.pow(Math.max(1e-9, x), slope);\n },\n invert(y: number) {\n if (A <= 0 || Math.abs(slope) < 1e-12 || y <= 0) return null;\n return Math.pow(y / A, 1 / slope);\n },\n };\n}\n\nfunction estimateComplexityFromLaneCount(points: SweepPoint[], targetLaneCount: number) {\n if (!Number.isFinite(targetLaneCount) || targetLaneCount <= 0 || points.length === 0) return null;\n\n const sorted = [...points].sort((a, b) => a.complexity - b.complexity);\n const byLane = [...sorted].sort((a, b) => a.laneCount - b.laneCount);\n const first = byLane[0];\n const last = byLane[byLane.length - 1];\n\n if (targetLaneCount <= first.laneCount) {\n return { complexity: first.complexity, mode: 'observed-range' as const };\n }\n\n for (let i = 1; i < byLane.length; i++) {\n const a = byLane[i - 1];\n const b = byLane[i];\n if (targetLaneCount <= b.laneCount) {\n const denom = Math.max(1e-9, b.laneCount - a.laneCount);\n const t = (targetLaneCount - a.laneCount) / denom;\n return {\n complexity: a.complexity + t * (b.complexity - a.complexity),\n mode: 'observed-range' as const,\n };\n }\n }\n\n const growthFit = fitPowerXY(sorted.map((p) => ({ x: p.complexity, y: p.laneCount })));\n const extrapolated = growthFit?.invert(targetLaneCount) ?? null;\n if (extrapolated && Number.isFinite(extrapolated)) {\n return { complexity: extrapolated, mode: 'extrapolated' as const };\n }\n\n return { complexity: last.complexity, mode: 'observed-max' as const };\n}\n\nfunction linePath(points: SweepPoint[], getY: (p: SweepPoint) => number, xToPx: (x: number) => number, yToPx: (y: number) => number) {\n return points\n .map((p, i) => `${i === 0 ? 'M' : 'L'} ${xToPx(p.complexity)} ${yToPx(getY(p))}`)\n .join(' ');\n}\n\nfunction formatYAxisTick(value: number) {\n if (value >= 10) return value.toFixed(0);\n if (value >= 2) return value.toFixed(1);\n return value.toFixed(2);\n}\n\nfunction buildLogTicks(min: number, max: number) {\n const candidates = [\n 0.5, 0.6, 0.7, 0.8, 0.9,\n 1.0, 1.1, 1.2, 1.4, 1.6, 1.8,\n 2.0, 2.5, 3.0, 4.0, 5.0, 7.5, 10.0,\n ];\n\n const ticks = candidates.filter(v => v >= min && v <= max);\n if (ticks.length >= 3) return ticks;\n\n // Fallback for unusual ranges.\n const steps = 5;\n const logMin = Math.log(min);\n const logMax = Math.log(max);\n return Array.from({ length: steps }, (_, i) => {\n const t = i / (steps - 1);\n return Math.exp(logMin + (logMax - logMin) * t);\n });\n}\n\nexport function FanoSweepPanel(props: FanoSweepPanelProps) {\n const [maxComplexity, setMaxComplexity] = useState(40);\n const [samplesPerPoint, setSamplesPerPoint] = useState(1000);\n const [runsPerPoint, setRunsPerPoint] = useState(3);\n const [binSize, setBinSize] = useState(1);\n const [subBinSampling, setSubBinSampling] = useState(4);\n const [observationMode, setObservationMode] = useState<'orbit' | 'randomSphere'>('randomSphere');\n const [targetExcess, setTargetExcess] = useState(0.05);\n const [fitStartComplexity, setFitStartComplexity] = useState(10);\n const [runId, setRunId] = useState(0);\n const [points, setPoints] = useState([]);\n const [progress, setProgress] = useState(0);\n const [running, setRunning] = useState(false);\n const wasRunningRef = useRef(false);\n const progressStepRef = useRef(-1);\n\n const playUiHover = () => {\n safePlaySound(props.host, SOUND_IDS.hover, { page: 'fano' });\n };\n\n const playUiClick = (target: string, payload?: Record) => {\n safePlaySound(props.host, SOUND_IDS.click, { page: 'fano', target, ...payload });\n };\n\n useEffect(() => {\n let cancelled = false;\n setPoints([]);\n setProgress(0);\n setRunning(true);\n\n (async () => {\n const nextPoints: SweepPoint[] = [];\n\n for (let c = 1; c <= maxComplexity; c++) {\n if (cancelled) return;\n const point = sampleFanoPoint({\n complexity: c,\n samplesPerPoint,\n runsPerPoint,\n binSize,\n subBinSampling,\n props,\n observationMode,\n seed: 10_000 + c * 97 + runId * 100_003,\n });\n nextPoints.push(point);\n setPoints([...nextPoints]);\n setProgress(c / maxComplexity);\n await new Promise(resolve => setTimeout(resolve, 0));\n }\n\n if (!cancelled) setRunning(false);\n })();\n\n return () => {\n cancelled = true;\n };\n }, [\n maxComplexity,\n samplesPerPoint,\n runsPerPoint,\n binSize,\n subBinSampling,\n observationMode,\n runId,\n props.radius,\n props.distance,\n props.chandraDistance,\n props.allSectors,\n props.cumulative,\n props.theta,\n props.phi,\n props.orbitSpeed,\n props.thetaDrift,\n props.thetaJitter,\n props.phiJitter,\n props.K,\n props.speedup,\n props.usePoisson,\n ]);\n\n useEffect(() => {\n const wasRunning = wasRunningRef.current;\n wasRunningRef.current = running;\n\n if (running && !wasRunning) {\n progressStepRef.current = -1;\n safePlaySound(props.host, SOUND_IDS.computeStart, { page: 'fano' });\n return;\n }\n\n if (!running && wasRunning) {\n safeStopSound(props.host, SOUND_IDS.computeStep, { page: 'fano' });\n safePlaySound(props.host, SOUND_IDS.computeDone, { page: 'fano', points: points.length });\n }\n }, [running, props.host, points.length]);\n\n useEffect(() => {\n if (!running) return;\n const nextProgressStep = Math.floor(progress * 10);\n if (nextProgressStep <= progressStepRef.current) return;\n progressStepRef.current = nextProgressStep;\n safePlaySound(props.host, SOUND_IDS.computeStep, { page: 'fano', progress });\n }, [progress, running, props.host]);\n\n const fit = useMemo(() => fitPowerLaw(points, fitStartComplexity), [points, fitStartComplexity]);\n const floorFit = useMemo(() => fitPowerLawWithFloor(points, fitStartComplexity), [points, fitStartComplexity]);\n const indistinguishableEstimate = useMemo(() => {\n if (!fit || fit.alpha <= 0 || targetExcess <= 0) return null;\n\n if (floorFit && floorFit.B >= targetExcess) {\n return {\n targetExcess,\n requiredLaneCount: Number.POSITIVE_INFINITY,\n measuredCrossing: points.find((p) => p.fanoExcess <= targetExcess) ?? null,\n complexityEstimate: null,\n blockedByFloor: true as const,\n floorExcess: floorFit.B,\n };\n }\n\n const effectiveTarget = floorFit ? Math.max(1e-9, targetExcess - floorFit.B) : targetExcess;\n const effectiveA = floorFit ? floorFit.A : fit.A;\n const effectiveAlpha = floorFit ? floorFit.alpha : fit.alpha;\n const requiredLaneCount = Math.pow(effectiveA / effectiveTarget, 1 / effectiveAlpha);\n if (!Number.isFinite(requiredLaneCount) || requiredLaneCount <= 0) return null;\n\n const measuredCrossing = points.find((p) => p.fanoExcess <= targetExcess) ?? null;\n const complexityEstimate = estimateComplexityFromLaneCount(points, requiredLaneCount);\n\n return {\n targetExcess,\n requiredLaneCount,\n measuredCrossing,\n complexityEstimate,\n blockedByFloor: false as const,\n floorExcess: floorFit?.B ?? 0,\n };\n }, [fit, floorFit, points, targetExcess]);\n\n const plot = useMemo(() => {\n const width = 860;\n const height = 360;\n const margin = { top: 20, right: 20, bottom: 42, left: 48 };\n const innerW = width - margin.left - margin.right;\n const innerH = height - margin.top - margin.bottom;\n const maxX = Math.max(2, maxComplexity);\n const positiveYs = [\n 1,\n ...points.map(p => p.fanoBlue),\n ...points.map(p => p.fanoYellow),\n ...points.map(p => 1 + p.fanoExcess),\n ].filter((v) => Number.isFinite(v) && v > 0);\n const rawYMin = Math.min(...positiveYs);\n const rawYMax = Math.max(...positiveYs);\n const yMin = Math.max(1e-3, Math.min(0.95, rawYMin * 0.95));\n const yMax = Math.max(1.05, rawYMax * 1.05);\n const logMin = Math.log(yMin);\n const logMax = Math.log(yMax);\n\n const xToPx = (x: number) => margin.left + ((x - 1) / (maxX - 1)) * innerW;\n const yToPx = (y: number) => {\n const safeY = Math.min(yMax, Math.max(yMin, y));\n const ly = Math.log(safeY);\n return margin.top + innerH - ((ly - logMin) / Math.max(1e-9, (logMax - logMin))) * innerH;\n };\n const yTicks = buildLogTicks(yMin, yMax);\n\n return { width, height, margin, innerW, innerH, xToPx, yToPx, yMax, yMin, yTicks };\n }, [points, maxComplexity]);\n\n const bluePath = useMemo(\n () => (points.length > 1 ? linePath(points, p => p.fanoBlue, plot.xToPx, plot.yToPx) : ''),\n [points, plot]\n );\n const yellowPath = useMemo(\n () => (points.length > 1 ? linePath(points, p => p.fanoYellow, plot.xToPx, plot.yToPx) : ''),\n [points, plot]\n );\n\n const latest = points.at(-1) ?? null;\n\n return (\n \n \n
\n
\n
\n Fano Sweep\n
\n
\n Goal: show {`Fano(Blue)`} trending toward 1.0 (or toward Yellow) as complexity increases.\n
\n
\n
\n {props.onBack && (\n {\n playUiClick('back-to-simulator');\n props.onBack?.();\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: 'rgba(7,19,11,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '8px 12px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.08em',\n textTransform: 'uppercase',\n }}\n >\n Back To Simulator\n \n )}\n {\n playUiClick('rerun-sweep');\n setRunId(prev => prev + 1);\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: running ? 'rgba(125, 255, 155, 0.14)' : 'rgba(7,19,11,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '8px 12px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '12px',\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.08em',\n textTransform: 'uppercase',\n }}\n >\n {running ? 'Rerun (queued)' : 'Rerun Sweep'}\n \n
\n
\n\n
\n {\n playUiClick('preset-video-demo');\n setObservationMode('randomSphere');\n setMaxComplexity(60);\n setSamplesPerPoint(1200);\n setRunsPerPoint(2);\n setBinSize(1);\n setSubBinSampling(4);\n setFitStartComplexity(12);\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: 'rgba(7,19,11,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '6px 10px',\n borderRadius: 8,\n cursor: 'pointer',\n fontSize: 11,\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.06em',\n }}\n >\n Preset: Video Demo\n \n {\n playUiClick('preset-robust-sweep');\n setObservationMode('randomSphere');\n setMaxComplexity(200);\n setSamplesPerPoint(3000);\n setRunsPerPoint(5);\n setBinSize(1);\n setSubBinSampling(16);\n setFitStartComplexity(40);\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid rgba(125, 255, 155, 0.32)',\n background: 'rgba(2,6,23,0.8)',\n color: 'var(--terminal-green-soft)',\n padding: '6px 10px',\n borderRadius: 8,\n cursor: 'pointer',\n fontSize: 11,\n fontWeight: 400,\n fontFamily: 'var(--font-headline)',\n letterSpacing: '0.06em',\n }}\n >\n Preset: Robust Sweep\n \n
\n\n
\n \n \n \n \n \n \n \n \n
\n Progress\n
\n \n
\n
{running ? `Running ${Math.round(progress * 100)}%` : 'Complete'}
\n
\n
\n \n
\n \n \n \n\n {plot.yTicks.map((y, i) => {\n const py = plot.yToPx(y);\n return (\n \n \n {formatYAxisTick(y)}\n \n );\n })}\n\n \n Fano = 1\n\n \n \n\n {Array.from({ length: Math.min(maxComplexity, 10) }, (_, i) => {\n const x = 1 + ((maxComplexity - 1) * i) / Math.max(1, Math.min(maxComplexity - 1, 9));\n const px = plot.xToPx(x);\n return (\n \n \n \n {Math.round(x)}\n \n \n );\n })}\n\n {yellowPath && }\n {bluePath && }\n\n {fit && points.length > 2 && (() => {\n const fitPath = points\n .filter((p) => p.complexity >= fitStartComplexity)\n .map((p, i) => {\n const y = 1 + fit.predictFanoExcessFromLaneCount(p.laneCount);\n return `${i === 0 ? 'M' : 'L'} ${plot.xToPx(p.complexity)} ${plot.yToPx(y)}`;\n })\n .join(' ');\n return ;\n })()}\n\n {floorFit && points.length > 2 && (() => {\n const fitPath = points\n .filter((p) => p.complexity >= fitStartComplexity)\n .map((p, i) => {\n const y = 1 + floorFit.predictFanoExcessFromLaneCount(p.laneCount);\n return `${i === 0 ? 'M' : 'L'} ${plot.xToPx(p.complexity)} ${plot.yToPx(y)}`;\n })\n .join(' ');\n return ;\n })()}\n\n {points.map((p) => (\n \n \n \n \n ))}\n\n \n Complexity\n \n \n Fano Factor (Var / Mean, log scale)\n \n \n
\n\n \n
\n
Legend
\n
Blue: Lightlane Fano
\n
Yellow: Isotropic Fano
\n
Dashed orange: Fano = 1
\n
Dashed blue: power-fit extrapolation (blue excess over yellow)
\n
Dashed cyan: floor-aware fit (B + A×N^-α)
\n
\n\n
\n
Latest Point
\n {latest ? (\n <>\n
Complexity: {latest.complexity}
\n
Lanes: {latest.laneCount}
\n
Mean Ratio (B/Y): {(latest.meanBlue / Math.max(1e-9, latest.meanYellow)).toFixed(3)}
\n
Fano Blue: {latest.fanoBlue.toFixed(3)}
\n
Fano Yellow: {latest.fanoYellow.toFixed(3)}
\n
Excess (B-Y): {latest.fanoExcess.toFixed(3)}
\n
\n Aggregated over {samplesPerPoint.toLocaleString()} bins × {runsPerPoint} seeds\n
\n \n ) : (\n
No points yet.
\n )}\n
\n\n
\n
Power Fit
\n {fit ? (\n <>\n
\n Excess ≈ {fit.A.toExponential(2)} × N-{fit.alpha.toFixed(2)}\n
\n
\n Fit is on blue excess over yellow using lane count N, starting at complexity {fitStartComplexity}.\n
\n \n ) : (\n
Need more points with nonzero excess.
\n )}\n {floorFit && (\n
\n Floor fit: excess ≈ {floorFit.B.toFixed(3)} + {floorFit.A.toExponential(2)} × N-{floorFit.alpha.toFixed(2)}\n
\n )}\n
\n\n
\n
Indistinguishable Target
\n
\n Criterion: Fano Blue - Fano Yellow ≤ {targetExcess.toFixed(3)}\n
\n {indistinguishableEstimate ? (\n <>\n {indistinguishableEstimate.blockedByFloor ? (\n <>\n
\n Floor-aware fit predicts no finite crossing for this threshold.\n
\n
\n Fitted excess floor:{' '}\n \n {indistinguishableEstimate.floorExcess.toFixed(3)}\n \n
\n
\n Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau.\n
\n \n ) : (\n <>\n
\n Required lane count N (fit):{' '}\n \n {Math.round(indistinguishableEstimate.requiredLaneCount).toLocaleString()}\n \n
\n
\n Estimated complexity:{' '}\n \n {indistinguishableEstimate.complexityEstimate\n ? Math.ceil(indistinguishableEstimate.complexityEstimate.complexity).toLocaleString()\n : 'n/a'}\n \n {indistinguishableEstimate.complexityEstimate && (\n \n {' '}\n ({indistinguishableEstimate.complexityEstimate.mode === 'observed-range'\n ? 'interpolated from current sweep'\n : indistinguishableEstimate.complexityEstimate.mode === 'extrapolated'\n ? 'extrapolated'\n : 'bounded by current sweep'})\n \n )}\n
\n \n )}\n
\n {indistinguishableEstimate.measuredCrossing\n ? `Observed crossing already reached at complexity ${indistinguishableEstimate.measuredCrossing.complexity}.`\n : 'No observed crossing yet in current sweep; estimate uses fit.'}\n
\n \n ) : (\n
\n Need a stable excess fit (nonzero blue excess across multiple points).\n
\n )}\n
\n\n
\n Use Random Sphere to isolate discretization convergence from path bias.\n Orbit mode is still useful to show persistent anisotropy on specific trajectories.\n
\n For a stronger/cleaner claim in the video: report the threshold estimate together with bin size, sub-bin sampling, and runs/point.\n
\n
\n If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers.\n
\n
\n
\n
\n
\n \n );\n}\n","import { useMemo, useRef } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport { Color } from 'three';\nimport type { BufferGeometry, Points as ThreePoints, PointsMaterial } from 'three';\n\ntype SparklePoint = {\n speed: number;\n phase: number;\n minBrightness: number;\n maxBoost: number;\n};\n\nconst sparkleColor = new Color('#dbeafe');\n\nfunction createSparkleField(radius: number, count: number) {\n const positions = new Float32Array(count * 3);\n const colors = new Float32Array(count * 3);\n const sparklePoints: SparklePoint[] = [];\n const shellRadius = radius + 0.01;\n\n for (let index = 0; index < count; index += 1) {\n const u = Math.random();\n const v = Math.random();\n const theta = 2 * Math.PI * u;\n const z = 1 - 2 * v;\n const radial = Math.sqrt(Math.max(0, 1 - z * z));\n const offset = index * 3;\n\n positions[offset] = shellRadius * radial * Math.cos(theta);\n positions[offset + 1] = shellRadius * radial * Math.sin(theta);\n positions[offset + 2] = shellRadius * z;\n\n colors[offset] = sparkleColor.r * 0.15;\n colors[offset + 1] = sparkleColor.g * 0.15;\n colors[offset + 2] = sparkleColor.b * 0.15;\n\n sparklePoints.push({\n speed: 0.8 + Math.random() * 2.6,\n phase: Math.random() * Math.PI * 2,\n minBrightness: 0.03 + Math.random() * 0.06,\n maxBoost: 0.35 + Math.random() * 0.85,\n });\n }\n\n return { positions, colors, sparklePoints };\n}\n\nexport function PoissonShell({ radius }: { radius: number }) {\n const sparkleRef = useRef>(null);\n const sparkleCount = 16000;\n const { positions, colors, sparklePoints } = useMemo(\n () => createSparkleField(radius, sparkleCount),\n [radius]\n );\n\n useFrame(({ clock }) => {\n const sparkleCloud = sparkleRef.current;\n if (!sparkleCloud) return;\n\n const colorAttribute = sparkleCloud.geometry.getAttribute('color');\n if (!colorAttribute) return;\n\n const time = clock.getElapsedTime();\n const colorArray = colorAttribute.array as Float32Array;\n\n for (let index = 0; index < sparklePoints.length; index += 1) {\n const point = sparklePoints[index];\n const pulse = Math.pow(Math.max(0, Math.sin(time * point.speed + point.phase)), 24);\n const intensity = point.minBrightness + pulse * point.maxBoost;\n const offset = index * 3;\n\n colorArray[offset] = sparkleColor.r * intensity;\n colorArray[offset + 1] = sparkleColor.g * intensity;\n colorArray[offset + 2] = sparkleColor.b * intensity;\n }\n\n colorAttribute.needsUpdate = true;\n });\n\n return (\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n );\n}\n","import { useRef } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport { MeshStandardMaterial } from 'three';\n\ninterface PulsingSphereProps {\n radius: number;\n paused?: boolean;\n}\n\nexport function PulsingSphere({ radius, paused = false }: PulsingSphereProps) {\n const materialRef = useRef(null);\n\n useFrame((state) => {\n if (paused) return;\n if (materialRef.current) {\n // Pulse emissive intensity between 0.5 and 2.0\n // Sine wave from -1 to 1 -> mapped to 0.5 to 2.0\n // (sin + 1) / 2 is 0 to 1.\n // 0.5 + (0 -> 1) * 1.5 = 0.5 to 2.0\n const t = state.clock.elapsedTime * 3; // Speed\n const intensity = 0.5 + ((Math.sin(t) + 1) / 2) * 1.5;\n materialRef.current.emissiveIntensity = intensity;\n }\n });\n\n return (\n \n \n \n \n );\n}\n","import { useRef, type MutableRefObject } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport * as THREE from 'three';\n\nfunction reflectPolarTheta(theta: number): number {\n const twoPi = 2 * Math.PI;\n let t = theta % twoPi;\n if (t < 0) t += twoPi;\n if (t > Math.PI) t = twoPi - t;\n return t;\n}\n\ninterface OrbitingObjectProps {\n radius: number; // This corresponds to 'distance' from center\n theta: number; // Polar angle (0 to PI)\n phi: number; // Azimuthal angle (0 to 2PI)\n orbitTime: MutableRefObject; // Accumulated orbit time ref\n simTime?: MutableRefObject;\n thetaDrift?: number;\n paused?: boolean;\n}\n\nexport function OrbitingObject({ radius, theta, phi, orbitTime, simTime, thetaDrift = 0, paused = false }: OrbitingObjectProps) {\n const groupRef = useRef(null);\n\n useFrame(() => {\n if (paused) return;\n if (groupRef.current) {\n // Calculate position using spherical coordinates\n // Three.js uses Y-up, so usually:\n // Use passed accumulated time from ref\n const currentPhi = phi + orbitTime.current;\n const currentTheta = reflectPolarTheta(theta + (simTime?.current ?? 0) * thetaDrift);\n\n const x = radius * Math.sin(currentTheta) * Math.cos(currentPhi);\n const y = radius * Math.cos(currentTheta);\n const z = radius * Math.sin(currentTheta) * Math.sin(currentPhi);\n\n groupRef.current.position.set(x, y, z);\n\n // Orient towards center\n groupRef.current.lookAt(0, 0, 0);\n }\n });\n\n return (\n \n {/* Sampling point cue (engine uses the group origin as the camera/sample position) */}\n \n \n \n \n \n \n \n \n\n {/* Main Body - Cylindrical Telescope - Aligned to Z axis */}\n \n \n \n \n\n {/* Short forward octagonal gold collar */}\n \n \n \n \n\n {/* Front Aperture - Wider - At +Z end */}\n \n \n \n \n {/* Aperture center cue for visual alignment checks */}\n \n \n \n \n {/* Local +Z axis cue (helps spot orientation / offset issues) */}\n \n \n \n \n\n {/* Solar Panels - shifted forward toward the star-facing end */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { useState, useMemo, useRef, useEffect } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport { Html } from '@react-three/drei';\n\nimport { createSamplingSimulation, lambdaIsotropicForGeometry } from './lightlane-engine.js';\nimport { SOUND_IDS, safePlaySound } from '../hostBridge';\nimport type { GlitchHostBridge, SceneViewMode } from '../types';\n\n// Flying bar animation component\ninterface FlyingBar {\n id: number;\n value: number;\n startBottom: number; // Distance from bottom of viewport\n startLeft: number; // Distance from left of viewport\n barHeight: number;\n barWidth: number;\n targetLeft: number; // Target X position in distribution\n targetTop: number; // Target Y position (from top of viewport)\n color: string;\n type: 'observed' | 'theory';\n}\n\nconst poissonPalette = {\n solid: '#60a5fa',\n dark: '#3b82f6',\n light: '#93c5fd',\n glow: 'rgba(96,165,250,0.5)',\n panel: 'rgba(0,20,40,0.8)',\n};\n\nconst lightlanePalette = {\n solid: '#fbbf24',\n dark: '#f59e0b',\n light: '#fef3c7',\n glow: 'rgba(251,191,36,0.5)',\n panel: 'rgba(40,20,0,0.8)',\n};\n\nconst headlineFont = 'var(--font-headline)';\nconst uiFont = 'var(--font-ui)';\nconst terminalGreen = 'var(--terminal-green)';\nconst terminalGreenSoft = 'var(--terminal-green-soft)';\nconst terminalGreenMuted = 'var(--terminal-green-muted)';\n\nfunction FlyingBars({ bars }: { bars: FlyingBar[] }) {\n const screenHeight = window.innerHeight;\n // const screenWidth = window.innerWidth;\n\n return (\n <>\n {bars.map((bar) => {\n // Convert bottom to top positioning\n // startBottom is distance from bottom, so top = screenHeight - startBottom - barHeight\n const startTop = screenHeight - bar.startBottom - bar.barHeight;\n\n const deltaX = bar.targetLeft - bar.startLeft;\n const deltaY = bar.targetTop - startTop; // negative = move up\n\n return (\n \n );\n })}\n \n \n );\n}\n\ninterface RunningMoments {\n n: number;\n meanObs: number;\n m2Obs: number;\n meanIso: number;\n m2Iso: number;\n}\n\nfunction createEmptyMoments(): RunningMoments {\n return { n: 0, meanObs: 0, m2Obs: 0, meanIso: 0, m2Iso: 0 };\n}\n\nfunction updateMoments(m: RunningMoments, observed: number, isotropic: number): RunningMoments {\n const nextN = m.n + 1;\n\n const deltaObs = observed - m.meanObs;\n const meanObs = m.meanObs + deltaObs / nextN;\n const m2Obs = m.m2Obs + deltaObs * (observed - meanObs);\n\n const deltaIso = isotropic - m.meanIso;\n const meanIso = m.meanIso + deltaIso / nextN;\n const m2Iso = m.m2Iso + deltaIso * (isotropic - meanIso);\n\n return { n: nextN, meanObs, m2Obs, meanIso, m2Iso };\n}\n\ninterface SamplingSystemProps {\n complexity: number;\n radius: number; // Lightlane radius (collision threshold)\n distance: number; // Visual lightlane cylinder length\n theta: number;\n phi: number;\n observationMode: 'orbit' | 'randomSphere';\n allSectors: boolean;\n cumulative: boolean;\n K: number; // Poisson constant\n orbitRadius: number; // Satellite orbit radius\n orbitVelocity: number;\n thetaDrift: number;\n thetaJitter: number;\n phiJitter: number;\n usePoisson: boolean;\n speedup: number; // Time speedup factor\n paused: boolean;\n sceneView: SceneViewMode;\n bottomInset?: number;\n showNumericDiagnostics?: boolean;\n compactNumericDiagnostics?: boolean;\n host?: GlitchHostBridge;\n centerDistribution?: boolean;\n hideFlyingBars?: boolean;\n}\n\nexport function SamplingSystem({\n complexity,\n radius,\n distance,\n theta,\n phi,\n observationMode,\n allSectors,\n cumulative,\n K,\n orbitRadius,\n orbitVelocity,\n thetaDrift,\n thetaJitter,\n phiJitter,\n usePoisson,\n speedup,\n paused,\n sceneView,\n bottomInset = 0,\n showNumericDiagnostics = true,\n compactNumericDiagnostics = false,\n host,\n centerDistribution = false,\n hideFlyingBars = false\n}: SamplingSystemProps) {\n const [stats, setStats] = useState({\n current: 0,\n total: 0,\n lastCheck: 0,\n overlaps: 0,\n currentTheory: 0,\n binOverlapsMean: 0,\n currentExpectedLightlane: 0\n });\n const subBinSamples = 4;\n const simulator = useMemo(() => createSamplingSimulation({\n D: orbitRadius,\n theta,\n phi,\n observationMode,\n velocity: orbitVelocity,\n thetaDrift,\n thetaJitter,\n phiJitter,\n distance,\n hitTestModel: 'segment',\n bin_size: 1,\n complexity,\n sub_bin_sampling: subBinSamples,\n flux: K,\n lane_radius: radius,\n allSectors,\n cumulative,\n usePoisson\n }), [orbitRadius, theta, phi, observationMode, orbitVelocity, thetaDrift, thetaJitter, phiJitter, complexity, K, radius, distance, allSectors, cumulative, usePoisson]);\n\n // Fixed size buffer for display\n const bufferSize = 60;\n const historyRef = useRef(new Array(bufferSize).fill(-1));\n const historyTheoryRef = useRef(new Array(bufferSize).fill(-1));\n const currentIndexRef = useRef(0);\n const [history, setHistory] = useState(new Array(bufferSize).fill(-1));\n const [historyTheory, setHistoryTheory] = useState(new Array(bufferSize).fill(-1));\n\n // Calculate expected lambda (mean) from theory: K * r² / (4 * d²)\n const lambdaMean = lambdaIsotropicForGeometry({\n flux: K,\n D: orbitRadius,\n lane_radius: radius,\n dt: 1,\n hitTestModel: 'segment',\n lane_length: distance\n });\n const lambdaStdDev = Math.sqrt(lambdaMean);\n\n // Distribution binning:\n // - Poisson mode: integer-aligned bins (one photon count per bin) to avoid quantization artifacts\n // - Deterministic mode: coarse continuous bins for readability\n const distributionBinsContinuous = 15;\n const binRangeHalf = 4 * lambdaStdDev;\n const binMin = Math.max(0, lambdaMean - binRangeHalf);\n const binMax = lambdaMean + binRangeHalf;\n const useDiscreteCountBins = usePoisson;\n const discreteBinMin = Math.max(0, Math.floor(binMin));\n const discreteBinMax = Math.max(discreteBinMin, Math.ceil(binMax));\n const distributionBins = useDiscreteCountBins\n ? (discreteBinMax - discreteBinMin + 1)\n : distributionBinsContinuous;\n const binWidth = useDiscreteCountBins\n ? 1\n : Math.max(1e-9, (binMax - binMin) / distributionBinsContinuous);\n\n // Helper to convert a count value to a bin index\n const valueToBinIndex = (value: number): number => {\n if (useDiscreteCountBins) {\n const k = Math.round(value);\n if (k <= discreteBinMin) return 0;\n if (k >= discreteBinMax) return distributionBins - 1;\n return k - discreteBinMin;\n }\n\n if (value < binMin) return 0;\n if (value >= binMax) return distributionBins - 1;\n return Math.floor((value - binMin) / binWidth);\n };\n\n // Helper to get the center value of a bin (for display)\n const binIndexToValue = (index: number): number => {\n if (useDiscreteCountBins) return discreteBinMin + index;\n return binMin + (index + 0.5) * binWidth;\n };\n\n const [distributionObserved, setDistributionObserved] = useState(new Array(distributionBins).fill(0));\n const [distributionTheory, setDistributionTheory] = useState(new Array(distributionBins).fill(0));\n\n // Track which bars have been unfastened (clicked)\n const [unfastenedObserved, setUnfastenedObserved] = useState>(new Set());\n const [unfastenedTheory, setUnfastenedTheory] = useState>(new Set());\n\n // Flying bars state\n const [flyingBars, setFlyingBars] = useState([]);\n const flyingBarIdRef = useRef(0);\n const summaryRef = useRef(createEmptyMoments());\n const [summary, setSummary] = useState(createEmptyMoments());\n const pausedRef = useRef(paused);\n const lastBarSoundAtRef = useRef(0);\n\n // Reset all counting when complexity or mean-affecting parameters change\n // (K, radius, orbitRadius affect lambdaMean which determines bin ranges)\n useEffect(() => {\n // Reset distribution histograms\n setDistributionObserved(new Array(distributionBins).fill(0));\n setDistributionTheory(new Array(distributionBins).fill(0));\n\n // Reset periodogram buffers\n historyRef.current.fill(-1);\n historyTheoryRef.current.fill(-1);\n currentIndexRef.current = 0;\n setHistory(new Array(bufferSize).fill(-1));\n setHistoryTheory(new Array(bufferSize).fill(-1));\n\n // Reset unfastened tracking\n setUnfastenedObserved(new Set());\n setUnfastenedTheory(new Set());\n\n // Clear flying bars\n setFlyingBars([]);\n summaryRef.current = createEmptyMoments();\n setSummary(createEmptyMoments());\n setStats({\n current: 0,\n total: 0,\n lastCheck: 0,\n overlaps: 0,\n currentTheory: 0,\n binOverlapsMean: 0,\n currentExpectedLightlane: 0\n });\n }, [complexity, K, radius, distance, orbitRadius, theta, phi, observationMode, orbitVelocity, thetaDrift, thetaJitter, phiJitter, allSectors, cumulative, usePoisson, distributionBins]);\n\n const ingestBins = (bins: Array<{\n lightlane: number;\n isotropic: number;\n overlapsMean: number;\n lambdaLightlaneExpected: number;\n }>, lastLaneCount: number) => {\n if (bins.length === 0) return;\n\n let totalObservedAdded = 0;\n let lastObserved = 0;\n let lastTheory = 0;\n let lastBinOverlapsMean = stats.binOverlapsMean;\n let lastExpectedLightlane = stats.currentExpectedLightlane;\n let nextSummary = summaryRef.current;\n\n for (const bin of bins) {\n const observed = bin.lightlane;\n const observedTheory = bin.isotropic;\n totalObservedAdded += observed;\n lastObserved = observed;\n lastTheory = observedTheory;\n lastBinOverlapsMean = bin.overlapsMean;\n lastExpectedLightlane = bin.lambdaLightlaneExpected;\n nextSummary = updateMoments(nextSummary, observed, observedTheory);\n\n historyRef.current[currentIndexRef.current] = observed;\n historyTheoryRef.current[currentIndexRef.current] = observedTheory;\n currentIndexRef.current++;\n\n if (currentIndexRef.current >= bufferSize) {\n const currentMaxVal = Math.max(10, ...historyRef.current.filter(v => v >= 0), ...historyTheoryRef.current.filter(v => v >= 0));\n autoAccumulateRow([...historyRef.current], [...historyTheoryRef.current], currentMaxVal);\n\n historyRef.current.fill(-1);\n historyTheoryRef.current.fill(-1);\n currentIndexRef.current = 0;\n setUnfastenedObserved(new Set());\n setUnfastenedTheory(new Set());\n }\n }\n summaryRef.current = nextSummary;\n\n setStats(prev => ({\n current: lastObserved,\n total: prev.total + totalObservedAdded,\n lastCheck: Date.now(),\n overlaps: lastLaneCount,\n currentTheory: lastTheory,\n binOverlapsMean: lastBinOverlapsMean,\n currentExpectedLightlane: lastExpectedLightlane\n }));\n setSummary(nextSummary);\n setHistory([...historyRef.current]);\n setHistoryTheory([...historyTheoryRef.current]);\n };\n\n // Swipe state for unfastening multiple bars\n const isDraggingRef = useRef(false);\n const dragTypeRef = useRef<'observed' | 'theory' | null>(null);\n\n // Handle swipe/drag to unfasten multiple bars\n const handlePointerDown = (e: React.PointerEvent, type: 'observed' | 'theory') => {\n e.stopPropagation();\n isDraggingRef.current = true;\n dragTypeRef.current = type;\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n safePlaySound(host, SOUND_IDS.click, { target: `${type}-periodogram`, action: 'pointer-down' });\n };\n\n const handlePointerMove = (e: React.PointerEvent, type: 'observed' | 'theory', historyData: number[], maxValue: number) => {\n if (!isDraggingRef.current || dragTypeRef.current !== type) return;\n e.stopPropagation();\n\n // Calculate which bar index we're over\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const x = e.clientX - rect.left;\n const barIndex = Math.floor((x / rect.width) * bufferSize);\n\n if (barIndex >= 0 && barIndex < bufferSize) {\n const val = historyData[barIndex];\n const isUnfastened = type === 'observed' ? unfastenedObserved.has(barIndex) : unfastenedTheory.has(barIndex);\n if (val >= 0 && !isUnfastened) {\n handleBarClick(barIndex, val, type, maxValue);\n }\n }\n };\n\n const handlePointerUp = (e: React.PointerEvent) => {\n e.stopPropagation();\n isDraggingRef.current = false;\n dragTypeRef.current = null;\n };\n\n // Calculate bar dimensions for flying animation\n const getBarDimensions = (index: number, value: number, type: 'observed' | 'theory', maxValue: number) => {\n const screenWidth = window.innerWidth;\n // const screenHeight = window.innerHeight;\n\n // Starting X position: (index / bufferSize) * screenWidth\n const startLeft = (index / bufferSize) * screenWidth;\n\n // Bar width\n const barWidth = screenWidth / bufferSize;\n\n // Bar height based on value\n const barHeight = Math.max(2, (value / maxValue) * 80);\n\n // Starting position from BOTTOM of viewport\n // Observed histogram: 100px container at very bottom with 20px padding\n // Theory histogram: 100px container above observed with 5px padding\n // Bars are aligned to bottom of their containers\n const observedBottom = 25; // within observed container\n const theoryBottom = 110; // within theory container (100px + some padding)\n const startBottom = type === 'observed' ? observedBottom : theoryBottom;\n\n // Bin index using the centered distribution mapping\n const binIndex = valueToBinIndex(value);\n\n // Target X position: place at the bin's visual position in the distribution histogram\n // The histogram spans the full width with distributionBins bins\n // Account for padding (20px on each side)\n const histogramPadding = 20;\n const histogramWidth = screenWidth - (2 * histogramPadding);\n const targetLeft = histogramPadding + ((binIndex + 0.5) / distributionBins) * histogramWidth;\n\n // Target Y position (from TOP of viewport) - aim for distribution area\n const targetTop = 150;\n\n return { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop, binIndex };\n };\n\n // Handle clicking on a bar to unfasten it\n const handleBarClick = (index: number, value: number, type: 'observed' | 'theory', maxValue: number) => {\n if (value < 0) return; // Don't unfasten empty slots\n\n const now = Date.now();\n if (now - lastBarSoundAtRef.current >= 45) {\n lastBarSoundAtRef.current = now;\n safePlaySound(host, SOUND_IDS.computeStep, { target: `${type}-periodogram`, value });\n }\n\n const { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop } = getBarDimensions(index, value, type, maxValue);\n\n // Create flying bar\n const newBar: FlyingBar = {\n id: flyingBarIdRef.current++,\n value,\n startLeft,\n startBottom,\n barHeight,\n barWidth,\n targetLeft,\n targetTop,\n color: type === 'observed' ? lightlanePalette.solid : poissonPalette.solid,\n type\n };\n\n setFlyingBars(prev => [...prev, newBar]);\n\n // Mark bar as unfastened\n if (type === 'observed') {\n setUnfastenedObserved(prev => new Set(prev).add(index));\n // Update distribution using centered binning\n setDistributionObserved(prev => {\n const newDist = [...prev];\n const binIdx = valueToBinIndex(value);\n newDist[binIdx]++;\n return newDist;\n });\n } else {\n setUnfastenedTheory(prev => new Set(prev).add(index));\n // Update distribution using centered binning\n setDistributionTheory(prev => {\n const newDist = [...prev];\n const binIdx = valueToBinIndex(value);\n newDist[binIdx]++;\n return newDist;\n });\n }\n };\n\n // Auto-accumulate entire row when buffer fills\n const autoAccumulateRow = (historyData: number[], theoryData: number[], maxValue: number) => {\n const newFlyingBars: FlyingBar[] = [];\n const newDistObserved = [...distributionObserved];\n const newDistTheory = [...distributionTheory];\n\n // Process observed bars\n historyData.forEach((val, i) => {\n if (val >= 0) {\n const { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop, binIndex } = getBarDimensions(i, val, 'observed', maxValue);\n newFlyingBars.push({\n id: flyingBarIdRef.current++,\n value: val,\n startLeft,\n startBottom,\n barHeight,\n barWidth,\n targetLeft,\n targetTop,\n color: lightlanePalette.solid,\n type: 'observed'\n });\n newDistObserved[binIndex]++;\n }\n });\n\n // Process theory bars\n theoryData.forEach((val, i) => {\n if (val >= 0) {\n const { startLeft, startBottom, barHeight, barWidth, targetLeft, targetTop, binIndex } = getBarDimensions(i, val, 'theory', maxValue);\n newFlyingBars.push({\n id: flyingBarIdRef.current++,\n value: val,\n startLeft,\n startBottom,\n barHeight,\n barWidth,\n targetLeft,\n targetTop,\n color: poissonPalette.solid,\n type: 'theory'\n });\n newDistTheory[binIndex]++;\n }\n });\n\n setFlyingBars(prev => [...prev, ...newFlyingBars]);\n setDistributionObserved(newDistObserved);\n setDistributionTheory(newDistTheory);\n };\n\n // Clean up flying bars after animation completes\n useEffect(() => {\n if (flyingBars.length > 0) {\n const timer = setTimeout(() => {\n setFlyingBars([]);\n }, 1300); // Clear after animation duration (1.2s) + buffer\n return () => clearTimeout(timer);\n }\n }, [flyingBars.length]); // Only trigger on length change to avoid infinite loops\n\n // Reset unfastened state when buffer resets\n const prevIndexRef = useRef(0);\n useEffect(() => {\n if (currentIndexRef.current < prevIndexRef.current) {\n // Buffer was reset\n setUnfastenedObserved(new Set());\n setUnfastenedTheory(new Set());\n }\n prevIndexRef.current = currentIndexRef.current;\n });\n useEffect(() => {\n const wasPaused = pausedRef.current;\n pausedRef.current = paused;\n if (!paused || wasPaused) return;\n\n const flushed = simulator.flushPartialBin();\n if (flushed) {\n ingestBins([flushed], flushed.overlaps);\n }\n }, [paused, simulator]);\n\n useFrame((_, delta) => {\n if (paused) return;\n const step = simulator.simulate(delta * speedup);\n\n if (step.subBinEvents > 0) {\n setStats(prev => ({ ...prev, overlaps: step.lastLaneCount }));\n }\n\n ingestBins(step.bins, step.lastLaneCount);\n });\n\n // Calculate max ignoring -1 placeholders\n const validValues = history.filter(v => v >= 0);\n const validValuesTheory = historyTheory.filter(v => v >= 0);\n const maxValLightlane = Math.max(10, Math.max(0, ...validValues));\n const maxValPoisson = Math.max(10, Math.max(0, ...validValuesTheory));\n // Distribution max for scaling\n const maxDistribution = Math.max(1, ...distributionObserved, ...distributionTheory);\n const observedVariance = summary.n > 1 ? summary.m2Obs / (summary.n - 1) : 0;\n const isotropicVariance = summary.n > 1 ? summary.m2Iso / (summary.n - 1) : 0;\n const meanRatio = summary.meanIso > 0 ? summary.meanObs / summary.meanIso : 0;\n const varianceRatio = isotropicVariance > 0 ? observedVariance / isotropicVariance : 0;\n const fanoObserved = summary.meanObs > 0 ? observedVariance / summary.meanObs : 0;\n const fanoIsotropic = summary.meanIso > 0 ? isotropicVariance / summary.meanIso : 0;\n const laneCount = simulator.getLaneCount();\n const lcIsoTarget = laneCount > 0 && K > 0 ? (laneCount * lambdaMean) / K : 0;\n const renderNumericInline = showNumericDiagnostics && !compactNumericDiagnostics;\n const showPoissonView = sceneView !== 'lightlane';\n const showLightlaneView = sceneView !== 'poisson';\n const visibleFlyingBars = flyingBars.filter((bar) => (\n (bar.type === 'theory' && showPoissonView) || (bar.type === 'observed' && showLightlaneView)\n ));\n const distributionTitle = sceneView === 'poisson'\n ? 'Shot Noise Distribution'\n : sceneView === 'lightlane'\n ? 'Shot Noise + Lightlane'\n : 'Head to Head';\n\n const metricCardBase: React.CSSProperties = {\n background: 'rgba(255,255,255,0.04)',\n border: '1px solid var(--terminal-panel-border)',\n borderRadius: '6px',\n padding: '6px 8px',\n fontFamily: uiFont\n };\n\n const numericCards = (\n
\n
\n
Samples
\n
{summary.n}
\n
\n
\n
Mean Ratio (Lightlane/Poisson)
\n
{summary.n > 0 ? meanRatio.toFixed(3) : 'n/a'}
\n
\n
\n
Var Ratio (Lightlane/Poisson)
\n
1.1 ? lightlanePalette.light : poissonPalette.light }}>\n {summary.n > 1 ? varianceRatio.toFixed(3) : 'n/a'}\n
\n
\n
\n
Fano Lightlane
\n
\n {summary.n > 1 ? fanoObserved.toFixed(3) : 'n/a'}\n
\n
\n
\n
Fano Poisson
\n
\n {summary.n > 1 ? fanoIsotropic.toFixed(3) : 'n/a'}\n
\n
\n
\n
Fano Ratio (Lightlane/Poisson)
\n
0 && fanoObserved / fanoIsotropic > 1.05 ? lightlanePalette.light : terminalGreenSoft }}>\n {summary.n > 1 && fanoIsotropic > 0 ? (fanoObserved / fanoIsotropic).toFixed(3) : 'n/a'}\n
\n
\n
\n );\n\n const numericContext = (\n
\n LC(now): {stats.overlaps}\n LC(bin avg): {stats.binOverlapsMean.toFixed(2)}\n LC iso target: {Number.isFinite(lcIsoTarget) ? lcIsoTarget.toFixed(2) : 'n/a'}\n E[Lightlane|bin]: {stats.currentExpectedLightlane.toFixed(2)}\n Lightlane(last): {typeof stats.current === 'number' ? Number(stats.current).toFixed(2) : stats.current}\n Lanes: {laneCount}\n Mode: {observationMode === 'randomSphere' ? 'Random Sphere' : 'Orbit'}\n theta drift: {thetaDrift.toFixed(3)}\n theta jitter: {thetaJitter.toFixed(3)}\n phi jitter: {phiJitter.toFixed(3)}\n
\n );\n\n return (\n <>\n {/* Flying bars animation */}\n {!hideFlyingBars && (\n \n \n \n )}\n\n {/* Distribution Histogram at Top */}\n \n
\n {distributionTitle}\n \n (λ = {lambdaMean.toFixed(1)}, σ = {lambdaStdDev.toFixed(1)})\n \n
\n
\n {/* Y-axis label */}\n
\n ← Frequency (how many)\n
\n
\n {distributionObserved.map((count, i) => {\n const theoryCount = distributionTheory[i];\n const obsHeight = (count / maxDistribution) * 100;\n const theoryHeight = (theoryCount / maxDistribution) * 100;\n\n return (\n
\n
\n {showPoissonView && (\n
0 ? '2px' : '0',\n transition: 'height 0.3s ease',\n boxShadow: theoryCount > 0 ? `0 0 5px ${poissonPalette.glow}` : 'none',\n position: 'relative'\n }}>\n {theoryCount > 0 && (\n
\n {theoryCount}\n
\n )}\n
\n )}\n {showLightlaneView && (\n
0 ? '2px' : '0',\n transition: 'height 0.3s ease',\n boxShadow: count > 0 ? `0 0 5px ${lightlanePalette.glow}` : 'none',\n position: 'relative'\n }}>\n {count > 0 && (\n
\n {count}\n
\n )}\n
\n )}\n
\n {/* Bin label (photon count value - center of bin) */}\n
\n {binIndexToValue(i).toFixed(0)}\n
\n
\n );\n })}\n
\n {/* X-axis label */}\n
\n Photon Count Value →\n
\n
\n {showPoissonView && (\n
\n
\n Theory (Poisson)\n
\n )}\n {showLightlaneView && (\n
\n
\n Observed (Lightlanes)\n
\n )}\n
\n {renderNumericInline && numericCards}\n {renderNumericInline && numericContext}\n
\n \n\n {showNumericDiagnostics && compactNumericDiagnostics && (\n \n
\n
\n Diagnostics\n
\n {numericCards}\n {numericContext}\n
\n \n )}\n\n {/* Periodogram Histograms at Bottom of Screen */}\n \n {showPoissonView && (\n handlePointerDown(e, 'theory')}\n onPointerMove={(e) => handlePointerMove(e, 'theory', historyTheory, maxValPoisson)}\n onPointerUp={handlePointerUp}\n onPointerLeave={handlePointerUp}\n style={{\n width: '100%',\n height: '100px',\n background: `linear-gradient(to top, ${poissonPalette.panel}, transparent)`,\n display: 'flex',\n alignItems: 'flex-end',\n padding: showLightlaneView ? '0 20px 5px 20px' : '0 20px 20px 20px',\n gap: '2px',\n position: 'relative',\n borderBottom: showLightlaneView ? '1px solid #555' : 'none',\n pointerEvents: 'auto',\n touchAction: 'none',\n cursor: 'crosshair'\n }}\n >\n
\n THEORY (Poisson) - Swipe or click to count\n
\n {historyTheory.map((val, i) => {\n const isUnfastened = unfastenedTheory.has(i);\n return (\n = 0 && !isUnfastened ? 'clickable-bar' : ''}\n style={{\n flex: 1,\n height: val >= 0 && !isUnfastened ? `${(val / maxValPoisson) * 100}%` : '0',\n background: val === 0 ? 'rgba(255,255,255,0.1)' : poissonPalette.solid,\n color: poissonPalette.solid,\n minHeight: val >= 0 && !isUnfastened ? '1px' : '0',\n transition: 'all 0.3s ease',\n opacity: isUnfastened ? 0 : 0.8,\n borderRadius: '2px 2px 0 0',\n transform: isUnfastened ? 'scale(0)' : 'scale(1)',\n pointerEvents: 'none',\n }}\n />\n );\n })}\n
\n Max: {maxValPoisson}\n
\n
\n )}\n\n {showLightlaneView && (\n handlePointerDown(e, 'observed')}\n onPointerMove={(e) => handlePointerMove(e, 'observed', history, maxValLightlane)}\n onPointerUp={handlePointerUp}\n onPointerLeave={handlePointerUp}\n style={{\n width: '100%',\n height: '100px',\n background: 'linear-gradient(to top, rgba(0,0,0,0.8), transparent)',\n display: 'flex',\n alignItems: 'flex-end',\n padding: '0 20px 20px 20px',\n gap: '2px',\n position: 'relative',\n pointerEvents: 'auto',\n touchAction: 'none',\n cursor: 'crosshair'\n }}\n >\n
\n OBSERVED (Lightlanes) - Swipe or click to count\n
\n {history.map((val, i) => {\n const isUnfastened = unfastenedObserved.has(i);\n return (\n = 0 && !isUnfastened ? 'clickable-bar' : ''}\n style={{\n flex: 1,\n height: val >= 0 && !isUnfastened ? `${(val / maxValLightlane) * 100}%` : '0',\n background: val === 0 ? 'rgba(255,255,255,0.1)' : (val > 0 ? lightlanePalette.solid : 'transparent'),\n color: lightlanePalette.solid,\n minHeight: val >= 0 && !isUnfastened ? '2px' : '0',\n transition: 'all 0.3s ease',\n borderTop: val >= 0 && !isUnfastened ? `2px solid ${lightlanePalette.light}` : 'none',\n opacity: isUnfastened ? 0 : 0.8,\n position: 'relative',\n borderRadius: '2px 2px 0 0',\n transform: isUnfastened ? 'scale(0)' : 'scale(1)',\n pointerEvents: 'none',\n }}\n >\n {(i + 1) % 5 === 0 && !isUnfastened && (\n
\n {i + 1}\n
\n )}\n
\n );\n })}\n
\n Max: {maxValLightlane}\n
\n
\n )}\n \n \n );\n}\n","\nexport type SceneViewMode = 'both' | 'poisson' | 'lightlane';\n\nexport interface LightlaneProps {\n complexity?: number;\n radius?: number;\n distance?: number;\n chandraDistance?: number;\n showAxes?: boolean;\n lightlanes?: boolean;\n allSectors?: boolean;\n cumulative?: boolean;\n phi?: number;\n theta?: number;\n observationMode?: 'orbit' | 'randomSphere';\n orbitSpeed?: number;\n thetaDrift?: number;\n thetaJitter?: number;\n phiJitter?: number;\n speedup?: number;\n K?: number;\n usePoisson?: boolean;\n sceneView?: SceneViewMode;\n hideScenePresentation?: boolean;\n hideFlyingBars?: boolean;\n hideDataBoxes?: boolean;\n}\n\nexport const defaultProps: Required = {\n complexity: 1,\n radius: 2,\n distance: 5,\n chandraDistance: 6,\n showAxes: false, // Cleaner look for challenge\n lightlanes: true, // Always show lightlanes\n allSectors: true,\n cumulative: false,\n phi: 0,\n theta: Math.PI / 2,\n observationMode: 'orbit',\n orbitSpeed: 0.2,\n thetaDrift: 0,\n thetaJitter: 0,\n phiJitter: 0,\n speedup: 1,\n K: 1000,\n usePoisson: true,\n sceneView: 'both',\n hideScenePresentation: false,\n hideFlyingBars: false,\n hideDataBoxes: false\n};\n\nexport interface GlitchComponentConfig {\n id: string;\n name: string;\n version: string;\n params: Record;\n}\n\nexport interface GlitchHostBridge {\n playSound?: (id: string, payload?: Record) => void;\n stopSound?: (id: string, payload?: Record) => void;\n emit?: (type: string, payload?: unknown) => void;\n}\n\nexport interface GlitchTheme {\n primary: string; // #6366f1\n accent: string; // #22d3ee\n bg: string; // #0a0a0f\n bgSecondary: string; // #12121a\n text: string; // #e8e8ec\n textMuted: string; // #9999a8\n border: string; // #2a2a3a\n}\n\nexport interface GlitchComponentResult {\n success: boolean;\n score?: number;\n data?: unknown;\n error?: string;\n}\n\nexport interface GlitchComponentProps {\n config: GlitchComponentConfig;\n onComplete: (result: GlitchComponentResult) => void;\n onProgress?: (percent: number) => void;\n theme?: GlitchTheme;\n className?: string;\n host?: GlitchHostBridge;\n}\n\nexport interface ParamSchema {\n [key: string]: {\n type: 'number' | 'string' | 'boolean' | 'color' | 'select' | 'range';\n label?: string;\n description?: string;\n default: unknown;\n options?: { value: string | number; label: string }[];\n min?: number;\n max?: number;\n step?: number;\n };\n}\n\nexport interface GlitchComponentMetadata {\n name: string;\n displayName: string;\n version: string;\n paramSchema: ParamSchema;\n defaultParams: Record;\n}\n","import { useEffect, useRef, useState } from 'react'\nimport { useFrame } from '@react-three/fiber'\nimport { Grid, Html } from '@react-three/drei'\nimport { DiophantineVectors } from './components/DiophantineVectors'\nimport { FanoSweepPanel } from './components/FanoSweepPanel'\nimport { PoissonShell } from './components/PoissonShell'\nimport { PulsingSphere } from './components/PulsingSphere'\nimport { OrbitingObject } from './components/OrbitingObject'\nimport { SamplingSystem } from './components/SamplingSystem'\nimport { SOUND_IDS, safePlaySound } from './hostBridge'\nimport { type GlitchComponentProps, type LightlaneProps, type SceneViewMode, defaultProps as internalDefaults } from './types'\n\ntype ComponentDevUiOverrides = {\n showNumericDiagnostics?: boolean;\n compactNumericDiagnostics?: boolean;\n onOpenHarness?: () => void;\n onSetParam?: (name: 'complexity' | 'speedup', value: number) => void;\n maxComplexity?: number;\n maxSpeedup?: number;\n};\n\ntype ComponentProps = GlitchComponentProps & {\n devUi?: ComponentDevUiOverrides;\n};\n\nexport default function Component(props: ComponentProps) {\n const host = props.host;\n const compactNumericDiagnostics = props.devUi?.compactNumericDiagnostics ?? false;\n const maxComplexity = props.devUi?.maxComplexity ?? 20;\n const maxSpeedup = props.devUi?.maxSpeedup ?? 240;\n const bottomMenuHeight = 74;\n const cycleLevelCount = 20;\n\n // Extract params from config\n const params = props.config?.params || {};\n\n // Merge props with defaults, casting params to LightlaneProps\n const {\n complexity,\n radius,\n distance,\n chandraDistance,\n showAxes,\n lightlanes,\n allSectors,\n cumulative,\n phi,\n theta,\n observationMode,\n orbitSpeed,\n thetaDrift,\n thetaJitter,\n phiJitter,\n speedup,\n K,\n usePoisson,\n sceneView: configuredSceneView,\n hideScenePresentation,\n hideFlyingBars,\n hideDataBoxes\n } = { ...internalDefaults, ...params } as Required;\n const showNumericDiagnostics = !hideDataBoxes;\n\n // Track global orbit time to ensure continuity\n const orbitTimeRef = useRef(0);\n const simTimeRef = useRef(0);\n const [paused, setPaused] = useState(false);\n const [page, setPage] = useState<'scene' | 'fano'>('scene');\n const [sceneView, setSceneView] = useState(configuredSceneView);\n const [effectiveComplexity, setEffectiveComplexity] = useState(complexity);\n const [effectiveSpeedup, setEffectiveSpeedup] = useState(speedup);\n const [settingFlash, setSettingFlash] = useState(null);\n const settingFlashTimerRef = useRef | null>(null);\n\n useEffect(() => {\n setSceneView(configuredSceneView);\n }, [configuredSceneView]);\n\n useEffect(() => {\n setEffectiveComplexity(complexity);\n }, [complexity]);\n\n useEffect(() => {\n setEffectiveSpeedup(speedup);\n }, [speedup]);\n\n const hideFlyingBarsAtHighSpeed = effectiveSpeedup > 20;\n const showPoissonView = sceneView !== 'lightlane';\n const showLightlaneView = sceneView !== 'poisson';\n const isComplexityEnabled = page === 'scene' && sceneView !== 'poisson';\n\n const getModeLabel = (mode: SceneViewMode) => {\n if (mode === 'poisson') return 'Poisson';\n if (mode === 'lightlane') return 'Lightlane';\n return 'Both';\n };\n\n const playUiHover = () => {\n safePlaySound(host, SOUND_IDS.hover, { page, sceneView });\n };\n\n const playUiClick = (target: string, payload?: Record) => {\n safePlaySound(host, SOUND_IDS.click, { page, sceneView, target, ...payload });\n };\n\n const flashSetting = (message: string) => {\n setSettingFlash(message);\n if (settingFlashTimerRef.current) clearTimeout(settingFlashTimerRef.current);\n settingFlashTimerRef.current = setTimeout(() => {\n setSettingFlash(null);\n settingFlashTimerRef.current = null;\n }, 1500);\n };\n\n const getCycleLevels = (maxValue: number) => {\n if (cycleLevelCount <= 1) return [maxValue];\n\n const interpolatedLevels = Array.from({ length: cycleLevelCount }, (_, index) => {\n if (index === 0) return 1;\n if (index === cycleLevelCount - 1) return maxValue;\n return Math.round(1 + ((maxValue - 1) * index) / (cycleLevelCount - 1));\n });\n\n return Array.from(new Set(interpolatedLevels)).sort((a, b) => a - b);\n };\n\n const getNextCycledValue = (current: number, maxValue: number) => {\n const levels = getCycleLevels(maxValue);\n return levels.find((level) => current < level) ?? levels[levels.length - 1];\n };\n\n const getPreviousCycledValue = (current: number, maxValue: number) => {\n const levels = getCycleLevels(maxValue);\n for (let index = levels.length - 1; index >= 0; index -= 1) {\n if (current > levels[index]) return levels[index];\n }\n return levels[0];\n };\n\n const getCycleLevelIndex = (current: number, maxValue: number) => {\n const levels = getCycleLevels(maxValue);\n const index = levels.findIndex((level) => current <= level);\n return index >= 0 ? index : levels.length - 1;\n };\n\n const complexityLevel = getCycleLevelIndex(effectiveComplexity, maxComplexity);\n const turboLevel = getCycleLevelIndex(effectiveSpeedup, maxSpeedup);\n const complexityFill = `${((complexityLevel + 1) / cycleLevelCount) * 100}%`;\n const turboFill = `${((turboLevel + 1) / cycleLevelCount) * 100}%`;\n const canDecreaseComplexity = isComplexityEnabled && effectiveComplexity > getCycleLevels(maxComplexity)[0];\n const canIncreaseComplexity = isComplexityEnabled && effectiveComplexity < getCycleLevels(maxComplexity).at(-1)!;\n const canDecreaseSpeedup = effectiveSpeedup > getCycleLevels(maxSpeedup)[0];\n const canIncreaseSpeedup = effectiveSpeedup < getCycleLevels(maxSpeedup).at(-1)!;\n\n const stepComplexity = (direction: 'down' | 'up') => {\n if (!isComplexityEnabled) return;\n const next = direction === 'up'\n ? getNextCycledValue(effectiveComplexity, maxComplexity)\n : getPreviousCycledValue(effectiveComplexity, maxComplexity);\n if (next === effectiveComplexity) return;\n playUiClick('complexity', { direction, value: next });\n setEffectiveComplexity(next);\n props.devUi?.onSetParam?.('complexity', next);\n flashSetting(`Complexity ${next}`);\n };\n\n const stepSpeedup = (direction: 'down' | 'up') => {\n const next = direction === 'up'\n ? getNextCycledValue(effectiveSpeedup, maxSpeedup)\n : getPreviousCycledValue(effectiveSpeedup, maxSpeedup);\n if (next === effectiveSpeedup) return;\n playUiClick('turbo', { direction, value: next });\n setEffectiveSpeedup(next);\n props.devUi?.onSetParam?.('speedup', next);\n flashSetting(`Turbo ${next}x`);\n };\n\n const cycleMode = () => {\n const modes: SceneViewMode[] = ['poisson', 'lightlane', 'both'];\n const currentIndex = modes.indexOf(sceneView);\n const nextMode = modes[(currentIndex + 1) % modes.length];\n playUiClick('mode', { value: nextMode });\n setSceneView(nextMode);\n flashSetting(`Mode ${getModeLabel(nextMode)}`);\n };\n\n const toggleFanoPage = () => {\n playUiClick('fano-page', { value: page === 'scene' ? 'fano' : 'scene' });\n setPage((prev) => (prev === 'scene' ? 'fano' : 'scene'));\n };\n\n useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.code !== 'Space' || event.repeat) return;\n\n const target = event.target as HTMLElement | null;\n const tag = target?.tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || target?.isContentEditable) return;\n\n event.preventDefault();\n setPaused(prev => !prev);\n };\n\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, []);\n\n useEffect(() => () => {\n if (settingFlashTimerRef.current) clearTimeout(settingFlashTimerRef.current);\n }, []);\n\n useFrame((_, delta) => {\n if (paused || page === 'fano') return;\n // Accumulate orbit time continuously based on current speed and speedup\n orbitTimeRef.current += delta * orbitSpeed * effectiveSpeedup;\n simTimeRef.current += delta * effectiveSpeedup;\n });\n\n // Keep the visual camera model aligned with the sampling engine when the\n // simulator is recreated/reset by configuration changes (e.g. complexity).\n useEffect(() => {\n orbitTimeRef.current = 0;\n simTimeRef.current = 0;\n }, [\n effectiveComplexity,\n radius,\n distance,\n chandraDistance,\n phi,\n theta,\n observationMode,\n orbitSpeed,\n thetaDrift,\n thetaJitter,\n phiJitter,\n effectiveSpeedup,\n K,\n allSectors,\n cumulative,\n usePoisson,\n ]);\n\n return (\n <>\n \n
\n {\n playUiClick('advanced');\n props.devUi?.onOpenHarness?.();\n }}\n onPointerEnter={playUiHover}\n style={{\n border: '1px solid var(--terminal-panel-border)',\n background: 'rgba(7,19,11,0.86)',\n color: 'var(--terminal-green-soft)',\n borderRadius: 10,\n padding: '10px 12px',\n fontSize: 12,\n fontWeight: 400,\n letterSpacing: '0.08em',\n fontFamily: 'var(--font-headline)',\n textTransform: 'uppercase',\n cursor: 'pointer',\n boxShadow: '0 8px 24px rgba(0,0,0,0.25)',\n }}\n >\n Advanced\n \n
\n \n\n {/* Lighting */}\n \n \n \n\n {page === 'scene' ? (\n <>\n {/* Main content */}\n {!hideScenePresentation && showPoissonView && }\n\n {!hideScenePresentation && showLightlaneView && (\n \n )}\n\n {!hideScenePresentation && }\n\n \n\n \n\n {paused && (\n \n \n \n \n \n \n )}\n\n {/* Helpers */}\n {showAxes && }\n \n \n ) : (\n setPage('scene')}\n host={host}\n />\n )}\n\n \n {settingFlash && (\n \n {settingFlash}\n
\n )}\n \n \n \n \n \n {Array.from({ length: cycleLevelCount }).map((_, index) => (\n \n ))}\n
\n \n Complexity {complexityLevel + 1}/{cycleLevelCount}\n
\n
\n
\n \n \n \n \n \n {Array.from({ length: cycleLevelCount }).map((_, index) => (\n \n ))}\n
\n \n Turbo {turboLevel + 1}/{cycleLevelCount}\n
\n
\n
\n \n {[\n {\n label: 'Complexity',\n kind: 'adjust' as const,\n active: false,\n disabled: !isComplexityEnabled,\n accent: 'rgba(245,158,11,0.2)',\n sublabel: `${effectiveComplexity} • ${complexityLevel + 1}/${cycleLevelCount}`,\n meterColor: 'linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))',\n meterSide: 'left' as const,\n meterFill: complexityFill,\n onDecrease: () => stepComplexity('down'),\n onIncrease: () => stepComplexity('up'),\n canDecrease: canDecreaseComplexity,\n canIncrease: canIncreaseComplexity,\n },\n {\n label: 'Mode',\n kind: 'action' as const,\n onClick: cycleMode,\n active: false,\n accent: 'rgba(59,130,246,0.18)',\n sublabel: getModeLabel(sceneView)\n },\n {\n label: 'Fano Sweep',\n kind: 'action' as const,\n onClick: toggleFanoPage,\n active: page === 'fano',\n accent: 'rgba(59,130,246,0.22)',\n sublabel: page === 'fano' ? 'Open' : 'Scene'\n },\n {\n label: 'Turbo',\n kind: 'adjust' as const,\n active: false,\n accent: 'rgba(34,197,94,0.2)',\n sublabel: `${effectiveSpeedup}x • ${turboLevel + 1}/${cycleLevelCount}`,\n meterColor: 'linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))',\n meterSide: 'right' as const,\n meterFill: turboFill,\n onDecrease: () => stepSpeedup('down'),\n onIncrease: () => stepSpeedup('up'),\n canDecrease: canDecreaseSpeedup,\n canIncrease: canIncreaseSpeedup,\n }\n ].map((item) => (\n item.kind === 'adjust' ? (\n \n {'meterColor' in item && (\n <>\n \n \n \n )}\n \n {item.label}\n \n \n {item.sublabel}\n \n
\n \n -\n \n \n +\n \n
\n
\n ) : (\n \n \n {item.label}\n \n \n {item.sublabel}\n \n \n )\n ))}\n
\n \n\n \n \n )\n}\n","import Component from './Component';\nimport { type GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'lightlane',\n displayName: 'Lightlane Challenge',\n version: '1.1.0',\n paramSchema: {\n hideScenePresentation: { type: 'boolean', label: 'Hide Sphere + Lightlanes', default: false },\n hideFlyingBars: { type: 'boolean', label: 'Hide Flying Bars', default: false },\n hideDataBoxes: { type: 'boolean', label: 'Hide Data Boxes', default: false },\n complexity: { type: 'range', label: 'Complexity', default: 5, min: 1, max: 20, step: 1 },\n radius: { type: 'range', label: 'Distance to star', default: 2, min: 0.1, max: 5, step: 0.1 },\n chandraDistance: { type: 'range', label: 'Chandra Camera Distance', default: 6, min: 5, max: 30, step: 0.5 },\n observationMode: {\n type: 'select',\n label: 'Observation Mode',\n default: 'randomSphere',\n options: [\n { value: 'orbit', label: 'Orbit' },\n { value: 'randomSphere', label: 'Random Sphere' }\n ]\n },\n sceneView: {\n type: 'select',\n label: 'Scene View',\n default: 'both',\n options: [\n { value: 'both', label: 'Both' },\n { value: 'poisson', label: 'Poisson' },\n { value: 'lightlane', label: 'Lightlane' }\n ]\n },\n orbitSpeed: { type: 'range', label: 'Orbit Speed', default: 0.2, min: 0, max: 2, step: 0.01 },\n thetaDrift: { type: 'range', label: 'Theta Drift', default: 0, min: -1, max: 1, step: 0.01 },\n thetaJitter: { type: 'range', label: 'Theta Jitter', default: 0, min: 0, max: 0.25, step: 0.005 },\n phiJitter: { type: 'range', label: 'Phi Jitter', default: 0, min: 0, max: 0.5, step: 0.01 },\n speedup: { type: 'range', label: 'Speedup', default: 1, min: 1, max: 240, step: 1 }\n },\n defaultParams: {\n complexity: 5,\n radius: 2,\n orbitSpeed: 0.2,\n thetaDrift: 0,\n thetaJitter: 0,\n phiJitter: 0,\n chandraDistance: 6,\n observationMode: 'randomSphere',\n sceneView: 'both',\n speedup: 1,\n // Internal defaults will handle the rest\n distance: 5,\n showAxes: false,\n lightlanes: true,\n allSectors: true,\n cumulative: false,\n phi: 0,\n theta: Math.PI / 2,\n K: 1000,\n usePoisson: true,\n hideScenePresentation: false,\n hideFlyingBars: false,\n hideDataBoxes: false\n }\n};\n\nexport type { GlitchComponentProps, GlitchComponentConfig, GlitchComponentResult, GlitchHostBridge } from './types';\n"],"names":["VectorArrow","vector","origin","color","dir","len","position","useMemo","start","THREE","end","arrowHelper","jsx","getVectors","complexity","allSectors","vectors","x","y","z","xSigns","ySigns","zSigns","sx","sy","sz","LightlaneCylinder","radius","distance","quaternion","v","up","jsxs","DiophantineVectors","lightlanes","cumulative","vectorData","data","c","result","getColor","maxC","item","i","HOST_SOUND_EVENT","HOST_STOP_SOUND_EVENT","SOUND_IDS","dispatchWindowEvent","type","detail","safePlaySound","host","id","payload","safeStopSound","EPS","createRng","seed","a","t","samplePoisson","lambda","rand","L","k","p","u1","u2","toXYZ","norm3","wrapAngle","angle","twoPi","randomSphereAngles","u","phi","reflectPolarTheta","theta","sampleNormal","vecOnSphereFromAngles","D","sinT","getDiophantineVectors","buildLaneEndpointsOnShell","raw","out","n","countLaneOverlapsOnSegments","lanes","satPos","laneRadius","Px","Py","Pz","r2","count","Bx","By","Bz","b2","Cx","Cy","Cz","dx","dy","dz","countLaneOverlapsOnShell","dotThreshold","isotropicCoverageProbability","lane_radius","isotropicCoverageProbabilitySegment","lane_length","dMin","dJoin","c0","lambdaIsotropic","flux","dt","lambdaIsotropicSegment","lambdaIsotropicForGeometry","hitTestModel","validateConfig","config","bin_size","sub_bin_sampling","thetaDrift","thetaJitter","phiJitter","observationMode","createSamplingSimulation","cfg","laneSegments","lightlaneRand","isotropicRand","pathRand","subBinSize","lambdaIsoSubBin","timeInBin","timeInSubBin","phase","thetaNow","elapsed","accumulatedLightlane","accumulatedIsotropic","expectedLightlaneThisBin","processedSubBinsInCurrentBin","lastLaneCount","overlapSumThisBin","sampleCount","currentSatPos","sampleTheta","samplePhi","processSubBin","ang","laneCount","N","lam","finalizeBin","effectiveBinSize","lamIso","bin","remaining","subBinEvents","bins","untilSub","untilBin","step","updateMoments","m","delta","mean","m2","emptyMoments","sampleFanoPoint","samplesPerPoint","runsPerPoint","binSize","subBinSampling","props","blue","yellow","run","sim","varBlue","varYellow","fanoBlue","fanoYellow","fitPowerLaw","points","minComplexity","usable","sxx","sxy","denom","slope","intercept","fitPowerLawWithFloor","minY","maxB","best","steps","B","shifted","A","alpha","score","pred","err","fitPowerXY","samples","s","estimateComplexityFromLaneCount","targetLaneCount","sorted","b","byLane","first","last","extrapolated","linePath","getY","xToPx","yToPx","formatYAxisTick","value","buildLogTicks","min","max","ticks","logMin","logMax","_","FanoSweepPanel","maxComplexity","setMaxComplexity","useState","setSamplesPerPoint","setRunsPerPoint","setBinSize","setSubBinSampling","setObservationMode","targetExcess","setTargetExcess","fitStartComplexity","setFitStartComplexity","runId","setRunId","setPoints","progress","setProgress","running","setRunning","wasRunningRef","useRef","progressStepRef","playUiHover","playUiClick","target","useEffect","cancelled","nextPoints","point","resolve","wasRunning","nextProgressStep","fit","floorFit","indistinguishableEstimate","effectiveTarget","effectiveA","effectiveAlpha","requiredLaneCount","measuredCrossing","complexityEstimate","plot","margin","innerW","innerH","maxX","positiveYs","rawYMin","rawYMax","yMin","yMax","safeY","ly","yTicks","bluePath","yellowPath","latest","Html","prev","e","py","px","fitPath","Fragment","sparkleColor","Color","createSparkleField","positions","colors","sparklePoints","shellRadius","index","radial","offset","PoissonShell","sparkleRef","sparkleCount","useFrame","clock","sparkleCloud","colorAttribute","time","colorArray","pulse","intensity","PulsingSphere","paused","materialRef","state","OrbitingObject","orbitTime","simTime","groupRef","currentPhi","currentTheta","poissonPalette","lightlanePalette","headlineFont","uiFont","terminalGreen","terminalGreenSoft","terminalGreenMuted","FlyingBars","bars","screenHeight","bar","startTop","deltaX","deltaY","createEmptyMoments","observed","isotropic","nextN","deltaObs","meanObs","m2Obs","deltaIso","meanIso","m2Iso","SamplingSystem","K","orbitRadius","orbitVelocity","usePoisson","speedup","sceneView","bottomInset","showNumericDiagnostics","compactNumericDiagnostics","centerDistribution","hideFlyingBars","stats","setStats","subBinSamples","simulator","bufferSize","historyRef","historyTheoryRef","currentIndexRef","history","setHistory","historyTheory","setHistoryTheory","lambdaMean","lambdaStdDev","distributionBinsContinuous","binRangeHalf","binMin","binMax","useDiscreteCountBins","discreteBinMin","discreteBinMax","distributionBins","binWidth","valueToBinIndex","binIndexToValue","distributionObserved","setDistributionObserved","distributionTheory","setDistributionTheory","unfastenedObserved","setUnfastenedObserved","unfastenedTheory","setUnfastenedTheory","flyingBars","setFlyingBars","flyingBarIdRef","summaryRef","summary","setSummary","pausedRef","lastBarSoundAtRef","ingestBins","totalObservedAdded","lastObserved","lastTheory","lastBinOverlapsMean","lastExpectedLightlane","nextSummary","observedTheory","currentMaxVal","autoAccumulateRow","isDraggingRef","dragTypeRef","handlePointerDown","handlePointerMove","historyData","maxValue","rect","barIndex","val","isUnfastened","handleBarClick","handlePointerUp","getBarDimensions","screenWidth","startLeft","barWidth","barHeight","startBottom","binIndex","histogramPadding","histogramWidth","targetLeft","now","targetTop","newBar","newDist","binIdx","theoryData","newFlyingBars","newDistObserved","newDistTheory","timer","prevIndexRef","wasPaused","flushed","validValues","validValuesTheory","maxValLightlane","maxValPoisson","maxDistribution","observedVariance","isotropicVariance","meanRatio","varianceRatio","fanoObserved","fanoIsotropic","lcIsoTarget","renderNumericInline","showPoissonView","showLightlaneView","visibleFlyingBars","distributionTitle","metricCardBase","numericCards","numericContext","theoryCount","obsHeight","theoryHeight","defaultProps","Component","maxSpeedup","bottomMenuHeight","cycleLevelCount","params","chandraDistance","showAxes","orbitSpeed","configuredSceneView","hideScenePresentation","hideDataBoxes","internalDefaults","orbitTimeRef","simTimeRef","setPaused","page","setPage","setSceneView","effectiveComplexity","setEffectiveComplexity","effectiveSpeedup","setEffectiveSpeedup","settingFlash","setSettingFlash","settingFlashTimerRef","hideFlyingBarsAtHighSpeed","isComplexityEnabled","getModeLabel","mode","flashSetting","message","getCycleLevels","interpolatedLevels","getNextCycledValue","current","levels","level","getPreviousCycledValue","getCycleLevelIndex","complexityLevel","turboLevel","complexityFill","turboFill","canDecreaseComplexity","canIncreaseComplexity","canDecreaseSpeedup","canIncreaseSpeedup","stepComplexity","direction","next","stepSpeedup","cycleMode","modes","currentIndex","nextMode","toggleFanoPage","onKeyDown","event","tag","Grid","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/public/glitch/glitch_lightlane/presets.d.ts b/public/glitch/glitch_lightlane/presets.d.ts new file mode 100644 index 0000000..5e71c13 --- /dev/null +++ b/public/glitch/glitch_lightlane/presets.d.ts @@ -0,0 +1,94 @@ +export interface Config { + complexity: number; + radius: number; + distance: number; + lightlanes: boolean; + allSectors: boolean; + cumulative: boolean; + phi: number; + theta: number; + orbitSpeed?: number; + usePoisson?: boolean; +} +export interface Preset { + name: string; + description: string; + duration: number; + start: Config; + end: Config; +} +export declare const presets: Preset[]; +export declare const namedPresets: { + "Iso: High Complexity": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Iso: Fast Orbit": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Iso: Optimal": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Aniso: Low Complexity": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Aniso: Slow Speed": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; + "Aniso: High Distance": { + complexity: number; + distance: number; + orbitSpeed: number; + lightlanes: boolean; + allSectors: boolean; + radius: number; + cumulative: boolean; + phi: number; + theta: number; + usePoisson?: boolean; + }; +}; diff --git a/public/glitch/glitch_lightlane/types.d.ts b/public/glitch/glitch_lightlane/types.d.ts new file mode 100644 index 0000000..114197e --- /dev/null +++ b/public/glitch/glitch_lightlane/types.d.ts @@ -0,0 +1,82 @@ +export type SceneViewMode = 'both' | 'poisson' | 'lightlane'; +export interface LightlaneProps { + complexity?: number; + radius?: number; + distance?: number; + chandraDistance?: number; + showAxes?: boolean; + lightlanes?: boolean; + allSectors?: boolean; + cumulative?: boolean; + phi?: number; + theta?: number; + observationMode?: 'orbit' | 'randomSphere'; + orbitSpeed?: number; + thetaDrift?: number; + thetaJitter?: number; + phiJitter?: number; + speedup?: number; + K?: number; + usePoisson?: boolean; + sceneView?: SceneViewMode; + hideScenePresentation?: boolean; + hideFlyingBars?: boolean; + hideDataBoxes?: boolean; +} +export declare const defaultProps: Required; +export interface GlitchComponentConfig { + id: string; + name: string; + version: string; + params: Record; +} +export interface GlitchHostBridge { + playSound?: (id: string, payload?: Record) => void; + stopSound?: (id: string, payload?: Record) => void; + emit?: (type: string, payload?: unknown) => void; +} +export interface GlitchTheme { + primary: string; + accent: string; + bg: string; + bgSecondary: string; + text: string; + textMuted: string; + border: string; +} +export interface GlitchComponentResult { + success: boolean; + score?: number; + data?: unknown; + error?: string; +} +export interface GlitchComponentProps { + config: GlitchComponentConfig; + onComplete: (result: GlitchComponentResult) => void; + onProgress?: (percent: number) => void; + theme?: GlitchTheme; + className?: string; + host?: GlitchHostBridge; +} +export interface ParamSchema { + [key: string]: { + type: 'number' | 'string' | 'boolean' | 'color' | 'select' | 'range'; + label?: string; + description?: string; + default: unknown; + options?: { + value: string | number; + label: string; + }[]; + min?: number; + max?: number; + step?: number; + }; +} +export interface GlitchComponentMetadata { + name: string; + displayName: string; + version: string; + paramSchema: ParamSchema; + defaultParams: Record; +} diff --git a/public/glitch/glitch_lightlane/vectors.d.ts b/public/glitch/glitch_lightlane/vectors.d.ts new file mode 100644 index 0000000..15013f8 --- /dev/null +++ b/public/glitch/glitch_lightlane/vectors.d.ts @@ -0,0 +1,2 @@ +export type Vector3Tuple = [number, number, number]; +export declare function getVectors(complexity: number, allSectors?: boolean): Vector3Tuple[]; diff --git a/public/glitch/glitch_lightlane/vite.svg b/public/glitch/glitch_lightlane/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/glitch/glitch_lightlane/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/glitch/glitch_migration_paradox/glitch.manifest.json b/public/glitch/glitch_migration_paradox/glitch.manifest.json new file mode 100644 index 0000000..755f96e --- /dev/null +++ b/public/glitch/glitch_migration_paradox/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "migration-paradox", + "displayName": "The Migration Paradox", + "version": "1.0.0", + "folderName": "glitch_migration_paradox", + "packageName": "migration-paradox", + "entry": "dist/migration-paradox.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "paradox", + "narrative" + ] +} diff --git a/public/glitch/glitch_migration_paradox/migration-paradox.js b/public/glitch/glitch_migration_paradox/migration-paradox.js new file mode 100644 index 0000000..e8de3a7 --- /dev/null +++ b/public/glitch/glitch_migration_paradox/migration-paradox.js @@ -0,0 +1,422 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._container_166qm_3{--component-font-main: var(--font-main, system-ui, sans-serif);--component-font-display: var(--font-display, var(--component-font-main));--component-font-mono: var(--font-mono, monospace);background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:var(--component-font-main);line-height:1.6;max-width:640px;margin:0 auto;padding:1rem}._container_166qm_3 *,._container_166qm_3 *:before,._container_166qm_3 *:after{box-sizing:inherit}._panel_166qm_21{animation:_fadeIn_166qm_1 .3s ease;background:var(--gc-bg-secondary, #12121a);border:4px solid var(--gc-border, #2a2a3a);border-radius:4px;box-shadow:0 0 0 2px var(--gc-bg, #0a0a0f),0 0 20px #6366f126,inset 0 0 60px #00000080}@keyframes _fadeIn_166qm_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}._imageFrame_166qm_38{width:100%;min-height:100%;object-fit:contain;aspect-ratio:16 / 9;background:#000;border-bottom:4px solid var(--gc-border, #2a2a3a);overflow:hidden;position:relative}._imageFrame_166qm_38:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(0deg,rgba(0,0,0,.4) 0%,transparent 20%,transparent 80%,rgba(0,0,0,.2) 100%);pointer-events:none}._sceneImage_166qm_63{width:100%;height:100%;object-fit:contain;image-rendering:auto}._sceneFallback_166qm_70{--scene-accent: var(--gc-primary, #6366f1);--scene-glow: rgb(99 102 241 / 26%);--scene-panel: rgb(8 10 20 / 92%);position:relative;display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:1rem;background:radial-gradient(circle at 20% 18%,var(--scene-glow),transparent 34%),linear-gradient(145deg,rgb(8 10 20 / 96%),rgb(5 6 12 / 96%));overflow:hidden}._sceneFallback_166qm_70[data-tone=danger]{--scene-accent: #ef4444;--scene-glow: rgb(239 68 68 / 22%)}._sceneFallback_166qm_70[data-tone=accent]{--scene-accent: var(--gc-accent, #22d3ee);--scene-glow: rgb(34 211 238 / 20%)}._sceneFallback_166qm_70[data-tone=success]{--scene-accent: #22c55e;--scene-glow: rgb(34 197 94 / 20%)}._sceneFallbackGlow_166qm_102{position:absolute;inset:12% auto auto 8%;width:40%;aspect-ratio:1;border-radius:999px;background:radial-gradient(circle,var(--scene-glow),transparent 70%);filter:blur(8px);pointer-events:none}._sceneFallbackHud_166qm_113{position:relative;display:flex;justify-content:space-between;gap:.75rem;align-items:center;z-index:1}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{border:1px solid color-mix(in srgb,var(--scene-accent) 55%,transparent);background:color-mix(in srgb,var(--scene-panel) 88%,transparent);color:color-mix(in srgb,var(--scene-accent) 86%,white);padding:.35rem .55rem;text-transform:uppercase;letter-spacing:.14em;font-family:var(--component-font-mono);font-size:.66rem}._sceneFallbackSignal_166qm_123{opacity:.85}._sceneFallbackCopy_166qm_138{position:relative;z-index:1;display:grid;gap:.45rem;max-width:28rem}._sceneFallbackKicker_166qm_146{margin:0;color:color-mix(in srgb,var(--scene-accent) 78%,white);font-family:var(--component-font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}._sceneFallbackTitle_166qm_155{margin:0;color:#fff;font-family:var(--component-font-display);font-size:clamp(1.3rem,2.8vw,2rem);line-height:1.05;text-transform:uppercase}._sceneFallbackDetail_166qm_164{margin:0;color:#e8e8ecc2;font-size:.88rem;max-width:32ch}._sceneFallbackBars_166qm_171{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;align-items:end}._sceneFallbackBars_166qm_171 span{height:.35rem;border-radius:999px;background:linear-gradient(90deg,var(--scene-accent),color-mix(in srgb,var(--scene-accent) 18%,transparent));opacity:.9}._sceneFallbackBars_166qm_171 span:nth-child(2){width:82%}._sceneFallbackBars_166qm_171 span:nth-child(3){width:64%}._dialogueBox_166qm_196{padding:1.5rem;position:relative}._dialogueBox_166qm_196:before{content:"";position:absolute;top:0;left:1rem;right:1rem;height:1px;background:linear-gradient(90deg,transparent,var(--gc-primary, #6366f1) 20%,var(--gc-primary, #6366f1) 80%,transparent)}._dialogueHeader_166qm_217{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}._title_166qm_224{color:var(--gc-primary, #6366f1);font-family:var(--component-font-display);margin:0;font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 10px rgba(99,102,241,.5)}._loopBadge_166qm_235{background:rgba(239,68,68,.2);color:#ef4444;padding:.25rem .75rem;border:2px solid #ef4444;border-radius:2px;font-family:var(--component-font-mono);font-size:.75rem;font-weight:700;letter-spacing:.1em;animation:_loopPulse_166qm_1 1.5s ease-in-out infinite}@keyframes _loopPulse_166qm_1{0%,to{opacity:1}50%{opacity:.6}}._description_166qm_253{color:var(--gc-text-muted, #9999a8);margin:0 0 1.25rem;font-size:.95rem;line-height:1.7}._actionButton_166qm_261{background:linear-gradient(180deg,#4f46e5 0%,#3730a3 100%);color:#fff;border:2px solid #6366f1;padding:.875rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #1e1b4b,0 6px 10px #0000004d;position:relative;top:0}._actionButton_166qm_261:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #1e1b4b,0 8px 15px #0000004d}._actionButton_166qm_261:active{top:4px;box-shadow:0 0 #1e1b4b,0 2px 5px #0000004d}._choices_166qm_296{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}._choiceButton_166qm_303{background:var(--gc-bg, #0a0a0f);border:2px solid var(--gc-border, #2a2a3a);padding:1rem;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;gap:1rem;position:relative;overflow:hidden}._choiceButton_166qm_303:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gc-primary, #6366f1);opacity:0;transition:opacity .15s ease}._choiceButton_166qm_303:hover{border-color:var(--gc-primary, #6366f1);background:rgba(99,102,241,.08)}._choiceButton_166qm_303:hover:before{opacity:1}._choiceKey_166qm_337{width:2.5rem;height:2.5rem;background:linear-gradient(180deg,#374151 0%,#1f2937 100%);border:2px solid #4b5563;border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--component-font-mono);font-size:1.25rem;font-weight:700;color:#e5e7eb;flex-shrink:0;box-shadow:0 3px #111827,inset 0 1px #ffffff1a;text-shadow:0 1px 2px rgba(0,0,0,.5)}._choiceButton_166qm_303:hover ._choiceKey_166qm_337{background:linear-gradient(180deg,#4f46e5 0%,#3730a3 100%);border-color:#6366f1;box-shadow:0 3px #1e1b4b,inset 0 1px #ffffff26,0 0 10px #6366f14d}._choiceContent_166qm_366{display:flex;flex-direction:column;gap:.25rem;text-align:left}._choiceTitle_166qm_373{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-weight:700;font-size:1rem}._choiceDesc_166qm_380{color:var(--gc-text-muted, #9999a8);font-size:.8rem;font-style:italic}._rejection_166qm_387{background:rgba(239,68,68,.08);border:2px solid rgba(239,68,68,.4);padding:1.25rem;margin-bottom:1.25rem;position:relative}._rejectionBadge_166qm_395{display:inline-block;background:#dc2626;color:#fff;padding:.25rem .75rem;font-family:var(--component-font-mono);font-size:.8rem;font-weight:700;letter-spacing:.15em;margin-bottom:1rem;animation:_shake_166qm_1 .5s ease-in-out}@keyframes _shake_166qm_1{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}._quote_166qm_416{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-size:1.1rem;font-weight:700;margin:0 0 .75rem;padding-left:1rem;border-left:3px solid #ef4444}._explanation_166qm_426{color:var(--gc-text-muted, #9999a8);margin:0;font-size:.9rem;padding-left:1rem;border-left:3px solid transparent}._insightButton_166qm_435{background:transparent;border:2px dashed var(--gc-accent, #22d3ee);color:var(--gc-accent, #22d3ee);padding:.75rem 1rem;font-family:var(--component-font-display);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:1rem;width:100%;animation:_glowPulse_166qm_1 2s ease-in-out infinite}@keyframes _glowPulse_166qm_1{0%,to{box-shadow:0 0 5px #22d3ee4d}50%{box-shadow:0 0 15px #22d3ee80}}._insightButton_166qm_435:hover{background:rgba(34,211,238,.1);border-style:solid}._insight_166qm_435{text-align:center}._insightTitle_166qm_465{color:var(--gc-accent, #22d3ee);margin:0 0 1.5rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-shadow:0 0 15px rgba(34,211,238,.5)}._paradoxDiagram_166qm_474{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1.5rem;padding:1rem;background:rgba(0,0,0,.4);border:1px solid var(--gc-border, #2a2a3a)}._paradoxNode_166qm_486{background:var(--gc-bg, #0a0a0f);border:1px solid var(--gc-border, #2a2a3a);padding:.4rem .6rem;font-family:var(--component-font-mono);font-size:.7rem;color:var(--gc-text-muted, #9999a8)}._paradoxArrow_166qm_495{color:var(--gc-primary, #6366f1);font-size:1rem;font-weight:700}._paradoxLoop_166qm_501{color:var(--gc-accent, #22d3ee);font-size:1.5rem;margin-left:.5rem;animation:_spin_166qm_1 3s linear infinite}@keyframes _spin_166qm_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._insightText_166qm_513{color:var(--gc-text, #e8e8ec);margin:0 0 1rem;font-size:.9rem;line-height:1.7;text-align:left}._insightText_166qm_513:last-of-type{margin-bottom:0}._insightText_166qm_513 strong{color:var(--gc-accent, #22d3ee)}._completeButton_166qm_530{background:linear-gradient(180deg,#059669 0%,#047857 100%);color:#fff;border:2px solid #10b981;padding:1rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;margin-top:1.5rem;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #064e3b,0 6px 10px #0000004d;position:relative;top:0}._completeButton_166qm_530:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #064e3b,0 8px 15px #0000004d}._completeButton_166qm_530:active{top:4px;box-shadow:0 0 #064e3b,0 2px 5px #0000004d}._successBox_166qm_566{text-align:center}._successTitle_166qm_570{color:#22c55e;margin:0 0 1rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 15px rgba(34,197,94,.5)}._stats_166qm_581{color:var(--gc-text-muted, #9999a8);margin:0 0 1.5rem;font-size:.9rem}._scoreDisplay_166qm_587{background:rgba(0,0,0,.4);border:2px solid var(--gc-accent, #22d3ee);padding:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}._scoreLabel_166qm_597{color:var(--gc-text-muted, #9999a8);font-family:var(--component-font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.2em}._scoreValue_166qm_605{color:var(--gc-accent, #22d3ee);font-size:3rem;font-weight:700;text-shadow:0 0 20px rgba(34,211,238,.5)}@media (max-width: 480px){._container_166qm_3{padding:.5rem}._dialogueBox_166qm_196{padding:1rem}._title_166qm_224{font-size:1.1rem}._choiceKey_166qm_337{width:2rem;height:2rem;font-size:1rem}._paradoxDiagram_166qm_474{gap:.25rem;padding:.75rem}._paradoxNode_166qm_486{font-size:.6rem;padding:.3rem .5rem}._sceneFallback_166qm_70{padding:.85rem}._sceneFallbackHud_166qm_113{gap:.5rem}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{font-size:.58rem;padding:.3rem .45rem}._sceneFallbackTitle_166qm_155{font-size:1.1rem}._sceneFallbackDetail_166qm_164{font-size:.78rem}}')),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})(); +import { jsxs as t, jsx as a } from "react/jsx-runtime"; +import { useState as b, useMemo as I, useCallback as d } from "react"; +const K = "_container_166qm_3", O = "_panel_166qm_21", V = "_fadeIn_166qm_1", $ = "_imageFrame_166qm_38", G = "_sceneImage_166qm_63", W = "_sceneFallback_166qm_70", J = "_sceneFallbackGlow_166qm_102", z = "_sceneFallbackHud_166qm_113", Q = "_sceneFallbackBadge_166qm_122", X = "_sceneFallbackSignal_166qm_123", Z = "_sceneFallbackCopy_166qm_138", P = "_sceneFallbackKicker_166qm_146", ee = "_sceneFallbackTitle_166qm_155", ae = "_sceneFallbackDetail_166qm_164", te = "_sceneFallbackBars_166qm_171", ne = "_dialogueBox_166qm_196", se = "_dialogueHeader_166qm_217", ce = "_title_166qm_224", oe = "_loopBadge_166qm_235", ie = "_loopPulse_166qm_1", le = "_description_166qm_253", re = "_actionButton_166qm_261", de = "_choices_166qm_296", me = "_choiceButton_166qm_303", he = "_choiceKey_166qm_337", pe = "_choiceContent_166qm_366", ue = "_choiceTitle_166qm_373", ge = "_choiceDesc_166qm_380", _e = "_rejection_166qm_387", Ne = "_rejectionBadge_166qm_395", be = "_shake_166qm_1", ke = "_quote_166qm_416", xe = "_explanation_166qm_426", ye = "_insightButton_166qm_435", Be = "_glowPulse_166qm_1", ve = "_insight_166qm_435", qe = "_insightTitle_166qm_465", Ce = "_paradoxDiagram_166qm_474", Te = "_paradoxNode_166qm_486", Fe = "_paradoxArrow_166qm_495", fe = "_paradoxLoop_166qm_501", we = "_spin_166qm_1", Ae = "_insightText_166qm_513", Ie = "_completeButton_166qm_530", Ee = "_successBox_166qm_566", Se = "_successTitle_166qm_570", je = "_stats_166qm_581", De = "_scoreDisplay_166qm_587", Me = "_scoreLabel_166qm_597", Le = "_scoreValue_166qm_605", e = { + container: K, + panel: O, + fadeIn: V, + imageFrame: $, + sceneImage: G, + sceneFallback: W, + sceneFallbackGlow: J, + sceneFallbackHud: z, + sceneFallbackBadge: Q, + sceneFallbackSignal: X, + sceneFallbackCopy: Z, + sceneFallbackKicker: P, + sceneFallbackTitle: ee, + sceneFallbackDetail: ae, + sceneFallbackBars: te, + dialogueBox: ne, + dialogueHeader: se, + title: ce, + loopBadge: oe, + loopPulse: ie, + description: le, + actionButton: re, + choices: de, + choiceButton: me, + choiceKey: he, + choiceContent: pe, + choiceTitle: ue, + choiceDesc: ge, + rejection: _e, + rejectionBadge: Ne, + shake: be, + quote: ke, + explanation: xe, + insightButton: ye, + glowPulse: Be, + insight: ve, + insightTitle: qe, + paradoxDiagram: Ce, + paradoxNode: Te, + paradoxArrow: Fe, + paradoxLoop: fe, + spin: we, + insightText: Ae, + completeButton: Ie, + successBox: Ee, + successTitle: Se, + stats: je, + scoreDisplay: De, + scoreLabel: Me, + scoreValue: Le +}, E = "/glitch/migration-paradox", Re = 2, He = 1, _ = { + presenting: { + badge: "Migration Briefing", + title: "Stakeholders Await Your Plan", + copy: "Frame the migration as progress without triggering fear.", + detail: "You need a strategy that creates momentum before the paradox closes in.", + tone: "primary" + }, + "rejection-value": { + badge: "Stakeholder Response", + title: "Too Much Change", + copy: "Your pitch sounded valuable, but it also sounded dangerous.", + detail: "They want new capability only if nothing important feels different.", + tone: "danger" + }, + "rejection-same": { + badge: "Stakeholder Response", + title: "Too Little Value", + copy: "Your pitch sounded safe, but it also sounded pointless.", + detail: "They want risk contained, but they still expect the migration to matter.", + tone: "danger" + }, + awareness: { + badge: "Pattern Detected", + title: "Expose The Contradiction", + copy: "Show how value and continuity need different phases, not one impossible promise.", + detail: "Explore, preserve, and then innovate.", + tone: "accent" + }, + complete: { + badge: "Challenge Complete", + title: "Paradox Resolved", + copy: "You reframed the migration into a sequence stakeholders can accept.", + detail: "Value and stability can coexist when delivery is phased.", + tone: "success" + } +}; +function Ue(o) { + if (typeof o != "string") + return E; + const i = o.trim(); + return i ? i.replace(/\/+$/, "") : E; +} +function y(o, i) { + return `${o}/${i}`; +} +function S(o, i) { + const n = o === "A" ? Re : He, s = Math.floor(Math.random() * n) + 1; + return y(i, `rejection${o}_${s}.png`); +} +function N({ + src: o, + alt: i, + fallback: n, + onImageError: s +}) { + return /* @__PURE__ */ a("div", { className: e.imageFrame, children: o ? /* @__PURE__ */ a( + "img", + { + src: o, + alt: i, + className: e.sceneImage, + onError: () => s(o) + } + ) : /* @__PURE__ */ t( + "div", + { + className: e.sceneFallback, + "data-tone": n.tone, + role: "img", + "aria-label": i, + children: [ + /* @__PURE__ */ a("div", { className: e.sceneFallbackGlow }), + /* @__PURE__ */ t("div", { className: e.sceneFallbackHud, children: [ + /* @__PURE__ */ a("span", { className: e.sceneFallbackBadge, children: n.badge }), + /* @__PURE__ */ a("span", { className: e.sceneFallbackSignal, children: "GLITCH SIM" }) + ] }), + /* @__PURE__ */ t("div", { className: e.sceneFallbackCopy, children: [ + /* @__PURE__ */ a("p", { className: e.sceneFallbackKicker, children: n.copy }), + /* @__PURE__ */ a("h3", { className: e.sceneFallbackTitle, children: n.title }), + /* @__PURE__ */ a("p", { className: e.sceneFallbackDetail, children: n.detail }) + ] }), + /* @__PURE__ */ t("div", { className: e.sceneFallbackBars, "aria-hidden": "true", children: [ + /* @__PURE__ */ a("span", {}), + /* @__PURE__ */ a("span", {}), + /* @__PURE__ */ a("span", {}) + ] }) + ] + } + ) }); +} +function Oe({ + config: o, + onComplete: i, + onProgress: n, + theme: s, + className: j +}) { + const k = (o == null ? void 0 : o.params) ?? {}, [h, p] = b("intro"), [l, T] = b({ + loopCount: 0, + valueAttempts: 0, + sameAttempts: 0 + }), [B, D] = b(!1), [F, f] = b(""), [w, M] = b({}), r = I( + () => Ue(k.assetBaseUrl ?? k.imageBaseUrl), + [k.assetBaseUrl, k.imageBaseUrl] + ), x = I(() => ({ + presenting: y(r, "presenting.png"), + insight: y(r, "insight.png"), + complete: y(r, "complete.png") + }), [r]), L = { + "--gc-primary": (s == null ? void 0 : s.primary) || "#6366f1", + "--gc-accent": (s == null ? void 0 : s.accent) || "#22d3ee", + "--gc-bg": (s == null ? void 0 : s.bg) || "#0a0a0f", + "--gc-bg-secondary": (s == null ? void 0 : s.bgSecondary) || "#12121a", + "--gc-text": (s == null ? void 0 : s.text) || "#e8e8ec", + "--gc-text-muted": (s == null ? void 0 : s.textMuted) || "#9999a8", + "--gc-border": (s == null ? void 0 : s.border) || "#2a2a3a" + }, m = l.valueAttempts + l.sameAttempts, v = m >= 4, u = d((c) => w[c] ? void 0 : c, [w]), g = d((c) => { + M((C) => C[c] ? C : { ...C, [c]: !0 }); + }, []), R = d(() => { + p("choice"), n == null || n(10); + }, [n]), H = d(() => { + f(S("A", r)), T((c) => ({ + ...c, + valueAttempts: c.valueAttempts + 1, + loopCount: c.loopCount + (c.sameAttempts > c.valueAttempts ? 0.5 : 0) + })), p("rejection-value"), n == null || n(Math.min(30 + m * 10, 80)); + }, [r, m, n]), U = d(() => { + f(S("B", r)), T((c) => ({ + ...c, + sameAttempts: c.sameAttempts + 1, + loopCount: c.loopCount + (c.valueAttempts > c.sameAttempts ? 0.5 : 0) + })), p("rejection-same"), n == null || n(Math.min(30 + m * 10, 80)); + }, [r, m, n]), A = d(() => { + p("choice"); + }, []), q = d(() => { + D(!0), p("awareness"), n == null || n(90); + }, [n]), Y = d(() => { + p("complete"), n == null || n(100), i({ + success: !0, + score: 100, + data: { + loopsBeforeInsight: Math.floor(l.loopCount), + totalAttempts: m, + valueAttempts: l.valueAttempts, + sameAttempts: l.sameAttempts + }, + rewards: { + paradoxes: [{ + id: "migration-paradox", + name: "The Migration Paradox", + description: "Stakeholders simultaneously demand that a migration adds value AND changes nothing.", + rarity: "uncommon" + }] + } + }); + }, [i, n, l, m]); + return /* @__PURE__ */ t("div", { className: `${e.container} ${j || ""}`, style: L, children: [ + h === "intro" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.presenting), + alt: "Presenting to stakeholders", + fallback: _.presenting, + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ a("h2", { className: e.title, children: "The Migration Paradox" }), + /* @__PURE__ */ a("p", { className: e.description, children: "You've been tasked with migrating the core system. Your stakeholders are waiting for your strategy." }), + /* @__PURE__ */ a("button", { className: e.actionButton, onClick: R, children: "▶ Present Your Strategy" }) + ] }) + ] }), + h === "choice" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.presenting), + alt: "Presenting options", + fallback: _.presenting, + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.dialogueHeader, children: [ + /* @__PURE__ */ a("h2", { className: e.title, children: "Choose Your Approach" }), + l.loopCount > 0 && /* @__PURE__ */ t("span", { className: e.loopBadge, children: [ + "LOOP ", + Math.floor(l.loopCount) + 1 + ] }) + ] }), + /* @__PURE__ */ a("p", { className: e.description, children: "How will you pitch the migration project?" }), + /* @__PURE__ */ t("div", { className: e.choices, children: [ + /* @__PURE__ */ t( + "button", + { + className: e.choiceButton, + onClick: H, + children: [ + /* @__PURE__ */ a("span", { className: e.choiceKey, children: "A" }), + /* @__PURE__ */ t("span", { className: e.choiceContent, children: [ + /* @__PURE__ */ a("span", { className: e.choiceTitle, children: "Emphasize Change" }), + /* @__PURE__ */ a("span", { className: e.choiceDesc, children: '"The new system will add value and enable new capabilities"' }) + ] }) + ] + } + ), + /* @__PURE__ */ t( + "button", + { + className: e.choiceButton, + onClick: U, + children: [ + /* @__PURE__ */ a("span", { className: e.choiceKey, children: "B" }), + /* @__PURE__ */ t("span", { className: e.choiceContent, children: [ + /* @__PURE__ */ a("span", { className: e.choiceTitle, children: "Emphasize No Change" }), + /* @__PURE__ */ a("span", { className: e.choiceDesc, children: '"Everything will work exactly the same as before"' }) + ] }) + ] + } + ) + ] }), + v && !B && /* @__PURE__ */ a( + "button", + { + className: e.insightButton, + onClick: q, + children: "✦ Wait... I see the pattern" + } + ) + ] }) + ] }), + h === "rejection-value" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(F), + alt: "Stakeholder rejection", + fallback: _["rejection-value"], + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.rejection, children: [ + /* @__PURE__ */ a("span", { className: e.rejectionBadge, children: "✗ REJECTED" }), + /* @__PURE__ */ a("p", { className: e.quote, children: '"Are you insane? This will break everything!"' }), + /* @__PURE__ */ a("p", { className: e.explanation, children: `"If you want to change the core system, you need to make absolutely sure that everything works exactly the same. We can't risk any disruption."` }) + ] }), + /* @__PURE__ */ a("button", { className: e.actionButton, onClick: A, children: "▶ Try a Different Approach" }), + v && !B && /* @__PURE__ */ a( + "button", + { + className: e.insightButton, + onClick: q, + children: "✦ Wait... I see the pattern" + } + ) + ] }) + ] }), + h === "rejection-same" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(F), + alt: "Stakeholder rejection", + fallback: _["rejection-same"], + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.rejection, children: [ + /* @__PURE__ */ a("span", { className: e.rejectionBadge, children: "✗ REJECTED" }), + /* @__PURE__ */ a("p", { className: e.quote, children: '"This is insane. Why would we do this?"' }), + /* @__PURE__ */ a("p", { className: e.explanation, children: `"If everything is going to stay exactly the same, why would we spend all this time and money replacing the core system? What's the point?"` }) + ] }), + /* @__PURE__ */ a("button", { className: e.actionButton, onClick: A, children: "▶ Try a Different Approach" }), + v && !B && /* @__PURE__ */ a( + "button", + { + className: e.insightButton, + onClick: q, + children: "✦ Wait... I see the pattern" + } + ) + ] }) + ] }), + h === "awareness" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.insight), + alt: "Insight moment", + fallback: _.awareness, + onImageError: g + } + ), + /* @__PURE__ */ t("div", { className: e.dialogueBox, children: [ + /* @__PURE__ */ t("div", { className: e.insight, children: [ + /* @__PURE__ */ a("h2", { className: e.insightTitle, children: "★ The Paradox Revealed ★" }), + /* @__PURE__ */ t("p", { className: e.insightText, children: [ + "You've discovered the ", + /* @__PURE__ */ a("strong", { children: "Migration Paradox" }), + ": stakeholders demand that you change things - to give value. But also that nothing changes, to contain risk." + ] }), + /* @__PURE__ */ t("p", { className: e.insightText, children: [ + "The solution is ", + /* @__PURE__ */ a("strong", { children: "phased delivery" }), + ". First, prove business case. Then prove you can preserve existing functionality. Then introduce new capabilities." + ] }), + /* @__PURE__ */ t("div", { className: e.paradoxDiagram, children: [ + /* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Explore"' }), + /* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }), + /* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Preserve"' }), + /* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }), + /* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Innovate"' }), + /* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }) + ] }) + ] }), + /* @__PURE__ */ a("button", { className: e.completeButton, onClick: Y, children: "▶ Complete Challenge" }) + ] }) + ] }), + h === "complete" && /* @__PURE__ */ t("div", { className: e.panel, children: [ + /* @__PURE__ */ a( + N, + { + src: u(x.complete), + alt: "Challenge complete", + fallback: _.complete, + onImageError: g + } + ), + /* @__PURE__ */ a("div", { className: e.dialogueBox, children: /* @__PURE__ */ t("div", { className: e.successBox, children: [ + /* @__PURE__ */ a("h2", { className: e.successTitle, children: "★ CHALLENGE COMPLETE ★" }), + /* @__PURE__ */ t("p", { className: e.stats, children: [ + "You experienced ", + Math.floor(l.loopCount), + " loop(s) before seeing the pattern." + ] }), + /* @__PURE__ */ t("div", { className: e.scoreDisplay, children: [ + /* @__PURE__ */ a("span", { className: e.scoreLabel, children: "SCORE" }), + /* @__PURE__ */ a("span", { className: e.scoreValue, children: "100" }) + ] }) + ] }) }) + ] }) + ] }); +} +const Ve = { + name: "migration-paradox", + displayName: "The Migration Paradox", + version: "1.0.0", + paramSchema: { + assetBaseUrl: { + type: "string", + label: "Asset Base URL", + description: "Shared CDN or public folder containing presenting.png, insight.png, complete.png, rejectionA_1.png, rejectionA_2.png, and rejectionB_1.png.", + default: "/glitch/migration-paradox" + } + }, + defaultParams: { + assetBaseUrl: "/glitch/migration-paradox" + } +}; +export { + Oe as default, + Ve as metadata +}; +//# sourceMappingURL=migration-paradox.js.map diff --git a/public/glitch/glitch_migration_paradox/migration-paradox.js.map b/public/glitch/glitch_migration_paradox/migration-paradox.js.map new file mode 100644 index 0000000..9a7c8da --- /dev/null +++ b/public/glitch/glitch_migration_paradox/migration-paradox.js.map @@ -0,0 +1 @@ +{"version":3,"file":"migration-paradox.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport styles from './styles.module.css';\nimport type { GlitchComponentProps } from './types';\n\ntype Phase = 'intro' | 'choice' | 'rejection-value' | 'rejection-same' | 'awareness' | 'complete';\ntype SceneTone = 'primary' | 'danger' | 'accent' | 'success';\n\ninterface LoopState {\n loopCount: number;\n valueAttempts: number;\n sameAttempts: number;\n}\n\ninterface SceneFallback {\n badge: string;\n title: string;\n copy: string;\n detail: string;\n tone: SceneTone;\n}\n\nconst DEFAULT_ASSET_BASE = '/glitch/migration-paradox';\nconst REJECTION_A_COUNT = 2; // Number of rejectionA_X.png variants (1 to X)\nconst REJECTION_B_COUNT = 1; // Number of rejectionB_X.png variants (1 to X)\nconst SCENE_FALLBACKS: Record<'presenting' | 'rejection-value' | 'rejection-same' | 'awareness' | 'complete', SceneFallback> = {\n presenting: {\n badge: 'Migration Briefing',\n title: 'Stakeholders Await Your Plan',\n copy: 'Frame the migration as progress without triggering fear.',\n detail: 'You need a strategy that creates momentum before the paradox closes in.',\n tone: 'primary'\n },\n 'rejection-value': {\n badge: 'Stakeholder Response',\n title: 'Too Much Change',\n copy: 'Your pitch sounded valuable, but it also sounded dangerous.',\n detail: 'They want new capability only if nothing important feels different.',\n tone: 'danger'\n },\n 'rejection-same': {\n badge: 'Stakeholder Response',\n title: 'Too Little Value',\n copy: 'Your pitch sounded safe, but it also sounded pointless.',\n detail: 'They want risk contained, but they still expect the migration to matter.',\n tone: 'danger'\n },\n awareness: {\n badge: 'Pattern Detected',\n title: 'Expose The Contradiction',\n copy: 'Show how value and continuity need different phases, not one impossible promise.',\n detail: 'Explore, preserve, and then innovate.',\n tone: 'accent'\n },\n complete: {\n badge: 'Challenge Complete',\n title: 'Paradox Resolved',\n copy: 'You reframed the migration into a sequence stakeholders can accept.',\n detail: 'Value and stability can coexist when delivery is phased.',\n tone: 'success'\n }\n};\n\nfunction normalizeAssetBase(candidate: unknown): string {\n if (typeof candidate !== 'string') {\n return DEFAULT_ASSET_BASE;\n }\n\n const trimmed = candidate.trim();\n if (!trimmed) {\n return DEFAULT_ASSET_BASE;\n }\n\n return trimmed.replace(/\\/+$/, '');\n}\n\nfunction buildAssetUrl(base: string, assetName: string): string {\n return `${base}/${assetName}`;\n}\n\nfunction getRandomRejectionImage(choice: 'A' | 'B', assetBase: string): string {\n const count = choice === 'A' ? REJECTION_A_COUNT : REJECTION_B_COUNT;\n const index = Math.floor(Math.random() * count) + 1;\n return buildAssetUrl(assetBase, `rejection${choice}_${index}.png`);\n}\n\nfunction SceneMedia({\n src,\n alt,\n fallback,\n onImageError\n}: {\n src?: string;\n alt: string;\n fallback: SceneFallback;\n onImageError: (src: string) => void;\n}) {\n return (\n
\n {src ? (\n onImageError(src)}\n />\n ) : (\n \n
\n
\n {fallback.badge}\n GLITCH SIM\n
\n
\n

{fallback.copy}

\n

{fallback.title}

\n

{fallback.detail}

\n
\n
\n \n \n \n
\n
\n )}\n
\n );\n}\n\nexport default function MigrationParadox({\n config: _config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const params = _config?.params ?? {};\n const [phase, setPhase] = useState('intro');\n const [loopState, setLoopState] = useState({\n loopCount: 0,\n valueAttempts: 0,\n sameAttempts: 0\n });\n const [showInsight, setShowInsight] = useState(false);\n const [currentRejectionImage, setCurrentRejectionImage] = useState('');\n const [failedImages, setFailedImages] = useState>({});\n\n const assetBase = useMemo(\n () => normalizeAssetBase(params.assetBaseUrl ?? params.imageBaseUrl),\n [params.assetBaseUrl, params.imageBaseUrl]\n );\n\n const images = useMemo(() => ({\n presenting: buildAssetUrl(assetBase, 'presenting.png'),\n insight: buildAssetUrl(assetBase, 'insight.png'),\n complete: buildAssetUrl(assetBase, 'complete.png')\n }), [assetBase]);\n\n const cssVars = {\n '--gc-primary': theme?.primary || '#6366f1',\n '--gc-accent': theme?.accent || '#22d3ee',\n '--gc-bg': theme?.bg || '#0a0a0f',\n '--gc-bg-secondary': theme?.bgSecondary || '#12121a',\n '--gc-text': theme?.text || '#e8e8ec',\n '--gc-text-muted': theme?.textMuted || '#9999a8',\n '--gc-border': theme?.border || '#2a2a3a',\n } as React.CSSProperties;\n\n const totalAttempts = loopState.valueAttempts + loopState.sameAttempts;\n const canSeeInsight = totalAttempts >= 4;\n const getSceneImage = useCallback((src: string) => (\n failedImages[src] ? undefined : src\n ), [failedImages]);\n const handleImageError = useCallback((src: string) => {\n setFailedImages(prev => (\n prev[src] ? prev : { ...prev, [src]: true }\n ));\n }, []);\n\n const handleStart = useCallback(() => {\n setPhase('choice');\n onProgress?.(10);\n }, [onProgress]);\n\n const handleChooseValue = useCallback(() => {\n setCurrentRejectionImage(getRandomRejectionImage('A', assetBase));\n setLoopState(prev => ({\n ...prev,\n valueAttempts: prev.valueAttempts + 1,\n loopCount: prev.loopCount + (prev.sameAttempts > prev.valueAttempts ? 0.5 : 0)\n }));\n setPhase('rejection-value');\n onProgress?.(Math.min(30 + totalAttempts * 10, 80));\n }, [assetBase, totalAttempts, onProgress]);\n\n const handleChooseSame = useCallback(() => {\n setCurrentRejectionImage(getRandomRejectionImage('B', assetBase));\n setLoopState(prev => ({\n ...prev,\n sameAttempts: prev.sameAttempts + 1,\n loopCount: prev.loopCount + (prev.valueAttempts > prev.sameAttempts ? 0.5 : 0)\n }));\n setPhase('rejection-same');\n onProgress?.(Math.min(30 + totalAttempts * 10, 80));\n }, [assetBase, totalAttempts, onProgress]);\n\n const handleTryAgain = useCallback(() => {\n setPhase('choice');\n }, []);\n\n const handleSeeInsight = useCallback(() => {\n setShowInsight(true);\n setPhase('awareness');\n onProgress?.(90);\n }, [onProgress]);\n\n const handleComplete = useCallback(() => {\n setPhase('complete');\n onProgress?.(100);\n onComplete({\n success: true,\n score: 100,\n data: {\n loopsBeforeInsight: Math.floor(loopState.loopCount),\n totalAttempts,\n valueAttempts: loopState.valueAttempts,\n sameAttempts: loopState.sameAttempts\n },\n rewards: {\n paradoxes: [{\n id: 'migration-paradox',\n name: 'The Migration Paradox',\n description: 'Stakeholders simultaneously demand that a migration adds value AND changes nothing.',\n rarity: 'uncommon'\n }]\n }\n });\n }, [onComplete, onProgress, loopState, totalAttempts]);\n\n return (\n
\n {phase === 'intro' && (\n
\n \n
\n

The Migration Paradox

\n

\n You've been tasked with migrating the core system.\n Your stakeholders are waiting for your strategy.\n

\n \n
\n
\n )}\n\n {phase === 'choice' && (\n
\n \n
\n
\n

Choose Your Approach

\n {loopState.loopCount > 0 && (\n \n LOOP {Math.floor(loopState.loopCount) + 1}\n \n )}\n
\n

\n How will you pitch the migration project?\n

\n
\n \n A\n \n Emphasize Change\n \n \"The new system will add value and enable new capabilities\"\n \n \n \n \n B\n \n Emphasize No Change\n \n \"Everything will work exactly the same as before\"\n \n \n \n
\n {canSeeInsight && !showInsight && (\n \n ✦ Wait... I see the pattern\n \n )}\n
\n
\n )}\n\n {phase === 'rejection-value' && (\n
\n \n
\n
\n ✗ REJECTED\n

\n \"Are you insane? This will break everything!\"\n

\n

\n \"If you want to change the core system, you need to make absolutely\n sure that everything works exactly the same. We can't risk any disruption.\"\n

\n
\n \n {canSeeInsight && !showInsight && (\n \n ✦ Wait... I see the pattern\n \n )}\n
\n
\n )}\n\n {phase === 'rejection-same' && (\n
\n \n
\n
\n ✗ REJECTED\n

\n \"This is insane. Why would we do this?\"\n

\n

\n \"If everything is going to stay exactly the same, why would we spend\n all this time and money replacing the core system? What's the point?\"\n

\n
\n \n {canSeeInsight && !showInsight && (\n \n ✦ Wait... I see the pattern\n \n )}\n
\n
\n )}\n\n {phase === 'awareness' && (\n
\n \n
\n
\n

★ The Paradox Revealed ★

\n \n

\n You've discovered the Migration Paradox: stakeholders\n demand that you change things - to give value. But also that nothing changes, to contain risk.\n

\n

\n The solution is phased delivery. First, prove business case. Then \n prove you can preserve existing functionality. Then introduce new\n capabilities.\n

\n
\n
\"Explore\"
\n
\n
\"Preserve\"
\n
\n
\"Innovate\"
\n
\n
\n
\n \n
\n
\n )}\n\n {phase === 'complete' && (\n
\n \n
\n
\n

★ CHALLENGE COMPLETE ★

\n

\n You experienced {Math.floor(loopState.loopCount)} loop(s) before seeing the pattern.\n

\n
\n SCORE\n 100\n
\n
\n
\n
\n )}\n
\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'migration-paradox',\n displayName: 'The Migration Paradox',\n version: '1.0.0',\n paramSchema: {\n assetBaseUrl: {\n type: 'string',\n label: 'Asset Base URL',\n description: 'Shared CDN or public folder containing presenting.png, insight.png, complete.png, rejectionA_1.png, rejectionA_2.png, and rejectionB_1.png.',\n default: '/glitch/migration-paradox'\n }\n },\n defaultParams: {\n assetBaseUrl: '/glitch/migration-paradox'\n }\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult\n} from './types';\n"],"names":["DEFAULT_ASSET_BASE","REJECTION_A_COUNT","REJECTION_B_COUNT","SCENE_FALLBACKS","normalizeAssetBase","candidate","trimmed","buildAssetUrl","base","assetName","getRandomRejectionImage","choice","assetBase","count","index","SceneMedia","src","alt","fallback","onImageError","jsx","styles","jsxs","MigrationParadox","_config","onComplete","onProgress","theme","className","params","phase","setPhase","useState","loopState","setLoopState","showInsight","setShowInsight","currentRejectionImage","setCurrentRejectionImage","failedImages","setFailedImages","useMemo","images","cssVars","totalAttempts","canSeeInsight","getSceneImage","useCallback","handleImageError","prev","handleStart","handleChooseValue","handleChooseSame","handleTryAgain","handleSeeInsight","handleComplete","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/public/glitch/glitch_onboarding/glitch.manifest.json b/public/glitch/glitch_onboarding/glitch.manifest.json new file mode 100644 index 0000000..7685d65 --- /dev/null +++ b/public/glitch/glitch_onboarding/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "onboarding", + "displayName": "Glitch University Onboarding", + "version": "1.0.0", + "folderName": "glitch_onboarding", + "packageName": "@glitch-components/onboarding", + "entry": "dist/onboarding.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "onboarding", + "narrative" + ] +} diff --git a/public/glitch/glitch_onboarding/onboarding.js b/public/glitch/glitch_onboarding/onboarding.js new file mode 100644 index 0000000..9c3499a --- /dev/null +++ b/public/glitch/glitch_onboarding/onboarding.js @@ -0,0 +1,847 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._container_18jex_3{width:100%;height:100vh;background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden}._grid_18jex_18{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(99,102,241,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.03) 1px,transparent 1px);background-size:40px 40px;opacity:.5;animation:_gridPulse_18jex_1 4s ease-in-out infinite}@keyframes _gridPulse_18jex_1{0%,to{opacity:.3}50%{opacity:.6}}._textBlock_18jex_34{max-width:600px;text-align:center;z-index:10;padding:2rem}._mainText_18jex_41{font-size:1.25rem;line-height:1.8;color:var(--gc-text, #e8e8ec);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards}._mainText_18jex_41._delayed_18jex_50{animation-delay:2s}._questionText_18jex_54{font-size:1.1rem;color:var(--gc-textMuted, #9999a8);font-style:italic;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:3.5s}._sphere_18jex_63{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(99,102,241,.3),rgba(34,211,238,.1) 50%,transparent 70%);border:1px solid rgba(99,102,241,.3);margin:2rem auto;position:relative;animation:_sphereFloat_18jex_1 3s ease-in-out infinite}@keyframes _sphereFloat_18jex_1{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}._sphere_18jex_63._glitching_18jex_82{animation:_sphereGlitch_18jex_1 .15s steps(2) forwards}@keyframes _sphereGlitch_18jex_1{0%{border-radius:50%;filter:none}25%{border-radius:10%;filter:hue-rotate(90deg);transform:scale(1.1) skew(5deg)}50%{border-radius:5%;filter:hue-rotate(180deg) saturate(2);transform:scale(.9) skew(-5deg)}75%{border-radius:20%;filter:hue-rotate(270deg);transform:scale(1.05)}to{border-radius:50%;filter:none;transform:scale(1)}}._voxelOverlay_18jex_113{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(6,1fr);opacity:0}._voxelOverlay_18jex_113._visible_18jex_122{opacity:1;animation:_voxelFlash_18jex_1 .15s steps(1) forwards}._voxel_18jex_113{background:var(--gc-primary, #6366f1);opacity:.8}@keyframes _voxelFlash_18jex_1{0%{opacity:1}to{opacity:0}}._rebelText_18jex_137{font-size:.95rem;color:var(--gc-accent, #22d3ee);margin-top:2rem;opacity:0;animation:_fadeInUp_18jex_1 1.5s ease forwards;animation-delay:5s}._enterButton_18jex_146{margin-top:3rem;padding:1rem 2.5rem;background:transparent;border:1px solid var(--gc-primary, #6366f1);color:var(--gc-primary, #6366f1);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:6.5s;transition:all .3s ease}._enterButton_18jex_146:hover{background:var(--gc-primary, #6366f1);color:var(--gc-bg, #0a0a0f);box-shadow:0 0 20px #6366f166}._migrationContent_18jex_168{max-width:650px;text-align:center;z-index:10;padding:2rem}._tagline_18jex_175{font-size:1.4rem;color:var(--gc-accent, #22d3ee);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._notList_18jex_183{list-style:none;padding:0;margin:0 0 2rem;text-align:left}._notItem_18jex_190{font-size:1rem;color:var(--gc-textMuted, #9999a8);padding:.5rem 0 .5rem 2rem;position:relative;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._notItem_18jex_190:before{content:"×";position:absolute;left:0;color:#ef4444b3;font-weight:700}._notItem_18jex_190:nth-child(1){animation-delay:.5s}._notItem_18jex_190:nth-child(2){animation-delay:.8s}._notItem_18jex_190:nth-child(3){animation-delay:1.1s}._isText_18jex_212{font-size:1.1rem;color:var(--gc-text, #e8e8ec);margin:2rem 0;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1.8s}._ruleBox_18jex_221{border:1px solid var(--gc-border, #2a2a3a);padding:1.5rem;margin:2rem 0;text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:2.5s}._ruleTitle_18jex_231{font-size:.85rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem;letter-spacing:.1em}._ruleContent_18jex_238{font-size:1rem;color:var(--gc-text, #e8e8ec);line-height:1.6}._continueButton_18jex_244{margin-top:2rem;padding:.8rem 2rem;background:transparent;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-textMuted, #9999a8);font-family:Courier New,monospace;font-size:.9rem;cursor:pointer;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards;animation-delay:3.2s;transition:all .3s ease}._continueButton_18jex_244:hover{border-color:var(--gc-primary, #6366f1);color:var(--gc-text, #e8e8ec)}._agreementContent_18jex_265{max-width:550px;text-align:center;z-index:10;padding:2rem}._agreementTitle_18jex_272{font-size:1.2rem;color:var(--gc-textMuted, #9999a8);margin-bottom:2rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._pledgeText_18jex_280{font-size:1.5rem;color:var(--gc-text, #e8e8ec);font-style:italic;margin:2rem 0;padding:1.5rem;border-left:2px solid var(--gc-primary, #6366f1);text-align:left;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:.5s}._signatureArea_18jex_293{margin:3rem 0;position:relative;height:120px;display:flex;align-items:center;justify-content:center}._paper_18jex_302{width:200px;height:100px;background:#ffffff08;border:1px solid var(--gc-border, #2a2a3a);position:relative;display:flex;align-items:center;justify-content:center}._signatureMark_18jex_313{font-size:4rem;color:var(--gc-primary, #6366f1);opacity:0;transform:scale(0)}._signatureMark_18jex_313._visible_18jex_122{animation:_drawX_18jex_1 .8s ease forwards}@keyframes _drawX_18jex_1{0%{opacity:0;transform:scale(0) rotate(-45deg)}50%{opacity:1;transform:scale(1.2) rotate(0)}to{opacity:1;transform:scale(1) rotate(0)}}._pencil_18jex_339{position:absolute;font-size:2rem;opacity:0;transform:translate(80px,-60px) rotate(-45deg)}._pencil_18jex_339._animating_18jex_346{animation:_pencilDraw_18jex_1 .8s ease forwards}@keyframes _pencilDraw_18jex_1{0%{opacity:1;transform:translate(80px,-60px) rotate(-45deg)}50%{opacity:1;transform:translate(0) rotate(-45deg)}to{opacity:0;transform:translate(-80px,60px) rotate(-45deg)}}._signButton_18jex_365{padding:1rem 2.5rem;background:var(--gc-primary, #6366f1);border:none;color:var(--gc-bg, #0a0a0f);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards;animation-delay:1s}._signButton_18jex_365:hover{box-shadow:0 0 25px #6366f180;transform:translateY(-2px)}._signButton_18jex_365:disabled{opacity:.5;cursor:not-allowed}._navigationContent_18jex_390{max-width:600px;text-align:center;z-index:10;padding:2rem}._welcomeText_18jex_397{font-size:1rem;color:var(--gc-textMuted, #9999a8);margin-bottom:3rem;opacity:0;animation:_fadeInUp_18jex_1 1s ease forwards}._choiceButtons_18jex_405{display:flex;flex-direction:column;gap:1.5rem}._choiceButton_18jex_405{padding:1.5rem 2rem;background:#6366f10d;border:1px solid var(--gc-border, #2a2a3a);color:var(--gc-text, #e8e8ec);font-family:Courier New,monospace;font-size:1rem;cursor:pointer;text-align:left;transition:all .3s ease;opacity:0;animation:_fadeInUp_18jex_1 .8s ease forwards}._choiceButton_18jex_405:nth-child(1){animation-delay:.5s}._choiceButton_18jex_405:nth-child(2){animation-delay:.8s}._choiceButton_18jex_405:hover{border-color:var(--gc-primary, #6366f1);background:#6366f11a;transform:translate(5px)}._choiceTitle_18jex_434{font-size:1.1rem;color:var(--gc-primary, #6366f1);margin-bottom:.5rem}._choiceDesc_18jex_440{font-size:.85rem;color:var(--gc-textMuted, #9999a8)}._arrow_18jex_445{float:right;color:var(--gc-primary, #6366f1)}@keyframes _fadeInUp_18jex_1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}._screenFadeIn_18jex_463{animation:_screenEnter_18jex_1 .6s ease forwards}@keyframes _screenEnter_18jex_1{0%{opacity:0}to{opacity:1}}')),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})(); +import Be, { useState as q, useEffect as Ae, useCallback as Ie } from "react"; +var ie = { exports: {} }, Y = {}; +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var De; +function _r() { + if (De) return Y; + De = 1; + var A = Be, y = Symbol.for("react.element"), m = Symbol.for("react.fragment"), R = Object.prototype.hasOwnProperty, b = A.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, C = { key: !0, ref: !0, __self: !0, __source: !0 }; + function O(T, d, S) { + var v, j = {}, p = null, I = null; + S !== void 0 && (p = "" + S), d.key !== void 0 && (p = "" + d.key), d.ref !== void 0 && (I = d.ref); + for (v in d) R.call(d, v) && !C.hasOwnProperty(v) && (j[v] = d[v]); + if (T && T.defaultProps) for (v in d = T.defaultProps, d) j[v] === void 0 && (j[v] = d[v]); + return { $$typeof: y, type: T, key: p, ref: I, props: j, _owner: b.current }; + } + return Y.Fragment = m, Y.jsx = O, Y.jsxs = O, Y; +} +var L = {}; +/** + * @license React + * react-jsx-runtime.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var Fe; +function gr() { + return Fe || (Fe = 1, process.env.NODE_ENV !== "production" && function() { + var A = Be, y = Symbol.for("react.element"), m = Symbol.for("react.portal"), R = Symbol.for("react.fragment"), b = Symbol.for("react.strict_mode"), C = Symbol.for("react.profiler"), O = Symbol.for("react.provider"), T = Symbol.for("react.context"), d = Symbol.for("react.forward_ref"), S = Symbol.for("react.suspense"), v = Symbol.for("react.suspense_list"), j = Symbol.for("react.memo"), p = Symbol.for("react.lazy"), I = Symbol.for("react.offscreen"), B = Symbol.iterator, oe = "@@iterator"; + function se(e) { + if (e === null || typeof e != "object") + return null; + var r = B && e[B] || e[oe]; + return typeof r == "function" ? r : null; + } + var k = A.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + function _(e) { + { + for (var r = arguments.length, t = new Array(r > 1 ? r - 1 : 0), i = 1; i < r; i++) + t[i - 1] = arguments[i]; + K("error", e, t); + } + } + function K(e, r, t) { + { + var i = k.ReactDebugCurrentFrame, c = i.getStackAddendum(); + c !== "" && (r += "%s", t = t.concat([c])); + var l = t.map(function(s) { + return String(s); + }); + l.unshift("Warning: " + r), Function.prototype.apply.call(console[e], console, l); + } + } + var E = !1, $ = !1, z = !1, X = !1, $e = !1, ce; + ce = Symbol.for("react.module.reference"); + function Me(e) { + return !!(typeof e == "string" || typeof e == "function" || e === R || e === C || $e || e === b || e === S || e === v || X || e === I || E || $ || z || typeof e == "object" && e !== null && (e.$$typeof === p || e.$$typeof === j || e.$$typeof === O || e.$$typeof === T || e.$$typeof === d || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + e.$$typeof === ce || e.getModuleId !== void 0)); + } + function We(e, r, t) { + var i = e.displayName; + if (i) + return i; + var c = r.displayName || r.name || ""; + return c !== "" ? t + "(" + c + ")" : t; + } + function le(e) { + return e.displayName || "Context"; + } + function w(e) { + if (e == null) + return null; + if (typeof e.tag == "number" && _("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof e == "function") + return e.displayName || e.name || null; + if (typeof e == "string") + return e; + switch (e) { + case R: + return "Fragment"; + case m: + return "Portal"; + case C: + return "Profiler"; + case b: + return "StrictMode"; + case S: + return "Suspense"; + case v: + return "SuspenseList"; + } + if (typeof e == "object") + switch (e.$$typeof) { + case T: + var r = e; + return le(r) + ".Consumer"; + case O: + var t = e; + return le(t._context) + ".Provider"; + case d: + return We(e, e.render, "ForwardRef"); + case j: + var i = e.displayName || null; + return i !== null ? i : w(e.type) || "Memo"; + case p: { + var c = e, l = c._payload, s = c._init; + try { + return w(s(l)); + } catch { + return null; + } + } + } + return null; + } + var N = Object.assign, M = 0, ue, fe, de, ve, _e, ge, he; + function me() { + } + me.__reactDisabledLog = !0; + function Ye() { + { + if (M === 0) { + ue = console.log, fe = console.info, de = console.warn, ve = console.error, _e = console.group, ge = console.groupCollapsed, he = console.groupEnd; + var e = { + configurable: !0, + enumerable: !0, + value: me, + writable: !0 + }; + Object.defineProperties(console, { + info: e, + log: e, + warn: e, + error: e, + group: e, + groupCollapsed: e, + groupEnd: e + }); + } + M++; + } + } + function Le() { + { + if (M--, M === 0) { + var e = { + configurable: !0, + enumerable: !0, + writable: !0 + }; + Object.defineProperties(console, { + log: N({}, e, { + value: ue + }), + info: N({}, e, { + value: fe + }), + warn: N({}, e, { + value: de + }), + error: N({}, e, { + value: ve + }), + group: N({}, e, { + value: _e + }), + groupCollapsed: N({}, e, { + value: ge + }), + groupEnd: N({}, e, { + value: he + }) + }); + } + M < 0 && _("disabledDepth fell below zero. This is a bug in React. Please file an issue."); + } + } + var H = k.ReactCurrentDispatcher, Z; + function U(e, r, t) { + { + if (Z === void 0) + try { + throw Error(); + } catch (c) { + var i = c.stack.trim().match(/\n( *(at )?)/); + Z = i && i[1] || ""; + } + return ` +` + Z + e; + } + } + var Q = !1, V; + { + var Ue = typeof WeakMap == "function" ? WeakMap : Map; + V = new Ue(); + } + function pe(e, r) { + if (!e || Q) + return ""; + { + var t = V.get(e); + if (t !== void 0) + return t; + } + var i; + Q = !0; + var c = Error.prepareStackTrace; + Error.prepareStackTrace = void 0; + var l; + l = H.current, H.current = null, Ye(); + try { + if (r) { + var s = function() { + throw Error(); + }; + if (Object.defineProperty(s.prototype, "props", { + set: function() { + throw Error(); + } + }), typeof Reflect == "object" && Reflect.construct) { + try { + Reflect.construct(s, []); + } catch (h) { + i = h; + } + Reflect.construct(e, [], s); + } else { + try { + s.call(); + } catch (h) { + i = h; + } + e.call(s.prototype); + } + } else { + try { + throw Error(); + } catch (h) { + i = h; + } + e(); + } + } catch (h) { + if (h && i && typeof h.stack == "string") { + for (var o = h.stack.split(` +`), g = i.stack.split(` +`), u = o.length - 1, f = g.length - 1; u >= 1 && f >= 0 && o[u] !== g[f]; ) + f--; + for (; u >= 1 && f >= 0; u--, f--) + if (o[u] !== g[f]) { + if (u !== 1 || f !== 1) + do + if (u--, f--, f < 0 || o[u] !== g[f]) { + var x = ` +` + o[u].replace(" at new ", " at "); + return e.displayName && x.includes("") && (x = x.replace("", e.displayName)), typeof e == "function" && V.set(e, x), x; + } + while (u >= 1 && f >= 0); + break; + } + } + } finally { + Q = !1, H.current = l, Le(), Error.prepareStackTrace = c; + } + var F = e ? e.displayName || e.name : "", P = F ? U(F) : ""; + return typeof e == "function" && V.set(e, P), P; + } + function Ve(e, r, t) { + return pe(e, !1); + } + function Ge(e) { + var r = e.prototype; + return !!(r && r.isReactComponent); + } + function G(e, r, t) { + if (e == null) + return ""; + if (typeof e == "function") + return pe(e, Ge(e)); + if (typeof e == "string") + return U(e); + switch (e) { + case S: + return U("Suspense"); + case v: + return U("SuspenseList"); + } + if (typeof e == "object") + switch (e.$$typeof) { + case d: + return Ve(e.render); + case j: + return G(e.type, r, t); + case p: { + var i = e, c = i._payload, l = i._init; + try { + return G(l(c), r, t); + } catch { + } + } + } + return ""; + } + var W = Object.prototype.hasOwnProperty, xe = {}, je = k.ReactDebugCurrentFrame; + function J(e) { + if (e) { + var r = e._owner, t = G(e.type, e._source, r ? r.type : null); + je.setExtraStackFrame(t); + } else + je.setExtraStackFrame(null); + } + function Je(e, r, t, i, c) { + { + var l = Function.call.bind(W); + for (var s in e) + if (l(e, s)) { + var o = void 0; + try { + if (typeof e[s] != "function") { + var g = Error((i || "React class") + ": " + t + " type `" + s + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof e[s] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."); + throw g.name = "Invariant Violation", g; + } + o = e[s](r, s, i, t, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); + } catch (u) { + o = u; + } + o && !(o instanceof Error) && (J(c), _("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", i || "React class", t, s, typeof o), J(null)), o instanceof Error && !(o.message in xe) && (xe[o.message] = !0, J(c), _("Failed %s type: %s", t, o.message), J(null)); + } + } + } + var qe = Array.isArray; + function ee(e) { + return qe(e); + } + function Ke(e) { + { + var r = typeof Symbol == "function" && Symbol.toStringTag, t = r && e[Symbol.toStringTag] || e.constructor.name || "Object"; + return t; + } + } + function ze(e) { + try { + return ye(e), !1; + } catch { + return !0; + } + } + function ye(e) { + return "" + e; + } + function be(e) { + if (ze(e)) + return _("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Ke(e)), ye(e); + } + var Te = k.ReactCurrentOwner, Xe = { + key: !0, + ref: !0, + __self: !0, + __source: !0 + }, Ee, Re; + function He(e) { + if (W.call(e, "ref")) { + var r = Object.getOwnPropertyDescriptor(e, "ref").get; + if (r && r.isReactWarning) + return !1; + } + return e.ref !== void 0; + } + function Ze(e) { + if (W.call(e, "key")) { + var r = Object.getOwnPropertyDescriptor(e, "key").get; + if (r && r.isReactWarning) + return !1; + } + return e.key !== void 0; + } + function Qe(e, r) { + typeof e.ref == "string" && Te.current; + } + function er(e, r) { + { + var t = function() { + Ee || (Ee = !0, _("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", r)); + }; + t.isReactWarning = !0, Object.defineProperty(e, "key", { + get: t, + configurable: !0 + }); + } + } + function rr(e, r) { + { + var t = function() { + Re || (Re = !0, _("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", r)); + }; + t.isReactWarning = !0, Object.defineProperty(e, "ref", { + get: t, + configurable: !0 + }); + } + } + var tr = function(e, r, t, i, c, l, s) { + var o = { + // This tag allows us to uniquely identify this as a React Element + $$typeof: y, + // Built-in properties that belong on the element + type: e, + key: r, + ref: t, + props: s, + // Record the component responsible for creating this element. + _owner: l + }; + return o._store = {}, Object.defineProperty(o._store, "validated", { + configurable: !1, + enumerable: !1, + writable: !0, + value: !1 + }), Object.defineProperty(o, "_self", { + configurable: !1, + enumerable: !1, + writable: !1, + value: i + }), Object.defineProperty(o, "_source", { + configurable: !1, + enumerable: !1, + writable: !1, + value: c + }), Object.freeze && (Object.freeze(o.props), Object.freeze(o)), o; + }; + function nr(e, r, t, i, c) { + { + var l, s = {}, o = null, g = null; + t !== void 0 && (be(t), o = "" + t), Ze(r) && (be(r.key), o = "" + r.key), He(r) && (g = r.ref, Qe(r, c)); + for (l in r) + W.call(r, l) && !Xe.hasOwnProperty(l) && (s[l] = r[l]); + if (e && e.defaultProps) { + var u = e.defaultProps; + for (l in u) + s[l] === void 0 && (s[l] = u[l]); + } + if (o || g) { + var f = typeof e == "function" ? e.displayName || e.name || "Unknown" : e; + o && er(s, f), g && rr(s, f); + } + return tr(e, o, g, c, i, Te.current, s); + } + } + var re = k.ReactCurrentOwner, Ce = k.ReactDebugCurrentFrame; + function D(e) { + if (e) { + var r = e._owner, t = G(e.type, e._source, r ? r.type : null); + Ce.setExtraStackFrame(t); + } else + Ce.setExtraStackFrame(null); + } + var te; + te = !1; + function ne(e) { + return typeof e == "object" && e !== null && e.$$typeof === y; + } + function Oe() { + { + if (re.current) { + var e = w(re.current.type); + if (e) + return ` + +Check the render method of \`` + e + "`."; + } + return ""; + } + } + function ar(e) { + return ""; + } + var Se = {}; + function ir(e) { + { + var r = Oe(); + if (!r) { + var t = typeof e == "string" ? e : e.displayName || e.name; + t && (r = ` + +Check the top-level render call using <` + t + ">."); + } + return r; + } + } + function we(e, r) { + { + if (!e._store || e._store.validated || e.key != null) + return; + e._store.validated = !0; + var t = ir(r); + if (Se[t]) + return; + Se[t] = !0; + var i = ""; + e && e._owner && e._owner !== re.current && (i = " It was passed a child from " + w(e._owner.type) + "."), D(e), _('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', t, i), D(null); + } + } + function ke(e, r) { + { + if (typeof e != "object") + return; + if (ee(e)) + for (var t = 0; t < e.length; t++) { + var i = e[t]; + ne(i) && we(i, r); + } + else if (ne(e)) + e._store && (e._store.validated = !0); + else if (e) { + var c = se(e); + if (typeof c == "function" && c !== e.entries) + for (var l = c.call(e), s; !(s = l.next()).done; ) + ne(s.value) && we(s.value, r); + } + } + } + function or(e) { + { + var r = e.type; + if (r == null || typeof r == "string") + return; + var t; + if (typeof r == "function") + t = r.propTypes; + else if (typeof r == "object" && (r.$$typeof === d || // Note: Memo only checks outer props here. + // Inner props are checked in the reconciler. + r.$$typeof === j)) + t = r.propTypes; + else + return; + if (t) { + var i = w(r); + Je(t, e.props, "prop", i, e); + } else if (r.PropTypes !== void 0 && !te) { + te = !0; + var c = w(r); + _("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", c || "Unknown"); + } + typeof r.getDefaultProps == "function" && !r.getDefaultProps.isReactClassApproved && _("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead."); + } + } + function sr(e) { + { + for (var r = Object.keys(e.props), t = 0; t < r.length; t++) { + var i = r[t]; + if (i !== "children" && i !== "key") { + D(e), _("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", i), D(null); + break; + } + } + e.ref !== null && (D(e), _("Invalid attribute `ref` supplied to `React.Fragment`."), D(null)); + } + } + var Ne = {}; + function Pe(e, r, t, i, c, l) { + { + var s = Me(e); + if (!s) { + var o = ""; + (e === void 0 || typeof e == "object" && e !== null && Object.keys(e).length === 0) && (o += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."); + var g = ar(); + g ? o += g : o += Oe(); + var u; + e === null ? u = "null" : ee(e) ? u = "array" : e !== void 0 && e.$$typeof === y ? (u = "<" + (w(e.type) || "Unknown") + " />", o = " Did you accidentally export a JSX literal instead of a component?") : u = typeof e, _("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", u, o); + } + var f = nr(e, r, t, c, l); + if (f == null) + return f; + if (s) { + var x = r.children; + if (x !== void 0) + if (i) + if (ee(x)) { + for (var F = 0; F < x.length; F++) + ke(x[F], e); + Object.freeze && Object.freeze(x); + } else + _("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."); + else + ke(x, e); + } + if (W.call(r, "key")) { + var P = w(e), h = Object.keys(r).filter(function(vr) { + return vr !== "key"; + }), ae = h.length > 0 ? "{key: someKey, " + h.join(": ..., ") + ": ...}" : "{key: someKey}"; + if (!Ne[P + ae]) { + var dr = h.length > 0 ? "{" + h.join(": ..., ") + ": ...}" : "{}"; + _(`A props object containing a "key" prop is being spread into JSX: + let props = %s; + <%s {...props} /> +React keys must be passed directly to JSX without using spread: + let props = %s; + <%s key={someKey} {...props} />`, ae, P, dr, P), Ne[P + ae] = !0; + } + } + return e === R ? sr(f) : or(f), f; + } + } + function cr(e, r, t) { + return Pe(e, r, t, !0); + } + function lr(e, r, t) { + return Pe(e, r, t, !1); + } + var ur = lr, fr = cr; + L.Fragment = R, L.jsx = ur, L.jsxs = fr; + }()), L; +} +process.env.NODE_ENV === "production" ? ie.exports = _r() : ie.exports = gr(); +var a = ie.exports; +const hr = "_container_18jex_3", mr = "_grid_18jex_18", pr = "_textBlock_18jex_34", xr = "_mainText_18jex_41", jr = "_delayed_18jex_50", yr = "_sphere_18jex_63", br = "_glitching_18jex_82", Tr = "_voxelOverlay_18jex_113", Er = "_visible_18jex_122", Rr = "_voxel_18jex_113", Cr = "_rebelText_18jex_137", Or = "_enterButton_18jex_146", Sr = "_migrationContent_18jex_168", wr = "_tagline_18jex_175", kr = "_notList_18jex_183", Nr = "_notItem_18jex_190", Pr = "_isText_18jex_212", Ar = "_ruleBox_18jex_221", Ir = "_ruleTitle_18jex_231", Dr = "_ruleContent_18jex_238", Fr = "_continueButton_18jex_244", Br = "_agreementContent_18jex_265", $r = "_agreementTitle_18jex_272", Mr = "_pledgeText_18jex_280", Wr = "_signatureArea_18jex_293", Yr = "_paper_18jex_302", Lr = "_signatureMark_18jex_313", Ur = "_pencil_18jex_339", Vr = "_animating_18jex_346", Gr = "_signButton_18jex_365", Jr = "_navigationContent_18jex_390", qr = "_welcomeText_18jex_397", Kr = "_choiceButtons_18jex_405", zr = "_choiceButton_18jex_405", Xr = "_choiceTitle_18jex_434", Hr = "_choiceDesc_18jex_440", Zr = "_arrow_18jex_445", Qr = "_screenFadeIn_18jex_463", n = { + container: hr, + grid: mr, + textBlock: pr, + mainText: xr, + delayed: jr, + sphere: yr, + glitching: br, + voxelOverlay: Tr, + visible: Er, + voxel: Rr, + rebelText: Cr, + enterButton: Or, + migrationContent: Sr, + tagline: wr, + notList: kr, + notItem: Nr, + isText: Pr, + ruleBox: Ar, + ruleTitle: Ir, + ruleContent: Dr, + continueButton: Fr, + agreementContent: Br, + agreementTitle: $r, + pledgeText: Mr, + signatureArea: Wr, + paper: Yr, + signatureMark: Lr, + pencil: Ur, + animating: Vr, + signButton: Gr, + navigationContent: Jr, + welcomeText: qr, + choiceButtons: Kr, + choiceButton: zr, + choiceTitle: Xr, + choiceDesc: Hr, + arrow: Zr, + screenFadeIn: Qr +}; +function rt({ + onComplete: A, + onProgress: y, + theme: m, + className: R +}) { + const [b, C] = q("disorientation"), [O, T] = q(!1), [d, S] = q(!1), [v, j] = q(!1), p = m ? { + "--gc-primary": m.primary, + "--gc-accent": m.accent, + "--gc-bg": m.bg, + "--gc-bgSecondary": m.bgSecondary, + "--gc-text": m.text, + "--gc-textMuted": m.textMuted, + "--gc-border": m.border + } : {}; + Ae(() => { + const E = { + disorientation: 25, + migration: 50, + agreement: 75, + navigation: 100 + }; + y == null || y(E[b]); + }, [b, y]), Ae(() => { + if (b !== "disorientation") return; + const E = () => { + T(!0), setTimeout(() => T(!1), 150); + }, $ = setTimeout(E, 4e3), z = setInterval(() => { + const X = Math.random() * 3e3 + 3e3; + setTimeout(E, X); + }, 6e3); + return () => { + clearTimeout($), clearInterval(z); + }; + }, [b]); + const I = Ie(() => { + S(!0), setTimeout(() => { + j(!0), setTimeout(() => { + C("navigation"); + }, 1e3); + }, 800); + }, []), B = Ie((E) => { + A({ + success: !0, + data: { + choice: E, + agreedToTerms: !0 + }, + rewards: { + achievements: ["onboarding_complete"], + unlocks: E === "lesson" ? ["tech_tree"] : ["character_builder"] + } + }); + }, [A]), K = { + disorientation: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.textBlock, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.mainText, children: "You are standing on a smooth sphere. It looks continuous. It feels continuous." }), + /* @__PURE__ */ a.jsx("div", { className: n.sphere + (O ? ` ${n.glitching}` : ""), children: /* @__PURE__ */ a.jsx("div", { className: n.voxelOverlay + (O ? ` ${n.visible}` : ""), children: Array.from({ length: 36 }).map((E, $) => /* @__PURE__ */ a.jsx("div", { className: n.voxel, style: { + opacity: Math.random() > 0.5 ? 0.8 : 0 + } }, $)) }) }), + /* @__PURE__ */ a.jsx("p", { className: `${n.mainText} ${n.delayed}`, children: "But what if it isn't?" }), + /* @__PURE__ */ a.jsxs("p", { className: n.rebelText, children: [ + "Most people assume the universe is continuous.", + /* @__PURE__ */ a.jsx("br", {}), + "We're not most people." + ] }), + /* @__PURE__ */ a.jsx( + "button", + { + className: n.enterButton, + onClick: () => C("migration"), + children: "Enter the Glitch" + } + ) + ] }) + ] }), + migration: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.migrationContent, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.tagline, children: "A migration project for physics. That might fail. Or not." }), + /* @__PURE__ */ a.jsxs("ul", { className: n.notList, children: [ + /* @__PURE__ */ a.jsx("li", { className: n.notItem, children: "This is not a fringe physics forum." }), + /* @__PURE__ */ a.jsx("li", { className: n.notItem, children: "This is not an online RPG." }), + /* @__PURE__ */ a.jsx("li", { className: n.notItem, children: "This is not a lecture series in philosophy, physics and computer science." }) + ] }), + /* @__PURE__ */ a.jsx("p", { className: n.isText, children: "It's all of those things." }), + /* @__PURE__ */ a.jsxs("div", { className: n.ruleBox, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.ruleTitle, children: "RULE 1" }), + /* @__PURE__ */ a.jsxs("div", { className: n.ruleContent, children: [ + "Nothing is obvious. Show it.", + /* @__PURE__ */ a.jsx("br", {}), + "Predictions matter more than opinions." + ] }) + ] }), + /* @__PURE__ */ a.jsx( + "button", + { + className: n.continueButton, + onClick: () => C("agreement"), + children: "Continue →" + } + ) + ] }) + ] }), + agreement: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.agreementContent, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.agreementTitle, children: "Make your mark and sign here" }), + /* @__PURE__ */ a.jsx("div", { className: n.pledgeText, children: '"I agree to test ideas against reality"' }), + /* @__PURE__ */ a.jsxs("div", { className: n.signatureArea, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.paper, children: /* @__PURE__ */ a.jsx("span", { className: n.signatureMark + (v ? ` ${n.visible}` : ""), children: "✕" }) }), + /* @__PURE__ */ a.jsx("span", { className: n.pencil + (d ? ` ${n.animating}` : ""), children: "✏️" }) + ] }), + !v && /* @__PURE__ */ a.jsx( + "button", + { + className: n.signButton, + onClick: I, + disabled: d, + children: "Sign" + } + ) + ] }) + ] }), + navigation: () => /* @__PURE__ */ a.jsxs("div", { className: `${n.container} ${n.screenFadeIn}`, style: p, children: [ + /* @__PURE__ */ a.jsx("div", { className: n.grid }), + /* @__PURE__ */ a.jsxs("div", { className: n.navigationContent, children: [ + /* @__PURE__ */ a.jsx("p", { className: n.welcomeText, children: "Welcome to the Glitch. What would you like to do?" }), + /* @__PURE__ */ a.jsxs("div", { className: n.choiceButtons, children: [ + /* @__PURE__ */ a.jsxs( + "button", + { + className: n.choiceButton, + onClick: () => B("lesson"), + children: [ + /* @__PURE__ */ a.jsxs("div", { className: n.choiceTitle, children: [ + "Take me to the first lesson ", + /* @__PURE__ */ a.jsx("span", { className: n.arrow, children: "→" }) + ] }), + /* @__PURE__ */ a.jsx("div", { className: n.choiceDesc, children: "Opens the tech tree and begins your journey" }) + ] + } + ), + /* @__PURE__ */ a.jsxs( + "button", + { + className: n.choiceButton, + onClick: () => B("character"), + children: [ + /* @__PURE__ */ a.jsxs("div", { className: n.choiceTitle, children: [ + "Build my character first ", + /* @__PURE__ */ a.jsx("span", { className: n.arrow, children: "→" }) + ] }), + /* @__PURE__ */ a.jsx("div", { className: n.choiceDesc, children: "Customize your presence in the Glitch" }) + ] + } + ) + ] }) + ] }) + ] }) + }; + return /* @__PURE__ */ a.jsx("div", { className: R, children: K[b]() }); +} +const tt = { + name: "onboarding", + version: "1.0.0", + displayName: "Glitch University Onboarding", + description: "Multi-screen onboarding experience introducing users to the Glitch universe", + author: "Glitch.university", + paramSchema: {}, + tags: ["onboarding", "intro", "welcome"] +}; +export { + rt as OnboardingComponent, + rt as default, + tt as metadata +}; +//# sourceMappingURL=onboarding.js.map diff --git a/public/glitch/glitch_onboarding/onboarding.js.map b/public/glitch/glitch_onboarding/onboarding.js.map new file mode 100644 index 0000000..b9d5e06 --- /dev/null +++ b/public/glitch/glitch_onboarding/onboarding.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onboarding.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/OnboardingComponent.tsx","../src/index.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie.
\n // or
). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n //
, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n {\n if (hasOwnProperty.call(props, 'key')) {\n var componentName = getComponentNameFromType(type);\n var keys = Object.keys(props).filter(function (k) {\n return k !== 'key';\n });\n var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n error('A props object containing a \"key\" prop is being spread into JSX:\\n' + ' let props = %s;\\n' + ' <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + ' let props = %s;\\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n didWarnAboutKeySpread[componentName + beforeExample] = true;\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport type { GlitchComponentProps, OnboardingScreen } from './types'\nimport styles from './styles.module.css'\n\nexport function OnboardingComponent({\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const [currentScreen, setCurrentScreen] = useState('disorientation')\n const [sphereGlitching, setSphereGlitching] = useState(false)\n const [signatureAnimating, setSignatureAnimating] = useState(false)\n const [hasAgreed, setHasAgreed] = useState(false)\n\n // Apply theme as CSS variables\n const themeStyle = theme ? {\n '--gc-primary': theme.primary,\n '--gc-accent': theme.accent,\n '--gc-bg': theme.bg,\n '--gc-bgSecondary': theme.bgSecondary,\n '--gc-text': theme.text,\n '--gc-textMuted': theme.textMuted,\n '--gc-border': theme.border,\n } as React.CSSProperties : {}\n\n // Progress tracking\n useEffect(() => {\n const progressMap: Record = {\n disorientation: 25,\n migration: 50,\n agreement: 75,\n navigation: 100\n }\n onProgress?.(progressMap[currentScreen])\n }, [currentScreen, onProgress])\n\n // Sphere glitch effect on Screen 1\n useEffect(() => {\n if (currentScreen !== 'disorientation') return\n\n const triggerGlitch = () => {\n setSphereGlitching(true)\n setTimeout(() => setSphereGlitching(false), 150)\n }\n\n // First glitch after 4 seconds\n const initialTimeout = setTimeout(triggerGlitch, 4000)\n\n // Random glitches every 3-6 seconds\n const interval = setInterval(() => {\n const delay = Math.random() * 3000 + 3000\n setTimeout(triggerGlitch, delay)\n }, 6000)\n\n return () => {\n clearTimeout(initialTimeout)\n clearInterval(interval)\n }\n }, [currentScreen])\n\n const handleSign = useCallback(() => {\n setSignatureAnimating(true)\n setTimeout(() => {\n setHasAgreed(true)\n setTimeout(() => {\n setCurrentScreen('navigation')\n }, 1000)\n }, 800)\n }, [])\n\n const handleComplete = useCallback((choice: 'lesson' | 'character') => {\n onComplete({\n success: true,\n data: {\n choice,\n agreedToTerms: true\n },\n rewards: {\n achievements: ['onboarding_complete'],\n unlocks: choice === 'lesson' ? ['tech_tree'] : ['character_builder']\n }\n })\n }, [onComplete])\n\n // Screen 1: The Disorientation\n const renderDisorientation = () => (\n
\n
\n\n
\n

\n You are standing on a smooth sphere. It looks continuous. It feels continuous.\n

\n\n
\n
\n {Array.from({ length: 36 }).map((_, i) => (\n
0.5 ? 0.8 : 0\n }} />\n ))}\n
\n
\n\n

\n But what if it isn't?\n

\n\n

\n Most people assume the universe is continuous.
\n We're not most people.\n

\n\n setCurrentScreen('migration')}\n >\n Enter the Glitch\n \n
\n
\n )\n\n // Screen 2: Migration Description\n const renderMigration = () => (\n
\n
\n\n
\n

\n A migration project for physics. That might fail. Or not.\n

\n\n
    \n
  • This is not a fringe physics forum.
  • \n
  • This is not an online RPG.
  • \n
  • This is not a lecture series in philosophy, physics and computer science.
  • \n
\n\n

\n It's all of those things.\n

\n\n
\n
RULE 1
\n
\n Nothing is obvious. Show it.
\n Predictions matter more than opinions.\n
\n
\n\n setCurrentScreen('agreement')}\n >\n Continue →\n \n
\n
\n )\n\n // Screen 3: Agreement\n const renderAgreement = () => (\n
\n
\n\n
\n

\n Make your mark and sign here\n

\n\n
\n \"I agree to test ideas against reality\"\n
\n\n
\n
\n \n ✕\n \n
\n \n ✏️\n \n
\n\n {!hasAgreed && (\n \n Sign\n \n )}\n
\n
\n )\n\n // Screen 4: Navigation\n const renderNavigation = () => (\n
\n
\n\n
\n

\n Welcome to the Glitch. What would you like to do?\n

\n\n
\n handleComplete('lesson')}\n >\n
\n Take me to the first lesson \n
\n
\n Opens the tech tree and begins your journey\n
\n \n\n handleComplete('character')}\n >\n
\n Build my character first \n
\n
\n Customize your presence in the Glitch\n
\n \n
\n
\n
\n )\n\n // Render current screen\n const screenRenderers: Record JSX.Element> = {\n disorientation: renderDisorientation,\n migration: renderMigration,\n agreement: renderAgreement,\n navigation: renderNavigation\n }\n\n return (\n
\n {screenRenderers[currentScreen]()}\n
\n )\n}\n","import { OnboardingComponent } from './OnboardingComponent'\nimport type { GlitchComponentProps, GlitchComponentResult } from './types'\n\nexport { OnboardingComponent }\nexport type { GlitchComponentProps, GlitchComponentResult }\n\nexport const metadata = {\n name: 'onboarding',\n version: '1.0.0',\n displayName: 'Glitch University Onboarding',\n description: 'Multi-screen onboarding experience introducing users to the Glitch universe',\n author: 'Glitch.university',\n paramSchema: {},\n tags: ['onboarding', 'intro', 'welcome']\n}\n\nexport default OnboardingComponent\n"],"names":["f","require$$0","k","l","m","n","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min","React","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","args","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","props","reenableLogs","ReactCurrentDispatcher","prefix","describeBuiltInComponentFrame","name","source","ownerFn","x","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","Component","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","value","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","key","ref","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","didWarnAboutKeySpread","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","children","beforeExample","afterExample","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","require$$1","OnboardingComponent","onComplete","onProgress","theme","className","currentScreen","setCurrentScreen","useState","sphereGlitching","setSphereGlitching","signatureAnimating","setSignatureAnimating","hasAgreed","setHasAgreed","themeStyle","useEffect","progressMap","triggerGlitch","initialTimeout","interval","delay","handleSign","useCallback","handleComplete","choice","screenRenderers","styles","_","metadata"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/public/glitch/glitch_onboarding2/glitch.manifest.json b/public/glitch/glitch_onboarding2/glitch.manifest.json new file mode 100644 index 0000000..bbcbe10 --- /dev/null +++ b/public/glitch/glitch_onboarding2/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "onboarding2", + "displayName": "Facility Slideshow", + "version": "1.0.0", + "folderName": "glitch_onboarding2", + "packageName": "@glitch-components/onboarding2", + "entry": "dist/onboarding2.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "onboarding", + "slideshow" + ] +} diff --git a/public/glitch/glitch_onboarding2/onboarding2.js b/public/glitch/glitch_onboarding2/onboarding2.js new file mode 100644 index 0000000..d254f0b --- /dev/null +++ b/public/glitch/glitch_onboarding2/onboarding2.js @@ -0,0 +1,212 @@ +(function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode('._wrapper_61dhl_1{--gc-bg: var(--color-bg, #0a0a0f);--gc-bg-secondary: var(--color-bg-secondary, #12121a);--gc-text: var(--color-text, #e8e8ec);--gc-text-muted: var(--color-text-muted, #9999a8);--gc-primary: var(--color-primary, #6366f1);--gc-accent: var(--color-accent, #22d3ee);--gc-border: var(--color-border, #2a2a3a);--gc-font-main: var(--font-main, "Iceland", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-display: var(--font-display, "Russo One", -apple-system, BlinkMacSystemFont, sans-serif);--gc-font-text: "VT323", var(--font-mono, monospace);width:100%}._frame_61dhl_15{position:relative;width:100%;height:100dvh;min-height:100vh;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border) 60%,transparent);color:var(--gc-text);font-family:var(--gc-font-text);background:radial-gradient(circle at 18% 14%,color-mix(in srgb,var(--gc-accent) 18%,transparent),transparent 35%),radial-gradient(circle at 88% 2%,color-mix(in srgb,var(--gc-primary) 22%,transparent),transparent 30%),linear-gradient(165deg,var(--gc-bg),var(--gc-bg-secondary))}._scan_61dhl_30{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.18;mix-blend-mode:screen;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.1) 0,rgba(255,255,255,.1) 1px,transparent 1px,transparent 3px);animation:_scanDrift_61dhl_1 8s linear infinite}._stack_61dhl_47{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:22px 16px 18px}._meta_61dhl_57{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gc-text-muted);font-family:var(--gc-font-main)}._progressTrack_61dhl_68{margin-top:8px;width:100%;height:3px;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--gc-accent) 20%,transparent)}._progressFill_61dhl_77{height:100%;transition:width .24s ease;background:linear-gradient(90deg,var(--gc-accent),color-mix(in srgb,var(--gc-primary) 45%,var(--gc-accent)))}._slide_61dhl_87{flex:1;display:flex;flex-direction:column;justify-content:center;gap:20px}._title_61dhl_95{margin:0;width:fit-content;font-family:var(--gc-font-display);text-transform:uppercase;letter-spacing:.02em;line-height:1.04;font-size:clamp(28px,8.5vw,46px)}._rgbGlitch_61dhl_105{position:relative;display:inline-block}._rgbBase_61dhl_110{position:relative;z-index:1;color:color-mix(in srgb,var(--gc-text) 38%,#000)}._rgbLayer_61dhl_116{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;opacity:.2}._layerR_61dhl_124{color:#ff3737bf;animation:_layerRShift_61dhl_1 2.4s infinite steps(2,end)}._layerG_61dhl_129{color:#37ff5fbf;animation:_layerGShift_61dhl_1 2.1s infinite steps(2,end)}._layerB_61dhl_134{color:#4182ffbf;animation:_layerBShift_61dhl_1 2.7s infinite steps(2,end)}._content_61dhl_139{display:flex;flex-direction:column;gap:10px;font-family:var(--gc-font-text);font-size:clamp(16px,4.2vw,22px);line-height:1.45}._line_61dhl_148{margin:0;color:var(--gc-text)}._spacer_61dhl_153{margin:0;min-height:.6em}._list_61dhl_158{margin:3px 0 0;padding-left:1.1em;display:flex;flex-direction:column;gap:7px}._warning_61dhl_166{list-style:none;padding-left:0}._warning_61dhl_166 li:before{content:"- ";color:var(--gc-accent)}._cta_61dhl_176{margin-top:10px;width:fit-content;border:1px solid var(--gc-accent);background:color-mix(in srgb,var(--gc-accent) 8%,transparent);color:var(--gc-accent);font:inherit;letter-spacing:.06em;text-transform:uppercase;padding:10px 14px;cursor:pointer;font-family:var(--gc-font-main);transition:transform .14s ease,background-color .14s ease}._cta_61dhl_176:active{transform:scale(.98)}._controls_61dhl_195{display:grid;grid-template-columns:1fr 1fr;gap:8px}._navButton_61dhl_201{border:1px solid color-mix(in srgb,var(--gc-border) 70%,transparent);background:color-mix(in srgb,var(--gc-bg-secondary) 75%,transparent);color:var(--gc-text);font:inherit;text-transform:uppercase;letter-spacing:.08em;padding:10px 12px;cursor:pointer;font-family:var(--gc-font-main)}._navButton_61dhl_201:disabled{opacity:.45;cursor:not-allowed}@keyframes _layerRShift_61dhl_1{0%,81%,to{transform:translate(0)}84%{transform:translate(-4px,2px)}88%{transform:translate(4px,-2px)}92%{transform:translate(2px)}96%{transform:translate(-2px,2px)}}@keyframes _layerGShift_61dhl_1{0%,79%,to{transform:translate(0)}83%{transform:translate(2px,-2px)}87%{transform:translate(-2px,4px)}91%{transform:translateY(-2px)}95%{transform:translate(2px)}}@keyframes _layerBShift_61dhl_1{0%,82%,to{transform:translate(0)}86%{transform:translate(4px)}90%{transform:translate(-4px,-2px)}94%{transform:translate(2px,2px)}98%{transform:translate(-2px)}}@keyframes _scanDrift_61dhl_1{0%{transform:translateY(-10px)}to{transform:translateY(10px)}}@media (min-width: 600px){._frame_61dhl_15{max-width:420px;margin:0 auto}}')),document.head.appendChild(t)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); +import { jsx as t, jsxs as c } from "react/jsx-runtime"; +import { useState as x, useRef as B, useMemo as $, useEffect as G, useCallback as u } from "react"; +const L = "_wrapper_61dhl_1", E = "_frame_61dhl_15", F = "_scan_61dhl_30", C = "_stack_61dhl_47", R = "_meta_61dhl_57", Y = "_progressTrack_61dhl_68", I = "_progressFill_61dhl_77", W = "_slide_61dhl_87", M = "_title_61dhl_95", A = "_rgbGlitch_61dhl_105", D = "_rgbBase_61dhl_110", H = "_rgbLayer_61dhl_116", P = "_layerR_61dhl_124", j = "_layerG_61dhl_129", O = "_layerB_61dhl_134", q = "_content_61dhl_139", U = "_line_61dhl_148", z = "_spacer_61dhl_153", J = "_list_61dhl_158", K = "_warning_61dhl_166", Q = "_cta_61dhl_176", V = "_controls_61dhl_195", X = "_navButton_61dhl_201", e = { + wrapper: L, + frame: E, + scan: F, + stack: C, + meta: R, + progressTrack: Y, + progressFill: I, + slide: W, + title: M, + rgbGlitch: A, + rgbBase: D, + rgbLayer: H, + layerR: P, + layerG: j, + layerB: O, + content: q, + line: U, + spacer: z, + list: J, + warning: K, + cta: Q, + controls: V, + navButton: X +}, Z = 40, i = [ + { + title: "The Premise", + lines: [ + "This facility tests foundational assumptions.", + "", + "Not interpretations.", + "Assumptions." + ] + }, + { + title: "The method", + lines: [ + "This is math and philosophy.", + "Make assumption.", + "Pretend it's true.", + "Where does that lead?" + ] + }, + { + title: "The law", + lines: [ + "We make predictions.", + "If they fail, the idea fails." + ] + }, + { + title: "The way", + lines: ["You will:"], + bullets: [ + "Pass challenges", + "Collect paradoxes", + "Examine anomalies", + "Learn to think sharply" + ] + }, + { + title: "Warning", + lines: ["You may feel:"], + bullets: [ + "This is not a game!", + "Temporary confusion", + "The urge to defend existing physics!" + ], + bulletStyle: "warning", + after: "Good. This is not for everyone." + }, + { + title: "How This Works", + lines: [ + "Watch a short module", + "Pass the glitch gate", + "Unlock the next tech", + "That's it. For now." + ] + }, + { + title: "Proceed", + lines: [ + "You may proceed as an investigator.", + "Begin at the intersection", + "Get briefed" + ], + cta: "[ ENTER FACILITY ]" + } +]; +function ae({ + config: _, + onComplete: p, + onProgress: d, + theme: r, + className: m +}) { + const [n, g] = x(0), o = B(null), f = $(() => r ? { + "--gc-primary": r.primary, + "--gc-accent": r.accent, + "--gc-bg": r.bg, + "--gc-bg-secondary": r.bgSecondary, + "--gc-text": r.text, + "--gc-text-muted": r.textMuted, + "--gc-border": r.border + } : {}, [r]); + G(() => { + const a = (n + 1) / i.length * 100; + d == null || d(Math.round(a)); + }, [n, d]); + const h = u((a) => { + if (a > 0 && n === i.length - 1) { + g(0); + return; + } + const l = n + a; + l < 0 || l >= i.length || g(l); + }, [n]), N = u((a) => { + var l; + o.current = ((l = a.changedTouches[0]) == null ? void 0 : l.clientY) ?? null; + }, []), T = u((a) => { + var b; + if (o.current == null) return; + const l = ((b = a.changedTouches[0]) == null ? void 0 : b.clientY) ?? o.current, y = o.current - l; + Math.abs(y) > Z && h(y > 0 ? 1 : -1), o.current = null; + }, [h]), w = u(() => { + p({ + success: !0, + score: 100, + data: { + sequence: "facility-slideshow", + configId: _.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString() + } + }); + }, [_.id, p]), s = i[n], v = n === i.length - 1, S = (n + 1) / i.length * 100, k = m ? `${e.wrapper} ${m}` : e.wrapper; + return /* @__PURE__ */ t("div", { className: k, style: f, children: /* @__PURE__ */ c( + "section", + { + className: e.frame, + "aria-label": "Facility onboarding slideshow", + onTouchStart: N, + onTouchEnd: T, + children: [ + /* @__PURE__ */ t("div", { className: e.scan, "aria-hidden": "true" }), + /* @__PURE__ */ c("div", { className: e.stack, children: [ + /* @__PURE__ */ c("header", { children: [ + /* @__PURE__ */ c("div", { className: e.meta, children: [ + /* @__PURE__ */ t("span", { children: "Glitch Facility" }), + /* @__PURE__ */ c("span", { children: [ + n + 1, + " / ", + i.length + ] }) + ] }), + /* @__PURE__ */ t("div", { className: e.progressTrack, children: /* @__PURE__ */ t("div", { className: e.progressFill, style: { width: `${S}%` } }) }) + ] }), + /* @__PURE__ */ c("article", { className: e.slide, "aria-live": "polite", children: [ + /* @__PURE__ */ t("h2", { className: e.title, children: /* @__PURE__ */ c("span", { className: e.rgbGlitch, children: [ + /* @__PURE__ */ t("span", { className: e.rgbBase, children: s.title }), + /* @__PURE__ */ t("span", { className: `${e.rgbLayer} ${e.layerR}`, "aria-hidden": "true", children: s.title }), + /* @__PURE__ */ t("span", { className: `${e.rgbLayer} ${e.layerG}`, "aria-hidden": "true", children: s.title }), + /* @__PURE__ */ t("span", { className: `${e.rgbLayer} ${e.layerB}`, "aria-hidden": "true", children: s.title }) + ] }) }), + /* @__PURE__ */ c("div", { className: e.content, children: [ + s.lines.map((a, l) => a === "" ? /* @__PURE__ */ t("p", { className: e.spacer, "aria-hidden": "true" }, `line-${l}`) : /* @__PURE__ */ t("p", { className: e.line, children: a }, `line-${l}`)), + s.bullets && /* @__PURE__ */ t("ul", { className: `${e.list} ${s.bulletStyle === "warning" ? e.warning : ""}`, children: s.bullets.map((a) => /* @__PURE__ */ t("li", { children: a }, a)) }), + s.after && /* @__PURE__ */ t("p", { className: e.line, children: s.after }), + s.cta && /* @__PURE__ */ t("button", { type: "button", className: e.cta, onClick: w, children: s.cta }) + ] }) + ] }), + /* @__PURE__ */ c("nav", { className: e.controls, "aria-label": "Slideshow controls", children: [ + /* @__PURE__ */ t( + "button", + { + type: "button", + className: e.navButton, + onClick: () => h(-1), + disabled: n === 0, + children: "Previous" + } + ), + /* @__PURE__ */ t( + "button", + { + type: "button", + className: e.navButton, + onClick: () => h(1), + children: v ? "Restart" : "Next" + } + ) + ] }) + ] }) + ] + } + ) }); +} +const se = { + name: "onboarding2", + displayName: "Facility Slideshow", + version: "1.0.0", + paramSchema: {}, + defaultParams: {} +}; +export { + ae as default, + se as metadata +}; +//# sourceMappingURL=onboarding2.js.map diff --git a/public/glitch/glitch_onboarding2/onboarding2.js.map b/public/glitch/glitch_onboarding2/onboarding2.js.map new file mode 100644 index 0000000..e9f29bc --- /dev/null +++ b/public/glitch/glitch_onboarding2/onboarding2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onboarding2.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { CSSProperties, TouchEvent } from 'react'\nimport type { GlitchComponentProps, SlideData } from './types'\nimport styles from './styles.module.css'\n\nconst SWIPE_THRESHOLD = 40\n\nconst SLIDES: SlideData[] = [\n {\n title: 'The Premise',\n lines: [\n 'This facility tests foundational assumptions.',\n '',\n 'Not interpretations.',\n 'Assumptions.'\n ]\n },\n {\n title: 'The method',\n lines: [\n 'This is math and philosophy.',\n 'Make assumption.',\n \"Pretend it's true.\",\n 'Where does that lead?'\n ]\n },\n {\n title: 'The law',\n lines: [\n 'We make predictions.',\n 'If they fail, the idea fails.'\n ]\n },\n {\n title: 'The way',\n lines: ['You will:'],\n bullets: [\n 'Pass challenges',\n 'Collect paradoxes',\n 'Examine anomalies',\n 'Learn to think sharply'\n ]\n },\n {\n title: 'Warning',\n lines: ['You may feel:'],\n bullets: [\n 'This is not a game!',\n 'Temporary confusion',\n 'The urge to defend existing physics!'\n ],\n bulletStyle: 'warning',\n after: 'Good. This is not for everyone.'\n },\n {\n title: 'How This Works',\n lines: [\n 'Watch a short module',\n 'Pass the glitch gate',\n 'Unlock the next tech',\n \"That's it. For now.\",\n ],\n },\n {\n title: 'Proceed',\n lines: [\n 'You may proceed as an investigator.',\n 'Begin at the intersection',\n 'Get briefed',\n ],\n cta: '[ ENTER FACILITY ]'\n }\n]\n\nexport default function Component({\n config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const [index, setIndex] = useState(0)\n const touchStartY = useRef(null)\n\n const themeStyle = useMemo(() => {\n if (!theme) return {}\n\n return {\n '--gc-primary': theme.primary,\n '--gc-accent': theme.accent,\n '--gc-bg': theme.bg,\n '--gc-bg-secondary': theme.bgSecondary,\n '--gc-text': theme.text,\n '--gc-text-muted': theme.textMuted,\n '--gc-border': theme.border\n } as CSSProperties\n }, [theme])\n\n useEffect(() => {\n const percent = ((index + 1) / SLIDES.length) * 100\n onProgress?.(Math.round(percent))\n }, [index, onProgress])\n\n const move = useCallback((direction: -1 | 1) => {\n if (direction > 0 && index === SLIDES.length - 1) {\n setIndex(0)\n return\n }\n\n const next = index + direction\n if (next < 0 || next >= SLIDES.length) return\n setIndex(next)\n }, [index])\n\n const handleTouchStart = useCallback((event: TouchEvent) => {\n touchStartY.current = event.changedTouches[0]?.clientY ?? null\n }, [])\n\n const handleTouchEnd = useCallback((event: TouchEvent) => {\n if (touchStartY.current == null) return\n\n const endY = event.changedTouches[0]?.clientY ?? touchStartY.current\n const delta = touchStartY.current - endY\n\n if (Math.abs(delta) > SWIPE_THRESHOLD) {\n move(delta > 0 ? 1 : -1)\n }\n\n touchStartY.current = null\n }, [move])\n\n const handleComplete = useCallback(() => {\n onComplete({\n success: true,\n score: 100,\n data: {\n sequence: 'facility-slideshow',\n configId: config.id,\n completedAt: new Date().toISOString()\n }\n })\n }, [config.id, onComplete])\n\n const slide = SLIDES[index]\n const isLastSlide = index === SLIDES.length - 1\n const progress = ((index + 1) / SLIDES.length) * 100\n const rootClassName = className ? `${styles.wrapper} ${className}` : styles.wrapper\n\n return (\n
\n \n \n )\n}\n","import Component from './Component'\nimport type { GlitchComponentMetadata } from './types'\n\nexport default Component\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'onboarding2',\n displayName: 'Facility Slideshow',\n version: '1.0.0',\n paramSchema: {},\n defaultParams: {}\n}\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n GlitchTheme,\n GlitchComponentMetadata,\n SlideData\n} from './types'\n"],"names":["SWIPE_THRESHOLD","SLIDES","Component","config","onComplete","onProgress","theme","className","index","setIndex","useState","touchStartY","useRef","themeStyle","useMemo","useEffect","percent","move","useCallback","direction","next","handleTouchStart","event","_a","handleTouchEnd","endY","delta","handleComplete","slide","isLastSlide","progress","rootClassName","styles","jsx","jsxs","line","lineIndex","item","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/public/glitch/glitch_sphere_paradox/glitch.manifest.json b/public/glitch/glitch_sphere_paradox/glitch.manifest.json new file mode 100644 index 0000000..503f205 --- /dev/null +++ b/public/glitch/glitch_sphere_paradox/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "sphere-paradox", + "displayName": "Create a Perfect Sphere", + "version": "1.0.0", + "folderName": "glitch_sphere_paradox", + "packageName": "sphere-paradox", + "entry": "dist/sphere-paradox.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "3d", + "paradox" + ] +} diff --git a/public/glitch/glitch_sphere_paradox/sphere-paradox.js b/public/glitch/glitch_sphere_paradox/sphere-paradox.js new file mode 100644 index 0000000..c3ecc55 --- /dev/null +++ b/public/glitch/glitch_sphere_paradox/sphere-paradox.js @@ -0,0 +1,352 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._container_101xd_1{background:radial-gradient(circle at top,rgba(99,102,241,.14),transparent 48%),linear-gradient(180deg,var(--gc-bg-secondary, #12121a),var(--gc-bg, #0a0a0f));color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:Russo One,system-ui,-apple-system,sans-serif;line-height:1.5;width:100%;min-height:100%}._container_101xd_1,._container_101xd_1 *,._container_101xd_1 *:before,._container_101xd_1 *:after{box-sizing:inherit}._frame_101xd_20{width:100%;aspect-ratio:16 / 9;padding:var(--frame-pad, 1rem)}._squareLayout_101xd_26{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:var(--panel-gap, 1rem)}._squarePanel_101xd_35{position:relative;flex:0 0 auto;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent);border-radius:28px;box-shadow:0 28px 70px #00000040}._viewportPanel_101xd_44{background:radial-gradient(circle at 50% 18%,rgba(34,211,238,.2),transparent 32%),linear-gradient(160deg,rgba(18,18,26,.95),rgba(10,10,15,.98))}._contentPanel_101xd_50{background:linear-gradient(180deg,rgba(18,18,26,.96),rgba(10,10,15,.98)),var(--gc-bg, #0a0a0f)}._panelBody_101xd_56{width:100%;height:100%;padding:clamp(1rem,3vw,2rem);display:flex;flex-direction:column;justify-content:center;gap:1rem}._copy_101xd_66{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.15rem);line-height:1.65}._muted_101xd_73{color:var(--gc-text-muted, #9999a8)}._badge_101xd_77{align-self:flex-start;padding:.35rem .7rem;border-radius:999px;background:rgba(99,102,241,.14);color:var(--gc-primary, #6366f1);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}._startButton_101xd_88,._choiceButton_101xd_89,._completeButton_101xd_90{border:none;border-radius:14px;padding:.95rem 1.2rem;font:inherit;color:#fff;cursor:pointer;transition:transform .18s ease,filter .18s ease,border-color .18s ease,background .18s ease}._startButton_101xd_88:hover,._choiceButton_101xd_89:hover,._completeButton_101xd_90:hover{transform:translateY(-1px);filter:brightness(1.06)}._startButton_101xd_88,._completeButton_101xd_90{background:linear-gradient(135deg,var(--gc-primary, #6366f1),var(--gc-accent, #22d3ee))}._sliderSection_101xd_112{display:flex;flex-direction:column;gap:.8rem}._sliderHeader_101xd_118{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}._sliderLabel_101xd_125{color:var(--gc-text-muted, #9999a8);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}._sliderValue_101xd_132{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(1.2rem,2.4vw,1.8rem)}._valueInfinity_101xd_138{color:#ef4444}._slider_101xd_112{width:100%;height:12px;border-radius:999px;background:rgba(255,255,255,.08);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}._slider_101xd_112::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:26px;height:26px;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._slider_101xd_112::-moz-range-thumb{width:26px;height:26px;border:0;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._sliderInfinity_101xd_170{background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(239,68,68,.7))}._sliderInfinity_101xd_170::-webkit-slider-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderInfinity_101xd_170::-moz-range-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderHint_101xd_184{color:var(--gc-text-muted, #9999a8);font-size:.85rem}._statsOverlay_101xd_189{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:space-between;gap:.75rem;pointer-events:none}._stat_101xd_189{min-width:0;padding:.7rem .85rem;border-radius:16px;background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._statLabel_101xd_208{display:block;margin-bottom:.2rem;color:var(--gc-text-muted, #9999a8);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}._statValue_101xd_217{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(.95rem,1.8vw,1.15rem)}._statInfinity_101xd_223{color:#ef4444}._warning_101xd_227{display:flex;flex-direction:column;gap:1rem}._warningText_101xd_233,._warningQuestion_101xd_234{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.1rem);line-height:1.65}._warningQuestion_101xd_234{color:#ef4444}._warningChoices_101xd_245{display:flex;flex-direction:column;gap:.85rem}._choiceButton_101xd_89{text-align:left;background:rgba(255,255,255,.04);border:1px solid var(--gc-border, #2a2a3a)}._choiceInfinity_101xd_257{border-color:#ef444473}._choiceInfinity_101xd_257:hover{background:rgba(239,68,68,.14)}._choiceFinite_101xd_265{border-color:#22c55e73}._choiceFinite_101xd_265:hover{background:rgba(34,197,94,.14)}._resultStats_101xd_273{padding:1rem 1.1rem;border-radius:20px;background:rgba(255,255,255,.04);border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent)}._resultRow_101xd_280{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;color:var(--gc-text-muted, #9999a8);font-size:.92rem}._resultRow_101xd_280+._resultRow_101xd_280{border-top:1px solid rgba(255,255,255,.08)}._resultRow_101xd_280 span:last-child{font-family:SF Mono,Monaco,Consolas,monospace;font-weight:700}._resultMessage_101xd_298{margin:0;color:var(--gc-text-muted, #9999a8);font-size:clamp(.92rem,1.8vw,1rem);line-height:1.7}._resultMessage_101xd_298 strong{color:var(--gc-text, #e8e8ec)}._resultSuccess_101xd_309{color:#22c55e}._resultAccent_101xd_313{color:var(--gc-accent, #22d3ee)}@media (orientation: portrait),(max-aspect-ratio: 1 / 1){._frame_101xd_20{aspect-ratio:1 / 2}}@media (max-width: 768px){._squarePanel_101xd_35{border-radius:22px}._panelBody_101xd_56{padding:1rem}._statsOverlay_101xd_189{right:.75rem;bottom:.75rem;left:.75rem}._stat_101xd_189{padding:.55rem .7rem}}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); +import { jsx as e, jsxs as a, Fragment as _ } from "react/jsx-runtime"; +import { useState as N, useRef as F, useMemo as q, useEffect as z, useCallback as V } from "react"; +import { Canvas as I, useFrame as Q } from "@react-three/fiber"; +import { OrbitControls as W } from "@react-three/drei"; +import * as te from "three"; +const ne = "_container_101xd_1", ie = "_frame_101xd_20", se = "_squareLayout_101xd_26", ae = "_squarePanel_101xd_35", ce = "_viewportPanel_101xd_44", oe = "_contentPanel_101xd_50", re = "_panelBody_101xd_56", le = "_copy_101xd_66", de = "_muted_101xd_73", ue = "_badge_101xd_77", fe = "_startButton_101xd_88", he = "_choiceButton_101xd_89", me = "_completeButton_101xd_90", pe = "_sliderSection_101xd_112", _e = "_sliderHeader_101xd_118", ye = "_sliderLabel_101xd_125", xe = "_sliderValue_101xd_132", ge = "_valueInfinity_101xd_138", ve = "_slider_101xd_112", be = "_sliderInfinity_101xd_170", Se = "_sliderHint_101xd_184", we = "_statsOverlay_101xd_189", Ne = "_stat_101xd_189", Me = "_statLabel_101xd_208", Ie = "_statValue_101xd_217", $e = "_statInfinity_101xd_223", Re = "_warning_101xd_227", Le = "_warningText_101xd_233", Ce = "_warningQuestion_101xd_234", Be = "_warningChoices_101xd_245", Ve = "_choiceInfinity_101xd_257", ke = "_choiceFinite_101xd_265", qe = "_resultStats_101xd_273", ze = "_resultRow_101xd_280", Ae = "_resultMessage_101xd_298", Fe = "_resultSuccess_101xd_309", He = "_resultAccent_101xd_313", t = { + container: ne, + frame: ie, + squareLayout: se, + squarePanel: ae, + viewportPanel: ce, + contentPanel: oe, + panelBody: re, + copy: le, + muted: de, + badge: ue, + startButton: fe, + choiceButton: he, + completeButton: me, + sliderSection: pe, + sliderHeader: _e, + sliderLabel: ye, + sliderValue: xe, + valueInfinity: ge, + slider: ve, + sliderInfinity: be, + sliderHint: Se, + statsOverlay: we, + stat: Ne, + statLabel: Me, + statValue: Ie, + statInfinity: $e, + warning: Re, + warningText: Le, + warningQuestion: Ce, + warningChoices: Be, + choiceInfinity: Ve, + choiceFinite: ke, + resultStats: qe, + resultRow: ze, + resultMessage: Ae, + resultSuccess: Fe, + resultAccent: He +}, A = 5, y = 41; +function Oe(d) { + const r = Math.min(Math.max(d, A), y); + return r % 2 === 0 ? r + 1 : r; +} +function j(d) { + const r = [], n = d, f = 2 / n; + for (let u = 0; u < n; u++) + for (let m = 0; m < n; m++) + for (let o = 0; o < n; o++) { + const g = -1 + f * (u + 0.5), i = -1 + f * (m + 0.5), x = -1 + f * (o + 0.5), p = Math.sqrt(g * g + i * i + x * x), $ = f * 1.2; + p <= 1 && p > 1 - $ && r.push(g, i, x); + } + return { positions: r, count: r.length / 3 }; +} +function Te({ resolution: d, isInfinity: r }) { + const s = F(null), n = q(() => new te.Object3D(), []), { positions: f, count: u, cubeSize: m } = q(() => { + const i = Math.min(d, y), x = j(i), p = 2 / i * 0.85; + return { + positions: x.positions, + count: x.count, + cubeSize: p + }; + }, [d]); + z(() => { + if (!(!s.current || u === 0)) { + for (let i = 0; i < u; i++) + n.position.set( + f[i * 3], + f[i * 3 + 1], + f[i * 3 + 2] + ), n.scale.setScalar(m), n.updateMatrix(), s.current.setMatrixAt(i, n.matrix); + s.current.instanceMatrix.needsUpdate = !0, s.current.count = u; + } + }, [f, u, m, n]), Q((i) => { + s.current && (s.current.rotation.y = i.clock.elapsedTime * 0.2); + }); + const o = r ? "#ef4444" : "#818cf8"; + return /* @__PURE__ */ a("instancedMesh", { ref: s, args: [void 0, void 0, 1e4], frustumCulled: !1, children: [ + /* @__PURE__ */ e("boxGeometry", { args: [1, 1, 1] }), + /* @__PURE__ */ e( + "meshStandardMaterial", + { + color: o, + emissive: o, + emissiveIntensity: 0.05, + roughness: 0.4, + metalness: 0.3 + } + ) + ] }); +} +function k({ resolution: d, isInfinity: r }) { + return /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("ambientLight", { intensity: 0.3 }), + /* @__PURE__ */ e("directionalLight", { position: [5, 8, 5], intensity: 1.2, castShadow: !0 }), + /* @__PURE__ */ e("directionalLight", { position: [-3, -2, -4], intensity: 0.4, color: "#22d3ee" }), + /* @__PURE__ */ e("pointLight", { position: [0, 5, 0], intensity: 0.5 }), + /* @__PURE__ */ e(Te, { resolution: d, isInfinity: r }), + /* @__PURE__ */ e( + W, + { + enableZoom: !0, + enablePan: !1, + autoRotate: !1, + minDistance: 2, + maxDistance: 6 + } + ) + ] }); +} +function De() { + const d = F(null); + return Q((r) => { + d.current && (d.current.rotation.y = r.clock.elapsedTime * 0.3); + }), /* @__PURE__ */ a("mesh", { ref: d, children: [ + /* @__PURE__ */ e("sphereGeometry", { args: [1, 128, 128] }), + /* @__PURE__ */ e( + "meshStandardMaterial", + { + color: "#22d3ee", + emissive: "#22d3ee", + emissiveIntensity: 0.08, + roughness: 0.15, + metalness: 0.9, + envMapIntensity: 1 + } + ) + ] }); +} +function Ee() { + return /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("ambientLight", { intensity: 0.3 }), + /* @__PURE__ */ e("directionalLight", { position: [5, 8, 5], intensity: 1.5 }), + /* @__PURE__ */ e("directionalLight", { position: [-4, -2, -3], intensity: 0.5, color: "#6366f1" }), + /* @__PURE__ */ e("pointLight", { position: [0, 3, 3], intensity: 0.8, color: "#ffffff" }), + /* @__PURE__ */ e(De, {}), + /* @__PURE__ */ e( + W, + { + enableZoom: !1, + enablePan: !1, + autoRotate: !0, + autoRotateSpeed: 1.5 + } + ) + ] }); +} +function Pe({ + config: d, + onComplete: r, + onProgress: s, + theme: n, + className: f +}) { + const [u, m] = N("exploring"), [o, g] = N(A), [i, x] = N(null), [p, $] = N(!1), H = F(null), [v, K] = N({ + stacked: !1, + panelSize: 320, + gap: 16, + padding: 16 + }), M = o >= y, O = q(() => j(Math.min(o, y)).count, [o]); + z(() => { + const c = H.current; + if (!c || typeof ResizeObserver > "u") + return; + const l = () => { + const { width: h, height: S } = c.getBoundingClientRect(); + if (!h || !S) + return; + const C = S > h, E = Math.min(h, S), w = Math.round(Math.max(12, Math.min(28, E * 0.04))), B = Math.round(Math.max(12, Math.min(22, E * 0.03))), X = C ? h - w * 2 : (h - w * 2 - B) / 2, ee = C ? (S - w * 2 - B) / 2 : S - w * 2; + K({ + stacked: C, + panelSize: Math.max(0, Math.floor(Math.min(X, ee))), + gap: B, + padding: w + }); + }; + l(); + const b = new ResizeObserver(l); + return b.observe(c), () => b.disconnect(); + }, []); + const P = { + "--gc-primary": (n == null ? void 0 : n.primary) || "#6366f1", + "--gc-accent": (n == null ? void 0 : n.accent) || "#22d3ee", + "--gc-bg": (n == null ? void 0 : n.bg) || "#0a0a0f", + "--gc-bg-secondary": (n == null ? void 0 : n.bgSecondary) || "#12121a", + "--gc-text": (n == null ? void 0 : n.text) || "#e8e8ec", + "--gc-text-muted": (n == null ? void 0 : n.textMuted) || "#9999a8", + "--gc-border": (n == null ? void 0 : n.border) || "#2a2a3a", + "--panel-gap": `${v.gap}px`, + "--frame-pad": `${v.padding}px` + }, T = { + width: `${v.panelSize}px`, + height: `${v.panelSize}px` + }; + z(() => { + s == null || s(10); + }, [s]); + const G = V((c) => { + const l = Oe(parseInt(c.target.value, 10)); + g(l); + const b = 10 + l / y * 40; + s == null || s(Math.min(b, 50)), l >= y && !p && (m("warning"), $(!0), s == null || s(70)); + }, [p, s, y]), D = V((c) => { + x(c), m("result"), s == null || s(100); + }, [s]), Z = V(() => { + r({ + success: !0, + score: 100, + data: { + choice: i, + finalResolution: o, + exploredInfinity: p, + completedAt: (/* @__PURE__ */ new Date()).toISOString() + } + }); + }, [i, o, p, r]), U = (c) => c >= y ? "∞" : c.toString(), Y = (c, l) => l ? "∞" : c.toLocaleString(), J = (c, l) => { + if (l) + return "∞"; + const h = c * 80; + return h < 1024 ? `${h} B` : h < 1024 * 1024 ? `${(h / 1024).toFixed(1)} KB` : `${(h / (1024 * 1024)).toFixed(2)} MB`; + }, R = (c, l) => /* @__PURE__ */ a("div", { className: `${t.squarePanel} ${t.viewportPanel}`, style: T, children: [ + c, + /* @__PURE__ */ a("div", { className: t.statsOverlay, children: [ + /* @__PURE__ */ a("div", { className: t.stat, children: [ + /* @__PURE__ */ e("span", { className: t.statLabel, children: "Blocks" }), + /* @__PURE__ */ e("span", { className: `${t.statValue} ${l ? t.statInfinity : ""}`, children: Y(O, l) }) + ] }), + /* @__PURE__ */ a("div", { className: t.stat, children: [ + /* @__PURE__ */ e("span", { className: t.statLabel, children: "Memory" }), + /* @__PURE__ */ e("span", { className: `${t.statValue} ${l ? t.statInfinity : ""}`, children: J(O, l) }) + ] }) + ] }) + ] }), L = (c) => /* @__PURE__ */ e("div", { className: `${t.squarePanel} ${t.contentPanel}`, style: T, children: /* @__PURE__ */ e("div", { className: t.panelBody, children: c }) }); + return /* @__PURE__ */ e("div", { className: `${t.container} ${f || ""}`, style: P, children: /* @__PURE__ */ e("div", { ref: H, className: t.frame, children: /* @__PURE__ */ a( + "div", + { + className: t.squareLayout, + style: { flexDirection: v.stacked ? "column" : "row" }, + children: [ + u === "exploring" && /* @__PURE__ */ a(_, { children: [ + R( + /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: M }) }), + M + ), + L( + /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("div", { className: t.badge, children: "Resolution" }), + /* @__PURE__ */ e("p", { className: `${t.copy} ${t.muted}`, children: "Every step adds more cubes to the shell. Keep sliding until the approximation breaks open." }), + /* @__PURE__ */ a("div", { className: t.sliderSection, children: [ + /* @__PURE__ */ a("div", { className: t.sliderHeader, children: [ + /* @__PURE__ */ e("span", { className: t.sliderLabel, children: "Current Level" }), + /* @__PURE__ */ e("span", { className: `${t.sliderValue} ${M ? t.valueInfinity : ""}`, children: U(o) }) + ] }), + /* @__PURE__ */ e( + "input", + { + type: "range", + min: A, + max: y, + step: "2", + value: o, + onChange: G, + className: `${t.slider} ${M ? t.sliderInfinity : ""}` + } + ), + /* @__PURE__ */ e("div", { className: t.sliderHint, children: "Drag right to approach a perfectly smooth sphere." }) + ] }) + ] }) + ) + ] }), + u === "warning" && /* @__PURE__ */ a(_, { children: [ + R( + /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: !0 }) }), + !0 + ), + L( + /* @__PURE__ */ a("div", { className: t.warning, children: [ + /* @__PURE__ */ e("div", { className: t.badge, children: "Limit Reached" }), + /* @__PURE__ */ e("p", { className: t.warningText, children: "At infinite resolution, the sphere needs infinitely many blocks." }), + /* @__PURE__ */ e("p", { className: t.warningText, children: "Infinitely many blocks means infinite information and unbounded memory." }), + /* @__PURE__ */ e("p", { className: t.warningQuestion, children: "Do you want the perfect sphere anyway?" }), + /* @__PURE__ */ a("div", { className: t.warningChoices, children: [ + /* @__PURE__ */ e( + "button", + { + className: `${t.choiceButton} ${t.choiceInfinity}`, + onClick: () => D("infinity"), + children: "Embrace Infinity" + } + ), + /* @__PURE__ */ e( + "button", + { + className: `${t.choiceButton} ${t.choiceFinite}`, + onClick: () => D("finite"), + children: "Keep It Finite" + } + ) + ] }) + ] }) + ) + ] }), + u === "result" && /* @__PURE__ */ a(_, { children: [ + R( + i === "infinity" ? /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3], fov: 50 }, children: /* @__PURE__ */ e(Ee, {}) }) : /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: !1 }) }), + i === "infinity" + ), + L( + /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("div", { className: t.badge, children: i === "finite" ? "Finite Wins" : "Infinity Chosen" }), + /* @__PURE__ */ a("div", { className: t.resultStats, children: [ + /* @__PURE__ */ a("div", { className: t.resultRow, children: [ + /* @__PURE__ */ e("span", { children: "Memory Required" }), + /* @__PURE__ */ e("span", { className: i === "finite" ? t.resultSuccess : t.resultAccent, children: i === "finite" ? "Finite" : "∞" }) + ] }), + /* @__PURE__ */ a("div", { className: t.resultRow, children: [ + /* @__PURE__ */ e("span", { children: "Simulation Possible" }), + /* @__PURE__ */ e("span", { className: i === "finite" ? t.resultSuccess : t.resultAccent, children: i === "finite" ? "Yes" : "Only in theory" }) + ] }) + ] }), + /* @__PURE__ */ e("p", { className: t.resultMessage, children: i === "finite" ? /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("strong", { children: "Discreteness can be enough." }), + " A finite model never becomes perfect, but it can get close enough to feel continuous." + ] }) : /* @__PURE__ */ a(_, { children: [ + /* @__PURE__ */ e("strong", { children: "Perfect smoothness costs infinity." }), + " A mathematically exact sphere cannot be simulated without infinite information." + ] }) }), + /* @__PURE__ */ e("button", { className: t.completeButton, onClick: Z, children: "Complete Challenge" }) + ] }) + ) + ] }) + ] + } + ) }) }); +} +const Ge = { + name: "sphere-paradox", + displayName: "Create a Perfect Sphere", + version: "1.0.0", + paramSchema: {}, + defaultParams: {} +}; +export { + Pe as default, + Ge as metadata +}; +//# sourceMappingURL=sphere-paradox.js.map diff --git a/public/glitch/glitch_sphere_paradox/sphere-paradox.js.map b/public/glitch/glitch_sphere_paradox/sphere-paradox.js.map new file mode 100644 index 0000000..159cadb --- /dev/null +++ b/public/glitch/glitch_sphere_paradox/sphere-paradox.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sphere-paradox.js","sources":["../src/Component.tsx","../src/index.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useState,\n useRef,\n useEffect,\n type CSSProperties,\n type ChangeEvent,\n type ReactNode\n} from 'react';\nimport { Canvas, useFrame } from '@react-three/fiber';\nimport { OrbitControls } from '@react-three/drei';\nimport * as THREE from 'three';\nimport styles from './styles.module.css';\nimport type { GlitchComponentProps } from './types';\n\ninterface VoxelSphereProps {\n resolution: number;\n isInfinity: boolean;\n}\n\nconst minResolution = 5;\nconst maxResolution = 41;\n\nfunction normalizeOddResolution(value: number): number {\n const clamped = Math.min(Math.max(value, minResolution), maxResolution);\n return clamped % 2 === 0 ? clamped + 1 : clamped;\n}\n\n// Generate voxel positions for a solid sphere (filled, not just shell)\nfunction generateVoxelSphere(resolution: number): { positions: number[], count: number } {\n const positions: number[] = [];\n const radius = 1.0;\n\n // Number of voxels along each axis\n const gridSize = resolution;\n const voxelSize = 2 / gridSize;\n\n for (let ix = 0; ix < gridSize; ix++) {\n for (let iy = 0; iy < gridSize; iy++) {\n for (let iz = 0; iz < gridSize; iz++) {\n // Center of this voxel\n const x = -1 + voxelSize * (ix + 0.5);\n const y = -1 + voxelSize * (iy + 0.5);\n const z = -1 + voxelSize * (iz + 0.5);\n\n const dist = Math.sqrt(x * x + y * y + z * z);\n\n // Include voxels on the surface (shell)\n // Shell thickness scales with voxel size\n const shellThickness = voxelSize * 1.2;\n if (dist <= radius && dist > radius - shellThickness) {\n positions.push(x, y, z);\n }\n }\n }\n }\n\n return { positions, count: positions.length / 3 };\n}\n\nfunction VoxelSphere({ resolution, isInfinity }: VoxelSphereProps) {\n const meshRef = useRef(null);\n const dummy = useMemo(() => new THREE.Object3D(), []);\n\n // Generate voxel data\n const { positions, count, cubeSize } = useMemo(() => {\n const effectiveRes = Math.min(resolution, maxResolution);\n const data = generateVoxelSphere(effectiveRes);\n const size = (2 / effectiveRes) * 0.85; // Slightly smaller to show gaps\n return {\n positions: data.positions,\n count: data.count,\n cubeSize: size\n };\n }, [resolution]);\n\n // Update instance matrices when positions change\n useEffect(() => {\n if (!meshRef.current || count === 0) return;\n\n for (let i = 0; i < count; i++) {\n dummy.position.set(\n positions[i * 3],\n positions[i * 3 + 1],\n positions[i * 3 + 2]\n );\n dummy.scale.setScalar(cubeSize);\n dummy.updateMatrix();\n meshRef.current.setMatrixAt(i, dummy.matrix);\n }\n meshRef.current.instanceMatrix.needsUpdate = true;\n meshRef.current.count = count;\n }, [positions, count, cubeSize, dummy]);\n\n // Rotate the sphere\n useFrame((state) => {\n if (meshRef.current) {\n meshRef.current.rotation.y = state.clock.elapsedTime * 0.2;\n }\n });\n\n const color = isInfinity ? '#ef4444' : '#818cf8';\n\n // Use a large initial count to avoid recreating the mesh\n const maxInstances = 10000;\n\n return (\n \n \n \n \n );\n}\n\nfunction Scene({ resolution, isInfinity }: VoxelSphereProps) {\n return (\n <>\n \n \n \n \n \n \n \n );\n}\n\n// Smooth parametric sphere for the \"infinity\" result\nfunction SmoothSphere() {\n const meshRef = useRef(null);\n\n useFrame((state) => {\n if (meshRef.current) {\n meshRef.current.rotation.y = state.clock.elapsedTime * 0.3;\n }\n });\n\n return (\n \n \n \n \n );\n}\n\nfunction SmoothSphereScene() {\n return (\n <>\n \n \n \n \n \n \n \n );\n}\n\ntype Phase = 'exploring' | 'warning' | 'result';\ntype Choice = 'infinity' | 'finite' | null;\n\ninterface LayoutState {\n stacked: boolean;\n panelSize: number;\n gap: number;\n padding: number;\n}\n\nexport default function SphereParadox({\n config: _config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n void _config;\n const [phase, setPhase] = useState('exploring');\n const [resolution, setResolution] = useState(minResolution);\n const [choice, setChoice] = useState(null);\n const [hasSeenWarning, setHasSeenWarning] = useState(false);\n const frameRef = useRef(null);\n const [layout, setLayout] = useState({\n stacked: false,\n panelSize: 320,\n gap: 16,\n padding: 16\n });\n const isAtInfinity = resolution >= maxResolution;\n\n // Calculate actual voxel count\n const voxelCount = useMemo(() => {\n const data = generateVoxelSphere(Math.min(resolution, maxResolution));\n return data.count;\n }, [resolution]);\n\n useEffect(() => {\n const frame = frameRef.current;\n if (!frame || typeof ResizeObserver === 'undefined') return;\n\n const measure = () => {\n const { width, height } = frame.getBoundingClientRect();\n if (!width || !height) return;\n\n const stacked = height > width;\n const minEdge = Math.min(width, height);\n const padding = Math.round(Math.max(12, Math.min(28, minEdge * 0.04)));\n const gap = Math.round(Math.max(12, Math.min(22, minEdge * 0.03)));\n const maxSquareWidth = stacked\n ? width - padding * 2\n : (width - padding * 2 - gap) / 2;\n const maxSquareHeight = stacked\n ? (height - padding * 2 - gap) / 2\n : height - padding * 2;\n\n setLayout({\n stacked,\n panelSize: Math.max(0, Math.floor(Math.min(maxSquareWidth, maxSquareHeight))),\n gap,\n padding\n });\n };\n\n measure();\n\n const observer = new ResizeObserver(measure);\n observer.observe(frame);\n\n return () => observer.disconnect();\n }, []);\n\n const cssVars = {\n '--gc-primary': theme?.primary || '#6366f1',\n '--gc-accent': theme?.accent || '#22d3ee',\n '--gc-bg': theme?.bg || '#0a0a0f',\n '--gc-bg-secondary': theme?.bgSecondary || '#12121a',\n '--gc-text': theme?.text || '#e8e8ec',\n '--gc-text-muted': theme?.textMuted || '#9999a8',\n '--gc-border': theme?.border || '#2a2a3a',\n '--panel-gap': `${layout.gap}px`,\n '--frame-pad': `${layout.padding}px`\n } as CSSProperties;\n\n const squareStyle = {\n width: `${layout.panelSize}px`,\n height: `${layout.panelSize}px`\n } as CSSProperties;\n\n useEffect(() => {\n onProgress?.(10);\n }, [onProgress]);\n\n const handleSliderChange = useCallback((e: ChangeEvent) => {\n const val = normalizeOddResolution(parseInt(e.target.value, 10));\n setResolution(val);\n\n const progress = 10 + (val / maxResolution) * 40;\n onProgress?.(Math.min(progress, 50));\n\n if (val >= maxResolution && !hasSeenWarning) {\n setPhase('warning');\n setHasSeenWarning(true);\n onProgress?.(70);\n }\n }, [hasSeenWarning, onProgress, maxResolution]);\n\n const handleChoice = useCallback((selectedChoice: 'infinity' | 'finite') => {\n setChoice(selectedChoice);\n setPhase('result');\n onProgress?.(100);\n }, [onProgress]);\n\n const handleComplete = useCallback(() => {\n // Both choices succeed - this is an educational step, not a gate\n onComplete({\n success: true,\n score: 100,\n data: {\n choice,\n finalResolution: resolution,\n exploredInfinity: hasSeenWarning,\n completedAt: new Date().toISOString()\n }\n });\n }, [choice, resolution, hasSeenWarning, onComplete]);\n\n const formatResolution = (res: number) => {\n if (res >= maxResolution) return '∞';\n return res.toString();\n };\n\n const formatVoxelCount = (count: number, isInf: boolean) => {\n if (isInf) return '∞';\n return count.toLocaleString();\n };\n\n const formatMemory = (count: number, isInf: boolean) => {\n if (isInf) return '∞';\n const bytesPerVoxel = 80;\n const bytes = count * bytesPerVoxel;\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;\n };\n\n const renderViewportPanel = (scene: ReactNode, isInf: boolean) => (\n
\n {scene}\n
\n
\n Blocks\n \n {formatVoxelCount(voxelCount, isInf)}\n \n
\n
\n Memory\n \n {formatMemory(voxelCount, isInf)}\n \n
\n
\n
\n );\n\n const renderContentPanel = (content: ReactNode) => (\n
\n
{content}
\n
\n );\n\n return (\n
\n
\n \n {phase === 'exploring' && (\n <>\n {renderViewportPanel(\n \n \n ,\n isAtInfinity\n )}\n {renderContentPanel(\n <>\n
Resolution
\n

\n Every step adds more cubes to the shell. Keep sliding until the approximation breaks open.\n

\n\n
\n
\n Current Level\n \n {formatResolution(resolution)}\n \n
\n \n
\n Drag right to approach a perfectly smooth sphere.\n
\n
\n \n )}\n \n )}\n\n {phase === 'warning' && (\n <>\n {renderViewportPanel(\n \n \n ,\n true\n )}\n {renderContentPanel(\n
\n
Limit Reached
\n

\n At infinite resolution, the sphere needs infinitely many blocks.\n

\n

\n Infinitely many blocks means infinite information and unbounded memory.\n

\n

\n Do you want the perfect sphere anyway?\n

\n
\n handleChoice('infinity')}\n >\n Embrace Infinity\n \n handleChoice('finite')}\n >\n Keep It Finite\n \n
\n
\n )}\n \n )}\n\n {phase === 'result' && (\n <>\n {renderViewportPanel(\n choice === 'infinity' ? (\n \n \n \n ) : (\n \n \n \n ),\n choice === 'infinity'\n )}\n {renderContentPanel(\n <>\n
\n {choice === 'finite' ? 'Finite Wins' : 'Infinity Chosen'}\n
\n
\n
\n Memory Required\n \n {choice === 'finite' ? 'Finite' : '∞'}\n \n
\n
\n Simulation Possible\n \n {choice === 'finite' ? 'Yes' : 'Only in theory'}\n \n
\n
\n\n

\n {choice === 'finite' ? (\n <>\n Discreteness can be enough. A finite model never becomes perfect, but it can get close enough to feel continuous.\n \n ) : (\n <>\n Perfect smoothness costs infinity. A mathematically exact sphere cannot be simulated without infinite information.\n \n )}\n

\n\n \n \n )}\n \n )}\n
\n
\n
\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'sphere-paradox',\n displayName: 'Create a Perfect Sphere',\n version: '1.0.0',\n paramSchema: {},\n defaultParams: {}\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult\n} from './types';\n"],"names":["minResolution","maxResolution","normalizeOddResolution","value","clamped","generateVoxelSphere","resolution","positions","gridSize","voxelSize","ix","iy","iz","x","y","z","dist","shellThickness","VoxelSphere","isInfinity","meshRef","useRef","dummy","useMemo","THREE","count","cubeSize","effectiveRes","data","size","useEffect","useFrame","state","color","jsxs","jsx","Scene","Fragment","OrbitControls","SmoothSphere","SmoothSphereScene","SphereParadox","_config","onComplete","onProgress","theme","className","phase","setPhase","useState","setResolution","choice","setChoice","hasSeenWarning","setHasSeenWarning","frameRef","layout","setLayout","isAtInfinity","voxelCount","frame","measure","width","height","stacked","minEdge","padding","gap","maxSquareWidth","maxSquareHeight","observer","cssVars","squareStyle","handleSliderChange","useCallback","e","val","progress","handleChoice","selectedChoice","handleComplete","formatResolution","res","formatVoxelCount","isInf","formatMemory","bytes","renderViewportPanel","scene","styles","renderContentPanel","content","Canvas","metadata"],"mappings":"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"} \ No newline at end of file diff --git a/public/glitch/glitch_voxel_universe/glitch.manifest.json b/public/glitch/glitch_voxel_universe/glitch.manifest.json new file mode 100644 index 0000000..978bde3 --- /dev/null +++ b/public/glitch/glitch_voxel_universe/glitch.manifest.json @@ -0,0 +1,14 @@ +{ + "componentId": "voxel-universe", + "displayName": "Voxel Universe", + "version": "1.0.0", + "folderName": "glitch_voxel_universe", + "packageName": "@glitch-components/voxel-universe", + "entry": "dist/voxel_universe.js", + "source": "src/index.tsx", + "tags": [ + "glitch-component", + "voxel", + "geometry" + ] +} diff --git a/public/glitch/glitch_voxel_universe/host.js b/public/glitch/glitch_voxel_universe/host.js new file mode 100644 index 0000000..434595e --- /dev/null +++ b/public/glitch/glitch_voxel_universe/host.js @@ -0,0 +1,29 @@ +import React from "react"; +import { createRoot } from "react-dom/client"; +import VoxelUniverse, { metadata } from "./voxel_universe.js"; + +const rootElement = document.getElementById("root"); + +if (rootElement) { + createRoot(rootElement).render( + React.createElement(VoxelUniverse, { + config: { + id: "voxel-universe-hosted", + name: metadata?.name ?? "voxel_universe", + version: metadata?.version ?? "1.0.0", + params: metadata?.defaultParams ?? {} + }, + theme: { + primary: "#45c4b0", + accent: "#ff7a59", + bg: "#0d1117", + bgSecondary: "#182237", + text: "#f1f4ef", + textMuted: "#b6c0d4", + border: "#34516f" + }, + onProgress: () => {}, + onComplete: () => {} + }) + ); +} diff --git a/public/glitch/glitch_voxel_universe/index.html b/public/glitch/glitch_voxel_universe/index.html new file mode 100644 index 0000000..0db95d2 --- /dev/null +++ b/public/glitch/glitch_voxel_universe/index.html @@ -0,0 +1,34 @@ + + + + + + Voxel Universe + + + + +
+ + + diff --git a/public/glitch/glitch_voxel_universe/voxel_universe.js b/public/glitch/glitch_voxel_universe/voxel_universe.js new file mode 100644 index 0000000..cf33839 --- /dev/null +++ b/public/glitch/glitch_voxel_universe/voxel_universe.js @@ -0,0 +1,14400 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._wrapper_1xs2z_1{--gc-paper: #f2f0ea;box-sizing:border-box;width:100%;height:100%;min-height:100%;margin:0;padding:0;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:24px;background:radial-gradient(circle at 12% 8%,color-mix(in srgb,var(--gc-primary, #45c4b0) 16%,transparent),transparent 34%),radial-gradient(circle at 88% 10%,color-mix(in srgb,var(--gc-accent, #ff7a59) 14%,transparent),transparent 28%),linear-gradient(160deg,var(--gc-bg, #0d1117),var(--gc-bg-secondary, #182237));color:var(--gc-text, #f1f4ef);box-shadow:0 24px 64px #00000047;display:grid;place-items:center}._wrapper_1xs2z_1,._wrapper_1xs2z_1 *,._wrapper_1xs2z_1 *:before,._wrapper_1xs2z_1 *:after{box-sizing:inherit}._canvasShell_1xs2z_28{position:relative;overflow:hidden;flex:none;border:1px solid rgb(0 0 0 / 22%);background:var(--gc-paper, #f2f0ea);box-shadow:inset 0 0 0 1px #ffffff1f}._canvas_1xs2z_28{width:100%;height:100%}._canvas_1xs2z_28 canvas{display:block;width:100%;height:100%}._viewportLabels_1xs2z_48{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));pointer-events:none}._viewportLabels_1xs2z_48[data-layout=portrait]{grid-template-columns:1fr;grid-template-rows:repeat(2,minmax(0,1fr))}._splitLabel_1xs2z_61{display:grid;place-items:center;color:#111827d1;font-size:clamp(1.15rem,2.7vw,2.1rem);font-weight:700;font-family:IBM Plex Sans Condensed,Avenir Next Condensed,sans-serif;text-transform:uppercase;letter-spacing:.34em;text-shadow:0 2px 12px rgb(255 255 255 / 42%)}._controlOverlay_1xs2z_73{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:center;pointer-events:none}._resolutionCard_1xs2z_83{pointer-events:auto;display:flex;align-items:center;justify-content:center;width:min(100%,26rem);padding:.75rem .9rem;border:1px solid color-mix(in srgb,var(--gc-border, #34516f) 72%,transparent);border-radius:16px;background:#070f199e;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 30px #0000002e}._resolutionControl_1xs2z_97{display:flex;align-items:center;gap:.85rem;width:100%;min-width:0}._slider_1xs2z_105{width:100%;accent-color:var(--gc-primary, #45c4b0);cursor:pointer}._sliderValue_1xs2z_111{min-width:3.75rem;text-align:right;font-family:IBM Plex Mono,JetBrains Mono,monospace;font-size:.95rem}@media (max-width: 900px){._resolutionControl_1xs2z_97{min-width:0}}@media (max-width: 720px){._wrapper_1xs2z_1{padding:0}._splitLabel_1xs2z_61{font-size:clamp(.95rem,5vw,1.4rem);letter-spacing:.24em}._controlOverlay_1xs2z_73{right:0rem;bottom:0rem;left:0rem}}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); +import { jsx as pn, jsxs as yi } from "react/jsx-runtime"; +import { useState as Ms, useRef as dr, useEffect as ai, useMemo as fr } from "react"; +/** + * @license + * Copyright 2010-2023 Three.js Authors + * SPDX-License-Identifier: MIT + */ +const ss = "160", Ln = { ROTATE: 0, DOLLY: 1, PAN: 2 }, Pn = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 }, Yo = 0, Ss = 1, jo = 2, so = 1, ao = 2, jt = 3, un = 0, Mt = 1, Kt = 2, on = 0, $n = 1, Es = 2, ys = 3, Ts = 4, Ko = 5, Mn = 100, Zo = 101, $o = 102, bs = 103, As = 104, Jo = 200, Qo = 201, el = 202, tl = 203, Kr = 204, Zr = 205, nl = 206, il = 207, rl = 208, sl = 209, al = 210, ol = 211, ll = 212, cl = 213, ul = 214, hl = 0, dl = 1, fl = 2, $i = 3, pl = 4, ml = 5, _l = 6, gl = 7, oo = 0, vl = 1, xl = 2, ln = 0, Ml = 1, Sl = 2, El = 3, yl = 4, Tl = 5, bl = 6, lo = 300, Qn = 301, ei = 302, $r = 303, Jr = 304, rr = 306, Qr = 1e3, Nt = 1001, es = 1002, gt = 1003, ws = 1004, pr = 1005, Rt = 1006, Al = 1007, _i = 1008, cn = 1009, wl = 1010, Rl = 1011, as = 1012, co = 1013, sn = 1014, an = 1015, gi = 1016, uo = 1017, ho = 1018, En = 1020, Cl = 1021, Ft = 1023, Ll = 1024, Pl = 1025, yn = 1026, ti = 1027, Dl = 1028, fo = 1029, Ul = 1030, po = 1031, mo = 1033, mr = 33776, _r = 33777, gr = 33778, vr = 33779, Rs = 35840, Cs = 35841, Ls = 35842, Ps = 35843, _o = 36196, Ds = 37492, Us = 37496, Is = 37808, Ns = 37809, Fs = 37810, Os = 37811, Bs = 37812, zs = 37813, Gs = 37814, Hs = 37815, Vs = 37816, ks = 37817, Ws = 37818, Xs = 37819, qs = 37820, Ys = 37821, xr = 36492, js = 36494, Ks = 36495, Il = 36283, Zs = 36284, $s = 36285, Js = 36286, go = 3e3, Tn = 3001, Nl = 3200, Fl = 3201, vo = 0, Ol = 1, Ct = "", ht = "srgb", $t = "srgb-linear", os = "display-p3", sr = "display-p3-linear", Ji = "linear", Ze = "srgb", Qi = "rec709", er = "p3", Dn = 7680, Qs = 519, Bl = 512, zl = 513, Gl = 514, xo = 515, Hl = 516, Vl = 517, kl = 518, Wl = 519, ea = 35044, ta = "300 es", ts = 1035, Zt = 2e3, tr = 2001; +class Rn { + addEventListener(e, t) { + this._listeners === void 0 && (this._listeners = {}); + const n = this._listeners; + n[e] === void 0 && (n[e] = []), n[e].indexOf(t) === -1 && n[e].push(t); + } + hasEventListener(e, t) { + if (this._listeners === void 0) return !1; + const n = this._listeners; + return n[e] !== void 0 && n[e].indexOf(t) !== -1; + } + removeEventListener(e, t) { + if (this._listeners === void 0) return; + const r = this._listeners[e]; + if (r !== void 0) { + const s = r.indexOf(t); + s !== -1 && r.splice(s, 1); + } + } + dispatchEvent(e) { + if (this._listeners === void 0) return; + const n = this._listeners[e.type]; + if (n !== void 0) { + e.target = this; + const r = n.slice(0); + for (let s = 0, o = r.length; s < o; s++) + r[s].call(this, e); + e.target = null; + } + } +} +const pt = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4a", "4b", "4c", "4d", "4e", "4f", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5a", "5b", "5c", "5d", "5e", "5f", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a", "6b", "6c", "6d", "6e", "6f", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c", "7d", "7e", "7f", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e", "8f", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "da", "db", "dc", "dd", "de", "df", "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "ea", "eb", "ec", "ed", "ee", "ef", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff"], Ki = Math.PI / 180, ns = 180 / Math.PI; +function vi() { + const i = Math.random() * 4294967295 | 0, e = Math.random() * 4294967295 | 0, t = Math.random() * 4294967295 | 0, n = Math.random() * 4294967295 | 0; + return (pt[i & 255] + pt[i >> 8 & 255] + pt[i >> 16 & 255] + pt[i >> 24 & 255] + "-" + pt[e & 255] + pt[e >> 8 & 255] + "-" + pt[e >> 16 & 15 | 64] + pt[e >> 24 & 255] + "-" + pt[t & 63 | 128] + pt[t >> 8 & 255] + "-" + pt[t >> 16 & 255] + pt[t >> 24 & 255] + pt[n & 255] + pt[n >> 8 & 255] + pt[n >> 16 & 255] + pt[n >> 24 & 255]).toLowerCase(); +} +function vt(i, e, t) { + return Math.max(e, Math.min(t, i)); +} +function Xl(i, e) { + return (i % e + e) % e; +} +function Mr(i, e, t) { + return (1 - t) * i + t * e; +} +function na(i) { + return (i & i - 1) === 0 && i !== 0; +} +function is(i) { + return Math.pow(2, Math.floor(Math.log(i) / Math.LN2)); +} +function oi(i, e) { + switch (e.constructor) { + case Float32Array: + return i; + case Uint32Array: + return i / 4294967295; + case Uint16Array: + return i / 65535; + case Uint8Array: + return i / 255; + case Int32Array: + return Math.max(i / 2147483647, -1); + case Int16Array: + return Math.max(i / 32767, -1); + case Int8Array: + return Math.max(i / 127, -1); + default: + throw new Error("Invalid component type."); + } +} +function xt(i, e) { + switch (e.constructor) { + case Float32Array: + return i; + case Uint32Array: + return Math.round(i * 4294967295); + case Uint16Array: + return Math.round(i * 65535); + case Uint8Array: + return Math.round(i * 255); + case Int32Array: + return Math.round(i * 2147483647); + case Int16Array: + return Math.round(i * 32767); + case Int8Array: + return Math.round(i * 127); + default: + throw new Error("Invalid component type."); + } +} +const ql = { + DEG2RAD: Ki +}; +class Ie { + constructor(e = 0, t = 0) { + Ie.prototype.isVector2 = !0, this.x = e, this.y = t; + } + get width() { + return this.x; + } + set width(e) { + this.x = e; + } + get height() { + return this.y; + } + set height(e) { + this.y = e; + } + set(e, t) { + return this.x = e, this.y = t, this; + } + setScalar(e) { + return this.x = e, this.y = e, this; + } + setX(e) { + return this.x = e, this; + } + setY(e) { + return this.y = e, this; + } + setComponent(e, t) { + switch (e) { + case 0: + this.x = t; + break; + case 1: + this.y = t; + break; + default: + throw new Error("index is out of range: " + e); + } + return this; + } + getComponent(e) { + switch (e) { + case 0: + return this.x; + case 1: + return this.y; + default: + throw new Error("index is out of range: " + e); + } + } + clone() { + return new this.constructor(this.x, this.y); + } + copy(e) { + return this.x = e.x, this.y = e.y, this; + } + add(e) { + return this.x += e.x, this.y += e.y, this; + } + addScalar(e) { + return this.x += e, this.y += e, this; + } + addVectors(e, t) { + return this.x = e.x + t.x, this.y = e.y + t.y, this; + } + addScaledVector(e, t) { + return this.x += e.x * t, this.y += e.y * t, this; + } + sub(e) { + return this.x -= e.x, this.y -= e.y, this; + } + subScalar(e) { + return this.x -= e, this.y -= e, this; + } + subVectors(e, t) { + return this.x = e.x - t.x, this.y = e.y - t.y, this; + } + multiply(e) { + return this.x *= e.x, this.y *= e.y, this; + } + multiplyScalar(e) { + return this.x *= e, this.y *= e, this; + } + divide(e) { + return this.x /= e.x, this.y /= e.y, this; + } + divideScalar(e) { + return this.multiplyScalar(1 / e); + } + applyMatrix3(e) { + const t = this.x, n = this.y, r = e.elements; + return this.x = r[0] * t + r[3] * n + r[6], this.y = r[1] * t + r[4] * n + r[7], this; + } + min(e) { + return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this; + } + max(e) { + return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this; + } + clamp(e, t) { + return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this; + } + clampScalar(e, t) { + return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this; + } + clampLength(e, t) { + const n = this.length(); + return this.divideScalar(n || 1).multiplyScalar(Math.max(e, Math.min(t, n))); + } + floor() { + return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this; + } + ceil() { + return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this; + } + round() { + return this.x = Math.round(this.x), this.y = Math.round(this.y), this; + } + roundToZero() { + return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this; + } + negate() { + return this.x = -this.x, this.y = -this.y, this; + } + dot(e) { + return this.x * e.x + this.y * e.y; + } + cross(e) { + return this.x * e.y - this.y * e.x; + } + lengthSq() { + return this.x * this.x + this.y * this.y; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + angle() { + return Math.atan2(-this.y, -this.x) + Math.PI; + } + angleTo(e) { + const t = Math.sqrt(this.lengthSq() * e.lengthSq()); + if (t === 0) return Math.PI / 2; + const n = this.dot(e) / t; + return Math.acos(vt(n, -1, 1)); + } + distanceTo(e) { + return Math.sqrt(this.distanceToSquared(e)); + } + distanceToSquared(e) { + const t = this.x - e.x, n = this.y - e.y; + return t * t + n * n; + } + manhattanDistanceTo(e) { + return Math.abs(this.x - e.x) + Math.abs(this.y - e.y); + } + setLength(e) { + return this.normalize().multiplyScalar(e); + } + lerp(e, t) { + return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this; + } + lerpVectors(e, t, n) { + return this.x = e.x + (t.x - e.x) * n, this.y = e.y + (t.y - e.y) * n, this; + } + equals(e) { + return e.x === this.x && e.y === this.y; + } + fromArray(e, t = 0) { + return this.x = e[t], this.y = e[t + 1], this; + } + toArray(e = [], t = 0) { + return e[t] = this.x, e[t + 1] = this.y, e; + } + fromBufferAttribute(e, t) { + return this.x = e.getX(t), this.y = e.getY(t), this; + } + rotateAround(e, t) { + const n = Math.cos(t), r = Math.sin(t), s = this.x - e.x, o = this.y - e.y; + return this.x = s * n - o * r + e.x, this.y = s * r + o * n + e.y, this; + } + random() { + return this.x = Math.random(), this.y = Math.random(), this; + } + *[Symbol.iterator]() { + yield this.x, yield this.y; + } +} +class Ve { + constructor(e, t, n, r, s, o, a, l, c) { + Ve.prototype.isMatrix3 = !0, this.elements = [ + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1 + ], e !== void 0 && this.set(e, t, n, r, s, o, a, l, c); + } + set(e, t, n, r, s, o, a, l, c) { + const h = this.elements; + return h[0] = e, h[1] = r, h[2] = a, h[3] = t, h[4] = s, h[5] = l, h[6] = n, h[7] = o, h[8] = c, this; + } + identity() { + return this.set( + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1 + ), this; + } + copy(e) { + const t = this.elements, n = e.elements; + return t[0] = n[0], t[1] = n[1], t[2] = n[2], t[3] = n[3], t[4] = n[4], t[5] = n[5], t[6] = n[6], t[7] = n[7], t[8] = n[8], this; + } + extractBasis(e, t, n) { + return e.setFromMatrix3Column(this, 0), t.setFromMatrix3Column(this, 1), n.setFromMatrix3Column(this, 2), this; + } + setFromMatrix4(e) { + const t = e.elements; + return this.set( + t[0], + t[4], + t[8], + t[1], + t[5], + t[9], + t[2], + t[6], + t[10] + ), this; + } + multiply(e) { + return this.multiplyMatrices(this, e); + } + premultiply(e) { + return this.multiplyMatrices(e, this); + } + multiplyMatrices(e, t) { + const n = e.elements, r = t.elements, s = this.elements, o = n[0], a = n[3], l = n[6], c = n[1], h = n[4], d = n[7], p = n[2], m = n[5], g = n[8], v = r[0], f = r[3], u = r[6], b = r[1], S = r[4], R = r[7], D = r[2], C = r[5], A = r[8]; + return s[0] = o * v + a * b + l * D, s[3] = o * f + a * S + l * C, s[6] = o * u + a * R + l * A, s[1] = c * v + h * b + d * D, s[4] = c * f + h * S + d * C, s[7] = c * u + h * R + d * A, s[2] = p * v + m * b + g * D, s[5] = p * f + m * S + g * C, s[8] = p * u + m * R + g * A, this; + } + multiplyScalar(e) { + const t = this.elements; + return t[0] *= e, t[3] *= e, t[6] *= e, t[1] *= e, t[4] *= e, t[7] *= e, t[2] *= e, t[5] *= e, t[8] *= e, this; + } + determinant() { + const e = this.elements, t = e[0], n = e[1], r = e[2], s = e[3], o = e[4], a = e[5], l = e[6], c = e[7], h = e[8]; + return t * o * h - t * a * c - n * s * h + n * a * l + r * s * c - r * o * l; + } + invert() { + const e = this.elements, t = e[0], n = e[1], r = e[2], s = e[3], o = e[4], a = e[5], l = e[6], c = e[7], h = e[8], d = h * o - a * c, p = a * l - h * s, m = c * s - o * l, g = t * d + n * p + r * m; + if (g === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0); + const v = 1 / g; + return e[0] = d * v, e[1] = (r * c - h * n) * v, e[2] = (a * n - r * o) * v, e[3] = p * v, e[4] = (h * t - r * l) * v, e[5] = (r * s - a * t) * v, e[6] = m * v, e[7] = (n * l - c * t) * v, e[8] = (o * t - n * s) * v, this; + } + transpose() { + let e; + const t = this.elements; + return e = t[1], t[1] = t[3], t[3] = e, e = t[2], t[2] = t[6], t[6] = e, e = t[5], t[5] = t[7], t[7] = e, this; + } + getNormalMatrix(e) { + return this.setFromMatrix4(e).invert().transpose(); + } + transposeIntoArray(e) { + const t = this.elements; + return e[0] = t[0], e[1] = t[3], e[2] = t[6], e[3] = t[1], e[4] = t[4], e[5] = t[7], e[6] = t[2], e[7] = t[5], e[8] = t[8], this; + } + setUvTransform(e, t, n, r, s, o, a) { + const l = Math.cos(s), c = Math.sin(s); + return this.set( + n * l, + n * c, + -n * (l * o + c * a) + o + e, + -r * c, + r * l, + -r * (-c * o + l * a) + a + t, + 0, + 0, + 1 + ), this; + } + // + scale(e, t) { + return this.premultiply(Sr.makeScale(e, t)), this; + } + rotate(e) { + return this.premultiply(Sr.makeRotation(-e)), this; + } + translate(e, t) { + return this.premultiply(Sr.makeTranslation(e, t)), this; + } + // for 2D Transforms + makeTranslation(e, t) { + return e.isVector2 ? this.set( + 1, + 0, + e.x, + 0, + 1, + e.y, + 0, + 0, + 1 + ) : this.set( + 1, + 0, + e, + 0, + 1, + t, + 0, + 0, + 1 + ), this; + } + makeRotation(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + t, + -n, + 0, + n, + t, + 0, + 0, + 0, + 1 + ), this; + } + makeScale(e, t) { + return this.set( + e, + 0, + 0, + 0, + t, + 0, + 0, + 0, + 1 + ), this; + } + // + equals(e) { + const t = this.elements, n = e.elements; + for (let r = 0; r < 9; r++) + if (t[r] !== n[r]) return !1; + return !0; + } + fromArray(e, t = 0) { + for (let n = 0; n < 9; n++) + this.elements[n] = e[n + t]; + return this; + } + toArray(e = [], t = 0) { + const n = this.elements; + return e[t] = n[0], e[t + 1] = n[1], e[t + 2] = n[2], e[t + 3] = n[3], e[t + 4] = n[4], e[t + 5] = n[5], e[t + 6] = n[6], e[t + 7] = n[7], e[t + 8] = n[8], e; + } + clone() { + return new this.constructor().fromArray(this.elements); + } +} +const Sr = /* @__PURE__ */ new Ve(); +function Mo(i) { + for (let e = i.length - 1; e >= 0; --e) + if (i[e] >= 65535) return !0; + return !1; +} +function nr(i) { + return document.createElementNS("http://www.w3.org/1999/xhtml", i); +} +function Yl() { + const i = nr("canvas"); + return i.style.display = "block", i; +} +const ia = {}; +function mi(i) { + i in ia || (ia[i] = !0, console.warn(i)); +} +const ra = /* @__PURE__ */ new Ve().set( + 0.8224621, + 0.177538, + 0, + 0.0331941, + 0.9668058, + 0, + 0.0170827, + 0.0723974, + 0.9105199 +), sa = /* @__PURE__ */ new Ve().set( + 1.2249401, + -0.2249404, + 0, + -0.0420569, + 1.0420571, + 0, + -0.0196376, + -0.0786361, + 1.0982735 +), Ti = { + [$t]: { + transfer: Ji, + primaries: Qi, + toReference: (i) => i, + fromReference: (i) => i + }, + [ht]: { + transfer: Ze, + primaries: Qi, + toReference: (i) => i.convertSRGBToLinear(), + fromReference: (i) => i.convertLinearToSRGB() + }, + [sr]: { + transfer: Ji, + primaries: er, + toReference: (i) => i.applyMatrix3(sa), + fromReference: (i) => i.applyMatrix3(ra) + }, + [os]: { + transfer: Ze, + primaries: er, + toReference: (i) => i.convertSRGBToLinear().applyMatrix3(sa), + fromReference: (i) => i.applyMatrix3(ra).convertLinearToSRGB() + } +}, jl = /* @__PURE__ */ new Set([$t, sr]), Ke = { + enabled: !0, + _workingColorSpace: $t, + get workingColorSpace() { + return this._workingColorSpace; + }, + set workingColorSpace(i) { + if (!jl.has(i)) + throw new Error(`Unsupported working color space, "${i}".`); + this._workingColorSpace = i; + }, + convert: function(i, e, t) { + if (this.enabled === !1 || e === t || !e || !t) + return i; + const n = Ti[e].toReference, r = Ti[t].fromReference; + return r(n(i)); + }, + fromWorkingColorSpace: function(i, e) { + return this.convert(i, this._workingColorSpace, e); + }, + toWorkingColorSpace: function(i, e) { + return this.convert(i, e, this._workingColorSpace); + }, + getPrimaries: function(i) { + return Ti[i].primaries; + }, + getTransfer: function(i) { + return i === Ct ? Ji : Ti[i].transfer; + } +}; +function Jn(i) { + return i < 0.04045 ? i * 0.0773993808 : Math.pow(i * 0.9478672986 + 0.0521327014, 2.4); +} +function Er(i) { + return i < 31308e-7 ? i * 12.92 : 1.055 * Math.pow(i, 0.41666) - 0.055; +} +let Un; +class So { + static getDataURL(e) { + if (/^data:/i.test(e.src) || typeof HTMLCanvasElement > "u") + return e.src; + let t; + if (e instanceof HTMLCanvasElement) + t = e; + else { + Un === void 0 && (Un = nr("canvas")), Un.width = e.width, Un.height = e.height; + const n = Un.getContext("2d"); + e instanceof ImageData ? n.putImageData(e, 0, 0) : n.drawImage(e, 0, 0, e.width, e.height), t = Un; + } + return t.width > 2048 || t.height > 2048 ? (console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons", e), t.toDataURL("image/jpeg", 0.6)) : t.toDataURL("image/png"); + } + static sRGBToLinear(e) { + if (typeof HTMLImageElement < "u" && e instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && e instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && e instanceof ImageBitmap) { + const t = nr("canvas"); + t.width = e.width, t.height = e.height; + const n = t.getContext("2d"); + n.drawImage(e, 0, 0, e.width, e.height); + const r = n.getImageData(0, 0, e.width, e.height), s = r.data; + for (let o = 0; o < s.length; o++) + s[o] = Jn(s[o] / 255) * 255; + return n.putImageData(r, 0, 0), t; + } else if (e.data) { + const t = e.data.slice(0); + for (let n = 0; n < t.length; n++) + t instanceof Uint8Array || t instanceof Uint8ClampedArray ? t[n] = Math.floor(Jn(t[n] / 255) * 255) : t[n] = Jn(t[n]); + return { + data: t, + width: e.width, + height: e.height + }; + } else + return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."), e; + } +} +let Kl = 0; +class Eo { + constructor(e = null) { + this.isSource = !0, Object.defineProperty(this, "id", { value: Kl++ }), this.uuid = vi(), this.data = e, this.version = 0; + } + set needsUpdate(e) { + e === !0 && this.version++; + } + toJSON(e) { + const t = e === void 0 || typeof e == "string"; + if (!t && e.images[this.uuid] !== void 0) + return e.images[this.uuid]; + const n = { + uuid: this.uuid, + url: "" + }, r = this.data; + if (r !== null) { + let s; + if (Array.isArray(r)) { + s = []; + for (let o = 0, a = r.length; o < a; o++) + r[o].isDataTexture ? s.push(yr(r[o].image)) : s.push(yr(r[o])); + } else + s = yr(r); + n.url = s; + } + return t || (e.images[this.uuid] = n), n; + } +} +function yr(i) { + return typeof HTMLImageElement < "u" && i instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && i instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && i instanceof ImageBitmap ? So.getDataURL(i) : i.data ? { + data: Array.from(i.data), + width: i.width, + height: i.height, + type: i.data.constructor.name + } : (console.warn("THREE.Texture: Unable to serialize Texture."), {}); +} +let Zl = 0; +class bt extends Rn { + constructor(e = bt.DEFAULT_IMAGE, t = bt.DEFAULT_MAPPING, n = Nt, r = Nt, s = Rt, o = _i, a = Ft, l = cn, c = bt.DEFAULT_ANISOTROPY, h = Ct) { + super(), this.isTexture = !0, Object.defineProperty(this, "id", { value: Zl++ }), this.uuid = vi(), this.name = "", this.source = new Eo(e), this.mipmaps = [], this.mapping = t, this.channel = 0, this.wrapS = n, this.wrapT = r, this.magFilter = s, this.minFilter = o, this.anisotropy = c, this.format = a, this.internalFormat = null, this.type = l, this.offset = new Ie(0, 0), this.repeat = new Ie(1, 1), this.center = new Ie(0, 0), this.rotation = 0, this.matrixAutoUpdate = !0, this.matrix = new Ve(), this.generateMipmaps = !0, this.premultiplyAlpha = !1, this.flipY = !0, this.unpackAlignment = 4, typeof h == "string" ? this.colorSpace = h : (mi("THREE.Texture: Property .encoding has been replaced by .colorSpace."), this.colorSpace = h === Tn ? ht : Ct), this.userData = {}, this.version = 0, this.onUpdate = null, this.isRenderTargetTexture = !1, this.needsPMREMUpdate = !1; + } + get image() { + return this.source.data; + } + set image(e = null) { + this.source.data = e; + } + updateMatrix() { + this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y); + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + return this.name = e.name, this.source = e.source, this.mipmaps = e.mipmaps.slice(0), this.mapping = e.mapping, this.channel = e.channel, this.wrapS = e.wrapS, this.wrapT = e.wrapT, this.magFilter = e.magFilter, this.minFilter = e.minFilter, this.anisotropy = e.anisotropy, this.format = e.format, this.internalFormat = e.internalFormat, this.type = e.type, this.offset.copy(e.offset), this.repeat.copy(e.repeat), this.center.copy(e.center), this.rotation = e.rotation, this.matrixAutoUpdate = e.matrixAutoUpdate, this.matrix.copy(e.matrix), this.generateMipmaps = e.generateMipmaps, this.premultiplyAlpha = e.premultiplyAlpha, this.flipY = e.flipY, this.unpackAlignment = e.unpackAlignment, this.colorSpace = e.colorSpace, this.userData = JSON.parse(JSON.stringify(e.userData)), this.needsUpdate = !0, this; + } + toJSON(e) { + const t = e === void 0 || typeof e == "string"; + if (!t && e.textures[this.uuid] !== void 0) + return e.textures[this.uuid]; + const n = { + metadata: { + version: 4.6, + type: "Texture", + generator: "Texture.toJSON" + }, + uuid: this.uuid, + name: this.name, + image: this.source.toJSON(e).uuid, + mapping: this.mapping, + channel: this.channel, + repeat: [this.repeat.x, this.repeat.y], + offset: [this.offset.x, this.offset.y], + center: [this.center.x, this.center.y], + rotation: this.rotation, + wrap: [this.wrapS, this.wrapT], + format: this.format, + internalFormat: this.internalFormat, + type: this.type, + colorSpace: this.colorSpace, + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + flipY: this.flipY, + generateMipmaps: this.generateMipmaps, + premultiplyAlpha: this.premultiplyAlpha, + unpackAlignment: this.unpackAlignment + }; + return Object.keys(this.userData).length > 0 && (n.userData = this.userData), t || (e.textures[this.uuid] = n), n; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } + transformUv(e) { + if (this.mapping !== lo) return e; + if (e.applyMatrix3(this.matrix), e.x < 0 || e.x > 1) + switch (this.wrapS) { + case Qr: + e.x = e.x - Math.floor(e.x); + break; + case Nt: + e.x = e.x < 0 ? 0 : 1; + break; + case es: + Math.abs(Math.floor(e.x) % 2) === 1 ? e.x = Math.ceil(e.x) - e.x : e.x = e.x - Math.floor(e.x); + break; + } + if (e.y < 0 || e.y > 1) + switch (this.wrapT) { + case Qr: + e.y = e.y - Math.floor(e.y); + break; + case Nt: + e.y = e.y < 0 ? 0 : 1; + break; + case es: + Math.abs(Math.floor(e.y) % 2) === 1 ? e.y = Math.ceil(e.y) - e.y : e.y = e.y - Math.floor(e.y); + break; + } + return this.flipY && (e.y = 1 - e.y), e; + } + set needsUpdate(e) { + e === !0 && (this.version++, this.source.needsUpdate = !0); + } + get encoding() { + return mi("THREE.Texture: Property .encoding has been replaced by .colorSpace."), this.colorSpace === ht ? Tn : go; + } + set encoding(e) { + mi("THREE.Texture: Property .encoding has been replaced by .colorSpace."), this.colorSpace = e === Tn ? ht : Ct; + } +} +bt.DEFAULT_IMAGE = null; +bt.DEFAULT_MAPPING = lo; +bt.DEFAULT_ANISOTROPY = 1; +class $e { + constructor(e = 0, t = 0, n = 0, r = 1) { + $e.prototype.isVector4 = !0, this.x = e, this.y = t, this.z = n, this.w = r; + } + get width() { + return this.z; + } + set width(e) { + this.z = e; + } + get height() { + return this.w; + } + set height(e) { + this.w = e; + } + set(e, t, n, r) { + return this.x = e, this.y = t, this.z = n, this.w = r, this; + } + setScalar(e) { + return this.x = e, this.y = e, this.z = e, this.w = e, this; + } + setX(e) { + return this.x = e, this; + } + setY(e) { + return this.y = e, this; + } + setZ(e) { + return this.z = e, this; + } + setW(e) { + return this.w = e, this; + } + setComponent(e, t) { + switch (e) { + case 0: + this.x = t; + break; + case 1: + this.y = t; + break; + case 2: + this.z = t; + break; + case 3: + this.w = t; + break; + default: + throw new Error("index is out of range: " + e); + } + return this; + } + getComponent(e) { + switch (e) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + case 3: + return this.w; + default: + throw new Error("index is out of range: " + e); + } + } + clone() { + return new this.constructor(this.x, this.y, this.z, this.w); + } + copy(e) { + return this.x = e.x, this.y = e.y, this.z = e.z, this.w = e.w !== void 0 ? e.w : 1, this; + } + add(e) { + return this.x += e.x, this.y += e.y, this.z += e.z, this.w += e.w, this; + } + addScalar(e) { + return this.x += e, this.y += e, this.z += e, this.w += e, this; + } + addVectors(e, t) { + return this.x = e.x + t.x, this.y = e.y + t.y, this.z = e.z + t.z, this.w = e.w + t.w, this; + } + addScaledVector(e, t) { + return this.x += e.x * t, this.y += e.y * t, this.z += e.z * t, this.w += e.w * t, this; + } + sub(e) { + return this.x -= e.x, this.y -= e.y, this.z -= e.z, this.w -= e.w, this; + } + subScalar(e) { + return this.x -= e, this.y -= e, this.z -= e, this.w -= e, this; + } + subVectors(e, t) { + return this.x = e.x - t.x, this.y = e.y - t.y, this.z = e.z - t.z, this.w = e.w - t.w, this; + } + multiply(e) { + return this.x *= e.x, this.y *= e.y, this.z *= e.z, this.w *= e.w, this; + } + multiplyScalar(e) { + return this.x *= e, this.y *= e, this.z *= e, this.w *= e, this; + } + applyMatrix4(e) { + const t = this.x, n = this.y, r = this.z, s = this.w, o = e.elements; + return this.x = o[0] * t + o[4] * n + o[8] * r + o[12] * s, this.y = o[1] * t + o[5] * n + o[9] * r + o[13] * s, this.z = o[2] * t + o[6] * n + o[10] * r + o[14] * s, this.w = o[3] * t + o[7] * n + o[11] * r + o[15] * s, this; + } + divideScalar(e) { + return this.multiplyScalar(1 / e); + } + setAxisAngleFromQuaternion(e) { + this.w = 2 * Math.acos(e.w); + const t = Math.sqrt(1 - e.w * e.w); + return t < 1e-4 ? (this.x = 1, this.y = 0, this.z = 0) : (this.x = e.x / t, this.y = e.y / t, this.z = e.z / t), this; + } + setAxisAngleFromRotationMatrix(e) { + let t, n, r, s; + const l = e.elements, c = l[0], h = l[4], d = l[8], p = l[1], m = l[5], g = l[9], v = l[2], f = l[6], u = l[10]; + if (Math.abs(h - p) < 0.01 && Math.abs(d - v) < 0.01 && Math.abs(g - f) < 0.01) { + if (Math.abs(h + p) < 0.1 && Math.abs(d + v) < 0.1 && Math.abs(g + f) < 0.1 && Math.abs(c + m + u - 3) < 0.1) + return this.set(1, 0, 0, 0), this; + t = Math.PI; + const S = (c + 1) / 2, R = (m + 1) / 2, D = (u + 1) / 2, C = (h + p) / 4, A = (d + v) / 4, W = (g + f) / 4; + return S > R && S > D ? S < 0.01 ? (n = 0, r = 0.707106781, s = 0.707106781) : (n = Math.sqrt(S), r = C / n, s = A / n) : R > D ? R < 0.01 ? (n = 0.707106781, r = 0, s = 0.707106781) : (r = Math.sqrt(R), n = C / r, s = W / r) : D < 0.01 ? (n = 0.707106781, r = 0.707106781, s = 0) : (s = Math.sqrt(D), n = A / s, r = W / s), this.set(n, r, s, t), this; + } + let b = Math.sqrt((f - g) * (f - g) + (d - v) * (d - v) + (p - h) * (p - h)); + return Math.abs(b) < 1e-3 && (b = 1), this.x = (f - g) / b, this.y = (d - v) / b, this.z = (p - h) / b, this.w = Math.acos((c + m + u - 1) / 2), this; + } + min(e) { + return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this.z = Math.min(this.z, e.z), this.w = Math.min(this.w, e.w), this; + } + max(e) { + return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this.z = Math.max(this.z, e.z), this.w = Math.max(this.w, e.w), this; + } + clamp(e, t) { + return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this.z = Math.max(e.z, Math.min(t.z, this.z)), this.w = Math.max(e.w, Math.min(t.w, this.w)), this; + } + clampScalar(e, t) { + return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this.z = Math.max(e, Math.min(t, this.z)), this.w = Math.max(e, Math.min(t, this.w)), this; + } + clampLength(e, t) { + const n = this.length(); + return this.divideScalar(n || 1).multiplyScalar(Math.max(e, Math.min(t, n))); + } + floor() { + return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this.w = Math.floor(this.w), this; + } + ceil() { + return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this.w = Math.ceil(this.w), this; + } + round() { + return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this.w = Math.round(this.w), this; + } + roundToZero() { + return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this.z = Math.trunc(this.z), this.w = Math.trunc(this.w), this; + } + negate() { + return this.x = -this.x, this.y = -this.y, this.z = -this.z, this.w = -this.w, this; + } + dot(e) { + return this.x * e.x + this.y * e.y + this.z * e.z + this.w * e.w; + } + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + setLength(e) { + return this.normalize().multiplyScalar(e); + } + lerp(e, t) { + return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this.z += (e.z - this.z) * t, this.w += (e.w - this.w) * t, this; + } + lerpVectors(e, t, n) { + return this.x = e.x + (t.x - e.x) * n, this.y = e.y + (t.y - e.y) * n, this.z = e.z + (t.z - e.z) * n, this.w = e.w + (t.w - e.w) * n, this; + } + equals(e) { + return e.x === this.x && e.y === this.y && e.z === this.z && e.w === this.w; + } + fromArray(e, t = 0) { + return this.x = e[t], this.y = e[t + 1], this.z = e[t + 2], this.w = e[t + 3], this; + } + toArray(e = [], t = 0) { + return e[t] = this.x, e[t + 1] = this.y, e[t + 2] = this.z, e[t + 3] = this.w, e; + } + fromBufferAttribute(e, t) { + return this.x = e.getX(t), this.y = e.getY(t), this.z = e.getZ(t), this.w = e.getW(t), this; + } + random() { + return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this.w = Math.random(), this; + } + *[Symbol.iterator]() { + yield this.x, yield this.y, yield this.z, yield this.w; + } +} +class $l extends Rn { + constructor(e = 1, t = 1, n = {}) { + super(), this.isRenderTarget = !0, this.width = e, this.height = t, this.depth = 1, this.scissor = new $e(0, 0, e, t), this.scissorTest = !1, this.viewport = new $e(0, 0, e, t); + const r = { width: e, height: t, depth: 1 }; + n.encoding !== void 0 && (mi("THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace."), n.colorSpace = n.encoding === Tn ? ht : Ct), n = Object.assign({ + generateMipmaps: !1, + internalFormat: null, + minFilter: Rt, + depthBuffer: !0, + stencilBuffer: !1, + depthTexture: null, + samples: 0 + }, n), this.texture = new bt(r, n.mapping, n.wrapS, n.wrapT, n.magFilter, n.minFilter, n.format, n.type, n.anisotropy, n.colorSpace), this.texture.isRenderTargetTexture = !0, this.texture.flipY = !1, this.texture.generateMipmaps = n.generateMipmaps, this.texture.internalFormat = n.internalFormat, this.depthBuffer = n.depthBuffer, this.stencilBuffer = n.stencilBuffer, this.depthTexture = n.depthTexture, this.samples = n.samples; + } + setSize(e, t, n = 1) { + (this.width !== e || this.height !== t || this.depth !== n) && (this.width = e, this.height = t, this.depth = n, this.texture.image.width = e, this.texture.image.height = t, this.texture.image.depth = n, this.dispose()), this.viewport.set(0, 0, e, t), this.scissor.set(0, 0, e, t); + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + this.width = e.width, this.height = e.height, this.depth = e.depth, this.scissor.copy(e.scissor), this.scissorTest = e.scissorTest, this.viewport.copy(e.viewport), this.texture = e.texture.clone(), this.texture.isRenderTargetTexture = !0; + const t = Object.assign({}, e.texture.image); + return this.texture.source = new Eo(t), this.depthBuffer = e.depthBuffer, this.stencilBuffer = e.stencilBuffer, e.depthTexture !== null && (this.depthTexture = e.depthTexture.clone()), this.samples = e.samples, this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +} +class bn extends $l { + constructor(e = 1, t = 1, n = {}) { + super(e, t, n), this.isWebGLRenderTarget = !0; + } +} +class yo extends bt { + constructor(e = null, t = 1, n = 1, r = 1) { + super(null), this.isDataArrayTexture = !0, this.image = { data: e, width: t, height: n, depth: r }, this.magFilter = gt, this.minFilter = gt, this.wrapR = Nt, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1; + } +} +class Jl extends bt { + constructor(e = null, t = 1, n = 1, r = 1) { + super(null), this.isData3DTexture = !0, this.image = { data: e, width: t, height: n, depth: r }, this.magFilter = gt, this.minFilter = gt, this.wrapR = Nt, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1; + } +} +class An { + constructor(e = 0, t = 0, n = 0, r = 1) { + this.isQuaternion = !0, this._x = e, this._y = t, this._z = n, this._w = r; + } + static slerpFlat(e, t, n, r, s, o, a) { + let l = n[r + 0], c = n[r + 1], h = n[r + 2], d = n[r + 3]; + const p = s[o + 0], m = s[o + 1], g = s[o + 2], v = s[o + 3]; + if (a === 0) { + e[t + 0] = l, e[t + 1] = c, e[t + 2] = h, e[t + 3] = d; + return; + } + if (a === 1) { + e[t + 0] = p, e[t + 1] = m, e[t + 2] = g, e[t + 3] = v; + return; + } + if (d !== v || l !== p || c !== m || h !== g) { + let f = 1 - a; + const u = l * p + c * m + h * g + d * v, b = u >= 0 ? 1 : -1, S = 1 - u * u; + if (S > Number.EPSILON) { + const D = Math.sqrt(S), C = Math.atan2(D, u * b); + f = Math.sin(f * C) / D, a = Math.sin(a * C) / D; + } + const R = a * b; + if (l = l * f + p * R, c = c * f + m * R, h = h * f + g * R, d = d * f + v * R, f === 1 - a) { + const D = 1 / Math.sqrt(l * l + c * c + h * h + d * d); + l *= D, c *= D, h *= D, d *= D; + } + } + e[t] = l, e[t + 1] = c, e[t + 2] = h, e[t + 3] = d; + } + static multiplyQuaternionsFlat(e, t, n, r, s, o) { + const a = n[r], l = n[r + 1], c = n[r + 2], h = n[r + 3], d = s[o], p = s[o + 1], m = s[o + 2], g = s[o + 3]; + return e[t] = a * g + h * d + l * m - c * p, e[t + 1] = l * g + h * p + c * d - a * m, e[t + 2] = c * g + h * m + a * p - l * d, e[t + 3] = h * g - a * d - l * p - c * m, e; + } + get x() { + return this._x; + } + set x(e) { + this._x = e, this._onChangeCallback(); + } + get y() { + return this._y; + } + set y(e) { + this._y = e, this._onChangeCallback(); + } + get z() { + return this._z; + } + set z(e) { + this._z = e, this._onChangeCallback(); + } + get w() { + return this._w; + } + set w(e) { + this._w = e, this._onChangeCallback(); + } + set(e, t, n, r) { + return this._x = e, this._y = t, this._z = n, this._w = r, this._onChangeCallback(), this; + } + clone() { + return new this.constructor(this._x, this._y, this._z, this._w); + } + copy(e) { + return this._x = e.x, this._y = e.y, this._z = e.z, this._w = e.w, this._onChangeCallback(), this; + } + setFromEuler(e, t = !0) { + const n = e._x, r = e._y, s = e._z, o = e._order, a = Math.cos, l = Math.sin, c = a(n / 2), h = a(r / 2), d = a(s / 2), p = l(n / 2), m = l(r / 2), g = l(s / 2); + switch (o) { + case "XYZ": + this._x = p * h * d + c * m * g, this._y = c * m * d - p * h * g, this._z = c * h * g + p * m * d, this._w = c * h * d - p * m * g; + break; + case "YXZ": + this._x = p * h * d + c * m * g, this._y = c * m * d - p * h * g, this._z = c * h * g - p * m * d, this._w = c * h * d + p * m * g; + break; + case "ZXY": + this._x = p * h * d - c * m * g, this._y = c * m * d + p * h * g, this._z = c * h * g + p * m * d, this._w = c * h * d - p * m * g; + break; + case "ZYX": + this._x = p * h * d - c * m * g, this._y = c * m * d + p * h * g, this._z = c * h * g - p * m * d, this._w = c * h * d + p * m * g; + break; + case "YZX": + this._x = p * h * d + c * m * g, this._y = c * m * d + p * h * g, this._z = c * h * g - p * m * d, this._w = c * h * d - p * m * g; + break; + case "XZY": + this._x = p * h * d - c * m * g, this._y = c * m * d - p * h * g, this._z = c * h * g + p * m * d, this._w = c * h * d + p * m * g; + break; + default: + console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: " + o); + } + return t === !0 && this._onChangeCallback(), this; + } + setFromAxisAngle(e, t) { + const n = t / 2, r = Math.sin(n); + return this._x = e.x * r, this._y = e.y * r, this._z = e.z * r, this._w = Math.cos(n), this._onChangeCallback(), this; + } + setFromRotationMatrix(e) { + const t = e.elements, n = t[0], r = t[4], s = t[8], o = t[1], a = t[5], l = t[9], c = t[2], h = t[6], d = t[10], p = n + a + d; + if (p > 0) { + const m = 0.5 / Math.sqrt(p + 1); + this._w = 0.25 / m, this._x = (h - l) * m, this._y = (s - c) * m, this._z = (o - r) * m; + } else if (n > a && n > d) { + const m = 2 * Math.sqrt(1 + n - a - d); + this._w = (h - l) / m, this._x = 0.25 * m, this._y = (r + o) / m, this._z = (s + c) / m; + } else if (a > d) { + const m = 2 * Math.sqrt(1 + a - n - d); + this._w = (s - c) / m, this._x = (r + o) / m, this._y = 0.25 * m, this._z = (l + h) / m; + } else { + const m = 2 * Math.sqrt(1 + d - n - a); + this._w = (o - r) / m, this._x = (s + c) / m, this._y = (l + h) / m, this._z = 0.25 * m; + } + return this._onChangeCallback(), this; + } + setFromUnitVectors(e, t) { + let n = e.dot(t) + 1; + return n < Number.EPSILON ? (n = 0, Math.abs(e.x) > Math.abs(e.z) ? (this._x = -e.y, this._y = e.x, this._z = 0, this._w = n) : (this._x = 0, this._y = -e.z, this._z = e.y, this._w = n)) : (this._x = e.y * t.z - e.z * t.y, this._y = e.z * t.x - e.x * t.z, this._z = e.x * t.y - e.y * t.x, this._w = n), this.normalize(); + } + angleTo(e) { + return 2 * Math.acos(Math.abs(vt(this.dot(e), -1, 1))); + } + rotateTowards(e, t) { + const n = this.angleTo(e); + if (n === 0) return this; + const r = Math.min(1, t / n); + return this.slerp(e, r), this; + } + identity() { + return this.set(0, 0, 0, 1); + } + invert() { + return this.conjugate(); + } + conjugate() { + return this._x *= -1, this._y *= -1, this._z *= -1, this._onChangeCallback(), this; + } + dot(e) { + return this._x * e._x + this._y * e._y + this._z * e._z + this._w * e._w; + } + lengthSq() { + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + } + length() { + return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w); + } + normalize() { + let e = this.length(); + return e === 0 ? (this._x = 0, this._y = 0, this._z = 0, this._w = 1) : (e = 1 / e, this._x = this._x * e, this._y = this._y * e, this._z = this._z * e, this._w = this._w * e), this._onChangeCallback(), this; + } + multiply(e) { + return this.multiplyQuaternions(this, e); + } + premultiply(e) { + return this.multiplyQuaternions(e, this); + } + multiplyQuaternions(e, t) { + const n = e._x, r = e._y, s = e._z, o = e._w, a = t._x, l = t._y, c = t._z, h = t._w; + return this._x = n * h + o * a + r * c - s * l, this._y = r * h + o * l + s * a - n * c, this._z = s * h + o * c + n * l - r * a, this._w = o * h - n * a - r * l - s * c, this._onChangeCallback(), this; + } + slerp(e, t) { + if (t === 0) return this; + if (t === 1) return this.copy(e); + const n = this._x, r = this._y, s = this._z, o = this._w; + let a = o * e._w + n * e._x + r * e._y + s * e._z; + if (a < 0 ? (this._w = -e._w, this._x = -e._x, this._y = -e._y, this._z = -e._z, a = -a) : this.copy(e), a >= 1) + return this._w = o, this._x = n, this._y = r, this._z = s, this; + const l = 1 - a * a; + if (l <= Number.EPSILON) { + const m = 1 - t; + return this._w = m * o + t * this._w, this._x = m * n + t * this._x, this._y = m * r + t * this._y, this._z = m * s + t * this._z, this.normalize(), this; + } + const c = Math.sqrt(l), h = Math.atan2(c, a), d = Math.sin((1 - t) * h) / c, p = Math.sin(t * h) / c; + return this._w = o * d + this._w * p, this._x = n * d + this._x * p, this._y = r * d + this._y * p, this._z = s * d + this._z * p, this._onChangeCallback(), this; + } + slerpQuaternions(e, t, n) { + return this.copy(e).slerp(t, n); + } + random() { + const e = Math.random(), t = Math.sqrt(1 - e), n = Math.sqrt(e), r = 2 * Math.PI * Math.random(), s = 2 * Math.PI * Math.random(); + return this.set( + t * Math.cos(r), + n * Math.sin(s), + n * Math.cos(s), + t * Math.sin(r) + ); + } + equals(e) { + return e._x === this._x && e._y === this._y && e._z === this._z && e._w === this._w; + } + fromArray(e, t = 0) { + return this._x = e[t], this._y = e[t + 1], this._z = e[t + 2], this._w = e[t + 3], this._onChangeCallback(), this; + } + toArray(e = [], t = 0) { + return e[t] = this._x, e[t + 1] = this._y, e[t + 2] = this._z, e[t + 3] = this._w, e; + } + fromBufferAttribute(e, t) { + return this._x = e.getX(t), this._y = e.getY(t), this._z = e.getZ(t), this._w = e.getW(t), this._onChangeCallback(), this; + } + toJSON() { + return this.toArray(); + } + _onChange(e) { + return this._onChangeCallback = e, this; + } + _onChangeCallback() { + } + *[Symbol.iterator]() { + yield this._x, yield this._y, yield this._z, yield this._w; + } +} +class P { + constructor(e = 0, t = 0, n = 0) { + P.prototype.isVector3 = !0, this.x = e, this.y = t, this.z = n; + } + set(e, t, n) { + return n === void 0 && (n = this.z), this.x = e, this.y = t, this.z = n, this; + } + setScalar(e) { + return this.x = e, this.y = e, this.z = e, this; + } + setX(e) { + return this.x = e, this; + } + setY(e) { + return this.y = e, this; + } + setZ(e) { + return this.z = e, this; + } + setComponent(e, t) { + switch (e) { + case 0: + this.x = t; + break; + case 1: + this.y = t; + break; + case 2: + this.z = t; + break; + default: + throw new Error("index is out of range: " + e); + } + return this; + } + getComponent(e) { + switch (e) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + default: + throw new Error("index is out of range: " + e); + } + } + clone() { + return new this.constructor(this.x, this.y, this.z); + } + copy(e) { + return this.x = e.x, this.y = e.y, this.z = e.z, this; + } + add(e) { + return this.x += e.x, this.y += e.y, this.z += e.z, this; + } + addScalar(e) { + return this.x += e, this.y += e, this.z += e, this; + } + addVectors(e, t) { + return this.x = e.x + t.x, this.y = e.y + t.y, this.z = e.z + t.z, this; + } + addScaledVector(e, t) { + return this.x += e.x * t, this.y += e.y * t, this.z += e.z * t, this; + } + sub(e) { + return this.x -= e.x, this.y -= e.y, this.z -= e.z, this; + } + subScalar(e) { + return this.x -= e, this.y -= e, this.z -= e, this; + } + subVectors(e, t) { + return this.x = e.x - t.x, this.y = e.y - t.y, this.z = e.z - t.z, this; + } + multiply(e) { + return this.x *= e.x, this.y *= e.y, this.z *= e.z, this; + } + multiplyScalar(e) { + return this.x *= e, this.y *= e, this.z *= e, this; + } + multiplyVectors(e, t) { + return this.x = e.x * t.x, this.y = e.y * t.y, this.z = e.z * t.z, this; + } + applyEuler(e) { + return this.applyQuaternion(aa.setFromEuler(e)); + } + applyAxisAngle(e, t) { + return this.applyQuaternion(aa.setFromAxisAngle(e, t)); + } + applyMatrix3(e) { + const t = this.x, n = this.y, r = this.z, s = e.elements; + return this.x = s[0] * t + s[3] * n + s[6] * r, this.y = s[1] * t + s[4] * n + s[7] * r, this.z = s[2] * t + s[5] * n + s[8] * r, this; + } + applyNormalMatrix(e) { + return this.applyMatrix3(e).normalize(); + } + applyMatrix4(e) { + const t = this.x, n = this.y, r = this.z, s = e.elements, o = 1 / (s[3] * t + s[7] * n + s[11] * r + s[15]); + return this.x = (s[0] * t + s[4] * n + s[8] * r + s[12]) * o, this.y = (s[1] * t + s[5] * n + s[9] * r + s[13]) * o, this.z = (s[2] * t + s[6] * n + s[10] * r + s[14]) * o, this; + } + applyQuaternion(e) { + const t = this.x, n = this.y, r = this.z, s = e.x, o = e.y, a = e.z, l = e.w, c = 2 * (o * r - a * n), h = 2 * (a * t - s * r), d = 2 * (s * n - o * t); + return this.x = t + l * c + o * d - a * h, this.y = n + l * h + a * c - s * d, this.z = r + l * d + s * h - o * c, this; + } + project(e) { + return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix); + } + unproject(e) { + return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld); + } + transformDirection(e) { + const t = this.x, n = this.y, r = this.z, s = e.elements; + return this.x = s[0] * t + s[4] * n + s[8] * r, this.y = s[1] * t + s[5] * n + s[9] * r, this.z = s[2] * t + s[6] * n + s[10] * r, this.normalize(); + } + divide(e) { + return this.x /= e.x, this.y /= e.y, this.z /= e.z, this; + } + divideScalar(e) { + return this.multiplyScalar(1 / e); + } + min(e) { + return this.x = Math.min(this.x, e.x), this.y = Math.min(this.y, e.y), this.z = Math.min(this.z, e.z), this; + } + max(e) { + return this.x = Math.max(this.x, e.x), this.y = Math.max(this.y, e.y), this.z = Math.max(this.z, e.z), this; + } + clamp(e, t) { + return this.x = Math.max(e.x, Math.min(t.x, this.x)), this.y = Math.max(e.y, Math.min(t.y, this.y)), this.z = Math.max(e.z, Math.min(t.z, this.z)), this; + } + clampScalar(e, t) { + return this.x = Math.max(e, Math.min(t, this.x)), this.y = Math.max(e, Math.min(t, this.y)), this.z = Math.max(e, Math.min(t, this.z)), this; + } + clampLength(e, t) { + const n = this.length(); + return this.divideScalar(n || 1).multiplyScalar(Math.max(e, Math.min(t, n))); + } + floor() { + return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this; + } + ceil() { + return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this; + } + round() { + return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this; + } + roundToZero() { + return this.x = Math.trunc(this.x), this.y = Math.trunc(this.y), this.z = Math.trunc(this.z), this; + } + negate() { + return this.x = -this.x, this.y = -this.y, this.z = -this.z, this; + } + dot(e) { + return this.x * e.x + this.y * e.y + this.z * e.z; + } + // TODO lengthSquared? + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z); + } + normalize() { + return this.divideScalar(this.length() || 1); + } + setLength(e) { + return this.normalize().multiplyScalar(e); + } + lerp(e, t) { + return this.x += (e.x - this.x) * t, this.y += (e.y - this.y) * t, this.z += (e.z - this.z) * t, this; + } + lerpVectors(e, t, n) { + return this.x = e.x + (t.x - e.x) * n, this.y = e.y + (t.y - e.y) * n, this.z = e.z + (t.z - e.z) * n, this; + } + cross(e) { + return this.crossVectors(this, e); + } + crossVectors(e, t) { + const n = e.x, r = e.y, s = e.z, o = t.x, a = t.y, l = t.z; + return this.x = r * l - s * a, this.y = s * o - n * l, this.z = n * a - r * o, this; + } + projectOnVector(e) { + const t = e.lengthSq(); + if (t === 0) return this.set(0, 0, 0); + const n = e.dot(this) / t; + return this.copy(e).multiplyScalar(n); + } + projectOnPlane(e) { + return Tr.copy(this).projectOnVector(e), this.sub(Tr); + } + reflect(e) { + return this.sub(Tr.copy(e).multiplyScalar(2 * this.dot(e))); + } + angleTo(e) { + const t = Math.sqrt(this.lengthSq() * e.lengthSq()); + if (t === 0) return Math.PI / 2; + const n = this.dot(e) / t; + return Math.acos(vt(n, -1, 1)); + } + distanceTo(e) { + return Math.sqrt(this.distanceToSquared(e)); + } + distanceToSquared(e) { + const t = this.x - e.x, n = this.y - e.y, r = this.z - e.z; + return t * t + n * n + r * r; + } + manhattanDistanceTo(e) { + return Math.abs(this.x - e.x) + Math.abs(this.y - e.y) + Math.abs(this.z - e.z); + } + setFromSpherical(e) { + return this.setFromSphericalCoords(e.radius, e.phi, e.theta); + } + setFromSphericalCoords(e, t, n) { + const r = Math.sin(t) * e; + return this.x = r * Math.sin(n), this.y = Math.cos(t) * e, this.z = r * Math.cos(n), this; + } + setFromCylindrical(e) { + return this.setFromCylindricalCoords(e.radius, e.theta, e.y); + } + setFromCylindricalCoords(e, t, n) { + return this.x = e * Math.sin(t), this.y = n, this.z = e * Math.cos(t), this; + } + setFromMatrixPosition(e) { + const t = e.elements; + return this.x = t[12], this.y = t[13], this.z = t[14], this; + } + setFromMatrixScale(e) { + const t = this.setFromMatrixColumn(e, 0).length(), n = this.setFromMatrixColumn(e, 1).length(), r = this.setFromMatrixColumn(e, 2).length(); + return this.x = t, this.y = n, this.z = r, this; + } + setFromMatrixColumn(e, t) { + return this.fromArray(e.elements, t * 4); + } + setFromMatrix3Column(e, t) { + return this.fromArray(e.elements, t * 3); + } + setFromEuler(e) { + return this.x = e._x, this.y = e._y, this.z = e._z, this; + } + setFromColor(e) { + return this.x = e.r, this.y = e.g, this.z = e.b, this; + } + equals(e) { + return e.x === this.x && e.y === this.y && e.z === this.z; + } + fromArray(e, t = 0) { + return this.x = e[t], this.y = e[t + 1], this.z = e[t + 2], this; + } + toArray(e = [], t = 0) { + return e[t] = this.x, e[t + 1] = this.y, e[t + 2] = this.z, e; + } + fromBufferAttribute(e, t) { + return this.x = e.getX(t), this.y = e.getY(t), this.z = e.getZ(t), this; + } + random() { + return this.x = Math.random(), this.y = Math.random(), this.z = Math.random(), this; + } + randomDirection() { + const e = (Math.random() - 0.5) * 2, t = Math.random() * Math.PI * 2, n = Math.sqrt(1 - e ** 2); + return this.x = n * Math.cos(t), this.y = n * Math.sin(t), this.z = e, this; + } + *[Symbol.iterator]() { + yield this.x, yield this.y, yield this.z; + } +} +const Tr = /* @__PURE__ */ new P(), aa = /* @__PURE__ */ new An(); +class Cn { + constructor(e = new P(1 / 0, 1 / 0, 1 / 0), t = new P(-1 / 0, -1 / 0, -1 / 0)) { + this.isBox3 = !0, this.min = e, this.max = t; + } + set(e, t) { + return this.min.copy(e), this.max.copy(t), this; + } + setFromArray(e) { + this.makeEmpty(); + for (let t = 0, n = e.length; t < n; t += 3) + this.expandByPoint(Lt.fromArray(e, t)); + return this; + } + setFromBufferAttribute(e) { + this.makeEmpty(); + for (let t = 0, n = e.count; t < n; t++) + this.expandByPoint(Lt.fromBufferAttribute(e, t)); + return this; + } + setFromPoints(e) { + this.makeEmpty(); + for (let t = 0, n = e.length; t < n; t++) + this.expandByPoint(e[t]); + return this; + } + setFromCenterAndSize(e, t) { + const n = Lt.copy(t).multiplyScalar(0.5); + return this.min.copy(e).sub(n), this.max.copy(e).add(n), this; + } + setFromObject(e, t = !1) { + return this.makeEmpty(), this.expandByObject(e, t); + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + return this.min.copy(e.min), this.max.copy(e.max), this; + } + makeEmpty() { + return this.min.x = this.min.y = this.min.z = 1 / 0, this.max.x = this.max.y = this.max.z = -1 / 0, this; + } + isEmpty() { + return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z; + } + getCenter(e) { + return this.isEmpty() ? e.set(0, 0, 0) : e.addVectors(this.min, this.max).multiplyScalar(0.5); + } + getSize(e) { + return this.isEmpty() ? e.set(0, 0, 0) : e.subVectors(this.max, this.min); + } + expandByPoint(e) { + return this.min.min(e), this.max.max(e), this; + } + expandByVector(e) { + return this.min.sub(e), this.max.add(e), this; + } + expandByScalar(e) { + return this.min.addScalar(-e), this.max.addScalar(e), this; + } + expandByObject(e, t = !1) { + e.updateWorldMatrix(!1, !1); + const n = e.geometry; + if (n !== void 0) { + const s = n.getAttribute("position"); + if (t === !0 && s !== void 0 && e.isInstancedMesh !== !0) + for (let o = 0, a = s.count; o < a; o++) + e.isMesh === !0 ? e.getVertexPosition(o, Lt) : Lt.fromBufferAttribute(s, o), Lt.applyMatrix4(e.matrixWorld), this.expandByPoint(Lt); + else + e.boundingBox !== void 0 ? (e.boundingBox === null && e.computeBoundingBox(), bi.copy(e.boundingBox)) : (n.boundingBox === null && n.computeBoundingBox(), bi.copy(n.boundingBox)), bi.applyMatrix4(e.matrixWorld), this.union(bi); + } + const r = e.children; + for (let s = 0, o = r.length; s < o; s++) + this.expandByObject(r[s], t); + return this; + } + containsPoint(e) { + return !(e.x < this.min.x || e.x > this.max.x || e.y < this.min.y || e.y > this.max.y || e.z < this.min.z || e.z > this.max.z); + } + containsBox(e) { + return this.min.x <= e.min.x && e.max.x <= this.max.x && this.min.y <= e.min.y && e.max.y <= this.max.y && this.min.z <= e.min.z && e.max.z <= this.max.z; + } + getParameter(e, t) { + return t.set( + (e.x - this.min.x) / (this.max.x - this.min.x), + (e.y - this.min.y) / (this.max.y - this.min.y), + (e.z - this.min.z) / (this.max.z - this.min.z) + ); + } + intersectsBox(e) { + return !(e.max.x < this.min.x || e.min.x > this.max.x || e.max.y < this.min.y || e.min.y > this.max.y || e.max.z < this.min.z || e.min.z > this.max.z); + } + intersectsSphere(e) { + return this.clampPoint(e.center, Lt), Lt.distanceToSquared(e.center) <= e.radius * e.radius; + } + intersectsPlane(e) { + let t, n; + return e.normal.x > 0 ? (t = e.normal.x * this.min.x, n = e.normal.x * this.max.x) : (t = e.normal.x * this.max.x, n = e.normal.x * this.min.x), e.normal.y > 0 ? (t += e.normal.y * this.min.y, n += e.normal.y * this.max.y) : (t += e.normal.y * this.max.y, n += e.normal.y * this.min.y), e.normal.z > 0 ? (t += e.normal.z * this.min.z, n += e.normal.z * this.max.z) : (t += e.normal.z * this.max.z, n += e.normal.z * this.min.z), t <= -e.constant && n >= -e.constant; + } + intersectsTriangle(e) { + if (this.isEmpty()) + return !1; + this.getCenter(li), Ai.subVectors(this.max, li), In.subVectors(e.a, li), Nn.subVectors(e.b, li), Fn.subVectors(e.c, li), Jt.subVectors(Nn, In), Qt.subVectors(Fn, Nn), mn.subVectors(In, Fn); + let t = [ + 0, + -Jt.z, + Jt.y, + 0, + -Qt.z, + Qt.y, + 0, + -mn.z, + mn.y, + Jt.z, + 0, + -Jt.x, + Qt.z, + 0, + -Qt.x, + mn.z, + 0, + -mn.x, + -Jt.y, + Jt.x, + 0, + -Qt.y, + Qt.x, + 0, + -mn.y, + mn.x, + 0 + ]; + return !br(t, In, Nn, Fn, Ai) || (t = [1, 0, 0, 0, 1, 0, 0, 0, 1], !br(t, In, Nn, Fn, Ai)) ? !1 : (wi.crossVectors(Jt, Qt), t = [wi.x, wi.y, wi.z], br(t, In, Nn, Fn, Ai)); + } + clampPoint(e, t) { + return t.copy(e).clamp(this.min, this.max); + } + distanceToPoint(e) { + return this.clampPoint(e, Lt).distanceTo(e); + } + getBoundingSphere(e) { + return this.isEmpty() ? e.makeEmpty() : (this.getCenter(e.center), e.radius = this.getSize(Lt).length() * 0.5), e; + } + intersect(e) { + return this.min.max(e.min), this.max.min(e.max), this.isEmpty() && this.makeEmpty(), this; + } + union(e) { + return this.min.min(e.min), this.max.max(e.max), this; + } + applyMatrix4(e) { + return this.isEmpty() ? this : (kt[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(e), kt[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(e), kt[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(e), kt[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(e), kt[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(e), kt[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(e), kt[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(e), kt[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(e), this.setFromPoints(kt), this); + } + translate(e) { + return this.min.add(e), this.max.add(e), this; + } + equals(e) { + return e.min.equals(this.min) && e.max.equals(this.max); + } +} +const kt = [ + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P(), + /* @__PURE__ */ new P() +], Lt = /* @__PURE__ */ new P(), bi = /* @__PURE__ */ new Cn(), In = /* @__PURE__ */ new P(), Nn = /* @__PURE__ */ new P(), Fn = /* @__PURE__ */ new P(), Jt = /* @__PURE__ */ new P(), Qt = /* @__PURE__ */ new P(), mn = /* @__PURE__ */ new P(), li = /* @__PURE__ */ new P(), Ai = /* @__PURE__ */ new P(), wi = /* @__PURE__ */ new P(), _n = /* @__PURE__ */ new P(); +function br(i, e, t, n, r) { + for (let s = 0, o = i.length - 3; s <= o; s += 3) { + _n.fromArray(i, s); + const a = r.x * Math.abs(_n.x) + r.y * Math.abs(_n.y) + r.z * Math.abs(_n.z), l = e.dot(_n), c = t.dot(_n), h = n.dot(_n); + if (Math.max(-Math.max(l, c, h), Math.min(l, c, h)) > a) + return !1; + } + return !0; +} +const Ql = /* @__PURE__ */ new Cn(), ci = /* @__PURE__ */ new P(), Ar = /* @__PURE__ */ new P(); +class xi { + constructor(e = new P(), t = -1) { + this.isSphere = !0, this.center = e, this.radius = t; + } + set(e, t) { + return this.center.copy(e), this.radius = t, this; + } + setFromPoints(e, t) { + const n = this.center; + t !== void 0 ? n.copy(t) : Ql.setFromPoints(e).getCenter(n); + let r = 0; + for (let s = 0, o = e.length; s < o; s++) + r = Math.max(r, n.distanceToSquared(e[s])); + return this.radius = Math.sqrt(r), this; + } + copy(e) { + return this.center.copy(e.center), this.radius = e.radius, this; + } + isEmpty() { + return this.radius < 0; + } + makeEmpty() { + return this.center.set(0, 0, 0), this.radius = -1, this; + } + containsPoint(e) { + return e.distanceToSquared(this.center) <= this.radius * this.radius; + } + distanceToPoint(e) { + return e.distanceTo(this.center) - this.radius; + } + intersectsSphere(e) { + const t = this.radius + e.radius; + return e.center.distanceToSquared(this.center) <= t * t; + } + intersectsBox(e) { + return e.intersectsSphere(this); + } + intersectsPlane(e) { + return Math.abs(e.distanceToPoint(this.center)) <= this.radius; + } + clampPoint(e, t) { + const n = this.center.distanceToSquared(e); + return t.copy(e), n > this.radius * this.radius && (t.sub(this.center).normalize(), t.multiplyScalar(this.radius).add(this.center)), t; + } + getBoundingBox(e) { + return this.isEmpty() ? (e.makeEmpty(), e) : (e.set(this.center, this.center), e.expandByScalar(this.radius), e); + } + applyMatrix4(e) { + return this.center.applyMatrix4(e), this.radius = this.radius * e.getMaxScaleOnAxis(), this; + } + translate(e) { + return this.center.add(e), this; + } + expandByPoint(e) { + if (this.isEmpty()) + return this.center.copy(e), this.radius = 0, this; + ci.subVectors(e, this.center); + const t = ci.lengthSq(); + if (t > this.radius * this.radius) { + const n = Math.sqrt(t), r = (n - this.radius) * 0.5; + this.center.addScaledVector(ci, r / n), this.radius += r; + } + return this; + } + union(e) { + return e.isEmpty() ? this : this.isEmpty() ? (this.copy(e), this) : (this.center.equals(e.center) === !0 ? this.radius = Math.max(this.radius, e.radius) : (Ar.subVectors(e.center, this.center).setLength(e.radius), this.expandByPoint(ci.copy(e.center).add(Ar)), this.expandByPoint(ci.copy(e.center).sub(Ar))), this); + } + equals(e) { + return e.center.equals(this.center) && e.radius === this.radius; + } + clone() { + return new this.constructor().copy(this); + } +} +const Wt = /* @__PURE__ */ new P(), wr = /* @__PURE__ */ new P(), Ri = /* @__PURE__ */ new P(), en = /* @__PURE__ */ new P(), Rr = /* @__PURE__ */ new P(), Ci = /* @__PURE__ */ new P(), Cr = /* @__PURE__ */ new P(); +class To { + constructor(e = new P(), t = new P(0, 0, -1)) { + this.origin = e, this.direction = t; + } + set(e, t) { + return this.origin.copy(e), this.direction.copy(t), this; + } + copy(e) { + return this.origin.copy(e.origin), this.direction.copy(e.direction), this; + } + at(e, t) { + return t.copy(this.origin).addScaledVector(this.direction, e); + } + lookAt(e) { + return this.direction.copy(e).sub(this.origin).normalize(), this; + } + recast(e) { + return this.origin.copy(this.at(e, Wt)), this; + } + closestPointToPoint(e, t) { + t.subVectors(e, this.origin); + const n = t.dot(this.direction); + return n < 0 ? t.copy(this.origin) : t.copy(this.origin).addScaledVector(this.direction, n); + } + distanceToPoint(e) { + return Math.sqrt(this.distanceSqToPoint(e)); + } + distanceSqToPoint(e) { + const t = Wt.subVectors(e, this.origin).dot(this.direction); + return t < 0 ? this.origin.distanceToSquared(e) : (Wt.copy(this.origin).addScaledVector(this.direction, t), Wt.distanceToSquared(e)); + } + distanceSqToSegment(e, t, n, r) { + wr.copy(e).add(t).multiplyScalar(0.5), Ri.copy(t).sub(e).normalize(), en.copy(this.origin).sub(wr); + const s = e.distanceTo(t) * 0.5, o = -this.direction.dot(Ri), a = en.dot(this.direction), l = -en.dot(Ri), c = en.lengthSq(), h = Math.abs(1 - o * o); + let d, p, m, g; + if (h > 0) + if (d = o * l - a, p = o * a - l, g = s * h, d >= 0) + if (p >= -g) + if (p <= g) { + const v = 1 / h; + d *= v, p *= v, m = d * (d + o * p + 2 * a) + p * (o * d + p + 2 * l) + c; + } else + p = s, d = Math.max(0, -(o * p + a)), m = -d * d + p * (p + 2 * l) + c; + else + p = -s, d = Math.max(0, -(o * p + a)), m = -d * d + p * (p + 2 * l) + c; + else + p <= -g ? (d = Math.max(0, -(-o * s + a)), p = d > 0 ? -s : Math.min(Math.max(-s, -l), s), m = -d * d + p * (p + 2 * l) + c) : p <= g ? (d = 0, p = Math.min(Math.max(-s, -l), s), m = p * (p + 2 * l) + c) : (d = Math.max(0, -(o * s + a)), p = d > 0 ? s : Math.min(Math.max(-s, -l), s), m = -d * d + p * (p + 2 * l) + c); + else + p = o > 0 ? -s : s, d = Math.max(0, -(o * p + a)), m = -d * d + p * (p + 2 * l) + c; + return n && n.copy(this.origin).addScaledVector(this.direction, d), r && r.copy(wr).addScaledVector(Ri, p), m; + } + intersectSphere(e, t) { + Wt.subVectors(e.center, this.origin); + const n = Wt.dot(this.direction), r = Wt.dot(Wt) - n * n, s = e.radius * e.radius; + if (r > s) return null; + const o = Math.sqrt(s - r), a = n - o, l = n + o; + return l < 0 ? null : a < 0 ? this.at(l, t) : this.at(a, t); + } + intersectsSphere(e) { + return this.distanceSqToPoint(e.center) <= e.radius * e.radius; + } + distanceToPlane(e) { + const t = e.normal.dot(this.direction); + if (t === 0) + return e.distanceToPoint(this.origin) === 0 ? 0 : null; + const n = -(this.origin.dot(e.normal) + e.constant) / t; + return n >= 0 ? n : null; + } + intersectPlane(e, t) { + const n = this.distanceToPlane(e); + return n === null ? null : this.at(n, t); + } + intersectsPlane(e) { + const t = e.distanceToPoint(this.origin); + return t === 0 || e.normal.dot(this.direction) * t < 0; + } + intersectBox(e, t) { + let n, r, s, o, a, l; + const c = 1 / this.direction.x, h = 1 / this.direction.y, d = 1 / this.direction.z, p = this.origin; + return c >= 0 ? (n = (e.min.x - p.x) * c, r = (e.max.x - p.x) * c) : (n = (e.max.x - p.x) * c, r = (e.min.x - p.x) * c), h >= 0 ? (s = (e.min.y - p.y) * h, o = (e.max.y - p.y) * h) : (s = (e.max.y - p.y) * h, o = (e.min.y - p.y) * h), n > o || s > r || ((s > n || isNaN(n)) && (n = s), (o < r || isNaN(r)) && (r = o), d >= 0 ? (a = (e.min.z - p.z) * d, l = (e.max.z - p.z) * d) : (a = (e.max.z - p.z) * d, l = (e.min.z - p.z) * d), n > l || a > r) || ((a > n || n !== n) && (n = a), (l < r || r !== r) && (r = l), r < 0) ? null : this.at(n >= 0 ? n : r, t); + } + intersectsBox(e) { + return this.intersectBox(e, Wt) !== null; + } + intersectTriangle(e, t, n, r, s) { + Rr.subVectors(t, e), Ci.subVectors(n, e), Cr.crossVectors(Rr, Ci); + let o = this.direction.dot(Cr), a; + if (o > 0) { + if (r) return null; + a = 1; + } else if (o < 0) + a = -1, o = -o; + else + return null; + en.subVectors(this.origin, e); + const l = a * this.direction.dot(Ci.crossVectors(en, Ci)); + if (l < 0) + return null; + const c = a * this.direction.dot(Rr.cross(en)); + if (c < 0 || l + c > o) + return null; + const h = -a * en.dot(Cr); + return h < 0 ? null : this.at(h / o, s); + } + applyMatrix4(e) { + return this.origin.applyMatrix4(e), this.direction.transformDirection(e), this; + } + equals(e) { + return e.origin.equals(this.origin) && e.direction.equals(this.direction); + } + clone() { + return new this.constructor().copy(this); + } +} +class Qe { + constructor(e, t, n, r, s, o, a, l, c, h, d, p, m, g, v, f) { + Qe.prototype.isMatrix4 = !0, this.elements = [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ], e !== void 0 && this.set(e, t, n, r, s, o, a, l, c, h, d, p, m, g, v, f); + } + set(e, t, n, r, s, o, a, l, c, h, d, p, m, g, v, f) { + const u = this.elements; + return u[0] = e, u[4] = t, u[8] = n, u[12] = r, u[1] = s, u[5] = o, u[9] = a, u[13] = l, u[2] = c, u[6] = h, u[10] = d, u[14] = p, u[3] = m, u[7] = g, u[11] = v, u[15] = f, this; + } + identity() { + return this.set( + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ), this; + } + clone() { + return new Qe().fromArray(this.elements); + } + copy(e) { + const t = this.elements, n = e.elements; + return t[0] = n[0], t[1] = n[1], t[2] = n[2], t[3] = n[3], t[4] = n[4], t[5] = n[5], t[6] = n[6], t[7] = n[7], t[8] = n[8], t[9] = n[9], t[10] = n[10], t[11] = n[11], t[12] = n[12], t[13] = n[13], t[14] = n[14], t[15] = n[15], this; + } + copyPosition(e) { + const t = this.elements, n = e.elements; + return t[12] = n[12], t[13] = n[13], t[14] = n[14], this; + } + setFromMatrix3(e) { + const t = e.elements; + return this.set( + t[0], + t[3], + t[6], + 0, + t[1], + t[4], + t[7], + 0, + t[2], + t[5], + t[8], + 0, + 0, + 0, + 0, + 1 + ), this; + } + extractBasis(e, t, n) { + return e.setFromMatrixColumn(this, 0), t.setFromMatrixColumn(this, 1), n.setFromMatrixColumn(this, 2), this; + } + makeBasis(e, t, n) { + return this.set( + e.x, + t.x, + n.x, + 0, + e.y, + t.y, + n.y, + 0, + e.z, + t.z, + n.z, + 0, + 0, + 0, + 0, + 1 + ), this; + } + extractRotation(e) { + const t = this.elements, n = e.elements, r = 1 / On.setFromMatrixColumn(e, 0).length(), s = 1 / On.setFromMatrixColumn(e, 1).length(), o = 1 / On.setFromMatrixColumn(e, 2).length(); + return t[0] = n[0] * r, t[1] = n[1] * r, t[2] = n[2] * r, t[3] = 0, t[4] = n[4] * s, t[5] = n[5] * s, t[6] = n[6] * s, t[7] = 0, t[8] = n[8] * o, t[9] = n[9] * o, t[10] = n[10] * o, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, this; + } + makeRotationFromEuler(e) { + const t = this.elements, n = e.x, r = e.y, s = e.z, o = Math.cos(n), a = Math.sin(n), l = Math.cos(r), c = Math.sin(r), h = Math.cos(s), d = Math.sin(s); + if (e.order === "XYZ") { + const p = o * h, m = o * d, g = a * h, v = a * d; + t[0] = l * h, t[4] = -l * d, t[8] = c, t[1] = m + g * c, t[5] = p - v * c, t[9] = -a * l, t[2] = v - p * c, t[6] = g + m * c, t[10] = o * l; + } else if (e.order === "YXZ") { + const p = l * h, m = l * d, g = c * h, v = c * d; + t[0] = p + v * a, t[4] = g * a - m, t[8] = o * c, t[1] = o * d, t[5] = o * h, t[9] = -a, t[2] = m * a - g, t[6] = v + p * a, t[10] = o * l; + } else if (e.order === "ZXY") { + const p = l * h, m = l * d, g = c * h, v = c * d; + t[0] = p - v * a, t[4] = -o * d, t[8] = g + m * a, t[1] = m + g * a, t[5] = o * h, t[9] = v - p * a, t[2] = -o * c, t[6] = a, t[10] = o * l; + } else if (e.order === "ZYX") { + const p = o * h, m = o * d, g = a * h, v = a * d; + t[0] = l * h, t[4] = g * c - m, t[8] = p * c + v, t[1] = l * d, t[5] = v * c + p, t[9] = m * c - g, t[2] = -c, t[6] = a * l, t[10] = o * l; + } else if (e.order === "YZX") { + const p = o * l, m = o * c, g = a * l, v = a * c; + t[0] = l * h, t[4] = v - p * d, t[8] = g * d + m, t[1] = d, t[5] = o * h, t[9] = -a * h, t[2] = -c * h, t[6] = m * d + g, t[10] = p - v * d; + } else if (e.order === "XZY") { + const p = o * l, m = o * c, g = a * l, v = a * c; + t[0] = l * h, t[4] = -d, t[8] = c * h, t[1] = p * d + v, t[5] = o * h, t[9] = m * d - g, t[2] = g * d - m, t[6] = a * h, t[10] = v * d + p; + } + return t[3] = 0, t[7] = 0, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, this; + } + makeRotationFromQuaternion(e) { + return this.compose(ec, e, tc); + } + lookAt(e, t, n) { + const r = this.elements; + return Et.subVectors(e, t), Et.lengthSq() === 0 && (Et.z = 1), Et.normalize(), tn.crossVectors(n, Et), tn.lengthSq() === 0 && (Math.abs(n.z) === 1 ? Et.x += 1e-4 : Et.z += 1e-4, Et.normalize(), tn.crossVectors(n, Et)), tn.normalize(), Li.crossVectors(Et, tn), r[0] = tn.x, r[4] = Li.x, r[8] = Et.x, r[1] = tn.y, r[5] = Li.y, r[9] = Et.y, r[2] = tn.z, r[6] = Li.z, r[10] = Et.z, this; + } + multiply(e) { + return this.multiplyMatrices(this, e); + } + premultiply(e) { + return this.multiplyMatrices(e, this); + } + multiplyMatrices(e, t) { + const n = e.elements, r = t.elements, s = this.elements, o = n[0], a = n[4], l = n[8], c = n[12], h = n[1], d = n[5], p = n[9], m = n[13], g = n[2], v = n[6], f = n[10], u = n[14], b = n[3], S = n[7], R = n[11], D = n[15], C = r[0], A = r[4], W = r[8], x = r[12], y = r[1], z = r[5], Z = r[9], re = r[13], L = r[2], F = r[6], V = r[10], Y = r[14], X = r[3], k = r[7], q = r[11], Q = r[15]; + return s[0] = o * C + a * y + l * L + c * X, s[4] = o * A + a * z + l * F + c * k, s[8] = o * W + a * Z + l * V + c * q, s[12] = o * x + a * re + l * Y + c * Q, s[1] = h * C + d * y + p * L + m * X, s[5] = h * A + d * z + p * F + m * k, s[9] = h * W + d * Z + p * V + m * q, s[13] = h * x + d * re + p * Y + m * Q, s[2] = g * C + v * y + f * L + u * X, s[6] = g * A + v * z + f * F + u * k, s[10] = g * W + v * Z + f * V + u * q, s[14] = g * x + v * re + f * Y + u * Q, s[3] = b * C + S * y + R * L + D * X, s[7] = b * A + S * z + R * F + D * k, s[11] = b * W + S * Z + R * V + D * q, s[15] = b * x + S * re + R * Y + D * Q, this; + } + multiplyScalar(e) { + const t = this.elements; + return t[0] *= e, t[4] *= e, t[8] *= e, t[12] *= e, t[1] *= e, t[5] *= e, t[9] *= e, t[13] *= e, t[2] *= e, t[6] *= e, t[10] *= e, t[14] *= e, t[3] *= e, t[7] *= e, t[11] *= e, t[15] *= e, this; + } + determinant() { + const e = this.elements, t = e[0], n = e[4], r = e[8], s = e[12], o = e[1], a = e[5], l = e[9], c = e[13], h = e[2], d = e[6], p = e[10], m = e[14], g = e[3], v = e[7], f = e[11], u = e[15]; + return g * (+s * l * d - r * c * d - s * a * p + n * c * p + r * a * m - n * l * m) + v * (+t * l * m - t * c * p + s * o * p - r * o * m + r * c * h - s * l * h) + f * (+t * c * d - t * a * m - s * o * d + n * o * m + s * a * h - n * c * h) + u * (-r * a * h - t * l * d + t * a * p + r * o * d - n * o * p + n * l * h); + } + transpose() { + const e = this.elements; + let t; + return t = e[1], e[1] = e[4], e[4] = t, t = e[2], e[2] = e[8], e[8] = t, t = e[6], e[6] = e[9], e[9] = t, t = e[3], e[3] = e[12], e[12] = t, t = e[7], e[7] = e[13], e[13] = t, t = e[11], e[11] = e[14], e[14] = t, this; + } + setPosition(e, t, n) { + const r = this.elements; + return e.isVector3 ? (r[12] = e.x, r[13] = e.y, r[14] = e.z) : (r[12] = e, r[13] = t, r[14] = n), this; + } + invert() { + const e = this.elements, t = e[0], n = e[1], r = e[2], s = e[3], o = e[4], a = e[5], l = e[6], c = e[7], h = e[8], d = e[9], p = e[10], m = e[11], g = e[12], v = e[13], f = e[14], u = e[15], b = d * f * c - v * p * c + v * l * m - a * f * m - d * l * u + a * p * u, S = g * p * c - h * f * c - g * l * m + o * f * m + h * l * u - o * p * u, R = h * v * c - g * d * c + g * a * m - o * v * m - h * a * u + o * d * u, D = g * d * l - h * v * l - g * a * p + o * v * p + h * a * f - o * d * f, C = t * b + n * S + r * R + s * D; + if (C === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + const A = 1 / C; + return e[0] = b * A, e[1] = (v * p * s - d * f * s - v * r * m + n * f * m + d * r * u - n * p * u) * A, e[2] = (a * f * s - v * l * s + v * r * c - n * f * c - a * r * u + n * l * u) * A, e[3] = (d * l * s - a * p * s - d * r * c + n * p * c + a * r * m - n * l * m) * A, e[4] = S * A, e[5] = (h * f * s - g * p * s + g * r * m - t * f * m - h * r * u + t * p * u) * A, e[6] = (g * l * s - o * f * s - g * r * c + t * f * c + o * r * u - t * l * u) * A, e[7] = (o * p * s - h * l * s + h * r * c - t * p * c - o * r * m + t * l * m) * A, e[8] = R * A, e[9] = (g * d * s - h * v * s - g * n * m + t * v * m + h * n * u - t * d * u) * A, e[10] = (o * v * s - g * a * s + g * n * c - t * v * c - o * n * u + t * a * u) * A, e[11] = (h * a * s - o * d * s - h * n * c + t * d * c + o * n * m - t * a * m) * A, e[12] = D * A, e[13] = (h * v * r - g * d * r + g * n * p - t * v * p - h * n * f + t * d * f) * A, e[14] = (g * a * r - o * v * r - g * n * l + t * v * l + o * n * f - t * a * f) * A, e[15] = (o * d * r - h * a * r + h * n * l - t * d * l - o * n * p + t * a * p) * A, this; + } + scale(e) { + const t = this.elements, n = e.x, r = e.y, s = e.z; + return t[0] *= n, t[4] *= r, t[8] *= s, t[1] *= n, t[5] *= r, t[9] *= s, t[2] *= n, t[6] *= r, t[10] *= s, t[3] *= n, t[7] *= r, t[11] *= s, this; + } + getMaxScaleOnAxis() { + const e = this.elements, t = e[0] * e[0] + e[1] * e[1] + e[2] * e[2], n = e[4] * e[4] + e[5] * e[5] + e[6] * e[6], r = e[8] * e[8] + e[9] * e[9] + e[10] * e[10]; + return Math.sqrt(Math.max(t, n, r)); + } + makeTranslation(e, t, n) { + return e.isVector3 ? this.set( + 1, + 0, + 0, + e.x, + 0, + 1, + 0, + e.y, + 0, + 0, + 1, + e.z, + 0, + 0, + 0, + 1 + ) : this.set( + 1, + 0, + 0, + e, + 0, + 1, + 0, + t, + 0, + 0, + 1, + n, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationX(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + 1, + 0, + 0, + 0, + 0, + t, + -n, + 0, + 0, + n, + t, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationY(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + t, + 0, + n, + 0, + 0, + 1, + 0, + 0, + -n, + 0, + t, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationZ(e) { + const t = Math.cos(e), n = Math.sin(e); + return this.set( + t, + -n, + 0, + 0, + n, + t, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeRotationAxis(e, t) { + const n = Math.cos(t), r = Math.sin(t), s = 1 - n, o = e.x, a = e.y, l = e.z, c = s * o, h = s * a; + return this.set( + c * o + n, + c * a - r * l, + c * l + r * a, + 0, + c * a + r * l, + h * a + n, + h * l - r * o, + 0, + c * l - r * a, + h * l + r * o, + s * l * l + n, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeScale(e, t, n) { + return this.set( + e, + 0, + 0, + 0, + 0, + t, + 0, + 0, + 0, + 0, + n, + 0, + 0, + 0, + 0, + 1 + ), this; + } + makeShear(e, t, n, r, s, o) { + return this.set( + 1, + n, + s, + 0, + e, + 1, + o, + 0, + t, + r, + 1, + 0, + 0, + 0, + 0, + 1 + ), this; + } + compose(e, t, n) { + const r = this.elements, s = t._x, o = t._y, a = t._z, l = t._w, c = s + s, h = o + o, d = a + a, p = s * c, m = s * h, g = s * d, v = o * h, f = o * d, u = a * d, b = l * c, S = l * h, R = l * d, D = n.x, C = n.y, A = n.z; + return r[0] = (1 - (v + u)) * D, r[1] = (m + R) * D, r[2] = (g - S) * D, r[3] = 0, r[4] = (m - R) * C, r[5] = (1 - (p + u)) * C, r[6] = (f + b) * C, r[7] = 0, r[8] = (g + S) * A, r[9] = (f - b) * A, r[10] = (1 - (p + v)) * A, r[11] = 0, r[12] = e.x, r[13] = e.y, r[14] = e.z, r[15] = 1, this; + } + decompose(e, t, n) { + const r = this.elements; + let s = On.set(r[0], r[1], r[2]).length(); + const o = On.set(r[4], r[5], r[6]).length(), a = On.set(r[8], r[9], r[10]).length(); + this.determinant() < 0 && (s = -s), e.x = r[12], e.y = r[13], e.z = r[14], Pt.copy(this); + const c = 1 / s, h = 1 / o, d = 1 / a; + return Pt.elements[0] *= c, Pt.elements[1] *= c, Pt.elements[2] *= c, Pt.elements[4] *= h, Pt.elements[5] *= h, Pt.elements[6] *= h, Pt.elements[8] *= d, Pt.elements[9] *= d, Pt.elements[10] *= d, t.setFromRotationMatrix(Pt), n.x = s, n.y = o, n.z = a, this; + } + makePerspective(e, t, n, r, s, o, a = Zt) { + const l = this.elements, c = 2 * s / (t - e), h = 2 * s / (n - r), d = (t + e) / (t - e), p = (n + r) / (n - r); + let m, g; + if (a === Zt) + m = -(o + s) / (o - s), g = -2 * o * s / (o - s); + else if (a === tr) + m = -o / (o - s), g = -o * s / (o - s); + else + throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: " + a); + return l[0] = c, l[4] = 0, l[8] = d, l[12] = 0, l[1] = 0, l[5] = h, l[9] = p, l[13] = 0, l[2] = 0, l[6] = 0, l[10] = m, l[14] = g, l[3] = 0, l[7] = 0, l[11] = -1, l[15] = 0, this; + } + makeOrthographic(e, t, n, r, s, o, a = Zt) { + const l = this.elements, c = 1 / (t - e), h = 1 / (n - r), d = 1 / (o - s), p = (t + e) * c, m = (n + r) * h; + let g, v; + if (a === Zt) + g = (o + s) * d, v = -2 * d; + else if (a === tr) + g = s * d, v = -1 * d; + else + throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: " + a); + return l[0] = 2 * c, l[4] = 0, l[8] = 0, l[12] = -p, l[1] = 0, l[5] = 2 * h, l[9] = 0, l[13] = -m, l[2] = 0, l[6] = 0, l[10] = v, l[14] = -g, l[3] = 0, l[7] = 0, l[11] = 0, l[15] = 1, this; + } + equals(e) { + const t = this.elements, n = e.elements; + for (let r = 0; r < 16; r++) + if (t[r] !== n[r]) return !1; + return !0; + } + fromArray(e, t = 0) { + for (let n = 0; n < 16; n++) + this.elements[n] = e[n + t]; + return this; + } + toArray(e = [], t = 0) { + const n = this.elements; + return e[t] = n[0], e[t + 1] = n[1], e[t + 2] = n[2], e[t + 3] = n[3], e[t + 4] = n[4], e[t + 5] = n[5], e[t + 6] = n[6], e[t + 7] = n[7], e[t + 8] = n[8], e[t + 9] = n[9], e[t + 10] = n[10], e[t + 11] = n[11], e[t + 12] = n[12], e[t + 13] = n[13], e[t + 14] = n[14], e[t + 15] = n[15], e; + } +} +const On = /* @__PURE__ */ new P(), Pt = /* @__PURE__ */ new Qe(), ec = /* @__PURE__ */ new P(0, 0, 0), tc = /* @__PURE__ */ new P(1, 1, 1), tn = /* @__PURE__ */ new P(), Li = /* @__PURE__ */ new P(), Et = /* @__PURE__ */ new P(), oa = /* @__PURE__ */ new Qe(), la = /* @__PURE__ */ new An(); +class ar { + constructor(e = 0, t = 0, n = 0, r = ar.DEFAULT_ORDER) { + this.isEuler = !0, this._x = e, this._y = t, this._z = n, this._order = r; + } + get x() { + return this._x; + } + set x(e) { + this._x = e, this._onChangeCallback(); + } + get y() { + return this._y; + } + set y(e) { + this._y = e, this._onChangeCallback(); + } + get z() { + return this._z; + } + set z(e) { + this._z = e, this._onChangeCallback(); + } + get order() { + return this._order; + } + set order(e) { + this._order = e, this._onChangeCallback(); + } + set(e, t, n, r = this._order) { + return this._x = e, this._y = t, this._z = n, this._order = r, this._onChangeCallback(), this; + } + clone() { + return new this.constructor(this._x, this._y, this._z, this._order); + } + copy(e) { + return this._x = e._x, this._y = e._y, this._z = e._z, this._order = e._order, this._onChangeCallback(), this; + } + setFromRotationMatrix(e, t = this._order, n = !0) { + const r = e.elements, s = r[0], o = r[4], a = r[8], l = r[1], c = r[5], h = r[9], d = r[2], p = r[6], m = r[10]; + switch (t) { + case "XYZ": + this._y = Math.asin(vt(a, -1, 1)), Math.abs(a) < 0.9999999 ? (this._x = Math.atan2(-h, m), this._z = Math.atan2(-o, s)) : (this._x = Math.atan2(p, c), this._z = 0); + break; + case "YXZ": + this._x = Math.asin(-vt(h, -1, 1)), Math.abs(h) < 0.9999999 ? (this._y = Math.atan2(a, m), this._z = Math.atan2(l, c)) : (this._y = Math.atan2(-d, s), this._z = 0); + break; + case "ZXY": + this._x = Math.asin(vt(p, -1, 1)), Math.abs(p) < 0.9999999 ? (this._y = Math.atan2(-d, m), this._z = Math.atan2(-o, c)) : (this._y = 0, this._z = Math.atan2(l, s)); + break; + case "ZYX": + this._y = Math.asin(-vt(d, -1, 1)), Math.abs(d) < 0.9999999 ? (this._x = Math.atan2(p, m), this._z = Math.atan2(l, s)) : (this._x = 0, this._z = Math.atan2(-o, c)); + break; + case "YZX": + this._z = Math.asin(vt(l, -1, 1)), Math.abs(l) < 0.9999999 ? (this._x = Math.atan2(-h, c), this._y = Math.atan2(-d, s)) : (this._x = 0, this._y = Math.atan2(a, m)); + break; + case "XZY": + this._z = Math.asin(-vt(o, -1, 1)), Math.abs(o) < 0.9999999 ? (this._x = Math.atan2(p, c), this._y = Math.atan2(a, s)) : (this._x = Math.atan2(-h, m), this._y = 0); + break; + default: + console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: " + t); + } + return this._order = t, n === !0 && this._onChangeCallback(), this; + } + setFromQuaternion(e, t, n) { + return oa.makeRotationFromQuaternion(e), this.setFromRotationMatrix(oa, t, n); + } + setFromVector3(e, t = this._order) { + return this.set(e.x, e.y, e.z, t); + } + reorder(e) { + return la.setFromEuler(this), this.setFromQuaternion(la, e); + } + equals(e) { + return e._x === this._x && e._y === this._y && e._z === this._z && e._order === this._order; + } + fromArray(e) { + return this._x = e[0], this._y = e[1], this._z = e[2], e[3] !== void 0 && (this._order = e[3]), this._onChangeCallback(), this; + } + toArray(e = [], t = 0) { + return e[t] = this._x, e[t + 1] = this._y, e[t + 2] = this._z, e[t + 3] = this._order, e; + } + _onChange(e) { + return this._onChangeCallback = e, this; + } + _onChangeCallback() { + } + *[Symbol.iterator]() { + yield this._x, yield this._y, yield this._z, yield this._order; + } +} +ar.DEFAULT_ORDER = "XYZ"; +class bo { + constructor() { + this.mask = 1; + } + set(e) { + this.mask = (1 << e | 0) >>> 0; + } + enable(e) { + this.mask |= 1 << e | 0; + } + enableAll() { + this.mask = -1; + } + toggle(e) { + this.mask ^= 1 << e | 0; + } + disable(e) { + this.mask &= ~(1 << e | 0); + } + disableAll() { + this.mask = 0; + } + test(e) { + return (this.mask & e.mask) !== 0; + } + isEnabled(e) { + return (this.mask & (1 << e | 0)) !== 0; + } +} +let nc = 0; +const ca = /* @__PURE__ */ new P(), Bn = /* @__PURE__ */ new An(), Xt = /* @__PURE__ */ new Qe(), Pi = /* @__PURE__ */ new P(), ui = /* @__PURE__ */ new P(), ic = /* @__PURE__ */ new P(), rc = /* @__PURE__ */ new An(), ua = /* @__PURE__ */ new P(1, 0, 0), ha = /* @__PURE__ */ new P(0, 1, 0), da = /* @__PURE__ */ new P(0, 0, 1), sc = { type: "added" }, ac = { type: "removed" }; +class dt extends Rn { + constructor() { + super(), this.isObject3D = !0, Object.defineProperty(this, "id", { value: nc++ }), this.uuid = vi(), this.name = "", this.type = "Object3D", this.parent = null, this.children = [], this.up = dt.DEFAULT_UP.clone(); + const e = new P(), t = new ar(), n = new An(), r = new P(1, 1, 1); + function s() { + n.setFromEuler(t, !1); + } + function o() { + t.setFromQuaternion(n, void 0, !1); + } + t._onChange(s), n._onChange(o), Object.defineProperties(this, { + position: { + configurable: !0, + enumerable: !0, + value: e + }, + rotation: { + configurable: !0, + enumerable: !0, + value: t + }, + quaternion: { + configurable: !0, + enumerable: !0, + value: n + }, + scale: { + configurable: !0, + enumerable: !0, + value: r + }, + modelViewMatrix: { + value: new Qe() + }, + normalMatrix: { + value: new Ve() + } + }), this.matrix = new Qe(), this.matrixWorld = new Qe(), this.matrixAutoUpdate = dt.DEFAULT_MATRIX_AUTO_UPDATE, this.matrixWorldAutoUpdate = dt.DEFAULT_MATRIX_WORLD_AUTO_UPDATE, this.matrixWorldNeedsUpdate = !1, this.layers = new bo(), this.visible = !0, this.castShadow = !1, this.receiveShadow = !1, this.frustumCulled = !0, this.renderOrder = 0, this.animations = [], this.userData = {}; + } + onBeforeShadow() { + } + onAfterShadow() { + } + onBeforeRender() { + } + onAfterRender() { + } + applyMatrix4(e) { + this.matrixAutoUpdate && this.updateMatrix(), this.matrix.premultiply(e), this.matrix.decompose(this.position, this.quaternion, this.scale); + } + applyQuaternion(e) { + return this.quaternion.premultiply(e), this; + } + setRotationFromAxisAngle(e, t) { + this.quaternion.setFromAxisAngle(e, t); + } + setRotationFromEuler(e) { + this.quaternion.setFromEuler(e, !0); + } + setRotationFromMatrix(e) { + this.quaternion.setFromRotationMatrix(e); + } + setRotationFromQuaternion(e) { + this.quaternion.copy(e); + } + rotateOnAxis(e, t) { + return Bn.setFromAxisAngle(e, t), this.quaternion.multiply(Bn), this; + } + rotateOnWorldAxis(e, t) { + return Bn.setFromAxisAngle(e, t), this.quaternion.premultiply(Bn), this; + } + rotateX(e) { + return this.rotateOnAxis(ua, e); + } + rotateY(e) { + return this.rotateOnAxis(ha, e); + } + rotateZ(e) { + return this.rotateOnAxis(da, e); + } + translateOnAxis(e, t) { + return ca.copy(e).applyQuaternion(this.quaternion), this.position.add(ca.multiplyScalar(t)), this; + } + translateX(e) { + return this.translateOnAxis(ua, e); + } + translateY(e) { + return this.translateOnAxis(ha, e); + } + translateZ(e) { + return this.translateOnAxis(da, e); + } + localToWorld(e) { + return this.updateWorldMatrix(!0, !1), e.applyMatrix4(this.matrixWorld); + } + worldToLocal(e) { + return this.updateWorldMatrix(!0, !1), e.applyMatrix4(Xt.copy(this.matrixWorld).invert()); + } + lookAt(e, t, n) { + e.isVector3 ? Pi.copy(e) : Pi.set(e, t, n); + const r = this.parent; + this.updateWorldMatrix(!0, !1), ui.setFromMatrixPosition(this.matrixWorld), this.isCamera || this.isLight ? Xt.lookAt(ui, Pi, this.up) : Xt.lookAt(Pi, ui, this.up), this.quaternion.setFromRotationMatrix(Xt), r && (Xt.extractRotation(r.matrixWorld), Bn.setFromRotationMatrix(Xt), this.quaternion.premultiply(Bn.invert())); + } + add(e) { + if (arguments.length > 1) { + for (let t = 0; t < arguments.length; t++) + this.add(arguments[t]); + return this; + } + return e === this ? (console.error("THREE.Object3D.add: object can't be added as a child of itself.", e), this) : (e && e.isObject3D ? (e.parent !== null && e.parent.remove(e), e.parent = this, this.children.push(e), e.dispatchEvent(sc)) : console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.", e), this); + } + remove(e) { + if (arguments.length > 1) { + for (let n = 0; n < arguments.length; n++) + this.remove(arguments[n]); + return this; + } + const t = this.children.indexOf(e); + return t !== -1 && (e.parent = null, this.children.splice(t, 1), e.dispatchEvent(ac)), this; + } + removeFromParent() { + const e = this.parent; + return e !== null && e.remove(this), this; + } + clear() { + return this.remove(...this.children); + } + attach(e) { + return this.updateWorldMatrix(!0, !1), Xt.copy(this.matrixWorld).invert(), e.parent !== null && (e.parent.updateWorldMatrix(!0, !1), Xt.multiply(e.parent.matrixWorld)), e.applyMatrix4(Xt), this.add(e), e.updateWorldMatrix(!1, !0), this; + } + getObjectById(e) { + return this.getObjectByProperty("id", e); + } + getObjectByName(e) { + return this.getObjectByProperty("name", e); + } + getObjectByProperty(e, t) { + if (this[e] === t) return this; + for (let n = 0, r = this.children.length; n < r; n++) { + const o = this.children[n].getObjectByProperty(e, t); + if (o !== void 0) + return o; + } + } + getObjectsByProperty(e, t, n = []) { + this[e] === t && n.push(this); + const r = this.children; + for (let s = 0, o = r.length; s < o; s++) + r[s].getObjectsByProperty(e, t, n); + return n; + } + getWorldPosition(e) { + return this.updateWorldMatrix(!0, !1), e.setFromMatrixPosition(this.matrixWorld); + } + getWorldQuaternion(e) { + return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose(ui, e, ic), e; + } + getWorldScale(e) { + return this.updateWorldMatrix(!0, !1), this.matrixWorld.decompose(ui, rc, e), e; + } + getWorldDirection(e) { + this.updateWorldMatrix(!0, !1); + const t = this.matrixWorld.elements; + return e.set(t[8], t[9], t[10]).normalize(); + } + raycast() { + } + traverse(e) { + e(this); + const t = this.children; + for (let n = 0, r = t.length; n < r; n++) + t[n].traverse(e); + } + traverseVisible(e) { + if (this.visible === !1) return; + e(this); + const t = this.children; + for (let n = 0, r = t.length; n < r; n++) + t[n].traverseVisible(e); + } + traverseAncestors(e) { + const t = this.parent; + t !== null && (e(t), t.traverseAncestors(e)); + } + updateMatrix() { + this.matrix.compose(this.position, this.quaternion, this.scale), this.matrixWorldNeedsUpdate = !0; + } + updateMatrixWorld(e) { + this.matrixAutoUpdate && this.updateMatrix(), (this.matrixWorldNeedsUpdate || e) && (this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), this.matrixWorldNeedsUpdate = !1, e = !0); + const t = this.children; + for (let n = 0, r = t.length; n < r; n++) { + const s = t[n]; + (s.matrixWorldAutoUpdate === !0 || e === !0) && s.updateMatrixWorld(e); + } + } + updateWorldMatrix(e, t) { + const n = this.parent; + if (e === !0 && n !== null && n.matrixWorldAutoUpdate === !0 && n.updateWorldMatrix(!0, !1), this.matrixAutoUpdate && this.updateMatrix(), this.parent === null ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), t === !0) { + const r = this.children; + for (let s = 0, o = r.length; s < o; s++) { + const a = r[s]; + a.matrixWorldAutoUpdate === !0 && a.updateWorldMatrix(!1, !0); + } + } + } + toJSON(e) { + const t = e === void 0 || typeof e == "string", n = {}; + t && (e = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {}, + skeletons: {}, + animations: {}, + nodes: {} + }, n.metadata = { + version: 4.6, + type: "Object", + generator: "Object3D.toJSON" + }); + const r = {}; + r.uuid = this.uuid, r.type = this.type, this.name !== "" && (r.name = this.name), this.castShadow === !0 && (r.castShadow = !0), this.receiveShadow === !0 && (r.receiveShadow = !0), this.visible === !1 && (r.visible = !1), this.frustumCulled === !1 && (r.frustumCulled = !1), this.renderOrder !== 0 && (r.renderOrder = this.renderOrder), Object.keys(this.userData).length > 0 && (r.userData = this.userData), r.layers = this.layers.mask, r.matrix = this.matrix.toArray(), r.up = this.up.toArray(), this.matrixAutoUpdate === !1 && (r.matrixAutoUpdate = !1), this.isInstancedMesh && (r.type = "InstancedMesh", r.count = this.count, r.instanceMatrix = this.instanceMatrix.toJSON(), this.instanceColor !== null && (r.instanceColor = this.instanceColor.toJSON())), this.isBatchedMesh && (r.type = "BatchedMesh", r.perObjectFrustumCulled = this.perObjectFrustumCulled, r.sortObjects = this.sortObjects, r.drawRanges = this._drawRanges, r.reservedRanges = this._reservedRanges, r.visibility = this._visibility, r.active = this._active, r.bounds = this._bounds.map((a) => ({ + boxInitialized: a.boxInitialized, + boxMin: a.box.min.toArray(), + boxMax: a.box.max.toArray(), + sphereInitialized: a.sphereInitialized, + sphereRadius: a.sphere.radius, + sphereCenter: a.sphere.center.toArray() + })), r.maxGeometryCount = this._maxGeometryCount, r.maxVertexCount = this._maxVertexCount, r.maxIndexCount = this._maxIndexCount, r.geometryInitialized = this._geometryInitialized, r.geometryCount = this._geometryCount, r.matricesTexture = this._matricesTexture.toJSON(e), this.boundingSphere !== null && (r.boundingSphere = { + center: r.boundingSphere.center.toArray(), + radius: r.boundingSphere.radius + }), this.boundingBox !== null && (r.boundingBox = { + min: r.boundingBox.min.toArray(), + max: r.boundingBox.max.toArray() + })); + function s(a, l) { + return a[l.uuid] === void 0 && (a[l.uuid] = l.toJSON(e)), l.uuid; + } + if (this.isScene) + this.background && (this.background.isColor ? r.background = this.background.toJSON() : this.background.isTexture && (r.background = this.background.toJSON(e).uuid)), this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== !0 && (r.environment = this.environment.toJSON(e).uuid); + else if (this.isMesh || this.isLine || this.isPoints) { + r.geometry = s(e.geometries, this.geometry); + const a = this.geometry.parameters; + if (a !== void 0 && a.shapes !== void 0) { + const l = a.shapes; + if (Array.isArray(l)) + for (let c = 0, h = l.length; c < h; c++) { + const d = l[c]; + s(e.shapes, d); + } + else + s(e.shapes, l); + } + } + if (this.isSkinnedMesh && (r.bindMode = this.bindMode, r.bindMatrix = this.bindMatrix.toArray(), this.skeleton !== void 0 && (s(e.skeletons, this.skeleton), r.skeleton = this.skeleton.uuid)), this.material !== void 0) + if (Array.isArray(this.material)) { + const a = []; + for (let l = 0, c = this.material.length; l < c; l++) + a.push(s(e.materials, this.material[l])); + r.material = a; + } else + r.material = s(e.materials, this.material); + if (this.children.length > 0) { + r.children = []; + for (let a = 0; a < this.children.length; a++) + r.children.push(this.children[a].toJSON(e).object); + } + if (this.animations.length > 0) { + r.animations = []; + for (let a = 0; a < this.animations.length; a++) { + const l = this.animations[a]; + r.animations.push(s(e.animations, l)); + } + } + if (t) { + const a = o(e.geometries), l = o(e.materials), c = o(e.textures), h = o(e.images), d = o(e.shapes), p = o(e.skeletons), m = o(e.animations), g = o(e.nodes); + a.length > 0 && (n.geometries = a), l.length > 0 && (n.materials = l), c.length > 0 && (n.textures = c), h.length > 0 && (n.images = h), d.length > 0 && (n.shapes = d), p.length > 0 && (n.skeletons = p), m.length > 0 && (n.animations = m), g.length > 0 && (n.nodes = g); + } + return n.object = r, n; + function o(a) { + const l = []; + for (const c in a) { + const h = a[c]; + delete h.metadata, l.push(h); + } + return l; + } + } + clone(e) { + return new this.constructor().copy(this, e); + } + copy(e, t = !0) { + if (this.name = e.name, this.up.copy(e.up), this.position.copy(e.position), this.rotation.order = e.rotation.order, this.quaternion.copy(e.quaternion), this.scale.copy(e.scale), this.matrix.copy(e.matrix), this.matrixWorld.copy(e.matrixWorld), this.matrixAutoUpdate = e.matrixAutoUpdate, this.matrixWorldAutoUpdate = e.matrixWorldAutoUpdate, this.matrixWorldNeedsUpdate = e.matrixWorldNeedsUpdate, this.layers.mask = e.layers.mask, this.visible = e.visible, this.castShadow = e.castShadow, this.receiveShadow = e.receiveShadow, this.frustumCulled = e.frustumCulled, this.renderOrder = e.renderOrder, this.animations = e.animations.slice(), this.userData = JSON.parse(JSON.stringify(e.userData)), t === !0) + for (let n = 0; n < e.children.length; n++) { + const r = e.children[n]; + this.add(r.clone()); + } + return this; + } +} +dt.DEFAULT_UP = /* @__PURE__ */ new P(0, 1, 0); +dt.DEFAULT_MATRIX_AUTO_UPDATE = !0; +dt.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = !0; +const Dt = /* @__PURE__ */ new P(), qt = /* @__PURE__ */ new P(), Lr = /* @__PURE__ */ new P(), Yt = /* @__PURE__ */ new P(), zn = /* @__PURE__ */ new P(), Gn = /* @__PURE__ */ new P(), fa = /* @__PURE__ */ new P(), Pr = /* @__PURE__ */ new P(), Dr = /* @__PURE__ */ new P(), Ur = /* @__PURE__ */ new P(); +let Di = !1; +class It { + constructor(e = new P(), t = new P(), n = new P()) { + this.a = e, this.b = t, this.c = n; + } + static getNormal(e, t, n, r) { + r.subVectors(n, t), Dt.subVectors(e, t), r.cross(Dt); + const s = r.lengthSq(); + return s > 0 ? r.multiplyScalar(1 / Math.sqrt(s)) : r.set(0, 0, 0); + } + // static/instance method to calculate barycentric coordinates + // based on: http://www.blackpawn.com/texts/pointinpoly/default.html + static getBarycoord(e, t, n, r, s) { + Dt.subVectors(r, t), qt.subVectors(n, t), Lr.subVectors(e, t); + const o = Dt.dot(Dt), a = Dt.dot(qt), l = Dt.dot(Lr), c = qt.dot(qt), h = qt.dot(Lr), d = o * c - a * a; + if (d === 0) + return s.set(0, 0, 0), null; + const p = 1 / d, m = (c * l - a * h) * p, g = (o * h - a * l) * p; + return s.set(1 - m - g, g, m); + } + static containsPoint(e, t, n, r) { + return this.getBarycoord(e, t, n, r, Yt) === null ? !1 : Yt.x >= 0 && Yt.y >= 0 && Yt.x + Yt.y <= 1; + } + static getUV(e, t, n, r, s, o, a, l) { + return Di === !1 && (console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."), Di = !0), this.getInterpolation(e, t, n, r, s, o, a, l); + } + static getInterpolation(e, t, n, r, s, o, a, l) { + return this.getBarycoord(e, t, n, r, Yt) === null ? (l.x = 0, l.y = 0, "z" in l && (l.z = 0), "w" in l && (l.w = 0), null) : (l.setScalar(0), l.addScaledVector(s, Yt.x), l.addScaledVector(o, Yt.y), l.addScaledVector(a, Yt.z), l); + } + static isFrontFacing(e, t, n, r) { + return Dt.subVectors(n, t), qt.subVectors(e, t), Dt.cross(qt).dot(r) < 0; + } + set(e, t, n) { + return this.a.copy(e), this.b.copy(t), this.c.copy(n), this; + } + setFromPointsAndIndices(e, t, n, r) { + return this.a.copy(e[t]), this.b.copy(e[n]), this.c.copy(e[r]), this; + } + setFromAttributeAndIndices(e, t, n, r) { + return this.a.fromBufferAttribute(e, t), this.b.fromBufferAttribute(e, n), this.c.fromBufferAttribute(e, r), this; + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + return this.a.copy(e.a), this.b.copy(e.b), this.c.copy(e.c), this; + } + getArea() { + return Dt.subVectors(this.c, this.b), qt.subVectors(this.a, this.b), Dt.cross(qt).length() * 0.5; + } + getMidpoint(e) { + return e.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3); + } + getNormal(e) { + return It.getNormal(this.a, this.b, this.c, e); + } + getPlane(e) { + return e.setFromCoplanarPoints(this.a, this.b, this.c); + } + getBarycoord(e, t) { + return It.getBarycoord(e, this.a, this.b, this.c, t); + } + getUV(e, t, n, r, s) { + return Di === !1 && (console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."), Di = !0), It.getInterpolation(e, this.a, this.b, this.c, t, n, r, s); + } + getInterpolation(e, t, n, r, s) { + return It.getInterpolation(e, this.a, this.b, this.c, t, n, r, s); + } + containsPoint(e) { + return It.containsPoint(e, this.a, this.b, this.c); + } + isFrontFacing(e) { + return It.isFrontFacing(this.a, this.b, this.c, e); + } + intersectsBox(e) { + return e.intersectsTriangle(this); + } + closestPointToPoint(e, t) { + const n = this.a, r = this.b, s = this.c; + let o, a; + zn.subVectors(r, n), Gn.subVectors(s, n), Pr.subVectors(e, n); + const l = zn.dot(Pr), c = Gn.dot(Pr); + if (l <= 0 && c <= 0) + return t.copy(n); + Dr.subVectors(e, r); + const h = zn.dot(Dr), d = Gn.dot(Dr); + if (h >= 0 && d <= h) + return t.copy(r); + const p = l * d - h * c; + if (p <= 0 && l >= 0 && h <= 0) + return o = l / (l - h), t.copy(n).addScaledVector(zn, o); + Ur.subVectors(e, s); + const m = zn.dot(Ur), g = Gn.dot(Ur); + if (g >= 0 && m <= g) + return t.copy(s); + const v = m * c - l * g; + if (v <= 0 && c >= 0 && g <= 0) + return a = c / (c - g), t.copy(n).addScaledVector(Gn, a); + const f = h * g - m * d; + if (f <= 0 && d - h >= 0 && m - g >= 0) + return fa.subVectors(s, r), a = (d - h) / (d - h + (m - g)), t.copy(r).addScaledVector(fa, a); + const u = 1 / (f + v + p); + return o = v * u, a = p * u, t.copy(n).addScaledVector(zn, o).addScaledVector(Gn, a); + } + equals(e) { + return e.a.equals(this.a) && e.b.equals(this.b) && e.c.equals(this.c); + } +} +const Ao = { + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + rebeccapurple: 6697881, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 +}, nn = { h: 0, s: 0, l: 0 }, Ui = { h: 0, s: 0, l: 0 }; +function Ir(i, e, t) { + return t < 0 && (t += 1), t > 1 && (t -= 1), t < 1 / 6 ? i + (e - i) * 6 * t : t < 1 / 2 ? e : t < 2 / 3 ? i + (e - i) * 6 * (2 / 3 - t) : i; +} +class Xe { + constructor(e, t, n) { + return this.isColor = !0, this.r = 1, this.g = 1, this.b = 1, this.set(e, t, n); + } + set(e, t, n) { + if (t === void 0 && n === void 0) { + const r = e; + r && r.isColor ? this.copy(r) : typeof r == "number" ? this.setHex(r) : typeof r == "string" && this.setStyle(r); + } else + this.setRGB(e, t, n); + return this; + } + setScalar(e) { + return this.r = e, this.g = e, this.b = e, this; + } + setHex(e, t = ht) { + return e = Math.floor(e), this.r = (e >> 16 & 255) / 255, this.g = (e >> 8 & 255) / 255, this.b = (e & 255) / 255, Ke.toWorkingColorSpace(this, t), this; + } + setRGB(e, t, n, r = Ke.workingColorSpace) { + return this.r = e, this.g = t, this.b = n, Ke.toWorkingColorSpace(this, r), this; + } + setHSL(e, t, n, r = Ke.workingColorSpace) { + if (e = Xl(e, 1), t = vt(t, 0, 1), n = vt(n, 0, 1), t === 0) + this.r = this.g = this.b = n; + else { + const s = n <= 0.5 ? n * (1 + t) : n + t - n * t, o = 2 * n - s; + this.r = Ir(o, s, e + 1 / 3), this.g = Ir(o, s, e), this.b = Ir(o, s, e - 1 / 3); + } + return Ke.toWorkingColorSpace(this, r), this; + } + setStyle(e, t = ht) { + function n(s) { + s !== void 0 && parseFloat(s) < 1 && console.warn("THREE.Color: Alpha component of " + e + " will be ignored."); + } + let r; + if (r = /^(\w+)\(([^\)]*)\)/.exec(e)) { + let s; + const o = r[1], a = r[2]; + switch (o) { + case "rgb": + case "rgba": + if (s = /^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a)) + return n(s[4]), this.setRGB( + Math.min(255, parseInt(s[1], 10)) / 255, + Math.min(255, parseInt(s[2], 10)) / 255, + Math.min(255, parseInt(s[3], 10)) / 255, + t + ); + if (s = /^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a)) + return n(s[4]), this.setRGB( + Math.min(100, parseInt(s[1], 10)) / 100, + Math.min(100, parseInt(s[2], 10)) / 100, + Math.min(100, parseInt(s[3], 10)) / 100, + t + ); + break; + case "hsl": + case "hsla": + if (s = /^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a)) + return n(s[4]), this.setHSL( + parseFloat(s[1]) / 360, + parseFloat(s[2]) / 100, + parseFloat(s[3]) / 100, + t + ); + break; + default: + console.warn("THREE.Color: Unknown color model " + e); + } + } else if (r = /^\#([A-Fa-f\d]+)$/.exec(e)) { + const s = r[1], o = s.length; + if (o === 3) + return this.setRGB( + parseInt(s.charAt(0), 16) / 15, + parseInt(s.charAt(1), 16) / 15, + parseInt(s.charAt(2), 16) / 15, + t + ); + if (o === 6) + return this.setHex(parseInt(s, 16), t); + console.warn("THREE.Color: Invalid hex color " + e); + } else if (e && e.length > 0) + return this.setColorName(e, t); + return this; + } + setColorName(e, t = ht) { + const n = Ao[e.toLowerCase()]; + return n !== void 0 ? this.setHex(n, t) : console.warn("THREE.Color: Unknown color " + e), this; + } + clone() { + return new this.constructor(this.r, this.g, this.b); + } + copy(e) { + return this.r = e.r, this.g = e.g, this.b = e.b, this; + } + copySRGBToLinear(e) { + return this.r = Jn(e.r), this.g = Jn(e.g), this.b = Jn(e.b), this; + } + copyLinearToSRGB(e) { + return this.r = Er(e.r), this.g = Er(e.g), this.b = Er(e.b), this; + } + convertSRGBToLinear() { + return this.copySRGBToLinear(this), this; + } + convertLinearToSRGB() { + return this.copyLinearToSRGB(this), this; + } + getHex(e = ht) { + return Ke.fromWorkingColorSpace(mt.copy(this), e), Math.round(vt(mt.r * 255, 0, 255)) * 65536 + Math.round(vt(mt.g * 255, 0, 255)) * 256 + Math.round(vt(mt.b * 255, 0, 255)); + } + getHexString(e = ht) { + return ("000000" + this.getHex(e).toString(16)).slice(-6); + } + getHSL(e, t = Ke.workingColorSpace) { + Ke.fromWorkingColorSpace(mt.copy(this), t); + const n = mt.r, r = mt.g, s = mt.b, o = Math.max(n, r, s), a = Math.min(n, r, s); + let l, c; + const h = (a + o) / 2; + if (a === o) + l = 0, c = 0; + else { + const d = o - a; + switch (c = h <= 0.5 ? d / (o + a) : d / (2 - o - a), o) { + case n: + l = (r - s) / d + (r < s ? 6 : 0); + break; + case r: + l = (s - n) / d + 2; + break; + case s: + l = (n - r) / d + 4; + break; + } + l /= 6; + } + return e.h = l, e.s = c, e.l = h, e; + } + getRGB(e, t = Ke.workingColorSpace) { + return Ke.fromWorkingColorSpace(mt.copy(this), t), e.r = mt.r, e.g = mt.g, e.b = mt.b, e; + } + getStyle(e = ht) { + Ke.fromWorkingColorSpace(mt.copy(this), e); + const t = mt.r, n = mt.g, r = mt.b; + return e !== ht ? `color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${r.toFixed(3)})` : `rgb(${Math.round(t * 255)},${Math.round(n * 255)},${Math.round(r * 255)})`; + } + offsetHSL(e, t, n) { + return this.getHSL(nn), this.setHSL(nn.h + e, nn.s + t, nn.l + n); + } + add(e) { + return this.r += e.r, this.g += e.g, this.b += e.b, this; + } + addColors(e, t) { + return this.r = e.r + t.r, this.g = e.g + t.g, this.b = e.b + t.b, this; + } + addScalar(e) { + return this.r += e, this.g += e, this.b += e, this; + } + sub(e) { + return this.r = Math.max(0, this.r - e.r), this.g = Math.max(0, this.g - e.g), this.b = Math.max(0, this.b - e.b), this; + } + multiply(e) { + return this.r *= e.r, this.g *= e.g, this.b *= e.b, this; + } + multiplyScalar(e) { + return this.r *= e, this.g *= e, this.b *= e, this; + } + lerp(e, t) { + return this.r += (e.r - this.r) * t, this.g += (e.g - this.g) * t, this.b += (e.b - this.b) * t, this; + } + lerpColors(e, t, n) { + return this.r = e.r + (t.r - e.r) * n, this.g = e.g + (t.g - e.g) * n, this.b = e.b + (t.b - e.b) * n, this; + } + lerpHSL(e, t) { + this.getHSL(nn), e.getHSL(Ui); + const n = Mr(nn.h, Ui.h, t), r = Mr(nn.s, Ui.s, t), s = Mr(nn.l, Ui.l, t); + return this.setHSL(n, r, s), this; + } + setFromVector3(e) { + return this.r = e.x, this.g = e.y, this.b = e.z, this; + } + applyMatrix3(e) { + const t = this.r, n = this.g, r = this.b, s = e.elements; + return this.r = s[0] * t + s[3] * n + s[6] * r, this.g = s[1] * t + s[4] * n + s[7] * r, this.b = s[2] * t + s[5] * n + s[8] * r, this; + } + equals(e) { + return e.r === this.r && e.g === this.g && e.b === this.b; + } + fromArray(e, t = 0) { + return this.r = e[t], this.g = e[t + 1], this.b = e[t + 2], this; + } + toArray(e = [], t = 0) { + return e[t] = this.r, e[t + 1] = this.g, e[t + 2] = this.b, e; + } + fromBufferAttribute(e, t) { + return this.r = e.getX(t), this.g = e.getY(t), this.b = e.getZ(t), this; + } + toJSON() { + return this.getHex(); + } + *[Symbol.iterator]() { + yield this.r, yield this.g, yield this.b; + } +} +const mt = /* @__PURE__ */ new Xe(); +Xe.NAMES = Ao; +let oc = 0; +class Mi extends Rn { + constructor() { + super(), this.isMaterial = !0, Object.defineProperty(this, "id", { value: oc++ }), this.uuid = vi(), this.name = "", this.type = "Material", this.blending = $n, this.side = un, this.vertexColors = !1, this.opacity = 1, this.transparent = !1, this.alphaHash = !1, this.blendSrc = Kr, this.blendDst = Zr, this.blendEquation = Mn, this.blendSrcAlpha = null, this.blendDstAlpha = null, this.blendEquationAlpha = null, this.blendColor = new Xe(0, 0, 0), this.blendAlpha = 0, this.depthFunc = $i, this.depthTest = !0, this.depthWrite = !0, this.stencilWriteMask = 255, this.stencilFunc = Qs, this.stencilRef = 0, this.stencilFuncMask = 255, this.stencilFail = Dn, this.stencilZFail = Dn, this.stencilZPass = Dn, this.stencilWrite = !1, this.clippingPlanes = null, this.clipIntersection = !1, this.clipShadows = !1, this.shadowSide = null, this.colorWrite = !0, this.precision = null, this.polygonOffset = !1, this.polygonOffsetFactor = 0, this.polygonOffsetUnits = 0, this.dithering = !1, this.alphaToCoverage = !1, this.premultipliedAlpha = !1, this.forceSinglePass = !1, this.visible = !0, this.toneMapped = !0, this.userData = {}, this.version = 0, this._alphaTest = 0; + } + get alphaTest() { + return this._alphaTest; + } + set alphaTest(e) { + this._alphaTest > 0 != e > 0 && this.version++, this._alphaTest = e; + } + onBuild() { + } + onBeforeRender() { + } + onBeforeCompile() { + } + customProgramCacheKey() { + return this.onBeforeCompile.toString(); + } + setValues(e) { + if (e !== void 0) + for (const t in e) { + const n = e[t]; + if (n === void 0) { + console.warn(`THREE.Material: parameter '${t}' has value of undefined.`); + continue; + } + const r = this[t]; + if (r === void 0) { + console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`); + continue; + } + r && r.isColor ? r.set(n) : r && r.isVector3 && n && n.isVector3 ? r.copy(n) : this[t] = n; + } + } + toJSON(e) { + const t = e === void 0 || typeof e == "string"; + t && (e = { + textures: {}, + images: {} + }); + const n = { + metadata: { + version: 4.6, + type: "Material", + generator: "Material.toJSON" + } + }; + n.uuid = this.uuid, n.type = this.type, this.name !== "" && (n.name = this.name), this.color && this.color.isColor && (n.color = this.color.getHex()), this.roughness !== void 0 && (n.roughness = this.roughness), this.metalness !== void 0 && (n.metalness = this.metalness), this.sheen !== void 0 && (n.sheen = this.sheen), this.sheenColor && this.sheenColor.isColor && (n.sheenColor = this.sheenColor.getHex()), this.sheenRoughness !== void 0 && (n.sheenRoughness = this.sheenRoughness), this.emissive && this.emissive.isColor && (n.emissive = this.emissive.getHex()), this.emissiveIntensity && this.emissiveIntensity !== 1 && (n.emissiveIntensity = this.emissiveIntensity), this.specular && this.specular.isColor && (n.specular = this.specular.getHex()), this.specularIntensity !== void 0 && (n.specularIntensity = this.specularIntensity), this.specularColor && this.specularColor.isColor && (n.specularColor = this.specularColor.getHex()), this.shininess !== void 0 && (n.shininess = this.shininess), this.clearcoat !== void 0 && (n.clearcoat = this.clearcoat), this.clearcoatRoughness !== void 0 && (n.clearcoatRoughness = this.clearcoatRoughness), this.clearcoatMap && this.clearcoatMap.isTexture && (n.clearcoatMap = this.clearcoatMap.toJSON(e).uuid), this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture && (n.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(e).uuid), this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture && (n.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(e).uuid, n.clearcoatNormalScale = this.clearcoatNormalScale.toArray()), this.iridescence !== void 0 && (n.iridescence = this.iridescence), this.iridescenceIOR !== void 0 && (n.iridescenceIOR = this.iridescenceIOR), this.iridescenceThicknessRange !== void 0 && (n.iridescenceThicknessRange = this.iridescenceThicknessRange), this.iridescenceMap && this.iridescenceMap.isTexture && (n.iridescenceMap = this.iridescenceMap.toJSON(e).uuid), this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture && (n.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON(e).uuid), this.anisotropy !== void 0 && (n.anisotropy = this.anisotropy), this.anisotropyRotation !== void 0 && (n.anisotropyRotation = this.anisotropyRotation), this.anisotropyMap && this.anisotropyMap.isTexture && (n.anisotropyMap = this.anisotropyMap.toJSON(e).uuid), this.map && this.map.isTexture && (n.map = this.map.toJSON(e).uuid), this.matcap && this.matcap.isTexture && (n.matcap = this.matcap.toJSON(e).uuid), this.alphaMap && this.alphaMap.isTexture && (n.alphaMap = this.alphaMap.toJSON(e).uuid), this.lightMap && this.lightMap.isTexture && (n.lightMap = this.lightMap.toJSON(e).uuid, n.lightMapIntensity = this.lightMapIntensity), this.aoMap && this.aoMap.isTexture && (n.aoMap = this.aoMap.toJSON(e).uuid, n.aoMapIntensity = this.aoMapIntensity), this.bumpMap && this.bumpMap.isTexture && (n.bumpMap = this.bumpMap.toJSON(e).uuid, n.bumpScale = this.bumpScale), this.normalMap && this.normalMap.isTexture && (n.normalMap = this.normalMap.toJSON(e).uuid, n.normalMapType = this.normalMapType, n.normalScale = this.normalScale.toArray()), this.displacementMap && this.displacementMap.isTexture && (n.displacementMap = this.displacementMap.toJSON(e).uuid, n.displacementScale = this.displacementScale, n.displacementBias = this.displacementBias), this.roughnessMap && this.roughnessMap.isTexture && (n.roughnessMap = this.roughnessMap.toJSON(e).uuid), this.metalnessMap && this.metalnessMap.isTexture && (n.metalnessMap = this.metalnessMap.toJSON(e).uuid), this.emissiveMap && this.emissiveMap.isTexture && (n.emissiveMap = this.emissiveMap.toJSON(e).uuid), this.specularMap && this.specularMap.isTexture && (n.specularMap = this.specularMap.toJSON(e).uuid), this.specularIntensityMap && this.specularIntensityMap.isTexture && (n.specularIntensityMap = this.specularIntensityMap.toJSON(e).uuid), this.specularColorMap && this.specularColorMap.isTexture && (n.specularColorMap = this.specularColorMap.toJSON(e).uuid), this.envMap && this.envMap.isTexture && (n.envMap = this.envMap.toJSON(e).uuid, this.combine !== void 0 && (n.combine = this.combine)), this.envMapIntensity !== void 0 && (n.envMapIntensity = this.envMapIntensity), this.reflectivity !== void 0 && (n.reflectivity = this.reflectivity), this.refractionRatio !== void 0 && (n.refractionRatio = this.refractionRatio), this.gradientMap && this.gradientMap.isTexture && (n.gradientMap = this.gradientMap.toJSON(e).uuid), this.transmission !== void 0 && (n.transmission = this.transmission), this.transmissionMap && this.transmissionMap.isTexture && (n.transmissionMap = this.transmissionMap.toJSON(e).uuid), this.thickness !== void 0 && (n.thickness = this.thickness), this.thicknessMap && this.thicknessMap.isTexture && (n.thicknessMap = this.thicknessMap.toJSON(e).uuid), this.attenuationDistance !== void 0 && this.attenuationDistance !== 1 / 0 && (n.attenuationDistance = this.attenuationDistance), this.attenuationColor !== void 0 && (n.attenuationColor = this.attenuationColor.getHex()), this.size !== void 0 && (n.size = this.size), this.shadowSide !== null && (n.shadowSide = this.shadowSide), this.sizeAttenuation !== void 0 && (n.sizeAttenuation = this.sizeAttenuation), this.blending !== $n && (n.blending = this.blending), this.side !== un && (n.side = this.side), this.vertexColors === !0 && (n.vertexColors = !0), this.opacity < 1 && (n.opacity = this.opacity), this.transparent === !0 && (n.transparent = !0), this.blendSrc !== Kr && (n.blendSrc = this.blendSrc), this.blendDst !== Zr && (n.blendDst = this.blendDst), this.blendEquation !== Mn && (n.blendEquation = this.blendEquation), this.blendSrcAlpha !== null && (n.blendSrcAlpha = this.blendSrcAlpha), this.blendDstAlpha !== null && (n.blendDstAlpha = this.blendDstAlpha), this.blendEquationAlpha !== null && (n.blendEquationAlpha = this.blendEquationAlpha), this.blendColor && this.blendColor.isColor && (n.blendColor = this.blendColor.getHex()), this.blendAlpha !== 0 && (n.blendAlpha = this.blendAlpha), this.depthFunc !== $i && (n.depthFunc = this.depthFunc), this.depthTest === !1 && (n.depthTest = this.depthTest), this.depthWrite === !1 && (n.depthWrite = this.depthWrite), this.colorWrite === !1 && (n.colorWrite = this.colorWrite), this.stencilWriteMask !== 255 && (n.stencilWriteMask = this.stencilWriteMask), this.stencilFunc !== Qs && (n.stencilFunc = this.stencilFunc), this.stencilRef !== 0 && (n.stencilRef = this.stencilRef), this.stencilFuncMask !== 255 && (n.stencilFuncMask = this.stencilFuncMask), this.stencilFail !== Dn && (n.stencilFail = this.stencilFail), this.stencilZFail !== Dn && (n.stencilZFail = this.stencilZFail), this.stencilZPass !== Dn && (n.stencilZPass = this.stencilZPass), this.stencilWrite === !0 && (n.stencilWrite = this.stencilWrite), this.rotation !== void 0 && this.rotation !== 0 && (n.rotation = this.rotation), this.polygonOffset === !0 && (n.polygonOffset = !0), this.polygonOffsetFactor !== 0 && (n.polygonOffsetFactor = this.polygonOffsetFactor), this.polygonOffsetUnits !== 0 && (n.polygonOffsetUnits = this.polygonOffsetUnits), this.linewidth !== void 0 && this.linewidth !== 1 && (n.linewidth = this.linewidth), this.dashSize !== void 0 && (n.dashSize = this.dashSize), this.gapSize !== void 0 && (n.gapSize = this.gapSize), this.scale !== void 0 && (n.scale = this.scale), this.dithering === !0 && (n.dithering = !0), this.alphaTest > 0 && (n.alphaTest = this.alphaTest), this.alphaHash === !0 && (n.alphaHash = !0), this.alphaToCoverage === !0 && (n.alphaToCoverage = !0), this.premultipliedAlpha === !0 && (n.premultipliedAlpha = !0), this.forceSinglePass === !0 && (n.forceSinglePass = !0), this.wireframe === !0 && (n.wireframe = !0), this.wireframeLinewidth > 1 && (n.wireframeLinewidth = this.wireframeLinewidth), this.wireframeLinecap !== "round" && (n.wireframeLinecap = this.wireframeLinecap), this.wireframeLinejoin !== "round" && (n.wireframeLinejoin = this.wireframeLinejoin), this.flatShading === !0 && (n.flatShading = !0), this.visible === !1 && (n.visible = !1), this.toneMapped === !1 && (n.toneMapped = !1), this.fog === !1 && (n.fog = !1), Object.keys(this.userData).length > 0 && (n.userData = this.userData); + function r(s) { + const o = []; + for (const a in s) { + const l = s[a]; + delete l.metadata, o.push(l); + } + return o; + } + if (t) { + const s = r(e.textures), o = r(e.images); + s.length > 0 && (n.textures = s), o.length > 0 && (n.images = o); + } + return n; + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + this.name = e.name, this.blending = e.blending, this.side = e.side, this.vertexColors = e.vertexColors, this.opacity = e.opacity, this.transparent = e.transparent, this.blendSrc = e.blendSrc, this.blendDst = e.blendDst, this.blendEquation = e.blendEquation, this.blendSrcAlpha = e.blendSrcAlpha, this.blendDstAlpha = e.blendDstAlpha, this.blendEquationAlpha = e.blendEquationAlpha, this.blendColor.copy(e.blendColor), this.blendAlpha = e.blendAlpha, this.depthFunc = e.depthFunc, this.depthTest = e.depthTest, this.depthWrite = e.depthWrite, this.stencilWriteMask = e.stencilWriteMask, this.stencilFunc = e.stencilFunc, this.stencilRef = e.stencilRef, this.stencilFuncMask = e.stencilFuncMask, this.stencilFail = e.stencilFail, this.stencilZFail = e.stencilZFail, this.stencilZPass = e.stencilZPass, this.stencilWrite = e.stencilWrite; + const t = e.clippingPlanes; + let n = null; + if (t !== null) { + const r = t.length; + n = new Array(r); + for (let s = 0; s !== r; ++s) + n[s] = t[s].clone(); + } + return this.clippingPlanes = n, this.clipIntersection = e.clipIntersection, this.clipShadows = e.clipShadows, this.shadowSide = e.shadowSide, this.colorWrite = e.colorWrite, this.precision = e.precision, this.polygonOffset = e.polygonOffset, this.polygonOffsetFactor = e.polygonOffsetFactor, this.polygonOffsetUnits = e.polygonOffsetUnits, this.dithering = e.dithering, this.alphaTest = e.alphaTest, this.alphaHash = e.alphaHash, this.alphaToCoverage = e.alphaToCoverage, this.premultipliedAlpha = e.premultipliedAlpha, this.forceSinglePass = e.forceSinglePass, this.visible = e.visible, this.toneMapped = e.toneMapped, this.userData = JSON.parse(JSON.stringify(e.userData)), this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } + set needsUpdate(e) { + e === !0 && this.version++; + } +} +class ls extends Mi { + constructor(e) { + super(), this.isMeshBasicMaterial = !0, this.type = "MeshBasicMaterial", this.color = new Xe(16777215), this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.specularMap = null, this.alphaMap = null, this.envMap = null, this.combine = oo, this.reflectivity = 1, this.refractionRatio = 0.98, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.fog = !0, this.setValues(e); + } + copy(e) { + return super.copy(e), this.color.copy(e.color), this.map = e.map, this.lightMap = e.lightMap, this.lightMapIntensity = e.lightMapIntensity, this.aoMap = e.aoMap, this.aoMapIntensity = e.aoMapIntensity, this.specularMap = e.specularMap, this.alphaMap = e.alphaMap, this.envMap = e.envMap, this.combine = e.combine, this.reflectivity = e.reflectivity, this.refractionRatio = e.refractionRatio, this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.wireframeLinecap = e.wireframeLinecap, this.wireframeLinejoin = e.wireframeLinejoin, this.fog = e.fog, this; + } +} +const at = /* @__PURE__ */ new P(), Ii = /* @__PURE__ */ new Ie(); +class Bt { + constructor(e, t, n = !1) { + if (Array.isArray(e)) + throw new TypeError("THREE.BufferAttribute: array should be a Typed Array."); + this.isBufferAttribute = !0, this.name = "", this.array = e, this.itemSize = t, this.count = e !== void 0 ? e.length / t : 0, this.normalized = n, this.usage = ea, this._updateRange = { offset: 0, count: -1 }, this.updateRanges = [], this.gpuType = an, this.version = 0; + } + onUploadCallback() { + } + set needsUpdate(e) { + e === !0 && this.version++; + } + get updateRange() { + return console.warn("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."), this._updateRange; + } + setUsage(e) { + return this.usage = e, this; + } + addUpdateRange(e, t) { + this.updateRanges.push({ start: e, count: t }); + } + clearUpdateRanges() { + this.updateRanges.length = 0; + } + copy(e) { + return this.name = e.name, this.array = new e.array.constructor(e.array), this.itemSize = e.itemSize, this.count = e.count, this.normalized = e.normalized, this.usage = e.usage, this.gpuType = e.gpuType, this; + } + copyAt(e, t, n) { + e *= this.itemSize, n *= t.itemSize; + for (let r = 0, s = this.itemSize; r < s; r++) + this.array[e + r] = t.array[n + r]; + return this; + } + copyArray(e) { + return this.array.set(e), this; + } + applyMatrix3(e) { + if (this.itemSize === 2) + for (let t = 0, n = this.count; t < n; t++) + Ii.fromBufferAttribute(this, t), Ii.applyMatrix3(e), this.setXY(t, Ii.x, Ii.y); + else if (this.itemSize === 3) + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.applyMatrix3(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + applyMatrix4(e) { + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.applyMatrix4(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + applyNormalMatrix(e) { + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.applyNormalMatrix(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + transformDirection(e) { + for (let t = 0, n = this.count; t < n; t++) + at.fromBufferAttribute(this, t), at.transformDirection(e), this.setXYZ(t, at.x, at.y, at.z); + return this; + } + set(e, t = 0) { + return this.array.set(e, t), this; + } + getComponent(e, t) { + let n = this.array[e * this.itemSize + t]; + return this.normalized && (n = oi(n, this.array)), n; + } + setComponent(e, t, n) { + return this.normalized && (n = xt(n, this.array)), this.array[e * this.itemSize + t] = n, this; + } + getX(e) { + let t = this.array[e * this.itemSize]; + return this.normalized && (t = oi(t, this.array)), t; + } + setX(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize] = t, this; + } + getY(e) { + let t = this.array[e * this.itemSize + 1]; + return this.normalized && (t = oi(t, this.array)), t; + } + setY(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize + 1] = t, this; + } + getZ(e) { + let t = this.array[e * this.itemSize + 2]; + return this.normalized && (t = oi(t, this.array)), t; + } + setZ(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize + 2] = t, this; + } + getW(e) { + let t = this.array[e * this.itemSize + 3]; + return this.normalized && (t = oi(t, this.array)), t; + } + setW(e, t) { + return this.normalized && (t = xt(t, this.array)), this.array[e * this.itemSize + 3] = t, this; + } + setXY(e, t, n) { + return e *= this.itemSize, this.normalized && (t = xt(t, this.array), n = xt(n, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this; + } + setXYZ(e, t, n, r) { + return e *= this.itemSize, this.normalized && (t = xt(t, this.array), n = xt(n, this.array), r = xt(r, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this.array[e + 2] = r, this; + } + setXYZW(e, t, n, r, s) { + return e *= this.itemSize, this.normalized && (t = xt(t, this.array), n = xt(n, this.array), r = xt(r, this.array), s = xt(s, this.array)), this.array[e + 0] = t, this.array[e + 1] = n, this.array[e + 2] = r, this.array[e + 3] = s, this; + } + onUpload(e) { + return this.onUploadCallback = e, this; + } + clone() { + return new this.constructor(this.array, this.itemSize).copy(this); + } + toJSON() { + const e = { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: Array.from(this.array), + normalized: this.normalized + }; + return this.name !== "" && (e.name = this.name), this.usage !== ea && (e.usage = this.usage), e; + } +} +class wo extends Bt { + constructor(e, t, n) { + super(new Uint16Array(e), t, n); + } +} +class Ro extends Bt { + constructor(e, t, n) { + super(new Uint32Array(e), t, n); + } +} +class Ht extends Bt { + constructor(e, t, n) { + super(new Float32Array(e), t, n); + } +} +let lc = 0; +const wt = /* @__PURE__ */ new Qe(), Nr = /* @__PURE__ */ new dt(), Hn = /* @__PURE__ */ new P(), yt = /* @__PURE__ */ new Cn(), hi = /* @__PURE__ */ new Cn(), ut = /* @__PURE__ */ new P(); +class hn extends Rn { + constructor() { + super(), this.isBufferGeometry = !0, Object.defineProperty(this, "id", { value: lc++ }), this.uuid = vi(), this.name = "", this.type = "BufferGeometry", this.index = null, this.attributes = {}, this.morphAttributes = {}, this.morphTargetsRelative = !1, this.groups = [], this.boundingBox = null, this.boundingSphere = null, this.drawRange = { start: 0, count: 1 / 0 }, this.userData = {}; + } + getIndex() { + return this.index; + } + setIndex(e) { + return Array.isArray(e) ? this.index = new (Mo(e) ? Ro : wo)(e, 1) : this.index = e, this; + } + getAttribute(e) { + return this.attributes[e]; + } + setAttribute(e, t) { + return this.attributes[e] = t, this; + } + deleteAttribute(e) { + return delete this.attributes[e], this; + } + hasAttribute(e) { + return this.attributes[e] !== void 0; + } + addGroup(e, t, n = 0) { + this.groups.push({ + start: e, + count: t, + materialIndex: n + }); + } + clearGroups() { + this.groups = []; + } + setDrawRange(e, t) { + this.drawRange.start = e, this.drawRange.count = t; + } + applyMatrix4(e) { + const t = this.attributes.position; + t !== void 0 && (t.applyMatrix4(e), t.needsUpdate = !0); + const n = this.attributes.normal; + if (n !== void 0) { + const s = new Ve().getNormalMatrix(e); + n.applyNormalMatrix(s), n.needsUpdate = !0; + } + const r = this.attributes.tangent; + return r !== void 0 && (r.transformDirection(e), r.needsUpdate = !0), this.boundingBox !== null && this.computeBoundingBox(), this.boundingSphere !== null && this.computeBoundingSphere(), this; + } + applyQuaternion(e) { + return wt.makeRotationFromQuaternion(e), this.applyMatrix4(wt), this; + } + rotateX(e) { + return wt.makeRotationX(e), this.applyMatrix4(wt), this; + } + rotateY(e) { + return wt.makeRotationY(e), this.applyMatrix4(wt), this; + } + rotateZ(e) { + return wt.makeRotationZ(e), this.applyMatrix4(wt), this; + } + translate(e, t, n) { + return wt.makeTranslation(e, t, n), this.applyMatrix4(wt), this; + } + scale(e, t, n) { + return wt.makeScale(e, t, n), this.applyMatrix4(wt), this; + } + lookAt(e) { + return Nr.lookAt(e), Nr.updateMatrix(), this.applyMatrix4(Nr.matrix), this; + } + center() { + return this.computeBoundingBox(), this.boundingBox.getCenter(Hn).negate(), this.translate(Hn.x, Hn.y, Hn.z), this; + } + setFromPoints(e) { + const t = []; + for (let n = 0, r = e.length; n < r; n++) { + const s = e[n]; + t.push(s.x, s.y, s.z || 0); + } + return this.setAttribute("position", new Ht(t, 3)), this; + } + computeBoundingBox() { + this.boundingBox === null && (this.boundingBox = new Cn()); + const e = this.attributes.position, t = this.morphAttributes.position; + if (e && e.isGLBufferAttribute) { + console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".', this), this.boundingBox.set( + new P(-1 / 0, -1 / 0, -1 / 0), + new P(1 / 0, 1 / 0, 1 / 0) + ); + return; + } + if (e !== void 0) { + if (this.boundingBox.setFromBufferAttribute(e), t) + for (let n = 0, r = t.length; n < r; n++) { + const s = t[n]; + yt.setFromBufferAttribute(s), this.morphTargetsRelative ? (ut.addVectors(this.boundingBox.min, yt.min), this.boundingBox.expandByPoint(ut), ut.addVectors(this.boundingBox.max, yt.max), this.boundingBox.expandByPoint(ut)) : (this.boundingBox.expandByPoint(yt.min), this.boundingBox.expandByPoint(yt.max)); + } + } else + this.boundingBox.makeEmpty(); + (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) && console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this); + } + computeBoundingSphere() { + this.boundingSphere === null && (this.boundingSphere = new xi()); + const e = this.attributes.position, t = this.morphAttributes.position; + if (e && e.isGLBufferAttribute) { + console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".', this), this.boundingSphere.set(new P(), 1 / 0); + return; + } + if (e) { + const n = this.boundingSphere.center; + if (yt.setFromBufferAttribute(e), t) + for (let s = 0, o = t.length; s < o; s++) { + const a = t[s]; + hi.setFromBufferAttribute(a), this.morphTargetsRelative ? (ut.addVectors(yt.min, hi.min), yt.expandByPoint(ut), ut.addVectors(yt.max, hi.max), yt.expandByPoint(ut)) : (yt.expandByPoint(hi.min), yt.expandByPoint(hi.max)); + } + yt.getCenter(n); + let r = 0; + for (let s = 0, o = e.count; s < o; s++) + ut.fromBufferAttribute(e, s), r = Math.max(r, n.distanceToSquared(ut)); + if (t) + for (let s = 0, o = t.length; s < o; s++) { + const a = t[s], l = this.morphTargetsRelative; + for (let c = 0, h = a.count; c < h; c++) + ut.fromBufferAttribute(a, c), l && (Hn.fromBufferAttribute(e, c), ut.add(Hn)), r = Math.max(r, n.distanceToSquared(ut)); + } + this.boundingSphere.radius = Math.sqrt(r), isNaN(this.boundingSphere.radius) && console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this); + } + } + computeTangents() { + const e = this.index, t = this.attributes; + if (e === null || t.position === void 0 || t.normal === void 0 || t.uv === void 0) { + console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)"); + return; + } + const n = e.array, r = t.position.array, s = t.normal.array, o = t.uv.array, a = r.length / 3; + this.hasAttribute("tangent") === !1 && this.setAttribute("tangent", new Bt(new Float32Array(4 * a), 4)); + const l = this.getAttribute("tangent").array, c = [], h = []; + for (let y = 0; y < a; y++) + c[y] = new P(), h[y] = new P(); + const d = new P(), p = new P(), m = new P(), g = new Ie(), v = new Ie(), f = new Ie(), u = new P(), b = new P(); + function S(y, z, Z) { + d.fromArray(r, y * 3), p.fromArray(r, z * 3), m.fromArray(r, Z * 3), g.fromArray(o, y * 2), v.fromArray(o, z * 2), f.fromArray(o, Z * 2), p.sub(d), m.sub(d), v.sub(g), f.sub(g); + const re = 1 / (v.x * f.y - f.x * v.y); + isFinite(re) && (u.copy(p).multiplyScalar(f.y).addScaledVector(m, -v.y).multiplyScalar(re), b.copy(m).multiplyScalar(v.x).addScaledVector(p, -f.x).multiplyScalar(re), c[y].add(u), c[z].add(u), c[Z].add(u), h[y].add(b), h[z].add(b), h[Z].add(b)); + } + let R = this.groups; + R.length === 0 && (R = [{ + start: 0, + count: n.length + }]); + for (let y = 0, z = R.length; y < z; ++y) { + const Z = R[y], re = Z.start, L = Z.count; + for (let F = re, V = re + L; F < V; F += 3) + S( + n[F + 0], + n[F + 1], + n[F + 2] + ); + } + const D = new P(), C = new P(), A = new P(), W = new P(); + function x(y) { + A.fromArray(s, y * 3), W.copy(A); + const z = c[y]; + D.copy(z), D.sub(A.multiplyScalar(A.dot(z))).normalize(), C.crossVectors(W, z); + const re = C.dot(h[y]) < 0 ? -1 : 1; + l[y * 4] = D.x, l[y * 4 + 1] = D.y, l[y * 4 + 2] = D.z, l[y * 4 + 3] = re; + } + for (let y = 0, z = R.length; y < z; ++y) { + const Z = R[y], re = Z.start, L = Z.count; + for (let F = re, V = re + L; F < V; F += 3) + x(n[F + 0]), x(n[F + 1]), x(n[F + 2]); + } + } + computeVertexNormals() { + const e = this.index, t = this.getAttribute("position"); + if (t !== void 0) { + let n = this.getAttribute("normal"); + if (n === void 0) + n = new Bt(new Float32Array(t.count * 3), 3), this.setAttribute("normal", n); + else + for (let p = 0, m = n.count; p < m; p++) + n.setXYZ(p, 0, 0, 0); + const r = new P(), s = new P(), o = new P(), a = new P(), l = new P(), c = new P(), h = new P(), d = new P(); + if (e) + for (let p = 0, m = e.count; p < m; p += 3) { + const g = e.getX(p + 0), v = e.getX(p + 1), f = e.getX(p + 2); + r.fromBufferAttribute(t, g), s.fromBufferAttribute(t, v), o.fromBufferAttribute(t, f), h.subVectors(o, s), d.subVectors(r, s), h.cross(d), a.fromBufferAttribute(n, g), l.fromBufferAttribute(n, v), c.fromBufferAttribute(n, f), a.add(h), l.add(h), c.add(h), n.setXYZ(g, a.x, a.y, a.z), n.setXYZ(v, l.x, l.y, l.z), n.setXYZ(f, c.x, c.y, c.z); + } + else + for (let p = 0, m = t.count; p < m; p += 3) + r.fromBufferAttribute(t, p + 0), s.fromBufferAttribute(t, p + 1), o.fromBufferAttribute(t, p + 2), h.subVectors(o, s), d.subVectors(r, s), h.cross(d), n.setXYZ(p + 0, h.x, h.y, h.z), n.setXYZ(p + 1, h.x, h.y, h.z), n.setXYZ(p + 2, h.x, h.y, h.z); + this.normalizeNormals(), n.needsUpdate = !0; + } + } + normalizeNormals() { + const e = this.attributes.normal; + for (let t = 0, n = e.count; t < n; t++) + ut.fromBufferAttribute(e, t), ut.normalize(), e.setXYZ(t, ut.x, ut.y, ut.z); + } + toNonIndexed() { + function e(a, l) { + const c = a.array, h = a.itemSize, d = a.normalized, p = new c.constructor(l.length * h); + let m = 0, g = 0; + for (let v = 0, f = l.length; v < f; v++) { + a.isInterleavedBufferAttribute ? m = l[v] * a.data.stride + a.offset : m = l[v] * h; + for (let u = 0; u < h; u++) + p[g++] = c[m++]; + } + return new Bt(p, h, d); + } + if (this.index === null) + return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."), this; + const t = new hn(), n = this.index.array, r = this.attributes; + for (const a in r) { + const l = r[a], c = e(l, n); + t.setAttribute(a, c); + } + const s = this.morphAttributes; + for (const a in s) { + const l = [], c = s[a]; + for (let h = 0, d = c.length; h < d; h++) { + const p = c[h], m = e(p, n); + l.push(m); + } + t.morphAttributes[a] = l; + } + t.morphTargetsRelative = this.morphTargetsRelative; + const o = this.groups; + for (let a = 0, l = o.length; a < l; a++) { + const c = o[a]; + t.addGroup(c.start, c.count, c.materialIndex); + } + return t; + } + toJSON() { + const e = { + metadata: { + version: 4.6, + type: "BufferGeometry", + generator: "BufferGeometry.toJSON" + } + }; + if (e.uuid = this.uuid, e.type = this.type, this.name !== "" && (e.name = this.name), Object.keys(this.userData).length > 0 && (e.userData = this.userData), this.parameters !== void 0) { + const l = this.parameters; + for (const c in l) + l[c] !== void 0 && (e[c] = l[c]); + return e; + } + e.data = { attributes: {} }; + const t = this.index; + t !== null && (e.data.index = { + type: t.array.constructor.name, + array: Array.prototype.slice.call(t.array) + }); + const n = this.attributes; + for (const l in n) { + const c = n[l]; + e.data.attributes[l] = c.toJSON(e.data); + } + const r = {}; + let s = !1; + for (const l in this.morphAttributes) { + const c = this.morphAttributes[l], h = []; + for (let d = 0, p = c.length; d < p; d++) { + const m = c[d]; + h.push(m.toJSON(e.data)); + } + h.length > 0 && (r[l] = h, s = !0); + } + s && (e.data.morphAttributes = r, e.data.morphTargetsRelative = this.morphTargetsRelative); + const o = this.groups; + o.length > 0 && (e.data.groups = JSON.parse(JSON.stringify(o))); + const a = this.boundingSphere; + return a !== null && (e.data.boundingSphere = { + center: a.center.toArray(), + radius: a.radius + }), e; + } + clone() { + return new this.constructor().copy(this); + } + copy(e) { + this.index = null, this.attributes = {}, this.morphAttributes = {}, this.groups = [], this.boundingBox = null, this.boundingSphere = null; + const t = {}; + this.name = e.name; + const n = e.index; + n !== null && this.setIndex(n.clone(t)); + const r = e.attributes; + for (const c in r) { + const h = r[c]; + this.setAttribute(c, h.clone(t)); + } + const s = e.morphAttributes; + for (const c in s) { + const h = [], d = s[c]; + for (let p = 0, m = d.length; p < m; p++) + h.push(d[p].clone(t)); + this.morphAttributes[c] = h; + } + this.morphTargetsRelative = e.morphTargetsRelative; + const o = e.groups; + for (let c = 0, h = o.length; c < h; c++) { + const d = o[c]; + this.addGroup(d.start, d.count, d.materialIndex); + } + const a = e.boundingBox; + a !== null && (this.boundingBox = a.clone()); + const l = e.boundingSphere; + return l !== null && (this.boundingSphere = l.clone()), this.drawRange.start = e.drawRange.start, this.drawRange.count = e.drawRange.count, this.userData = e.userData, this; + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +} +const pa = /* @__PURE__ */ new Qe(), gn = /* @__PURE__ */ new To(), Ni = /* @__PURE__ */ new xi(), ma = /* @__PURE__ */ new P(), Vn = /* @__PURE__ */ new P(), kn = /* @__PURE__ */ new P(), Wn = /* @__PURE__ */ new P(), Fr = /* @__PURE__ */ new P(), Fi = /* @__PURE__ */ new P(), Oi = /* @__PURE__ */ new Ie(), Bi = /* @__PURE__ */ new Ie(), zi = /* @__PURE__ */ new Ie(), _a = /* @__PURE__ */ new P(), ga = /* @__PURE__ */ new P(), va = /* @__PURE__ */ new P(), Gi = /* @__PURE__ */ new P(), Hi = /* @__PURE__ */ new P(); +class Ot extends dt { + constructor(e = new hn(), t = new ls()) { + super(), this.isMesh = !0, this.type = "Mesh", this.geometry = e, this.material = t, this.updateMorphTargets(); + } + copy(e, t) { + return super.copy(e, t), e.morphTargetInfluences !== void 0 && (this.morphTargetInfluences = e.morphTargetInfluences.slice()), e.morphTargetDictionary !== void 0 && (this.morphTargetDictionary = Object.assign({}, e.morphTargetDictionary)), this.material = Array.isArray(e.material) ? e.material.slice() : e.material, this.geometry = e.geometry, this; + } + updateMorphTargets() { + const t = this.geometry.morphAttributes, n = Object.keys(t); + if (n.length > 0) { + const r = t[n[0]]; + if (r !== void 0) { + this.morphTargetInfluences = [], this.morphTargetDictionary = {}; + for (let s = 0, o = r.length; s < o; s++) { + const a = r[s].name || String(s); + this.morphTargetInfluences.push(0), this.morphTargetDictionary[a] = s; + } + } + } + } + getVertexPosition(e, t) { + const n = this.geometry, r = n.attributes.position, s = n.morphAttributes.position, o = n.morphTargetsRelative; + t.fromBufferAttribute(r, e); + const a = this.morphTargetInfluences; + if (s && a) { + Fi.set(0, 0, 0); + for (let l = 0, c = s.length; l < c; l++) { + const h = a[l], d = s[l]; + h !== 0 && (Fr.fromBufferAttribute(d, e), o ? Fi.addScaledVector(Fr, h) : Fi.addScaledVector(Fr.sub(t), h)); + } + t.add(Fi); + } + return t; + } + raycast(e, t) { + const n = this.geometry, r = this.material, s = this.matrixWorld; + r !== void 0 && (n.boundingSphere === null && n.computeBoundingSphere(), Ni.copy(n.boundingSphere), Ni.applyMatrix4(s), gn.copy(e.ray).recast(e.near), !(Ni.containsPoint(gn.origin) === !1 && (gn.intersectSphere(Ni, ma) === null || gn.origin.distanceToSquared(ma) > (e.far - e.near) ** 2)) && (pa.copy(s).invert(), gn.copy(e.ray).applyMatrix4(pa), !(n.boundingBox !== null && gn.intersectsBox(n.boundingBox) === !1) && this._computeIntersections(e, t, gn))); + } + _computeIntersections(e, t, n) { + let r; + const s = this.geometry, o = this.material, a = s.index, l = s.attributes.position, c = s.attributes.uv, h = s.attributes.uv1, d = s.attributes.normal, p = s.groups, m = s.drawRange; + if (a !== null) + if (Array.isArray(o)) + for (let g = 0, v = p.length; g < v; g++) { + const f = p[g], u = o[f.materialIndex], b = Math.max(f.start, m.start), S = Math.min(a.count, Math.min(f.start + f.count, m.start + m.count)); + for (let R = b, D = S; R < D; R += 3) { + const C = a.getX(R), A = a.getX(R + 1), W = a.getX(R + 2); + r = Vi(this, u, e, n, c, h, d, C, A, W), r && (r.faceIndex = Math.floor(R / 3), r.face.materialIndex = f.materialIndex, t.push(r)); + } + } + else { + const g = Math.max(0, m.start), v = Math.min(a.count, m.start + m.count); + for (let f = g, u = v; f < u; f += 3) { + const b = a.getX(f), S = a.getX(f + 1), R = a.getX(f + 2); + r = Vi(this, o, e, n, c, h, d, b, S, R), r && (r.faceIndex = Math.floor(f / 3), t.push(r)); + } + } + else if (l !== void 0) + if (Array.isArray(o)) + for (let g = 0, v = p.length; g < v; g++) { + const f = p[g], u = o[f.materialIndex], b = Math.max(f.start, m.start), S = Math.min(l.count, Math.min(f.start + f.count, m.start + m.count)); + for (let R = b, D = S; R < D; R += 3) { + const C = R, A = R + 1, W = R + 2; + r = Vi(this, u, e, n, c, h, d, C, A, W), r && (r.faceIndex = Math.floor(R / 3), r.face.materialIndex = f.materialIndex, t.push(r)); + } + } + else { + const g = Math.max(0, m.start), v = Math.min(l.count, m.start + m.count); + for (let f = g, u = v; f < u; f += 3) { + const b = f, S = f + 1, R = f + 2; + r = Vi(this, o, e, n, c, h, d, b, S, R), r && (r.faceIndex = Math.floor(f / 3), t.push(r)); + } + } + } +} +function cc(i, e, t, n, r, s, o, a) { + let l; + if (e.side === Mt ? l = n.intersectTriangle(o, s, r, !0, a) : l = n.intersectTriangle(r, s, o, e.side === un, a), l === null) return null; + Hi.copy(a), Hi.applyMatrix4(i.matrixWorld); + const c = t.ray.origin.distanceTo(Hi); + return c < t.near || c > t.far ? null : { + distance: c, + point: Hi.clone(), + object: i + }; +} +function Vi(i, e, t, n, r, s, o, a, l, c) { + i.getVertexPosition(a, Vn), i.getVertexPosition(l, kn), i.getVertexPosition(c, Wn); + const h = cc(i, e, t, n, Vn, kn, Wn, Gi); + if (h) { + r && (Oi.fromBufferAttribute(r, a), Bi.fromBufferAttribute(r, l), zi.fromBufferAttribute(r, c), h.uv = It.getInterpolation(Gi, Vn, kn, Wn, Oi, Bi, zi, new Ie())), s && (Oi.fromBufferAttribute(s, a), Bi.fromBufferAttribute(s, l), zi.fromBufferAttribute(s, c), h.uv1 = It.getInterpolation(Gi, Vn, kn, Wn, Oi, Bi, zi, new Ie()), h.uv2 = h.uv1), o && (_a.fromBufferAttribute(o, a), ga.fromBufferAttribute(o, l), va.fromBufferAttribute(o, c), h.normal = It.getInterpolation(Gi, Vn, kn, Wn, _a, ga, va, new P()), h.normal.dot(n.direction) > 0 && h.normal.multiplyScalar(-1)); + const d = { + a, + b: l, + c, + normal: new P(), + materialIndex: 0 + }; + It.getNormal(Vn, kn, Wn, d.normal), h.face = d; + } + return h; +} +class ii extends hn { + constructor(e = 1, t = 1, n = 1, r = 1, s = 1, o = 1) { + super(), this.type = "BoxGeometry", this.parameters = { + width: e, + height: t, + depth: n, + widthSegments: r, + heightSegments: s, + depthSegments: o + }; + const a = this; + r = Math.floor(r), s = Math.floor(s), o = Math.floor(o); + const l = [], c = [], h = [], d = []; + let p = 0, m = 0; + g("z", "y", "x", -1, -1, n, t, e, o, s, 0), g("z", "y", "x", 1, -1, n, t, -e, o, s, 1), g("x", "z", "y", 1, 1, e, n, t, r, o, 2), g("x", "z", "y", 1, -1, e, n, -t, r, o, 3), g("x", "y", "z", 1, -1, e, t, n, r, s, 4), g("x", "y", "z", -1, -1, e, t, -n, r, s, 5), this.setIndex(l), this.setAttribute("position", new Ht(c, 3)), this.setAttribute("normal", new Ht(h, 3)), this.setAttribute("uv", new Ht(d, 2)); + function g(v, f, u, b, S, R, D, C, A, W, x) { + const y = R / A, z = D / W, Z = R / 2, re = D / 2, L = C / 2, F = A + 1, V = W + 1; + let Y = 0, X = 0; + const k = new P(); + for (let q = 0; q < V; q++) { + const Q = q * z - re; + for (let ce = 0; ce < F; ce++) { + const H = ce * y - Z; + k[v] = H * b, k[f] = Q * S, k[u] = L, c.push(k.x, k.y, k.z), k[v] = 0, k[f] = 0, k[u] = C > 0 ? 1 : -1, h.push(k.x, k.y, k.z), d.push(ce / A), d.push(1 - q / W), Y += 1; + } + } + for (let q = 0; q < W; q++) + for (let Q = 0; Q < A; Q++) { + const ce = p + Q + F * q, H = p + Q + F * (q + 1), j = p + (Q + 1) + F * (q + 1), oe = p + (Q + 1) + F * q; + l.push(ce, H, oe), l.push(H, j, oe), X += 6; + } + a.addGroup(m, X, x), m += X, p += Y; + } + } + copy(e) { + return super.copy(e), this.parameters = Object.assign({}, e.parameters), this; + } + static fromJSON(e) { + return new ii(e.width, e.height, e.depth, e.widthSegments, e.heightSegments, e.depthSegments); + } +} +function ni(i) { + const e = {}; + for (const t in i) { + e[t] = {}; + for (const n in i[t]) { + const r = i[t][n]; + r && (r.isColor || r.isMatrix3 || r.isMatrix4 || r.isVector2 || r.isVector3 || r.isVector4 || r.isTexture || r.isQuaternion) ? r.isRenderTargetTexture ? (console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."), e[t][n] = null) : e[t][n] = r.clone() : Array.isArray(r) ? e[t][n] = r.slice() : e[t][n] = r; + } + } + return e; +} +function _t(i) { + const e = {}; + for (let t = 0; t < i.length; t++) { + const n = ni(i[t]); + for (const r in n) + e[r] = n[r]; + } + return e; +} +function uc(i) { + const e = []; + for (let t = 0; t < i.length; t++) + e.push(i[t].clone()); + return e; +} +function Co(i) { + return i.getRenderTarget() === null ? i.outputColorSpace : Ke.workingColorSpace; +} +const hc = { clone: ni, merge: _t }; +var dc = `void main() { + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); +}`, fc = `void main() { + gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 ); +}`; +class wn extends Mi { + constructor(e) { + super(), this.isShaderMaterial = !0, this.type = "ShaderMaterial", this.defines = {}, this.uniforms = {}, this.uniformsGroups = [], this.vertexShader = dc, this.fragmentShader = fc, this.linewidth = 1, this.wireframe = !1, this.wireframeLinewidth = 1, this.fog = !1, this.lights = !1, this.clipping = !1, this.forceSinglePass = !0, this.extensions = { + derivatives: !1, + // set to use derivatives + fragDepth: !1, + // set to use fragment depth values + drawBuffers: !1, + // set to use draw buffers + shaderTextureLOD: !1, + // set to use shader texture LOD + clipCullDistance: !1 + // set to use vertex shader clipping + }, this.defaultAttributeValues = { + color: [1, 1, 1], + uv: [0, 0], + uv1: [0, 0] + }, this.index0AttributeName = void 0, this.uniformsNeedUpdate = !1, this.glslVersion = null, e !== void 0 && this.setValues(e); + } + copy(e) { + return super.copy(e), this.fragmentShader = e.fragmentShader, this.vertexShader = e.vertexShader, this.uniforms = ni(e.uniforms), this.uniformsGroups = uc(e.uniformsGroups), this.defines = Object.assign({}, e.defines), this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.fog = e.fog, this.lights = e.lights, this.clipping = e.clipping, this.extensions = Object.assign({}, e.extensions), this.glslVersion = e.glslVersion, this; + } + toJSON(e) { + const t = super.toJSON(e); + t.glslVersion = this.glslVersion, t.uniforms = {}; + for (const r in this.uniforms) { + const o = this.uniforms[r].value; + o && o.isTexture ? t.uniforms[r] = { + type: "t", + value: o.toJSON(e).uuid + } : o && o.isColor ? t.uniforms[r] = { + type: "c", + value: o.getHex() + } : o && o.isVector2 ? t.uniforms[r] = { + type: "v2", + value: o.toArray() + } : o && o.isVector3 ? t.uniforms[r] = { + type: "v3", + value: o.toArray() + } : o && o.isVector4 ? t.uniforms[r] = { + type: "v4", + value: o.toArray() + } : o && o.isMatrix3 ? t.uniforms[r] = { + type: "m3", + value: o.toArray() + } : o && o.isMatrix4 ? t.uniforms[r] = { + type: "m4", + value: o.toArray() + } : t.uniforms[r] = { + value: o + }; + } + Object.keys(this.defines).length > 0 && (t.defines = this.defines), t.vertexShader = this.vertexShader, t.fragmentShader = this.fragmentShader, t.lights = this.lights, t.clipping = this.clipping; + const n = {}; + for (const r in this.extensions) + this.extensions[r] === !0 && (n[r] = !0); + return Object.keys(n).length > 0 && (t.extensions = n), t; + } +} +class Lo extends dt { + constructor() { + super(), this.isCamera = !0, this.type = "Camera", this.matrixWorldInverse = new Qe(), this.projectionMatrix = new Qe(), this.projectionMatrixInverse = new Qe(), this.coordinateSystem = Zt; + } + copy(e, t) { + return super.copy(e, t), this.matrixWorldInverse.copy(e.matrixWorldInverse), this.projectionMatrix.copy(e.projectionMatrix), this.projectionMatrixInverse.copy(e.projectionMatrixInverse), this.coordinateSystem = e.coordinateSystem, this; + } + getWorldDirection(e) { + return super.getWorldDirection(e).negate(); + } + updateMatrixWorld(e) { + super.updateMatrixWorld(e), this.matrixWorldInverse.copy(this.matrixWorld).invert(); + } + updateWorldMatrix(e, t) { + super.updateWorldMatrix(e, t), this.matrixWorldInverse.copy(this.matrixWorld).invert(); + } + clone() { + return new this.constructor().copy(this); + } +} +class Tt extends Lo { + constructor(e = 50, t = 1, n = 0.1, r = 2e3) { + super(), this.isPerspectiveCamera = !0, this.type = "PerspectiveCamera", this.fov = e, this.zoom = 1, this.near = n, this.far = r, this.focus = 10, this.aspect = t, this.view = null, this.filmGauge = 35, this.filmOffset = 0, this.updateProjectionMatrix(); + } + copy(e, t) { + return super.copy(e, t), this.fov = e.fov, this.zoom = e.zoom, this.near = e.near, this.far = e.far, this.focus = e.focus, this.aspect = e.aspect, this.view = e.view === null ? null : Object.assign({}, e.view), this.filmGauge = e.filmGauge, this.filmOffset = e.filmOffset, this; + } + /** + * Sets the FOV by focal length in respect to the current .filmGauge. + * + * The default film gauge is 35, so that the focal length can be specified for + * a 35mm (full frame) camera. + * + * Values for focal length and film gauge must have the same unit. + */ + setFocalLength(e) { + const t = 0.5 * this.getFilmHeight() / e; + this.fov = ns * 2 * Math.atan(t), this.updateProjectionMatrix(); + } + /** + * Calculates the focal length from the current .fov and .filmGauge. + */ + getFocalLength() { + const e = Math.tan(Ki * 0.5 * this.fov); + return 0.5 * this.getFilmHeight() / e; + } + getEffectiveFOV() { + return ns * 2 * Math.atan( + Math.tan(Ki * 0.5 * this.fov) / this.zoom + ); + } + getFilmWidth() { + return this.filmGauge * Math.min(this.aspect, 1); + } + getFilmHeight() { + return this.filmGauge / Math.max(this.aspect, 1); + } + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and + * the monitors are in grid like this + * + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + * + * then for each monitor you would call it like this + * + * const w = 1920; + * const h = 1080; + * const fullWidth = w * 3; + * const fullHeight = h * 2; + * + * --A-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * --B-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * --C-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * --D-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * --E-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * --F-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); + * + * Note there is no reason monitors have to be the same size or in a grid. + */ + setViewOffset(e, t, n, r, s, o) { + this.aspect = e / t, this.view === null && (this.view = { + enabled: !0, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }), this.view.enabled = !0, this.view.fullWidth = e, this.view.fullHeight = t, this.view.offsetX = n, this.view.offsetY = r, this.view.width = s, this.view.height = o, this.updateProjectionMatrix(); + } + clearViewOffset() { + this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix(); + } + updateProjectionMatrix() { + const e = this.near; + let t = e * Math.tan(Ki * 0.5 * this.fov) / this.zoom, n = 2 * t, r = this.aspect * n, s = -0.5 * r; + const o = this.view; + if (this.view !== null && this.view.enabled) { + const l = o.fullWidth, c = o.fullHeight; + s += o.offsetX * r / l, t -= o.offsetY * n / c, r *= o.width / l, n *= o.height / c; + } + const a = this.filmOffset; + a !== 0 && (s += e * a / this.getFilmWidth()), this.projectionMatrix.makePerspective(s, s + r, t, t - n, e, this.far, this.coordinateSystem), this.projectionMatrixInverse.copy(this.projectionMatrix).invert(); + } + toJSON(e) { + const t = super.toJSON(e); + return t.object.fov = this.fov, t.object.zoom = this.zoom, t.object.near = this.near, t.object.far = this.far, t.object.focus = this.focus, t.object.aspect = this.aspect, this.view !== null && (t.object.view = Object.assign({}, this.view)), t.object.filmGauge = this.filmGauge, t.object.filmOffset = this.filmOffset, t; + } +} +const Xn = -90, qn = 1; +class pc extends dt { + constructor(e, t, n) { + super(), this.type = "CubeCamera", this.renderTarget = n, this.coordinateSystem = null, this.activeMipmapLevel = 0; + const r = new Tt(Xn, qn, e, t); + r.layers = this.layers, this.add(r); + const s = new Tt(Xn, qn, e, t); + s.layers = this.layers, this.add(s); + const o = new Tt(Xn, qn, e, t); + o.layers = this.layers, this.add(o); + const a = new Tt(Xn, qn, e, t); + a.layers = this.layers, this.add(a); + const l = new Tt(Xn, qn, e, t); + l.layers = this.layers, this.add(l); + const c = new Tt(Xn, qn, e, t); + c.layers = this.layers, this.add(c); + } + updateCoordinateSystem() { + const e = this.coordinateSystem, t = this.children.concat(), [n, r, s, o, a, l] = t; + for (const c of t) this.remove(c); + if (e === Zt) + n.up.set(0, 1, 0), n.lookAt(1, 0, 0), r.up.set(0, 1, 0), r.lookAt(-1, 0, 0), s.up.set(0, 0, -1), s.lookAt(0, 1, 0), o.up.set(0, 0, 1), o.lookAt(0, -1, 0), a.up.set(0, 1, 0), a.lookAt(0, 0, 1), l.up.set(0, 1, 0), l.lookAt(0, 0, -1); + else if (e === tr) + n.up.set(0, -1, 0), n.lookAt(-1, 0, 0), r.up.set(0, -1, 0), r.lookAt(1, 0, 0), s.up.set(0, 0, 1), s.lookAt(0, 1, 0), o.up.set(0, 0, -1), o.lookAt(0, -1, 0), a.up.set(0, -1, 0), a.lookAt(0, 0, 1), l.up.set(0, -1, 0), l.lookAt(0, 0, -1); + else + throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: " + e); + for (const c of t) + this.add(c), c.updateMatrixWorld(); + } + update(e, t) { + this.parent === null && this.updateMatrixWorld(); + const { renderTarget: n, activeMipmapLevel: r } = this; + this.coordinateSystem !== e.coordinateSystem && (this.coordinateSystem = e.coordinateSystem, this.updateCoordinateSystem()); + const [s, o, a, l, c, h] = this.children, d = e.getRenderTarget(), p = e.getActiveCubeFace(), m = e.getActiveMipmapLevel(), g = e.xr.enabled; + e.xr.enabled = !1; + const v = n.texture.generateMipmaps; + n.texture.generateMipmaps = !1, e.setRenderTarget(n, 0, r), e.render(t, s), e.setRenderTarget(n, 1, r), e.render(t, o), e.setRenderTarget(n, 2, r), e.render(t, a), e.setRenderTarget(n, 3, r), e.render(t, l), e.setRenderTarget(n, 4, r), e.render(t, c), n.texture.generateMipmaps = v, e.setRenderTarget(n, 5, r), e.render(t, h), e.setRenderTarget(d, p, m), e.xr.enabled = g, n.texture.needsPMREMUpdate = !0; + } +} +class Po extends bt { + constructor(e, t, n, r, s, o, a, l, c, h) { + e = e !== void 0 ? e : [], t = t !== void 0 ? t : Qn, super(e, t, n, r, s, o, a, l, c, h), this.isCubeTexture = !0, this.flipY = !1; + } + get images() { + return this.image; + } + set images(e) { + this.image = e; + } +} +class mc extends bn { + constructor(e = 1, t = {}) { + super(e, e, t), this.isWebGLCubeRenderTarget = !0; + const n = { width: e, height: e, depth: 1 }, r = [n, n, n, n, n, n]; + t.encoding !== void 0 && (mi("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."), t.colorSpace = t.encoding === Tn ? ht : Ct), this.texture = new Po(r, t.mapping, t.wrapS, t.wrapT, t.magFilter, t.minFilter, t.format, t.type, t.anisotropy, t.colorSpace), this.texture.isRenderTargetTexture = !0, this.texture.generateMipmaps = t.generateMipmaps !== void 0 ? t.generateMipmaps : !1, this.texture.minFilter = t.minFilter !== void 0 ? t.minFilter : Rt; + } + fromEquirectangularTexture(e, t) { + this.texture.type = t.type, this.texture.colorSpace = t.colorSpace, this.texture.generateMipmaps = t.generateMipmaps, this.texture.minFilter = t.minFilter, this.texture.magFilter = t.magFilter; + const n = { + uniforms: { + tEquirect: { value: null } + }, + vertexShader: ( + /* glsl */ + ` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + ` + ), + fragmentShader: ( + /* glsl */ + ` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + ` + ) + }, r = new ii(5, 5, 5), s = new wn({ + name: "CubemapFromEquirect", + uniforms: ni(n.uniforms), + vertexShader: n.vertexShader, + fragmentShader: n.fragmentShader, + side: Mt, + blending: on + }); + s.uniforms.tEquirect.value = t; + const o = new Ot(r, s), a = t.minFilter; + return t.minFilter === _i && (t.minFilter = Rt), new pc(1, 10, this).update(e, o), t.minFilter = a, o.geometry.dispose(), o.material.dispose(), this; + } + clear(e, t, n, r) { + const s = e.getRenderTarget(); + for (let o = 0; o < 6; o++) + e.setRenderTarget(this, o), e.clear(t, n, r); + e.setRenderTarget(s); + } +} +const Or = /* @__PURE__ */ new P(), _c = /* @__PURE__ */ new P(), gc = /* @__PURE__ */ new Ve(); +class rn { + constructor(e = new P(1, 0, 0), t = 0) { + this.isPlane = !0, this.normal = e, this.constant = t; + } + set(e, t) { + return this.normal.copy(e), this.constant = t, this; + } + setComponents(e, t, n, r) { + return this.normal.set(e, t, n), this.constant = r, this; + } + setFromNormalAndCoplanarPoint(e, t) { + return this.normal.copy(e), this.constant = -t.dot(this.normal), this; + } + setFromCoplanarPoints(e, t, n) { + const r = Or.subVectors(n, t).cross(_c.subVectors(e, t)).normalize(); + return this.setFromNormalAndCoplanarPoint(r, e), this; + } + copy(e) { + return this.normal.copy(e.normal), this.constant = e.constant, this; + } + normalize() { + const e = 1 / this.normal.length(); + return this.normal.multiplyScalar(e), this.constant *= e, this; + } + negate() { + return this.constant *= -1, this.normal.negate(), this; + } + distanceToPoint(e) { + return this.normal.dot(e) + this.constant; + } + distanceToSphere(e) { + return this.distanceToPoint(e.center) - e.radius; + } + projectPoint(e, t) { + return t.copy(e).addScaledVector(this.normal, -this.distanceToPoint(e)); + } + intersectLine(e, t) { + const n = e.delta(Or), r = this.normal.dot(n); + if (r === 0) + return this.distanceToPoint(e.start) === 0 ? t.copy(e.start) : null; + const s = -(e.start.dot(this.normal) + this.constant) / r; + return s < 0 || s > 1 ? null : t.copy(e.start).addScaledVector(n, s); + } + intersectsLine(e) { + const t = this.distanceToPoint(e.start), n = this.distanceToPoint(e.end); + return t < 0 && n > 0 || n < 0 && t > 0; + } + intersectsBox(e) { + return e.intersectsPlane(this); + } + intersectsSphere(e) { + return e.intersectsPlane(this); + } + coplanarPoint(e) { + return e.copy(this.normal).multiplyScalar(-this.constant); + } + applyMatrix4(e, t) { + const n = t || gc.getNormalMatrix(e), r = this.coplanarPoint(Or).applyMatrix4(e), s = this.normal.applyMatrix3(n).normalize(); + return this.constant = -r.dot(s), this; + } + translate(e) { + return this.constant -= e.dot(this.normal), this; + } + equals(e) { + return e.normal.equals(this.normal) && e.constant === this.constant; + } + clone() { + return new this.constructor().copy(this); + } +} +const vn = /* @__PURE__ */ new xi(), ki = /* @__PURE__ */ new P(); +class cs { + constructor(e = new rn(), t = new rn(), n = new rn(), r = new rn(), s = new rn(), o = new rn()) { + this.planes = [e, t, n, r, s, o]; + } + set(e, t, n, r, s, o) { + const a = this.planes; + return a[0].copy(e), a[1].copy(t), a[2].copy(n), a[3].copy(r), a[4].copy(s), a[5].copy(o), this; + } + copy(e) { + const t = this.planes; + for (let n = 0; n < 6; n++) + t[n].copy(e.planes[n]); + return this; + } + setFromProjectionMatrix(e, t = Zt) { + const n = this.planes, r = e.elements, s = r[0], o = r[1], a = r[2], l = r[3], c = r[4], h = r[5], d = r[6], p = r[7], m = r[8], g = r[9], v = r[10], f = r[11], u = r[12], b = r[13], S = r[14], R = r[15]; + if (n[0].setComponents(l - s, p - c, f - m, R - u).normalize(), n[1].setComponents(l + s, p + c, f + m, R + u).normalize(), n[2].setComponents(l + o, p + h, f + g, R + b).normalize(), n[3].setComponents(l - o, p - h, f - g, R - b).normalize(), n[4].setComponents(l - a, p - d, f - v, R - S).normalize(), t === Zt) + n[5].setComponents(l + a, p + d, f + v, R + S).normalize(); + else if (t === tr) + n[5].setComponents(a, d, v, S).normalize(); + else + throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: " + t); + return this; + } + intersectsObject(e) { + if (e.boundingSphere !== void 0) + e.boundingSphere === null && e.computeBoundingSphere(), vn.copy(e.boundingSphere).applyMatrix4(e.matrixWorld); + else { + const t = e.geometry; + t.boundingSphere === null && t.computeBoundingSphere(), vn.copy(t.boundingSphere).applyMatrix4(e.matrixWorld); + } + return this.intersectsSphere(vn); + } + intersectsSprite(e) { + return vn.center.set(0, 0, 0), vn.radius = 0.7071067811865476, vn.applyMatrix4(e.matrixWorld), this.intersectsSphere(vn); + } + intersectsSphere(e) { + const t = this.planes, n = e.center, r = -e.radius; + for (let s = 0; s < 6; s++) + if (t[s].distanceToPoint(n) < r) + return !1; + return !0; + } + intersectsBox(e) { + const t = this.planes; + for (let n = 0; n < 6; n++) { + const r = t[n]; + if (ki.x = r.normal.x > 0 ? e.max.x : e.min.x, ki.y = r.normal.y > 0 ? e.max.y : e.min.y, ki.z = r.normal.z > 0 ? e.max.z : e.min.z, r.distanceToPoint(ki) < 0) + return !1; + } + return !0; + } + containsPoint(e) { + const t = this.planes; + for (let n = 0; n < 6; n++) + if (t[n].distanceToPoint(e) < 0) + return !1; + return !0; + } + clone() { + return new this.constructor().copy(this); + } +} +function Do() { + let i = null, e = !1, t = null, n = null; + function r(s, o) { + t(s, o), n = i.requestAnimationFrame(r); + } + return { + start: function() { + e !== !0 && t !== null && (n = i.requestAnimationFrame(r), e = !0); + }, + stop: function() { + i.cancelAnimationFrame(n), e = !1; + }, + setAnimationLoop: function(s) { + t = s; + }, + setContext: function(s) { + i = s; + } + }; +} +function vc(i, e) { + const t = e.isWebGL2, n = /* @__PURE__ */ new WeakMap(); + function r(c, h) { + const d = c.array, p = c.usage, m = d.byteLength, g = i.createBuffer(); + i.bindBuffer(h, g), i.bufferData(h, d, p), c.onUploadCallback(); + let v; + if (d instanceof Float32Array) + v = i.FLOAT; + else if (d instanceof Uint16Array) + if (c.isFloat16BufferAttribute) + if (t) + v = i.HALF_FLOAT; + else + throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2."); + else + v = i.UNSIGNED_SHORT; + else if (d instanceof Int16Array) + v = i.SHORT; + else if (d instanceof Uint32Array) + v = i.UNSIGNED_INT; + else if (d instanceof Int32Array) + v = i.INT; + else if (d instanceof Int8Array) + v = i.BYTE; + else if (d instanceof Uint8Array) + v = i.UNSIGNED_BYTE; + else if (d instanceof Uint8ClampedArray) + v = i.UNSIGNED_BYTE; + else + throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: " + d); + return { + buffer: g, + type: v, + bytesPerElement: d.BYTES_PER_ELEMENT, + version: c.version, + size: m + }; + } + function s(c, h, d) { + const p = h.array, m = h._updateRange, g = h.updateRanges; + if (i.bindBuffer(d, c), m.count === -1 && g.length === 0 && i.bufferSubData(d, 0, p), g.length !== 0) { + for (let v = 0, f = g.length; v < f; v++) { + const u = g[v]; + t ? i.bufferSubData( + d, + u.start * p.BYTES_PER_ELEMENT, + p, + u.start, + u.count + ) : i.bufferSubData( + d, + u.start * p.BYTES_PER_ELEMENT, + p.subarray(u.start, u.start + u.count) + ); + } + h.clearUpdateRanges(); + } + m.count !== -1 && (t ? i.bufferSubData( + d, + m.offset * p.BYTES_PER_ELEMENT, + p, + m.offset, + m.count + ) : i.bufferSubData( + d, + m.offset * p.BYTES_PER_ELEMENT, + p.subarray(m.offset, m.offset + m.count) + ), m.count = -1), h.onUploadCallback(); + } + function o(c) { + return c.isInterleavedBufferAttribute && (c = c.data), n.get(c); + } + function a(c) { + c.isInterleavedBufferAttribute && (c = c.data); + const h = n.get(c); + h && (i.deleteBuffer(h.buffer), n.delete(c)); + } + function l(c, h) { + if (c.isGLBufferAttribute) { + const p = n.get(c); + (!p || p.version < c.version) && n.set(c, { + buffer: c.buffer, + type: c.type, + bytesPerElement: c.elementSize, + version: c.version + }); + return; + } + c.isInterleavedBufferAttribute && (c = c.data); + const d = n.get(c); + if (d === void 0) + n.set(c, r(c, h)); + else if (d.version < c.version) { + if (d.size !== c.array.byteLength) + throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported."); + s(d.buffer, c, h), d.version = c.version; + } + } + return { + get: o, + remove: a, + update: l + }; +} +class us extends hn { + constructor(e = 1, t = 1, n = 1, r = 1) { + super(), this.type = "PlaneGeometry", this.parameters = { + width: e, + height: t, + widthSegments: n, + heightSegments: r + }; + const s = e / 2, o = t / 2, a = Math.floor(n), l = Math.floor(r), c = a + 1, h = l + 1, d = e / a, p = t / l, m = [], g = [], v = [], f = []; + for (let u = 0; u < h; u++) { + const b = u * p - o; + for (let S = 0; S < c; S++) { + const R = S * d - s; + g.push(R, -b, 0), v.push(0, 0, 1), f.push(S / a), f.push(1 - u / l); + } + } + for (let u = 0; u < l; u++) + for (let b = 0; b < a; b++) { + const S = b + c * u, R = b + c * (u + 1), D = b + 1 + c * (u + 1), C = b + 1 + c * u; + m.push(S, R, C), m.push(R, D, C); + } + this.setIndex(m), this.setAttribute("position", new Ht(g, 3)), this.setAttribute("normal", new Ht(v, 3)), this.setAttribute("uv", new Ht(f, 2)); + } + copy(e) { + return super.copy(e), this.parameters = Object.assign({}, e.parameters), this; + } + static fromJSON(e) { + return new us(e.width, e.height, e.widthSegments, e.heightSegments); + } +} +var xc = `#ifdef USE_ALPHAHASH + if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; +#endif`, Mc = `#ifdef USE_ALPHAHASH + const float ALPHA_HASH_SCALE = 0.05; + float hash2D( vec2 value ) { + return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) ); + } + float hash3D( vec3 value ) { + return hash2D( vec2( hash2D( value.xy ), value.z ) ); + } + float getAlphaHashThreshold( vec3 position ) { + float maxDeriv = max( + length( dFdx( position.xyz ) ), + length( dFdy( position.xyz ) ) + ); + float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv ); + vec2 pixScales = vec2( + exp2( floor( log2( pixScale ) ) ), + exp2( ceil( log2( pixScale ) ) ) + ); + vec2 alpha = vec2( + hash3D( floor( pixScales.x * position.xyz ) ), + hash3D( floor( pixScales.y * position.xyz ) ) + ); + float lerpFactor = fract( log2( pixScale ) ); + float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y; + float a = min( lerpFactor, 1.0 - lerpFactor ); + vec3 cases = vec3( + x * x / ( 2.0 * a * ( 1.0 - a ) ), + ( x - 0.5 * a ) / ( 1.0 - a ), + 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) ) + ); + float threshold = ( x < ( 1.0 - a ) ) + ? ( ( x < a ) ? cases.x : cases.y ) + : cases.z; + return clamp( threshold , 1.0e-6, 1.0 ); + } +#endif`, Sc = `#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; +#endif`, Ec = `#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`, yc = `#ifdef USE_ALPHATEST + if ( diffuseColor.a < alphaTest ) discard; +#endif`, Tc = `#ifdef USE_ALPHATEST + uniform float alphaTest; +#endif`, bc = `#ifdef USE_AOMAP + float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; + reflectedLight.indirectDiffuse *= ambientOcclusion; + #if defined( USE_CLEARCOAT ) + clearcoatSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_SHEEN ) + sheenSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) + float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); + reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); + #endif +#endif`, Ac = `#ifdef USE_AOMAP + uniform sampler2D aoMap; + uniform float aoMapIntensity; +#endif`, wc = `#ifdef USE_BATCHING + attribute float batchId; + uniform highp sampler2D batchingTexture; + mat4 getBatchingMatrix( const in float i ) { + int size = textureSize( batchingTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`, Rc = `#ifdef USE_BATCHING + mat4 batchingMatrix = getBatchingMatrix( batchId ); +#endif`, Cc = `vec3 transformed = vec3( position ); +#ifdef USE_ALPHAHASH + vPosition = vec3( position ); +#endif`, Lc = `vec3 objectNormal = vec3( normal ); +#ifdef USE_TANGENT + vec3 objectTangent = vec3( tangent.xyz ); +#endif`, Pc = `float G_BlinnPhong_Implicit( ) { + return 0.25; +} +float D_BlinnPhong( const in float shininess, const in float dotNH ) { + return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); +} +vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( specularColor, 1.0, dotVH ); + float G = G_BlinnPhong_Implicit( ); + float D = D_BlinnPhong( shininess, dotNH ); + return F * ( G * D ); +} // validated`, Dc = `#ifdef USE_IRIDESCENCE + const mat3 XYZ_TO_REC709 = mat3( + 3.2404542, -0.9692660, 0.0556434, + -1.5371385, 1.8760108, -0.2040259, + -0.4985314, 0.0415560, 1.0572252 + ); + vec3 Fresnel0ToIor( vec3 fresnel0 ) { + vec3 sqrtF0 = sqrt( fresnel0 ); + return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 ); + } + vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) ); + } + float IorToFresnel0( float transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor )); + } + vec3 evalSensitivity( float OPD, vec3 shift ) { + float phase = 2.0 * PI * OPD * 1.0e-9; + vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 ); + vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 ); + vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 ); + vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var ); + xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) ); + xyz /= 1.0685e-7; + vec3 rgb = XYZ_TO_REC709 * xyz; + return rgb; + } + vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) { + vec3 I; + float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) ); + float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) ); + float cosTheta2Sq = 1.0 - sinTheta2Sq; + if ( cosTheta2Sq < 0.0 ) { + return vec3( 1.0 ); + } + float cosTheta2 = sqrt( cosTheta2Sq ); + float R0 = IorToFresnel0( iridescenceIOR, outsideIOR ); + float R12 = F_Schlick( R0, 1.0, cosTheta1 ); + float T121 = 1.0 - R12; + float phi12 = 0.0; + if ( iridescenceIOR < outsideIOR ) phi12 = PI; + float phi21 = PI - phi12; + vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR ); + vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 ); + vec3 phi23 = vec3( 0.0 ); + if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI; + if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI; + if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI; + float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2; + vec3 phi = vec3( phi21 ) + phi23; + vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 ); + vec3 r123 = sqrt( R123 ); + vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 ); + vec3 C0 = R12 + Rs; + I = C0; + vec3 Cm = Rs - T121; + for ( int m = 1; m <= 2; ++ m ) { + Cm *= r123; + vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi ); + I += Cm * Sm; + } + return max( I, vec3( 0.0 ) ); + } +#endif`, Uc = `#ifdef USE_BUMPMAP + uniform sampler2D bumpMap; + uniform float bumpScale; + vec2 dHdxy_fwd() { + vec2 dSTdx = dFdx( vBumpMapUv ); + vec2 dSTdy = dFdy( vBumpMapUv ); + float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x; + float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll; + float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll; + return vec2( dBx, dBy ); + } + vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { + vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) ); + vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) ); + vec3 vN = surf_norm; + vec3 R1 = cross( vSigmaY, vN ); + vec3 R2 = cross( vN, vSigmaX ); + float fDet = dot( vSigmaX, R1 ) * faceDirection; + vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); + return normalize( abs( fDet ) * surf_norm - vGrad ); + } +#endif`, Ic = `#if NUM_CLIPPING_PLANES > 0 + vec4 plane; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif +#endif`, Nc = `#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`, Fc = `#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`, Oc = `#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`, Bc = `#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`, zc = `#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`, Gc = `#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + varying vec3 vColor; +#endif`, Hc = `#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif`, Vc = `#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +float luminance( const in vec3 rgb ) { + const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 ); + return dot( weights, rgb ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`, kc = `#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`, Wc = `vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`, Xc = `#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`, qc = `#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`, Yc = `#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`, jc = `#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`, Kc = "gl_FragColor = linearToOutputTexel( gl_FragColor );", Zc = ` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +} +vec4 LinearToLinear( in vec4 value ) { + return value; +} +vec4 LinearTosRGB( in vec4 value ) { + return sRGBTransferOETF( value ); +}`, $c = `#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`, Jc = `#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`, Qc = `#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`, eu = `#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`, tu = `#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`, nu = `#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`, iu = `#ifdef USE_FOG + varying float vFogDepth; +#endif`, ru = `#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`, su = `#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`, au = `#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`, ou = `#ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + reflectedLight.indirectDiffuse += lightMapIrradiance; +#endif`, lu = `#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`, cu = `LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`, uu = `varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`, hu = `uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + #if defined ( LEGACY_LIGHTS ) + if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) { + return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent ); + } + return 1.0; + #else + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; + #endif +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`, du = `#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`, fu = `ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`, pu = `varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`, mu = `BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`, _u = `varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`, gu = `PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`, vu = `struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`, xu = ` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`, Mu = `#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`, Su = `#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`, Eu = `#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`, yu = `#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`, Tu = `#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + varying float vFragDepth; + varying float vIsPerspective; + #else + uniform float logDepthBufFC; + #endif +#endif`, bu = `#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); + #else + if ( isPerspectiveMatrix( projectionMatrix ) ) { + gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0; + gl_Position.z *= gl_Position.w; + } + #endif +#endif`, Au = `#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`, wu = `#ifdef USE_MAP + uniform sampler2D map; +#endif`, Ru = `#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`, Cu = `#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`, Lu = `float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`, Pu = `#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`, Du = `#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`, Uu = `#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } + #else + objectNormal += morphNormal0 * morphTargetInfluences[ 0 ]; + objectNormal += morphNormal1 * morphTargetInfluences[ 1 ]; + objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; + objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; + #endif +#endif`, Iu = `#ifdef USE_MORPHTARGETS + uniform float morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } + #else + #ifndef USE_MORPHNORMALS + uniform float morphTargetInfluences[ 8 ]; + #else + uniform float morphTargetInfluences[ 4 ]; + #endif + #endif +#endif`, Nu = `#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } + #else + transformed += morphTarget0 * morphTargetInfluences[ 0 ]; + transformed += morphTarget1 * morphTargetInfluences[ 1 ]; + transformed += morphTarget2 * morphTargetInfluences[ 2 ]; + transformed += morphTarget3 * morphTargetInfluences[ 3 ]; + #ifndef USE_MORPHNORMALS + transformed += morphTarget4 * morphTargetInfluences[ 4 ]; + transformed += morphTarget5 * morphTargetInfluences[ 5 ]; + transformed += morphTarget6 * morphTargetInfluences[ 6 ]; + transformed += morphTarget7 * morphTargetInfluences[ 7 ]; + #endif + #endif +#endif`, Fu = `float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`, Ou = `#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`, Bu = `#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`, zu = `#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`, Gu = `#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`, Hu = `#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`, Vu = `#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`, ku = `#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`, Wu = `#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`, Xu = `#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`, qu = `#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`, Yu = `vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; +const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); +const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); +const float ShiftRight8 = 1. / 256.; +vec4 packDepthToRGBA( const in float v ) { + vec4 r = vec4( fract( v * PackFactors ), v ); + r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors ); +} +vec2 packDepthToRG( in highp float v ) { + return packDepthToRGBA( v ).yx; +} +float unpackRGToDepth( const in highp vec2 v ) { + return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) ); +} +vec4 pack2HalfToRGBA( vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`, ju = `#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`, Ku = `vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`, Zu = `#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`, $u = `#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`, Ju = `float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`, Qu = `#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`, eh = `#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return shadow; + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + vec3 lightToPosition = shadowCoord.xyz; + float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + return ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } +#endif`, th = `#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`, nh = `#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`, ih = `float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`, rh = `#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`, sh = `#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`, ah = `#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`, oh = `#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`, lh = `float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`, ch = `#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`, uh = `#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`, hh = `#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 OptimizedCineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color *= toneMappingExposure; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + return color; +} +vec3 CustomToneMapping( vec3 color ) { return color; }`, dh = `#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`, fh = `#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + vec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`, ph = `#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`, mh = `#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`, _h = `#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`, gh = `#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`; +const vh = `varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`, xh = `uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`, Mh = `varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`, Sh = `#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`, Eh = `varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`, yh = `uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`, Th = `#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`, bh = `#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + vec4 diffuseColor = vec4( 1.0 ); + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #endif +}`, Ah = `#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`, wh = `#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + #include + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`, Rh = `varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`, Ch = `uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`, Lh = `uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`, Ph = `uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`, Dh = `#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`, Uh = `uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`, Ih = `#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`, Nh = `#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`, Fh = `#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`, Oh = `#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`, Bh = `#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`, zh = `#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), opacity ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`, Gh = `#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`, Hh = `#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`, Vh = `#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`, kh = `#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`, Wh = `#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`, Xh = `#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`, qh = `uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`, Yh = `uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`, jh = `#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`, Kh = `uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`, Zh = `uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`, $h = `uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`, Be = { + alphahash_fragment: xc, + alphahash_pars_fragment: Mc, + alphamap_fragment: Sc, + alphamap_pars_fragment: Ec, + alphatest_fragment: yc, + alphatest_pars_fragment: Tc, + aomap_fragment: bc, + aomap_pars_fragment: Ac, + batching_pars_vertex: wc, + batching_vertex: Rc, + begin_vertex: Cc, + beginnormal_vertex: Lc, + bsdfs: Pc, + iridescence_fragment: Dc, + bumpmap_pars_fragment: Uc, + clipping_planes_fragment: Ic, + clipping_planes_pars_fragment: Nc, + clipping_planes_pars_vertex: Fc, + clipping_planes_vertex: Oc, + color_fragment: Bc, + color_pars_fragment: zc, + color_pars_vertex: Gc, + color_vertex: Hc, + common: Vc, + cube_uv_reflection_fragment: kc, + defaultnormal_vertex: Wc, + displacementmap_pars_vertex: Xc, + displacementmap_vertex: qc, + emissivemap_fragment: Yc, + emissivemap_pars_fragment: jc, + colorspace_fragment: Kc, + colorspace_pars_fragment: Zc, + envmap_fragment: $c, + envmap_common_pars_fragment: Jc, + envmap_pars_fragment: Qc, + envmap_pars_vertex: eu, + envmap_physical_pars_fragment: du, + envmap_vertex: tu, + fog_vertex: nu, + fog_pars_vertex: iu, + fog_fragment: ru, + fog_pars_fragment: su, + gradientmap_pars_fragment: au, + lightmap_fragment: ou, + lightmap_pars_fragment: lu, + lights_lambert_fragment: cu, + lights_lambert_pars_fragment: uu, + lights_pars_begin: hu, + lights_toon_fragment: fu, + lights_toon_pars_fragment: pu, + lights_phong_fragment: mu, + lights_phong_pars_fragment: _u, + lights_physical_fragment: gu, + lights_physical_pars_fragment: vu, + lights_fragment_begin: xu, + lights_fragment_maps: Mu, + lights_fragment_end: Su, + logdepthbuf_fragment: Eu, + logdepthbuf_pars_fragment: yu, + logdepthbuf_pars_vertex: Tu, + logdepthbuf_vertex: bu, + map_fragment: Au, + map_pars_fragment: wu, + map_particle_fragment: Ru, + map_particle_pars_fragment: Cu, + metalnessmap_fragment: Lu, + metalnessmap_pars_fragment: Pu, + morphcolor_vertex: Du, + morphnormal_vertex: Uu, + morphtarget_pars_vertex: Iu, + morphtarget_vertex: Nu, + normal_fragment_begin: Fu, + normal_fragment_maps: Ou, + normal_pars_fragment: Bu, + normal_pars_vertex: zu, + normal_vertex: Gu, + normalmap_pars_fragment: Hu, + clearcoat_normal_fragment_begin: Vu, + clearcoat_normal_fragment_maps: ku, + clearcoat_pars_fragment: Wu, + iridescence_pars_fragment: Xu, + opaque_fragment: qu, + packing: Yu, + premultiplied_alpha_fragment: ju, + project_vertex: Ku, + dithering_fragment: Zu, + dithering_pars_fragment: $u, + roughnessmap_fragment: Ju, + roughnessmap_pars_fragment: Qu, + shadowmap_pars_fragment: eh, + shadowmap_pars_vertex: th, + shadowmap_vertex: nh, + shadowmask_pars_fragment: ih, + skinbase_vertex: rh, + skinning_pars_vertex: sh, + skinning_vertex: ah, + skinnormal_vertex: oh, + specularmap_fragment: lh, + specularmap_pars_fragment: ch, + tonemapping_fragment: uh, + tonemapping_pars_fragment: hh, + transmission_fragment: dh, + transmission_pars_fragment: fh, + uv_pars_fragment: ph, + uv_pars_vertex: mh, + uv_vertex: _h, + worldpos_vertex: gh, + background_vert: vh, + background_frag: xh, + backgroundCube_vert: Mh, + backgroundCube_frag: Sh, + cube_vert: Eh, + cube_frag: yh, + depth_vert: Th, + depth_frag: bh, + distanceRGBA_vert: Ah, + distanceRGBA_frag: wh, + equirect_vert: Rh, + equirect_frag: Ch, + linedashed_vert: Lh, + linedashed_frag: Ph, + meshbasic_vert: Dh, + meshbasic_frag: Uh, + meshlambert_vert: Ih, + meshlambert_frag: Nh, + meshmatcap_vert: Fh, + meshmatcap_frag: Oh, + meshnormal_vert: Bh, + meshnormal_frag: zh, + meshphong_vert: Gh, + meshphong_frag: Hh, + meshphysical_vert: Vh, + meshphysical_frag: kh, + meshtoon_vert: Wh, + meshtoon_frag: Xh, + points_vert: qh, + points_frag: Yh, + shadow_vert: jh, + shadow_frag: Kh, + sprite_vert: Zh, + sprite_frag: $h +}, se = { + common: { + diffuse: { value: /* @__PURE__ */ new Xe(16777215) }, + opacity: { value: 1 }, + map: { value: null }, + mapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaTest: { value: 0 } + }, + specularmap: { + specularMap: { value: null }, + specularMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + envmap: { + envMap: { value: null }, + flipEnvMap: { value: -1 }, + reflectivity: { value: 1 }, + // basic, lambert, phong + ior: { value: 1.5 }, + // physical + refractionRatio: { value: 0.98 } + // basic, lambert, phong + }, + aomap: { + aoMap: { value: null }, + aoMapIntensity: { value: 1 }, + aoMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + lightmap: { + lightMap: { value: null }, + lightMapIntensity: { value: 1 }, + lightMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + bumpmap: { + bumpMap: { value: null }, + bumpMapTransform: { value: /* @__PURE__ */ new Ve() }, + bumpScale: { value: 1 } + }, + normalmap: { + normalMap: { value: null }, + normalMapTransform: { value: /* @__PURE__ */ new Ve() }, + normalScale: { value: /* @__PURE__ */ new Ie(1, 1) } + }, + displacementmap: { + displacementMap: { value: null }, + displacementMapTransform: { value: /* @__PURE__ */ new Ve() }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 } + }, + emissivemap: { + emissiveMap: { value: null }, + emissiveMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + metalnessmap: { + metalnessMap: { value: null }, + metalnessMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + roughnessmap: { + roughnessMap: { value: null }, + roughnessMapTransform: { value: /* @__PURE__ */ new Ve() } + }, + gradientmap: { + gradientMap: { value: null } + }, + fog: { + fogDensity: { value: 25e-5 }, + fogNear: { value: 1 }, + fogFar: { value: 2e3 }, + fogColor: { value: /* @__PURE__ */ new Xe(16777215) } + }, + lights: { + ambientLightColor: { value: [] }, + lightProbe: { value: [] }, + directionalLights: { value: [], properties: { + direction: {}, + color: {} + } }, + directionalLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + directionalShadowMap: { value: [] }, + directionalShadowMatrix: { value: [] }, + spotLights: { value: [], properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {} + } }, + spotLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + spotLightMap: { value: [] }, + spotShadowMap: { value: [] }, + spotLightMatrix: { value: [] }, + pointLights: { value: [], properties: { + color: {}, + position: {}, + decay: {}, + distance: {} + } }, + pointLightShadows: { value: [], properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {} + } }, + pointShadowMap: { value: [] }, + pointShadowMatrix: { value: [] }, + hemisphereLights: { value: [], properties: { + direction: {}, + skyColor: {}, + groundColor: {} + } }, + // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src + rectAreaLights: { value: [], properties: { + color: {}, + position: {}, + width: {}, + height: {} + } }, + ltc_1: { value: null }, + ltc_2: { value: null } + }, + points: { + diffuse: { value: /* @__PURE__ */ new Xe(16777215) }, + opacity: { value: 1 }, + size: { value: 1 }, + scale: { value: 1 }, + map: { value: null }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaTest: { value: 0 }, + uvTransform: { value: /* @__PURE__ */ new Ve() } + }, + sprite: { + diffuse: { value: /* @__PURE__ */ new Xe(16777215) }, + opacity: { value: 1 }, + center: { value: /* @__PURE__ */ new Ie(0.5, 0.5) }, + rotation: { value: 0 }, + map: { value: null }, + mapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaMap: { value: null }, + alphaMapTransform: { value: /* @__PURE__ */ new Ve() }, + alphaTest: { value: 0 } + } +}, Gt = { + basic: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.specularmap, + se.envmap, + se.aomap, + se.lightmap, + se.fog + ]), + vertexShader: Be.meshbasic_vert, + fragmentShader: Be.meshbasic_frag + }, + lambert: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.specularmap, + se.envmap, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) } + } + ]), + vertexShader: Be.meshlambert_vert, + fragmentShader: Be.meshlambert_frag + }, + phong: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.specularmap, + se.envmap, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) }, + specular: { value: /* @__PURE__ */ new Xe(1118481) }, + shininess: { value: 30 } + } + ]), + vertexShader: Be.meshphong_vert, + fragmentShader: Be.meshphong_frag + }, + standard: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.envmap, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.roughnessmap, + se.metalnessmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) }, + roughness: { value: 1 }, + metalness: { value: 0 }, + envMapIntensity: { value: 1 } + // temporary + } + ]), + vertexShader: Be.meshphysical_vert, + fragmentShader: Be.meshphysical_frag + }, + toon: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.aomap, + se.lightmap, + se.emissivemap, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.gradientmap, + se.fog, + se.lights, + { + emissive: { value: /* @__PURE__ */ new Xe(0) } + } + ]), + vertexShader: Be.meshtoon_vert, + fragmentShader: Be.meshtoon_frag + }, + matcap: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.bumpmap, + se.normalmap, + se.displacementmap, + se.fog, + { + matcap: { value: null } + } + ]), + vertexShader: Be.meshmatcap_vert, + fragmentShader: Be.meshmatcap_frag + }, + points: { + uniforms: /* @__PURE__ */ _t([ + se.points, + se.fog + ]), + vertexShader: Be.points_vert, + fragmentShader: Be.points_frag + }, + dashed: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.fog, + { + scale: { value: 1 }, + dashSize: { value: 1 }, + totalSize: { value: 2 } + } + ]), + vertexShader: Be.linedashed_vert, + fragmentShader: Be.linedashed_frag + }, + depth: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.displacementmap + ]), + vertexShader: Be.depth_vert, + fragmentShader: Be.depth_frag + }, + normal: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.bumpmap, + se.normalmap, + se.displacementmap, + { + opacity: { value: 1 } + } + ]), + vertexShader: Be.meshnormal_vert, + fragmentShader: Be.meshnormal_frag + }, + sprite: { + uniforms: /* @__PURE__ */ _t([ + se.sprite, + se.fog + ]), + vertexShader: Be.sprite_vert, + fragmentShader: Be.sprite_frag + }, + background: { + uniforms: { + uvTransform: { value: /* @__PURE__ */ new Ve() }, + t2D: { value: null }, + backgroundIntensity: { value: 1 } + }, + vertexShader: Be.background_vert, + fragmentShader: Be.background_frag + }, + backgroundCube: { + uniforms: { + envMap: { value: null }, + flipEnvMap: { value: -1 }, + backgroundBlurriness: { value: 0 }, + backgroundIntensity: { value: 1 } + }, + vertexShader: Be.backgroundCube_vert, + fragmentShader: Be.backgroundCube_frag + }, + cube: { + uniforms: { + tCube: { value: null }, + tFlip: { value: -1 }, + opacity: { value: 1 } + }, + vertexShader: Be.cube_vert, + fragmentShader: Be.cube_frag + }, + equirect: { + uniforms: { + tEquirect: { value: null } + }, + vertexShader: Be.equirect_vert, + fragmentShader: Be.equirect_frag + }, + distanceRGBA: { + uniforms: /* @__PURE__ */ _t([ + se.common, + se.displacementmap, + { + referencePosition: { value: /* @__PURE__ */ new P() }, + nearDistance: { value: 1 }, + farDistance: { value: 1e3 } + } + ]), + vertexShader: Be.distanceRGBA_vert, + fragmentShader: Be.distanceRGBA_frag + }, + shadow: { + uniforms: /* @__PURE__ */ _t([ + se.lights, + se.fog, + { + color: { value: /* @__PURE__ */ new Xe(0) }, + opacity: { value: 1 } + } + ]), + vertexShader: Be.shadow_vert, + fragmentShader: Be.shadow_frag + } +}; +Gt.physical = { + uniforms: /* @__PURE__ */ _t([ + Gt.standard.uniforms, + { + clearcoat: { value: 0 }, + clearcoatMap: { value: null }, + clearcoatMapTransform: { value: /* @__PURE__ */ new Ve() }, + clearcoatNormalMap: { value: null }, + clearcoatNormalMapTransform: { value: /* @__PURE__ */ new Ve() }, + clearcoatNormalScale: { value: /* @__PURE__ */ new Ie(1, 1) }, + clearcoatRoughness: { value: 0 }, + clearcoatRoughnessMap: { value: null }, + clearcoatRoughnessMapTransform: { value: /* @__PURE__ */ new Ve() }, + iridescence: { value: 0 }, + iridescenceMap: { value: null }, + iridescenceMapTransform: { value: /* @__PURE__ */ new Ve() }, + iridescenceIOR: { value: 1.3 }, + iridescenceThicknessMinimum: { value: 100 }, + iridescenceThicknessMaximum: { value: 400 }, + iridescenceThicknessMap: { value: null }, + iridescenceThicknessMapTransform: { value: /* @__PURE__ */ new Ve() }, + sheen: { value: 0 }, + sheenColor: { value: /* @__PURE__ */ new Xe(0) }, + sheenColorMap: { value: null }, + sheenColorMapTransform: { value: /* @__PURE__ */ new Ve() }, + sheenRoughness: { value: 1 }, + sheenRoughnessMap: { value: null }, + sheenRoughnessMapTransform: { value: /* @__PURE__ */ new Ve() }, + transmission: { value: 0 }, + transmissionMap: { value: null }, + transmissionMapTransform: { value: /* @__PURE__ */ new Ve() }, + transmissionSamplerSize: { value: /* @__PURE__ */ new Ie() }, + transmissionSamplerMap: { value: null }, + thickness: { value: 0 }, + thicknessMap: { value: null }, + thicknessMapTransform: { value: /* @__PURE__ */ new Ve() }, + attenuationDistance: { value: 0 }, + attenuationColor: { value: /* @__PURE__ */ new Xe(0) }, + specularColor: { value: /* @__PURE__ */ new Xe(1, 1, 1) }, + specularColorMap: { value: null }, + specularColorMapTransform: { value: /* @__PURE__ */ new Ve() }, + specularIntensity: { value: 1 }, + specularIntensityMap: { value: null }, + specularIntensityMapTransform: { value: /* @__PURE__ */ new Ve() }, + anisotropyVector: { value: /* @__PURE__ */ new Ie() }, + anisotropyMap: { value: null }, + anisotropyMapTransform: { value: /* @__PURE__ */ new Ve() } + } + ]), + vertexShader: Be.meshphysical_vert, + fragmentShader: Be.meshphysical_frag +}; +const Wi = { r: 0, b: 0, g: 0 }; +function Jh(i, e, t, n, r, s, o) { + const a = new Xe(0); + let l = s === !0 ? 0 : 1, c, h, d = null, p = 0, m = null; + function g(f, u) { + let b = !1, S = u.isScene === !0 ? u.background : null; + S && S.isTexture && (S = (u.backgroundBlurriness > 0 ? t : e).get(S)), S === null ? v(a, l) : S && S.isColor && (v(S, 1), b = !0); + const R = i.xr.getEnvironmentBlendMode(); + R === "additive" ? n.buffers.color.setClear(0, 0, 0, 1, o) : R === "alpha-blend" && n.buffers.color.setClear(0, 0, 0, 0, o), (i.autoClear || b) && i.clear(i.autoClearColor, i.autoClearDepth, i.autoClearStencil), S && (S.isCubeTexture || S.mapping === rr) ? (h === void 0 && (h = new Ot( + new ii(1, 1, 1), + new wn({ + name: "BackgroundCubeMaterial", + uniforms: ni(Gt.backgroundCube.uniforms), + vertexShader: Gt.backgroundCube.vertexShader, + fragmentShader: Gt.backgroundCube.fragmentShader, + side: Mt, + depthTest: !1, + depthWrite: !1, + fog: !1 + }) + ), h.geometry.deleteAttribute("normal"), h.geometry.deleteAttribute("uv"), h.onBeforeRender = function(D, C, A) { + this.matrixWorld.copyPosition(A.matrixWorld); + }, Object.defineProperty(h.material, "envMap", { + get: function() { + return this.uniforms.envMap.value; + } + }), r.update(h)), h.material.uniforms.envMap.value = S, h.material.uniforms.flipEnvMap.value = S.isCubeTexture && S.isRenderTargetTexture === !1 ? -1 : 1, h.material.uniforms.backgroundBlurriness.value = u.backgroundBlurriness, h.material.uniforms.backgroundIntensity.value = u.backgroundIntensity, h.material.toneMapped = Ke.getTransfer(S.colorSpace) !== Ze, (d !== S || p !== S.version || m !== i.toneMapping) && (h.material.needsUpdate = !0, d = S, p = S.version, m = i.toneMapping), h.layers.enableAll(), f.unshift(h, h.geometry, h.material, 0, 0, null)) : S && S.isTexture && (c === void 0 && (c = new Ot( + new us(2, 2), + new wn({ + name: "BackgroundMaterial", + uniforms: ni(Gt.background.uniforms), + vertexShader: Gt.background.vertexShader, + fragmentShader: Gt.background.fragmentShader, + side: un, + depthTest: !1, + depthWrite: !1, + fog: !1 + }) + ), c.geometry.deleteAttribute("normal"), Object.defineProperty(c.material, "map", { + get: function() { + return this.uniforms.t2D.value; + } + }), r.update(c)), c.material.uniforms.t2D.value = S, c.material.uniforms.backgroundIntensity.value = u.backgroundIntensity, c.material.toneMapped = Ke.getTransfer(S.colorSpace) !== Ze, S.matrixAutoUpdate === !0 && S.updateMatrix(), c.material.uniforms.uvTransform.value.copy(S.matrix), (d !== S || p !== S.version || m !== i.toneMapping) && (c.material.needsUpdate = !0, d = S, p = S.version, m = i.toneMapping), c.layers.enableAll(), f.unshift(c, c.geometry, c.material, 0, 0, null)); + } + function v(f, u) { + f.getRGB(Wi, Co(i)), n.buffers.color.setClear(Wi.r, Wi.g, Wi.b, u, o); + } + return { + getClearColor: function() { + return a; + }, + setClearColor: function(f, u = 1) { + a.set(f), l = u, v(a, l); + }, + getClearAlpha: function() { + return l; + }, + setClearAlpha: function(f) { + l = f, v(a, l); + }, + render: g + }; +} +function Qh(i, e, t, n) { + const r = i.getParameter(i.MAX_VERTEX_ATTRIBS), s = n.isWebGL2 ? null : e.get("OES_vertex_array_object"), o = n.isWebGL2 || s !== null, a = {}, l = f(null); + let c = l, h = !1; + function d(L, F, V, Y, X) { + let k = !1; + if (o) { + const q = v(Y, V, F); + c !== q && (c = q, m(c.object)), k = u(L, Y, V, X), k && b(L, Y, V, X); + } else { + const q = F.wireframe === !0; + (c.geometry !== Y.id || c.program !== V.id || c.wireframe !== q) && (c.geometry = Y.id, c.program = V.id, c.wireframe = q, k = !0); + } + X !== null && t.update(X, i.ELEMENT_ARRAY_BUFFER), (k || h) && (h = !1, W(L, F, V, Y), X !== null && i.bindBuffer(i.ELEMENT_ARRAY_BUFFER, t.get(X).buffer)); + } + function p() { + return n.isWebGL2 ? i.createVertexArray() : s.createVertexArrayOES(); + } + function m(L) { + return n.isWebGL2 ? i.bindVertexArray(L) : s.bindVertexArrayOES(L); + } + function g(L) { + return n.isWebGL2 ? i.deleteVertexArray(L) : s.deleteVertexArrayOES(L); + } + function v(L, F, V) { + const Y = V.wireframe === !0; + let X = a[L.id]; + X === void 0 && (X = {}, a[L.id] = X); + let k = X[F.id]; + k === void 0 && (k = {}, X[F.id] = k); + let q = k[Y]; + return q === void 0 && (q = f(p()), k[Y] = q), q; + } + function f(L) { + const F = [], V = [], Y = []; + for (let X = 0; X < r; X++) + F[X] = 0, V[X] = 0, Y[X] = 0; + return { + // for backward compatibility on non-VAO support browser + geometry: null, + program: null, + wireframe: !1, + newAttributes: F, + enabledAttributes: V, + attributeDivisors: Y, + object: L, + attributes: {}, + index: null + }; + } + function u(L, F, V, Y) { + const X = c.attributes, k = F.attributes; + let q = 0; + const Q = V.getAttributes(); + for (const ce in Q) + if (Q[ce].location >= 0) { + const j = X[ce]; + let oe = k[ce]; + if (oe === void 0 && (ce === "instanceMatrix" && L.instanceMatrix && (oe = L.instanceMatrix), ce === "instanceColor" && L.instanceColor && (oe = L.instanceColor)), j === void 0 || j.attribute !== oe || oe && j.data !== oe.data) return !0; + q++; + } + return c.attributesNum !== q || c.index !== Y; + } + function b(L, F, V, Y) { + const X = {}, k = F.attributes; + let q = 0; + const Q = V.getAttributes(); + for (const ce in Q) + if (Q[ce].location >= 0) { + let j = k[ce]; + j === void 0 && (ce === "instanceMatrix" && L.instanceMatrix && (j = L.instanceMatrix), ce === "instanceColor" && L.instanceColor && (j = L.instanceColor)); + const oe = {}; + oe.attribute = j, j && j.data && (oe.data = j.data), X[ce] = oe, q++; + } + c.attributes = X, c.attributesNum = q, c.index = Y; + } + function S() { + const L = c.newAttributes; + for (let F = 0, V = L.length; F < V; F++) + L[F] = 0; + } + function R(L) { + D(L, 0); + } + function D(L, F) { + const V = c.newAttributes, Y = c.enabledAttributes, X = c.attributeDivisors; + V[L] = 1, Y[L] === 0 && (i.enableVertexAttribArray(L), Y[L] = 1), X[L] !== F && ((n.isWebGL2 ? i : e.get("ANGLE_instanced_arrays"))[n.isWebGL2 ? "vertexAttribDivisor" : "vertexAttribDivisorANGLE"](L, F), X[L] = F); + } + function C() { + const L = c.newAttributes, F = c.enabledAttributes; + for (let V = 0, Y = F.length; V < Y; V++) + F[V] !== L[V] && (i.disableVertexAttribArray(V), F[V] = 0); + } + function A(L, F, V, Y, X, k, q) { + q === !0 ? i.vertexAttribIPointer(L, F, V, X, k) : i.vertexAttribPointer(L, F, V, Y, X, k); + } + function W(L, F, V, Y) { + if (n.isWebGL2 === !1 && (L.isInstancedMesh || Y.isInstancedBufferGeometry) && e.get("ANGLE_instanced_arrays") === null) + return; + S(); + const X = Y.attributes, k = V.getAttributes(), q = F.defaultAttributeValues; + for (const Q in k) { + const ce = k[Q]; + if (ce.location >= 0) { + let H = X[Q]; + if (H === void 0 && (Q === "instanceMatrix" && L.instanceMatrix && (H = L.instanceMatrix), Q === "instanceColor" && L.instanceColor && (H = L.instanceColor)), H !== void 0) { + const j = H.normalized, oe = H.itemSize, ve = t.get(H); + if (ve === void 0) continue; + const _e = ve.buffer, we = ve.type, Ae = ve.bytesPerElement, ge = n.isWebGL2 === !0 && (we === i.INT || we === i.UNSIGNED_INT || H.gpuType === co); + if (H.isInterleavedBufferAttribute) { + const Pe = H.data, N = Pe.stride, rt = H.offset; + if (Pe.isInstancedInterleavedBuffer) { + for (let Me = 0; Me < ce.locationSize; Me++) + D(ce.location + Me, Pe.meshPerAttribute); + L.isInstancedMesh !== !0 && Y._maxInstanceCount === void 0 && (Y._maxInstanceCount = Pe.meshPerAttribute * Pe.count); + } else + for (let Me = 0; Me < ce.locationSize; Me++) + R(ce.location + Me); + i.bindBuffer(i.ARRAY_BUFFER, _e); + for (let Me = 0; Me < ce.locationSize; Me++) + A( + ce.location + Me, + oe / ce.locationSize, + we, + j, + N * Ae, + (rt + oe / ce.locationSize * Me) * Ae, + ge + ); + } else { + if (H.isInstancedBufferAttribute) { + for (let Pe = 0; Pe < ce.locationSize; Pe++) + D(ce.location + Pe, H.meshPerAttribute); + L.isInstancedMesh !== !0 && Y._maxInstanceCount === void 0 && (Y._maxInstanceCount = H.meshPerAttribute * H.count); + } else + for (let Pe = 0; Pe < ce.locationSize; Pe++) + R(ce.location + Pe); + i.bindBuffer(i.ARRAY_BUFFER, _e); + for (let Pe = 0; Pe < ce.locationSize; Pe++) + A( + ce.location + Pe, + oe / ce.locationSize, + we, + j, + oe * Ae, + oe / ce.locationSize * Pe * Ae, + ge + ); + } + } else if (q !== void 0) { + const j = q[Q]; + if (j !== void 0) + switch (j.length) { + case 2: + i.vertexAttrib2fv(ce.location, j); + break; + case 3: + i.vertexAttrib3fv(ce.location, j); + break; + case 4: + i.vertexAttrib4fv(ce.location, j); + break; + default: + i.vertexAttrib1fv(ce.location, j); + } + } + } + } + C(); + } + function x() { + Z(); + for (const L in a) { + const F = a[L]; + for (const V in F) { + const Y = F[V]; + for (const X in Y) + g(Y[X].object), delete Y[X]; + delete F[V]; + } + delete a[L]; + } + } + function y(L) { + if (a[L.id] === void 0) return; + const F = a[L.id]; + for (const V in F) { + const Y = F[V]; + for (const X in Y) + g(Y[X].object), delete Y[X]; + delete F[V]; + } + delete a[L.id]; + } + function z(L) { + for (const F in a) { + const V = a[F]; + if (V[L.id] === void 0) continue; + const Y = V[L.id]; + for (const X in Y) + g(Y[X].object), delete Y[X]; + delete V[L.id]; + } + } + function Z() { + re(), h = !0, c !== l && (c = l, m(c.object)); + } + function re() { + l.geometry = null, l.program = null, l.wireframe = !1; + } + return { + setup: d, + reset: Z, + resetDefaultState: re, + dispose: x, + releaseStatesOfGeometry: y, + releaseStatesOfProgram: z, + initAttributes: S, + enableAttribute: R, + disableUnusedAttributes: C + }; +} +function ed(i, e, t, n) { + const r = n.isWebGL2; + let s; + function o(h) { + s = h; + } + function a(h, d) { + i.drawArrays(s, h, d), t.update(d, s, 1); + } + function l(h, d, p) { + if (p === 0) return; + let m, g; + if (r) + m = i, g = "drawArraysInstanced"; + else if (m = e.get("ANGLE_instanced_arrays"), g = "drawArraysInstancedANGLE", m === null) { + console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."); + return; + } + m[g](s, h, d, p), t.update(d, s, p); + } + function c(h, d, p) { + if (p === 0) return; + const m = e.get("WEBGL_multi_draw"); + if (m === null) + for (let g = 0; g < p; g++) + this.render(h[g], d[g]); + else { + m.multiDrawArraysWEBGL(s, h, 0, d, 0, p); + let g = 0; + for (let v = 0; v < p; v++) + g += d[v]; + t.update(g, s, 1); + } + } + this.setMode = o, this.render = a, this.renderInstances = l, this.renderMultiDraw = c; +} +function td(i, e, t) { + let n; + function r() { + if (n !== void 0) return n; + if (e.has("EXT_texture_filter_anisotropic") === !0) { + const A = e.get("EXT_texture_filter_anisotropic"); + n = i.getParameter(A.MAX_TEXTURE_MAX_ANISOTROPY_EXT); + } else + n = 0; + return n; + } + function s(A) { + if (A === "highp") { + if (i.getShaderPrecisionFormat(i.VERTEX_SHADER, i.HIGH_FLOAT).precision > 0 && i.getShaderPrecisionFormat(i.FRAGMENT_SHADER, i.HIGH_FLOAT).precision > 0) + return "highp"; + A = "mediump"; + } + return A === "mediump" && i.getShaderPrecisionFormat(i.VERTEX_SHADER, i.MEDIUM_FLOAT).precision > 0 && i.getShaderPrecisionFormat(i.FRAGMENT_SHADER, i.MEDIUM_FLOAT).precision > 0 ? "mediump" : "lowp"; + } + const o = typeof WebGL2RenderingContext < "u" && i.constructor.name === "WebGL2RenderingContext"; + let a = t.precision !== void 0 ? t.precision : "highp"; + const l = s(a); + l !== a && (console.warn("THREE.WebGLRenderer:", a, "not supported, using", l, "instead."), a = l); + const c = o || e.has("WEBGL_draw_buffers"), h = t.logarithmicDepthBuffer === !0, d = i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS), p = i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS), m = i.getParameter(i.MAX_TEXTURE_SIZE), g = i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE), v = i.getParameter(i.MAX_VERTEX_ATTRIBS), f = i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS), u = i.getParameter(i.MAX_VARYING_VECTORS), b = i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS), S = p > 0, R = o || e.has("OES_texture_float"), D = S && R, C = o ? i.getParameter(i.MAX_SAMPLES) : 0; + return { + isWebGL2: o, + drawBuffers: c, + getMaxAnisotropy: r, + getMaxPrecision: s, + precision: a, + logarithmicDepthBuffer: h, + maxTextures: d, + maxVertexTextures: p, + maxTextureSize: m, + maxCubemapSize: g, + maxAttributes: v, + maxVertexUniforms: f, + maxVaryings: u, + maxFragmentUniforms: b, + vertexTextures: S, + floatFragmentTextures: R, + floatVertexTextures: D, + maxSamples: C + }; +} +function nd(i) { + const e = this; + let t = null, n = 0, r = !1, s = !1; + const o = new rn(), a = new Ve(), l = { value: null, needsUpdate: !1 }; + this.uniform = l, this.numPlanes = 0, this.numIntersection = 0, this.init = function(d, p) { + const m = d.length !== 0 || p || // enable state of previous frame - the clipping code has to + // run another frame in order to reset the state: + n !== 0 || r; + return r = p, n = d.length, m; + }, this.beginShadows = function() { + s = !0, h(null); + }, this.endShadows = function() { + s = !1; + }, this.setGlobalState = function(d, p) { + t = h(d, p, 0); + }, this.setState = function(d, p, m) { + const g = d.clippingPlanes, v = d.clipIntersection, f = d.clipShadows, u = i.get(d); + if (!r || g === null || g.length === 0 || s && !f) + s ? h(null) : c(); + else { + const b = s ? 0 : n, S = b * 4; + let R = u.clippingState || null; + l.value = R, R = h(g, p, S, m); + for (let D = 0; D !== S; ++D) + R[D] = t[D]; + u.clippingState = R, this.numIntersection = v ? this.numPlanes : 0, this.numPlanes += b; + } + }; + function c() { + l.value !== t && (l.value = t, l.needsUpdate = n > 0), e.numPlanes = n, e.numIntersection = 0; + } + function h(d, p, m, g) { + const v = d !== null ? d.length : 0; + let f = null; + if (v !== 0) { + if (f = l.value, g !== !0 || f === null) { + const u = m + v * 4, b = p.matrixWorldInverse; + a.getNormalMatrix(b), (f === null || f.length < u) && (f = new Float32Array(u)); + for (let S = 0, R = m; S !== v; ++S, R += 4) + o.copy(d[S]).applyMatrix4(b, a), o.normal.toArray(f, R), f[R + 3] = o.constant; + } + l.value = f, l.needsUpdate = !0; + } + return e.numPlanes = v, e.numIntersection = 0, f; + } +} +function id(i) { + let e = /* @__PURE__ */ new WeakMap(); + function t(o, a) { + return a === $r ? o.mapping = Qn : a === Jr && (o.mapping = ei), o; + } + function n(o) { + if (o && o.isTexture) { + const a = o.mapping; + if (a === $r || a === Jr) + if (e.has(o)) { + const l = e.get(o).texture; + return t(l, o.mapping); + } else { + const l = o.image; + if (l && l.height > 0) { + const c = new mc(l.height / 2); + return c.fromEquirectangularTexture(i, o), e.set(o, c), o.addEventListener("dispose", r), t(c.texture, o.mapping); + } else + return null; + } + } + return o; + } + function r(o) { + const a = o.target; + a.removeEventListener("dispose", r); + const l = e.get(a); + l !== void 0 && (e.delete(a), l.dispose()); + } + function s() { + e = /* @__PURE__ */ new WeakMap(); + } + return { + get: n, + dispose: s + }; +} +class Uo extends Lo { + constructor(e = -1, t = 1, n = 1, r = -1, s = 0.1, o = 2e3) { + super(), this.isOrthographicCamera = !0, this.type = "OrthographicCamera", this.zoom = 1, this.view = null, this.left = e, this.right = t, this.top = n, this.bottom = r, this.near = s, this.far = o, this.updateProjectionMatrix(); + } + copy(e, t) { + return super.copy(e, t), this.left = e.left, this.right = e.right, this.top = e.top, this.bottom = e.bottom, this.near = e.near, this.far = e.far, this.zoom = e.zoom, this.view = e.view === null ? null : Object.assign({}, e.view), this; + } + setViewOffset(e, t, n, r, s, o) { + this.view === null && (this.view = { + enabled: !0, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }), this.view.enabled = !0, this.view.fullWidth = e, this.view.fullHeight = t, this.view.offsetX = n, this.view.offsetY = r, this.view.width = s, this.view.height = o, this.updateProjectionMatrix(); + } + clearViewOffset() { + this.view !== null && (this.view.enabled = !1), this.updateProjectionMatrix(); + } + updateProjectionMatrix() { + const e = (this.right - this.left) / (2 * this.zoom), t = (this.top - this.bottom) / (2 * this.zoom), n = (this.right + this.left) / 2, r = (this.top + this.bottom) / 2; + let s = n - e, o = n + e, a = r + t, l = r - t; + if (this.view !== null && this.view.enabled) { + const c = (this.right - this.left) / this.view.fullWidth / this.zoom, h = (this.top - this.bottom) / this.view.fullHeight / this.zoom; + s += c * this.view.offsetX, o = s + c * this.view.width, a -= h * this.view.offsetY, l = a - h * this.view.height; + } + this.projectionMatrix.makeOrthographic(s, o, a, l, this.near, this.far, this.coordinateSystem), this.projectionMatrixInverse.copy(this.projectionMatrix).invert(); + } + toJSON(e) { + const t = super.toJSON(e); + return t.object.zoom = this.zoom, t.object.left = this.left, t.object.right = this.right, t.object.top = this.top, t.object.bottom = this.bottom, t.object.near = this.near, t.object.far = this.far, this.view !== null && (t.object.view = Object.assign({}, this.view)), t; + } +} +const Kn = 4, xa = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582], Sn = 20, Br = /* @__PURE__ */ new Uo(), Ma = /* @__PURE__ */ new Xe(); +let zr = null, Gr = 0, Hr = 0; +const xn = (1 + Math.sqrt(5)) / 2, Yn = 1 / xn, Sa = [ + /* @__PURE__ */ new P(1, 1, 1), + /* @__PURE__ */ new P(-1, 1, 1), + /* @__PURE__ */ new P(1, 1, -1), + /* @__PURE__ */ new P(-1, 1, -1), + /* @__PURE__ */ new P(0, xn, Yn), + /* @__PURE__ */ new P(0, xn, -Yn), + /* @__PURE__ */ new P(Yn, 0, xn), + /* @__PURE__ */ new P(-Yn, 0, xn), + /* @__PURE__ */ new P(xn, Yn, 0), + /* @__PURE__ */ new P(-xn, Yn, 0) +]; +class Ea { + constructor(e) { + this._renderer = e, this._pingPongRenderTarget = null, this._lodMax = 0, this._cubeSize = 0, this._lodPlanes = [], this._sizeLods = [], this._sigmas = [], this._blurMaterial = null, this._cubemapMaterial = null, this._equirectMaterial = null, this._compileMaterial(this._blurMaterial); + } + /** + * Generates a PMREM from a supplied Scene, which can be faster than using an + * image if networking bandwidth is low. Optional sigma specifies a blur radius + * in radians to be applied to the scene before PMREM generation. Optional near + * and far planes ensure the scene is rendered in its entirety (the cubeCamera + * is placed at the origin). + */ + fromScene(e, t = 0, n = 0.1, r = 100) { + zr = this._renderer.getRenderTarget(), Gr = this._renderer.getActiveCubeFace(), Hr = this._renderer.getActiveMipmapLevel(), this._setSize(256); + const s = this._allocateTargets(); + return s.depthBuffer = !0, this._sceneToCubeUV(e, n, r, s), t > 0 && this._blur(s, 0, 0, t), this._applyPMREM(s), this._cleanup(s), s; + } + /** + * Generates a PMREM from an equirectangular texture, which can be either LDR + * or HDR. The ideal input image size is 1k (1024 x 512), + * as this matches best with the 256 x 256 cubemap output. + */ + fromEquirectangular(e, t = null) { + return this._fromTexture(e, t); + } + /** + * Generates a PMREM from an cubemap texture, which can be either LDR + * or HDR. The ideal input cube size is 256 x 256, + * as this matches best with the 256 x 256 cubemap output. + */ + fromCubemap(e, t = null) { + return this._fromTexture(e, t); + } + /** + * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + compileCubemapShader() { + this._cubemapMaterial === null && (this._cubemapMaterial = ba(), this._compileMaterial(this._cubemapMaterial)); + } + /** + * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + compileEquirectangularShader() { + this._equirectMaterial === null && (this._equirectMaterial = Ta(), this._compileMaterial(this._equirectMaterial)); + } + /** + * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class, + * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on + * one of them will cause any others to also become unusable. + */ + dispose() { + this._dispose(), this._cubemapMaterial !== null && this._cubemapMaterial.dispose(), this._equirectMaterial !== null && this._equirectMaterial.dispose(); + } + // private interface + _setSize(e) { + this._lodMax = Math.floor(Math.log2(e)), this._cubeSize = Math.pow(2, this._lodMax); + } + _dispose() { + this._blurMaterial !== null && this._blurMaterial.dispose(), this._pingPongRenderTarget !== null && this._pingPongRenderTarget.dispose(); + for (let e = 0; e < this._lodPlanes.length; e++) + this._lodPlanes[e].dispose(); + } + _cleanup(e) { + this._renderer.setRenderTarget(zr, Gr, Hr), e.scissorTest = !1, Xi(e, 0, 0, e.width, e.height); + } + _fromTexture(e, t) { + e.mapping === Qn || e.mapping === ei ? this._setSize(e.image.length === 0 ? 16 : e.image[0].width || e.image[0].image.width) : this._setSize(e.image.width / 4), zr = this._renderer.getRenderTarget(), Gr = this._renderer.getActiveCubeFace(), Hr = this._renderer.getActiveMipmapLevel(); + const n = t || this._allocateTargets(); + return this._textureToCubeUV(e, n), this._applyPMREM(n), this._cleanup(n), n; + } + _allocateTargets() { + const e = 3 * Math.max(this._cubeSize, 112), t = 4 * this._cubeSize, n = { + magFilter: Rt, + minFilter: Rt, + generateMipmaps: !1, + type: gi, + format: Ft, + colorSpace: $t, + depthBuffer: !1 + }, r = ya(e, t, n); + if (this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== e || this._pingPongRenderTarget.height !== t) { + this._pingPongRenderTarget !== null && this._dispose(), this._pingPongRenderTarget = ya(e, t, n); + const { _lodMax: s } = this; + ({ sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = rd(s)), this._blurMaterial = sd(s, e, t); + } + return r; + } + _compileMaterial(e) { + const t = new Ot(this._lodPlanes[0], e); + this._renderer.compile(t, Br); + } + _sceneToCubeUV(e, t, n, r) { + const a = new Tt(90, 1, t, n), l = [1, -1, 1, 1, 1, 1], c = [1, 1, 1, -1, -1, -1], h = this._renderer, d = h.autoClear, p = h.toneMapping; + h.getClearColor(Ma), h.toneMapping = ln, h.autoClear = !1; + const m = new ls({ + name: "PMREM.Background", + side: Mt, + depthWrite: !1, + depthTest: !1 + }), g = new Ot(new ii(), m); + let v = !1; + const f = e.background; + f ? f.isColor && (m.color.copy(f), e.background = null, v = !0) : (m.color.copy(Ma), v = !0); + for (let u = 0; u < 6; u++) { + const b = u % 3; + b === 0 ? (a.up.set(0, l[u], 0), a.lookAt(c[u], 0, 0)) : b === 1 ? (a.up.set(0, 0, l[u]), a.lookAt(0, c[u], 0)) : (a.up.set(0, l[u], 0), a.lookAt(0, 0, c[u])); + const S = this._cubeSize; + Xi(r, b * S, u > 2 ? S : 0, S, S), h.setRenderTarget(r), v && h.render(g, a), h.render(e, a); + } + g.geometry.dispose(), g.material.dispose(), h.toneMapping = p, h.autoClear = d, e.background = f; + } + _textureToCubeUV(e, t) { + const n = this._renderer, r = e.mapping === Qn || e.mapping === ei; + r ? (this._cubemapMaterial === null && (this._cubemapMaterial = ba()), this._cubemapMaterial.uniforms.flipEnvMap.value = e.isRenderTargetTexture === !1 ? -1 : 1) : this._equirectMaterial === null && (this._equirectMaterial = Ta()); + const s = r ? this._cubemapMaterial : this._equirectMaterial, o = new Ot(this._lodPlanes[0], s), a = s.uniforms; + a.envMap.value = e; + const l = this._cubeSize; + Xi(t, 0, 0, 3 * l, 2 * l), n.setRenderTarget(t), n.render(o, Br); + } + _applyPMREM(e) { + const t = this._renderer, n = t.autoClear; + t.autoClear = !1; + for (let r = 1; r < this._lodPlanes.length; r++) { + const s = Math.sqrt(this._sigmas[r] * this._sigmas[r] - this._sigmas[r - 1] * this._sigmas[r - 1]), o = Sa[(r - 1) % Sa.length]; + this._blur(e, r - 1, r, s, o); + } + t.autoClear = n; + } + /** + * This is a two-pass Gaussian blur for a cubemap. Normally this is done + * vertically and horizontally, but this breaks down on a cube. Here we apply + * the blur latitudinally (around the poles), and then longitudinally (towards + * the poles) to approximate the orthogonally-separable blur. It is least + * accurate at the poles, but still does a decent job. + */ + _blur(e, t, n, r, s) { + const o = this._pingPongRenderTarget; + this._halfBlur( + e, + o, + t, + n, + r, + "latitudinal", + s + ), this._halfBlur( + o, + e, + n, + n, + r, + "longitudinal", + s + ); + } + _halfBlur(e, t, n, r, s, o, a) { + const l = this._renderer, c = this._blurMaterial; + o !== "latitudinal" && o !== "longitudinal" && console.error( + "blur direction must be either latitudinal or longitudinal!" + ); + const h = 3, d = new Ot(this._lodPlanes[r], c), p = c.uniforms, m = this._sizeLods[n] - 1, g = isFinite(s) ? Math.PI / (2 * m) : 2 * Math.PI / (2 * Sn - 1), v = s / g, f = isFinite(s) ? 1 + Math.floor(h * v) : Sn; + f > Sn && console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${f} samples when the maximum is set to ${Sn}`); + const u = []; + let b = 0; + for (let A = 0; A < Sn; ++A) { + const W = A / v, x = Math.exp(-W * W / 2); + u.push(x), A === 0 ? b += x : A < f && (b += 2 * x); + } + for (let A = 0; A < u.length; A++) + u[A] = u[A] / b; + p.envMap.value = e.texture, p.samples.value = f, p.weights.value = u, p.latitudinal.value = o === "latitudinal", a && (p.poleAxis.value = a); + const { _lodMax: S } = this; + p.dTheta.value = g, p.mipInt.value = S - n; + const R = this._sizeLods[r], D = 3 * R * (r > S - Kn ? r - S + Kn : 0), C = 4 * (this._cubeSize - R); + Xi(t, D, C, 3 * R, 2 * R), l.setRenderTarget(t), l.render(d, Br); + } +} +function rd(i) { + const e = [], t = [], n = []; + let r = i; + const s = i - Kn + 1 + xa.length; + for (let o = 0; o < s; o++) { + const a = Math.pow(2, r); + t.push(a); + let l = 1 / a; + o > i - Kn ? l = xa[o - i + Kn - 1] : o === 0 && (l = 0), n.push(l); + const c = 1 / (a - 2), h = -c, d = 1 + c, p = [h, h, d, h, d, d, h, h, d, d, h, d], m = 6, g = 6, v = 3, f = 2, u = 1, b = new Float32Array(v * g * m), S = new Float32Array(f * g * m), R = new Float32Array(u * g * m); + for (let C = 0; C < m; C++) { + const A = C % 3 * 2 / 3 - 1, W = C > 2 ? 0 : -1, x = [ + A, + W, + 0, + A + 2 / 3, + W, + 0, + A + 2 / 3, + W + 1, + 0, + A, + W, + 0, + A + 2 / 3, + W + 1, + 0, + A, + W + 1, + 0 + ]; + b.set(x, v * g * C), S.set(p, f * g * C); + const y = [C, C, C, C, C, C]; + R.set(y, u * g * C); + } + const D = new hn(); + D.setAttribute("position", new Bt(b, v)), D.setAttribute("uv", new Bt(S, f)), D.setAttribute("faceIndex", new Bt(R, u)), e.push(D), r > Kn && r--; + } + return { lodPlanes: e, sizeLods: t, sigmas: n }; +} +function ya(i, e, t) { + const n = new bn(i, e, t); + return n.texture.mapping = rr, n.texture.name = "PMREM.cubeUv", n.scissorTest = !0, n; +} +function Xi(i, e, t, n, r) { + i.viewport.set(e, t, n, r), i.scissor.set(e, t, n, r); +} +function sd(i, e, t) { + const n = new Float32Array(Sn), r = new P(0, 1, 0); + return new wn({ + name: "SphericalGaussianBlur", + defines: { + n: Sn, + CUBEUV_TEXEL_WIDTH: 1 / e, + CUBEUV_TEXEL_HEIGHT: 1 / t, + CUBEUV_MAX_MIP: `${i}.0` + }, + uniforms: { + envMap: { value: null }, + samples: { value: 1 }, + weights: { value: n }, + latitudinal: { value: !1 }, + dTheta: { value: 0 }, + mipInt: { value: 0 }, + poleAxis: { value: r } + }, + vertexShader: hs(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + ` + ), + blending: on, + depthTest: !1, + depthWrite: !1 + }); +} +function Ta() { + return new wn({ + name: "EquirectangularToCubeUV", + uniforms: { + envMap: { value: null } + }, + vertexShader: hs(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + ` + ), + blending: on, + depthTest: !1, + depthWrite: !1 + }); +} +function ba() { + return new wn({ + name: "CubemapToCubeUV", + uniforms: { + envMap: { value: null }, + flipEnvMap: { value: -1 } + }, + vertexShader: hs(), + fragmentShader: ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + ` + ), + blending: on, + depthTest: !1, + depthWrite: !1 + }); +} +function hs() { + return ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + ` + ); +} +function ad(i) { + let e = /* @__PURE__ */ new WeakMap(), t = null; + function n(a) { + if (a && a.isTexture) { + const l = a.mapping, c = l === $r || l === Jr, h = l === Qn || l === ei; + if (c || h) + if (a.isRenderTargetTexture && a.needsPMREMUpdate === !0) { + a.needsPMREMUpdate = !1; + let d = e.get(a); + return t === null && (t = new Ea(i)), d = c ? t.fromEquirectangular(a, d) : t.fromCubemap(a, d), e.set(a, d), d.texture; + } else { + if (e.has(a)) + return e.get(a).texture; + { + const d = a.image; + if (c && d && d.height > 0 || h && d && r(d)) { + t === null && (t = new Ea(i)); + const p = c ? t.fromEquirectangular(a) : t.fromCubemap(a); + return e.set(a, p), a.addEventListener("dispose", s), p.texture; + } else + return null; + } + } + } + return a; + } + function r(a) { + let l = 0; + const c = 6; + for (let h = 0; h < c; h++) + a[h] !== void 0 && l++; + return l === c; + } + function s(a) { + const l = a.target; + l.removeEventListener("dispose", s); + const c = e.get(l); + c !== void 0 && (e.delete(l), c.dispose()); + } + function o() { + e = /* @__PURE__ */ new WeakMap(), t !== null && (t.dispose(), t = null); + } + return { + get: n, + dispose: o + }; +} +function od(i) { + const e = {}; + function t(n) { + if (e[n] !== void 0) + return e[n]; + let r; + switch (n) { + case "WEBGL_depth_texture": + r = i.getExtension("WEBGL_depth_texture") || i.getExtension("MOZ_WEBGL_depth_texture") || i.getExtension("WEBKIT_WEBGL_depth_texture"); + break; + case "EXT_texture_filter_anisotropic": + r = i.getExtension("EXT_texture_filter_anisotropic") || i.getExtension("MOZ_EXT_texture_filter_anisotropic") || i.getExtension("WEBKIT_EXT_texture_filter_anisotropic"); + break; + case "WEBGL_compressed_texture_s3tc": + r = i.getExtension("WEBGL_compressed_texture_s3tc") || i.getExtension("MOZ_WEBGL_compressed_texture_s3tc") || i.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"); + break; + case "WEBGL_compressed_texture_pvrtc": + r = i.getExtension("WEBGL_compressed_texture_pvrtc") || i.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"); + break; + default: + r = i.getExtension(n); + } + return e[n] = r, r; + } + return { + has: function(n) { + return t(n) !== null; + }, + init: function(n) { + n.isWebGL2 ? (t("EXT_color_buffer_float"), t("WEBGL_clip_cull_distance")) : (t("WEBGL_depth_texture"), t("OES_texture_float"), t("OES_texture_half_float"), t("OES_texture_half_float_linear"), t("OES_standard_derivatives"), t("OES_element_index_uint"), t("OES_vertex_array_object"), t("ANGLE_instanced_arrays")), t("OES_texture_float_linear"), t("EXT_color_buffer_half_float"), t("WEBGL_multisampled_render_to_texture"); + }, + get: function(n) { + const r = t(n); + return r === null && console.warn("THREE.WebGLRenderer: " + n + " extension not supported."), r; + } + }; +} +function ld(i, e, t, n) { + const r = {}, s = /* @__PURE__ */ new WeakMap(); + function o(d) { + const p = d.target; + p.index !== null && e.remove(p.index); + for (const g in p.attributes) + e.remove(p.attributes[g]); + for (const g in p.morphAttributes) { + const v = p.morphAttributes[g]; + for (let f = 0, u = v.length; f < u; f++) + e.remove(v[f]); + } + p.removeEventListener("dispose", o), delete r[p.id]; + const m = s.get(p); + m && (e.remove(m), s.delete(p)), n.releaseStatesOfGeometry(p), p.isInstancedBufferGeometry === !0 && delete p._maxInstanceCount, t.memory.geometries--; + } + function a(d, p) { + return r[p.id] === !0 || (p.addEventListener("dispose", o), r[p.id] = !0, t.memory.geometries++), p; + } + function l(d) { + const p = d.attributes; + for (const g in p) + e.update(p[g], i.ARRAY_BUFFER); + const m = d.morphAttributes; + for (const g in m) { + const v = m[g]; + for (let f = 0, u = v.length; f < u; f++) + e.update(v[f], i.ARRAY_BUFFER); + } + } + function c(d) { + const p = [], m = d.index, g = d.attributes.position; + let v = 0; + if (m !== null) { + const b = m.array; + v = m.version; + for (let S = 0, R = b.length; S < R; S += 3) { + const D = b[S + 0], C = b[S + 1], A = b[S + 2]; + p.push(D, C, C, A, A, D); + } + } else if (g !== void 0) { + const b = g.array; + v = g.version; + for (let S = 0, R = b.length / 3 - 1; S < R; S += 3) { + const D = S + 0, C = S + 1, A = S + 2; + p.push(D, C, C, A, A, D); + } + } else + return; + const f = new (Mo(p) ? Ro : wo)(p, 1); + f.version = v; + const u = s.get(d); + u && e.remove(u), s.set(d, f); + } + function h(d) { + const p = s.get(d); + if (p) { + const m = d.index; + m !== null && p.version < m.version && c(d); + } else + c(d); + return s.get(d); + } + return { + get: a, + update: l, + getWireframeAttribute: h + }; +} +function cd(i, e, t, n) { + const r = n.isWebGL2; + let s; + function o(m) { + s = m; + } + let a, l; + function c(m) { + a = m.type, l = m.bytesPerElement; + } + function h(m, g) { + i.drawElements(s, g, a, m * l), t.update(g, s, 1); + } + function d(m, g, v) { + if (v === 0) return; + let f, u; + if (r) + f = i, u = "drawElementsInstanced"; + else if (f = e.get("ANGLE_instanced_arrays"), u = "drawElementsInstancedANGLE", f === null) { + console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."); + return; + } + f[u](s, g, a, m * l, v), t.update(g, s, v); + } + function p(m, g, v) { + if (v === 0) return; + const f = e.get("WEBGL_multi_draw"); + if (f === null) + for (let u = 0; u < v; u++) + this.render(m[u] / l, g[u]); + else { + f.multiDrawElementsWEBGL(s, g, 0, a, m, 0, v); + let u = 0; + for (let b = 0; b < v; b++) + u += g[b]; + t.update(u, s, 1); + } + } + this.setMode = o, this.setIndex = c, this.render = h, this.renderInstances = d, this.renderMultiDraw = p; +} +function ud(i) { + const e = { + geometries: 0, + textures: 0 + }, t = { + frame: 0, + calls: 0, + triangles: 0, + points: 0, + lines: 0 + }; + function n(s, o, a) { + switch (t.calls++, o) { + case i.TRIANGLES: + t.triangles += a * (s / 3); + break; + case i.LINES: + t.lines += a * (s / 2); + break; + case i.LINE_STRIP: + t.lines += a * (s - 1); + break; + case i.LINE_LOOP: + t.lines += a * s; + break; + case i.POINTS: + t.points += a * s; + break; + default: + console.error("THREE.WebGLInfo: Unknown draw mode:", o); + break; + } + } + function r() { + t.calls = 0, t.triangles = 0, t.points = 0, t.lines = 0; + } + return { + memory: e, + render: t, + programs: null, + autoReset: !0, + reset: r, + update: n + }; +} +function hd(i, e) { + return i[0] - e[0]; +} +function dd(i, e) { + return Math.abs(e[1]) - Math.abs(i[1]); +} +function fd(i, e, t) { + const n = {}, r = new Float32Array(8), s = /* @__PURE__ */ new WeakMap(), o = new $e(), a = []; + for (let c = 0; c < 8; c++) + a[c] = [c, 0]; + function l(c, h, d) { + const p = c.morphTargetInfluences; + if (e.isWebGL2 === !0) { + const m = h.morphAttributes.position || h.morphAttributes.normal || h.morphAttributes.color, g = m !== void 0 ? m.length : 0; + let v = s.get(h); + if (v === void 0 || v.count !== g) { + let L = function() { + Z.dispose(), s.delete(h), h.removeEventListener("dispose", L); + }; + v !== void 0 && v.texture.dispose(); + const b = h.morphAttributes.position !== void 0, S = h.morphAttributes.normal !== void 0, R = h.morphAttributes.color !== void 0, D = h.morphAttributes.position || [], C = h.morphAttributes.normal || [], A = h.morphAttributes.color || []; + let W = 0; + b === !0 && (W = 1), S === !0 && (W = 2), R === !0 && (W = 3); + let x = h.attributes.position.count * W, y = 1; + x > e.maxTextureSize && (y = Math.ceil(x / e.maxTextureSize), x = e.maxTextureSize); + const z = new Float32Array(x * y * 4 * g), Z = new yo(z, x, y, g); + Z.type = an, Z.needsUpdate = !0; + const re = W * 4; + for (let F = 0; F < g; F++) { + const V = D[F], Y = C[F], X = A[F], k = x * y * 4 * F; + for (let q = 0; q < V.count; q++) { + const Q = q * re; + b === !0 && (o.fromBufferAttribute(V, q), z[k + Q + 0] = o.x, z[k + Q + 1] = o.y, z[k + Q + 2] = o.z, z[k + Q + 3] = 0), S === !0 && (o.fromBufferAttribute(Y, q), z[k + Q + 4] = o.x, z[k + Q + 5] = o.y, z[k + Q + 6] = o.z, z[k + Q + 7] = 0), R === !0 && (o.fromBufferAttribute(X, q), z[k + Q + 8] = o.x, z[k + Q + 9] = o.y, z[k + Q + 10] = o.z, z[k + Q + 11] = X.itemSize === 4 ? o.w : 1); + } + } + v = { + count: g, + texture: Z, + size: new Ie(x, y) + }, s.set(h, v), h.addEventListener("dispose", L); + } + let f = 0; + for (let b = 0; b < p.length; b++) + f += p[b]; + const u = h.morphTargetsRelative ? 1 : 1 - f; + d.getUniforms().setValue(i, "morphTargetBaseInfluence", u), d.getUniforms().setValue(i, "morphTargetInfluences", p), d.getUniforms().setValue(i, "morphTargetsTexture", v.texture, t), d.getUniforms().setValue(i, "morphTargetsTextureSize", v.size); + } else { + const m = p === void 0 ? 0 : p.length; + let g = n[h.id]; + if (g === void 0 || g.length !== m) { + g = []; + for (let S = 0; S < m; S++) + g[S] = [S, 0]; + n[h.id] = g; + } + for (let S = 0; S < m; S++) { + const R = g[S]; + R[0] = S, R[1] = p[S]; + } + g.sort(dd); + for (let S = 0; S < 8; S++) + S < m && g[S][1] ? (a[S][0] = g[S][0], a[S][1] = g[S][1]) : (a[S][0] = Number.MAX_SAFE_INTEGER, a[S][1] = 0); + a.sort(hd); + const v = h.morphAttributes.position, f = h.morphAttributes.normal; + let u = 0; + for (let S = 0; S < 8; S++) { + const R = a[S], D = R[0], C = R[1]; + D !== Number.MAX_SAFE_INTEGER && C ? (v && h.getAttribute("morphTarget" + S) !== v[D] && h.setAttribute("morphTarget" + S, v[D]), f && h.getAttribute("morphNormal" + S) !== f[D] && h.setAttribute("morphNormal" + S, f[D]), r[S] = C, u += C) : (v && h.hasAttribute("morphTarget" + S) === !0 && h.deleteAttribute("morphTarget" + S), f && h.hasAttribute("morphNormal" + S) === !0 && h.deleteAttribute("morphNormal" + S), r[S] = 0); + } + const b = h.morphTargetsRelative ? 1 : 1 - u; + d.getUniforms().setValue(i, "morphTargetBaseInfluence", b), d.getUniforms().setValue(i, "morphTargetInfluences", r); + } + } + return { + update: l + }; +} +function pd(i, e, t, n) { + let r = /* @__PURE__ */ new WeakMap(); + function s(l) { + const c = n.render.frame, h = l.geometry, d = e.get(l, h); + if (r.get(d) !== c && (e.update(d), r.set(d, c)), l.isInstancedMesh && (l.hasEventListener("dispose", a) === !1 && l.addEventListener("dispose", a), r.get(l) !== c && (t.update(l.instanceMatrix, i.ARRAY_BUFFER), l.instanceColor !== null && t.update(l.instanceColor, i.ARRAY_BUFFER), r.set(l, c))), l.isSkinnedMesh) { + const p = l.skeleton; + r.get(p) !== c && (p.update(), r.set(p, c)); + } + return d; + } + function o() { + r = /* @__PURE__ */ new WeakMap(); + } + function a(l) { + const c = l.target; + c.removeEventListener("dispose", a), t.remove(c.instanceMatrix), c.instanceColor !== null && t.remove(c.instanceColor); + } + return { + update: s, + dispose: o + }; +} +class Io extends bt { + constructor(e, t, n, r, s, o, a, l, c, h) { + if (h = h !== void 0 ? h : yn, h !== yn && h !== ti) + throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat"); + n === void 0 && h === yn && (n = sn), n === void 0 && h === ti && (n = En), super(null, r, s, o, a, l, h, n, c), this.isDepthTexture = !0, this.image = { width: e, height: t }, this.magFilter = a !== void 0 ? a : gt, this.minFilter = l !== void 0 ? l : gt, this.flipY = !1, this.generateMipmaps = !1, this.compareFunction = null; + } + copy(e) { + return super.copy(e), this.compareFunction = e.compareFunction, this; + } + toJSON(e) { + const t = super.toJSON(e); + return this.compareFunction !== null && (t.compareFunction = this.compareFunction), t; + } +} +const No = /* @__PURE__ */ new bt(), Fo = /* @__PURE__ */ new Io(1, 1); +Fo.compareFunction = xo; +const Oo = /* @__PURE__ */ new yo(), Bo = /* @__PURE__ */ new Jl(), zo = /* @__PURE__ */ new Po(), Aa = [], wa = [], Ra = new Float32Array(16), Ca = new Float32Array(9), La = new Float32Array(4); +function ri(i, e, t) { + const n = i[0]; + if (n <= 0 || n > 0) return i; + const r = e * t; + let s = Aa[r]; + if (s === void 0 && (s = new Float32Array(r), Aa[r] = s), e !== 0) { + n.toArray(s, 0); + for (let o = 1, a = 0; o !== e; ++o) + a += t, i[o].toArray(s, a); + } + return s; +} +function ot(i, e) { + if (i.length !== e.length) return !1; + for (let t = 0, n = i.length; t < n; t++) + if (i[t] !== e[t]) return !1; + return !0; +} +function lt(i, e) { + for (let t = 0, n = e.length; t < n; t++) + i[t] = e[t]; +} +function or(i, e) { + let t = wa[e]; + t === void 0 && (t = new Int32Array(e), wa[e] = t); + for (let n = 0; n !== e; ++n) + t[n] = i.allocateTextureUnit(); + return t; +} +function md(i, e) { + const t = this.cache; + t[0] !== e && (i.uniform1f(this.addr, e), t[0] = e); +} +function _d(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y) && (i.uniform2f(this.addr, e.x, e.y), t[0] = e.x, t[1] = e.y); + else { + if (ot(t, e)) return; + i.uniform2fv(this.addr, e), lt(t, e); + } +} +function gd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z) && (i.uniform3f(this.addr, e.x, e.y, e.z), t[0] = e.x, t[1] = e.y, t[2] = e.z); + else if (e.r !== void 0) + (t[0] !== e.r || t[1] !== e.g || t[2] !== e.b) && (i.uniform3f(this.addr, e.r, e.g, e.b), t[0] = e.r, t[1] = e.g, t[2] = e.b); + else { + if (ot(t, e)) return; + i.uniform3fv(this.addr, e), lt(t, e); + } +} +function vd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z || t[3] !== e.w) && (i.uniform4f(this.addr, e.x, e.y, e.z, e.w), t[0] = e.x, t[1] = e.y, t[2] = e.z, t[3] = e.w); + else { + if (ot(t, e)) return; + i.uniform4fv(this.addr, e), lt(t, e); + } +} +function xd(i, e) { + const t = this.cache, n = e.elements; + if (n === void 0) { + if (ot(t, e)) return; + i.uniformMatrix2fv(this.addr, !1, e), lt(t, e); + } else { + if (ot(t, n)) return; + La.set(n), i.uniformMatrix2fv(this.addr, !1, La), lt(t, n); + } +} +function Md(i, e) { + const t = this.cache, n = e.elements; + if (n === void 0) { + if (ot(t, e)) return; + i.uniformMatrix3fv(this.addr, !1, e), lt(t, e); + } else { + if (ot(t, n)) return; + Ca.set(n), i.uniformMatrix3fv(this.addr, !1, Ca), lt(t, n); + } +} +function Sd(i, e) { + const t = this.cache, n = e.elements; + if (n === void 0) { + if (ot(t, e)) return; + i.uniformMatrix4fv(this.addr, !1, e), lt(t, e); + } else { + if (ot(t, n)) return; + Ra.set(n), i.uniformMatrix4fv(this.addr, !1, Ra), lt(t, n); + } +} +function Ed(i, e) { + const t = this.cache; + t[0] !== e && (i.uniform1i(this.addr, e), t[0] = e); +} +function yd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y) && (i.uniform2i(this.addr, e.x, e.y), t[0] = e.x, t[1] = e.y); + else { + if (ot(t, e)) return; + i.uniform2iv(this.addr, e), lt(t, e); + } +} +function Td(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z) && (i.uniform3i(this.addr, e.x, e.y, e.z), t[0] = e.x, t[1] = e.y, t[2] = e.z); + else { + if (ot(t, e)) return; + i.uniform3iv(this.addr, e), lt(t, e); + } +} +function bd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z || t[3] !== e.w) && (i.uniform4i(this.addr, e.x, e.y, e.z, e.w), t[0] = e.x, t[1] = e.y, t[2] = e.z, t[3] = e.w); + else { + if (ot(t, e)) return; + i.uniform4iv(this.addr, e), lt(t, e); + } +} +function Ad(i, e) { + const t = this.cache; + t[0] !== e && (i.uniform1ui(this.addr, e), t[0] = e); +} +function wd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y) && (i.uniform2ui(this.addr, e.x, e.y), t[0] = e.x, t[1] = e.y); + else { + if (ot(t, e)) return; + i.uniform2uiv(this.addr, e), lt(t, e); + } +} +function Rd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z) && (i.uniform3ui(this.addr, e.x, e.y, e.z), t[0] = e.x, t[1] = e.y, t[2] = e.z); + else { + if (ot(t, e)) return; + i.uniform3uiv(this.addr, e), lt(t, e); + } +} +function Cd(i, e) { + const t = this.cache; + if (e.x !== void 0) + (t[0] !== e.x || t[1] !== e.y || t[2] !== e.z || t[3] !== e.w) && (i.uniform4ui(this.addr, e.x, e.y, e.z, e.w), t[0] = e.x, t[1] = e.y, t[2] = e.z, t[3] = e.w); + else { + if (ot(t, e)) return; + i.uniform4uiv(this.addr, e), lt(t, e); + } +} +function Ld(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r); + const s = this.type === i.SAMPLER_2D_SHADOW ? Fo : No; + t.setTexture2D(e || s, r); +} +function Pd(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r), t.setTexture3D(e || Bo, r); +} +function Dd(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r), t.setTextureCube(e || zo, r); +} +function Ud(i, e, t) { + const n = this.cache, r = t.allocateTextureUnit(); + n[0] !== r && (i.uniform1i(this.addr, r), n[0] = r), t.setTexture2DArray(e || Oo, r); +} +function Id(i) { + switch (i) { + case 5126: + return md; + case 35664: + return _d; + case 35665: + return gd; + case 35666: + return vd; + case 35674: + return xd; + case 35675: + return Md; + case 35676: + return Sd; + case 5124: + case 35670: + return Ed; + case 35667: + case 35671: + return yd; + case 35668: + case 35672: + return Td; + case 35669: + case 35673: + return bd; + case 5125: + return Ad; + case 36294: + return wd; + case 36295: + return Rd; + case 36296: + return Cd; + case 35678: + case 36198: + case 36298: + case 36306: + case 35682: + return Ld; + case 35679: + case 36299: + case 36307: + return Pd; + case 35680: + case 36300: + case 36308: + case 36293: + return Dd; + case 36289: + case 36303: + case 36311: + case 36292: + return Ud; + } +} +function Nd(i, e) { + i.uniform1fv(this.addr, e); +} +function Fd(i, e) { + const t = ri(e, this.size, 2); + i.uniform2fv(this.addr, t); +} +function Od(i, e) { + const t = ri(e, this.size, 3); + i.uniform3fv(this.addr, t); +} +function Bd(i, e) { + const t = ri(e, this.size, 4); + i.uniform4fv(this.addr, t); +} +function zd(i, e) { + const t = ri(e, this.size, 4); + i.uniformMatrix2fv(this.addr, !1, t); +} +function Gd(i, e) { + const t = ri(e, this.size, 9); + i.uniformMatrix3fv(this.addr, !1, t); +} +function Hd(i, e) { + const t = ri(e, this.size, 16); + i.uniformMatrix4fv(this.addr, !1, t); +} +function Vd(i, e) { + i.uniform1iv(this.addr, e); +} +function kd(i, e) { + i.uniform2iv(this.addr, e); +} +function Wd(i, e) { + i.uniform3iv(this.addr, e); +} +function Xd(i, e) { + i.uniform4iv(this.addr, e); +} +function qd(i, e) { + i.uniform1uiv(this.addr, e); +} +function Yd(i, e) { + i.uniform2uiv(this.addr, e); +} +function jd(i, e) { + i.uniform3uiv(this.addr, e); +} +function Kd(i, e) { + i.uniform4uiv(this.addr, e); +} +function Zd(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTexture2D(e[o] || No, s[o]); +} +function $d(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTexture3D(e[o] || Bo, s[o]); +} +function Jd(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTextureCube(e[o] || zo, s[o]); +} +function Qd(i, e, t) { + const n = this.cache, r = e.length, s = or(t, r); + ot(n, s) || (i.uniform1iv(this.addr, s), lt(n, s)); + for (let o = 0; o !== r; ++o) + t.setTexture2DArray(e[o] || Oo, s[o]); +} +function ef(i) { + switch (i) { + case 5126: + return Nd; + case 35664: + return Fd; + case 35665: + return Od; + case 35666: + return Bd; + case 35674: + return zd; + case 35675: + return Gd; + case 35676: + return Hd; + case 5124: + case 35670: + return Vd; + case 35667: + case 35671: + return kd; + case 35668: + case 35672: + return Wd; + case 35669: + case 35673: + return Xd; + case 5125: + return qd; + case 36294: + return Yd; + case 36295: + return jd; + case 36296: + return Kd; + case 35678: + case 36198: + case 36298: + case 36306: + case 35682: + return Zd; + case 35679: + case 36299: + case 36307: + return $d; + case 35680: + case 36300: + case 36308: + case 36293: + return Jd; + case 36289: + case 36303: + case 36311: + case 36292: + return Qd; + } +} +class tf { + constructor(e, t, n) { + this.id = e, this.addr = n, this.cache = [], this.type = t.type, this.setValue = Id(t.type); + } +} +class nf { + constructor(e, t, n) { + this.id = e, this.addr = n, this.cache = [], this.type = t.type, this.size = t.size, this.setValue = ef(t.type); + } +} +class rf { + constructor(e) { + this.id = e, this.seq = [], this.map = {}; + } + setValue(e, t, n) { + const r = this.seq; + for (let s = 0, o = r.length; s !== o; ++s) { + const a = r[s]; + a.setValue(e, t[a.id], n); + } + } +} +const Vr = /(\w+)(\])?(\[|\.)?/g; +function Pa(i, e) { + i.seq.push(e), i.map[e.id] = e; +} +function sf(i, e, t) { + const n = i.name, r = n.length; + for (Vr.lastIndex = 0; ; ) { + const s = Vr.exec(n), o = Vr.lastIndex; + let a = s[1]; + const l = s[2] === "]", c = s[3]; + if (l && (a = a | 0), c === void 0 || c === "[" && o + 2 === r) { + Pa(t, c === void 0 ? new tf(a, i, e) : new nf(a, i, e)); + break; + } else { + let d = t.map[a]; + d === void 0 && (d = new rf(a), Pa(t, d)), t = d; + } + } +} +class Zi { + constructor(e, t) { + this.seq = [], this.map = {}; + const n = e.getProgramParameter(t, e.ACTIVE_UNIFORMS); + for (let r = 0; r < n; ++r) { + const s = e.getActiveUniform(t, r), o = e.getUniformLocation(t, s.name); + sf(s, o, this); + } + } + setValue(e, t, n, r) { + const s = this.map[t]; + s !== void 0 && s.setValue(e, n, r); + } + setOptional(e, t, n) { + const r = t[n]; + r !== void 0 && this.setValue(e, n, r); + } + static upload(e, t, n, r) { + for (let s = 0, o = t.length; s !== o; ++s) { + const a = t[s], l = n[a.id]; + l.needsUpdate !== !1 && a.setValue(e, l.value, r); + } + } + static seqWithValue(e, t) { + const n = []; + for (let r = 0, s = e.length; r !== s; ++r) { + const o = e[r]; + o.id in t && n.push(o); + } + return n; + } +} +function Da(i, e, t) { + const n = i.createShader(e); + return i.shaderSource(n, t), i.compileShader(n), n; +} +const af = 37297; +let of = 0; +function lf(i, e) { + const t = i.split(` +`), n = [], r = Math.max(e - 6, 0), s = Math.min(e + 6, t.length); + for (let o = r; o < s; o++) { + const a = o + 1; + n.push(`${a === e ? ">" : " "} ${a}: ${t[o]}`); + } + return n.join(` +`); +} +function cf(i) { + const e = Ke.getPrimaries(Ke.workingColorSpace), t = Ke.getPrimaries(i); + let n; + switch (e === t ? n = "" : e === er && t === Qi ? n = "LinearDisplayP3ToLinearSRGB" : e === Qi && t === er && (n = "LinearSRGBToLinearDisplayP3"), i) { + case $t: + case sr: + return [n, "LinearTransferOETF"]; + case ht: + case os: + return [n, "sRGBTransferOETF"]; + default: + return console.warn("THREE.WebGLProgram: Unsupported color space:", i), [n, "LinearTransferOETF"]; + } +} +function Ua(i, e, t) { + const n = i.getShaderParameter(e, i.COMPILE_STATUS), r = i.getShaderInfoLog(e).trim(); + if (n && r === "") return ""; + const s = /ERROR: 0:(\d+)/.exec(r); + if (s) { + const o = parseInt(s[1]); + return t.toUpperCase() + ` + +` + r + ` + +` + lf(i.getShaderSource(e), o); + } else + return r; +} +function uf(i, e) { + const t = cf(e); + return `vec4 ${i}( vec4 value ) { return ${t[0]}( ${t[1]}( value ) ); }`; +} +function hf(i, e) { + let t; + switch (e) { + case Ml: + t = "Linear"; + break; + case Sl: + t = "Reinhard"; + break; + case El: + t = "OptimizedCineon"; + break; + case yl: + t = "ACESFilmic"; + break; + case bl: + t = "AgX"; + break; + case Tl: + t = "Custom"; + break; + default: + console.warn("THREE.WebGLProgram: Unsupported toneMapping:", e), t = "Linear"; + } + return "vec3 " + i + "( vec3 color ) { return " + t + "ToneMapping( color ); }"; +} +function df(i) { + return [ + i.extensionDerivatives || i.envMapCubeUVHeight || i.bumpMap || i.normalMapTangentSpace || i.clearcoatNormalMap || i.flatShading || i.shaderID === "physical" ? "#extension GL_OES_standard_derivatives : enable" : "", + (i.extensionFragDepth || i.logarithmicDepthBuffer) && i.rendererExtensionFragDepth ? "#extension GL_EXT_frag_depth : enable" : "", + i.extensionDrawBuffers && i.rendererExtensionDrawBuffers ? "#extension GL_EXT_draw_buffers : require" : "", + (i.extensionShaderTextureLOD || i.envMap || i.transmission) && i.rendererExtensionShaderTextureLod ? "#extension GL_EXT_shader_texture_lod : enable" : "" + ].filter(Zn).join(` +`); +} +function ff(i) { + return [ + i.extensionClipCullDistance ? "#extension GL_ANGLE_clip_cull_distance : require" : "" + ].filter(Zn).join(` +`); +} +function pf(i) { + const e = []; + for (const t in i) { + const n = i[t]; + n !== !1 && e.push("#define " + t + " " + n); + } + return e.join(` +`); +} +function mf(i, e) { + const t = {}, n = i.getProgramParameter(e, i.ACTIVE_ATTRIBUTES); + for (let r = 0; r < n; r++) { + const s = i.getActiveAttrib(e, r), o = s.name; + let a = 1; + s.type === i.FLOAT_MAT2 && (a = 2), s.type === i.FLOAT_MAT3 && (a = 3), s.type === i.FLOAT_MAT4 && (a = 4), t[o] = { + type: s.type, + location: i.getAttribLocation(e, o), + locationSize: a + }; + } + return t; +} +function Zn(i) { + return i !== ""; +} +function Ia(i, e) { + const t = e.numSpotLightShadows + e.numSpotLightMaps - e.numSpotLightShadowsWithMaps; + return i.replace(/NUM_DIR_LIGHTS/g, e.numDirLights).replace(/NUM_SPOT_LIGHTS/g, e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g, e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g, t).replace(/NUM_RECT_AREA_LIGHTS/g, e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, e.numPointLights).replace(/NUM_HEMI_LIGHTS/g, e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g, e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, e.numPointLightShadows); +} +function Na(i, e) { + return i.replace(/NUM_CLIPPING_PLANES/g, e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, e.numClippingPlanes - e.numClipIntersection); +} +const _f = /^[ \t]*#include +<([\w\d./]+)>/gm; +function rs(i) { + return i.replace(_f, vf); +} +const gf = /* @__PURE__ */ new Map([ + ["encodings_fragment", "colorspace_fragment"], + // @deprecated, r154 + ["encodings_pars_fragment", "colorspace_pars_fragment"], + // @deprecated, r154 + ["output_fragment", "opaque_fragment"] + // @deprecated, r154 +]); +function vf(i, e) { + let t = Be[e]; + if (t === void 0) { + const n = gf.get(e); + if (n !== void 0) + t = Be[n], console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', e, n); + else + throw new Error("Can not resolve #include <" + e + ">"); + } + return rs(t); +} +const xf = /#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g; +function Fa(i) { + return i.replace(xf, Mf); +} +function Mf(i, e, t, n) { + let r = ""; + for (let s = parseInt(e); s < parseInt(t); s++) + r += n.replace(/\[\s*i\s*\]/g, "[ " + s + " ]").replace(/UNROLLED_LOOP_INDEX/g, s); + return r; +} +function Oa(i) { + let e = "precision " + i.precision + ` float; +precision ` + i.precision + " int;"; + return i.precision === "highp" ? e += ` +#define HIGH_PRECISION` : i.precision === "mediump" ? e += ` +#define MEDIUM_PRECISION` : i.precision === "lowp" && (e += ` +#define LOW_PRECISION`), e; +} +function Sf(i) { + let e = "SHADOWMAP_TYPE_BASIC"; + return i.shadowMapType === so ? e = "SHADOWMAP_TYPE_PCF" : i.shadowMapType === ao ? e = "SHADOWMAP_TYPE_PCF_SOFT" : i.shadowMapType === jt && (e = "SHADOWMAP_TYPE_VSM"), e; +} +function Ef(i) { + let e = "ENVMAP_TYPE_CUBE"; + if (i.envMap) + switch (i.envMapMode) { + case Qn: + case ei: + e = "ENVMAP_TYPE_CUBE"; + break; + case rr: + e = "ENVMAP_TYPE_CUBE_UV"; + break; + } + return e; +} +function yf(i) { + let e = "ENVMAP_MODE_REFLECTION"; + if (i.envMap) + switch (i.envMapMode) { + case ei: + e = "ENVMAP_MODE_REFRACTION"; + break; + } + return e; +} +function Tf(i) { + let e = "ENVMAP_BLENDING_NONE"; + if (i.envMap) + switch (i.combine) { + case oo: + e = "ENVMAP_BLENDING_MULTIPLY"; + break; + case vl: + e = "ENVMAP_BLENDING_MIX"; + break; + case xl: + e = "ENVMAP_BLENDING_ADD"; + break; + } + return e; +} +function bf(i) { + const e = i.envMapCubeUVHeight; + if (e === null) return null; + const t = Math.log2(e) - 2, n = 1 / e; + return { texelWidth: 1 / (3 * Math.max(Math.pow(2, t), 7 * 16)), texelHeight: n, maxMip: t }; +} +function Af(i, e, t, n) { + const r = i.getContext(), s = t.defines; + let o = t.vertexShader, a = t.fragmentShader; + const l = Sf(t), c = Ef(t), h = yf(t), d = Tf(t), p = bf(t), m = t.isWebGL2 ? "" : df(t), g = ff(t), v = pf(s), f = r.createProgram(); + let u, b, S = t.glslVersion ? "#version " + t.glslVersion + ` +` : ""; + t.isRawShaderMaterial ? (u = [ + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v + ].filter(Zn).join(` +`), u.length > 0 && (u += ` +`), b = [ + m, + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v + ].filter(Zn).join(` +`), b.length > 0 && (b += ` +`)) : (u = [ + Oa(t), + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v, + t.extensionClipCullDistance ? "#define USE_CLIP_DISTANCE" : "", + t.batching ? "#define USE_BATCHING" : "", + t.instancing ? "#define USE_INSTANCING" : "", + t.instancingColor ? "#define USE_INSTANCING_COLOR" : "", + t.useFog && t.fog ? "#define USE_FOG" : "", + t.useFog && t.fogExp2 ? "#define FOG_EXP2" : "", + t.map ? "#define USE_MAP" : "", + t.envMap ? "#define USE_ENVMAP" : "", + t.envMap ? "#define " + h : "", + t.lightMap ? "#define USE_LIGHTMAP" : "", + t.aoMap ? "#define USE_AOMAP" : "", + t.bumpMap ? "#define USE_BUMPMAP" : "", + t.normalMap ? "#define USE_NORMALMAP" : "", + t.normalMapObjectSpace ? "#define USE_NORMALMAP_OBJECTSPACE" : "", + t.normalMapTangentSpace ? "#define USE_NORMALMAP_TANGENTSPACE" : "", + t.displacementMap ? "#define USE_DISPLACEMENTMAP" : "", + t.emissiveMap ? "#define USE_EMISSIVEMAP" : "", + t.anisotropy ? "#define USE_ANISOTROPY" : "", + t.anisotropyMap ? "#define USE_ANISOTROPYMAP" : "", + t.clearcoatMap ? "#define USE_CLEARCOATMAP" : "", + t.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "", + t.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", + t.iridescenceMap ? "#define USE_IRIDESCENCEMAP" : "", + t.iridescenceThicknessMap ? "#define USE_IRIDESCENCE_THICKNESSMAP" : "", + t.specularMap ? "#define USE_SPECULARMAP" : "", + t.specularColorMap ? "#define USE_SPECULAR_COLORMAP" : "", + t.specularIntensityMap ? "#define USE_SPECULAR_INTENSITYMAP" : "", + t.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", + t.metalnessMap ? "#define USE_METALNESSMAP" : "", + t.alphaMap ? "#define USE_ALPHAMAP" : "", + t.alphaHash ? "#define USE_ALPHAHASH" : "", + t.transmission ? "#define USE_TRANSMISSION" : "", + t.transmissionMap ? "#define USE_TRANSMISSIONMAP" : "", + t.thicknessMap ? "#define USE_THICKNESSMAP" : "", + t.sheenColorMap ? "#define USE_SHEEN_COLORMAP" : "", + t.sheenRoughnessMap ? "#define USE_SHEEN_ROUGHNESSMAP" : "", + // + t.mapUv ? "#define MAP_UV " + t.mapUv : "", + t.alphaMapUv ? "#define ALPHAMAP_UV " + t.alphaMapUv : "", + t.lightMapUv ? "#define LIGHTMAP_UV " + t.lightMapUv : "", + t.aoMapUv ? "#define AOMAP_UV " + t.aoMapUv : "", + t.emissiveMapUv ? "#define EMISSIVEMAP_UV " + t.emissiveMapUv : "", + t.bumpMapUv ? "#define BUMPMAP_UV " + t.bumpMapUv : "", + t.normalMapUv ? "#define NORMALMAP_UV " + t.normalMapUv : "", + t.displacementMapUv ? "#define DISPLACEMENTMAP_UV " + t.displacementMapUv : "", + t.metalnessMapUv ? "#define METALNESSMAP_UV " + t.metalnessMapUv : "", + t.roughnessMapUv ? "#define ROUGHNESSMAP_UV " + t.roughnessMapUv : "", + t.anisotropyMapUv ? "#define ANISOTROPYMAP_UV " + t.anisotropyMapUv : "", + t.clearcoatMapUv ? "#define CLEARCOATMAP_UV " + t.clearcoatMapUv : "", + t.clearcoatNormalMapUv ? "#define CLEARCOAT_NORMALMAP_UV " + t.clearcoatNormalMapUv : "", + t.clearcoatRoughnessMapUv ? "#define CLEARCOAT_ROUGHNESSMAP_UV " + t.clearcoatRoughnessMapUv : "", + t.iridescenceMapUv ? "#define IRIDESCENCEMAP_UV " + t.iridescenceMapUv : "", + t.iridescenceThicknessMapUv ? "#define IRIDESCENCE_THICKNESSMAP_UV " + t.iridescenceThicknessMapUv : "", + t.sheenColorMapUv ? "#define SHEEN_COLORMAP_UV " + t.sheenColorMapUv : "", + t.sheenRoughnessMapUv ? "#define SHEEN_ROUGHNESSMAP_UV " + t.sheenRoughnessMapUv : "", + t.specularMapUv ? "#define SPECULARMAP_UV " + t.specularMapUv : "", + t.specularColorMapUv ? "#define SPECULAR_COLORMAP_UV " + t.specularColorMapUv : "", + t.specularIntensityMapUv ? "#define SPECULAR_INTENSITYMAP_UV " + t.specularIntensityMapUv : "", + t.transmissionMapUv ? "#define TRANSMISSIONMAP_UV " + t.transmissionMapUv : "", + t.thicknessMapUv ? "#define THICKNESSMAP_UV " + t.thicknessMapUv : "", + // + t.vertexTangents && t.flatShading === !1 ? "#define USE_TANGENT" : "", + t.vertexColors ? "#define USE_COLOR" : "", + t.vertexAlphas ? "#define USE_COLOR_ALPHA" : "", + t.vertexUv1s ? "#define USE_UV1" : "", + t.vertexUv2s ? "#define USE_UV2" : "", + t.vertexUv3s ? "#define USE_UV3" : "", + t.pointsUvs ? "#define USE_POINTS_UV" : "", + t.flatShading ? "#define FLAT_SHADED" : "", + t.skinning ? "#define USE_SKINNING" : "", + t.morphTargets ? "#define USE_MORPHTARGETS" : "", + t.morphNormals && t.flatShading === !1 ? "#define USE_MORPHNORMALS" : "", + t.morphColors && t.isWebGL2 ? "#define USE_MORPHCOLORS" : "", + t.morphTargetsCount > 0 && t.isWebGL2 ? "#define MORPHTARGETS_TEXTURE" : "", + t.morphTargetsCount > 0 && t.isWebGL2 ? "#define MORPHTARGETS_TEXTURE_STRIDE " + t.morphTextureStride : "", + t.morphTargetsCount > 0 && t.isWebGL2 ? "#define MORPHTARGETS_COUNT " + t.morphTargetsCount : "", + t.doubleSided ? "#define DOUBLE_SIDED" : "", + t.flipSided ? "#define FLIP_SIDED" : "", + t.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", + t.shadowMapEnabled ? "#define " + l : "", + t.sizeAttenuation ? "#define USE_SIZEATTENUATION" : "", + t.numLightProbes > 0 ? "#define USE_LIGHT_PROBES" : "", + t.useLegacyLights ? "#define LEGACY_LIGHTS" : "", + t.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", + t.logarithmicDepthBuffer && t.rendererExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "", + "uniform mat4 modelMatrix;", + "uniform mat4 modelViewMatrix;", + "uniform mat4 projectionMatrix;", + "uniform mat4 viewMatrix;", + "uniform mat3 normalMatrix;", + "uniform vec3 cameraPosition;", + "uniform bool isOrthographic;", + "#ifdef USE_INSTANCING", + " attribute mat4 instanceMatrix;", + "#endif", + "#ifdef USE_INSTANCING_COLOR", + " attribute vec3 instanceColor;", + "#endif", + "attribute vec3 position;", + "attribute vec3 normal;", + "attribute vec2 uv;", + "#ifdef USE_UV1", + " attribute vec2 uv1;", + "#endif", + "#ifdef USE_UV2", + " attribute vec2 uv2;", + "#endif", + "#ifdef USE_UV3", + " attribute vec2 uv3;", + "#endif", + "#ifdef USE_TANGENT", + " attribute vec4 tangent;", + "#endif", + "#if defined( USE_COLOR_ALPHA )", + " attribute vec4 color;", + "#elif defined( USE_COLOR )", + " attribute vec3 color;", + "#endif", + "#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )", + " attribute vec3 morphTarget0;", + " attribute vec3 morphTarget1;", + " attribute vec3 morphTarget2;", + " attribute vec3 morphTarget3;", + " #ifdef USE_MORPHNORMALS", + " attribute vec3 morphNormal0;", + " attribute vec3 morphNormal1;", + " attribute vec3 morphNormal2;", + " attribute vec3 morphNormal3;", + " #else", + " attribute vec3 morphTarget4;", + " attribute vec3 morphTarget5;", + " attribute vec3 morphTarget6;", + " attribute vec3 morphTarget7;", + " #endif", + "#endif", + "#ifdef USE_SKINNING", + " attribute vec4 skinIndex;", + " attribute vec4 skinWeight;", + "#endif", + ` +` + ].filter(Zn).join(` +`), b = [ + m, + Oa(t), + "#define SHADER_TYPE " + t.shaderType, + "#define SHADER_NAME " + t.shaderName, + v, + t.useFog && t.fog ? "#define USE_FOG" : "", + t.useFog && t.fogExp2 ? "#define FOG_EXP2" : "", + t.map ? "#define USE_MAP" : "", + t.matcap ? "#define USE_MATCAP" : "", + t.envMap ? "#define USE_ENVMAP" : "", + t.envMap ? "#define " + c : "", + t.envMap ? "#define " + h : "", + t.envMap ? "#define " + d : "", + p ? "#define CUBEUV_TEXEL_WIDTH " + p.texelWidth : "", + p ? "#define CUBEUV_TEXEL_HEIGHT " + p.texelHeight : "", + p ? "#define CUBEUV_MAX_MIP " + p.maxMip + ".0" : "", + t.lightMap ? "#define USE_LIGHTMAP" : "", + t.aoMap ? "#define USE_AOMAP" : "", + t.bumpMap ? "#define USE_BUMPMAP" : "", + t.normalMap ? "#define USE_NORMALMAP" : "", + t.normalMapObjectSpace ? "#define USE_NORMALMAP_OBJECTSPACE" : "", + t.normalMapTangentSpace ? "#define USE_NORMALMAP_TANGENTSPACE" : "", + t.emissiveMap ? "#define USE_EMISSIVEMAP" : "", + t.anisotropy ? "#define USE_ANISOTROPY" : "", + t.anisotropyMap ? "#define USE_ANISOTROPYMAP" : "", + t.clearcoat ? "#define USE_CLEARCOAT" : "", + t.clearcoatMap ? "#define USE_CLEARCOATMAP" : "", + t.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "", + t.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", + t.iridescence ? "#define USE_IRIDESCENCE" : "", + t.iridescenceMap ? "#define USE_IRIDESCENCEMAP" : "", + t.iridescenceThicknessMap ? "#define USE_IRIDESCENCE_THICKNESSMAP" : "", + t.specularMap ? "#define USE_SPECULARMAP" : "", + t.specularColorMap ? "#define USE_SPECULAR_COLORMAP" : "", + t.specularIntensityMap ? "#define USE_SPECULAR_INTENSITYMAP" : "", + t.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", + t.metalnessMap ? "#define USE_METALNESSMAP" : "", + t.alphaMap ? "#define USE_ALPHAMAP" : "", + t.alphaTest ? "#define USE_ALPHATEST" : "", + t.alphaHash ? "#define USE_ALPHAHASH" : "", + t.sheen ? "#define USE_SHEEN" : "", + t.sheenColorMap ? "#define USE_SHEEN_COLORMAP" : "", + t.sheenRoughnessMap ? "#define USE_SHEEN_ROUGHNESSMAP" : "", + t.transmission ? "#define USE_TRANSMISSION" : "", + t.transmissionMap ? "#define USE_TRANSMISSIONMAP" : "", + t.thicknessMap ? "#define USE_THICKNESSMAP" : "", + t.vertexTangents && t.flatShading === !1 ? "#define USE_TANGENT" : "", + t.vertexColors || t.instancingColor ? "#define USE_COLOR" : "", + t.vertexAlphas ? "#define USE_COLOR_ALPHA" : "", + t.vertexUv1s ? "#define USE_UV1" : "", + t.vertexUv2s ? "#define USE_UV2" : "", + t.vertexUv3s ? "#define USE_UV3" : "", + t.pointsUvs ? "#define USE_POINTS_UV" : "", + t.gradientMap ? "#define USE_GRADIENTMAP" : "", + t.flatShading ? "#define FLAT_SHADED" : "", + t.doubleSided ? "#define DOUBLE_SIDED" : "", + t.flipSided ? "#define FLIP_SIDED" : "", + t.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", + t.shadowMapEnabled ? "#define " + l : "", + t.premultipliedAlpha ? "#define PREMULTIPLIED_ALPHA" : "", + t.numLightProbes > 0 ? "#define USE_LIGHT_PROBES" : "", + t.useLegacyLights ? "#define LEGACY_LIGHTS" : "", + t.decodeVideoTexture ? "#define DECODE_VIDEO_TEXTURE" : "", + t.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", + t.logarithmicDepthBuffer && t.rendererExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "", + "uniform mat4 viewMatrix;", + "uniform vec3 cameraPosition;", + "uniform bool isOrthographic;", + t.toneMapping !== ln ? "#define TONE_MAPPING" : "", + t.toneMapping !== ln ? Be.tonemapping_pars_fragment : "", + // this code is required here because it is used by the toneMapping() function defined below + t.toneMapping !== ln ? hf("toneMapping", t.toneMapping) : "", + t.dithering ? "#define DITHERING" : "", + t.opaque ? "#define OPAQUE" : "", + Be.colorspace_pars_fragment, + // this code is required here because it is used by the various encoding/decoding function defined below + uf("linearToOutputTexel", t.outputColorSpace), + t.useDepthPacking ? "#define DEPTH_PACKING " + t.depthPacking : "", + ` +` + ].filter(Zn).join(` +`)), o = rs(o), o = Ia(o, t), o = Na(o, t), a = rs(a), a = Ia(a, t), a = Na(a, t), o = Fa(o), a = Fa(a), t.isWebGL2 && t.isRawShaderMaterial !== !0 && (S = `#version 300 es +`, u = [ + g, + "precision mediump sampler2DArray;", + "#define attribute in", + "#define varying out", + "#define texture2D texture" + ].join(` +`) + ` +` + u, b = [ + "precision mediump sampler2DArray;", + "#define varying in", + t.glslVersion === ta ? "" : "layout(location = 0) out highp vec4 pc_fragColor;", + t.glslVersion === ta ? "" : "#define gl_FragColor pc_fragColor", + "#define gl_FragDepthEXT gl_FragDepth", + "#define texture2D texture", + "#define textureCube texture", + "#define texture2DProj textureProj", + "#define texture2DLodEXT textureLod", + "#define texture2DProjLodEXT textureProjLod", + "#define textureCubeLodEXT textureLod", + "#define texture2DGradEXT textureGrad", + "#define texture2DProjGradEXT textureProjGrad", + "#define textureCubeGradEXT textureGrad" + ].join(` +`) + ` +` + b); + const R = S + u + o, D = S + b + a, C = Da(r, r.VERTEX_SHADER, R), A = Da(r, r.FRAGMENT_SHADER, D); + r.attachShader(f, C), r.attachShader(f, A), t.index0AttributeName !== void 0 ? r.bindAttribLocation(f, 0, t.index0AttributeName) : t.morphTargets === !0 && r.bindAttribLocation(f, 0, "position"), r.linkProgram(f); + function W(Z) { + if (i.debug.checkShaderErrors) { + const re = r.getProgramInfoLog(f).trim(), L = r.getShaderInfoLog(C).trim(), F = r.getShaderInfoLog(A).trim(); + let V = !0, Y = !0; + if (r.getProgramParameter(f, r.LINK_STATUS) === !1) + if (V = !1, typeof i.debug.onShaderError == "function") + i.debug.onShaderError(r, f, C, A); + else { + const X = Ua(r, C, "vertex"), k = Ua(r, A, "fragment"); + console.error( + "THREE.WebGLProgram: Shader Error " + r.getError() + " - VALIDATE_STATUS " + r.getProgramParameter(f, r.VALIDATE_STATUS) + ` + +Program Info Log: ` + re + ` +` + X + ` +` + k + ); + } + else re !== "" ? console.warn("THREE.WebGLProgram: Program Info Log:", re) : (L === "" || F === "") && (Y = !1); + Y && (Z.diagnostics = { + runnable: V, + programLog: re, + vertexShader: { + log: L, + prefix: u + }, + fragmentShader: { + log: F, + prefix: b + } + }); + } + r.deleteShader(C), r.deleteShader(A), x = new Zi(r, f), y = mf(r, f); + } + let x; + this.getUniforms = function() { + return x === void 0 && W(this), x; + }; + let y; + this.getAttributes = function() { + return y === void 0 && W(this), y; + }; + let z = t.rendererExtensionParallelShaderCompile === !1; + return this.isReady = function() { + return z === !1 && (z = r.getProgramParameter(f, af)), z; + }, this.destroy = function() { + n.releaseStatesOfProgram(this), r.deleteProgram(f), this.program = void 0; + }, this.type = t.shaderType, this.name = t.shaderName, this.id = of++, this.cacheKey = e, this.usedTimes = 1, this.program = f, this.vertexShader = C, this.fragmentShader = A, this; +} +let wf = 0; +class Rf { + constructor() { + this.shaderCache = /* @__PURE__ */ new Map(), this.materialCache = /* @__PURE__ */ new Map(); + } + update(e) { + const t = e.vertexShader, n = e.fragmentShader, r = this._getShaderStage(t), s = this._getShaderStage(n), o = this._getShaderCacheForMaterial(e); + return o.has(r) === !1 && (o.add(r), r.usedTimes++), o.has(s) === !1 && (o.add(s), s.usedTimes++), this; + } + remove(e) { + const t = this.materialCache.get(e); + for (const n of t) + n.usedTimes--, n.usedTimes === 0 && this.shaderCache.delete(n.code); + return this.materialCache.delete(e), this; + } + getVertexShaderID(e) { + return this._getShaderStage(e.vertexShader).id; + } + getFragmentShaderID(e) { + return this._getShaderStage(e.fragmentShader).id; + } + dispose() { + this.shaderCache.clear(), this.materialCache.clear(); + } + _getShaderCacheForMaterial(e) { + const t = this.materialCache; + let n = t.get(e); + return n === void 0 && (n = /* @__PURE__ */ new Set(), t.set(e, n)), n; + } + _getShaderStage(e) { + const t = this.shaderCache; + let n = t.get(e); + return n === void 0 && (n = new Cf(e), t.set(e, n)), n; + } +} +class Cf { + constructor(e) { + this.id = wf++, this.code = e, this.usedTimes = 0; + } +} +function Lf(i, e, t, n, r, s, o) { + const a = new bo(), l = new Rf(), c = [], h = r.isWebGL2, d = r.logarithmicDepthBuffer, p = r.vertexTextures; + let m = r.precision; + const g = { + MeshDepthMaterial: "depth", + MeshDistanceMaterial: "distanceRGBA", + MeshNormalMaterial: "normal", + MeshBasicMaterial: "basic", + MeshLambertMaterial: "lambert", + MeshPhongMaterial: "phong", + MeshToonMaterial: "toon", + MeshStandardMaterial: "physical", + MeshPhysicalMaterial: "physical", + MeshMatcapMaterial: "matcap", + LineBasicMaterial: "basic", + LineDashedMaterial: "dashed", + PointsMaterial: "points", + ShadowMaterial: "shadow", + SpriteMaterial: "sprite" + }; + function v(x) { + return x === 0 ? "uv" : `uv${x}`; + } + function f(x, y, z, Z, re) { + const L = Z.fog, F = re.geometry, V = x.isMeshStandardMaterial ? Z.environment : null, Y = (x.isMeshStandardMaterial ? t : e).get(x.envMap || V), X = Y && Y.mapping === rr ? Y.image.height : null, k = g[x.type]; + x.precision !== null && (m = r.getMaxPrecision(x.precision), m !== x.precision && console.warn("THREE.WebGLProgram.getParameters:", x.precision, "not supported, using", m, "instead.")); + const q = F.morphAttributes.position || F.morphAttributes.normal || F.morphAttributes.color, Q = q !== void 0 ? q.length : 0; + let ce = 0; + F.morphAttributes.position !== void 0 && (ce = 1), F.morphAttributes.normal !== void 0 && (ce = 2), F.morphAttributes.color !== void 0 && (ce = 3); + let H, j, oe, ve; + if (k) { + const nt = Gt[k]; + H = nt.vertexShader, j = nt.fragmentShader; + } else + H = x.vertexShader, j = x.fragmentShader, l.update(x), oe = l.getVertexShaderID(x), ve = l.getFragmentShaderID(x); + const _e = i.getRenderTarget(), we = re.isInstancedMesh === !0, Ae = re.isBatchedMesh === !0, ge = !!x.map, Pe = !!x.matcap, N = !!Y, rt = !!x.aoMap, Me = !!x.lightMap, Re = !!x.bumpMap, pe = !!x.normalMap, je = !!x.displacementMap, be = !!x.emissiveMap, M = !!x.metalnessMap, _ = !!x.roughnessMap, I = x.anisotropy > 0, $ = x.clearcoat > 0, K = x.iridescence > 0, J = x.sheen > 0, me = x.transmission > 0, ae = I && !!x.anisotropyMap, he = $ && !!x.clearcoatMap, ye = $ && !!x.clearcoatNormalMap, Fe = $ && !!x.clearcoatRoughnessMap, ee = K && !!x.iridescenceMap, Ye = K && !!x.iridescenceThicknessMap, ze = J && !!x.sheenColorMap, De = J && !!x.sheenRoughnessMap, Ee = !!x.specularMap, ue = !!x.specularColorMap, T = !!x.specularIntensityMap, ne = me && !!x.transmissionMap, xe = me && !!x.thicknessMap, fe = !!x.gradientMap, te = !!x.alphaMap, w = x.alphaTest > 0, ie = !!x.alphaHash, le = !!x.extensions, Ce = !!F.attributes.uv1, Te = !!F.attributes.uv2, ke = !!F.attributes.uv3; + let We = ln; + return x.toneMapped && (_e === null || _e.isXRRenderTarget === !0) && (We = i.toneMapping), { + isWebGL2: h, + shaderID: k, + shaderType: x.type, + shaderName: x.name, + vertexShader: H, + fragmentShader: j, + defines: x.defines, + customVertexShaderID: oe, + customFragmentShaderID: ve, + isRawShaderMaterial: x.isRawShaderMaterial === !0, + glslVersion: x.glslVersion, + precision: m, + batching: Ae, + instancing: we, + instancingColor: we && re.instanceColor !== null, + supportsVertexTextures: p, + outputColorSpace: _e === null ? i.outputColorSpace : _e.isXRRenderTarget === !0 ? _e.texture.colorSpace : $t, + map: ge, + matcap: Pe, + envMap: N, + envMapMode: N && Y.mapping, + envMapCubeUVHeight: X, + aoMap: rt, + lightMap: Me, + bumpMap: Re, + normalMap: pe, + displacementMap: p && je, + emissiveMap: be, + normalMapObjectSpace: pe && x.normalMapType === Ol, + normalMapTangentSpace: pe && x.normalMapType === vo, + metalnessMap: M, + roughnessMap: _, + anisotropy: I, + anisotropyMap: ae, + clearcoat: $, + clearcoatMap: he, + clearcoatNormalMap: ye, + clearcoatRoughnessMap: Fe, + iridescence: K, + iridescenceMap: ee, + iridescenceThicknessMap: Ye, + sheen: J, + sheenColorMap: ze, + sheenRoughnessMap: De, + specularMap: Ee, + specularColorMap: ue, + specularIntensityMap: T, + transmission: me, + transmissionMap: ne, + thicknessMap: xe, + gradientMap: fe, + opaque: x.transparent === !1 && x.blending === $n, + alphaMap: te, + alphaTest: w, + alphaHash: ie, + combine: x.combine, + // + mapUv: ge && v(x.map.channel), + aoMapUv: rt && v(x.aoMap.channel), + lightMapUv: Me && v(x.lightMap.channel), + bumpMapUv: Re && v(x.bumpMap.channel), + normalMapUv: pe && v(x.normalMap.channel), + displacementMapUv: je && v(x.displacementMap.channel), + emissiveMapUv: be && v(x.emissiveMap.channel), + metalnessMapUv: M && v(x.metalnessMap.channel), + roughnessMapUv: _ && v(x.roughnessMap.channel), + anisotropyMapUv: ae && v(x.anisotropyMap.channel), + clearcoatMapUv: he && v(x.clearcoatMap.channel), + clearcoatNormalMapUv: ye && v(x.clearcoatNormalMap.channel), + clearcoatRoughnessMapUv: Fe && v(x.clearcoatRoughnessMap.channel), + iridescenceMapUv: ee && v(x.iridescenceMap.channel), + iridescenceThicknessMapUv: Ye && v(x.iridescenceThicknessMap.channel), + sheenColorMapUv: ze && v(x.sheenColorMap.channel), + sheenRoughnessMapUv: De && v(x.sheenRoughnessMap.channel), + specularMapUv: Ee && v(x.specularMap.channel), + specularColorMapUv: ue && v(x.specularColorMap.channel), + specularIntensityMapUv: T && v(x.specularIntensityMap.channel), + transmissionMapUv: ne && v(x.transmissionMap.channel), + thicknessMapUv: xe && v(x.thicknessMap.channel), + alphaMapUv: te && v(x.alphaMap.channel), + // + vertexTangents: !!F.attributes.tangent && (pe || I), + vertexColors: x.vertexColors, + vertexAlphas: x.vertexColors === !0 && !!F.attributes.color && F.attributes.color.itemSize === 4, + vertexUv1s: Ce, + vertexUv2s: Te, + vertexUv3s: ke, + pointsUvs: re.isPoints === !0 && !!F.attributes.uv && (ge || te), + fog: !!L, + useFog: x.fog === !0, + fogExp2: L && L.isFogExp2, + flatShading: x.flatShading === !0, + sizeAttenuation: x.sizeAttenuation === !0, + logarithmicDepthBuffer: d, + skinning: re.isSkinnedMesh === !0, + morphTargets: F.morphAttributes.position !== void 0, + morphNormals: F.morphAttributes.normal !== void 0, + morphColors: F.morphAttributes.color !== void 0, + morphTargetsCount: Q, + morphTextureStride: ce, + numDirLights: y.directional.length, + numPointLights: y.point.length, + numSpotLights: y.spot.length, + numSpotLightMaps: y.spotLightMap.length, + numRectAreaLights: y.rectArea.length, + numHemiLights: y.hemi.length, + numDirLightShadows: y.directionalShadowMap.length, + numPointLightShadows: y.pointShadowMap.length, + numSpotLightShadows: y.spotShadowMap.length, + numSpotLightShadowsWithMaps: y.numSpotLightShadowsWithMaps, + numLightProbes: y.numLightProbes, + numClippingPlanes: o.numPlanes, + numClipIntersection: o.numIntersection, + dithering: x.dithering, + shadowMapEnabled: i.shadowMap.enabled && z.length > 0, + shadowMapType: i.shadowMap.type, + toneMapping: We, + useLegacyLights: i._useLegacyLights, + decodeVideoTexture: ge && x.map.isVideoTexture === !0 && Ke.getTransfer(x.map.colorSpace) === Ze, + premultipliedAlpha: x.premultipliedAlpha, + doubleSided: x.side === Kt, + flipSided: x.side === Mt, + useDepthPacking: x.depthPacking >= 0, + depthPacking: x.depthPacking || 0, + index0AttributeName: x.index0AttributeName, + extensionDerivatives: le && x.extensions.derivatives === !0, + extensionFragDepth: le && x.extensions.fragDepth === !0, + extensionDrawBuffers: le && x.extensions.drawBuffers === !0, + extensionShaderTextureLOD: le && x.extensions.shaderTextureLOD === !0, + extensionClipCullDistance: le && x.extensions.clipCullDistance && n.has("WEBGL_clip_cull_distance"), + rendererExtensionFragDepth: h || n.has("EXT_frag_depth"), + rendererExtensionDrawBuffers: h || n.has("WEBGL_draw_buffers"), + rendererExtensionShaderTextureLod: h || n.has("EXT_shader_texture_lod"), + rendererExtensionParallelShaderCompile: n.has("KHR_parallel_shader_compile"), + customProgramCacheKey: x.customProgramCacheKey() + }; + } + function u(x) { + const y = []; + if (x.shaderID ? y.push(x.shaderID) : (y.push(x.customVertexShaderID), y.push(x.customFragmentShaderID)), x.defines !== void 0) + for (const z in x.defines) + y.push(z), y.push(x.defines[z]); + return x.isRawShaderMaterial === !1 && (b(y, x), S(y, x), y.push(i.outputColorSpace)), y.push(x.customProgramCacheKey), y.join(); + } + function b(x, y) { + x.push(y.precision), x.push(y.outputColorSpace), x.push(y.envMapMode), x.push(y.envMapCubeUVHeight), x.push(y.mapUv), x.push(y.alphaMapUv), x.push(y.lightMapUv), x.push(y.aoMapUv), x.push(y.bumpMapUv), x.push(y.normalMapUv), x.push(y.displacementMapUv), x.push(y.emissiveMapUv), x.push(y.metalnessMapUv), x.push(y.roughnessMapUv), x.push(y.anisotropyMapUv), x.push(y.clearcoatMapUv), x.push(y.clearcoatNormalMapUv), x.push(y.clearcoatRoughnessMapUv), x.push(y.iridescenceMapUv), x.push(y.iridescenceThicknessMapUv), x.push(y.sheenColorMapUv), x.push(y.sheenRoughnessMapUv), x.push(y.specularMapUv), x.push(y.specularColorMapUv), x.push(y.specularIntensityMapUv), x.push(y.transmissionMapUv), x.push(y.thicknessMapUv), x.push(y.combine), x.push(y.fogExp2), x.push(y.sizeAttenuation), x.push(y.morphTargetsCount), x.push(y.morphAttributeCount), x.push(y.numDirLights), x.push(y.numPointLights), x.push(y.numSpotLights), x.push(y.numSpotLightMaps), x.push(y.numHemiLights), x.push(y.numRectAreaLights), x.push(y.numDirLightShadows), x.push(y.numPointLightShadows), x.push(y.numSpotLightShadows), x.push(y.numSpotLightShadowsWithMaps), x.push(y.numLightProbes), x.push(y.shadowMapType), x.push(y.toneMapping), x.push(y.numClippingPlanes), x.push(y.numClipIntersection), x.push(y.depthPacking); + } + function S(x, y) { + a.disableAll(), y.isWebGL2 && a.enable(0), y.supportsVertexTextures && a.enable(1), y.instancing && a.enable(2), y.instancingColor && a.enable(3), y.matcap && a.enable(4), y.envMap && a.enable(5), y.normalMapObjectSpace && a.enable(6), y.normalMapTangentSpace && a.enable(7), y.clearcoat && a.enable(8), y.iridescence && a.enable(9), y.alphaTest && a.enable(10), y.vertexColors && a.enable(11), y.vertexAlphas && a.enable(12), y.vertexUv1s && a.enable(13), y.vertexUv2s && a.enable(14), y.vertexUv3s && a.enable(15), y.vertexTangents && a.enable(16), y.anisotropy && a.enable(17), y.alphaHash && a.enable(18), y.batching && a.enable(19), x.push(a.mask), a.disableAll(), y.fog && a.enable(0), y.useFog && a.enable(1), y.flatShading && a.enable(2), y.logarithmicDepthBuffer && a.enable(3), y.skinning && a.enable(4), y.morphTargets && a.enable(5), y.morphNormals && a.enable(6), y.morphColors && a.enable(7), y.premultipliedAlpha && a.enable(8), y.shadowMapEnabled && a.enable(9), y.useLegacyLights && a.enable(10), y.doubleSided && a.enable(11), y.flipSided && a.enable(12), y.useDepthPacking && a.enable(13), y.dithering && a.enable(14), y.transmission && a.enable(15), y.sheen && a.enable(16), y.opaque && a.enable(17), y.pointsUvs && a.enable(18), y.decodeVideoTexture && a.enable(19), x.push(a.mask); + } + function R(x) { + const y = g[x.type]; + let z; + if (y) { + const Z = Gt[y]; + z = hc.clone(Z.uniforms); + } else + z = x.uniforms; + return z; + } + function D(x, y) { + let z; + for (let Z = 0, re = c.length; Z < re; Z++) { + const L = c[Z]; + if (L.cacheKey === y) { + z = L, ++z.usedTimes; + break; + } + } + return z === void 0 && (z = new Af(i, y, x, s), c.push(z)), z; + } + function C(x) { + if (--x.usedTimes === 0) { + const y = c.indexOf(x); + c[y] = c[c.length - 1], c.pop(), x.destroy(); + } + } + function A(x) { + l.remove(x); + } + function W() { + l.dispose(); + } + return { + getParameters: f, + getProgramCacheKey: u, + getUniforms: R, + acquireProgram: D, + releaseProgram: C, + releaseShaderCache: A, + // Exposed for resource monitoring & error feedback via renderer.info: + programs: c, + dispose: W + }; +} +function Pf() { + let i = /* @__PURE__ */ new WeakMap(); + function e(s) { + let o = i.get(s); + return o === void 0 && (o = {}, i.set(s, o)), o; + } + function t(s) { + i.delete(s); + } + function n(s, o, a) { + i.get(s)[o] = a; + } + function r() { + i = /* @__PURE__ */ new WeakMap(); + } + return { + get: e, + remove: t, + update: n, + dispose: r + }; +} +function Df(i, e) { + return i.groupOrder !== e.groupOrder ? i.groupOrder - e.groupOrder : i.renderOrder !== e.renderOrder ? i.renderOrder - e.renderOrder : i.material.id !== e.material.id ? i.material.id - e.material.id : i.z !== e.z ? i.z - e.z : i.id - e.id; +} +function Ba(i, e) { + return i.groupOrder !== e.groupOrder ? i.groupOrder - e.groupOrder : i.renderOrder !== e.renderOrder ? i.renderOrder - e.renderOrder : i.z !== e.z ? e.z - i.z : i.id - e.id; +} +function za() { + const i = []; + let e = 0; + const t = [], n = [], r = []; + function s() { + e = 0, t.length = 0, n.length = 0, r.length = 0; + } + function o(d, p, m, g, v, f) { + let u = i[e]; + return u === void 0 ? (u = { + id: d.id, + object: d, + geometry: p, + material: m, + groupOrder: g, + renderOrder: d.renderOrder, + z: v, + group: f + }, i[e] = u) : (u.id = d.id, u.object = d, u.geometry = p, u.material = m, u.groupOrder = g, u.renderOrder = d.renderOrder, u.z = v, u.group = f), e++, u; + } + function a(d, p, m, g, v, f) { + const u = o(d, p, m, g, v, f); + m.transmission > 0 ? n.push(u) : m.transparent === !0 ? r.push(u) : t.push(u); + } + function l(d, p, m, g, v, f) { + const u = o(d, p, m, g, v, f); + m.transmission > 0 ? n.unshift(u) : m.transparent === !0 ? r.unshift(u) : t.unshift(u); + } + function c(d, p) { + t.length > 1 && t.sort(d || Df), n.length > 1 && n.sort(p || Ba), r.length > 1 && r.sort(p || Ba); + } + function h() { + for (let d = e, p = i.length; d < p; d++) { + const m = i[d]; + if (m.id === null) break; + m.id = null, m.object = null, m.geometry = null, m.material = null, m.group = null; + } + } + return { + opaque: t, + transmissive: n, + transparent: r, + init: s, + push: a, + unshift: l, + finish: h, + sort: c + }; +} +function Uf() { + let i = /* @__PURE__ */ new WeakMap(); + function e(n, r) { + const s = i.get(n); + let o; + return s === void 0 ? (o = new za(), i.set(n, [o])) : r >= s.length ? (o = new za(), s.push(o)) : o = s[r], o; + } + function t() { + i = /* @__PURE__ */ new WeakMap(); + } + return { + get: e, + dispose: t + }; +} +function If() { + const i = {}; + return { + get: function(e) { + if (i[e.id] !== void 0) + return i[e.id]; + let t; + switch (e.type) { + case "DirectionalLight": + t = { + direction: new P(), + color: new Xe() + }; + break; + case "SpotLight": + t = { + position: new P(), + direction: new P(), + color: new Xe(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0 + }; + break; + case "PointLight": + t = { + position: new P(), + color: new Xe(), + distance: 0, + decay: 0 + }; + break; + case "HemisphereLight": + t = { + direction: new P(), + skyColor: new Xe(), + groundColor: new Xe() + }; + break; + case "RectAreaLight": + t = { + color: new Xe(), + position: new P(), + halfWidth: new P(), + halfHeight: new P() + }; + break; + } + return i[e.id] = t, t; + } + }; +} +function Nf() { + const i = {}; + return { + get: function(e) { + if (i[e.id] !== void 0) + return i[e.id]; + let t; + switch (e.type) { + case "DirectionalLight": + t = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Ie() + }; + break; + case "SpotLight": + t = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Ie() + }; + break; + case "PointLight": + t = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Ie(), + shadowCameraNear: 1, + shadowCameraFar: 1e3 + }; + break; + } + return i[e.id] = t, t; + } + }; +} +let Ff = 0; +function Of(i, e) { + return (e.castShadow ? 2 : 0) - (i.castShadow ? 2 : 0) + (e.map ? 1 : 0) - (i.map ? 1 : 0); +} +function Bf(i, e) { + const t = new If(), n = Nf(), r = { + version: 0, + hash: { + directionalLength: -1, + pointLength: -1, + spotLength: -1, + rectAreaLength: -1, + hemiLength: -1, + numDirectionalShadows: -1, + numPointShadows: -1, + numSpotShadows: -1, + numSpotMaps: -1, + numLightProbes: -1 + }, + ambient: [0, 0, 0], + probe: [], + directional: [], + directionalShadow: [], + directionalShadowMap: [], + directionalShadowMatrix: [], + spot: [], + spotLightMap: [], + spotShadow: [], + spotShadowMap: [], + spotLightMatrix: [], + rectArea: [], + rectAreaLTC1: null, + rectAreaLTC2: null, + point: [], + pointShadow: [], + pointShadowMap: [], + pointShadowMatrix: [], + hemi: [], + numSpotLightShadowsWithMaps: 0, + numLightProbes: 0 + }; + for (let h = 0; h < 9; h++) r.probe.push(new P()); + const s = new P(), o = new Qe(), a = new Qe(); + function l(h, d) { + let p = 0, m = 0, g = 0; + for (let Z = 0; Z < 9; Z++) r.probe[Z].set(0, 0, 0); + let v = 0, f = 0, u = 0, b = 0, S = 0, R = 0, D = 0, C = 0, A = 0, W = 0, x = 0; + h.sort(Of); + const y = d === !0 ? Math.PI : 1; + for (let Z = 0, re = h.length; Z < re; Z++) { + const L = h[Z], F = L.color, V = L.intensity, Y = L.distance, X = L.shadow && L.shadow.map ? L.shadow.map.texture : null; + if (L.isAmbientLight) + p += F.r * V * y, m += F.g * V * y, g += F.b * V * y; + else if (L.isLightProbe) { + for (let k = 0; k < 9; k++) + r.probe[k].addScaledVector(L.sh.coefficients[k], V); + x++; + } else if (L.isDirectionalLight) { + const k = t.get(L); + if (k.color.copy(L.color).multiplyScalar(L.intensity * y), L.castShadow) { + const q = L.shadow, Q = n.get(L); + Q.shadowBias = q.bias, Q.shadowNormalBias = q.normalBias, Q.shadowRadius = q.radius, Q.shadowMapSize = q.mapSize, r.directionalShadow[v] = Q, r.directionalShadowMap[v] = X, r.directionalShadowMatrix[v] = L.shadow.matrix, R++; + } + r.directional[v] = k, v++; + } else if (L.isSpotLight) { + const k = t.get(L); + k.position.setFromMatrixPosition(L.matrixWorld), k.color.copy(F).multiplyScalar(V * y), k.distance = Y, k.coneCos = Math.cos(L.angle), k.penumbraCos = Math.cos(L.angle * (1 - L.penumbra)), k.decay = L.decay, r.spot[u] = k; + const q = L.shadow; + if (L.map && (r.spotLightMap[A] = L.map, A++, q.updateMatrices(L), L.castShadow && W++), r.spotLightMatrix[u] = q.matrix, L.castShadow) { + const Q = n.get(L); + Q.shadowBias = q.bias, Q.shadowNormalBias = q.normalBias, Q.shadowRadius = q.radius, Q.shadowMapSize = q.mapSize, r.spotShadow[u] = Q, r.spotShadowMap[u] = X, C++; + } + u++; + } else if (L.isRectAreaLight) { + const k = t.get(L); + k.color.copy(F).multiplyScalar(V), k.halfWidth.set(L.width * 0.5, 0, 0), k.halfHeight.set(0, L.height * 0.5, 0), r.rectArea[b] = k, b++; + } else if (L.isPointLight) { + const k = t.get(L); + if (k.color.copy(L.color).multiplyScalar(L.intensity * y), k.distance = L.distance, k.decay = L.decay, L.castShadow) { + const q = L.shadow, Q = n.get(L); + Q.shadowBias = q.bias, Q.shadowNormalBias = q.normalBias, Q.shadowRadius = q.radius, Q.shadowMapSize = q.mapSize, Q.shadowCameraNear = q.camera.near, Q.shadowCameraFar = q.camera.far, r.pointShadow[f] = Q, r.pointShadowMap[f] = X, r.pointShadowMatrix[f] = L.shadow.matrix, D++; + } + r.point[f] = k, f++; + } else if (L.isHemisphereLight) { + const k = t.get(L); + k.skyColor.copy(L.color).multiplyScalar(V * y), k.groundColor.copy(L.groundColor).multiplyScalar(V * y), r.hemi[S] = k, S++; + } + } + b > 0 && (e.isWebGL2 ? i.has("OES_texture_float_linear") === !0 ? (r.rectAreaLTC1 = se.LTC_FLOAT_1, r.rectAreaLTC2 = se.LTC_FLOAT_2) : (r.rectAreaLTC1 = se.LTC_HALF_1, r.rectAreaLTC2 = se.LTC_HALF_2) : i.has("OES_texture_float_linear") === !0 ? (r.rectAreaLTC1 = se.LTC_FLOAT_1, r.rectAreaLTC2 = se.LTC_FLOAT_2) : i.has("OES_texture_half_float_linear") === !0 ? (r.rectAreaLTC1 = se.LTC_HALF_1, r.rectAreaLTC2 = se.LTC_HALF_2) : console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")), r.ambient[0] = p, r.ambient[1] = m, r.ambient[2] = g; + const z = r.hash; + (z.directionalLength !== v || z.pointLength !== f || z.spotLength !== u || z.rectAreaLength !== b || z.hemiLength !== S || z.numDirectionalShadows !== R || z.numPointShadows !== D || z.numSpotShadows !== C || z.numSpotMaps !== A || z.numLightProbes !== x) && (r.directional.length = v, r.spot.length = u, r.rectArea.length = b, r.point.length = f, r.hemi.length = S, r.directionalShadow.length = R, r.directionalShadowMap.length = R, r.pointShadow.length = D, r.pointShadowMap.length = D, r.spotShadow.length = C, r.spotShadowMap.length = C, r.directionalShadowMatrix.length = R, r.pointShadowMatrix.length = D, r.spotLightMatrix.length = C + A - W, r.spotLightMap.length = A, r.numSpotLightShadowsWithMaps = W, r.numLightProbes = x, z.directionalLength = v, z.pointLength = f, z.spotLength = u, z.rectAreaLength = b, z.hemiLength = S, z.numDirectionalShadows = R, z.numPointShadows = D, z.numSpotShadows = C, z.numSpotMaps = A, z.numLightProbes = x, r.version = Ff++); + } + function c(h, d) { + let p = 0, m = 0, g = 0, v = 0, f = 0; + const u = d.matrixWorldInverse; + for (let b = 0, S = h.length; b < S; b++) { + const R = h[b]; + if (R.isDirectionalLight) { + const D = r.directional[p]; + D.direction.setFromMatrixPosition(R.matrixWorld), s.setFromMatrixPosition(R.target.matrixWorld), D.direction.sub(s), D.direction.transformDirection(u), p++; + } else if (R.isSpotLight) { + const D = r.spot[g]; + D.position.setFromMatrixPosition(R.matrixWorld), D.position.applyMatrix4(u), D.direction.setFromMatrixPosition(R.matrixWorld), s.setFromMatrixPosition(R.target.matrixWorld), D.direction.sub(s), D.direction.transformDirection(u), g++; + } else if (R.isRectAreaLight) { + const D = r.rectArea[v]; + D.position.setFromMatrixPosition(R.matrixWorld), D.position.applyMatrix4(u), a.identity(), o.copy(R.matrixWorld), o.premultiply(u), a.extractRotation(o), D.halfWidth.set(R.width * 0.5, 0, 0), D.halfHeight.set(0, R.height * 0.5, 0), D.halfWidth.applyMatrix4(a), D.halfHeight.applyMatrix4(a), v++; + } else if (R.isPointLight) { + const D = r.point[m]; + D.position.setFromMatrixPosition(R.matrixWorld), D.position.applyMatrix4(u), m++; + } else if (R.isHemisphereLight) { + const D = r.hemi[f]; + D.direction.setFromMatrixPosition(R.matrixWorld), D.direction.transformDirection(u), f++; + } + } + } + return { + setup: l, + setupView: c, + state: r + }; +} +function Ga(i, e) { + const t = new Bf(i, e), n = [], r = []; + function s() { + n.length = 0, r.length = 0; + } + function o(d) { + n.push(d); + } + function a(d) { + r.push(d); + } + function l(d) { + t.setup(n, d); + } + function c(d) { + t.setupView(n, d); + } + return { + init: s, + state: { + lightsArray: n, + shadowsArray: r, + lights: t + }, + setupLights: l, + setupLightsView: c, + pushLight: o, + pushShadow: a + }; +} +function zf(i, e) { + let t = /* @__PURE__ */ new WeakMap(); + function n(s, o = 0) { + const a = t.get(s); + let l; + return a === void 0 ? (l = new Ga(i, e), t.set(s, [l])) : o >= a.length ? (l = new Ga(i, e), a.push(l)) : l = a[o], l; + } + function r() { + t = /* @__PURE__ */ new WeakMap(); + } + return { + get: n, + dispose: r + }; +} +class Gf extends Mi { + constructor(e) { + super(), this.isMeshDepthMaterial = !0, this.type = "MeshDepthMaterial", this.depthPacking = Nl, this.map = null, this.alphaMap = null, this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.wireframe = !1, this.wireframeLinewidth = 1, this.setValues(e); + } + copy(e) { + return super.copy(e), this.depthPacking = e.depthPacking, this.map = e.map, this.alphaMap = e.alphaMap, this.displacementMap = e.displacementMap, this.displacementScale = e.displacementScale, this.displacementBias = e.displacementBias, this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this; + } +} +class Hf extends Mi { + constructor(e) { + super(), this.isMeshDistanceMaterial = !0, this.type = "MeshDistanceMaterial", this.map = null, this.alphaMap = null, this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.setValues(e); + } + copy(e) { + return super.copy(e), this.map = e.map, this.alphaMap = e.alphaMap, this.displacementMap = e.displacementMap, this.displacementScale = e.displacementScale, this.displacementBias = e.displacementBias, this; + } +} +const Vf = `void main() { + gl_Position = vec4( position, 1.0 ); +}`, kf = `uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`; +function Wf(i, e, t) { + let n = new cs(); + const r = new Ie(), s = new Ie(), o = new $e(), a = new Gf({ depthPacking: Fl }), l = new Hf(), c = {}, h = t.maxTextureSize, d = { [un]: Mt, [Mt]: un, [Kt]: Kt }, p = new wn({ + defines: { + VSM_SAMPLES: 8 + }, + uniforms: { + shadow_pass: { value: null }, + resolution: { value: new Ie() }, + radius: { value: 4 } + }, + vertexShader: Vf, + fragmentShader: kf + }), m = p.clone(); + m.defines.HORIZONTAL_PASS = 1; + const g = new hn(); + g.setAttribute( + "position", + new Bt( + new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]), + 3 + ) + ); + const v = new Ot(g, p), f = this; + this.enabled = !1, this.autoUpdate = !0, this.needsUpdate = !1, this.type = so; + let u = this.type; + this.render = function(C, A, W) { + if (f.enabled === !1 || f.autoUpdate === !1 && f.needsUpdate === !1 || C.length === 0) return; + const x = i.getRenderTarget(), y = i.getActiveCubeFace(), z = i.getActiveMipmapLevel(), Z = i.state; + Z.setBlending(on), Z.buffers.color.setClear(1, 1, 1, 1), Z.buffers.depth.setTest(!0), Z.setScissorTest(!1); + const re = u !== jt && this.type === jt, L = u === jt && this.type !== jt; + for (let F = 0, V = C.length; F < V; F++) { + const Y = C[F], X = Y.shadow; + if (X === void 0) { + console.warn("THREE.WebGLShadowMap:", Y, "has no shadow."); + continue; + } + if (X.autoUpdate === !1 && X.needsUpdate === !1) continue; + r.copy(X.mapSize); + const k = X.getFrameExtents(); + if (r.multiply(k), s.copy(X.mapSize), (r.x > h || r.y > h) && (r.x > h && (s.x = Math.floor(h / k.x), r.x = s.x * k.x, X.mapSize.x = s.x), r.y > h && (s.y = Math.floor(h / k.y), r.y = s.y * k.y, X.mapSize.y = s.y)), X.map === null || re === !0 || L === !0) { + const Q = this.type !== jt ? { minFilter: gt, magFilter: gt } : {}; + X.map !== null && X.map.dispose(), X.map = new bn(r.x, r.y, Q), X.map.texture.name = Y.name + ".shadowMap", X.camera.updateProjectionMatrix(); + } + i.setRenderTarget(X.map), i.clear(); + const q = X.getViewportCount(); + for (let Q = 0; Q < q; Q++) { + const ce = X.getViewport(Q); + o.set( + s.x * ce.x, + s.y * ce.y, + s.x * ce.z, + s.y * ce.w + ), Z.viewport(o), X.updateMatrices(Y, Q), n = X.getFrustum(), R(A, W, X.camera, Y, this.type); + } + X.isPointLightShadow !== !0 && this.type === jt && b(X, W), X.needsUpdate = !1; + } + u = this.type, f.needsUpdate = !1, i.setRenderTarget(x, y, z); + }; + function b(C, A) { + const W = e.update(v); + p.defines.VSM_SAMPLES !== C.blurSamples && (p.defines.VSM_SAMPLES = C.blurSamples, m.defines.VSM_SAMPLES = C.blurSamples, p.needsUpdate = !0, m.needsUpdate = !0), C.mapPass === null && (C.mapPass = new bn(r.x, r.y)), p.uniforms.shadow_pass.value = C.map.texture, p.uniforms.resolution.value = C.mapSize, p.uniforms.radius.value = C.radius, i.setRenderTarget(C.mapPass), i.clear(), i.renderBufferDirect(A, null, W, p, v, null), m.uniforms.shadow_pass.value = C.mapPass.texture, m.uniforms.resolution.value = C.mapSize, m.uniforms.radius.value = C.radius, i.setRenderTarget(C.map), i.clear(), i.renderBufferDirect(A, null, W, m, v, null); + } + function S(C, A, W, x) { + let y = null; + const z = W.isPointLight === !0 ? C.customDistanceMaterial : C.customDepthMaterial; + if (z !== void 0) + y = z; + else if (y = W.isPointLight === !0 ? l : a, i.localClippingEnabled && A.clipShadows === !0 && Array.isArray(A.clippingPlanes) && A.clippingPlanes.length !== 0 || A.displacementMap && A.displacementScale !== 0 || A.alphaMap && A.alphaTest > 0 || A.map && A.alphaTest > 0) { + const Z = y.uuid, re = A.uuid; + let L = c[Z]; + L === void 0 && (L = {}, c[Z] = L); + let F = L[re]; + F === void 0 && (F = y.clone(), L[re] = F, A.addEventListener("dispose", D)), y = F; + } + if (y.visible = A.visible, y.wireframe = A.wireframe, x === jt ? y.side = A.shadowSide !== null ? A.shadowSide : A.side : y.side = A.shadowSide !== null ? A.shadowSide : d[A.side], y.alphaMap = A.alphaMap, y.alphaTest = A.alphaTest, y.map = A.map, y.clipShadows = A.clipShadows, y.clippingPlanes = A.clippingPlanes, y.clipIntersection = A.clipIntersection, y.displacementMap = A.displacementMap, y.displacementScale = A.displacementScale, y.displacementBias = A.displacementBias, y.wireframeLinewidth = A.wireframeLinewidth, y.linewidth = A.linewidth, W.isPointLight === !0 && y.isMeshDistanceMaterial === !0) { + const Z = i.properties.get(y); + Z.light = W; + } + return y; + } + function R(C, A, W, x, y) { + if (C.visible === !1) return; + if (C.layers.test(A.layers) && (C.isMesh || C.isLine || C.isPoints) && (C.castShadow || C.receiveShadow && y === jt) && (!C.frustumCulled || n.intersectsObject(C))) { + C.modelViewMatrix.multiplyMatrices(W.matrixWorldInverse, C.matrixWorld); + const re = e.update(C), L = C.material; + if (Array.isArray(L)) { + const F = re.groups; + for (let V = 0, Y = F.length; V < Y; V++) { + const X = F[V], k = L[X.materialIndex]; + if (k && k.visible) { + const q = S(C, k, x, y); + C.onBeforeShadow(i, C, A, W, re, q, X), i.renderBufferDirect(W, null, re, q, C, X), C.onAfterShadow(i, C, A, W, re, q, X); + } + } + } else if (L.visible) { + const F = S(C, L, x, y); + C.onBeforeShadow(i, C, A, W, re, F, null), i.renderBufferDirect(W, null, re, F, C, null), C.onAfterShadow(i, C, A, W, re, F, null); + } + } + const Z = C.children; + for (let re = 0, L = Z.length; re < L; re++) + R(Z[re], A, W, x, y); + } + function D(C) { + C.target.removeEventListener("dispose", D); + for (const W in c) { + const x = c[W], y = C.target.uuid; + y in x && (x[y].dispose(), delete x[y]); + } + } +} +function Xf(i, e, t) { + const n = t.isWebGL2; + function r() { + let w = !1; + const ie = new $e(); + let le = null; + const Ce = new $e(0, 0, 0, 0); + return { + setMask: function(Te) { + le !== Te && !w && (i.colorMask(Te, Te, Te, Te), le = Te); + }, + setLocked: function(Te) { + w = Te; + }, + setClear: function(Te, ke, We, et, nt) { + nt === !0 && (Te *= et, ke *= et, We *= et), ie.set(Te, ke, We, et), Ce.equals(ie) === !1 && (i.clearColor(Te, ke, We, et), Ce.copy(ie)); + }, + reset: function() { + w = !1, le = null, Ce.set(-1, 0, 0, 0); + } + }; + } + function s() { + let w = !1, ie = null, le = null, Ce = null; + return { + setTest: function(Te) { + Te ? Ae(i.DEPTH_TEST) : ge(i.DEPTH_TEST); + }, + setMask: function(Te) { + ie !== Te && !w && (i.depthMask(Te), ie = Te); + }, + setFunc: function(Te) { + if (le !== Te) { + switch (Te) { + case hl: + i.depthFunc(i.NEVER); + break; + case dl: + i.depthFunc(i.ALWAYS); + break; + case fl: + i.depthFunc(i.LESS); + break; + case $i: + i.depthFunc(i.LEQUAL); + break; + case pl: + i.depthFunc(i.EQUAL); + break; + case ml: + i.depthFunc(i.GEQUAL); + break; + case _l: + i.depthFunc(i.GREATER); + break; + case gl: + i.depthFunc(i.NOTEQUAL); + break; + default: + i.depthFunc(i.LEQUAL); + } + le = Te; + } + }, + setLocked: function(Te) { + w = Te; + }, + setClear: function(Te) { + Ce !== Te && (i.clearDepth(Te), Ce = Te); + }, + reset: function() { + w = !1, ie = null, le = null, Ce = null; + } + }; + } + function o() { + let w = !1, ie = null, le = null, Ce = null, Te = null, ke = null, We = null, et = null, nt = null; + return { + setTest: function(qe) { + w || (qe ? Ae(i.STENCIL_TEST) : ge(i.STENCIL_TEST)); + }, + setMask: function(qe) { + ie !== qe && !w && (i.stencilMask(qe), ie = qe); + }, + setFunc: function(qe, st, zt) { + (le !== qe || Ce !== st || Te !== zt) && (i.stencilFunc(qe, st, zt), le = qe, Ce = st, Te = zt); + }, + setOp: function(qe, st, zt) { + (ke !== qe || We !== st || et !== zt) && (i.stencilOp(qe, st, zt), ke = qe, We = st, et = zt); + }, + setLocked: function(qe) { + w = qe; + }, + setClear: function(qe) { + nt !== qe && (i.clearStencil(qe), nt = qe); + }, + reset: function() { + w = !1, ie = null, le = null, Ce = null, Te = null, ke = null, We = null, et = null, nt = null; + } + }; + } + const a = new r(), l = new s(), c = new o(), h = /* @__PURE__ */ new WeakMap(), d = /* @__PURE__ */ new WeakMap(); + let p = {}, m = {}, g = /* @__PURE__ */ new WeakMap(), v = [], f = null, u = !1, b = null, S = null, R = null, D = null, C = null, A = null, W = null, x = new Xe(0, 0, 0), y = 0, z = !1, Z = null, re = null, L = null, F = null, V = null; + const Y = i.getParameter(i.MAX_COMBINED_TEXTURE_IMAGE_UNITS); + let X = !1, k = 0; + const q = i.getParameter(i.VERSION); + q.indexOf("WebGL") !== -1 ? (k = parseFloat(/^WebGL (\d)/.exec(q)[1]), X = k >= 1) : q.indexOf("OpenGL ES") !== -1 && (k = parseFloat(/^OpenGL ES (\d)/.exec(q)[1]), X = k >= 2); + let Q = null, ce = {}; + const H = i.getParameter(i.SCISSOR_BOX), j = i.getParameter(i.VIEWPORT), oe = new $e().fromArray(H), ve = new $e().fromArray(j); + function _e(w, ie, le, Ce) { + const Te = new Uint8Array(4), ke = i.createTexture(); + i.bindTexture(w, ke), i.texParameteri(w, i.TEXTURE_MIN_FILTER, i.NEAREST), i.texParameteri(w, i.TEXTURE_MAG_FILTER, i.NEAREST); + for (let We = 0; We < le; We++) + n && (w === i.TEXTURE_3D || w === i.TEXTURE_2D_ARRAY) ? i.texImage3D(ie, 0, i.RGBA, 1, 1, Ce, 0, i.RGBA, i.UNSIGNED_BYTE, Te) : i.texImage2D(ie + We, 0, i.RGBA, 1, 1, 0, i.RGBA, i.UNSIGNED_BYTE, Te); + return ke; + } + const we = {}; + we[i.TEXTURE_2D] = _e(i.TEXTURE_2D, i.TEXTURE_2D, 1), we[i.TEXTURE_CUBE_MAP] = _e(i.TEXTURE_CUBE_MAP, i.TEXTURE_CUBE_MAP_POSITIVE_X, 6), n && (we[i.TEXTURE_2D_ARRAY] = _e(i.TEXTURE_2D_ARRAY, i.TEXTURE_2D_ARRAY, 1, 1), we[i.TEXTURE_3D] = _e(i.TEXTURE_3D, i.TEXTURE_3D, 1, 1)), a.setClear(0, 0, 0, 1), l.setClear(1), c.setClear(0), Ae(i.DEPTH_TEST), l.setFunc($i), be(!1), M(Ss), Ae(i.CULL_FACE), pe(on); + function Ae(w) { + p[w] !== !0 && (i.enable(w), p[w] = !0); + } + function ge(w) { + p[w] !== !1 && (i.disable(w), p[w] = !1); + } + function Pe(w, ie) { + return m[w] !== ie ? (i.bindFramebuffer(w, ie), m[w] = ie, n && (w === i.DRAW_FRAMEBUFFER && (m[i.FRAMEBUFFER] = ie), w === i.FRAMEBUFFER && (m[i.DRAW_FRAMEBUFFER] = ie)), !0) : !1; + } + function N(w, ie) { + let le = v, Ce = !1; + if (w) + if (le = g.get(ie), le === void 0 && (le = [], g.set(ie, le)), w.isWebGLMultipleRenderTargets) { + const Te = w.texture; + if (le.length !== Te.length || le[0] !== i.COLOR_ATTACHMENT0) { + for (let ke = 0, We = Te.length; ke < We; ke++) + le[ke] = i.COLOR_ATTACHMENT0 + ke; + le.length = Te.length, Ce = !0; + } + } else + le[0] !== i.COLOR_ATTACHMENT0 && (le[0] = i.COLOR_ATTACHMENT0, Ce = !0); + else + le[0] !== i.BACK && (le[0] = i.BACK, Ce = !0); + Ce && (t.isWebGL2 ? i.drawBuffers(le) : e.get("WEBGL_draw_buffers").drawBuffersWEBGL(le)); + } + function rt(w) { + return f !== w ? (i.useProgram(w), f = w, !0) : !1; + } + const Me = { + [Mn]: i.FUNC_ADD, + [Zo]: i.FUNC_SUBTRACT, + [$o]: i.FUNC_REVERSE_SUBTRACT + }; + if (n) + Me[bs] = i.MIN, Me[As] = i.MAX; + else { + const w = e.get("EXT_blend_minmax"); + w !== null && (Me[bs] = w.MIN_EXT, Me[As] = w.MAX_EXT); + } + const Re = { + [Jo]: i.ZERO, + [Qo]: i.ONE, + [el]: i.SRC_COLOR, + [Kr]: i.SRC_ALPHA, + [al]: i.SRC_ALPHA_SATURATE, + [rl]: i.DST_COLOR, + [nl]: i.DST_ALPHA, + [tl]: i.ONE_MINUS_SRC_COLOR, + [Zr]: i.ONE_MINUS_SRC_ALPHA, + [sl]: i.ONE_MINUS_DST_COLOR, + [il]: i.ONE_MINUS_DST_ALPHA, + [ol]: i.CONSTANT_COLOR, + [ll]: i.ONE_MINUS_CONSTANT_COLOR, + [cl]: i.CONSTANT_ALPHA, + [ul]: i.ONE_MINUS_CONSTANT_ALPHA + }; + function pe(w, ie, le, Ce, Te, ke, We, et, nt, qe) { + if (w === on) { + u === !0 && (ge(i.BLEND), u = !1); + return; + } + if (u === !1 && (Ae(i.BLEND), u = !0), w !== Ko) { + if (w !== b || qe !== z) { + if ((S !== Mn || C !== Mn) && (i.blendEquation(i.FUNC_ADD), S = Mn, C = Mn), qe) + switch (w) { + case $n: + i.blendFuncSeparate(i.ONE, i.ONE_MINUS_SRC_ALPHA, i.ONE, i.ONE_MINUS_SRC_ALPHA); + break; + case Es: + i.blendFunc(i.ONE, i.ONE); + break; + case ys: + i.blendFuncSeparate(i.ZERO, i.ONE_MINUS_SRC_COLOR, i.ZERO, i.ONE); + break; + case Ts: + i.blendFuncSeparate(i.ZERO, i.SRC_COLOR, i.ZERO, i.SRC_ALPHA); + break; + default: + console.error("THREE.WebGLState: Invalid blending: ", w); + break; + } + else + switch (w) { + case $n: + i.blendFuncSeparate(i.SRC_ALPHA, i.ONE_MINUS_SRC_ALPHA, i.ONE, i.ONE_MINUS_SRC_ALPHA); + break; + case Es: + i.blendFunc(i.SRC_ALPHA, i.ONE); + break; + case ys: + i.blendFuncSeparate(i.ZERO, i.ONE_MINUS_SRC_COLOR, i.ZERO, i.ONE); + break; + case Ts: + i.blendFunc(i.ZERO, i.SRC_COLOR); + break; + default: + console.error("THREE.WebGLState: Invalid blending: ", w); + break; + } + R = null, D = null, A = null, W = null, x.set(0, 0, 0), y = 0, b = w, z = qe; + } + return; + } + Te = Te || ie, ke = ke || le, We = We || Ce, (ie !== S || Te !== C) && (i.blendEquationSeparate(Me[ie], Me[Te]), S = ie, C = Te), (le !== R || Ce !== D || ke !== A || We !== W) && (i.blendFuncSeparate(Re[le], Re[Ce], Re[ke], Re[We]), R = le, D = Ce, A = ke, W = We), (et.equals(x) === !1 || nt !== y) && (i.blendColor(et.r, et.g, et.b, nt), x.copy(et), y = nt), b = w, z = !1; + } + function je(w, ie) { + w.side === Kt ? ge(i.CULL_FACE) : Ae(i.CULL_FACE); + let le = w.side === Mt; + ie && (le = !le), be(le), w.blending === $n && w.transparent === !1 ? pe(on) : pe(w.blending, w.blendEquation, w.blendSrc, w.blendDst, w.blendEquationAlpha, w.blendSrcAlpha, w.blendDstAlpha, w.blendColor, w.blendAlpha, w.premultipliedAlpha), l.setFunc(w.depthFunc), l.setTest(w.depthTest), l.setMask(w.depthWrite), a.setMask(w.colorWrite); + const Ce = w.stencilWrite; + c.setTest(Ce), Ce && (c.setMask(w.stencilWriteMask), c.setFunc(w.stencilFunc, w.stencilRef, w.stencilFuncMask), c.setOp(w.stencilFail, w.stencilZFail, w.stencilZPass)), I(w.polygonOffset, w.polygonOffsetFactor, w.polygonOffsetUnits), w.alphaToCoverage === !0 ? Ae(i.SAMPLE_ALPHA_TO_COVERAGE) : ge(i.SAMPLE_ALPHA_TO_COVERAGE); + } + function be(w) { + Z !== w && (w ? i.frontFace(i.CW) : i.frontFace(i.CCW), Z = w); + } + function M(w) { + w !== Yo ? (Ae(i.CULL_FACE), w !== re && (w === Ss ? i.cullFace(i.BACK) : w === jo ? i.cullFace(i.FRONT) : i.cullFace(i.FRONT_AND_BACK))) : ge(i.CULL_FACE), re = w; + } + function _(w) { + w !== L && (X && i.lineWidth(w), L = w); + } + function I(w, ie, le) { + w ? (Ae(i.POLYGON_OFFSET_FILL), (F !== ie || V !== le) && (i.polygonOffset(ie, le), F = ie, V = le)) : ge(i.POLYGON_OFFSET_FILL); + } + function $(w) { + w ? Ae(i.SCISSOR_TEST) : ge(i.SCISSOR_TEST); + } + function K(w) { + w === void 0 && (w = i.TEXTURE0 + Y - 1), Q !== w && (i.activeTexture(w), Q = w); + } + function J(w, ie, le) { + le === void 0 && (Q === null ? le = i.TEXTURE0 + Y - 1 : le = Q); + let Ce = ce[le]; + Ce === void 0 && (Ce = { type: void 0, texture: void 0 }, ce[le] = Ce), (Ce.type !== w || Ce.texture !== ie) && (Q !== le && (i.activeTexture(le), Q = le), i.bindTexture(w, ie || we[w]), Ce.type = w, Ce.texture = ie); + } + function me() { + const w = ce[Q]; + w !== void 0 && w.type !== void 0 && (i.bindTexture(w.type, null), w.type = void 0, w.texture = void 0); + } + function ae() { + try { + i.compressedTexImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function he() { + try { + i.compressedTexImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ye() { + try { + i.texSubImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function Fe() { + try { + i.texSubImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ee() { + try { + i.compressedTexSubImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function Ye() { + try { + i.compressedTexSubImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ze() { + try { + i.texStorage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function De() { + try { + i.texStorage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function Ee() { + try { + i.texImage2D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function ue() { + try { + i.texImage3D.apply(i, arguments); + } catch (w) { + console.error("THREE.WebGLState:", w); + } + } + function T(w) { + oe.equals(w) === !1 && (i.scissor(w.x, w.y, w.z, w.w), oe.copy(w)); + } + function ne(w) { + ve.equals(w) === !1 && (i.viewport(w.x, w.y, w.z, w.w), ve.copy(w)); + } + function xe(w, ie) { + let le = d.get(ie); + le === void 0 && (le = /* @__PURE__ */ new WeakMap(), d.set(ie, le)); + let Ce = le.get(w); + Ce === void 0 && (Ce = i.getUniformBlockIndex(ie, w.name), le.set(w, Ce)); + } + function fe(w, ie) { + const Ce = d.get(ie).get(w); + h.get(ie) !== Ce && (i.uniformBlockBinding(ie, Ce, w.__bindingPointIndex), h.set(ie, Ce)); + } + function te() { + i.disable(i.BLEND), i.disable(i.CULL_FACE), i.disable(i.DEPTH_TEST), i.disable(i.POLYGON_OFFSET_FILL), i.disable(i.SCISSOR_TEST), i.disable(i.STENCIL_TEST), i.disable(i.SAMPLE_ALPHA_TO_COVERAGE), i.blendEquation(i.FUNC_ADD), i.blendFunc(i.ONE, i.ZERO), i.blendFuncSeparate(i.ONE, i.ZERO, i.ONE, i.ZERO), i.blendColor(0, 0, 0, 0), i.colorMask(!0, !0, !0, !0), i.clearColor(0, 0, 0, 0), i.depthMask(!0), i.depthFunc(i.LESS), i.clearDepth(1), i.stencilMask(4294967295), i.stencilFunc(i.ALWAYS, 0, 4294967295), i.stencilOp(i.KEEP, i.KEEP, i.KEEP), i.clearStencil(0), i.cullFace(i.BACK), i.frontFace(i.CCW), i.polygonOffset(0, 0), i.activeTexture(i.TEXTURE0), i.bindFramebuffer(i.FRAMEBUFFER, null), n === !0 && (i.bindFramebuffer(i.DRAW_FRAMEBUFFER, null), i.bindFramebuffer(i.READ_FRAMEBUFFER, null)), i.useProgram(null), i.lineWidth(1), i.scissor(0, 0, i.canvas.width, i.canvas.height), i.viewport(0, 0, i.canvas.width, i.canvas.height), p = {}, Q = null, ce = {}, m = {}, g = /* @__PURE__ */ new WeakMap(), v = [], f = null, u = !1, b = null, S = null, R = null, D = null, C = null, A = null, W = null, x = new Xe(0, 0, 0), y = 0, z = !1, Z = null, re = null, L = null, F = null, V = null, oe.set(0, 0, i.canvas.width, i.canvas.height), ve.set(0, 0, i.canvas.width, i.canvas.height), a.reset(), l.reset(), c.reset(); + } + return { + buffers: { + color: a, + depth: l, + stencil: c + }, + enable: Ae, + disable: ge, + bindFramebuffer: Pe, + drawBuffers: N, + useProgram: rt, + setBlending: pe, + setMaterial: je, + setFlipSided: be, + setCullFace: M, + setLineWidth: _, + setPolygonOffset: I, + setScissorTest: $, + activeTexture: K, + bindTexture: J, + unbindTexture: me, + compressedTexImage2D: ae, + compressedTexImage3D: he, + texImage2D: Ee, + texImage3D: ue, + updateUBOMapping: xe, + uniformBlockBinding: fe, + texStorage2D: ze, + texStorage3D: De, + texSubImage2D: ye, + texSubImage3D: Fe, + compressedTexSubImage2D: ee, + compressedTexSubImage3D: Ye, + scissor: T, + viewport: ne, + reset: te + }; +} +function qf(i, e, t, n, r, s, o) { + const a = r.isWebGL2, l = e.has("WEBGL_multisampled_render_to_texture") ? e.get("WEBGL_multisampled_render_to_texture") : null, c = typeof navigator > "u" ? !1 : /OculusBrowser/g.test(navigator.userAgent), h = /* @__PURE__ */ new WeakMap(); + let d; + const p = /* @__PURE__ */ new WeakMap(); + let m = !1; + try { + m = typeof OffscreenCanvas < "u" && new OffscreenCanvas(1, 1).getContext("2d") !== null; + } catch { + } + function g(M, _) { + return m ? ( + // eslint-disable-next-line compat/compat + new OffscreenCanvas(M, _) + ) : nr("canvas"); + } + function v(M, _, I, $) { + let K = 1; + if ((M.width > $ || M.height > $) && (K = $ / Math.max(M.width, M.height)), K < 1 || _ === !0) + if (typeof HTMLImageElement < "u" && M instanceof HTMLImageElement || typeof HTMLCanvasElement < "u" && M instanceof HTMLCanvasElement || typeof ImageBitmap < "u" && M instanceof ImageBitmap) { + const J = _ ? is : Math.floor, me = J(K * M.width), ae = J(K * M.height); + d === void 0 && (d = g(me, ae)); + const he = I ? g(me, ae) : d; + return he.width = me, he.height = ae, he.getContext("2d").drawImage(M, 0, 0, me, ae), console.warn("THREE.WebGLRenderer: Texture has been resized from (" + M.width + "x" + M.height + ") to (" + me + "x" + ae + ")."), he; + } else + return "data" in M && console.warn("THREE.WebGLRenderer: Image in DataTexture is too big (" + M.width + "x" + M.height + ")."), M; + return M; + } + function f(M) { + return na(M.width) && na(M.height); + } + function u(M) { + return a ? !1 : M.wrapS !== Nt || M.wrapT !== Nt || M.minFilter !== gt && M.minFilter !== Rt; + } + function b(M, _) { + return M.generateMipmaps && _ && M.minFilter !== gt && M.minFilter !== Rt; + } + function S(M) { + i.generateMipmap(M); + } + function R(M, _, I, $, K = !1) { + if (a === !1) return _; + if (M !== null) { + if (i[M] !== void 0) return i[M]; + console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '" + M + "'"); + } + let J = _; + if (_ === i.RED && (I === i.FLOAT && (J = i.R32F), I === i.HALF_FLOAT && (J = i.R16F), I === i.UNSIGNED_BYTE && (J = i.R8)), _ === i.RED_INTEGER && (I === i.UNSIGNED_BYTE && (J = i.R8UI), I === i.UNSIGNED_SHORT && (J = i.R16UI), I === i.UNSIGNED_INT && (J = i.R32UI), I === i.BYTE && (J = i.R8I), I === i.SHORT && (J = i.R16I), I === i.INT && (J = i.R32I)), _ === i.RG && (I === i.FLOAT && (J = i.RG32F), I === i.HALF_FLOAT && (J = i.RG16F), I === i.UNSIGNED_BYTE && (J = i.RG8)), _ === i.RGBA) { + const me = K ? Ji : Ke.getTransfer($); + I === i.FLOAT && (J = i.RGBA32F), I === i.HALF_FLOAT && (J = i.RGBA16F), I === i.UNSIGNED_BYTE && (J = me === Ze ? i.SRGB8_ALPHA8 : i.RGBA8), I === i.UNSIGNED_SHORT_4_4_4_4 && (J = i.RGBA4), I === i.UNSIGNED_SHORT_5_5_5_1 && (J = i.RGB5_A1); + } + return (J === i.R16F || J === i.R32F || J === i.RG16F || J === i.RG32F || J === i.RGBA16F || J === i.RGBA32F) && e.get("EXT_color_buffer_float"), J; + } + function D(M, _, I) { + return b(M, I) === !0 || M.isFramebufferTexture && M.minFilter !== gt && M.minFilter !== Rt ? Math.log2(Math.max(_.width, _.height)) + 1 : M.mipmaps !== void 0 && M.mipmaps.length > 0 ? M.mipmaps.length : M.isCompressedTexture && Array.isArray(M.image) ? _.mipmaps.length : 1; + } + function C(M) { + return M === gt || M === ws || M === pr ? i.NEAREST : i.LINEAR; + } + function A(M) { + const _ = M.target; + _.removeEventListener("dispose", A), x(_), _.isVideoTexture && h.delete(_); + } + function W(M) { + const _ = M.target; + _.removeEventListener("dispose", W), z(_); + } + function x(M) { + const _ = n.get(M); + if (_.__webglInit === void 0) return; + const I = M.source, $ = p.get(I); + if ($) { + const K = $[_.__cacheKey]; + K.usedTimes--, K.usedTimes === 0 && y(M), Object.keys($).length === 0 && p.delete(I); + } + n.remove(M); + } + function y(M) { + const _ = n.get(M); + i.deleteTexture(_.__webglTexture); + const I = M.source, $ = p.get(I); + delete $[_.__cacheKey], o.memory.textures--; + } + function z(M) { + const _ = M.texture, I = n.get(M), $ = n.get(_); + if ($.__webglTexture !== void 0 && (i.deleteTexture($.__webglTexture), o.memory.textures--), M.depthTexture && M.depthTexture.dispose(), M.isWebGLCubeRenderTarget) + for (let K = 0; K < 6; K++) { + if (Array.isArray(I.__webglFramebuffer[K])) + for (let J = 0; J < I.__webglFramebuffer[K].length; J++) i.deleteFramebuffer(I.__webglFramebuffer[K][J]); + else + i.deleteFramebuffer(I.__webglFramebuffer[K]); + I.__webglDepthbuffer && i.deleteRenderbuffer(I.__webglDepthbuffer[K]); + } + else { + if (Array.isArray(I.__webglFramebuffer)) + for (let K = 0; K < I.__webglFramebuffer.length; K++) i.deleteFramebuffer(I.__webglFramebuffer[K]); + else + i.deleteFramebuffer(I.__webglFramebuffer); + if (I.__webglDepthbuffer && i.deleteRenderbuffer(I.__webglDepthbuffer), I.__webglMultisampledFramebuffer && i.deleteFramebuffer(I.__webglMultisampledFramebuffer), I.__webglColorRenderbuffer) + for (let K = 0; K < I.__webglColorRenderbuffer.length; K++) + I.__webglColorRenderbuffer[K] && i.deleteRenderbuffer(I.__webglColorRenderbuffer[K]); + I.__webglDepthRenderbuffer && i.deleteRenderbuffer(I.__webglDepthRenderbuffer); + } + if (M.isWebGLMultipleRenderTargets) + for (let K = 0, J = _.length; K < J; K++) { + const me = n.get(_[K]); + me.__webglTexture && (i.deleteTexture(me.__webglTexture), o.memory.textures--), n.remove(_[K]); + } + n.remove(_), n.remove(M); + } + let Z = 0; + function re() { + Z = 0; + } + function L() { + const M = Z; + return M >= r.maxTextures && console.warn("THREE.WebGLTextures: Trying to use " + M + " texture units while this GPU supports only " + r.maxTextures), Z += 1, M; + } + function F(M) { + const _ = []; + return _.push(M.wrapS), _.push(M.wrapT), _.push(M.wrapR || 0), _.push(M.magFilter), _.push(M.minFilter), _.push(M.anisotropy), _.push(M.internalFormat), _.push(M.format), _.push(M.type), _.push(M.generateMipmaps), _.push(M.premultiplyAlpha), _.push(M.flipY), _.push(M.unpackAlignment), _.push(M.colorSpace), _.join(); + } + function V(M, _) { + const I = n.get(M); + if (M.isVideoTexture && je(M), M.isRenderTargetTexture === !1 && M.version > 0 && I.__version !== M.version) { + const $ = M.image; + if ($ === null) + console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found."); + else if ($.complete === !1) + console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete"); + else { + oe(I, M, _); + return; + } + } + t.bindTexture(i.TEXTURE_2D, I.__webglTexture, i.TEXTURE0 + _); + } + function Y(M, _) { + const I = n.get(M); + if (M.version > 0 && I.__version !== M.version) { + oe(I, M, _); + return; + } + t.bindTexture(i.TEXTURE_2D_ARRAY, I.__webglTexture, i.TEXTURE0 + _); + } + function X(M, _) { + const I = n.get(M); + if (M.version > 0 && I.__version !== M.version) { + oe(I, M, _); + return; + } + t.bindTexture(i.TEXTURE_3D, I.__webglTexture, i.TEXTURE0 + _); + } + function k(M, _) { + const I = n.get(M); + if (M.version > 0 && I.__version !== M.version) { + ve(I, M, _); + return; + } + t.bindTexture(i.TEXTURE_CUBE_MAP, I.__webglTexture, i.TEXTURE0 + _); + } + const q = { + [Qr]: i.REPEAT, + [Nt]: i.CLAMP_TO_EDGE, + [es]: i.MIRRORED_REPEAT + }, Q = { + [gt]: i.NEAREST, + [ws]: i.NEAREST_MIPMAP_NEAREST, + [pr]: i.NEAREST_MIPMAP_LINEAR, + [Rt]: i.LINEAR, + [Al]: i.LINEAR_MIPMAP_NEAREST, + [_i]: i.LINEAR_MIPMAP_LINEAR + }, ce = { + [Bl]: i.NEVER, + [Wl]: i.ALWAYS, + [zl]: i.LESS, + [xo]: i.LEQUAL, + [Gl]: i.EQUAL, + [kl]: i.GEQUAL, + [Hl]: i.GREATER, + [Vl]: i.NOTEQUAL + }; + function H(M, _, I) { + if (I ? (i.texParameteri(M, i.TEXTURE_WRAP_S, q[_.wrapS]), i.texParameteri(M, i.TEXTURE_WRAP_T, q[_.wrapT]), (M === i.TEXTURE_3D || M === i.TEXTURE_2D_ARRAY) && i.texParameteri(M, i.TEXTURE_WRAP_R, q[_.wrapR]), i.texParameteri(M, i.TEXTURE_MAG_FILTER, Q[_.magFilter]), i.texParameteri(M, i.TEXTURE_MIN_FILTER, Q[_.minFilter])) : (i.texParameteri(M, i.TEXTURE_WRAP_S, i.CLAMP_TO_EDGE), i.texParameteri(M, i.TEXTURE_WRAP_T, i.CLAMP_TO_EDGE), (M === i.TEXTURE_3D || M === i.TEXTURE_2D_ARRAY) && i.texParameteri(M, i.TEXTURE_WRAP_R, i.CLAMP_TO_EDGE), (_.wrapS !== Nt || _.wrapT !== Nt) && console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."), i.texParameteri(M, i.TEXTURE_MAG_FILTER, C(_.magFilter)), i.texParameteri(M, i.TEXTURE_MIN_FILTER, C(_.minFilter)), _.minFilter !== gt && _.minFilter !== Rt && console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")), _.compareFunction && (i.texParameteri(M, i.TEXTURE_COMPARE_MODE, i.COMPARE_REF_TO_TEXTURE), i.texParameteri(M, i.TEXTURE_COMPARE_FUNC, ce[_.compareFunction])), e.has("EXT_texture_filter_anisotropic") === !0) { + const $ = e.get("EXT_texture_filter_anisotropic"); + if (_.magFilter === gt || _.minFilter !== pr && _.minFilter !== _i || _.type === an && e.has("OES_texture_float_linear") === !1 || a === !1 && _.type === gi && e.has("OES_texture_half_float_linear") === !1) return; + (_.anisotropy > 1 || n.get(_).__currentAnisotropy) && (i.texParameterf(M, $.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(_.anisotropy, r.getMaxAnisotropy())), n.get(_).__currentAnisotropy = _.anisotropy); + } + } + function j(M, _) { + let I = !1; + M.__webglInit === void 0 && (M.__webglInit = !0, _.addEventListener("dispose", A)); + const $ = _.source; + let K = p.get($); + K === void 0 && (K = {}, p.set($, K)); + const J = F(_); + if (J !== M.__cacheKey) { + K[J] === void 0 && (K[J] = { + texture: i.createTexture(), + usedTimes: 0 + }, o.memory.textures++, I = !0), K[J].usedTimes++; + const me = K[M.__cacheKey]; + me !== void 0 && (K[M.__cacheKey].usedTimes--, me.usedTimes === 0 && y(_)), M.__cacheKey = J, M.__webglTexture = K[J].texture; + } + return I; + } + function oe(M, _, I) { + let $ = i.TEXTURE_2D; + (_.isDataArrayTexture || _.isCompressedArrayTexture) && ($ = i.TEXTURE_2D_ARRAY), _.isData3DTexture && ($ = i.TEXTURE_3D); + const K = j(M, _), J = _.source; + t.bindTexture($, M.__webglTexture, i.TEXTURE0 + I); + const me = n.get(J); + if (J.version !== me.__version || K === !0) { + t.activeTexture(i.TEXTURE0 + I); + const ae = Ke.getPrimaries(Ke.workingColorSpace), he = _.colorSpace === Ct ? null : Ke.getPrimaries(_.colorSpace), ye = _.colorSpace === Ct || ae === he ? i.NONE : i.BROWSER_DEFAULT_WEBGL; + i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, _.flipY), i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, _.premultiplyAlpha), i.pixelStorei(i.UNPACK_ALIGNMENT, _.unpackAlignment), i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL, ye); + const Fe = u(_) && f(_.image) === !1; + let ee = v(_.image, Fe, !1, r.maxTextureSize); + ee = be(_, ee); + const Ye = f(ee) || a, ze = s.convert(_.format, _.colorSpace); + let De = s.convert(_.type), Ee = R(_.internalFormat, ze, De, _.colorSpace, _.isVideoTexture); + H($, _, Ye); + let ue; + const T = _.mipmaps, ne = a && _.isVideoTexture !== !0 && Ee !== _o, xe = me.__version === void 0 || K === !0, fe = D(_, ee, Ye); + if (_.isDepthTexture) + Ee = i.DEPTH_COMPONENT, a ? _.type === an ? Ee = i.DEPTH_COMPONENT32F : _.type === sn ? Ee = i.DEPTH_COMPONENT24 : _.type === En ? Ee = i.DEPTH24_STENCIL8 : Ee = i.DEPTH_COMPONENT16 : _.type === an && console.error("WebGLRenderer: Floating point depth texture requires WebGL2."), _.format === yn && Ee === i.DEPTH_COMPONENT && _.type !== as && _.type !== sn && (console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."), _.type = sn, De = s.convert(_.type)), _.format === ti && Ee === i.DEPTH_COMPONENT && (Ee = i.DEPTH_STENCIL, _.type !== En && (console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."), _.type = En, De = s.convert(_.type))), xe && (ne ? t.texStorage2D(i.TEXTURE_2D, 1, Ee, ee.width, ee.height) : t.texImage2D(i.TEXTURE_2D, 0, Ee, ee.width, ee.height, 0, ze, De, null)); + else if (_.isDataTexture) + if (T.length > 0 && Ye) { + ne && xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, T[0].width, T[0].height); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], ne ? t.texSubImage2D(i.TEXTURE_2D, te, 0, 0, ue.width, ue.height, ze, De, ue.data) : t.texImage2D(i.TEXTURE_2D, te, Ee, ue.width, ue.height, 0, ze, De, ue.data); + _.generateMipmaps = !1; + } else + ne ? (xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, ee.width, ee.height), t.texSubImage2D(i.TEXTURE_2D, 0, 0, 0, ee.width, ee.height, ze, De, ee.data)) : t.texImage2D(i.TEXTURE_2D, 0, Ee, ee.width, ee.height, 0, ze, De, ee.data); + else if (_.isCompressedTexture) + if (_.isCompressedArrayTexture) { + ne && xe && t.texStorage3D(i.TEXTURE_2D_ARRAY, fe, Ee, T[0].width, T[0].height, ee.depth); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], _.format !== Ft ? ze !== null ? ne ? t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY, te, 0, 0, 0, ue.width, ue.height, ee.depth, ze, ue.data, 0, 0) : t.compressedTexImage3D(i.TEXTURE_2D_ARRAY, te, Ee, ue.width, ue.height, ee.depth, 0, ue.data, 0, 0) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()") : ne ? t.texSubImage3D(i.TEXTURE_2D_ARRAY, te, 0, 0, 0, ue.width, ue.height, ee.depth, ze, De, ue.data) : t.texImage3D(i.TEXTURE_2D_ARRAY, te, Ee, ue.width, ue.height, ee.depth, 0, ze, De, ue.data); + } else { + ne && xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, T[0].width, T[0].height); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], _.format !== Ft ? ze !== null ? ne ? t.compressedTexSubImage2D(i.TEXTURE_2D, te, 0, 0, ue.width, ue.height, ze, ue.data) : t.compressedTexImage2D(i.TEXTURE_2D, te, Ee, ue.width, ue.height, 0, ue.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()") : ne ? t.texSubImage2D(i.TEXTURE_2D, te, 0, 0, ue.width, ue.height, ze, De, ue.data) : t.texImage2D(i.TEXTURE_2D, te, Ee, ue.width, ue.height, 0, ze, De, ue.data); + } + else if (_.isDataArrayTexture) + ne ? (xe && t.texStorage3D(i.TEXTURE_2D_ARRAY, fe, Ee, ee.width, ee.height, ee.depth), t.texSubImage3D(i.TEXTURE_2D_ARRAY, 0, 0, 0, 0, ee.width, ee.height, ee.depth, ze, De, ee.data)) : t.texImage3D(i.TEXTURE_2D_ARRAY, 0, Ee, ee.width, ee.height, ee.depth, 0, ze, De, ee.data); + else if (_.isData3DTexture) + ne ? (xe && t.texStorage3D(i.TEXTURE_3D, fe, Ee, ee.width, ee.height, ee.depth), t.texSubImage3D(i.TEXTURE_3D, 0, 0, 0, 0, ee.width, ee.height, ee.depth, ze, De, ee.data)) : t.texImage3D(i.TEXTURE_3D, 0, Ee, ee.width, ee.height, ee.depth, 0, ze, De, ee.data); + else if (_.isFramebufferTexture) { + if (xe) + if (ne) + t.texStorage2D(i.TEXTURE_2D, fe, Ee, ee.width, ee.height); + else { + let te = ee.width, w = ee.height; + for (let ie = 0; ie < fe; ie++) + t.texImage2D(i.TEXTURE_2D, ie, Ee, te, w, 0, ze, De, null), te >>= 1, w >>= 1; + } + } else if (T.length > 0 && Ye) { + ne && xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, T[0].width, T[0].height); + for (let te = 0, w = T.length; te < w; te++) + ue = T[te], ne ? t.texSubImage2D(i.TEXTURE_2D, te, 0, 0, ze, De, ue) : t.texImage2D(i.TEXTURE_2D, te, Ee, ze, De, ue); + _.generateMipmaps = !1; + } else + ne ? (xe && t.texStorage2D(i.TEXTURE_2D, fe, Ee, ee.width, ee.height), t.texSubImage2D(i.TEXTURE_2D, 0, 0, 0, ze, De, ee)) : t.texImage2D(i.TEXTURE_2D, 0, Ee, ze, De, ee); + b(_, Ye) && S($), me.__version = J.version, _.onUpdate && _.onUpdate(_); + } + M.__version = _.version; + } + function ve(M, _, I) { + if (_.image.length !== 6) return; + const $ = j(M, _), K = _.source; + t.bindTexture(i.TEXTURE_CUBE_MAP, M.__webglTexture, i.TEXTURE0 + I); + const J = n.get(K); + if (K.version !== J.__version || $ === !0) { + t.activeTexture(i.TEXTURE0 + I); + const me = Ke.getPrimaries(Ke.workingColorSpace), ae = _.colorSpace === Ct ? null : Ke.getPrimaries(_.colorSpace), he = _.colorSpace === Ct || me === ae ? i.NONE : i.BROWSER_DEFAULT_WEBGL; + i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, _.flipY), i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, _.premultiplyAlpha), i.pixelStorei(i.UNPACK_ALIGNMENT, _.unpackAlignment), i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL, he); + const ye = _.isCompressedTexture || _.image[0].isCompressedTexture, Fe = _.image[0] && _.image[0].isDataTexture, ee = []; + for (let te = 0; te < 6; te++) + !ye && !Fe ? ee[te] = v(_.image[te], !1, !0, r.maxCubemapSize) : ee[te] = Fe ? _.image[te].image : _.image[te], ee[te] = be(_, ee[te]); + const Ye = ee[0], ze = f(Ye) || a, De = s.convert(_.format, _.colorSpace), Ee = s.convert(_.type), ue = R(_.internalFormat, De, Ee, _.colorSpace), T = a && _.isVideoTexture !== !0, ne = J.__version === void 0 || $ === !0; + let xe = D(_, Ye, ze); + H(i.TEXTURE_CUBE_MAP, _, ze); + let fe; + if (ye) { + T && ne && t.texStorage2D(i.TEXTURE_CUBE_MAP, xe, ue, Ye.width, Ye.height); + for (let te = 0; te < 6; te++) { + fe = ee[te].mipmaps; + for (let w = 0; w < fe.length; w++) { + const ie = fe[w]; + _.format !== Ft ? De !== null ? T ? t.compressedTexSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, 0, 0, ie.width, ie.height, De, ie.data) : t.compressedTexImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, ue, ie.width, ie.height, 0, ie.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()") : T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, 0, 0, ie.width, ie.height, De, Ee, ie.data) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w, ue, ie.width, ie.height, 0, De, Ee, ie.data); + } + } + } else { + fe = _.mipmaps, T && ne && (fe.length > 0 && xe++, t.texStorage2D(i.TEXTURE_CUBE_MAP, xe, ue, ee[0].width, ee[0].height)); + for (let te = 0; te < 6; te++) + if (Fe) { + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, 0, 0, ee[te].width, ee[te].height, De, Ee, ee[te].data) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, ue, ee[te].width, ee[te].height, 0, De, Ee, ee[te].data); + for (let w = 0; w < fe.length; w++) { + const le = fe[w].image[te].image; + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, 0, 0, le.width, le.height, De, Ee, le.data) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, ue, le.width, le.height, 0, De, Ee, le.data); + } + } else { + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, 0, 0, De, Ee, ee[te]) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, 0, ue, De, Ee, ee[te]); + for (let w = 0; w < fe.length; w++) { + const ie = fe[w]; + T ? t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, 0, 0, De, Ee, ie.image[te]) : t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + te, w + 1, ue, De, Ee, ie.image[te]); + } + } + } + b(_, ze) && S(i.TEXTURE_CUBE_MAP), J.__version = K.version, _.onUpdate && _.onUpdate(_); + } + M.__version = _.version; + } + function _e(M, _, I, $, K, J) { + const me = s.convert(I.format, I.colorSpace), ae = s.convert(I.type), he = R(I.internalFormat, me, ae, I.colorSpace); + if (!n.get(_).__hasExternalTextures) { + const Fe = Math.max(1, _.width >> J), ee = Math.max(1, _.height >> J); + K === i.TEXTURE_3D || K === i.TEXTURE_2D_ARRAY ? t.texImage3D(K, J, he, Fe, ee, _.depth, 0, me, ae, null) : t.texImage2D(K, J, he, Fe, ee, 0, me, ae, null); + } + t.bindFramebuffer(i.FRAMEBUFFER, M), pe(_) ? l.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER, $, K, n.get(I).__webglTexture, 0, Re(_)) : (K === i.TEXTURE_2D || K >= i.TEXTURE_CUBE_MAP_POSITIVE_X && K <= i.TEXTURE_CUBE_MAP_NEGATIVE_Z) && i.framebufferTexture2D(i.FRAMEBUFFER, $, K, n.get(I).__webglTexture, J), t.bindFramebuffer(i.FRAMEBUFFER, null); + } + function we(M, _, I) { + if (i.bindRenderbuffer(i.RENDERBUFFER, M), _.depthBuffer && !_.stencilBuffer) { + let $ = a === !0 ? i.DEPTH_COMPONENT24 : i.DEPTH_COMPONENT16; + if (I || pe(_)) { + const K = _.depthTexture; + K && K.isDepthTexture && (K.type === an ? $ = i.DEPTH_COMPONENT32F : K.type === sn && ($ = i.DEPTH_COMPONENT24)); + const J = Re(_); + pe(_) ? l.renderbufferStorageMultisampleEXT(i.RENDERBUFFER, J, $, _.width, _.height) : i.renderbufferStorageMultisample(i.RENDERBUFFER, J, $, _.width, _.height); + } else + i.renderbufferStorage(i.RENDERBUFFER, $, _.width, _.height); + i.framebufferRenderbuffer(i.FRAMEBUFFER, i.DEPTH_ATTACHMENT, i.RENDERBUFFER, M); + } else if (_.depthBuffer && _.stencilBuffer) { + const $ = Re(_); + I && pe(_) === !1 ? i.renderbufferStorageMultisample(i.RENDERBUFFER, $, i.DEPTH24_STENCIL8, _.width, _.height) : pe(_) ? l.renderbufferStorageMultisampleEXT(i.RENDERBUFFER, $, i.DEPTH24_STENCIL8, _.width, _.height) : i.renderbufferStorage(i.RENDERBUFFER, i.DEPTH_STENCIL, _.width, _.height), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.DEPTH_STENCIL_ATTACHMENT, i.RENDERBUFFER, M); + } else { + const $ = _.isWebGLMultipleRenderTargets === !0 ? _.texture : [_.texture]; + for (let K = 0; K < $.length; K++) { + const J = $[K], me = s.convert(J.format, J.colorSpace), ae = s.convert(J.type), he = R(J.internalFormat, me, ae, J.colorSpace), ye = Re(_); + I && pe(_) === !1 ? i.renderbufferStorageMultisample(i.RENDERBUFFER, ye, he, _.width, _.height) : pe(_) ? l.renderbufferStorageMultisampleEXT(i.RENDERBUFFER, ye, he, _.width, _.height) : i.renderbufferStorage(i.RENDERBUFFER, he, _.width, _.height); + } + } + i.bindRenderbuffer(i.RENDERBUFFER, null); + } + function Ae(M, _) { + if (_ && _.isWebGLCubeRenderTarget) throw new Error("Depth Texture with cube render targets is not supported"); + if (t.bindFramebuffer(i.FRAMEBUFFER, M), !(_.depthTexture && _.depthTexture.isDepthTexture)) + throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture"); + (!n.get(_.depthTexture).__webglTexture || _.depthTexture.image.width !== _.width || _.depthTexture.image.height !== _.height) && (_.depthTexture.image.width = _.width, _.depthTexture.image.height = _.height, _.depthTexture.needsUpdate = !0), V(_.depthTexture, 0); + const $ = n.get(_.depthTexture).__webglTexture, K = Re(_); + if (_.depthTexture.format === yn) + pe(_) ? l.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER, i.DEPTH_ATTACHMENT, i.TEXTURE_2D, $, 0, K) : i.framebufferTexture2D(i.FRAMEBUFFER, i.DEPTH_ATTACHMENT, i.TEXTURE_2D, $, 0); + else if (_.depthTexture.format === ti) + pe(_) ? l.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER, i.DEPTH_STENCIL_ATTACHMENT, i.TEXTURE_2D, $, 0, K) : i.framebufferTexture2D(i.FRAMEBUFFER, i.DEPTH_STENCIL_ATTACHMENT, i.TEXTURE_2D, $, 0); + else + throw new Error("Unknown depthTexture format"); + } + function ge(M) { + const _ = n.get(M), I = M.isWebGLCubeRenderTarget === !0; + if (M.depthTexture && !_.__autoAllocateDepthBuffer) { + if (I) throw new Error("target.depthTexture not supported in Cube render targets"); + Ae(_.__webglFramebuffer, M); + } else if (I) { + _.__webglDepthbuffer = []; + for (let $ = 0; $ < 6; $++) + t.bindFramebuffer(i.FRAMEBUFFER, _.__webglFramebuffer[$]), _.__webglDepthbuffer[$] = i.createRenderbuffer(), we(_.__webglDepthbuffer[$], M, !1); + } else + t.bindFramebuffer(i.FRAMEBUFFER, _.__webglFramebuffer), _.__webglDepthbuffer = i.createRenderbuffer(), we(_.__webglDepthbuffer, M, !1); + t.bindFramebuffer(i.FRAMEBUFFER, null); + } + function Pe(M, _, I) { + const $ = n.get(M); + _ !== void 0 && _e($.__webglFramebuffer, M, M.texture, i.COLOR_ATTACHMENT0, i.TEXTURE_2D, 0), I !== void 0 && ge(M); + } + function N(M) { + const _ = M.texture, I = n.get(M), $ = n.get(_); + M.addEventListener("dispose", W), M.isWebGLMultipleRenderTargets !== !0 && ($.__webglTexture === void 0 && ($.__webglTexture = i.createTexture()), $.__version = _.version, o.memory.textures++); + const K = M.isWebGLCubeRenderTarget === !0, J = M.isWebGLMultipleRenderTargets === !0, me = f(M) || a; + if (K) { + I.__webglFramebuffer = []; + for (let ae = 0; ae < 6; ae++) + if (a && _.mipmaps && _.mipmaps.length > 0) { + I.__webglFramebuffer[ae] = []; + for (let he = 0; he < _.mipmaps.length; he++) + I.__webglFramebuffer[ae][he] = i.createFramebuffer(); + } else + I.__webglFramebuffer[ae] = i.createFramebuffer(); + } else { + if (a && _.mipmaps && _.mipmaps.length > 0) { + I.__webglFramebuffer = []; + for (let ae = 0; ae < _.mipmaps.length; ae++) + I.__webglFramebuffer[ae] = i.createFramebuffer(); + } else + I.__webglFramebuffer = i.createFramebuffer(); + if (J) + if (r.drawBuffers) { + const ae = M.texture; + for (let he = 0, ye = ae.length; he < ye; he++) { + const Fe = n.get(ae[he]); + Fe.__webglTexture === void 0 && (Fe.__webglTexture = i.createTexture(), o.memory.textures++); + } + } else + console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension."); + if (a && M.samples > 0 && pe(M) === !1) { + const ae = J ? _ : [_]; + I.__webglMultisampledFramebuffer = i.createFramebuffer(), I.__webglColorRenderbuffer = [], t.bindFramebuffer(i.FRAMEBUFFER, I.__webglMultisampledFramebuffer); + for (let he = 0; he < ae.length; he++) { + const ye = ae[he]; + I.__webglColorRenderbuffer[he] = i.createRenderbuffer(), i.bindRenderbuffer(i.RENDERBUFFER, I.__webglColorRenderbuffer[he]); + const Fe = s.convert(ye.format, ye.colorSpace), ee = s.convert(ye.type), Ye = R(ye.internalFormat, Fe, ee, ye.colorSpace, M.isXRRenderTarget === !0), ze = Re(M); + i.renderbufferStorageMultisample(i.RENDERBUFFER, ze, Ye, M.width, M.height), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.COLOR_ATTACHMENT0 + he, i.RENDERBUFFER, I.__webglColorRenderbuffer[he]); + } + i.bindRenderbuffer(i.RENDERBUFFER, null), M.depthBuffer && (I.__webglDepthRenderbuffer = i.createRenderbuffer(), we(I.__webglDepthRenderbuffer, M, !0)), t.bindFramebuffer(i.FRAMEBUFFER, null); + } + } + if (K) { + t.bindTexture(i.TEXTURE_CUBE_MAP, $.__webglTexture), H(i.TEXTURE_CUBE_MAP, _, me); + for (let ae = 0; ae < 6; ae++) + if (a && _.mipmaps && _.mipmaps.length > 0) + for (let he = 0; he < _.mipmaps.length; he++) + _e(I.__webglFramebuffer[ae][he], M, _, i.COLOR_ATTACHMENT0, i.TEXTURE_CUBE_MAP_POSITIVE_X + ae, he); + else + _e(I.__webglFramebuffer[ae], M, _, i.COLOR_ATTACHMENT0, i.TEXTURE_CUBE_MAP_POSITIVE_X + ae, 0); + b(_, me) && S(i.TEXTURE_CUBE_MAP), t.unbindTexture(); + } else if (J) { + const ae = M.texture; + for (let he = 0, ye = ae.length; he < ye; he++) { + const Fe = ae[he], ee = n.get(Fe); + t.bindTexture(i.TEXTURE_2D, ee.__webglTexture), H(i.TEXTURE_2D, Fe, me), _e(I.__webglFramebuffer, M, Fe, i.COLOR_ATTACHMENT0 + he, i.TEXTURE_2D, 0), b(Fe, me) && S(i.TEXTURE_2D); + } + t.unbindTexture(); + } else { + let ae = i.TEXTURE_2D; + if ((M.isWebGL3DRenderTarget || M.isWebGLArrayRenderTarget) && (a ? ae = M.isWebGL3DRenderTarget ? i.TEXTURE_3D : i.TEXTURE_2D_ARRAY : console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")), t.bindTexture(ae, $.__webglTexture), H(ae, _, me), a && _.mipmaps && _.mipmaps.length > 0) + for (let he = 0; he < _.mipmaps.length; he++) + _e(I.__webglFramebuffer[he], M, _, i.COLOR_ATTACHMENT0, ae, he); + else + _e(I.__webglFramebuffer, M, _, i.COLOR_ATTACHMENT0, ae, 0); + b(_, me) && S(ae), t.unbindTexture(); + } + M.depthBuffer && ge(M); + } + function rt(M) { + const _ = f(M) || a, I = M.isWebGLMultipleRenderTargets === !0 ? M.texture : [M.texture]; + for (let $ = 0, K = I.length; $ < K; $++) { + const J = I[$]; + if (b(J, _)) { + const me = M.isWebGLCubeRenderTarget ? i.TEXTURE_CUBE_MAP : i.TEXTURE_2D, ae = n.get(J).__webglTexture; + t.bindTexture(me, ae), S(me), t.unbindTexture(); + } + } + } + function Me(M) { + if (a && M.samples > 0 && pe(M) === !1) { + const _ = M.isWebGLMultipleRenderTargets ? M.texture : [M.texture], I = M.width, $ = M.height; + let K = i.COLOR_BUFFER_BIT; + const J = [], me = M.stencilBuffer ? i.DEPTH_STENCIL_ATTACHMENT : i.DEPTH_ATTACHMENT, ae = n.get(M), he = M.isWebGLMultipleRenderTargets === !0; + if (he) + for (let ye = 0; ye < _.length; ye++) + t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglMultisampledFramebuffer), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.RENDERBUFFER, null), t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglFramebuffer), i.framebufferTexture2D(i.DRAW_FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.TEXTURE_2D, null, 0); + t.bindFramebuffer(i.READ_FRAMEBUFFER, ae.__webglMultisampledFramebuffer), t.bindFramebuffer(i.DRAW_FRAMEBUFFER, ae.__webglFramebuffer); + for (let ye = 0; ye < _.length; ye++) { + J.push(i.COLOR_ATTACHMENT0 + ye), M.depthBuffer && J.push(me); + const Fe = ae.__ignoreDepthValues !== void 0 ? ae.__ignoreDepthValues : !1; + if (Fe === !1 && (M.depthBuffer && (K |= i.DEPTH_BUFFER_BIT), M.stencilBuffer && (K |= i.STENCIL_BUFFER_BIT)), he && i.framebufferRenderbuffer(i.READ_FRAMEBUFFER, i.COLOR_ATTACHMENT0, i.RENDERBUFFER, ae.__webglColorRenderbuffer[ye]), Fe === !0 && (i.invalidateFramebuffer(i.READ_FRAMEBUFFER, [me]), i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER, [me])), he) { + const ee = n.get(_[ye]).__webglTexture; + i.framebufferTexture2D(i.DRAW_FRAMEBUFFER, i.COLOR_ATTACHMENT0, i.TEXTURE_2D, ee, 0); + } + i.blitFramebuffer(0, 0, I, $, 0, 0, I, $, K, i.NEAREST), c && i.invalidateFramebuffer(i.READ_FRAMEBUFFER, J); + } + if (t.bindFramebuffer(i.READ_FRAMEBUFFER, null), t.bindFramebuffer(i.DRAW_FRAMEBUFFER, null), he) + for (let ye = 0; ye < _.length; ye++) { + t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglMultisampledFramebuffer), i.framebufferRenderbuffer(i.FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.RENDERBUFFER, ae.__webglColorRenderbuffer[ye]); + const Fe = n.get(_[ye]).__webglTexture; + t.bindFramebuffer(i.FRAMEBUFFER, ae.__webglFramebuffer), i.framebufferTexture2D(i.DRAW_FRAMEBUFFER, i.COLOR_ATTACHMENT0 + ye, i.TEXTURE_2D, Fe, 0); + } + t.bindFramebuffer(i.DRAW_FRAMEBUFFER, ae.__webglMultisampledFramebuffer); + } + } + function Re(M) { + return Math.min(r.maxSamples, M.samples); + } + function pe(M) { + const _ = n.get(M); + return a && M.samples > 0 && e.has("WEBGL_multisampled_render_to_texture") === !0 && _.__useRenderToTexture !== !1; + } + function je(M) { + const _ = o.render.frame; + h.get(M) !== _ && (h.set(M, _), M.update()); + } + function be(M, _) { + const I = M.colorSpace, $ = M.format, K = M.type; + return M.isCompressedTexture === !0 || M.isVideoTexture === !0 || M.format === ts || I !== $t && I !== Ct && (Ke.getTransfer(I) === Ze ? a === !1 ? e.has("EXT_sRGB") === !0 && $ === Ft ? (M.format = ts, M.minFilter = Rt, M.generateMipmaps = !1) : _ = So.sRGBToLinear(_) : ($ !== Ft || K !== cn) && console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.") : console.error("THREE.WebGLTextures: Unsupported texture color space:", I)), _; + } + this.allocateTextureUnit = L, this.resetTextureUnits = re, this.setTexture2D = V, this.setTexture2DArray = Y, this.setTexture3D = X, this.setTextureCube = k, this.rebindTextures = Pe, this.setupRenderTarget = N, this.updateRenderTargetMipmap = rt, this.updateMultisampleRenderTarget = Me, this.setupDepthRenderbuffer = ge, this.setupFrameBufferTexture = _e, this.useMultisampledRTT = pe; +} +function Yf(i, e, t) { + const n = t.isWebGL2; + function r(s, o = Ct) { + let a; + const l = Ke.getTransfer(o); + if (s === cn) return i.UNSIGNED_BYTE; + if (s === uo) return i.UNSIGNED_SHORT_4_4_4_4; + if (s === ho) return i.UNSIGNED_SHORT_5_5_5_1; + if (s === wl) return i.BYTE; + if (s === Rl) return i.SHORT; + if (s === as) return i.UNSIGNED_SHORT; + if (s === co) return i.INT; + if (s === sn) return i.UNSIGNED_INT; + if (s === an) return i.FLOAT; + if (s === gi) + return n ? i.HALF_FLOAT : (a = e.get("OES_texture_half_float"), a !== null ? a.HALF_FLOAT_OES : null); + if (s === Cl) return i.ALPHA; + if (s === Ft) return i.RGBA; + if (s === Ll) return i.LUMINANCE; + if (s === Pl) return i.LUMINANCE_ALPHA; + if (s === yn) return i.DEPTH_COMPONENT; + if (s === ti) return i.DEPTH_STENCIL; + if (s === ts) + return a = e.get("EXT_sRGB"), a !== null ? a.SRGB_ALPHA_EXT : null; + if (s === Dl) return i.RED; + if (s === fo) return i.RED_INTEGER; + if (s === Ul) return i.RG; + if (s === po) return i.RG_INTEGER; + if (s === mo) return i.RGBA_INTEGER; + if (s === mr || s === _r || s === gr || s === vr) + if (l === Ze) + if (a = e.get("WEBGL_compressed_texture_s3tc_srgb"), a !== null) { + if (s === mr) return a.COMPRESSED_SRGB_S3TC_DXT1_EXT; + if (s === _r) return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; + if (s === gr) return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; + if (s === vr) return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; + } else + return null; + else if (a = e.get("WEBGL_compressed_texture_s3tc"), a !== null) { + if (s === mr) return a.COMPRESSED_RGB_S3TC_DXT1_EXT; + if (s === _r) return a.COMPRESSED_RGBA_S3TC_DXT1_EXT; + if (s === gr) return a.COMPRESSED_RGBA_S3TC_DXT3_EXT; + if (s === vr) return a.COMPRESSED_RGBA_S3TC_DXT5_EXT; + } else + return null; + if (s === Rs || s === Cs || s === Ls || s === Ps) + if (a = e.get("WEBGL_compressed_texture_pvrtc"), a !== null) { + if (s === Rs) return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + if (s === Cs) return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + if (s === Ls) return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + if (s === Ps) return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + } else + return null; + if (s === _o) + return a = e.get("WEBGL_compressed_texture_etc1"), a !== null ? a.COMPRESSED_RGB_ETC1_WEBGL : null; + if (s === Ds || s === Us) + if (a = e.get("WEBGL_compressed_texture_etc"), a !== null) { + if (s === Ds) return l === Ze ? a.COMPRESSED_SRGB8_ETC2 : a.COMPRESSED_RGB8_ETC2; + if (s === Us) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : a.COMPRESSED_RGBA8_ETC2_EAC; + } else + return null; + if (s === Is || s === Ns || s === Fs || s === Os || s === Bs || s === zs || s === Gs || s === Hs || s === Vs || s === ks || s === Ws || s === Xs || s === qs || s === Ys) + if (a = e.get("WEBGL_compressed_texture_astc"), a !== null) { + if (s === Is) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : a.COMPRESSED_RGBA_ASTC_4x4_KHR; + if (s === Ns) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : a.COMPRESSED_RGBA_ASTC_5x4_KHR; + if (s === Fs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : a.COMPRESSED_RGBA_ASTC_5x5_KHR; + if (s === Os) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : a.COMPRESSED_RGBA_ASTC_6x5_KHR; + if (s === Bs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : a.COMPRESSED_RGBA_ASTC_6x6_KHR; + if (s === zs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : a.COMPRESSED_RGBA_ASTC_8x5_KHR; + if (s === Gs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : a.COMPRESSED_RGBA_ASTC_8x6_KHR; + if (s === Hs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : a.COMPRESSED_RGBA_ASTC_8x8_KHR; + if (s === Vs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : a.COMPRESSED_RGBA_ASTC_10x5_KHR; + if (s === ks) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : a.COMPRESSED_RGBA_ASTC_10x6_KHR; + if (s === Ws) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : a.COMPRESSED_RGBA_ASTC_10x8_KHR; + if (s === Xs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : a.COMPRESSED_RGBA_ASTC_10x10_KHR; + if (s === qs) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : a.COMPRESSED_RGBA_ASTC_12x10_KHR; + if (s === Ys) return l === Ze ? a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : a.COMPRESSED_RGBA_ASTC_12x12_KHR; + } else + return null; + if (s === xr || s === js || s === Ks) + if (a = e.get("EXT_texture_compression_bptc"), a !== null) { + if (s === xr) return l === Ze ? a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : a.COMPRESSED_RGBA_BPTC_UNORM_EXT; + if (s === js) return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT; + if (s === Ks) return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT; + } else + return null; + if (s === Il || s === Zs || s === $s || s === Js) + if (a = e.get("EXT_texture_compression_rgtc"), a !== null) { + if (s === xr) return a.COMPRESSED_RED_RGTC1_EXT; + if (s === Zs) return a.COMPRESSED_SIGNED_RED_RGTC1_EXT; + if (s === $s) return a.COMPRESSED_RED_GREEN_RGTC2_EXT; + if (s === Js) return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT; + } else + return null; + return s === En ? n ? i.UNSIGNED_INT_24_8 : (a = e.get("WEBGL_depth_texture"), a !== null ? a.UNSIGNED_INT_24_8_WEBGL : null) : i[s] !== void 0 ? i[s] : null; + } + return { convert: r }; +} +class jf extends Tt { + constructor(e = []) { + super(), this.isArrayCamera = !0, this.cameras = e; + } +} +class qi extends dt { + constructor() { + super(), this.isGroup = !0, this.type = "Group"; + } +} +const Kf = { type: "move" }; +class kr { + constructor() { + this._targetRay = null, this._grip = null, this._hand = null; + } + getHandSpace() { + return this._hand === null && (this._hand = new qi(), this._hand.matrixAutoUpdate = !1, this._hand.visible = !1, this._hand.joints = {}, this._hand.inputState = { pinching: !1 }), this._hand; + } + getTargetRaySpace() { + return this._targetRay === null && (this._targetRay = new qi(), this._targetRay.matrixAutoUpdate = !1, this._targetRay.visible = !1, this._targetRay.hasLinearVelocity = !1, this._targetRay.linearVelocity = new P(), this._targetRay.hasAngularVelocity = !1, this._targetRay.angularVelocity = new P()), this._targetRay; + } + getGripSpace() { + return this._grip === null && (this._grip = new qi(), this._grip.matrixAutoUpdate = !1, this._grip.visible = !1, this._grip.hasLinearVelocity = !1, this._grip.linearVelocity = new P(), this._grip.hasAngularVelocity = !1, this._grip.angularVelocity = new P()), this._grip; + } + dispatchEvent(e) { + return this._targetRay !== null && this._targetRay.dispatchEvent(e), this._grip !== null && this._grip.dispatchEvent(e), this._hand !== null && this._hand.dispatchEvent(e), this; + } + connect(e) { + if (e && e.hand) { + const t = this._hand; + if (t) + for (const n of e.hand.values()) + this._getHandJoint(t, n); + } + return this.dispatchEvent({ type: "connected", data: e }), this; + } + disconnect(e) { + return this.dispatchEvent({ type: "disconnected", data: e }), this._targetRay !== null && (this._targetRay.visible = !1), this._grip !== null && (this._grip.visible = !1), this._hand !== null && (this._hand.visible = !1), this; + } + update(e, t, n) { + let r = null, s = null, o = null; + const a = this._targetRay, l = this._grip, c = this._hand; + if (e && t.session.visibilityState !== "visible-blurred") { + if (c && e.hand) { + o = !0; + for (const v of e.hand.values()) { + const f = t.getJointPose(v, n), u = this._getHandJoint(c, v); + f !== null && (u.matrix.fromArray(f.transform.matrix), u.matrix.decompose(u.position, u.rotation, u.scale), u.matrixWorldNeedsUpdate = !0, u.jointRadius = f.radius), u.visible = f !== null; + } + const h = c.joints["index-finger-tip"], d = c.joints["thumb-tip"], p = h.position.distanceTo(d.position), m = 0.02, g = 5e-3; + c.inputState.pinching && p > m + g ? (c.inputState.pinching = !1, this.dispatchEvent({ + type: "pinchend", + handedness: e.handedness, + target: this + })) : !c.inputState.pinching && p <= m - g && (c.inputState.pinching = !0, this.dispatchEvent({ + type: "pinchstart", + handedness: e.handedness, + target: this + })); + } else + l !== null && e.gripSpace && (s = t.getPose(e.gripSpace, n), s !== null && (l.matrix.fromArray(s.transform.matrix), l.matrix.decompose(l.position, l.rotation, l.scale), l.matrixWorldNeedsUpdate = !0, s.linearVelocity ? (l.hasLinearVelocity = !0, l.linearVelocity.copy(s.linearVelocity)) : l.hasLinearVelocity = !1, s.angularVelocity ? (l.hasAngularVelocity = !0, l.angularVelocity.copy(s.angularVelocity)) : l.hasAngularVelocity = !1)); + a !== null && (r = t.getPose(e.targetRaySpace, n), r === null && s !== null && (r = s), r !== null && (a.matrix.fromArray(r.transform.matrix), a.matrix.decompose(a.position, a.rotation, a.scale), a.matrixWorldNeedsUpdate = !0, r.linearVelocity ? (a.hasLinearVelocity = !0, a.linearVelocity.copy(r.linearVelocity)) : a.hasLinearVelocity = !1, r.angularVelocity ? (a.hasAngularVelocity = !0, a.angularVelocity.copy(r.angularVelocity)) : a.hasAngularVelocity = !1, this.dispatchEvent(Kf))); + } + return a !== null && (a.visible = r !== null), l !== null && (l.visible = s !== null), c !== null && (c.visible = o !== null), this; + } + // private method + _getHandJoint(e, t) { + if (e.joints[t.jointName] === void 0) { + const n = new qi(); + n.matrixAutoUpdate = !1, n.visible = !1, e.joints[t.jointName] = n, e.add(n); + } + return e.joints[t.jointName]; + } +} +class Zf extends Rn { + constructor(e, t) { + super(); + const n = this; + let r = null, s = 1, o = null, a = "local-floor", l = 1, c = null, h = null, d = null, p = null, m = null, g = null; + const v = t.getContextAttributes(); + let f = null, u = null; + const b = [], S = [], R = new Ie(); + let D = null; + const C = new Tt(); + C.layers.enable(1), C.viewport = new $e(); + const A = new Tt(); + A.layers.enable(2), A.viewport = new $e(); + const W = [C, A], x = new jf(); + x.layers.enable(1), x.layers.enable(2); + let y = null, z = null; + this.cameraAutoUpdate = !0, this.enabled = !1, this.isPresenting = !1, this.getController = function(H) { + let j = b[H]; + return j === void 0 && (j = new kr(), b[H] = j), j.getTargetRaySpace(); + }, this.getControllerGrip = function(H) { + let j = b[H]; + return j === void 0 && (j = new kr(), b[H] = j), j.getGripSpace(); + }, this.getHand = function(H) { + let j = b[H]; + return j === void 0 && (j = new kr(), b[H] = j), j.getHandSpace(); + }; + function Z(H) { + const j = S.indexOf(H.inputSource); + if (j === -1) + return; + const oe = b[j]; + oe !== void 0 && (oe.update(H.inputSource, H.frame, c || o), oe.dispatchEvent({ type: H.type, data: H.inputSource })); + } + function re() { + r.removeEventListener("select", Z), r.removeEventListener("selectstart", Z), r.removeEventListener("selectend", Z), r.removeEventListener("squeeze", Z), r.removeEventListener("squeezestart", Z), r.removeEventListener("squeezeend", Z), r.removeEventListener("end", re), r.removeEventListener("inputsourceschange", L); + for (let H = 0; H < b.length; H++) { + const j = S[H]; + j !== null && (S[H] = null, b[H].disconnect(j)); + } + y = null, z = null, e.setRenderTarget(f), m = null, p = null, d = null, r = null, u = null, ce.stop(), n.isPresenting = !1, e.setPixelRatio(D), e.setSize(R.width, R.height, !1), n.dispatchEvent({ type: "sessionend" }); + } + this.setFramebufferScaleFactor = function(H) { + s = H, n.isPresenting === !0 && console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting."); + }, this.setReferenceSpaceType = function(H) { + a = H, n.isPresenting === !0 && console.warn("THREE.WebXRManager: Cannot change reference space type while presenting."); + }, this.getReferenceSpace = function() { + return c || o; + }, this.setReferenceSpace = function(H) { + c = H; + }, this.getBaseLayer = function() { + return p !== null ? p : m; + }, this.getBinding = function() { + return d; + }, this.getFrame = function() { + return g; + }, this.getSession = function() { + return r; + }, this.setSession = async function(H) { + if (r = H, r !== null) { + if (f = e.getRenderTarget(), r.addEventListener("select", Z), r.addEventListener("selectstart", Z), r.addEventListener("selectend", Z), r.addEventListener("squeeze", Z), r.addEventListener("squeezestart", Z), r.addEventListener("squeezeend", Z), r.addEventListener("end", re), r.addEventListener("inputsourceschange", L), v.xrCompatible !== !0 && await t.makeXRCompatible(), D = e.getPixelRatio(), e.getSize(R), r.renderState.layers === void 0 || e.capabilities.isWebGL2 === !1) { + const j = { + antialias: r.renderState.layers === void 0 ? v.antialias : !0, + alpha: !0, + depth: v.depth, + stencil: v.stencil, + framebufferScaleFactor: s + }; + m = new XRWebGLLayer(r, t, j), r.updateRenderState({ baseLayer: m }), e.setPixelRatio(1), e.setSize(m.framebufferWidth, m.framebufferHeight, !1), u = new bn( + m.framebufferWidth, + m.framebufferHeight, + { + format: Ft, + type: cn, + colorSpace: e.outputColorSpace, + stencilBuffer: v.stencil + } + ); + } else { + let j = null, oe = null, ve = null; + v.depth && (ve = v.stencil ? t.DEPTH24_STENCIL8 : t.DEPTH_COMPONENT24, j = v.stencil ? ti : yn, oe = v.stencil ? En : sn); + const _e = { + colorFormat: t.RGBA8, + depthFormat: ve, + scaleFactor: s + }; + d = new XRWebGLBinding(r, t), p = d.createProjectionLayer(_e), r.updateRenderState({ layers: [p] }), e.setPixelRatio(1), e.setSize(p.textureWidth, p.textureHeight, !1), u = new bn( + p.textureWidth, + p.textureHeight, + { + format: Ft, + type: cn, + depthTexture: new Io(p.textureWidth, p.textureHeight, oe, void 0, void 0, void 0, void 0, void 0, void 0, j), + stencilBuffer: v.stencil, + colorSpace: e.outputColorSpace, + samples: v.antialias ? 4 : 0 + } + ); + const we = e.properties.get(u); + we.__ignoreDepthValues = p.ignoreDepthValues; + } + u.isXRRenderTarget = !0, this.setFoveation(l), c = null, o = await r.requestReferenceSpace(a), ce.setContext(r), ce.start(), n.isPresenting = !0, n.dispatchEvent({ type: "sessionstart" }); + } + }, this.getEnvironmentBlendMode = function() { + if (r !== null) + return r.environmentBlendMode; + }; + function L(H) { + for (let j = 0; j < H.removed.length; j++) { + const oe = H.removed[j], ve = S.indexOf(oe); + ve >= 0 && (S[ve] = null, b[ve].disconnect(oe)); + } + for (let j = 0; j < H.added.length; j++) { + const oe = H.added[j]; + let ve = S.indexOf(oe); + if (ve === -1) { + for (let we = 0; we < b.length; we++) + if (we >= S.length) { + S.push(oe), ve = we; + break; + } else if (S[we] === null) { + S[we] = oe, ve = we; + break; + } + if (ve === -1) break; + } + const _e = b[ve]; + _e && _e.connect(oe); + } + } + const F = new P(), V = new P(); + function Y(H, j, oe) { + F.setFromMatrixPosition(j.matrixWorld), V.setFromMatrixPosition(oe.matrixWorld); + const ve = F.distanceTo(V), _e = j.projectionMatrix.elements, we = oe.projectionMatrix.elements, Ae = _e[14] / (_e[10] - 1), ge = _e[14] / (_e[10] + 1), Pe = (_e[9] + 1) / _e[5], N = (_e[9] - 1) / _e[5], rt = (_e[8] - 1) / _e[0], Me = (we[8] + 1) / we[0], Re = Ae * rt, pe = Ae * Me, je = ve / (-rt + Me), be = je * -rt; + j.matrixWorld.decompose(H.position, H.quaternion, H.scale), H.translateX(be), H.translateZ(je), H.matrixWorld.compose(H.position, H.quaternion, H.scale), H.matrixWorldInverse.copy(H.matrixWorld).invert(); + const M = Ae + je, _ = ge + je, I = Re - be, $ = pe + (ve - be), K = Pe * ge / _ * M, J = N * ge / _ * M; + H.projectionMatrix.makePerspective(I, $, K, J, M, _), H.projectionMatrixInverse.copy(H.projectionMatrix).invert(); + } + function X(H, j) { + j === null ? H.matrixWorld.copy(H.matrix) : H.matrixWorld.multiplyMatrices(j.matrixWorld, H.matrix), H.matrixWorldInverse.copy(H.matrixWorld).invert(); + } + this.updateCamera = function(H) { + if (r === null) return; + x.near = A.near = C.near = H.near, x.far = A.far = C.far = H.far, (y !== x.near || z !== x.far) && (r.updateRenderState({ + depthNear: x.near, + depthFar: x.far + }), y = x.near, z = x.far); + const j = H.parent, oe = x.cameras; + X(x, j); + for (let ve = 0; ve < oe.length; ve++) + X(oe[ve], j); + oe.length === 2 ? Y(x, C, A) : x.projectionMatrix.copy(C.projectionMatrix), k(H, x, j); + }; + function k(H, j, oe) { + oe === null ? H.matrix.copy(j.matrixWorld) : (H.matrix.copy(oe.matrixWorld), H.matrix.invert(), H.matrix.multiply(j.matrixWorld)), H.matrix.decompose(H.position, H.quaternion, H.scale), H.updateMatrixWorld(!0), H.projectionMatrix.copy(j.projectionMatrix), H.projectionMatrixInverse.copy(j.projectionMatrixInverse), H.isPerspectiveCamera && (H.fov = ns * 2 * Math.atan(1 / H.projectionMatrix.elements[5]), H.zoom = 1); + } + this.getCamera = function() { + return x; + }, this.getFoveation = function() { + if (!(p === null && m === null)) + return l; + }, this.setFoveation = function(H) { + l = H, p !== null && (p.fixedFoveation = H), m !== null && m.fixedFoveation !== void 0 && (m.fixedFoveation = H); + }; + let q = null; + function Q(H, j) { + if (h = j.getViewerPose(c || o), g = j, h !== null) { + const oe = h.views; + m !== null && (e.setRenderTargetFramebuffer(u, m.framebuffer), e.setRenderTarget(u)); + let ve = !1; + oe.length !== x.cameras.length && (x.cameras.length = 0, ve = !0); + for (let _e = 0; _e < oe.length; _e++) { + const we = oe[_e]; + let Ae = null; + if (m !== null) + Ae = m.getViewport(we); + else { + const Pe = d.getViewSubImage(p, we); + Ae = Pe.viewport, _e === 0 && (e.setRenderTargetTextures( + u, + Pe.colorTexture, + p.ignoreDepthValues ? void 0 : Pe.depthStencilTexture + ), e.setRenderTarget(u)); + } + let ge = W[_e]; + ge === void 0 && (ge = new Tt(), ge.layers.enable(_e), ge.viewport = new $e(), W[_e] = ge), ge.matrix.fromArray(we.transform.matrix), ge.matrix.decompose(ge.position, ge.quaternion, ge.scale), ge.projectionMatrix.fromArray(we.projectionMatrix), ge.projectionMatrixInverse.copy(ge.projectionMatrix).invert(), ge.viewport.set(Ae.x, Ae.y, Ae.width, Ae.height), _e === 0 && (x.matrix.copy(ge.matrix), x.matrix.decompose(x.position, x.quaternion, x.scale)), ve === !0 && x.cameras.push(ge); + } + } + for (let oe = 0; oe < b.length; oe++) { + const ve = S[oe], _e = b[oe]; + ve !== null && _e !== void 0 && _e.update(ve, j, c || o); + } + q && q(H, j), j.detectedPlanes && n.dispatchEvent({ type: "planesdetected", data: j }), g = null; + } + const ce = new Do(); + ce.setAnimationLoop(Q), this.setAnimationLoop = function(H) { + q = H; + }, this.dispose = function() { + }; + } +} +function $f(i, e) { + function t(f, u) { + f.matrixAutoUpdate === !0 && f.updateMatrix(), u.value.copy(f.matrix); + } + function n(f, u) { + u.color.getRGB(f.fogColor.value, Co(i)), u.isFog ? (f.fogNear.value = u.near, f.fogFar.value = u.far) : u.isFogExp2 && (f.fogDensity.value = u.density); + } + function r(f, u, b, S, R) { + u.isMeshBasicMaterial || u.isMeshLambertMaterial ? s(f, u) : u.isMeshToonMaterial ? (s(f, u), d(f, u)) : u.isMeshPhongMaterial ? (s(f, u), h(f, u)) : u.isMeshStandardMaterial ? (s(f, u), p(f, u), u.isMeshPhysicalMaterial && m(f, u, R)) : u.isMeshMatcapMaterial ? (s(f, u), g(f, u)) : u.isMeshDepthMaterial ? s(f, u) : u.isMeshDistanceMaterial ? (s(f, u), v(f, u)) : u.isMeshNormalMaterial ? s(f, u) : u.isLineBasicMaterial ? (o(f, u), u.isLineDashedMaterial && a(f, u)) : u.isPointsMaterial ? l(f, u, b, S) : u.isSpriteMaterial ? c(f, u) : u.isShadowMaterial ? (f.color.value.copy(u.color), f.opacity.value = u.opacity) : u.isShaderMaterial && (u.uniformsNeedUpdate = !1); + } + function s(f, u) { + f.opacity.value = u.opacity, u.color && f.diffuse.value.copy(u.color), u.emissive && f.emissive.value.copy(u.emissive).multiplyScalar(u.emissiveIntensity), u.map && (f.map.value = u.map, t(u.map, f.mapTransform)), u.alphaMap && (f.alphaMap.value = u.alphaMap, t(u.alphaMap, f.alphaMapTransform)), u.bumpMap && (f.bumpMap.value = u.bumpMap, t(u.bumpMap, f.bumpMapTransform), f.bumpScale.value = u.bumpScale, u.side === Mt && (f.bumpScale.value *= -1)), u.normalMap && (f.normalMap.value = u.normalMap, t(u.normalMap, f.normalMapTransform), f.normalScale.value.copy(u.normalScale), u.side === Mt && f.normalScale.value.negate()), u.displacementMap && (f.displacementMap.value = u.displacementMap, t(u.displacementMap, f.displacementMapTransform), f.displacementScale.value = u.displacementScale, f.displacementBias.value = u.displacementBias), u.emissiveMap && (f.emissiveMap.value = u.emissiveMap, t(u.emissiveMap, f.emissiveMapTransform)), u.specularMap && (f.specularMap.value = u.specularMap, t(u.specularMap, f.specularMapTransform)), u.alphaTest > 0 && (f.alphaTest.value = u.alphaTest); + const b = e.get(u).envMap; + if (b && (f.envMap.value = b, f.flipEnvMap.value = b.isCubeTexture && b.isRenderTargetTexture === !1 ? -1 : 1, f.reflectivity.value = u.reflectivity, f.ior.value = u.ior, f.refractionRatio.value = u.refractionRatio), u.lightMap) { + f.lightMap.value = u.lightMap; + const S = i._useLegacyLights === !0 ? Math.PI : 1; + f.lightMapIntensity.value = u.lightMapIntensity * S, t(u.lightMap, f.lightMapTransform); + } + u.aoMap && (f.aoMap.value = u.aoMap, f.aoMapIntensity.value = u.aoMapIntensity, t(u.aoMap, f.aoMapTransform)); + } + function o(f, u) { + f.diffuse.value.copy(u.color), f.opacity.value = u.opacity, u.map && (f.map.value = u.map, t(u.map, f.mapTransform)); + } + function a(f, u) { + f.dashSize.value = u.dashSize, f.totalSize.value = u.dashSize + u.gapSize, f.scale.value = u.scale; + } + function l(f, u, b, S) { + f.diffuse.value.copy(u.color), f.opacity.value = u.opacity, f.size.value = u.size * b, f.scale.value = S * 0.5, u.map && (f.map.value = u.map, t(u.map, f.uvTransform)), u.alphaMap && (f.alphaMap.value = u.alphaMap, t(u.alphaMap, f.alphaMapTransform)), u.alphaTest > 0 && (f.alphaTest.value = u.alphaTest); + } + function c(f, u) { + f.diffuse.value.copy(u.color), f.opacity.value = u.opacity, f.rotation.value = u.rotation, u.map && (f.map.value = u.map, t(u.map, f.mapTransform)), u.alphaMap && (f.alphaMap.value = u.alphaMap, t(u.alphaMap, f.alphaMapTransform)), u.alphaTest > 0 && (f.alphaTest.value = u.alphaTest); + } + function h(f, u) { + f.specular.value.copy(u.specular), f.shininess.value = Math.max(u.shininess, 1e-4); + } + function d(f, u) { + u.gradientMap && (f.gradientMap.value = u.gradientMap); + } + function p(f, u) { + f.metalness.value = u.metalness, u.metalnessMap && (f.metalnessMap.value = u.metalnessMap, t(u.metalnessMap, f.metalnessMapTransform)), f.roughness.value = u.roughness, u.roughnessMap && (f.roughnessMap.value = u.roughnessMap, t(u.roughnessMap, f.roughnessMapTransform)), e.get(u).envMap && (f.envMapIntensity.value = u.envMapIntensity); + } + function m(f, u, b) { + f.ior.value = u.ior, u.sheen > 0 && (f.sheenColor.value.copy(u.sheenColor).multiplyScalar(u.sheen), f.sheenRoughness.value = u.sheenRoughness, u.sheenColorMap && (f.sheenColorMap.value = u.sheenColorMap, t(u.sheenColorMap, f.sheenColorMapTransform)), u.sheenRoughnessMap && (f.sheenRoughnessMap.value = u.sheenRoughnessMap, t(u.sheenRoughnessMap, f.sheenRoughnessMapTransform))), u.clearcoat > 0 && (f.clearcoat.value = u.clearcoat, f.clearcoatRoughness.value = u.clearcoatRoughness, u.clearcoatMap && (f.clearcoatMap.value = u.clearcoatMap, t(u.clearcoatMap, f.clearcoatMapTransform)), u.clearcoatRoughnessMap && (f.clearcoatRoughnessMap.value = u.clearcoatRoughnessMap, t(u.clearcoatRoughnessMap, f.clearcoatRoughnessMapTransform)), u.clearcoatNormalMap && (f.clearcoatNormalMap.value = u.clearcoatNormalMap, t(u.clearcoatNormalMap, f.clearcoatNormalMapTransform), f.clearcoatNormalScale.value.copy(u.clearcoatNormalScale), u.side === Mt && f.clearcoatNormalScale.value.negate())), u.iridescence > 0 && (f.iridescence.value = u.iridescence, f.iridescenceIOR.value = u.iridescenceIOR, f.iridescenceThicknessMinimum.value = u.iridescenceThicknessRange[0], f.iridescenceThicknessMaximum.value = u.iridescenceThicknessRange[1], u.iridescenceMap && (f.iridescenceMap.value = u.iridescenceMap, t(u.iridescenceMap, f.iridescenceMapTransform)), u.iridescenceThicknessMap && (f.iridescenceThicknessMap.value = u.iridescenceThicknessMap, t(u.iridescenceThicknessMap, f.iridescenceThicknessMapTransform))), u.transmission > 0 && (f.transmission.value = u.transmission, f.transmissionSamplerMap.value = b.texture, f.transmissionSamplerSize.value.set(b.width, b.height), u.transmissionMap && (f.transmissionMap.value = u.transmissionMap, t(u.transmissionMap, f.transmissionMapTransform)), f.thickness.value = u.thickness, u.thicknessMap && (f.thicknessMap.value = u.thicknessMap, t(u.thicknessMap, f.thicknessMapTransform)), f.attenuationDistance.value = u.attenuationDistance, f.attenuationColor.value.copy(u.attenuationColor)), u.anisotropy > 0 && (f.anisotropyVector.value.set(u.anisotropy * Math.cos(u.anisotropyRotation), u.anisotropy * Math.sin(u.anisotropyRotation)), u.anisotropyMap && (f.anisotropyMap.value = u.anisotropyMap, t(u.anisotropyMap, f.anisotropyMapTransform))), f.specularIntensity.value = u.specularIntensity, f.specularColor.value.copy(u.specularColor), u.specularColorMap && (f.specularColorMap.value = u.specularColorMap, t(u.specularColorMap, f.specularColorMapTransform)), u.specularIntensityMap && (f.specularIntensityMap.value = u.specularIntensityMap, t(u.specularIntensityMap, f.specularIntensityMapTransform)); + } + function g(f, u) { + u.matcap && (f.matcap.value = u.matcap); + } + function v(f, u) { + const b = e.get(u).light; + f.referencePosition.value.setFromMatrixPosition(b.matrixWorld), f.nearDistance.value = b.shadow.camera.near, f.farDistance.value = b.shadow.camera.far; + } + return { + refreshFogUniforms: n, + refreshMaterialUniforms: r + }; +} +function Jf(i, e, t, n) { + let r = {}, s = {}, o = []; + const a = t.isWebGL2 ? i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS) : 0; + function l(b, S) { + const R = S.program; + n.uniformBlockBinding(b, R); + } + function c(b, S) { + let R = r[b.id]; + R === void 0 && (g(b), R = h(b), r[b.id] = R, b.addEventListener("dispose", f)); + const D = S.program; + n.updateUBOMapping(b, D); + const C = e.render.frame; + s[b.id] !== C && (p(b), s[b.id] = C); + } + function h(b) { + const S = d(); + b.__bindingPointIndex = S; + const R = i.createBuffer(), D = b.__size, C = b.usage; + return i.bindBuffer(i.UNIFORM_BUFFER, R), i.bufferData(i.UNIFORM_BUFFER, D, C), i.bindBuffer(i.UNIFORM_BUFFER, null), i.bindBufferBase(i.UNIFORM_BUFFER, S, R), R; + } + function d() { + for (let b = 0; b < a; b++) + if (o.indexOf(b) === -1) + return o.push(b), b; + return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."), 0; + } + function p(b) { + const S = r[b.id], R = b.uniforms, D = b.__cache; + i.bindBuffer(i.UNIFORM_BUFFER, S); + for (let C = 0, A = R.length; C < A; C++) { + const W = Array.isArray(R[C]) ? R[C] : [R[C]]; + for (let x = 0, y = W.length; x < y; x++) { + const z = W[x]; + if (m(z, C, x, D) === !0) { + const Z = z.__offset, re = Array.isArray(z.value) ? z.value : [z.value]; + let L = 0; + for (let F = 0; F < re.length; F++) { + const V = re[F], Y = v(V); + typeof V == "number" || typeof V == "boolean" ? (z.__data[0] = V, i.bufferSubData(i.UNIFORM_BUFFER, Z + L, z.__data)) : V.isMatrix3 ? (z.__data[0] = V.elements[0], z.__data[1] = V.elements[1], z.__data[2] = V.elements[2], z.__data[3] = 0, z.__data[4] = V.elements[3], z.__data[5] = V.elements[4], z.__data[6] = V.elements[5], z.__data[7] = 0, z.__data[8] = V.elements[6], z.__data[9] = V.elements[7], z.__data[10] = V.elements[8], z.__data[11] = 0) : (V.toArray(z.__data, L), L += Y.storage / Float32Array.BYTES_PER_ELEMENT); + } + i.bufferSubData(i.UNIFORM_BUFFER, Z, z.__data); + } + } + } + i.bindBuffer(i.UNIFORM_BUFFER, null); + } + function m(b, S, R, D) { + const C = b.value, A = S + "_" + R; + if (D[A] === void 0) + return typeof C == "number" || typeof C == "boolean" ? D[A] = C : D[A] = C.clone(), !0; + { + const W = D[A]; + if (typeof C == "number" || typeof C == "boolean") { + if (W !== C) + return D[A] = C, !0; + } else if (W.equals(C) === !1) + return W.copy(C), !0; + } + return !1; + } + function g(b) { + const S = b.uniforms; + let R = 0; + const D = 16; + for (let A = 0, W = S.length; A < W; A++) { + const x = Array.isArray(S[A]) ? S[A] : [S[A]]; + for (let y = 0, z = x.length; y < z; y++) { + const Z = x[y], re = Array.isArray(Z.value) ? Z.value : [Z.value]; + for (let L = 0, F = re.length; L < F; L++) { + const V = re[L], Y = v(V), X = R % D; + X !== 0 && D - X < Y.boundary && (R += D - X), Z.__data = new Float32Array(Y.storage / Float32Array.BYTES_PER_ELEMENT), Z.__offset = R, R += Y.storage; + } + } + } + const C = R % D; + return C > 0 && (R += D - C), b.__size = R, b.__cache = {}, this; + } + function v(b) { + const S = { + boundary: 0, + // bytes + storage: 0 + // bytes + }; + return typeof b == "number" || typeof b == "boolean" ? (S.boundary = 4, S.storage = 4) : b.isVector2 ? (S.boundary = 8, S.storage = 8) : b.isVector3 || b.isColor ? (S.boundary = 16, S.storage = 12) : b.isVector4 ? (S.boundary = 16, S.storage = 16) : b.isMatrix3 ? (S.boundary = 48, S.storage = 48) : b.isMatrix4 ? (S.boundary = 64, S.storage = 64) : b.isTexture ? console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.") : console.warn("THREE.WebGLRenderer: Unsupported uniform value type.", b), S; + } + function f(b) { + const S = b.target; + S.removeEventListener("dispose", f); + const R = o.indexOf(S.__bindingPointIndex); + o.splice(R, 1), i.deleteBuffer(r[S.id]), delete r[S.id], delete s[S.id]; + } + function u() { + for (const b in r) + i.deleteBuffer(r[b]); + o = [], r = {}, s = {}; + } + return { + bind: l, + update: c, + dispose: u + }; +} +class Go { + constructor(e = {}) { + const { + canvas: t = Yl(), + context: n = null, + depth: r = !0, + stencil: s = !0, + alpha: o = !1, + antialias: a = !1, + premultipliedAlpha: l = !0, + preserveDrawingBuffer: c = !1, + powerPreference: h = "default", + failIfMajorPerformanceCaveat: d = !1 + } = e; + this.isWebGLRenderer = !0; + let p; + n !== null ? p = n.getContextAttributes().alpha : p = o; + const m = new Uint32Array(4), g = new Int32Array(4); + let v = null, f = null; + const u = [], b = []; + this.domElement = t, this.debug = { + /** + * Enables error checking and reporting when shader programs are being compiled + * @type {boolean} + */ + checkShaderErrors: !0, + /** + * Callback for custom error reporting. + * @type {?Function} + */ + onShaderError: null + }, this.autoClear = !0, this.autoClearColor = !0, this.autoClearDepth = !0, this.autoClearStencil = !0, this.sortObjects = !0, this.clippingPlanes = [], this.localClippingEnabled = !1, this._outputColorSpace = ht, this._useLegacyLights = !1, this.toneMapping = ln, this.toneMappingExposure = 1; + const S = this; + let R = !1, D = 0, C = 0, A = null, W = -1, x = null; + const y = new $e(), z = new $e(); + let Z = null; + const re = new Xe(0); + let L = 0, F = t.width, V = t.height, Y = 1, X = null, k = null; + const q = new $e(0, 0, F, V), Q = new $e(0, 0, F, V); + let ce = !1; + const H = new cs(); + let j = !1, oe = !1, ve = null; + const _e = new Qe(), we = new Ie(), Ae = new P(), ge = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: !0 }; + function Pe() { + return A === null ? Y : 1; + } + let N = n; + function rt(E, U) { + for (let B = 0; B < E.length; B++) { + const G = E[B], O = t.getContext(G, U); + if (O !== null) return O; + } + return null; + } + try { + const E = { + alpha: !0, + depth: r, + stencil: s, + antialias: a, + premultipliedAlpha: l, + preserveDrawingBuffer: c, + powerPreference: h, + failIfMajorPerformanceCaveat: d + }; + if ("setAttribute" in t && t.setAttribute("data-engine", `three.js r${ss}`), t.addEventListener("webglcontextlost", te, !1), t.addEventListener("webglcontextrestored", w, !1), t.addEventListener("webglcontextcreationerror", ie, !1), N === null) { + const U = ["webgl2", "webgl", "experimental-webgl"]; + if (S.isWebGL1Renderer === !0 && U.shift(), N = rt(U, E), N === null) + throw rt(U) ? new Error("Error creating WebGL context with your selected attributes.") : new Error("Error creating WebGL context."); + } + typeof WebGLRenderingContext < "u" && N instanceof WebGLRenderingContext && console.warn("THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163."), N.getShaderPrecisionFormat === void 0 && (N.getShaderPrecisionFormat = function() { + return { rangeMin: 1, rangeMax: 1, precision: 1 }; + }); + } catch (E) { + throw console.error("THREE.WebGLRenderer: " + E.message), E; + } + let Me, Re, pe, je, be, M, _, I, $, K, J, me, ae, he, ye, Fe, ee, Ye, ze, De, Ee, ue, T, ne; + function xe() { + Me = new od(N), Re = new td(N, Me, e), Me.init(Re), ue = new Yf(N, Me, Re), pe = new Xf(N, Me, Re), je = new ud(N), be = new Pf(), M = new qf(N, Me, pe, be, Re, ue, je), _ = new id(S), I = new ad(S), $ = new vc(N, Re), T = new Qh(N, Me, $, Re), K = new ld(N, $, je, T), J = new pd(N, K, $, je), ze = new fd(N, Re, M), Fe = new nd(be), me = new Lf(S, _, I, Me, Re, T, Fe), ae = new $f(S, be), he = new Uf(), ye = new zf(Me, Re), Ye = new Jh(S, _, I, pe, J, p, l), ee = new Wf(S, J, Re), ne = new Jf(N, je, Re, pe), De = new ed(N, Me, je, Re), Ee = new cd(N, Me, je, Re), je.programs = me.programs, S.capabilities = Re, S.extensions = Me, S.properties = be, S.renderLists = he, S.shadowMap = ee, S.state = pe, S.info = je; + } + xe(); + const fe = new Zf(S, N); + this.xr = fe, this.getContext = function() { + return N; + }, this.getContextAttributes = function() { + return N.getContextAttributes(); + }, this.forceContextLoss = function() { + const E = Me.get("WEBGL_lose_context"); + E && E.loseContext(); + }, this.forceContextRestore = function() { + const E = Me.get("WEBGL_lose_context"); + E && E.restoreContext(); + }, this.getPixelRatio = function() { + return Y; + }, this.setPixelRatio = function(E) { + E !== void 0 && (Y = E, this.setSize(F, V, !1)); + }, this.getSize = function(E) { + return E.set(F, V); + }, this.setSize = function(E, U, B = !0) { + if (fe.isPresenting) { + console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."); + return; + } + F = E, V = U, t.width = Math.floor(E * Y), t.height = Math.floor(U * Y), B === !0 && (t.style.width = E + "px", t.style.height = U + "px"), this.setViewport(0, 0, E, U); + }, this.getDrawingBufferSize = function(E) { + return E.set(F * Y, V * Y).floor(); + }, this.setDrawingBufferSize = function(E, U, B) { + F = E, V = U, Y = B, t.width = Math.floor(E * B), t.height = Math.floor(U * B), this.setViewport(0, 0, E, U); + }, this.getCurrentViewport = function(E) { + return E.copy(y); + }, this.getViewport = function(E) { + return E.copy(q); + }, this.setViewport = function(E, U, B, G) { + E.isVector4 ? q.set(E.x, E.y, E.z, E.w) : q.set(E, U, B, G), pe.viewport(y.copy(q).multiplyScalar(Y).floor()); + }, this.getScissor = function(E) { + return E.copy(Q); + }, this.setScissor = function(E, U, B, G) { + E.isVector4 ? Q.set(E.x, E.y, E.z, E.w) : Q.set(E, U, B, G), pe.scissor(z.copy(Q).multiplyScalar(Y).floor()); + }, this.getScissorTest = function() { + return ce; + }, this.setScissorTest = function(E) { + pe.setScissorTest(ce = E); + }, this.setOpaqueSort = function(E) { + X = E; + }, this.setTransparentSort = function(E) { + k = E; + }, this.getClearColor = function(E) { + return E.copy(Ye.getClearColor()); + }, this.setClearColor = function() { + Ye.setClearColor.apply(Ye, arguments); + }, this.getClearAlpha = function() { + return Ye.getClearAlpha(); + }, this.setClearAlpha = function() { + Ye.setClearAlpha.apply(Ye, arguments); + }, this.clear = function(E = !0, U = !0, B = !0) { + let G = 0; + if (E) { + let O = !1; + if (A !== null) { + const de = A.texture.format; + O = de === mo || de === po || de === fo; + } + if (O) { + const de = A.texture.type, Se = de === cn || de === sn || de === as || de === En || de === uo || de === ho, Le = Ye.getClearColor(), Ue = Ye.getClearAlpha(), Ge = Le.r, Ne = Le.g, Oe = Le.b; + Se ? (m[0] = Ge, m[1] = Ne, m[2] = Oe, m[3] = Ue, N.clearBufferuiv(N.COLOR, 0, m)) : (g[0] = Ge, g[1] = Ne, g[2] = Oe, g[3] = Ue, N.clearBufferiv(N.COLOR, 0, g)); + } else + G |= N.COLOR_BUFFER_BIT; + } + U && (G |= N.DEPTH_BUFFER_BIT), B && (G |= N.STENCIL_BUFFER_BIT, this.state.buffers.stencil.setMask(4294967295)), N.clear(G); + }, this.clearColor = function() { + this.clear(!0, !1, !1); + }, this.clearDepth = function() { + this.clear(!1, !0, !1); + }, this.clearStencil = function() { + this.clear(!1, !1, !0); + }, this.dispose = function() { + t.removeEventListener("webglcontextlost", te, !1), t.removeEventListener("webglcontextrestored", w, !1), t.removeEventListener("webglcontextcreationerror", ie, !1), he.dispose(), ye.dispose(), be.dispose(), _.dispose(), I.dispose(), J.dispose(), T.dispose(), ne.dispose(), me.dispose(), fe.dispose(), fe.removeEventListener("sessionstart", nt), fe.removeEventListener("sessionend", qe), ve && (ve.dispose(), ve = null), st.stop(); + }; + function te(E) { + E.preventDefault(), console.log("THREE.WebGLRenderer: Context Lost."), R = !0; + } + function w() { + console.log("THREE.WebGLRenderer: Context Restored."), R = !1; + const E = je.autoReset, U = ee.enabled, B = ee.autoUpdate, G = ee.needsUpdate, O = ee.type; + xe(), je.autoReset = E, ee.enabled = U, ee.autoUpdate = B, ee.needsUpdate = G, ee.type = O; + } + function ie(E) { + console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ", E.statusMessage); + } + function le(E) { + const U = E.target; + U.removeEventListener("dispose", le), Ce(U); + } + function Ce(E) { + Te(E), be.remove(E); + } + function Te(E) { + const U = be.get(E).programs; + U !== void 0 && (U.forEach(function(B) { + me.releaseProgram(B); + }), E.isShaderMaterial && me.releaseShaderCache(E)); + } + this.renderBufferDirect = function(E, U, B, G, O, de) { + U === null && (U = ge); + const Se = O.isMesh && O.matrixWorld.determinant() < 0, Le = ko(E, U, B, G, O); + pe.setMaterial(G, Se); + let Ue = B.index, Ge = 1; + if (G.wireframe === !0) { + if (Ue = K.getWireframeAttribute(B), Ue === void 0) return; + Ge = 2; + } + const Ne = B.drawRange, Oe = B.attributes.position; + let it = Ne.start * Ge, St = (Ne.start + Ne.count) * Ge; + de !== null && (it = Math.max(it, de.start * Ge), St = Math.min(St, (de.start + de.count) * Ge)), Ue !== null ? (it = Math.max(it, 0), St = Math.min(St, Ue.count)) : Oe != null && (it = Math.max(it, 0), St = Math.min(St, Oe.count)); + const ct = St - it; + if (ct < 0 || ct === 1 / 0) return; + T.setup(O, G, Le, B, Ue); + let Vt, Je = De; + if (Ue !== null && (Vt = $.get(Ue), Je = Ee, Je.setIndex(Vt)), O.isMesh) + G.wireframe === !0 ? (pe.setLineWidth(G.wireframeLinewidth * Pe()), Je.setMode(N.LINES)) : Je.setMode(N.TRIANGLES); + else if (O.isLine) { + let He = G.linewidth; + He === void 0 && (He = 1), pe.setLineWidth(He * Pe()), O.isLineSegments ? Je.setMode(N.LINES) : O.isLineLoop ? Je.setMode(N.LINE_LOOP) : Je.setMode(N.LINE_STRIP); + } else O.isPoints ? Je.setMode(N.POINTS) : O.isSprite && Je.setMode(N.TRIANGLES); + if (O.isBatchedMesh) + Je.renderMultiDraw(O._multiDrawStarts, O._multiDrawCounts, O._multiDrawCount); + else if (O.isInstancedMesh) + Je.renderInstances(it, ct, O.count); + else if (B.isInstancedBufferGeometry) { + const He = B._maxInstanceCount !== void 0 ? B._maxInstanceCount : 1 / 0, lr = Math.min(B.instanceCount, He); + Je.renderInstances(it, ct, lr); + } else + Je.render(it, ct); + }; + function ke(E, U, B) { + E.transparent === !0 && E.side === Kt && E.forceSinglePass === !1 ? (E.side = Mt, E.needsUpdate = !0, Ei(E, U, B), E.side = un, E.needsUpdate = !0, Ei(E, U, B), E.side = Kt) : Ei(E, U, B); + } + this.compile = function(E, U, B = null) { + B === null && (B = E), f = ye.get(B), f.init(), b.push(f), B.traverseVisible(function(O) { + O.isLight && O.layers.test(U.layers) && (f.pushLight(O), O.castShadow && f.pushShadow(O)); + }), E !== B && E.traverseVisible(function(O) { + O.isLight && O.layers.test(U.layers) && (f.pushLight(O), O.castShadow && f.pushShadow(O)); + }), f.setupLights(S._useLegacyLights); + const G = /* @__PURE__ */ new Set(); + return E.traverse(function(O) { + const de = O.material; + if (de) + if (Array.isArray(de)) + for (let Se = 0; Se < de.length; Se++) { + const Le = de[Se]; + ke(Le, B, O), G.add(Le); + } + else + ke(de, B, O), G.add(de); + }), b.pop(), f = null, G; + }, this.compileAsync = function(E, U, B = null) { + const G = this.compile(E, U, B); + return new Promise((O) => { + function de() { + if (G.forEach(function(Se) { + be.get(Se).currentProgram.isReady() && G.delete(Se); + }), G.size === 0) { + O(E); + return; + } + setTimeout(de, 10); + } + Me.get("KHR_parallel_shader_compile") !== null ? de() : setTimeout(de, 10); + }); + }; + let We = null; + function et(E) { + We && We(E); + } + function nt() { + st.stop(); + } + function qe() { + st.start(); + } + const st = new Do(); + st.setAnimationLoop(et), typeof self < "u" && st.setContext(self), this.setAnimationLoop = function(E) { + We = E, fe.setAnimationLoop(E), E === null ? st.stop() : st.start(); + }, fe.addEventListener("sessionstart", nt), fe.addEventListener("sessionend", qe), this.render = function(E, U) { + if (U !== void 0 && U.isCamera !== !0) { + console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera."); + return; + } + if (R === !0) return; + E.matrixWorldAutoUpdate === !0 && E.updateMatrixWorld(), U.parent === null && U.matrixWorldAutoUpdate === !0 && U.updateMatrixWorld(), fe.enabled === !0 && fe.isPresenting === !0 && (fe.cameraAutoUpdate === !0 && fe.updateCamera(U), U = fe.getCamera()), E.isScene === !0 && E.onBeforeRender(S, E, U, A), f = ye.get(E, b.length), f.init(), b.push(f), _e.multiplyMatrices(U.projectionMatrix, U.matrixWorldInverse), H.setFromProjectionMatrix(_e), oe = this.localClippingEnabled, j = Fe.init(this.clippingPlanes, oe), v = he.get(E, u.length), v.init(), u.push(v), zt(E, U, 0, S.sortObjects), v.finish(), S.sortObjects === !0 && v.sort(X, k), this.info.render.frame++, j === !0 && Fe.beginShadows(); + const B = f.state.shadowsArray; + if (ee.render(B, E, U), j === !0 && Fe.endShadows(), this.info.autoReset === !0 && this.info.reset(), Ye.render(v, E), f.setupLights(S._useLegacyLights), U.isArrayCamera) { + const G = U.cameras; + for (let O = 0, de = G.length; O < de; O++) { + const Se = G[O]; + ps(v, E, Se, Se.viewport); + } + } else + ps(v, E, U); + A !== null && (M.updateMultisampleRenderTarget(A), M.updateRenderTargetMipmap(A)), E.isScene === !0 && E.onAfterRender(S, E, U), T.resetDefaultState(), W = -1, x = null, b.pop(), b.length > 0 ? f = b[b.length - 1] : f = null, u.pop(), u.length > 0 ? v = u[u.length - 1] : v = null; + }; + function zt(E, U, B, G) { + if (E.visible === !1) return; + if (E.layers.test(U.layers)) { + if (E.isGroup) + B = E.renderOrder; + else if (E.isLOD) + E.autoUpdate === !0 && E.update(U); + else if (E.isLight) + f.pushLight(E), E.castShadow && f.pushShadow(E); + else if (E.isSprite) { + if (!E.frustumCulled || H.intersectsSprite(E)) { + G && Ae.setFromMatrixPosition(E.matrixWorld).applyMatrix4(_e); + const Se = J.update(E), Le = E.material; + Le.visible && v.push(E, Se, Le, B, Ae.z, null); + } + } else if ((E.isMesh || E.isLine || E.isPoints) && (!E.frustumCulled || H.intersectsObject(E))) { + const Se = J.update(E), Le = E.material; + if (G && (E.boundingSphere !== void 0 ? (E.boundingSphere === null && E.computeBoundingSphere(), Ae.copy(E.boundingSphere.center)) : (Se.boundingSphere === null && Se.computeBoundingSphere(), Ae.copy(Se.boundingSphere.center)), Ae.applyMatrix4(E.matrixWorld).applyMatrix4(_e)), Array.isArray(Le)) { + const Ue = Se.groups; + for (let Ge = 0, Ne = Ue.length; Ge < Ne; Ge++) { + const Oe = Ue[Ge], it = Le[Oe.materialIndex]; + it && it.visible && v.push(E, Se, it, B, Ae.z, Oe); + } + } else Le.visible && v.push(E, Se, Le, B, Ae.z, null); + } + } + const de = E.children; + for (let Se = 0, Le = de.length; Se < Le; Se++) + zt(de[Se], U, B, G); + } + function ps(E, U, B, G) { + const O = E.opaque, de = E.transmissive, Se = E.transparent; + f.setupLightsView(B), j === !0 && Fe.setGlobalState(S.clippingPlanes, B), de.length > 0 && Vo(O, de, U, B), G && pe.viewport(y.copy(G)), O.length > 0 && Si(O, U, B), de.length > 0 && Si(de, U, B), Se.length > 0 && Si(Se, U, B), pe.buffers.depth.setTest(!0), pe.buffers.depth.setMask(!0), pe.buffers.color.setMask(!0), pe.setPolygonOffset(!1); + } + function Vo(E, U, B, G) { + if ((B.isScene === !0 ? B.overrideMaterial : null) !== null) + return; + const de = Re.isWebGL2; + ve === null && (ve = new bn(1, 1, { + generateMipmaps: !0, + type: Me.has("EXT_color_buffer_half_float") ? gi : cn, + minFilter: _i, + samples: de ? 4 : 0 + })), S.getDrawingBufferSize(we), de ? ve.setSize(we.x, we.y) : ve.setSize(is(we.x), is(we.y)); + const Se = S.getRenderTarget(); + S.setRenderTarget(ve), S.getClearColor(re), L = S.getClearAlpha(), L < 1 && S.setClearColor(16777215, 0.5), S.clear(); + const Le = S.toneMapping; + S.toneMapping = ln, Si(E, B, G), M.updateMultisampleRenderTarget(ve), M.updateRenderTargetMipmap(ve); + let Ue = !1; + for (let Ge = 0, Ne = U.length; Ge < Ne; Ge++) { + const Oe = U[Ge], it = Oe.object, St = Oe.geometry, ct = Oe.material, Vt = Oe.group; + if (ct.side === Kt && it.layers.test(G.layers)) { + const Je = ct.side; + ct.side = Mt, ct.needsUpdate = !0, ms(it, B, G, St, ct, Vt), ct.side = Je, ct.needsUpdate = !0, Ue = !0; + } + } + Ue === !0 && (M.updateMultisampleRenderTarget(ve), M.updateRenderTargetMipmap(ve)), S.setRenderTarget(Se), S.setClearColor(re, L), S.toneMapping = Le; + } + function Si(E, U, B) { + const G = U.isScene === !0 ? U.overrideMaterial : null; + for (let O = 0, de = E.length; O < de; O++) { + const Se = E[O], Le = Se.object, Ue = Se.geometry, Ge = G === null ? Se.material : G, Ne = Se.group; + Le.layers.test(B.layers) && ms(Le, U, B, Ue, Ge, Ne); + } + } + function ms(E, U, B, G, O, de) { + E.onBeforeRender(S, U, B, G, O, de), E.modelViewMatrix.multiplyMatrices(B.matrixWorldInverse, E.matrixWorld), E.normalMatrix.getNormalMatrix(E.modelViewMatrix), O.onBeforeRender(S, U, B, G, E, de), O.transparent === !0 && O.side === Kt && O.forceSinglePass === !1 ? (O.side = Mt, O.needsUpdate = !0, S.renderBufferDirect(B, U, G, O, E, de), O.side = un, O.needsUpdate = !0, S.renderBufferDirect(B, U, G, O, E, de), O.side = Kt) : S.renderBufferDirect(B, U, G, O, E, de), E.onAfterRender(S, U, B, G, O, de); + } + function Ei(E, U, B) { + U.isScene !== !0 && (U = ge); + const G = be.get(E), O = f.state.lights, de = f.state.shadowsArray, Se = O.state.version, Le = me.getParameters(E, O.state, de, U, B), Ue = me.getProgramCacheKey(Le); + let Ge = G.programs; + G.environment = E.isMeshStandardMaterial ? U.environment : null, G.fog = U.fog, G.envMap = (E.isMeshStandardMaterial ? I : _).get(E.envMap || G.environment), Ge === void 0 && (E.addEventListener("dispose", le), Ge = /* @__PURE__ */ new Map(), G.programs = Ge); + let Ne = Ge.get(Ue); + if (Ne !== void 0) { + if (G.currentProgram === Ne && G.lightsStateVersion === Se) + return gs(E, Le), Ne; + } else + Le.uniforms = me.getUniforms(E), E.onBuild(B, Le, S), E.onBeforeCompile(Le, S), Ne = me.acquireProgram(Le, Ue), Ge.set(Ue, Ne), G.uniforms = Le.uniforms; + const Oe = G.uniforms; + return (!E.isShaderMaterial && !E.isRawShaderMaterial || E.clipping === !0) && (Oe.clippingPlanes = Fe.uniform), gs(E, Le), G.needsLights = Xo(E), G.lightsStateVersion = Se, G.needsLights && (Oe.ambientLightColor.value = O.state.ambient, Oe.lightProbe.value = O.state.probe, Oe.directionalLights.value = O.state.directional, Oe.directionalLightShadows.value = O.state.directionalShadow, Oe.spotLights.value = O.state.spot, Oe.spotLightShadows.value = O.state.spotShadow, Oe.rectAreaLights.value = O.state.rectArea, Oe.ltc_1.value = O.state.rectAreaLTC1, Oe.ltc_2.value = O.state.rectAreaLTC2, Oe.pointLights.value = O.state.point, Oe.pointLightShadows.value = O.state.pointShadow, Oe.hemisphereLights.value = O.state.hemi, Oe.directionalShadowMap.value = O.state.directionalShadowMap, Oe.directionalShadowMatrix.value = O.state.directionalShadowMatrix, Oe.spotShadowMap.value = O.state.spotShadowMap, Oe.spotLightMatrix.value = O.state.spotLightMatrix, Oe.spotLightMap.value = O.state.spotLightMap, Oe.pointShadowMap.value = O.state.pointShadowMap, Oe.pointShadowMatrix.value = O.state.pointShadowMatrix), G.currentProgram = Ne, G.uniformsList = null, Ne; + } + function _s(E) { + if (E.uniformsList === null) { + const U = E.currentProgram.getUniforms(); + E.uniformsList = Zi.seqWithValue(U.seq, E.uniforms); + } + return E.uniformsList; + } + function gs(E, U) { + const B = be.get(E); + B.outputColorSpace = U.outputColorSpace, B.batching = U.batching, B.instancing = U.instancing, B.instancingColor = U.instancingColor, B.skinning = U.skinning, B.morphTargets = U.morphTargets, B.morphNormals = U.morphNormals, B.morphColors = U.morphColors, B.morphTargetsCount = U.morphTargetsCount, B.numClippingPlanes = U.numClippingPlanes, B.numIntersection = U.numClipIntersection, B.vertexAlphas = U.vertexAlphas, B.vertexTangents = U.vertexTangents, B.toneMapping = U.toneMapping; + } + function ko(E, U, B, G, O) { + U.isScene !== !0 && (U = ge), M.resetTextureUnits(); + const de = U.fog, Se = G.isMeshStandardMaterial ? U.environment : null, Le = A === null ? S.outputColorSpace : A.isXRRenderTarget === !0 ? A.texture.colorSpace : $t, Ue = (G.isMeshStandardMaterial ? I : _).get(G.envMap || Se), Ge = G.vertexColors === !0 && !!B.attributes.color && B.attributes.color.itemSize === 4, Ne = !!B.attributes.tangent && (!!G.normalMap || G.anisotropy > 0), Oe = !!B.morphAttributes.position, it = !!B.morphAttributes.normal, St = !!B.morphAttributes.color; + let ct = ln; + G.toneMapped && (A === null || A.isXRRenderTarget === !0) && (ct = S.toneMapping); + const Vt = B.morphAttributes.position || B.morphAttributes.normal || B.morphAttributes.color, Je = Vt !== void 0 ? Vt.length : 0, He = be.get(G), lr = f.state.lights; + if (j === !0 && (oe === !0 || E !== x)) { + const At = E === x && G.id === W; + Fe.setState(G, E, At); + } + let tt = !1; + G.version === He.__version ? (He.needsLights && He.lightsStateVersion !== lr.state.version || He.outputColorSpace !== Le || O.isBatchedMesh && He.batching === !1 || !O.isBatchedMesh && He.batching === !0 || O.isInstancedMesh && He.instancing === !1 || !O.isInstancedMesh && He.instancing === !0 || O.isSkinnedMesh && He.skinning === !1 || !O.isSkinnedMesh && He.skinning === !0 || O.isInstancedMesh && He.instancingColor === !0 && O.instanceColor === null || O.isInstancedMesh && He.instancingColor === !1 && O.instanceColor !== null || He.envMap !== Ue || G.fog === !0 && He.fog !== de || He.numClippingPlanes !== void 0 && (He.numClippingPlanes !== Fe.numPlanes || He.numIntersection !== Fe.numIntersection) || He.vertexAlphas !== Ge || He.vertexTangents !== Ne || He.morphTargets !== Oe || He.morphNormals !== it || He.morphColors !== St || He.toneMapping !== ct || Re.isWebGL2 === !0 && He.morphTargetsCount !== Je) && (tt = !0) : (tt = !0, He.__version = G.version); + let dn = He.currentProgram; + tt === !0 && (dn = Ei(G, U, O)); + let vs = !1, si = !1, cr = !1; + const ft = dn.getUniforms(), fn = He.uniforms; + if (pe.useProgram(dn.program) && (vs = !0, si = !0, cr = !0), G.id !== W && (W = G.id, si = !0), vs || x !== E) { + ft.setValue(N, "projectionMatrix", E.projectionMatrix), ft.setValue(N, "viewMatrix", E.matrixWorldInverse); + const At = ft.map.cameraPosition; + At !== void 0 && At.setValue(N, Ae.setFromMatrixPosition(E.matrixWorld)), Re.logarithmicDepthBuffer && ft.setValue( + N, + "logDepthBufFC", + 2 / (Math.log(E.far + 1) / Math.LN2) + ), (G.isMeshPhongMaterial || G.isMeshToonMaterial || G.isMeshLambertMaterial || G.isMeshBasicMaterial || G.isMeshStandardMaterial || G.isShaderMaterial) && ft.setValue(N, "isOrthographic", E.isOrthographicCamera === !0), x !== E && (x = E, si = !0, cr = !0); + } + if (O.isSkinnedMesh) { + ft.setOptional(N, O, "bindMatrix"), ft.setOptional(N, O, "bindMatrixInverse"); + const At = O.skeleton; + At && (Re.floatVertexTextures ? (At.boneTexture === null && At.computeBoneTexture(), ft.setValue(N, "boneTexture", At.boneTexture, M)) : console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.")); + } + O.isBatchedMesh && (ft.setOptional(N, O, "batchingTexture"), ft.setValue(N, "batchingTexture", O._matricesTexture, M)); + const ur = B.morphAttributes; + if ((ur.position !== void 0 || ur.normal !== void 0 || ur.color !== void 0 && Re.isWebGL2 === !0) && ze.update(O, B, dn), (si || He.receiveShadow !== O.receiveShadow) && (He.receiveShadow = O.receiveShadow, ft.setValue(N, "receiveShadow", O.receiveShadow)), G.isMeshGouraudMaterial && G.envMap !== null && (fn.envMap.value = Ue, fn.flipEnvMap.value = Ue.isCubeTexture && Ue.isRenderTargetTexture === !1 ? -1 : 1), si && (ft.setValue(N, "toneMappingExposure", S.toneMappingExposure), He.needsLights && Wo(fn, cr), de && G.fog === !0 && ae.refreshFogUniforms(fn, de), ae.refreshMaterialUniforms(fn, G, Y, V, ve), Zi.upload(N, _s(He), fn, M)), G.isShaderMaterial && G.uniformsNeedUpdate === !0 && (Zi.upload(N, _s(He), fn, M), G.uniformsNeedUpdate = !1), G.isSpriteMaterial && ft.setValue(N, "center", O.center), ft.setValue(N, "modelViewMatrix", O.modelViewMatrix), ft.setValue(N, "normalMatrix", O.normalMatrix), ft.setValue(N, "modelMatrix", O.matrixWorld), G.isShaderMaterial || G.isRawShaderMaterial) { + const At = G.uniformsGroups; + for (let hr = 0, qo = At.length; hr < qo; hr++) + if (Re.isWebGL2) { + const xs = At[hr]; + ne.update(xs, dn), ne.bind(xs, dn); + } else + console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2."); + } + return dn; + } + function Wo(E, U) { + E.ambientLightColor.needsUpdate = U, E.lightProbe.needsUpdate = U, E.directionalLights.needsUpdate = U, E.directionalLightShadows.needsUpdate = U, E.pointLights.needsUpdate = U, E.pointLightShadows.needsUpdate = U, E.spotLights.needsUpdate = U, E.spotLightShadows.needsUpdate = U, E.rectAreaLights.needsUpdate = U, E.hemisphereLights.needsUpdate = U; + } + function Xo(E) { + return E.isMeshLambertMaterial || E.isMeshToonMaterial || E.isMeshPhongMaterial || E.isMeshStandardMaterial || E.isShadowMaterial || E.isShaderMaterial && E.lights === !0; + } + this.getActiveCubeFace = function() { + return D; + }, this.getActiveMipmapLevel = function() { + return C; + }, this.getRenderTarget = function() { + return A; + }, this.setRenderTargetTextures = function(E, U, B) { + be.get(E.texture).__webglTexture = U, be.get(E.depthTexture).__webglTexture = B; + const G = be.get(E); + G.__hasExternalTextures = !0, G.__hasExternalTextures && (G.__autoAllocateDepthBuffer = B === void 0, G.__autoAllocateDepthBuffer || Me.has("WEBGL_multisampled_render_to_texture") === !0 && (console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"), G.__useRenderToTexture = !1)); + }, this.setRenderTargetFramebuffer = function(E, U) { + const B = be.get(E); + B.__webglFramebuffer = U, B.__useDefaultFramebuffer = U === void 0; + }, this.setRenderTarget = function(E, U = 0, B = 0) { + A = E, D = U, C = B; + let G = !0, O = null, de = !1, Se = !1; + if (E) { + const Ue = be.get(E); + Ue.__useDefaultFramebuffer !== void 0 ? (pe.bindFramebuffer(N.FRAMEBUFFER, null), G = !1) : Ue.__webglFramebuffer === void 0 ? M.setupRenderTarget(E) : Ue.__hasExternalTextures && M.rebindTextures(E, be.get(E.texture).__webglTexture, be.get(E.depthTexture).__webglTexture); + const Ge = E.texture; + (Ge.isData3DTexture || Ge.isDataArrayTexture || Ge.isCompressedArrayTexture) && (Se = !0); + const Ne = be.get(E).__webglFramebuffer; + E.isWebGLCubeRenderTarget ? (Array.isArray(Ne[U]) ? O = Ne[U][B] : O = Ne[U], de = !0) : Re.isWebGL2 && E.samples > 0 && M.useMultisampledRTT(E) === !1 ? O = be.get(E).__webglMultisampledFramebuffer : Array.isArray(Ne) ? O = Ne[B] : O = Ne, y.copy(E.viewport), z.copy(E.scissor), Z = E.scissorTest; + } else + y.copy(q).multiplyScalar(Y).floor(), z.copy(Q).multiplyScalar(Y).floor(), Z = ce; + if (pe.bindFramebuffer(N.FRAMEBUFFER, O) && Re.drawBuffers && G && pe.drawBuffers(E, O), pe.viewport(y), pe.scissor(z), pe.setScissorTest(Z), de) { + const Ue = be.get(E.texture); + N.framebufferTexture2D(N.FRAMEBUFFER, N.COLOR_ATTACHMENT0, N.TEXTURE_CUBE_MAP_POSITIVE_X + U, Ue.__webglTexture, B); + } else if (Se) { + const Ue = be.get(E.texture), Ge = U || 0; + N.framebufferTextureLayer(N.FRAMEBUFFER, N.COLOR_ATTACHMENT0, Ue.__webglTexture, B || 0, Ge); + } + W = -1; + }, this.readRenderTargetPixels = function(E, U, B, G, O, de, Se) { + if (!(E && E.isWebGLRenderTarget)) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget."); + return; + } + let Le = be.get(E).__webglFramebuffer; + if (E.isWebGLCubeRenderTarget && Se !== void 0 && (Le = Le[Se]), Le) { + pe.bindFramebuffer(N.FRAMEBUFFER, Le); + try { + const Ue = E.texture, Ge = Ue.format, Ne = Ue.type; + if (Ge !== Ft && ue.convert(Ge) !== N.getParameter(N.IMPLEMENTATION_COLOR_READ_FORMAT)) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."); + return; + } + const Oe = Ne === gi && (Me.has("EXT_color_buffer_half_float") || Re.isWebGL2 && Me.has("EXT_color_buffer_float")); + if (Ne !== cn && ue.convert(Ne) !== N.getParameter(N.IMPLEMENTATION_COLOR_READ_TYPE) && // Edge and Chrome Mac < 52 (#9513) + !(Ne === an && (Re.isWebGL2 || Me.has("OES_texture_float") || Me.has("WEBGL_color_buffer_float"))) && // Chrome Mac >= 52 and Firefox + !Oe) { + console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type."); + return; + } + U >= 0 && U <= E.width - G && B >= 0 && B <= E.height - O && N.readPixels(U, B, G, O, ue.convert(Ge), ue.convert(Ne), de); + } finally { + const Ue = A !== null ? be.get(A).__webglFramebuffer : null; + pe.bindFramebuffer(N.FRAMEBUFFER, Ue); + } + } + }, this.copyFramebufferToTexture = function(E, U, B = 0) { + const G = Math.pow(2, -B), O = Math.floor(U.image.width * G), de = Math.floor(U.image.height * G); + M.setTexture2D(U, 0), N.copyTexSubImage2D(N.TEXTURE_2D, B, 0, 0, E.x, E.y, O, de), pe.unbindTexture(); + }, this.copyTextureToTexture = function(E, U, B, G = 0) { + const O = U.image.width, de = U.image.height, Se = ue.convert(B.format), Le = ue.convert(B.type); + M.setTexture2D(B, 0), N.pixelStorei(N.UNPACK_FLIP_Y_WEBGL, B.flipY), N.pixelStorei(N.UNPACK_PREMULTIPLY_ALPHA_WEBGL, B.premultiplyAlpha), N.pixelStorei(N.UNPACK_ALIGNMENT, B.unpackAlignment), U.isDataTexture ? N.texSubImage2D(N.TEXTURE_2D, G, E.x, E.y, O, de, Se, Le, U.image.data) : U.isCompressedTexture ? N.compressedTexSubImage2D(N.TEXTURE_2D, G, E.x, E.y, U.mipmaps[0].width, U.mipmaps[0].height, Se, U.mipmaps[0].data) : N.texSubImage2D(N.TEXTURE_2D, G, E.x, E.y, Se, Le, U.image), G === 0 && B.generateMipmaps && N.generateMipmap(N.TEXTURE_2D), pe.unbindTexture(); + }, this.copyTextureToTexture3D = function(E, U, B, G, O = 0) { + if (S.isWebGL1Renderer) { + console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2."); + return; + } + const de = E.max.x - E.min.x + 1, Se = E.max.y - E.min.y + 1, Le = E.max.z - E.min.z + 1, Ue = ue.convert(G.format), Ge = ue.convert(G.type); + let Ne; + if (G.isData3DTexture) + M.setTexture3D(G, 0), Ne = N.TEXTURE_3D; + else if (G.isDataArrayTexture || G.isCompressedArrayTexture) + M.setTexture2DArray(G, 0), Ne = N.TEXTURE_2D_ARRAY; + else { + console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray."); + return; + } + N.pixelStorei(N.UNPACK_FLIP_Y_WEBGL, G.flipY), N.pixelStorei(N.UNPACK_PREMULTIPLY_ALPHA_WEBGL, G.premultiplyAlpha), N.pixelStorei(N.UNPACK_ALIGNMENT, G.unpackAlignment); + const Oe = N.getParameter(N.UNPACK_ROW_LENGTH), it = N.getParameter(N.UNPACK_IMAGE_HEIGHT), St = N.getParameter(N.UNPACK_SKIP_PIXELS), ct = N.getParameter(N.UNPACK_SKIP_ROWS), Vt = N.getParameter(N.UNPACK_SKIP_IMAGES), Je = B.isCompressedTexture ? B.mipmaps[O] : B.image; + N.pixelStorei(N.UNPACK_ROW_LENGTH, Je.width), N.pixelStorei(N.UNPACK_IMAGE_HEIGHT, Je.height), N.pixelStorei(N.UNPACK_SKIP_PIXELS, E.min.x), N.pixelStorei(N.UNPACK_SKIP_ROWS, E.min.y), N.pixelStorei(N.UNPACK_SKIP_IMAGES, E.min.z), B.isDataTexture || B.isData3DTexture ? N.texSubImage3D(Ne, O, U.x, U.y, U.z, de, Se, Le, Ue, Ge, Je.data) : B.isCompressedArrayTexture ? (console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."), N.compressedTexSubImage3D(Ne, O, U.x, U.y, U.z, de, Se, Le, Ue, Je.data)) : N.texSubImage3D(Ne, O, U.x, U.y, U.z, de, Se, Le, Ue, Ge, Je), N.pixelStorei(N.UNPACK_ROW_LENGTH, Oe), N.pixelStorei(N.UNPACK_IMAGE_HEIGHT, it), N.pixelStorei(N.UNPACK_SKIP_PIXELS, St), N.pixelStorei(N.UNPACK_SKIP_ROWS, ct), N.pixelStorei(N.UNPACK_SKIP_IMAGES, Vt), O === 0 && G.generateMipmaps && N.generateMipmap(Ne), pe.unbindTexture(); + }, this.initTexture = function(E) { + E.isCubeTexture ? M.setTextureCube(E, 0) : E.isData3DTexture ? M.setTexture3D(E, 0) : E.isDataArrayTexture || E.isCompressedArrayTexture ? M.setTexture2DArray(E, 0) : M.setTexture2D(E, 0), pe.unbindTexture(); + }, this.resetState = function() { + D = 0, C = 0, A = null, pe.reset(), T.reset(); + }, typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", { detail: this })); + } + get coordinateSystem() { + return Zt; + } + get outputColorSpace() { + return this._outputColorSpace; + } + set outputColorSpace(e) { + this._outputColorSpace = e; + const t = this.getContext(); + t.drawingBufferColorSpace = e === os ? "display-p3" : "srgb", t.unpackColorSpace = Ke.workingColorSpace === sr ? "display-p3" : "srgb"; + } + get outputEncoding() { + return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."), this.outputColorSpace === ht ? Tn : go; + } + set outputEncoding(e) { + console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."), this.outputColorSpace = e === Tn ? ht : $t; + } + get useLegacyLights() { + return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."), this._useLegacyLights; + } + set useLegacyLights(e) { + console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."), this._useLegacyLights = e; + } +} +class Qf extends Go { +} +Qf.prototype.isWebGL1Renderer = !0; +class ir { + constructor(e, t = 25e-5) { + this.isFogExp2 = !0, this.name = "", this.color = new Xe(e), this.density = t; + } + clone() { + return new ir(this.color, this.density); + } + toJSON() { + return { + type: "FogExp2", + name: this.name, + color: this.color.getHex(), + density: this.density + }; + } +} +class Ha extends dt { + constructor() { + super(), this.isScene = !0, this.type = "Scene", this.background = null, this.environment = null, this.fog = null, this.backgroundBlurriness = 0, this.backgroundIntensity = 1, this.overrideMaterial = null, typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", { detail: this })); + } + copy(e, t) { + return super.copy(e, t), e.background !== null && (this.background = e.background.clone()), e.environment !== null && (this.environment = e.environment.clone()), e.fog !== null && (this.fog = e.fog.clone()), this.backgroundBlurriness = e.backgroundBlurriness, this.backgroundIntensity = e.backgroundIntensity, e.overrideMaterial !== null && (this.overrideMaterial = e.overrideMaterial.clone()), this.matrixAutoUpdate = e.matrixAutoUpdate, this; + } + toJSON(e) { + const t = super.toJSON(e); + return this.fog !== null && (t.object.fog = this.fog.toJSON()), this.backgroundBlurriness > 0 && (t.object.backgroundBlurriness = this.backgroundBlurriness), this.backgroundIntensity !== 1 && (t.object.backgroundIntensity = this.backgroundIntensity), t; + } +} +class Va extends Bt { + constructor(e, t, n, r = 1) { + super(e, t, n), this.isInstancedBufferAttribute = !0, this.meshPerAttribute = r; + } + copy(e) { + return super.copy(e), this.meshPerAttribute = e.meshPerAttribute, this; + } + toJSON() { + const e = super.toJSON(); + return e.meshPerAttribute = this.meshPerAttribute, e.isInstancedBufferAttribute = !0, e; + } +} +const jn = /* @__PURE__ */ new Qe(), ka = /* @__PURE__ */ new Qe(), Yi = [], Wa = /* @__PURE__ */ new Cn(), ep = /* @__PURE__ */ new Qe(), di = /* @__PURE__ */ new Ot(), fi = /* @__PURE__ */ new xi(); +class Xa extends Ot { + constructor(e, t, n) { + super(e, t), this.isInstancedMesh = !0, this.instanceMatrix = new Va(new Float32Array(n * 16), 16), this.instanceColor = null, this.count = n, this.boundingBox = null, this.boundingSphere = null; + for (let r = 0; r < n; r++) + this.setMatrixAt(r, ep); + } + computeBoundingBox() { + const e = this.geometry, t = this.count; + this.boundingBox === null && (this.boundingBox = new Cn()), e.boundingBox === null && e.computeBoundingBox(), this.boundingBox.makeEmpty(); + for (let n = 0; n < t; n++) + this.getMatrixAt(n, jn), Wa.copy(e.boundingBox).applyMatrix4(jn), this.boundingBox.union(Wa); + } + computeBoundingSphere() { + const e = this.geometry, t = this.count; + this.boundingSphere === null && (this.boundingSphere = new xi()), e.boundingSphere === null && e.computeBoundingSphere(), this.boundingSphere.makeEmpty(); + for (let n = 0; n < t; n++) + this.getMatrixAt(n, jn), fi.copy(e.boundingSphere).applyMatrix4(jn), this.boundingSphere.union(fi); + } + copy(e, t) { + return super.copy(e, t), this.instanceMatrix.copy(e.instanceMatrix), e.instanceColor !== null && (this.instanceColor = e.instanceColor.clone()), this.count = e.count, e.boundingBox !== null && (this.boundingBox = e.boundingBox.clone()), e.boundingSphere !== null && (this.boundingSphere = e.boundingSphere.clone()), this; + } + getColorAt(e, t) { + t.fromArray(this.instanceColor.array, e * 3); + } + getMatrixAt(e, t) { + t.fromArray(this.instanceMatrix.array, e * 16); + } + raycast(e, t) { + const n = this.matrixWorld, r = this.count; + if (di.geometry = this.geometry, di.material = this.material, di.material !== void 0 && (this.boundingSphere === null && this.computeBoundingSphere(), fi.copy(this.boundingSphere), fi.applyMatrix4(n), e.ray.intersectsSphere(fi) !== !1)) + for (let s = 0; s < r; s++) { + this.getMatrixAt(s, jn), ka.multiplyMatrices(n, jn), di.matrixWorld = ka, di.raycast(e, Yi); + for (let o = 0, a = Yi.length; o < a; o++) { + const l = Yi[o]; + l.instanceId = s, l.object = this, t.push(l); + } + Yi.length = 0; + } + } + setColorAt(e, t) { + this.instanceColor === null && (this.instanceColor = new Va(new Float32Array(this.instanceMatrix.count * 3), 3)), t.toArray(this.instanceColor.array, e * 3); + } + setMatrixAt(e, t) { + t.toArray(this.instanceMatrix.array, e * 16); + } + updateMorphTargets() { + } + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +} +class ds extends hn { + constructor(e = 1, t = 0.4, n = 12, r = 48, s = Math.PI * 2) { + super(), this.type = "TorusGeometry", this.parameters = { + radius: e, + tube: t, + radialSegments: n, + tubularSegments: r, + arc: s + }, n = Math.floor(n), r = Math.floor(r); + const o = [], a = [], l = [], c = [], h = new P(), d = new P(), p = new P(); + for (let m = 0; m <= n; m++) + for (let g = 0; g <= r; g++) { + const v = g / r * s, f = m / n * Math.PI * 2; + d.x = (e + t * Math.cos(f)) * Math.cos(v), d.y = (e + t * Math.cos(f)) * Math.sin(v), d.z = t * Math.sin(f), a.push(d.x, d.y, d.z), h.x = e * Math.cos(v), h.y = e * Math.sin(v), p.subVectors(d, h).normalize(), l.push(p.x, p.y, p.z), c.push(g / r), c.push(m / n); + } + for (let m = 1; m <= n; m++) + for (let g = 1; g <= r; g++) { + const v = (r + 1) * m + g - 1, f = (r + 1) * (m - 1) + g - 1, u = (r + 1) * (m - 1) + g, b = (r + 1) * m + g; + o.push(v, f, b), o.push(f, u, b); + } + this.setIndex(o), this.setAttribute("position", new Ht(a, 3)), this.setAttribute("normal", new Ht(l, 3)), this.setAttribute("uv", new Ht(c, 2)); + } + copy(e) { + return super.copy(e), this.parameters = Object.assign({}, e.parameters), this; + } + static fromJSON(e) { + return new ds(e.radius, e.tube, e.radialSegments, e.tubularSegments, e.arc); + } +} +class qa extends Mi { + constructor(e) { + super(), this.isMeshStandardMaterial = !0, this.defines = { STANDARD: "" }, this.type = "MeshStandardMaterial", this.color = new Xe(16777215), this.roughness = 1, this.metalness = 0, this.map = null, this.lightMap = null, this.lightMapIntensity = 1, this.aoMap = null, this.aoMapIntensity = 1, this.emissive = new Xe(0), this.emissiveIntensity = 1, this.emissiveMap = null, this.bumpMap = null, this.bumpScale = 1, this.normalMap = null, this.normalMapType = vo, this.normalScale = new Ie(1, 1), this.displacementMap = null, this.displacementScale = 1, this.displacementBias = 0, this.roughnessMap = null, this.metalnessMap = null, this.alphaMap = null, this.envMap = null, this.envMapIntensity = 1, this.wireframe = !1, this.wireframeLinewidth = 1, this.wireframeLinecap = "round", this.wireframeLinejoin = "round", this.flatShading = !1, this.fog = !0, this.setValues(e); + } + copy(e) { + return super.copy(e), this.defines = { STANDARD: "" }, this.color.copy(e.color), this.roughness = e.roughness, this.metalness = e.metalness, this.map = e.map, this.lightMap = e.lightMap, this.lightMapIntensity = e.lightMapIntensity, this.aoMap = e.aoMap, this.aoMapIntensity = e.aoMapIntensity, this.emissive.copy(e.emissive), this.emissiveMap = e.emissiveMap, this.emissiveIntensity = e.emissiveIntensity, this.bumpMap = e.bumpMap, this.bumpScale = e.bumpScale, this.normalMap = e.normalMap, this.normalMapType = e.normalMapType, this.normalScale.copy(e.normalScale), this.displacementMap = e.displacementMap, this.displacementScale = e.displacementScale, this.displacementBias = e.displacementBias, this.roughnessMap = e.roughnessMap, this.metalnessMap = e.metalnessMap, this.alphaMap = e.alphaMap, this.envMap = e.envMap, this.envMapIntensity = e.envMapIntensity, this.wireframe = e.wireframe, this.wireframeLinewidth = e.wireframeLinewidth, this.wireframeLinecap = e.wireframeLinecap, this.wireframeLinejoin = e.wireframeLinejoin, this.flatShading = e.flatShading, this.fog = e.fog, this; + } +} +class fs extends dt { + constructor(e, t = 1) { + super(), this.isLight = !0, this.type = "Light", this.color = new Xe(e), this.intensity = t; + } + dispose() { + } + copy(e, t) { + return super.copy(e, t), this.color.copy(e.color), this.intensity = e.intensity, this; + } + toJSON(e) { + const t = super.toJSON(e); + return t.object.color = this.color.getHex(), t.object.intensity = this.intensity, this.groundColor !== void 0 && (t.object.groundColor = this.groundColor.getHex()), this.distance !== void 0 && (t.object.distance = this.distance), this.angle !== void 0 && (t.object.angle = this.angle), this.decay !== void 0 && (t.object.decay = this.decay), this.penumbra !== void 0 && (t.object.penumbra = this.penumbra), this.shadow !== void 0 && (t.object.shadow = this.shadow.toJSON()), t; + } +} +const Wr = /* @__PURE__ */ new Qe(), Ya = /* @__PURE__ */ new P(), ja = /* @__PURE__ */ new P(); +class Ho { + constructor(e) { + this.camera = e, this.bias = 0, this.normalBias = 0, this.radius = 1, this.blurSamples = 8, this.mapSize = new Ie(512, 512), this.map = null, this.mapPass = null, this.matrix = new Qe(), this.autoUpdate = !0, this.needsUpdate = !1, this._frustum = new cs(), this._frameExtents = new Ie(1, 1), this._viewportCount = 1, this._viewports = [ + new $e(0, 0, 1, 1) + ]; + } + getViewportCount() { + return this._viewportCount; + } + getFrustum() { + return this._frustum; + } + updateMatrices(e) { + const t = this.camera, n = this.matrix; + Ya.setFromMatrixPosition(e.matrixWorld), t.position.copy(Ya), ja.setFromMatrixPosition(e.target.matrixWorld), t.lookAt(ja), t.updateMatrixWorld(), Wr.multiplyMatrices(t.projectionMatrix, t.matrixWorldInverse), this._frustum.setFromProjectionMatrix(Wr), n.set( + 0.5, + 0, + 0, + 0.5, + 0, + 0.5, + 0, + 0.5, + 0, + 0, + 0.5, + 0.5, + 0, + 0, + 0, + 1 + ), n.multiply(Wr); + } + getViewport(e) { + return this._viewports[e]; + } + getFrameExtents() { + return this._frameExtents; + } + dispose() { + this.map && this.map.dispose(), this.mapPass && this.mapPass.dispose(); + } + copy(e) { + return this.camera = e.camera.clone(), this.bias = e.bias, this.radius = e.radius, this.mapSize.copy(e.mapSize), this; + } + clone() { + return new this.constructor().copy(this); + } + toJSON() { + const e = {}; + return this.bias !== 0 && (e.bias = this.bias), this.normalBias !== 0 && (e.normalBias = this.normalBias), this.radius !== 1 && (e.radius = this.radius), (this.mapSize.x !== 512 || this.mapSize.y !== 512) && (e.mapSize = this.mapSize.toArray()), e.camera = this.camera.toJSON(!1).object, delete e.camera.matrix, e; + } +} +const Ka = /* @__PURE__ */ new Qe(), pi = /* @__PURE__ */ new P(), Xr = /* @__PURE__ */ new P(); +class tp extends Ho { + constructor() { + super(new Tt(90, 1, 0.5, 500)), this.isPointLightShadow = !0, this._frameExtents = new Ie(4, 2), this._viewportCount = 6, this._viewports = [ + // These viewports map a cube-map onto a 2D texture with the + // following orientation: + // + // xzXZ + // y Y + // + // X - Positive x direction + // x - Negative x direction + // Y - Positive y direction + // y - Negative y direction + // Z - Positive z direction + // z - Negative z direction + // positive X + new $e(2, 1, 1, 1), + // negative X + new $e(0, 1, 1, 1), + // positive Z + new $e(3, 1, 1, 1), + // negative Z + new $e(1, 1, 1, 1), + // positive Y + new $e(3, 0, 1, 1), + // negative Y + new $e(1, 0, 1, 1) + ], this._cubeDirections = [ + new P(1, 0, 0), + new P(-1, 0, 0), + new P(0, 0, 1), + new P(0, 0, -1), + new P(0, 1, 0), + new P(0, -1, 0) + ], this._cubeUps = [ + new P(0, 1, 0), + new P(0, 1, 0), + new P(0, 1, 0), + new P(0, 1, 0), + new P(0, 0, 1), + new P(0, 0, -1) + ]; + } + updateMatrices(e, t = 0) { + const n = this.camera, r = this.matrix, s = e.distance || n.far; + s !== n.far && (n.far = s, n.updateProjectionMatrix()), pi.setFromMatrixPosition(e.matrixWorld), n.position.copy(pi), Xr.copy(n.position), Xr.add(this._cubeDirections[t]), n.up.copy(this._cubeUps[t]), n.lookAt(Xr), n.updateMatrixWorld(), r.makeTranslation(-pi.x, -pi.y, -pi.z), Ka.multiplyMatrices(n.projectionMatrix, n.matrixWorldInverse), this._frustum.setFromProjectionMatrix(Ka); + } +} +class Za extends fs { + constructor(e, t, n = 0, r = 2) { + super(e, t), this.isPointLight = !0, this.type = "PointLight", this.distance = n, this.decay = r, this.shadow = new tp(); + } + get power() { + return this.intensity * 4 * Math.PI; + } + set power(e) { + this.intensity = e / (4 * Math.PI); + } + dispose() { + this.shadow.dispose(); + } + copy(e, t) { + return super.copy(e, t), this.distance = e.distance, this.decay = e.decay, this.shadow = e.shadow.clone(), this; + } +} +class np extends Ho { + constructor() { + super(new Uo(-5, 5, 5, -5, 0.5, 500)), this.isDirectionalLightShadow = !0; + } +} +class ip extends fs { + constructor(e, t) { + super(e, t), this.isDirectionalLight = !0, this.type = "DirectionalLight", this.position.copy(dt.DEFAULT_UP), this.updateMatrix(), this.target = new dt(), this.shadow = new np(); + } + dispose() { + this.shadow.dispose(); + } + copy(e) { + return super.copy(e), this.target = e.target.clone(), this.shadow = e.shadow.clone(), this; + } +} +class rp extends fs { + constructor(e, t) { + super(e, t), this.isAmbientLight = !0, this.type = "AmbientLight"; + } +} +class $a { + constructor(e = 1, t = 0, n = 0) { + return this.radius = e, this.phi = t, this.theta = n, this; + } + set(e, t, n) { + return this.radius = e, this.phi = t, this.theta = n, this; + } + copy(e) { + return this.radius = e.radius, this.phi = e.phi, this.theta = e.theta, this; + } + // restrict phi to be between EPS and PI-EPS + makeSafe() { + return this.phi = Math.max(1e-6, Math.min(Math.PI - 1e-6, this.phi)), this; + } + setFromVector3(e) { + return this.setFromCartesianCoords(e.x, e.y, e.z); + } + setFromCartesianCoords(e, t, n) { + return this.radius = Math.sqrt(e * e + t * t + n * n), this.radius === 0 ? (this.theta = 0, this.phi = 0) : (this.theta = Math.atan2(e, n), this.phi = Math.acos(vt(t / this.radius, -1, 1))), this; + } + clone() { + return new this.constructor().copy(this); + } +} +typeof __THREE_DEVTOOLS__ < "u" && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register", { detail: { + revision: ss +} })); +typeof window < "u" && (window.__THREE__ ? console.warn("WARNING: Multiple instances of Three.js being imported.") : window.__THREE__ = ss); +const Ja = { type: "change" }, qr = { type: "start" }, Qa = { type: "end" }, ji = new To(), eo = new rn(), sp = Math.cos(70 * ql.DEG2RAD); +class ap extends Rn { + constructor(e, t) { + super(), this.object = e, this.domElement = t, this.domElement.style.touchAction = "none", this.enabled = !0, this.target = new P(), this.cursor = new P(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: Ln.ROTATE, MIDDLE: Ln.DOLLY, RIGHT: Ln.PAN }, this.touches = { ONE: Pn.ROTATE, TWO: Pn.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this.getPolarAngle = function() { + return a.phi; + }, this.getAzimuthalAngle = function() { + return a.theta; + }, this.getDistance = function() { + return this.object.position.distanceTo(this.target); + }, this.listenToKeyEvents = function(T) { + T.addEventListener("keydown", ye), this._domElementKeyEvents = T; + }, this.stopListenToKeyEvents = function() { + this._domElementKeyEvents.removeEventListener("keydown", ye), this._domElementKeyEvents = null; + }, this.saveState = function() { + n.target0.copy(n.target), n.position0.copy(n.object.position), n.zoom0 = n.object.zoom; + }, this.reset = function() { + n.target.copy(n.target0), n.object.position.copy(n.position0), n.object.zoom = n.zoom0, n.object.updateProjectionMatrix(), n.dispatchEvent(Ja), n.update(), s = r.NONE; + }, this.update = function() { + const T = new P(), ne = new An().setFromUnitVectors(e.up, new P(0, 1, 0)), xe = ne.clone().invert(), fe = new P(), te = new An(), w = new P(), ie = 2 * Math.PI; + return function(Ce = null) { + const Te = n.object.position; + T.copy(Te).sub(n.target), T.applyQuaternion(ne), a.setFromVector3(T), n.autoRotate && s === r.NONE && Z(y(Ce)), n.enableDamping ? (a.theta += l.theta * n.dampingFactor, a.phi += l.phi * n.dampingFactor) : (a.theta += l.theta, a.phi += l.phi); + let ke = n.minAzimuthAngle, We = n.maxAzimuthAngle; + isFinite(ke) && isFinite(We) && (ke < -Math.PI ? ke += ie : ke > Math.PI && (ke -= ie), We < -Math.PI ? We += ie : We > Math.PI && (We -= ie), ke <= We ? a.theta = Math.max(ke, Math.min(We, a.theta)) : a.theta = a.theta > (ke + We) / 2 ? Math.max(ke, a.theta) : Math.min(We, a.theta)), a.phi = Math.max(n.minPolarAngle, Math.min(n.maxPolarAngle, a.phi)), a.makeSafe(), n.enableDamping === !0 ? n.target.addScaledVector(h, n.dampingFactor) : n.target.add(h), n.target.sub(n.cursor), n.target.clampLength(n.minTargetRadius, n.maxTargetRadius), n.target.add(n.cursor), n.zoomToCursor && C || n.object.isOrthographicCamera ? a.radius = q(a.radius) : a.radius = q(a.radius * c), T.setFromSpherical(a), T.applyQuaternion(xe), Te.copy(n.target).add(T), n.object.lookAt(n.target), n.enableDamping === !0 ? (l.theta *= 1 - n.dampingFactor, l.phi *= 1 - n.dampingFactor, h.multiplyScalar(1 - n.dampingFactor)) : (l.set(0, 0, 0), h.set(0, 0, 0)); + let et = !1; + if (n.zoomToCursor && C) { + let nt = null; + if (n.object.isPerspectiveCamera) { + const qe = T.length(); + nt = q(qe * c); + const st = qe - nt; + n.object.position.addScaledVector(R, st), n.object.updateMatrixWorld(); + } else if (n.object.isOrthographicCamera) { + const qe = new P(D.x, D.y, 0); + qe.unproject(n.object), n.object.zoom = Math.max(n.minZoom, Math.min(n.maxZoom, n.object.zoom / c)), n.object.updateProjectionMatrix(), et = !0; + const st = new P(D.x, D.y, 0); + st.unproject(n.object), n.object.position.sub(st).add(qe), n.object.updateMatrixWorld(), nt = T.length(); + } else + console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), n.zoomToCursor = !1; + nt !== null && (this.screenSpacePanning ? n.target.set(0, 0, -1).transformDirection(n.object.matrix).multiplyScalar(nt).add(n.object.position) : (ji.origin.copy(n.object.position), ji.direction.set(0, 0, -1).transformDirection(n.object.matrix), Math.abs(n.object.up.dot(ji.direction)) < sp ? e.lookAt(n.target) : (eo.setFromNormalAndCoplanarPoint(n.object.up, n.target), ji.intersectPlane(eo, n.target)))); + } else n.object.isOrthographicCamera && (n.object.zoom = Math.max(n.minZoom, Math.min(n.maxZoom, n.object.zoom / c)), n.object.updateProjectionMatrix(), et = !0); + return c = 1, C = !1, et || fe.distanceToSquared(n.object.position) > o || 8 * (1 - te.dot(n.object.quaternion)) > o || w.distanceToSquared(n.target) > 0 ? (n.dispatchEvent(Ja), fe.copy(n.object.position), te.copy(n.object.quaternion), w.copy(n.target), !0) : !1; + }; + }(), this.dispose = function() { + n.domElement.removeEventListener("contextmenu", Ye), n.domElement.removeEventListener("pointerdown", M), n.domElement.removeEventListener("pointercancel", I), n.domElement.removeEventListener("wheel", J), n.domElement.removeEventListener("pointermove", _), n.domElement.removeEventListener("pointerup", I), n._domElementKeyEvents !== null && (n._domElementKeyEvents.removeEventListener("keydown", ye), n._domElementKeyEvents = null); + }; + const n = this, r = { + NONE: -1, + ROTATE: 0, + DOLLY: 1, + PAN: 2, + TOUCH_ROTATE: 3, + TOUCH_PAN: 4, + TOUCH_DOLLY_PAN: 5, + TOUCH_DOLLY_ROTATE: 6 + }; + let s = r.NONE; + const o = 1e-6, a = new $a(), l = new $a(); + let c = 1; + const h = new P(), d = new Ie(), p = new Ie(), m = new Ie(), g = new Ie(), v = new Ie(), f = new Ie(), u = new Ie(), b = new Ie(), S = new Ie(), R = new P(), D = new Ie(); + let C = !1; + const A = [], W = {}; + let x = !1; + function y(T) { + return T !== null ? 2 * Math.PI / 60 * n.autoRotateSpeed * T : 2 * Math.PI / 60 / 60 * n.autoRotateSpeed; + } + function z(T) { + const ne = Math.abs(T * 0.01); + return Math.pow(0.95, n.zoomSpeed * ne); + } + function Z(T) { + l.theta -= T; + } + function re(T) { + l.phi -= T; + } + const L = function() { + const T = new P(); + return function(xe, fe) { + T.setFromMatrixColumn(fe, 0), T.multiplyScalar(-xe), h.add(T); + }; + }(), F = function() { + const T = new P(); + return function(xe, fe) { + n.screenSpacePanning === !0 ? T.setFromMatrixColumn(fe, 1) : (T.setFromMatrixColumn(fe, 0), T.crossVectors(n.object.up, T)), T.multiplyScalar(xe), h.add(T); + }; + }(), V = function() { + const T = new P(); + return function(xe, fe) { + const te = n.domElement; + if (n.object.isPerspectiveCamera) { + const w = n.object.position; + T.copy(w).sub(n.target); + let ie = T.length(); + ie *= Math.tan(n.object.fov / 2 * Math.PI / 180), L(2 * xe * ie / te.clientHeight, n.object.matrix), F(2 * fe * ie / te.clientHeight, n.object.matrix); + } else n.object.isOrthographicCamera ? (L(xe * (n.object.right - n.object.left) / n.object.zoom / te.clientWidth, n.object.matrix), F(fe * (n.object.top - n.object.bottom) / n.object.zoom / te.clientHeight, n.object.matrix)) : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."), n.enablePan = !1); + }; + }(); + function Y(T) { + n.object.isPerspectiveCamera || n.object.isOrthographicCamera ? c /= T : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), n.enableZoom = !1); + } + function X(T) { + n.object.isPerspectiveCamera || n.object.isOrthographicCamera ? c *= T : (console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."), n.enableZoom = !1); + } + function k(T, ne) { + if (!n.zoomToCursor) + return; + C = !0; + const xe = n.domElement.getBoundingClientRect(), fe = T - xe.left, te = ne - xe.top, w = xe.width, ie = xe.height; + D.x = fe / w * 2 - 1, D.y = -(te / ie) * 2 + 1, R.set(D.x, D.y, 1).unproject(n.object).sub(n.object.position).normalize(); + } + function q(T) { + return Math.max(n.minDistance, Math.min(n.maxDistance, T)); + } + function Q(T) { + d.set(T.clientX, T.clientY); + } + function ce(T) { + k(T.clientX, T.clientX), u.set(T.clientX, T.clientY); + } + function H(T) { + g.set(T.clientX, T.clientY); + } + function j(T) { + p.set(T.clientX, T.clientY), m.subVectors(p, d).multiplyScalar(n.rotateSpeed); + const ne = n.domElement; + Z(2 * Math.PI * m.x / ne.clientHeight), re(2 * Math.PI * m.y / ne.clientHeight), d.copy(p), n.update(); + } + function oe(T) { + b.set(T.clientX, T.clientY), S.subVectors(b, u), S.y > 0 ? Y(z(S.y)) : S.y < 0 && X(z(S.y)), u.copy(b), n.update(); + } + function ve(T) { + v.set(T.clientX, T.clientY), f.subVectors(v, g).multiplyScalar(n.panSpeed), V(f.x, f.y), g.copy(v), n.update(); + } + function _e(T) { + k(T.clientX, T.clientY), T.deltaY < 0 ? X(z(T.deltaY)) : T.deltaY > 0 && Y(z(T.deltaY)), n.update(); + } + function we(T) { + let ne = !1; + switch (T.code) { + case n.keys.UP: + T.ctrlKey || T.metaKey || T.shiftKey ? re(2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(0, n.keyPanSpeed), ne = !0; + break; + case n.keys.BOTTOM: + T.ctrlKey || T.metaKey || T.shiftKey ? re(-2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(0, -n.keyPanSpeed), ne = !0; + break; + case n.keys.LEFT: + T.ctrlKey || T.metaKey || T.shiftKey ? Z(2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(n.keyPanSpeed, 0), ne = !0; + break; + case n.keys.RIGHT: + T.ctrlKey || T.metaKey || T.shiftKey ? Z(-2 * Math.PI * n.rotateSpeed / n.domElement.clientHeight) : V(-n.keyPanSpeed, 0), ne = !0; + break; + } + ne && (T.preventDefault(), n.update()); + } + function Ae(T) { + if (A.length === 1) + d.set(T.pageX, T.pageY); + else { + const ne = ue(T), xe = 0.5 * (T.pageX + ne.x), fe = 0.5 * (T.pageY + ne.y); + d.set(xe, fe); + } + } + function ge(T) { + if (A.length === 1) + g.set(T.pageX, T.pageY); + else { + const ne = ue(T), xe = 0.5 * (T.pageX + ne.x), fe = 0.5 * (T.pageY + ne.y); + g.set(xe, fe); + } + } + function Pe(T) { + const ne = ue(T), xe = T.pageX - ne.x, fe = T.pageY - ne.y, te = Math.sqrt(xe * xe + fe * fe); + u.set(0, te); + } + function N(T) { + n.enableZoom && Pe(T), n.enablePan && ge(T); + } + function rt(T) { + n.enableZoom && Pe(T), n.enableRotate && Ae(T); + } + function Me(T) { + if (A.length == 1) + p.set(T.pageX, T.pageY); + else { + const xe = ue(T), fe = 0.5 * (T.pageX + xe.x), te = 0.5 * (T.pageY + xe.y); + p.set(fe, te); + } + m.subVectors(p, d).multiplyScalar(n.rotateSpeed); + const ne = n.domElement; + Z(2 * Math.PI * m.x / ne.clientHeight), re(2 * Math.PI * m.y / ne.clientHeight), d.copy(p); + } + function Re(T) { + if (A.length === 1) + v.set(T.pageX, T.pageY); + else { + const ne = ue(T), xe = 0.5 * (T.pageX + ne.x), fe = 0.5 * (T.pageY + ne.y); + v.set(xe, fe); + } + f.subVectors(v, g).multiplyScalar(n.panSpeed), V(f.x, f.y), g.copy(v); + } + function pe(T) { + const ne = ue(T), xe = T.pageX - ne.x, fe = T.pageY - ne.y, te = Math.sqrt(xe * xe + fe * fe); + b.set(0, te), S.set(0, Math.pow(b.y / u.y, n.zoomSpeed)), Y(S.y), u.copy(b); + const w = (T.pageX + ne.x) * 0.5, ie = (T.pageY + ne.y) * 0.5; + k(w, ie); + } + function je(T) { + n.enableZoom && pe(T), n.enablePan && Re(T); + } + function be(T) { + n.enableZoom && pe(T), n.enableRotate && Me(T); + } + function M(T) { + n.enabled !== !1 && (A.length === 0 && (n.domElement.setPointerCapture(T.pointerId), n.domElement.addEventListener("pointermove", _), n.domElement.addEventListener("pointerup", I)), ze(T), T.pointerType === "touch" ? Fe(T) : $(T)); + } + function _(T) { + n.enabled !== !1 && (T.pointerType === "touch" ? ee(T) : K(T)); + } + function I(T) { + De(T), A.length === 0 && (n.domElement.releasePointerCapture(T.pointerId), n.domElement.removeEventListener("pointermove", _), n.domElement.removeEventListener("pointerup", I)), n.dispatchEvent(Qa), s = r.NONE; + } + function $(T) { + let ne; + switch (T.button) { + case 0: + ne = n.mouseButtons.LEFT; + break; + case 1: + ne = n.mouseButtons.MIDDLE; + break; + case 2: + ne = n.mouseButtons.RIGHT; + break; + default: + ne = -1; + } + switch (ne) { + case Ln.DOLLY: + if (n.enableZoom === !1) return; + ce(T), s = r.DOLLY; + break; + case Ln.ROTATE: + if (T.ctrlKey || T.metaKey || T.shiftKey) { + if (n.enablePan === !1) return; + H(T), s = r.PAN; + } else { + if (n.enableRotate === !1) return; + Q(T), s = r.ROTATE; + } + break; + case Ln.PAN: + if (T.ctrlKey || T.metaKey || T.shiftKey) { + if (n.enableRotate === !1) return; + Q(T), s = r.ROTATE; + } else { + if (n.enablePan === !1) return; + H(T), s = r.PAN; + } + break; + default: + s = r.NONE; + } + s !== r.NONE && n.dispatchEvent(qr); + } + function K(T) { + switch (s) { + case r.ROTATE: + if (n.enableRotate === !1) return; + j(T); + break; + case r.DOLLY: + if (n.enableZoom === !1) return; + oe(T); + break; + case r.PAN: + if (n.enablePan === !1) return; + ve(T); + break; + } + } + function J(T) { + n.enabled === !1 || n.enableZoom === !1 || s !== r.NONE || (T.preventDefault(), n.dispatchEvent(qr), _e(me(T)), n.dispatchEvent(Qa)); + } + function me(T) { + const ne = T.deltaMode, xe = { + clientX: T.clientX, + clientY: T.clientY, + deltaY: T.deltaY + }; + switch (ne) { + case 1: + xe.deltaY *= 16; + break; + case 2: + xe.deltaY *= 100; + break; + } + return T.ctrlKey && !x && (xe.deltaY *= 10), xe; + } + function ae(T) { + T.key === "Control" && (x = !0, document.addEventListener("keyup", he, { passive: !0, capture: !0 })); + } + function he(T) { + T.key === "Control" && (x = !1, document.removeEventListener("keyup", he, { passive: !0, capture: !0 })); + } + function ye(T) { + n.enabled === !1 || n.enablePan === !1 || we(T); + } + function Fe(T) { + switch (Ee(T), A.length) { + case 1: + switch (n.touches.ONE) { + case Pn.ROTATE: + if (n.enableRotate === !1) return; + Ae(T), s = r.TOUCH_ROTATE; + break; + case Pn.PAN: + if (n.enablePan === !1) return; + ge(T), s = r.TOUCH_PAN; + break; + default: + s = r.NONE; + } + break; + case 2: + switch (n.touches.TWO) { + case Pn.DOLLY_PAN: + if (n.enableZoom === !1 && n.enablePan === !1) return; + N(T), s = r.TOUCH_DOLLY_PAN; + break; + case Pn.DOLLY_ROTATE: + if (n.enableZoom === !1 && n.enableRotate === !1) return; + rt(T), s = r.TOUCH_DOLLY_ROTATE; + break; + default: + s = r.NONE; + } + break; + default: + s = r.NONE; + } + s !== r.NONE && n.dispatchEvent(qr); + } + function ee(T) { + switch (Ee(T), s) { + case r.TOUCH_ROTATE: + if (n.enableRotate === !1) return; + Me(T), n.update(); + break; + case r.TOUCH_PAN: + if (n.enablePan === !1) return; + Re(T), n.update(); + break; + case r.TOUCH_DOLLY_PAN: + if (n.enableZoom === !1 && n.enablePan === !1) return; + je(T), n.update(); + break; + case r.TOUCH_DOLLY_ROTATE: + if (n.enableZoom === !1 && n.enableRotate === !1) return; + be(T), n.update(); + break; + default: + s = r.NONE; + } + } + function Ye(T) { + n.enabled !== !1 && T.preventDefault(); + } + function ze(T) { + A.push(T.pointerId); + } + function De(T) { + delete W[T.pointerId]; + for (let ne = 0; ne < A.length; ne++) + if (A[ne] == T.pointerId) { + A.splice(ne, 1); + return; + } + } + function Ee(T) { + let ne = W[T.pointerId]; + ne === void 0 && (ne = new Ie(), W[T.pointerId] = ne), ne.set(T.pageX, T.pageY); + } + function ue(T) { + const ne = T.pointerId === A[0] ? A[1] : A[0]; + return W[ne]; + } + n.domElement.addEventListener("contextmenu", Ye), n.domElement.addEventListener("pointerdown", M), n.domElement.addEventListener("pointercancel", I), n.domElement.addEventListener("wheel", J, { passive: !1 }), document.addEventListener("keydown", ae, { passive: !0, capture: !0 }), this.update(); + } +} +const op = "_wrapper_1xs2z_1", lp = "_canvasShell_1xs2z_28", cp = "_canvas_1xs2z_28", up = "_viewportLabels_1xs2z_48", hp = "_splitLabel_1xs2z_61", dp = "_controlOverlay_1xs2z_73", fp = "_resolutionCard_1xs2z_83", pp = "_resolutionControl_1xs2z_97", mp = "_slider_1xs2z_105", _p = "_sliderValue_1xs2z_111", Ut = { + wrapper: op, + canvasShell: lp, + canvas: cp, + viewportLabels: up, + splitLabel: hp, + controlOverlay: dp, + resolutionCard: fp, + resolutionControl: pp, + slider: mp, + sliderValue: _p +}, gp = 24, to = new P(20, 20, 20), no = new P(0, 0, 0), vp = 5e3, Yr = "#f2f0ea", xp = (i, e, t) => Math.min(t, Math.max(e, i)), jr = (i, e, t, n, r = 1) => { + if (typeof i != "number" || Number.isNaN(i)) return e; + const s = Math.round(i / r) * r; + return xp(s, t, n); +}; +function io(i) { + const e = new rp(16777215, 0.65); + i.add(e); + const t = new ip(16777215, 1.1); + t.position.set(20, 50, 20), t.castShadow = !0, t.shadow.mapSize.width = 2048, t.shadow.mapSize.height = 2048, i.add(t); + const n = new Za(3900150, 1.1, 50); + n.position.set(-10, 10, -10), i.add(n); + const r = new Za(16743001, 0.9, 50); + r.position.set(10, -10, 10), i.add(r); +} +function Mp(i) { + if (Array.isArray(i)) { + i.forEach((e) => e.dispose()); + return; + } + i.dispose(); +} +function ro(i) { + i.traverse((e) => { + const t = e; + t.geometry && t.geometry.dispose(), t.material && Mp(t.material); + }); +} +function yp({ + config: i, + onComplete: e, + onProgress: t, + theme: n, + className: r +}) { + const s = i.params ?? {}, o = jr(s.gridSize, 24, 12, 80, 1), a = jr(s.majorRadius, 8, 4, 10, 0.5), l = jr(s.minorRadius, 3, 1, 5, 0.25), [c, h] = Ms(o), [d, p] = Ms({ + layout: "landscape", + width: 0, + height: 0 + }), m = dr(null), g = dr(null), v = dr(!1); + ai(() => { + const R = m.current; + if (!R) return; + const D = () => { + const A = R.clientWidth, W = R.clientHeight; + if (!A || !W) return; + const x = A >= W ? "landscape" : "portrait"; + let y = A, z = W; + x === "landscape" ? (z = Math.min(W, A * (9 / 16)), y = z * (16 / 9)) : (y = Math.min(A, W / 2), z = y * 2), p({ + layout: x, + width: y, + height: z + }); + }, C = new ResizeObserver(D); + return C.observe(R), D(), () => { + C.disconnect(); + }; + }, []), ai(() => { + h(o), v.current = !1; + }, [i.id, o, a, l]); + const f = fr( + () => Math.max(gp, (a + l + 1.5) * 2), + [a, l] + ), u = fr(() => f / c, [f, c]); + ai(() => { + t == null || t(c === o ? 0 : 100); + }, [o, t, c]), ai(() => { + c === o || v.current || (v.current = !0, e({ + success: !0, + score: 100, + data: { + configId: i.id, + completedAt: (/* @__PURE__ */ new Date()).toISOString(), + params: { + gridSize: c, + majorRadius: a, + minorRadius: l + } + } + })); + }, [i.id, o, a, l, e, c]), ai(() => { + const R = g.current; + if (!R) return; + const D = new Ha(), C = new Ha(), A = new Xe(Yr); + D.background = A, D.fog = new ir(Yr, 0.02), C.background = A, C.fog = new ir(Yr, 0.02), io(D), io(C); + const W = new Tt(45, 1, 0.1, 1e3); + W.position.copy(to); + const x = new Go({ antialias: !0, alpha: !0 }); + x.shadowMap.enabled = !0, x.shadowMap.type = ao, x.setPixelRatio(Math.min(window.devicePixelRatio, 2)), x.setScissorTest(!0), R.appendChild(x.domElement); + const y = new ap(W, x.domElement); + y.enableDamping = !0, y.dampingFactor = 0.05, y.minDistance = 5, y.maxDistance = 100, y.target.copy(no); + const z = new ds(a, l, 64, 128), Z = new qa({ + color: 3900150, + roughness: 0.22, + metalness: 0.1 + }), re = new Ot(z, Z); + re.castShadow = !0, re.receiveShadow = !0, re.rotation.x = -Math.PI / 2, D.add(re); + const L = u * 0.12, F = Math.max(u - L, u * 0.2), V = new ii(F, F, F), Y = new qa({ + color: 3900150, + roughness: 0.22, + metalness: 0.1 + }), X = new ls({ + color: 0, + transparent: !0, + opacity: 0.08, + wireframe: !0 + }), k = Math.pow(c, 3), q = new Xa(V, Y, k), Q = new Xa(V, X, k), ce = (c - 1) * u / 2, H = new dt(); + q.castShadow = !0, q.receiveShadow = !0, C.add(q), C.add(Q); + let j = 0, oe = 0; + for (let be = 0; be < c; be += 1) + for (let M = 0; M < c; M += 1) + for (let _ = 0; _ < c; _ += 1) { + const I = be * u - ce, $ = M * u - ce, K = _ * u - ce, J = Math.sqrt(I * I + K * K) - a, ae = J * J + $ * $ < l * l; + if (H.position.set(I, $, K), H.updateMatrix(), ae) { + q.setMatrixAt(j, H.matrix); + const he = new Xe(), ye = 0.52 + $ / Math.max(c, 1) * 0.18; + he.setHSL(ye, 0.78, 0.52), q.setColorAt(j, he), j += 1; + continue; + } + Q.setMatrixAt(oe, H.matrix), oe += 1; + } + q.count = j, Q.count = oe, q.instanceMatrix.needsUpdate = !0, Q.instanceMatrix.needsUpdate = !0, q.instanceColor && (q.instanceColor.needsUpdate = !0); + const ve = to.clone(), _e = no.clone(); + let we = !1, Ae = null, ge = 0, Pe = 0; + const N = () => { + ge = R.clientWidth, Pe = R.clientHeight, !(!ge || !Pe) && (W.aspect = 1, W.updateProjectionMatrix(), x.setSize(ge, Pe, !1)); + }, rt = new ResizeObserver(N); + rt.observe(R), N(); + const Me = () => { + we = !1, Ae !== null && (window.clearTimeout(Ae), Ae = null); + }, Re = () => { + Ae = window.setTimeout(() => { + we = !0; + }, vp); + }; + y.addEventListener("start", Me), y.addEventListener("end", Re); + let pe = 0; + const je = () => { + if (pe = window.requestAnimationFrame(je), we && (W.position.lerp(ve, 0.05), y.target.lerp(_e, 0.05), W.position.distanceTo(ve) < 0.1 && y.target.distanceTo(_e) < 0.1 && (we = !1)), re.rotation.z += 2e-3, q.rotation.y += 2e-3, Q.rotation.y += 2e-3, Q.visible = !1, y.update(), !ge || !Pe) return; + const be = ge >= Pe, M = be ? Math.min(ge / 2, Pe) : Math.min(ge, Pe / 2), _ = be ? (ge - M * 2) / 2 : (ge - M) / 2, I = be ? (Pe - M) / 2 : (Pe - M * 2) / 2, $ = _, K = be ? I : I + M, J = be ? _ + M : _, me = I; + x.setScissor($, K, M, M), x.setViewport($, K, M, M), x.render(D, W), x.setScissor(J, me, M, M), x.setViewport(J, me, M, M), x.render(C, W); + }; + return je(), () => { + window.cancelAnimationFrame(pe), Ae !== null && window.clearTimeout(Ae), rt.disconnect(), y.removeEventListener("start", Me), y.removeEventListener("end", Re), y.dispose(), x.dispose(), ro(D), ro(C), R.removeChild(x.domElement); + }; + }, [a, l, c, u]); + const b = fr( + () => ({ + "--gc-primary": (n == null ? void 0 : n.primary) ?? "var(--color-primary, #45c4b0)", + "--gc-accent": (n == null ? void 0 : n.accent) ?? "var(--color-accent, #ff7a59)", + "--gc-bg": (n == null ? void 0 : n.bg) ?? "var(--color-bg, #0d1117)", + "--gc-bg-secondary": (n == null ? void 0 : n.bgSecondary) ?? "var(--color-bg-secondary, #182237)", + "--gc-text": (n == null ? void 0 : n.text) ?? "var(--color-text, #f1f4ef)", + "--gc-text-muted": (n == null ? void 0 : n.textMuted) ?? "var(--color-text-muted, #b6c0d4)", + "--gc-border": (n == null ? void 0 : n.border) ?? "var(--color-border, #34516f)" + }), + [n] + ), S = (R) => { + h(Number(R.target.value)); + }; + return /* @__PURE__ */ pn("div", { className: [Ut.wrapper, r].filter(Boolean).join(" "), style: b, ref: m, children: /* @__PURE__ */ yi( + "div", + { + className: Ut.canvasShell, + "data-layout": d.layout, + style: { + width: d.width ? `${d.width}px` : void 0, + height: d.height ? `${d.height}px` : void 0 + }, + children: [ + /* @__PURE__ */ pn("div", { className: Ut.canvas, ref: g }), + /* @__PURE__ */ yi("div", { className: Ut.viewportLabels, "data-layout": d.layout, children: [ + /* @__PURE__ */ pn("div", { className: Ut.splitLabel, children: "Continuous" }), + /* @__PURE__ */ pn("div", { className: Ut.splitLabel, children: "Discrete" }) + ] }), + /* @__PURE__ */ pn("div", { className: Ut.controlOverlay, children: /* @__PURE__ */ pn("label", { className: Ut.resolutionCard, children: /* @__PURE__ */ yi("span", { className: Ut.resolutionControl, children: [ + /* @__PURE__ */ pn( + "input", + { + className: Ut.slider, + type: "range", + min: "12", + max: "80", + step: "1", + value: c, + onChange: S + } + ), + /* @__PURE__ */ yi("span", { className: Ut.sliderValue, children: [ + u.toFixed(2), + "u" + ] }) + ] }) }) }) + ] + } + ) }); +} +const Tp = { + name: "voxel_universe", + displayName: "Voxel Universe", + version: "1.0.0", + paramSchema: { + gridSize: { + type: "range", + label: "Voxel Resolution", + description: "How many voxels are used per axis. Higher values make each voxel smaller.", + default: 24, + min: 12, + max: 80, + step: 1 + }, + majorRadius: { + type: "range", + label: "Major Radius", + description: "Overall radius of the torus shape.", + default: 8, + min: 4, + max: 10, + step: 0.5 + }, + minorRadius: { + type: "range", + label: "Minor Radius", + description: "Thickness of the torus ring.", + default: 3, + min: 1, + max: 5, + step: 0.25 + } + }, + defaultParams: { + gridSize: 24, + majorRadius: 8, + minorRadius: 3 + } +}; +export { + yp as default, + Tp as metadata +}; +//# sourceMappingURL=voxel_universe.js.map diff --git a/public/glitch/glitch_voxel_universe/voxel_universe.js.map b/public/glitch/glitch_voxel_universe/voxel_universe.js.map new file mode 100644 index 0000000..ad72beb --- /dev/null +++ b/public/glitch/glitch_voxel_universe/voxel_universe.js.map @@ -0,0 +1 @@ +{"version":3,"file":"voxel_universe.js","sources":["../node_modules/three/build/three.module.js","../node_modules/three/examples/jsm/controls/OrbitControls.js","../src/Component.tsx","../src/index.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2010-2023 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '160';\n\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst TwoPassDoubleSide = 2; // r149\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst ConstantColorFactor = 211;\nconst OneMinusConstantColorFactor = 212;\nconst ConstantAlphaFactor = 213;\nconst OneMinusConstantAlphaFactor = 214;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst AgXToneMapping = 6;\nconst AttachedBindMode = 'attached';\nconst DetachedBindMode = 'detached';\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst RGB_BPTC_SIGNED_Format = 36494;\nconst RGB_BPTC_UNSIGNED_Format = 36495;\nconst RED_RGTC1_Format = 36283;\nconst SIGNED_RED_RGTC1_Format = 36284;\nconst RED_GREEN_RGTC2_Format = 36285;\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\n/** @deprecated Use LinearSRGBColorSpace or NoColorSpace in three.js r152+. */\nconst LinearEncoding = 3000;\n/** @deprecated Use SRGBColorSpace in three.js r152+. */\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\nconst DisplayP3ColorSpace = 'display-p3';\nconst LinearDisplayP3ColorSpace = 'display-p3-linear';\n\nconst LinearTransfer = 'linear';\nconst SRGBTransfer = 'srgb';\n\nconst Rec709Primaries = 'rec709';\nconst P3Primaries = 'p3';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst NeverCompare = 512;\nconst LessCompare = 513;\nconst EqualCompare = 514;\nconst LessEqualCompare = 515;\nconst GreaterCompare = 516;\nconst NotEqualCompare = 517;\nconst GreaterEqualCompare = 518;\nconst AlwaysCompare = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\nconst WebGLCoordinateSystem = 2000;\nconst WebGPUCoordinateSystem = 2001;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\n/**\n * Matrices converting P3 <-> Rec. 709 primaries, without gamut mapping\n * or clipping. Based on W3C specifications for sRGB and Display P3,\n * and ICC specifications for the D50 connection space. Values in/out\n * are _linear_ sRGB and _linear_ Display P3.\n *\n * Note that both sRGB and Display P3 use the sRGB transfer functions.\n *\n * Reference:\n * - http://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n\nconst LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().set(\n\t0.8224621, 0.177538, 0.0,\n\t0.0331941, 0.9668058, 0.0,\n\t0.0170827, 0.0723974, 0.9105199,\n);\n\nconst LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().set(\n\t1.2249401, - 0.2249404, 0.0,\n\t- 0.0420569, 1.0420571, 0.0,\n\t- 0.0196376, - 0.0786361, 1.0982735\n);\n\n/**\n * Defines supported color spaces by transfer function and primaries,\n * and provides conversions to/from the Linear-sRGB reference space.\n */\nconst COLOR_SPACES = {\n\t[ LinearSRGBColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color,\n\t\tfromReference: ( color ) => color,\n\t},\n\t[ SRGBColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear(),\n\t\tfromReference: ( color ) => color.convertLinearToSRGB(),\n\t},\n\t[ LinearDisplayP3ColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ),\n\t},\n\t[ DisplayP3ColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB(),\n\t},\n};\n\nconst SUPPORTED_WORKING_COLOR_SPACES = new Set( [ LinearSRGBColorSpace, LinearDisplayP3ColorSpace ] );\n\nconst ColorManagement = {\n\n\tenabled: true,\n\n\t_workingColorSpace: LinearSRGBColorSpace,\n\n\tget workingColorSpace() {\n\n\t\treturn this._workingColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tif ( ! SUPPORTED_WORKING_COLOR_SPACES.has( colorSpace ) ) {\n\n\t\t\tthrow new Error( `Unsupported working color space, \"${ colorSpace }\".` );\n\n\t\t}\n\n\t\tthis._workingColorSpace = colorSpace;\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tconst sourceToReference = COLOR_SPACES[ sourceColorSpace ].toReference;\n\t\tconst targetFromReference = COLOR_SPACES[ targetColorSpace ].fromReference;\n\n\t\treturn targetFromReference( sourceToReference( color ) );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this._workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this._workingColorSpace );\n\n\t},\n\n\tgetPrimaries: function ( colorSpace ) {\n\n\t\treturn COLOR_SPACES[ colorSpace ].primaries;\n\n\t},\n\n\tgetTransfer: function ( colorSpace ) {\n\n\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\treturn COLOR_SPACES[ colorSpace ].transfer;\n\n\t},\n\n};\n\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet _sourceId = 0;\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet _textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\t\tthis.channel = 0;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\tif ( typeof colorSpace === 'string' ) {\n\n\t\t\tthis.colorSpace = colorSpace;\n\n\t\t} else { // @deprecated, r152\n\n\t\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\t\tthis.colorSpace = colorSpace === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.colorSpace = source.colorSpace;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tget encoding() { // @deprecated, r152\n\n\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\treturn this.colorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;\n\n\t}\n\n\tset encoding( encoding ) { // @deprecated, r152\n\n\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\tthis.colorSpace = encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass RenderTarget extends EventDispatcher {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tif ( options.encoding !== undefined ) {\n\n\t\t\t// @deprecated, r152\n\t\t\twarnOnce( 'THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace.' );\n\t\t\toptions.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\t\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0\n\t\t}, options );\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps;\n\t\tthis.texture.internalFormat = options.internalFormat;\n\n\t\tthis.depthBuffer = options.depthBuffer;\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\tthis.samples = options.samples;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass WebGLRenderTarget extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, count = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$4 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.isSphere = true;\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$3.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.DEFAULT_ORDER = 'XYZ';\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tif ( child.matrixWorldAutoUpdate === true || force === true ) {\n\n\t\t\t\tchild.updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tif ( child.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.visibility = this._visibility;\n\t\t\tobject.active = this._active;\n\t\t\tobject.bounds = this._bounds.map( bound => ( {\n\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\tboxMin: bound.box.min.toArray(),\n\t\t\t\tboxMax: bound.box.max.toArray(),\n\n\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\tsphereRadius: bound.sphere.radius,\n\t\t\t\tsphereCenter: bound.sphere.center.toArray()\n\t\t\t} ) );\n\n\t\t\tobject.maxGeometryCount = this._maxGeometryCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = {\n\t\t\t\t\tcenter: object.boundingSphere.center.toArray(),\n\t\t\t\t\tradius: object.boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = {\n\t\t\t\t\tmin: object.boundingBox.min.toArray(),\n\t\t\t\t\tmax: object.boundingBox.max.toArray()\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nlet warnedGetUV = false;\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$1 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) { // @deprecated, r151\n\n\t\tif ( warnedGetUV === false ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation().' );\n\n\t\t\twarnedGetUV = true;\n\n\t\t}\n\n\t\treturn this.getInterpolation( point, p1, p2, p3, uv1, uv2, uv3, target );\n\n\t}\n\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$1 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$1.x );\n\t\ttarget.addScaledVector( v2, _v3$1.y );\n\t\ttarget.addScaledVector( v3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) { // @deprecated, r151\n\n\t\tif ( warnedGetUV === false ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation().' );\n\n\t\t\twarnedGetUV = true;\n\n\t\t}\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\t\tthis.alphaHash = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\t\tthis.blendAlpha = 0;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\t\tthis.forceSinglePass = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nconst DataUtils = {\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat,\n};\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\t\tthis.gpuType = FloatType;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$2 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _normalA = /*@__PURE__*/ new Vector3();\nconst _normalB = /*@__PURE__*/ new Vector3();\nconst _normalC = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv1, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv1, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv1, c );\n\n\t\t\tintersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\t\t\tintersection.uv2 = intersection.uv1; // @deprecated, r152\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\t_normalA.fromBufferAttribute( normal, a );\n\t\t\t_normalB.fromBufferAttribute( normal, b );\n\t\t\t_normalC.fromBufferAttribute( normal, c );\n\n\t\t\tintersection.normal = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _normalA, _normalB, _normalC, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( - 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tif ( renderer.getRenderTarget() === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.forceSinglePass = true;\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false, // set to use shader texture LOD\n\t\t\tclipCullDistance: false // set to use vertex shader clipping\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = - 90; // negative fov is not an error\nconst aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tthis.renderTarget = renderTarget;\n\t\tthis.coordinateSystem = null;\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, - 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\t\tcameraPX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tif ( options.encoding !== undefined ) {\n\n\t\t\t// @deprecated, r152\n\t\t\twarnOnce( 'THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace.' );\n\t\t\toptions.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$5.center.set( 0, 0, 0 );\n\t\t_sphere$5.radius = 0.7071067811865476;\n\t\t_sphere$5.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\t\tconst size = array.byteLength;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = gl.HALF_FLOAT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version,\n\t\t\tsize: size\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute._updateRange; // deprecated\n\t\tconst updateRanges = attribute.updateRanges;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 && updateRanges.length === 0 ) {\n\n\t\t\t// Not using update ranges\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t}\n\n\t\tif ( updateRanges.length !== 0 ) {\n\n\t\t\tfor ( let i = 0, l = updateRanges.length; i < l; i ++ ) {\n\n\t\t\t\tconst range = updateRanges[ i ];\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\tarray, range.start, range.count );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\tarray.subarray( range.start, range.start + range.count ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tattribute.clearUpdateRanges();\n\n\t\t}\n\n\t\t// deprecated\n\t\tif ( updateRange.count !== - 1 ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t\tattribute.onUploadCallback();\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tif ( data.size !== attribute.array.byteLength ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: The size of the buffer attribute\\'s array buffer does not match the original size. Resizing buffer attributes is not supported.' );\n\n\t\t\t}\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\n\nvar alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\\tconst float ALPHA_HASH_SCALE = 0.05;\\n\\tfloat hash2D( vec2 value ) {\\n\\t\\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\\t}\\n\\tfloat hash3D( vec3 value ) {\\n\\t\\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\\t}\\n\\tfloat getAlphaHashThreshold( vec3 position ) {\\n\\t\\tfloat maxDeriv = max(\\n\\t\\t\\tlength( dFdx( position.xyz ) ),\\n\\t\\t\\tlength( dFdy( position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\\t\\tvec2 pixScales = vec2(\\n\\t\\t\\texp2( floor( log2( pixScale ) ) ),\\n\\t\\t\\texp2( ceil( log2( pixScale ) ) )\\n\\t\\t);\\n\\t\\tvec2 alpha = vec2(\\n\\t\\t\\thash3D( floor( pixScales.x * position.xyz ) ),\\n\\t\\t\\thash3D( floor( pixScales.y * position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat lerpFactor = fract( log2( pixScale ) );\\n\\t\\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\\t\\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\\t\\tvec3 cases = vec3(\\n\\t\\t\\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\\t\\t\\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\\t\\t\\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\\t\\t);\\n\\t\\tfloat threshold = ( x < ( 1.0 - a ) )\\n\\t\\t\\t? ( ( x < a ) ? cases.x : cases.y )\\n\\t\\t\\t: cases.z;\\n\\t\\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\\t}\\n#endif\";\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_CLEARCOAT ) \\n\\t\\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_SHEEN ) \\n\\t\\tsheenSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar batching_pars_vertex = \"#ifdef USE_BATCHING\\n\\tattribute float batchId;\\n\\tuniform highp sampler2D batchingTexture;\\n\\tmat4 getBatchingMatrix( const in float i ) {\\n\\t\\tint size = textureSize( batchingTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\\tmat4 batchingMatrix = getBatchingMatrix( batchId );\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\\tvPosition = vec3( position );\\n#endif\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"float G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n} // validated\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vBumpMapUv );\\n\\t\\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\\n\\t\\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\n#ifdef USE_ALPHAHASH\\n\\tvarying vec3 vPosition;\\n#endif\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n} // validated\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\\tmat3 bm = mat3( batchingMatrix );\\n\\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\\ttransformedNormal = bm * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = bm * transformedTangent;\\n\\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmat3 im = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\\ttransformedNormal = im * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = im * transformedTangent;\\n\\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar colorspace_pars_fragment = \"\\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\\n\\tvec3( 0.8224621, 0.177538, 0.0 ),\\n\\tvec3( 0.0331941, 0.9668058, 0.0 ),\\n\\tvec3( 0.0170827, 0.0723974, 0.9105199 )\\n);\\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.2249401, - 0.2249404, 0.0 ),\\n\\tvec3( - 0.0420569, 1.0420571, 0.0 ),\\n\\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\\n);\\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\\n}\\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\\n}\\nvec4 LinearTransferOETF( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 sRGBTransferOETF( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn sRGBTransferOETF( value );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\\tuniform vec3 lightProbe[ 9 ];\\n#endif\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( LEGACY_LIGHTS )\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#else\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\\t\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t\\tvec3 bentNormal = cross( bitangent, viewDir );\\n\\t\\t\\t\\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\\t\\t\\t\\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\\t\\t\\t\\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef USE_SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\\t\\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\\t\\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\\t#else\\n\\t\\tvec2 anisotropyV = anisotropyVector;\\n\\t#endif\\n\\tmaterial.anisotropy = length( anisotropyV );\\n\\tif( material.anisotropy == 0.0 ) {\\n\\t\\tanisotropyV = vec2( 1.0, 0.0 );\\n\\t} else {\\n\\t\\tanisotropyV /= material.anisotropy;\\n\\t\\tmaterial.anisotropy = saturate( material.anisotropy );\\n\\t}\\n\\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat anisotropy;\\n\\t\\tfloat alphaT;\\n\\t\\tvec3 anisotropyT;\\n\\t\\tvec3 anisotropyB;\\n\\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\n#ifdef USE_ANISOTROPY\\n\\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\\t\\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\\t\\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\\t\\tfloat v = 0.5 / ( gv + gl );\\n\\t\\treturn saturate(v);\\n\\t}\\n\\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\\t\\tfloat a2 = alphaT * alphaB;\\n\\t\\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\\t\\thighp float v2 = dot( v, v );\\n\\t\\tfloat w2 = a2 / v2;\\n\\t\\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\\t\\tvec3 f0 = material.clearcoatF0;\\n\\t\\tfloat f90 = material.clearcoatF90;\\n\\t\\tfloat roughness = material.clearcoatRoughness;\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\\tvec3 f0 = material.specularColor;\\n\\tfloat f90 = material.specularF90;\\n\\tfloat roughness = material.roughness;\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\\t\\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\\t\\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\\t\\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\\t\\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\\t\\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\\t\\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\\t\\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\\t#else\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t#endif\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometryNormal;\\n\\t\\tvec3 viewDir = geometryViewDir;\\n\\t\\tvec3 position = geometryPosition;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometryPosition, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\t#if defined( USE_LIGHT_PROBES )\\n\\t\\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\\t#endif\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometryNormal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\\t#else\\n\\t\\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t#if defined( USE_POINTS_UV )\\n\\t\\tvec2 uv = vUv;\\n\\t#else\\n\\t\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\\tvarying vec2 vUv;\\n#else\\n\\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t\\tuniform mat3 uvTransform;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal *= faceDirection;\\n\\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\\t\\t#if defined( USE_NORMALMAP )\\n\\t\\t\\tvNormalMapUv\\n\\t\\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tvClearcoatNormalMapUv\\n\\t\\t#else\\n\\t\\t\\tvUv\\n\\t\\t#endif\\n\\t\\t);\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn[0] *= faceDirection;\\n\\t\\ttbn[1] *= faceDirection;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn2[0] *= faceDirection;\\n\\t\\ttbn2[1] *= faceDirection;\\n\\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( uv.st );\\n\\t\\tvec2 st1 = dFdy( uv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\\n\\t\\treturn mat3( T * scale, B * scale, N );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec2 packDepthToRG( in highp float v ) {\\n\\treturn packDepthToRGBA( v ).yx;\\n}\\nfloat unpackRGToDepth( const in highp vec2 v ) {\\n\\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn depth * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * depth - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_BATCHING\\n\\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\\n\\t\\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\tvec4 shadowWorldPosition;\\n#endif\\n#if defined( USE_SHADOWMAP )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tint size = textureSize( boneTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn saturate( toneMappingExposure * color );\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\\tvec3 x2 = x * x;\\n\\tvec3 x4 = x2 * x2;\\n\\treturn + 15.5 * x4 * x2\\n\\t\\t- 40.14 * x4 * x\\n\\t\\t+ 31.96 * x4\\n\\t\\t- 6.868 * x2 * x\\n\\t\\t+ 0.4298 * x2\\n\\t\\t+ 0.1191 * x\\n\\t\\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\\tconst mat3 AgXInsetMatrix = mat3(\\n\\t\\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\\t\\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\\t\\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\\t);\\n\\tconst mat3 AgXOutsetMatrix = mat3(\\n\\t\\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\\t\\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\\t\\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\\t);\\n\\tconst float AgxMinEv = - 12.47393;\\tconst float AgxMaxEv = 4.026069;\\n\\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = AgXInsetMatrix * color;\\n\\tcolor = max( color, 1e-10 );\\tcolor = log2( color );\\n\\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\tcolor = agxDefaultContrastApprox( color );\\n\\tcolor = AgXOutsetMatrix * color;\\n\\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\\treturn color;\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmitted = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tfloat w0( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w1( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\\t}\\n\\tfloat w2( float a ){\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w3( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\\t}\\n\\tfloat g0( float a ) {\\n\\t\\treturn w0( a ) + w1( a );\\n\\t}\\n\\tfloat g1( float a ) {\\n\\t\\treturn w2( a ) + w3( a );\\n\\t}\\n\\tfloat h0( float a ) {\\n\\t\\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\\t}\\n\\tfloat h1( float a ) {\\n\\t\\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\\t}\\n\\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\\t\\tuv = uv * texelSize.zw + 0.5;\\n\\t\\tvec2 iuv = floor( uv );\\n\\t\\tvec2 fuv = fract( uv );\\n\\t\\tfloat g0x = g0( fuv.x );\\n\\t\\tfloat g1x = g1( fuv.x );\\n\\t\\tfloat h0x = h0( fuv.x );\\n\\t\\tfloat h1x = h1( fuv.x );\\n\\t\\tfloat h0y = h0( fuv.y );\\n\\t\\tfloat h1y = h1( fuv.y );\\n\\t\\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\\t\\t\\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\\t}\\n\\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\\t\\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\\t\\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\\t\\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\\t\\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\\t\\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\\t\\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\\t\\treturn mix( fSample, cSample, fract( lod ) );\\n\\t}\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\\t}\\n\\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform mat3 mapTransform;\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform mat3 alphaMapTransform;\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tuniform mat3 lightMapTransform;\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tuniform mat3 aoMapTransform;\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tuniform mat3 bumpMapTransform;\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tuniform mat3 normalMapTransform;\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tuniform mat3 displacementMapTransform;\\n\\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tuniform mat3 emissiveMapTransform;\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tuniform mat3 metalnessMapTransform;\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tuniform mat3 roughnessMapTransform;\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tuniform mat3 anisotropyMapTransform;\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tuniform mat3 clearcoatMapTransform;\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform mat3 clearcoatNormalMapTransform;\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform mat3 clearcoatRoughnessMapTransform;\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tuniform mat3 sheenColorMapTransform;\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tuniform mat3 sheenRoughnessMapTransform;\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tuniform mat3 iridescenceMapTransform;\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform mat3 iridescenceThicknessMapTransform;\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tuniform mat3 specularMapTransform;\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tuniform mat3 specularColorMapTransform;\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tuniform mat3 specularIntensityMapTransform;\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_BATCHING\\n\\t\\tworldPosition = batchingMatrix * worldPosition;\\n\\t#endif\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$h = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$h = \"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$g = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\\n\\t#else\\n\\t\\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = texColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define USE_SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef USE_SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\tuniform vec2 anisotropyVector;\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tuniform sampler2D anisotropyMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#ifdef USE_POINTS_UV\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\\t#ifdef USE_POINTS_UV\\n\\t\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphahash_fragment: alphahash_fragment,\n\talphahash_pars_fragment: alphahash_pars_fragment,\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbatching_pars_vertex: batching_pars_vertex,\n\tbatching_vertex: batching_vertex,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tcolorspace_fragment: colorspace_fragment,\n\tcolorspace_pars_fragment: colorspace_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\topaque_fragment: opaque_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$h,\n\tbackground_frag: fragment$h,\n\tbackgroundCube_vert: vertex$g,\n\tbackgroundCube_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\t\tspecularMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 }, // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 },\n\t\taoMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 },\n\t\tlightMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null },\n\t\temissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null },\n\t\tmetalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null },\n\t\troughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tbackgroundCube: {\n\n\t\tuniforms: {\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: - 1 },\n\t\t\tbackgroundBlurriness: { value: 0 },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.backgroundCube_vert,\n\t\tfragmentShader: ShaderChunk.backgroundCube_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tclearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tiridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\tsheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tthicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t\tspecularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tanisotropyVector: { value: /*@__PURE__*/ new Vector2() },\n\t\t\tanisotropyMap: { value: null },\n\t\t\tanisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nconst _rgb = { r: 0, b: 0, g: 0 };\n\nfunction WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tconst usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background\n\t\t\tbackground = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tconst environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n\n\t\tif ( environmentBlendMode === 'additive' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );\n\n\t\t} else if ( environmentBlendMode === 'alpha-blend' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.backgroundCube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.backgroundCube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\t\t\tboxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n\t\t\tboxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tboxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// add \"map\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\t\t\tplaneMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tplaneMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tcolor.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );\n\n\t\tstate.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {\n\n\t\tif ( integer === true ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t// check for integer attributes (WebGL 2 only)\n\n\t\t\t\t\tconst integer = ( capabilities.isWebGL2 === true && ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType ) );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ], counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawArraysWEBGL( mode, starts, 0, counts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tconst isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tconst maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tconst maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tconst maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tconst maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tconst maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tconst maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tconst maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( gl.MAX_SAMPLES ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\n\t};\n\n\tthis.setGlobalState = function ( planes, camera ) {\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\nlet _oldActiveCubeFace = 0;\nlet _oldActiveMipmapLevel = 0;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tcolorSpace: LinearSRGBColorSpace,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\t\t\t\tgetExtension( 'WEBGL_clip_cull_distance' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tconst array = geometry.morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.remove( array[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else if ( geometryPosition !== undefined ) {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ] / bytesPerElement, counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawElementsWEBGL( mode, counts, 0, type, starts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tif ( updateMap.get( object ) !== frame ) {\n\n\t\t\t\tattributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );\n\n\t\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\t\tattributes.update( object.instanceColor, gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t\tupdateMap.set( object, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( updateMap.get( skeleton ) !== frame ) {\n\n\t\t\t\tskeleton.update();\n\n\t\t\t\tupdateMap.set( skeleton, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\n\nconst emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );\nemptyShadowTexture.compareFunction = LessEqualCompare;\n\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array or THREE.VectorN)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2i( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3i( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4i( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array or THREE.VectorN)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2ui( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3ui( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4ui( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\tconst emptyTexture2D = ( this.type === gl.SAMPLER_2D_SHADOW ) ? emptyShadowTexture : emptyTexture;\n\n\ttextures.setTexture2D( v || emptyTexture2D, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/\nconst COMPLETION_STATUS_KHR = 0x91B1;\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( colorSpace ) {\n\n\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\tconst encodingPrimaries = ColorManagement.getPrimaries( colorSpace );\n\n\tlet gamutMapping;\n\n\tif ( workingPrimaries === encodingPrimaries ) {\n\n\t\tgamutMapping = '';\n\n\t} else if ( workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries ) {\n\n\t\tgamutMapping = 'LinearDisplayP3ToLinearSRGB';\n\n\t} else if ( workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries ) {\n\n\t\tgamutMapping = 'LinearSRGBToLinearDisplayP3';\n\n\t}\n\n\tswitch ( colorSpace ) {\n\n\t\tcase LinearSRGBColorSpace:\n\t\tcase LinearDisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t\tcase SRGBColorSpace:\n\t\tcase DisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'sRGBTransferOETF' ];\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported color space:', colorSpace );\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, colorSpace ) {\n\n\tconst components = getEncodingComponents( colorSpace );\n\treturn `vec4 ${functionName}( vec4 value ) { return ${components[ 0 ]}( ${components[ 1 ]}( value ) ); }`;\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase AgXToneMapping:\n\t\t\ttoneMappingName = 'AgX';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.normalMapTangentSpace || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateVertexExtensions( parameters ) {\n\n\tconst chunks = [\n\t\tparameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === gl.FLOAT_MAT2 ) locationSize = 2;\n\t\tif ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;\n\t\tif ( info.type === gl.FLOAT_MAT4 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nconst shaderChunkMap = new Map( [\n\t[ 'encodings_fragment', 'colorspace_fragment' ], // @deprecated, r154\n\t[ 'encodings_pars_fragment', 'colorspace_pars_fragment' ], // @deprecated, r154\n\t[ 'output_fragment', 'opaque_fragment' ], // @deprecated, r154\n] );\n\nfunction includeReplacer( match, include ) {\n\n\tlet string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tconst newInclude = shaderChunkMap.get( include );\n\n\t\tif ( newInclude !== undefined ) {\n\n\t\t\tstring = ShaderChunk[ newInclude ];\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( unrollLoopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customVertexExtensions = generateVertexExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',\n\t\t\tparameters.batching ? '#define USE_BATCHING' : '',\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\t//\n\n\t\t\tparameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '',\n\t\t\tparameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '',\n\t\t\tparameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '',\n\t\t\tparameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '',\n\t\t\tparameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '',\n\t\t\tparameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '',\n\t\t\tparameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '',\n\t\t\tparameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '',\n\n\t\t\tparameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',\n\t\t\tparameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',\n\n\t\t\tparameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',\n\n\t\t\tparameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',\n\t\t\tparameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',\n\t\t\tparameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',\n\n\t\t\tparameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',\n\t\t\tparameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',\n\n\t\t\tparameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '',\n\t\t\tparameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '',\n\n\t\t\tparameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '',\n\t\t\tparameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '',\n\t\t\tparameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '',\n\n\t\t\tparameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '',\n\t\t\tparameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '',\n\n\t\t\t//\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_UV1',\n\n\t\t\t'\tattribute vec2 uv1;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV2',\n\n\t\t\t'\tattribute vec2 uv2;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV3',\n\n\t\t\t'\tattribute vec2 uv3;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\tcustomVertexExtensions,\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tfunction onFirstUse( self ) {\n\n\t\t// check for link errors\n\t\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\t\tlet runnable = true;\n\t\t\tlet haveDiagnostics = true;\n\n\t\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\t\trunnable = false;\n\n\t\t\t\tif ( typeof renderer.debug.onShaderError === 'function' ) {\n\n\t\t\t\t\trenderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// default error reporting\n\n\t\t\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\\n\\n' +\n\t\t\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\t\t\tfragmentErrors\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t} else if ( programLog !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\t\thaveDiagnostics = false;\n\n\t\t\t}\n\n\t\t\tif ( haveDiagnostics ) {\n\n\t\t\t\tself.diagnostics = {\n\n\t\t\t\t\trunnable: runnable,\n\n\t\t\t\t\tprogramLog: programLog,\n\n\t\t\t\t\tvertexShader: {\n\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t\t},\n\n\t\t\t\t\tfragmentShader: {\n\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Clean up\n\n\t\t// Crashes in iOS9 and iOS10. #18402\n\t\t// gl.detachShader( program, glVertexShader );\n\t\t// gl.detachShader( program, glFragmentShader );\n\n\t\tgl.deleteShader( glVertexShader );\n\t\tgl.deleteShader( glFragmentShader );\n\n\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t}\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\t// Populates cachedUniforms and cachedAttributes\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\t// Populates cachedAttributes and cachedUniforms\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// indicate when the program is ready to be used. if the KHR_parallel_shader_compile extension isn't supported,\n\t// flag the program as ready immediately. It may cause a stall when it's first used.\n\n\tlet programReady = ( parameters.rendererExtensionParallelShaderCompile === false );\n\n\tthis.isReady = function () {\n\n\t\tif ( programReady === false ) {\n\n\t\t\tprogramReady = gl.getProgramParameter( program, COMPLETION_STATUS_KHR );\n\n\t\t}\n\n\t\treturn programReady;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.type = parameters.shaderType;\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id$1 = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id$1 ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst programs = [];\n\n\tconst IS_WEBGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getChannel( value ) {\n\n\t\tif ( value === 0 ) return 'uv';\n\n\t\treturn `uv${ value }`;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst IS_INSTANCEDMESH = object.isInstancedMesh === true;\n\t\tconst IS_BATCHEDMESH = object.isBatchedMesh === true;\n\n\t\tconst HAS_MAP = !! material.map;\n\t\tconst HAS_MATCAP = !! material.matcap;\n\t\tconst HAS_ENVMAP = !! envMap;\n\t\tconst HAS_AOMAP = !! material.aoMap;\n\t\tconst HAS_LIGHTMAP = !! material.lightMap;\n\t\tconst HAS_BUMPMAP = !! material.bumpMap;\n\t\tconst HAS_NORMALMAP = !! material.normalMap;\n\t\tconst HAS_DISPLACEMENTMAP = !! material.displacementMap;\n\t\tconst HAS_EMISSIVEMAP = !! material.emissiveMap;\n\n\t\tconst HAS_METALNESSMAP = !! material.metalnessMap;\n\t\tconst HAS_ROUGHNESSMAP = !! material.roughnessMap;\n\n\t\tconst HAS_ANISOTROPY = material.anisotropy > 0;\n\t\tconst HAS_CLEARCOAT = material.clearcoat > 0;\n\t\tconst HAS_IRIDESCENCE = material.iridescence > 0;\n\t\tconst HAS_SHEEN = material.sheen > 0;\n\t\tconst HAS_TRANSMISSION = material.transmission > 0;\n\n\t\tconst HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;\n\n\t\tconst HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;\n\t\tconst HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;\n\t\tconst HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;\n\n\t\tconst HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;\n\t\tconst HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;\n\n\t\tconst HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap;\n\t\tconst HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap;\n\n\t\tconst HAS_SPECULARMAP = !! material.specularMap;\n\t\tconst HAS_SPECULAR_COLORMAP = !! material.specularColorMap;\n\t\tconst HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap;\n\n\t\tconst HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap;\n\t\tconst HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap;\n\n\t\tconst HAS_GRADIENTMAP = !! material.gradientMap;\n\n\t\tconst HAS_ALPHAMAP = !! material.alphaMap;\n\n\t\tconst HAS_ALPHATEST = material.alphaTest > 0;\n\n\t\tconst HAS_ALPHAHASH = !! material.alphaHash;\n\n\t\tconst HAS_EXTENSIONS = !! material.extensions;\n\n\t\tconst HAS_ATTRIBUTE_UV1 = !! geometry.attributes.uv1;\n\t\tconst HAS_ATTRIBUTE_UV2 = !! geometry.attributes.uv2;\n\t\tconst HAS_ATTRIBUTE_UV3 = !! geometry.attributes.uv3;\n\n\t\tlet toneMapping = NoToneMapping;\n\n\t\tif ( material.toneMapped ) {\n\n\t\t\tif ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\ttoneMapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: IS_WEBGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderType: material.type,\n\t\t\tshaderName: material.name,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tbatching: IS_BATCHEDMESH,\n\t\t\tinstancing: IS_INSTANCEDMESH,\n\t\t\tinstancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n\t\t\toutputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),\n\n\t\t\tmap: HAS_MAP,\n\t\t\tmatcap: HAS_MATCAP,\n\t\t\tenvMap: HAS_ENVMAP,\n\t\t\tenvMapMode: HAS_ENVMAP && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\taoMap: HAS_AOMAP,\n\t\t\tlightMap: HAS_LIGHTMAP,\n\t\t\tbumpMap: HAS_BUMPMAP,\n\t\t\tnormalMap: HAS_NORMALMAP,\n\t\t\tdisplacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n\t\t\temissiveMap: HAS_EMISSIVEMAP,\n\n\t\t\tnormalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tnormalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tmetalnessMap: HAS_METALNESSMAP,\n\t\t\troughnessMap: HAS_ROUGHNESSMAP,\n\n\t\t\tanisotropy: HAS_ANISOTROPY,\n\t\t\tanisotropyMap: HAS_ANISOTROPYMAP,\n\n\t\t\tclearcoat: HAS_CLEARCOAT,\n\t\t\tclearcoatMap: HAS_CLEARCOATMAP,\n\t\t\tclearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n\t\t\tclearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n\n\t\t\tiridescence: HAS_IRIDESCENCE,\n\t\t\tiridescenceMap: HAS_IRIDESCENCEMAP,\n\t\t\tiridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n\n\t\t\tsheen: HAS_SHEEN,\n\t\t\tsheenColorMap: HAS_SHEEN_COLORMAP,\n\t\t\tsheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n\n\t\t\tspecularMap: HAS_SPECULARMAP,\n\t\t\tspecularColorMap: HAS_SPECULAR_COLORMAP,\n\t\t\tspecularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n\n\t\t\ttransmission: HAS_TRANSMISSION,\n\t\t\ttransmissionMap: HAS_TRANSMISSIONMAP,\n\t\t\tthicknessMap: HAS_THICKNESSMAP,\n\n\t\t\tgradientMap: HAS_GRADIENTMAP,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending,\n\n\t\t\talphaMap: HAS_ALPHAMAP,\n\t\t\talphaTest: HAS_ALPHATEST,\n\t\t\talphaHash: HAS_ALPHAHASH,\n\n\t\t\tcombine: material.combine,\n\n\t\t\t//\n\n\t\t\tmapUv: HAS_MAP && getChannel( material.map.channel ),\n\t\t\taoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),\n\t\t\tlightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),\n\t\t\tbumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),\n\t\t\tnormalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),\n\t\t\tdisplacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),\n\t\t\temissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),\n\n\t\t\tmetalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),\n\t\t\troughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),\n\n\t\t\tanisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),\n\n\t\t\tclearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),\n\t\t\tclearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),\n\t\t\tclearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),\n\n\t\t\tiridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),\n\t\t\tiridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),\n\n\t\t\tsheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ),\n\t\t\tsheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ),\n\n\t\t\tspecularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ),\n\t\t\tspecularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ),\n\t\t\tspecularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ),\n\n\t\t\ttransmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),\n\t\t\tthicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),\n\n\t\t\talphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),\n\n\t\t\t//\n\n\t\t\tvertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUv1s: HAS_ATTRIBUTE_UV1,\n\t\t\tvertexUv2s: HAS_ATTRIBUTE_UV2,\n\t\t\tvertexUv3s: HAS_ATTRIBUTE_UV3,\n\n\t\t\tpointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading === true,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation === true,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumSpotLightMaps: lights.spotLightMap.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumLightProbes: lights.numLightProbes,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: toneMapping,\n\t\t\tuseLegacyLights: renderer._useLegacyLights,\n\n\t\t\tdecodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: material.depthPacking >= 0,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: HAS_EXTENSIONS && material.extensions.derivatives === true,\n\t\t\textensionFragDepth: HAS_EXTENSIONS && material.extensions.fragDepth === true,\n\t\t\textensionDrawBuffers: HAS_EXTENSIONS && material.extensions.drawBuffers === true,\n\t\t\textensionShaderTextureLOD: HAS_EXTENSIONS && material.extensions.shaderTextureLOD === true,\n\t\t\textensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance && extensions.has( 'WEBGL_clip_cull_distance' ),\n\n\t\t\trendererExtensionFragDepth: IS_WEBGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: IS_WEBGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: IS_WEBGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\t\t\trendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputColorSpace );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputColorSpace );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.mapUv );\n\t\tarray.push( parameters.alphaMapUv );\n\t\tarray.push( parameters.lightMapUv );\n\t\tarray.push( parameters.aoMapUv );\n\t\tarray.push( parameters.bumpMapUv );\n\t\tarray.push( parameters.normalMapUv );\n\t\tarray.push( parameters.displacementMapUv );\n\t\tarray.push( parameters.emissiveMapUv );\n\t\tarray.push( parameters.metalnessMapUv );\n\t\tarray.push( parameters.roughnessMapUv );\n\t\tarray.push( parameters.anisotropyMapUv );\n\t\tarray.push( parameters.clearcoatMapUv );\n\t\tarray.push( parameters.clearcoatNormalMapUv );\n\t\tarray.push( parameters.clearcoatRoughnessMapUv );\n\t\tarray.push( parameters.iridescenceMapUv );\n\t\tarray.push( parameters.iridescenceThicknessMapUv );\n\t\tarray.push( parameters.sheenColorMapUv );\n\t\tarray.push( parameters.sheenRoughnessMapUv );\n\t\tarray.push( parameters.specularMapUv );\n\t\tarray.push( parameters.specularColorMapUv );\n\t\tarray.push( parameters.specularIntensityMapUv );\n\t\tarray.push( parameters.transmissionMapUv );\n\t\tarray.push( parameters.thicknessMapUv );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numSpotLightMaps );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.numLightProbes );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.normalMapObjectSpace )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.normalMapTangentSpace )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.vertexUv1s )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.vertexUv2s )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.vertexUv3s )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.anisotropy )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.alphaHash )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.batching )\n\t\t\t_programLayers.enable( 19 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.useLegacyLights )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.pointsUvs )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 19 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1,\n\t\t\tnumSpotMaps: - 1,\n\n\t\t\tnumLightProbes: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\t\tnumSpotLightShadowsWithMaps: 0,\n\t\tnumLightProbes: 0\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, useLegacyLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\tlet numLightProbes = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( useLegacyLights === true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t\tnumLightProbes ++;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ||\n\t\t\thash.numSpotMaps !== numSpotMaps ||\n\t\t\thash.numLightProbes !== numLightProbes ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n\t\t\tstate.numLightProbes = numLightProbes;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\thash.numLightProbes = numLightProbes;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( useLegacyLights ) {\n\n\t\tlights.setup( lightsArray, useLegacyLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\tlet _previousType = this.type;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// check for shadow map type changes\n\n\t\tconst toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap );\n\t\tconst fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null || toVSM === true || fromVSM === true ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tif ( shadow.map !== null ) {\n\n\t\t\t\t\tshadow.map.dispose();\n\n\t\t\t\t}\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\t_previousType = this.type;\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t\t( material.alphaMap && material.alphaTest > 0 ) ||\n\t\t\t\t( material.map && material.alphaTest > 0 ) ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\t\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\t\tresult.map = material.map;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tconst materialProperties = _renderer.properties.get( result );\n\t\t\tmaterialProperties.light = light;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, type );\n\n\t\t\t\t\t\t\tobject.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\tobject.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, type );\n\n\t\t\t\t\tobject.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\tobject.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t// make sure to remove the unique distance/depth materials used for shadow map rendering\n\n\t\tfor ( const id in _materialCache ) {\n\n\t\t\tconst cache = _materialCache[ id ];\n\n\t\t\tconst uuid = event.target.uuid;\n\n\t\t\tif ( uuid in cache ) {\n\n\t\t\t\tconst shadowMaterial = cache[ uuid ];\n\t\t\t\tshadowMaterial.dispose();\n\t\t\t\tdelete cache[ uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgramMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentBlendColor = new Color( 0, 0, 0 );\n\tlet currentBlendAlpha = 0;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( gl.SCISSOR_BOX );\n\tconst viewportParam = gl.getParameter( gl.VIEWPORT );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count, dimensions ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tif ( isWebGL2 && ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) ) {\n\n\t\t\t\tgl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t} else {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\tif ( isWebGL2 ) {\n\n\t\temptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );\n\t\temptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );\n\n\t}\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\n\t\t\t\tif ( target === gl.DRAW_FRAMEBUFFER ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === gl.FRAMEBUFFER ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = gl.COLOR_ATTACHMENT0;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== gl.BACK ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = gl.BACK;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: gl.FUNC_ADD,\n\t\t[ SubtractEquation ]: gl.FUNC_SUBTRACT,\n\t\t[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = gl.MIN;\n\t\tequationToGL[ MaxEquation ] = gl.MAX;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: gl.ZERO,\n\t\t[ OneFactor ]: gl.ONE,\n\t\t[ SrcColorFactor ]: gl.SRC_COLOR,\n\t\t[ SrcAlphaFactor ]: gl.SRC_ALPHA,\n\t\t[ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE,\n\t\t[ DstColorFactor ]: gl.DST_COLOR,\n\t\t[ DstAlphaFactor ]: gl.DST_ALPHA,\n\t\t[ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR,\n\t\t[ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t[ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR,\n\t\t[ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA,\n\t\t[ ConstantColorFactor ]: gl.CONSTANT_COLOR,\n\t\t[ OneMinusConstantColorFactor ]: gl.ONE_MINUS_CONSTANT_COLOR,\n\t\t[ ConstantAlphaFactor ]: gl.CONSTANT_ALPHA,\n\t\t[ OneMinusConstantAlphaFactor ]: gl.ONE_MINUS_CONSTANT_ALPHA\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( gl.BLEND );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( gl.BLEND );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ONE, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\t\t\t\tcurrentBlendColor.set( 0, 0, 0 );\n\t\t\t\tcurrentBlendAlpha = 0;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tif ( blendColor.equals( currentBlendColor ) === false || blendAlpha !== currentBlendAlpha ) {\n\n\t\t\tgl.blendColor( blendColor.r, blendColor.g, blendColor.b, blendAlpha );\n\n\t\t\tcurrentBlendColor.copy( blendColor );\n\t\t\tcurrentBlendAlpha = blendAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = false;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( gl.SAMPLE_ALPHA_TO_COVERAGE )\n\t\t\t: disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgramMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgramMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgramMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( program ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( program, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( gl.BLEND );\n\t\tgl.disable( gl.CULL_FACE );\n\t\tgl.disable( gl.DEPTH_TEST );\n\t\tgl.disable( gl.POLYGON_OFFSET_FILL );\n\t\tgl.disable( gl.SCISSOR_TEST );\n\t\tgl.disable( gl.STENCIL_TEST );\n\t\tgl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\tgl.blendFunc( gl.ONE, gl.ZERO );\n\t\tgl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO );\n\t\tgl.blendColor( 0, 0, 0, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( gl.LESS );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( gl.ALWAYS, 0, 0xffffffff );\n\t\tgl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( gl.BACK );\n\t\tgl.frontFace( gl.CCW );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( gl.TEXTURE0 );\n\n\t\tgl.bindFramebuffer( gl.FRAMEBUFFER, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );\n\t\t\tgl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentBlendColor = new Color( 0, 0, 0 );\n\t\tcurrentBlendAlpha = 0;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\tcompressedTexImage3D: compressedTexImage3D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\t\tcompressedTexSubImage3D: compressedTexSubImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === _gl.RED ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RED_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.R8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.R16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.R32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tconst transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace );\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( transfer === SRGBTransfer ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;\n\n\t\t}\n\n\t\tif ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||\n\t\t\tinternalFormat === _gl.RG16F || internalFormat === _gl.RG32F ||\n\t\t\tinternalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) {\n\n\t\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) {\n\n\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.wrapR || 0 );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.colorSpace );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: _gl.REPEAT,\n\t\t[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,\n\t\t[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: _gl.NEAREST,\n\t\t[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,\n\n\t\t[ LinearFilter ]: _gl.LINEAR,\n\t\t[ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR\n\t};\n\n\tconst compareToGL = {\n\t\t[ NeverCompare ]: _gl.NEVER,\n\t\t[ AlwaysCompare ]: _gl.ALWAYS,\n\t\t[ LessCompare ]: _gl.LESS,\n\t\t[ LessEqualCompare ]: _gl.LEQUAL,\n\t\t[ EqualCompare ]: _gl.EQUAL,\n\t\t[ GreaterEqualCompare ]: _gl.GEQUAL,\n\t\t[ GreaterCompare ]: _gl.GREATER,\n\t\t[ NotEqualCompare ]: _gl.NOTEQUAL\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, _gl.CLAMP_TO_EDGE );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( texture.compareFunction ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.magFilter === NearestFilter ) return;\n\t\t\tif ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = _gl.TEXTURE_2D;\n\n\t\tif ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\tif ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true && glInternalFormat !== RGB_ETC1_Format );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedIntType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tconst width = Math.max( 1, renderTarget.width >> level );\n\t\t\tconst height = Math.max( 1, renderTarget.height >> level );\n\n\t\t\tif ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, level );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = ( isWebGL2 === true ) ? _gl.DEPTH_COMPONENT24 : _gl.DEPTH_COMPONENT16;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = [];\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = isMultipleRenderTargets ? texture : [ texture ];\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = _gl.TEXTURE_2D;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\n\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [ renderTarget.texture ];\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\tconst invalidationArray = [];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\n\t\t\t// If MRT we need to remove FBO attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tinvalidationArray.push( _gl.COLOR_ATTACHMENT0 + i );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;\n\t\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );\n\n\t\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArray );\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( capabilities.maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst colorSpace = texture.colorSpace;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, colorSpace = NoColorSpace ) {\n\n\t\tlet extension;\n\n\t\tconst transfer = ColorManagement.getTransfer( colorSpace );\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return gl.HALF_FLOAT;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedFormat ) return gl.RED;\n\t\tif ( p === RedIntegerFormat ) return gl.RED_INTEGER;\n\t\tif ( p === RGFormat ) return gl.RG;\n\t\tif ( p === RGIntegerFormat ) return gl.RG_INTEGER;\n\t\tif ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( transfer === SRGBTransfer ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\tif ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\tif ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// RGTC\n\n\t\tif ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_rgtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n\t\t\t\tif ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return gl.UNSIGNED_INT_24_8;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// private method\n\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\t// Set default foveation to maximum.\n\t\tlet foveation = 1.0;\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\tconst currentSize = new Vector2();\n\t\tlet currentPixelRatio = null;\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraXR = new ArrayCamera();\n\t\tcameraXR.layers.enable( 1 );\n\t\tcameraXR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace );\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\trenderer.setPixelRatio( currentPixelRatio );\n\t\t\trenderer.setSize( currentSize.width, currentSize.height, false );\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\t\trenderer.getSize( currentSize );\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: gl.RGBA8,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\tthis.setFoveation( foveation );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getEnvironmentBlendMode = function () {\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\treturn session.environmentBlendMode;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].disconnect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.connect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraXR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraXR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraXR.near,\n\t\t\t\t\tdepthFar: cameraXR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraXR.near;\n\t\t\t\t_currentDepthFar = cameraXR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraXR.cameras;\n\n\t\t\tupdateCamera( cameraXR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraXR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraXR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t\t// update user camera and its children\n\n\t\t\tupdateUserCamera( camera, cameraXR, parent );\n\n\t\t};\n\n\t\tfunction updateUserCamera( camera, cameraXR, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrix.copy( cameraXR.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrix.copy( parent.matrixWorld );\n\t\t\t\tcamera.matrix.invert();\n\t\t\t\tcamera.matrix.multiply( cameraXR.matrixWorld );\n\n\t\t\t}\n\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.updateMatrixWorld( true );\n\n\t\t\tcamera.projectionMatrix.copy( cameraXR.projectionMatrix );\n\t\t\tcamera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );\n\n\t\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\t\tcamera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] );\n\t\t\t\tcamera.zoom = 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraXR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer === null && glBaseLayer === null ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn foveation;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( value ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tfoveation = value;\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraXRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraXR's camera list\n\n\t\t\t\tif ( views.length !== cameraXR.cameras.length ) {\n\n\t\t\t\t\tcameraXR.cameras.length = 0;\n\t\t\t\t\tcameraXRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraXR.matrix.copy( camera.matrix );\n\t\t\t\t\t\tcameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraXRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraXR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\tif ( frame.detectedPlanes ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'planesdetected', data: frame } );\n\n\t\t\t}\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshTransformUniform( map, uniform ) {\n\n\t\tif ( map.matrixAutoUpdate === true ) {\n\n\t\t\tmap.updateMatrix();\n\n\t\t}\n\n\t\tuniform.value.copy( map.matrix );\n\n\t}\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tfog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\n\t\t\trefreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform );\n\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.bumpScale.value *= - 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\trefreshTransformUniform( material.normalMap, uniforms.normalMapTransform );\n\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.normalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\n\t\t\trefreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform );\n\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\trefreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\trefreshTransformUniform( material.specularMap, uniforms.specularMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer._useLegacyLights === true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t\trefreshTransformUniform( material.lightMap, uniforms.lightMapTransform );\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\trefreshTransformUniform( material.aoMap, uniforms.aoMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.uvTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\trefreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform );\n\n\t\t}\n\n\t\tuniforms.roughness.value = material.roughness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\trefreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform );\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform );\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t\trefreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tif ( material.anisotropy > 0 ) {\n\n\t\t\tuniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );\n\n\t\t\tif ( material.anisotropyMap ) {\n\n\t\t\t\tuniforms.anisotropyMap.value = material.anisotropyMap;\n\n\t\t\t\trefreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t\trefreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t\trefreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tconst light = properties.get( material ).light;\n\n\t\tuniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld );\n\t\tuniforms.nearDistance.value = light.shadow.camera.near;\n\t\tuniforms.farDistance.value = light.shadow.camera.far;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = ( capabilities.isWebGL2 ) ? gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ) : 0; // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\t\tgl.bufferData( gl.UNIFORM_BUFFER, size, usage );\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\t\tgl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tif ( hasUniformChanged( uniform, i, j, cache ) === true ) {\n\n\t\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\t\tlet arrayOffset = 0;\n\n\t\t\t\t\tfor ( let k = 0; k < values.length; k ++ ) {\n\n\t\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t\t// TODO add integer and struct support\n\t\t\t\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );\n\n\t\t\t\t\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value.elements[ 0 ];\n\t\t\t\t\t\t\tuniform.__data[ 1 ] = value.elements[ 1 ];\n\t\t\t\t\t\t\tuniform.__data[ 2 ] = value.elements[ 2 ];\n\t\t\t\t\t\t\tuniform.__data[ 3 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 4 ] = value.elements[ 3 ];\n\t\t\t\t\t\t\tuniform.__data[ 5 ] = value.elements[ 4 ];\n\t\t\t\t\t\t\tuniform.__data[ 6 ] = value.elements[ 5 ];\n\t\t\t\t\t\t\tuniform.__data[ 7 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 8 ] = value.elements[ 6 ];\n\t\t\t\t\t\t\tuniform.__data[ 9 ] = value.elements[ 7 ];\n\t\t\t\t\t\t\tuniform.__data[ 10 ] = value.elements[ 8 ];\n\t\t\t\t\t\t\tuniform.__data[ 11 ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvalue.toArray( uniform.__data, arrayOffset );\n\n\t\t\t\t\t\t\tarrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, indexArray, cache ) {\n\n\t\tconst value = uniform.value;\n\t\tconst indexString = index + '_' + indexArray;\n\n\t\tif ( cache[ indexString ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tcache[ indexString ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ indexString ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\tconst cachedObject = cache[ indexString ];\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tif ( cachedObject !== value ) {\n\n\t\t\t\t\tcache[ indexString ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\tfor ( let k = 0, kl = values.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t// Calculate the chunk offset\n\t\t\t\t\tconst chunkOffsetUniform = offset % chunkSize;\n\n\t\t\t\t\t// Check for chunk overflow\n\t\t\t\t\tif ( chunkOffsetUniform !== 0 && ( chunkSize - chunkOffsetUniform ) < info.boundary ) {\n\n\t\t\t\t\t\t// Add padding and adjust offset\n\t\t\t\t\t\toffset += ( chunkSize - chunkOffsetUniform );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following two properties will be used for partial buffer updates\n\n\t\t\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\t\t\tuniform.__offset = offset;\n\n\n\t\t\t\t\t// Update the global offset\n\t\t\t\t\toffset += info.storage;\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tconst chunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( value ) {\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t// float/int/bool\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass WebGLRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst {\n\t\t\tcanvas = createCanvasElement(),\n\t\t\tcontext = null,\n\t\t\tdepth = true,\n\t\t\tstencil = true,\n\t\t\talpha = false,\n\t\t\tantialias = false,\n\t\t\tpremultipliedAlpha = true,\n\t\t\tpreserveDrawingBuffer = false,\n\t\t\tpowerPreference = 'default',\n\t\t\tfailIfMajorPerformanceCaveat = false,\n\t\t} = parameters;\n\n\t\tthis.isWebGLRenderer = true;\n\n\t\tlet _alpha;\n\n\t\tif ( context !== null ) {\n\n\t\t\t_alpha = context.getContextAttributes().alpha;\n\n\t\t} else {\n\n\t\t\t_alpha = alpha;\n\n\t\t}\n\n\t\tconst uintClearColor = new Uint32Array( 4 );\n\t\tconst intClearColor = new Int32Array( 4 );\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null;\n\n\t\t// render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = canvas;\n\n\t\t// Debug configuration container\n\t\tthis.debug = {\n\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true,\n\t\t\t/**\n\t\t\t * Callback for custom error reporting.\n\t\t\t * @type {?Function}\n\t\t\t */\n\t\t\tonShaderError: null\n\t\t};\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis._outputColorSpace = SRGBColorSpace;\n\n\t\t// physical lights\n\n\t\tthis._useLegacyLights = false;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\n\t\t// internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false;\n\n\t\t// internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\t\tlet _currentMaterialId = - 1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\t\tconst _currentScissor = new Vector4();\n\t\tlet _currentScissorTest = null;\n\n\t\tconst _currentClearColor = new Color( 0x000000 );\n\t\tlet _currentClearAlpha = 0;\n\n\t\t//\n\n\t\tlet _width = canvas.width;\n\t\tlet _height = canvas.height;\n\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\t\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\t\tlet _scissorTest = false;\n\n\t\t// frustum\n\n\t\tconst _frustum = new Frustum();\n\n\t\t// clipping\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false;\n\n\t\t// transmission\n\n\t\tlet _transmissionRenderTarget = null;\n\n\t\t// camera matrices cache\n\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector2 = new Vector2();\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tlet _gl = context;\n\n\t\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\t\tconst contextName = contextNames[ i ];\n\t\t\t\tconst context = canvas.getContext( contextName, contextAttributes );\n\t\t\t\tif ( context !== null ) return context;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tdepth,\n\t\t\t\tstencil,\n\t\t\t\tantialias,\n\t\t\t\tpremultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer,\n\t\t\t\tpowerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat,\n\t\t\t};\n\n\t\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\t\tif ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t\tcanvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\t\tcontextNames.shift();\n\n\t\t\t\t}\n\n\t\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\t\tif ( _gl === null ) {\n\n\t\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( typeof WebGLRenderingContext !== 'undefined' && _gl instanceof WebGLRenderingContext ) { // @deprecated, r153\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163.' );\n\n\t\t\t}\n\n\t\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\t\tthrow error;\n\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\t\tlet utils, bindingStates, uniformsGroups;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\t\textensions.init( capabilities );\n\n\t\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\t\tinfo = new WebGLInfo( _gl );\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\t\tclipping = new WebGLClipping( properties );\n\t\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\t\trenderLists = new WebGLRenderLists();\n\t\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\t\tbackground = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );\n\t\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\t\tinfo.programs = programCache.programs;\n\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// xr\n\n\t\tconst xr = new WebXRManager( _this, _gl );\n\n\t\tthis.xr = xr;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function ( target ) {\n\n\t\t\treturn target.set( _width, _height );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle = true ) {\n\n\t\t\tif ( xr.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\tcanvas.width = Math.floor( width * _pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * _pixelRatio );\n\n\t\t\tif ( updateStyle === true ) {\n\n\t\t\t\tcanvas.style.width = width + 'px';\n\t\t\t\tcanvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\tcanvas.width = Math.floor( width * pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * pixelRatio );\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getCurrentViewport = function ( target ) {\n\n\t\t\treturn target.copy( _currentViewport );\n\n\t\t};\n\n\t\tthis.getViewport = function ( target ) {\n\n\t\t\treturn target.copy( _viewport );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_viewport.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\t};\n\n\t\tthis.getScissor = function ( target ) {\n\n\t\t\treturn target.copy( _scissor );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_scissor.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn _scissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\tthis.setOpaqueSort = function ( method ) {\n\n\t\t\t_opaqueSort = method;\n\n\t\t};\n\n\t\tthis.setTransparentSort = function ( method ) {\n\n\t\t\t_transparentSort = method;\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function ( target ) {\n\n\t\t\treturn target.copy( background.getClearColor() );\n\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\n\t\t\tbackground.setClearColor.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn background.getClearAlpha();\n\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\n\t\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\t\tlet bits = 0;\n\n\t\t\tif ( color ) {\n\n\t\t\t\t// check if we're trying to clear an integer target\n\t\t\t\tlet isIntegerFormat = false;\n\t\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t\tconst targetFormat = _currentRenderTarget.texture.format;\n\t\t\t\t\tisIntegerFormat = targetFormat === RGBAIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RGIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RedIntegerFormat;\n\n\t\t\t\t}\n\n\t\t\t\t// use the appropriate clear functions to clear the target if it's a signed\n\t\t\t\t// or unsigned integer target\n\t\t\t\tif ( isIntegerFormat ) {\n\n\t\t\t\t\tconst targetType = _currentRenderTarget.texture.type;\n\t\t\t\t\tconst isUnsignedType = targetType === UnsignedByteType ||\n\t\t\t\t\t\ttargetType === UnsignedIntType ||\n\t\t\t\t\t\ttargetType === UnsignedShortType ||\n\t\t\t\t\t\ttargetType === UnsignedInt248Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort4444Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort5551Type;\n\n\t\t\t\t\tconst clearColor = background.getClearColor();\n\t\t\t\t\tconst a = background.getClearAlpha();\n\t\t\t\t\tconst r = clearColor.r;\n\t\t\t\t\tconst g = clearColor.g;\n\t\t\t\t\tconst b = clearColor.b;\n\n\t\t\t\t\tif ( isUnsignedType ) {\n\n\t\t\t\t\t\tuintClearColor[ 0 ] = r;\n\t\t\t\t\t\tuintClearColor[ 1 ] = g;\n\t\t\t\t\t\tuintClearColor[ 2 ] = b;\n\t\t\t\t\t\tuintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tintClearColor[ 0 ] = r;\n\t\t\t\t\t\tintClearColor[ 1 ] = g;\n\t\t\t\t\t\tintClearColor[ 2 ] = b;\n\t\t\t\t\t\tintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferiv( _gl.COLOR, 0, intClearColor );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbits |= _gl.COLOR_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif ( stencil ) {\n\n\t\t\t\tbits |= _gl.STENCIL_BUFFER_BIT;\n\t\t\t\tthis.state.buffers.stencil.setMask( 0xffffffff );\n\n\t\t\t}\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\tcanvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\tuniformsGroups.dispose();\n\t\t\tprogramCache.dispose();\n\n\t\t\txr.dispose();\n\n\t\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t\t_transmissionRenderTarget = null;\n\n\t\t\t}\n\n\t\t\tanimation.stop();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( /* event */ ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\n\t\t\tinitGLContext();\n\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\n\t\t}\n\n\t\tfunction onContextCreationError( event ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tconst material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReferences( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\t\tconst programs = properties.get( material ).programs;\n\n\t\t\tif ( programs !== undefined ) {\n\n\t\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t\t} );\n\n\t\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\t//\n\n\t\t\tlet index = geometry.index;\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\n\t\t\t\tif ( index === undefined ) return;\n\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst drawRange = geometry.drawRange;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet drawStart = drawRange.start * rangeFactor;\n\t\t\tlet drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;\n\n\t\t\tif ( group !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, group.start * rangeFactor );\n\t\t\t\tdrawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );\n\n\t\t\t}\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, index.count );\n\n\t\t\t} else if ( position !== undefined && position !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, position.count );\n\n\t\t\t}\n\n\t\t\tconst drawCount = drawEnd - drawStart;\n\n\t\t\tif ( drawCount < 0 || drawCount === Infinity ) return;\n\n\t\t\t//\n\n\t\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\trenderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );\n\n\t\t\t} else if ( object.isInstancedMesh ) {\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tconst maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;\n\t\t\t\tconst instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Compile\n\n\t\tfunction prepareMaterial( material, scene, object ) {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.compile = function ( scene, camera, targetScene = null ) {\n\n\t\t\tif ( targetScene === null ) targetScene = scene;\n\n\t\t\tcurrentRenderState = renderStates.get( targetScene );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t// gather lights from both the target scene and the new object that will be added to the scene.\n\n\t\t\ttargetScene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tif ( scene !== targetScene ) {\n\n\t\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\t// Only initialize materials in the new scene, not the targetScene.\n\n\t\t\tconst materials = new Set();\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material ) {\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\t\tprepareMaterial( material2, targetScene, object );\n\t\t\t\t\t\t\tmaterials.add( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tprepareMaterial( material, targetScene, object );\n\t\t\t\t\t\tmaterials.add( material );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\trenderStateStack.pop();\n\t\t\tcurrentRenderState = null;\n\n\t\t\treturn materials;\n\n\t\t};\n\n\t\t// compileAsync\n\n\t\tthis.compileAsync = function ( scene, camera, targetScene = null ) {\n\n\t\t\tconst materials = this.compile( scene, camera, targetScene );\n\n\t\t\t// Wait for all the materials in the new object to indicate that they're\n\t\t\t// ready to be used before resolving the promise.\n\n\t\t\treturn new Promise( ( resolve ) => {\n\n\t\t\t\tfunction checkMaterialsReady() {\n\n\t\t\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\t\t\tconst materialProperties = properties.get( material );\n\t\t\t\t\t\tconst program = materialProperties.currentProgram;\n\n\t\t\t\t\t\tif ( program.isReady() ) {\n\n\t\t\t\t\t\t\t// remove any programs that report they're ready to use from the list\n\t\t\t\t\t\t\tmaterials.delete( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\t// once the list of compiling materials is empty, call the callback\n\n\t\t\t\t\tif ( materials.size === 0 ) {\n\n\t\t\t\t\t\tresolve( scene );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if some materials are still not ready, wait a bit and check again\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) {\n\n\t\t\t\t\t// If we can check the compilation status of the materials without\n\t\t\t\t\t// blocking then do so right away.\n\n\t\t\t\t\tcheckMaterialsReady();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise start by waiting a bit to give the materials we just\n\t\t\t\t\t// initialized a chance to finish.\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time ) {\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\n\t\t\tanimation.start();\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop( callback );\n\n\t\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t\t};\n\n\t\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost === true ) return;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t\t}\n\n\t\t\t//\n\t\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\t\tcurrentRenderList.init();\n\n\t\t\trenderListStack.push( currentRenderList );\n\n\t\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tthis.info.render.frame ++;\n\n\t\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t\t//\n\n\t\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\n\t\t\t//\n\n\t\t\tbackground.render( currentRenderList, scene );\n\n\t\t\t// render scene\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t\t// _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\trenderStateStack.pop();\n\n\t\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderState = null;\n\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderList = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tconst visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isGroup ) {\n\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( object.boundingSphere.center );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( geometry.boundingSphere.center );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_vector3\n\t\t\t\t\t\t\t\t.applyMatrix4( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );\n\n\t\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t}\n\n\t\tfunction renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tif ( overrideMaterial !== null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tsamples: ( isWebGL2 ) ? 4 : 0\n\t\t\t\t} );\n\n\t\t\t\t// debug\n\n\t\t\t\t/*\n\t\t\t\tconst geometry = new PlaneGeometry();\n\t\t\t\tconst material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );\n\n\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\tscene.add( mesh );\n\t\t\t\t*/\n\n\t\t\t}\n\n\t\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t\t} else {\n\n\t\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\n\t\t\t_this.getClearColor( _currentClearColor );\n\t\t\t_currentClearAlpha = _this.getClearAlpha();\n\t\t\tif ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );\n\n\t\t\t_this.clear();\n\n\t\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t\tlet renderTargetNeedsUpdate = false;\n\n\t\t\tfor ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = transmissiveObjects[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = renderItem.material;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tconst currentSide = material.side;\n\n\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t\tmaterial.side = currentSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderTargetNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetNeedsUpdate === true ) {\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\t\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t\t\t_this.setClearColor( _currentClearColor, _currentClearAlpha );\n\n\t\t\t_this.toneMapping = currentToneMapping;\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction getProgram( material, scene, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tconst lightsStateVersion = lights.state.version;\n\n\t\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\t\tlet programs = materialProperties.programs;\n\n\t\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\t\tif ( programs === undefined ) {\n\n\t\t\t\t// new material\n\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\n\t\t\t}\n\n\t\t\tlet program = programs.get( programCacheKey );\n\n\t\t\tif ( program !== undefined ) {\n\n\t\t\t\t// early out if program and light state is identical\n\n\t\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\t\treturn program;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = null;\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction getUniformList( materialProperties ) {\n\n\t\t\tif ( materialProperties.uniformsList === null ) {\n\n\t\t\t\tconst progUniforms = materialProperties.currentProgram.getUniforms();\n\t\t\t\tmaterialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms );\n\n\t\t\t}\n\n\t\t\treturn materialProperties.uniformsList;\n\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tmaterialProperties.outputColorSpace = parameters.outputColorSpace;\n\t\t\tmaterialProperties.batching = parameters.batching;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.instancingColor = parameters.instancingColor;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t\t}\n\n\t\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );\n\t\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );\n\t\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\t\tconst morphColors = !! geometry.morphAttributes.color;\n\n\t\t\tlet toneMapping = NoToneMapping;\n\n\t\t\tif ( material.toneMapped ) {\n\n\t\t\t\tif ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\t\ttoneMapping = _this.toneMapping;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tconst materialProperties = properties.get( material );\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif ( _clippingEnabled === true ) {\n\n\t\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\t\tconst useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.outputColorSpace !== colorSpace ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batching === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isBatchedMesh && materialProperties.batching === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif ( needsProgramChange === true ) {\n\n\t\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\t\t// common camera uniforms\n\n\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t\t}\n\n\t\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );\n\n\t\t\t}\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, program );\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t\t}\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\n\t\t\t}\n\n\t\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t\t}\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\t// UBOs\n\n\t\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\tfunction materialNeedsLights( material ) {\n\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\n\t\t\treturn _currentActiveCubeFace;\n\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\n\t\t\treturn _currentActiveMipmapLevel;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tlet useDefaultFramebuffer = true;\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\t\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t\t}\n\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t\t_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t\t}\n\n\t\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\t\tconst levelScale = Math.pow( 2, - level );\n\t\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tconst width = srcTexture.image.width;\n\t\t\tconst height = srcTexture.image.height;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t\t// As another texture upload may have changed pixelStorei\n\t\t\t// parameters, make sure they are correct for the dstTexture\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\t\t\tlet glTarget;\n\n\t\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\n\t\t\t} else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tconst unpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst unpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst unpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst unpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst unpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, sourceBox.min.x );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );\n\n\t\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, unpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, unpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, unpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, unpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.initTexture = function ( texture ) {\n\n\t\t\tif ( texture.isCubeTexture ) {\n\n\t\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t\t} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.resetState = function () {\n\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\n\t\t};\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tget coordinateSystem() {\n\n\t\treturn WebGLCoordinateSystem;\n\n\t}\n\n\tget outputColorSpace() {\n\n\t\treturn this._outputColorSpace;\n\n\t}\n\n\tset outputColorSpace( colorSpace ) {\n\n\t\tthis._outputColorSpace = colorSpace;\n\n\t\tconst gl = this.getContext();\n\t\tgl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\t\tgl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\n\t}\n\n\tget outputEncoding() { // @deprecated, r152\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );\n\t\treturn this.outputColorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;\n\n\t}\n\n\tset outputEncoding( encoding ) { // @deprecated, r152\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );\n\t\tthis.outputColorSpace = encoding === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n\n\t}\n\n\tget useLegacyLights() { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\treturn this._useLegacyLights;\n\n\t}\n\n\tset useLegacyLights( value ) { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\tthis._useLegacyLights = value;\n\n\t}\n\n}\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.backgroundBlurriness = 0;\n\t\tthis.backgroundIntensity = 1;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = material;\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance,\n\t\t\t\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = AttachedBindMode;\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tapplyBoneTransform( index, vector ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( vector ).applyMatrix4( this.bindMatrix );\n\n\t\tvector.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\tvector.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn vector.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n\tboneTransform( index, vector ) { // @deprecated, r151\n\n\t\tconsole.warn( 'THREE.SkinnedMesh: .boneTransform() was renamed to .applyBoneTransform() in r151.' );\n\t\treturn this.applyBoneTransform( index, vector );\n\n\t}\n\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix$1 = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix$1;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$3 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$3.copy( this.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( drawRange, z ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: - 1,\n\t\t\t\tcount: - 1,\n\t\t\t\tz: - 1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = drawRange.start;\n\t\titem.count = drawRange.count;\n\t\titem.z = z;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst ID_ATTR_NAME = 'batchId';\nconst _matrix = /*@__PURE__*/ new Matrix4();\nconst _invMatrixWorld = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\nconst _projScreenMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// @TODO: SkinnedMesh support?\n// @TODO: geometry.groups support?\n// @TODO: geometry.drawRange support?\n// @TODO: geometry.morphAttributes support?\n// @TODO: Support uniform parameter per geometry\n// @TODO: Add an \"optimize\" function to pack geometry and remove data gaps\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\nclass BatchedMesh extends Mesh {\n\n\tget maxGeometryCount() {\n\n\t\treturn this._maxGeometryCount;\n\n\t}\n\n\tconstructor( maxGeometryCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\tthis.isBatchedMesh = true;\n\t\tthis.perObjectFrustumCulled = true;\n\t\tthis.sortObjects = true;\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\t\tthis.customSort = null;\n\n\t\tthis._drawRanges = [];\n\t\tthis._reservedRanges = [];\n\n\t\tthis._visibility = [];\n\t\tthis._active = [];\n\t\tthis._bounds = [];\n\n\t\tthis._maxGeometryCount = maxGeometryCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tthis._geometryInitialized = false;\n\t\tthis._geometryCount = 0;\n\t\tthis._multiDrawCounts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._visibilityChanged = true;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\n\t\tthis._initMatricesTexture();\n\n\t}\n\n\t_initMatricesTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 matrices * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxGeometryCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxGeometryCount = this._maxGeometryCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new srcAttribute.constructor( dstArray, itemSize, normalized );\n\t\t\t\tdstAttribute.setUsage( srcAttribute.usage );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\tconst indexArray = maxVertexCount > 65536\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tconst idArray = maxGeometryCount > 65536\n\t\t\t\t? new Uint32Array( maxVertexCount )\n\t\t\t\t: new Uint16Array( maxVertexCount );\n\t\t\tgeometry.setAttribute( ID_ATTR_NAME, new BufferAttribute( idArray, 1 ) );\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry atributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check that the geometry doesn't have a version of our reserved id attribute\n\t\tif ( geometry.getAttribute( ID_ATTR_NAME ) ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Geometry cannot use attribute \"${ ID_ATTR_NAME }\"` );\n\n\t\t}\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst active = this._active;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\tthis.getBoundingBoxAt( i, _box$1 ).applyMatrix4( _matrix );\n\t\t\tboundingBox.union( _box$1 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingSphere = this.boundingSphere;\n\t\tconst active = this._active;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\taddGeometry( geometry, vertexCount = - 1, indexCount = - 1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\t// ensure we're not over geometry\n\t\tif ( this._geometryCount >= this._maxGeometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\t// get the necessary range fo the geometry\n\t\tconst reservedRange = {\n\t\t\tvertexStart: - 1,\n\t\t\tvertexCount: - 1,\n\t\t\tindexStart: - 1,\n\t\t\tindexCount: - 1,\n\t\t};\n\n\t\tlet lastRange = null;\n\t\tconst reservedRanges = this._reservedRanges;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst bounds = this._bounds;\n\t\tif ( this._geometryCount !== 0 ) {\n\n\t\t\tlastRange = reservedRanges[ reservedRanges.length - 1 ];\n\n\t\t}\n\n\t\tif ( vertexCount === - 1 ) {\n\n\t\t\treservedRange.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexCount = vertexCount;\n\n\t\t}\n\n\t\tif ( lastRange === null ) {\n\n\t\t\treservedRange.vertexStart = 0;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexStart = lastRange.vertexStart + lastRange.vertexCount;\n\n\t\t}\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tif ( indexCount\t=== - 1 ) {\n\n\t\t\t\treservedRange.indexCount = index.count;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexCount = indexCount;\n\n\t\t\t}\n\n\t\t\tif ( lastRange === null ) {\n\n\t\t\t\treservedRange.indexStart = 0;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexStart = lastRange.indexStart + lastRange.indexCount;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (\n\t\t\treservedRange.indexStart !== - 1 &&\n\t\t\treservedRange.indexStart + reservedRange.indexCount > this._maxIndexCount ||\n\t\t\treservedRange.vertexStart + reservedRange.vertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\n\t\t// push new visibility states\n\t\tvisibility.push( true );\n\t\tactive.push( true );\n\n\t\t// update id\n\t\tconst geometryId = this._geometryCount;\n\t\tthis._geometryCount ++;\n\n\t\t// initialize matrix information\n\t\t_identityMatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\t// add the reserved range and draw range objects\n\t\treservedRanges.push( reservedRange );\n\t\tdrawRanges.push( {\n\t\t\tstart: hasIndex ? reservedRange.indexStart : reservedRange.vertexStart,\n\t\t\tcount: - 1\n\t\t} );\n\t\tbounds.push( {\n\t\t\tboxInitialized: false,\n\t\t\tbox: new Box3(),\n\n\t\t\tsphereInitialized: false,\n\t\t\tsphere: new Sphere()\n\t\t} );\n\n\t\t// set the id for the geometry\n\t\tconst idAttribute = this.geometry.getAttribute( ID_ATTR_NAME );\n\t\tfor ( let i = 0; i < reservedRange.vertexCount; i ++ ) {\n\n\t\t\tidAttribute.setX( reservedRange.vertexStart + i, geometryId );\n\n\t\t}\n\n\t\tidAttribute.needsUpdate = true;\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\treturn geometryId;\n\n\t}\n\n\tsetGeometryAt( id, geometry ) {\n\n\t\tif ( id >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst reservedRange = this._reservedRanges[ id ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > reservedRange.indexCount ||\n\t\t\tgeometry.attributes.position.count > reservedRange.vertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry over\n\t\tconst vertexStart = reservedRange.vertexStart;\n\t\tconst vertexCount = reservedRange.vertexCount;\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = vertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = reservedRange.indexStart;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedRange.indexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\n\t\t}\n\n\t\t// store the bounding boxes\n\t\tconst bound = this._bounds[ id ];\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tbound.box.copy( geometry.boundingBox );\n\t\t\tbound.boxInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.boxInitialized = false;\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tbound.sphere.copy( geometry.boundingSphere );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.sphereInitialized = false;\n\n\t\t}\n\n\t\t// set drawRange count\n\t\tconst drawRange = this._drawRanges[ id ];\n\t\tconst posAttr = geometry.getAttribute( 'position' );\n\t\tdrawRange.count = hasIndex ? srcIndex.count : posAttr.count;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn id;\n\n\t}\n\n\tdeleteGeometry( geometryId ) {\n\n\t\t// Note: User needs to call optimize() afterward to pack the data.\n\n\t\tconst active = this._active;\n\t\tif ( geometryId >= active.length || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tactive[ geometryId ] = false;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t// get bounding box and compute it if it doesn't exist\n\tgetBoundingBoxAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst bound = this._bounds[ id ];\n\t\tconst box = bound.box;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.boxInitialized === false ) {\n\n\t\t\tbox.makeEmpty();\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tbound.boxInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( box );\n\t\treturn target;\n\n\t}\n\n\t// get bounding sphere and compute it if it doesn't exist\n\tgetBoundingSphereAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst bound = this._bounds[ id ];\n\t\tconst sphere = bound.sphere;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.sphereInitialized === false ) {\n\n\t\t\tsphere.makeEmpty();\n\n\t\t\tthis.getBoundingBoxAt( id, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( sphere );\n\t\treturn target;\n\n\t}\n\n\tsetMatrixAt( geometryId, matrix ) {\n\n\t\t// @TODO: Map geometryId to index of the arrays because\n\t\t// optimize() can make geometryId mismatch the index\n\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tmatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetMatrixAt( geometryId, matrix ) {\n\n\t\tconst active = this._active;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn matrix.fromArray( matricesArray, geometryId * 16 );\n\n\t}\n\n\tsetVisibleAt( geometryId, value ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// if the geometry is out of range, not active, or visibility state\n\t\t// does not change then return early\n\t\tif (\n\t\t\tgeometryId >= geometryCount ||\n\t\t\tactive[ geometryId ] === false ||\n\t\t\tvisibility[ geometryId ] === value\n\t\t) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvisibility[ geometryId ] = value;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetVisibleAt( geometryId ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// return early if the geometry is out of range or not active\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn visibility[ geometryId ];\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( ! visibility[ i ] || ! active[ i ] ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst drawRange = drawRanges[ i ];\n\t\t\t_mesh.geometry.setDrawRange( drawRange.start, drawRange.count );\n\n\t\t\t// ge the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( i, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( i, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._drawRanges = source._drawRanges.map( range => ( { ...range } ) );\n\t\tthis._reservedRanges = source._reservedRanges.map( range => ( { ...range } ) );\n\n\t\tthis._visibility = source._visibility.slice();\n\t\tthis._active = source._active.slice();\n\t\tthis._bounds = source._bounds.map( bound => ( {\n\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\tbox: bound.box.clone(),\n\n\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\tsphere: bound.sphere.clone()\n\t\t} ) );\n\n\t\tthis._maxGeometryCount = source._maxGeometryCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._geometryCount = source._geometryCount;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.slice();\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\t\treturn this;\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst visibility = this._visibility;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t_projScreenMatrix$2\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\trenderer.isWebGPURenderer ? WebGPUCoordinateSystem : WebGLCoordinateSystem\n\t\t\t);\n\n\t\t}\n\n\t\tlet count = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_invMatrixWorld.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _invMatrixWorld );\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] ) {\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst z = _vector$5.distanceTo( _sphere$2.center );\n\t\t\t\t\t\t_renderList.push( drawRanges[ i ], z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ count ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ count ] = item.count;\n\t\t\t\tcount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] ) {\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst range = drawRanges[ i ];\n\t\t\t\t\t\tmultiDrawStarts[ count ] = range.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ count ] = range.count;\n\t\t\t\t\t\tcount ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._multiDrawCount = count;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CompressedArrayTexture extends CompressedTexture {\n\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\tthis.isCompressedArrayTexture = true;\n\t\tthis.image.depth = depth;\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t}\n\n}\n\nclass CompressedCubeTexture extends CompressedTexture {\n\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\tthis.isCompressedCubeTexture = true;\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tlength: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.4)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\touterNode = eliminateHole( queue[ i ], outerNode );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === 0 ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) >= ( ax - px ) * ( cy - py ) &&\n ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = 0;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.anisotropyRotation = 0;\n\t\tthis.anisotropyMap = null;\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = Infinity;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nconst AnimationUtils = {\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = this.times.slice();\n\t\tconst values = this.values.slice();\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' ) || response.headers.get( 'X-File-Size' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t} else if ( texData.encoding !== undefined ) { // @deprecated, r152\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay;\n\n\t\tthis.map = null;\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay;\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = MaterialLoader.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== undefined ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding; // @deprecated, r152\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxGeometryCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._visibility = data.visibility;\n\t\t\t\tobject._active = data.active;\n\t\t\t\tobject._bounds = data.bounds.map( bound => {\n\n\t\t\t\t\tconst box = new Box3();\n\t\t\t\t\tbox.min.fromArray( bound.boxMin );\n\t\t\t\t\tbox.max.fromArray( bound.boxMax );\n\n\t\t\t\t\tconst sphere = new Sphere();\n\t\t\t\t\tsphere.radius = bound.sphereRadius;\n\t\t\t\t\tsphere.center.fromArray( bound.sphereCenter );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\t\t\tbox: box,\n\n\t\t\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\t\t\tsphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\n\t\t\t\tobject._maxGeometryCount = data.maxGeometryCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.up !== undefined ) object.up.fromArray( data.up );\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance, level.hysteresis );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} ).catch( e => {\n\n\t\t\t\t\tif ( onError ) onError( e );\n\n\t\t\t\t} );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tconst promise = fetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tCache.remove( url );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( url, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nclass AudioContext {\n\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet _id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DisplayP3ColorSpace, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, Float64BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearDisplayP3ColorSpace, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, P3Primaries, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, Rec709Primaries, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, TwoPassDoubleSide, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, createCanvasElement, sRGBEncoding };\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3,\n\tPlane,\n\tRay,\n\tMathUtils\n} from 'three';\n\n// OrbitControls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nconst _changeEvent = { type: 'change' };\nconst _startEvent = { type: 'start' };\nconst _endEvent = { type: 'end' };\nconst _ray = new Ray();\nconst _plane = new Plane();\nconst TILT_LIMIT = Math.cos( 70 * MathUtils.DEG2RAD );\n\nclass OrbitControls extends EventDispatcher {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper();\n\n\t\tthis.object = object;\n\t\tthis.domElement = domElement;\n\t\tthis.domElement.style.touchAction = 'none'; // disable touch scroll\n\n\t\t// Set to false to disable this control\n\t\tthis.enabled = true;\n\n\t\t// \"target\" sets the location of focus, where the object orbits around\n\t\tthis.target = new Vector3();\n\n\t\t// Sets the 3D cursor (similar to Blender), from which the maxTargetRadius takes effect\n\t\tthis.cursor = new Vector3();\n\n\t\t// How far you can dolly in and out ( PerspectiveCamera only )\n\t\tthis.minDistance = 0;\n\t\tthis.maxDistance = Infinity;\n\n\t\t// How far you can zoom in and out ( OrthographicCamera only )\n\t\tthis.minZoom = 0;\n\t\tthis.maxZoom = Infinity;\n\n\t\t// Limit camera target within a spherical area around the cursor\n\t\tthis.minTargetRadius = 0;\n\t\tthis.maxTargetRadius = Infinity;\n\n\t\t// How far you can orbit vertically, upper and lower limits.\n\t\t// Range is 0 to Math.PI radians.\n\t\tthis.minPolarAngle = 0; // radians\n\t\tthis.maxPolarAngle = Math.PI; // radians\n\n\t\t// How far you can orbit horizontally, upper and lower limits.\n\t\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\t\tthis.minAzimuthAngle = - Infinity; // radians\n\t\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t\t// Set to true to enable damping (inertia)\n\t\t// If damping is enabled, you must call controls.update() in your animation loop\n\t\tthis.enableDamping = false;\n\t\tthis.dampingFactor = 0.05;\n\n\t\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t\t// Set to false to disable zooming\n\t\tthis.enableZoom = true;\n\t\tthis.zoomSpeed = 1.0;\n\n\t\t// Set to false to disable rotating\n\t\tthis.enableRotate = true;\n\t\tthis.rotateSpeed = 1.0;\n\n\t\t// Set to false to disable panning\n\t\tthis.enablePan = true;\n\t\tthis.panSpeed = 1.0;\n\t\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\t\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\t\tthis.zoomToCursor = false;\n\n\t\t// Set to true to automatically rotate around the target\n\t\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\t\tthis.autoRotate = false;\n\t\tthis.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60\n\n\t\t// The four arrow keys\n\t\tthis.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };\n\n\t\t// Mouse buttons\n\t\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t\t// Touch fingers\n\t\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t\t// for reset\n\t\tthis.target0 = this.target.clone();\n\t\tthis.position0 = this.object.position.clone();\n\t\tthis.zoom0 = this.object.zoom;\n\n\t\t// the target DOM element for key events\n\t\tthis._domElementKeyEvents = null;\n\n\t\t//\n\t\t// public methods\n\t\t//\n\n\t\tthis.getPolarAngle = function () {\n\n\t\t\treturn spherical.phi;\n\n\t\t};\n\n\t\tthis.getAzimuthalAngle = function () {\n\n\t\t\treturn spherical.theta;\n\n\t\t};\n\n\t\tthis.getDistance = function () {\n\n\t\t\treturn this.object.position.distanceTo( this.target );\n\n\t\t};\n\n\t\tthis.listenToKeyEvents = function ( domElement ) {\n\n\t\t\tdomElement.addEventListener( 'keydown', onKeyDown );\n\t\t\tthis._domElementKeyEvents = domElement;\n\n\t\t};\n\n\t\tthis.stopListenToKeyEvents = function () {\n\n\t\t\tthis._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\t\t\tthis._domElementKeyEvents = null;\n\n\t\t};\n\n\t\tthis.saveState = function () {\n\n\t\t\tscope.target0.copy( scope.target );\n\t\t\tscope.position0.copy( scope.object.position );\n\t\t\tscope.zoom0 = scope.object.zoom;\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tscope.target.copy( scope.target0 );\n\t\t\tscope.object.position.copy( scope.position0 );\n\t\t\tscope.object.zoom = scope.zoom0;\n\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\tscope.update();\n\n\t\t\tstate = STATE.NONE;\n\n\t\t};\n\n\t\t// this method is exposed, but perhaps it would be better if we can make it private...\n\t\tthis.update = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\t// so camera.up is the orbit axis\n\t\t\tconst quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\t\tconst quatInverse = quat.clone().invert();\n\n\t\t\tconst lastPosition = new Vector3();\n\t\t\tconst lastQuaternion = new Quaternion();\n\t\t\tconst lastTargetPosition = new Vector3();\n\n\t\t\tconst twoPI = 2 * Math.PI;\n\n\t\t\treturn function update( deltaTime = null ) {\n\n\t\t\t\tconst position = scope.object.position;\n\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t\t// angle from z-axis around y-axis\n\t\t\t\tspherical.setFromVector3( offset );\n\n\t\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\t\trotateLeft( getAutoRotationAngle( deltaTime ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t\t}\n\n\t\t\t\t// restrict theta to be between desired limits\n\n\t\t\t\tlet min = scope.minAzimuthAngle;\n\t\t\t\tlet max = scope.maxAzimuthAngle;\n\n\t\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\t\tif ( min <= max ) {\n\n\t\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// restrict phi to be between desired limits\n\t\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\t\tspherical.makeSafe();\n\n\n\t\t\t\t// move target to panned location\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t\t}\n\n\t\t\t\t// Limit the target distance from the cursor to create a sphere around the center of interest\n\t\t\t\tscope.target.sub( scope.cursor );\n\t\t\t\tscope.target.clampLength( scope.minTargetRadius, scope.maxTargetRadius );\n\t\t\t\tscope.target.add( scope.cursor );\n\n\t\t\t\t// adjust the camera position based on zoom only if we're not zooming to the cursor or if it's an ortho camera\n\t\t\t\t// we adjust zoom later in these cases\n\t\t\t\tif ( scope.zoomToCursor && performCursorZoom || scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\tspherical.radius = clampDistance( spherical.radius );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.radius = clampDistance( spherical.radius * scale );\n\n\t\t\t\t}\n\n\t\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t// adjust camera position\n\t\t\t\tlet zoomChanged = false;\n\t\t\t\tif ( scope.zoomToCursor && performCursorZoom ) {\n\n\t\t\t\t\tlet newRadius = null;\n\t\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t\t// move the camera down the pointer ray\n\t\t\t\t\t\t// this method avoids floating point error\n\t\t\t\t\t\tconst prevRadius = offset.length();\n\t\t\t\t\t\tnewRadius = clampDistance( prevRadius * scale );\n\n\t\t\t\t\t\tconst radiusDelta = prevRadius - newRadius;\n\t\t\t\t\t\tscope.object.position.addScaledVector( dollyDirection, radiusDelta );\n\t\t\t\t\t\tscope.object.updateMatrixWorld();\n\n\t\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\t\t// adjust the ortho camera position based on zoom changes\n\t\t\t\t\t\tconst mouseBefore = new Vector3( mouse.x, mouse.y, 0 );\n\t\t\t\t\t\tmouseBefore.unproject( scope.object );\n\n\t\t\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) );\n\t\t\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\t\t\tzoomChanged = true;\n\n\t\t\t\t\t\tconst mouseAfter = new Vector3( mouse.x, mouse.y, 0 );\n\t\t\t\t\t\tmouseAfter.unproject( scope.object );\n\n\t\t\t\t\t\tscope.object.position.sub( mouseAfter ).add( mouseBefore );\n\t\t\t\t\t\tscope.object.updateMatrixWorld();\n\n\t\t\t\t\t\tnewRadius = offset.length();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.' );\n\t\t\t\t\t\tscope.zoomToCursor = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// handle the placement of the target\n\t\t\t\t\tif ( newRadius !== null ) {\n\n\t\t\t\t\t\tif ( this.screenSpacePanning ) {\n\n\t\t\t\t\t\t\t// position the orbit target in front of the new camera position\n\t\t\t\t\t\t\tscope.target.set( 0, 0, - 1 )\n\t\t\t\t\t\t\t\t.transformDirection( scope.object.matrix )\n\t\t\t\t\t\t\t\t.multiplyScalar( newRadius )\n\t\t\t\t\t\t\t\t.add( scope.object.position );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// get the ray and translation plane to compute target\n\t\t\t\t\t\t\t_ray.origin.copy( scope.object.position );\n\t\t\t\t\t\t\t_ray.direction.set( 0, 0, - 1 ).transformDirection( scope.object.matrix );\n\n\t\t\t\t\t\t\t// if the camera is 20 degrees above the horizon then don't adjust the focus target to avoid\n\t\t\t\t\t\t\t// extremely large values\n\t\t\t\t\t\t\tif ( Math.abs( scope.object.up.dot( _ray.direction ) ) < TILT_LIMIT ) {\n\n\t\t\t\t\t\t\t\tobject.lookAt( scope.target );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t_plane.setFromNormalAndCoplanarPoint( scope.object.up, scope.target );\n\t\t\t\t\t\t\t\t_ray.intersectPlane( _plane, scope.target );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) );\n\t\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\t\tzoomChanged = true;\n\n\t\t\t\t}\n\n\t\t\t\tscale = 1;\n\t\t\t\tperformCursorZoom = false;\n\n\t\t\t\t// update condition is:\n\t\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\t\tif ( zoomChanged ||\n\t\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ||\n\t\t\t\t\tlastTargetPosition.distanceToSquared( scope.target ) > 0 ) {\n\n\t\t\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\t\tlastTargetPosition.copy( scope.target );\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t};\n\n\t\t}();\n\n\t\tthis.dispose = function () {\n\n\t\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu );\n\n\t\t\tscope.domElement.removeEventListener( 'pointerdown', onPointerDown );\n\t\t\tscope.domElement.removeEventListener( 'pointercancel', onPointerUp );\n\t\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel );\n\n\t\t\tscope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t\tscope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\n\t\t\tif ( scope._domElementKeyEvents !== null ) {\n\n\t\t\t\tscope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\t\t\t\tscope._domElementKeyEvents = null;\n\n\t\t\t}\n\n\t\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t\t};\n\n\t\t//\n\t\t// internals\n\t\t//\n\n\t\tconst scope = this;\n\n\t\tconst STATE = {\n\t\t\tNONE: - 1,\n\t\t\tROTATE: 0,\n\t\t\tDOLLY: 1,\n\t\t\tPAN: 2,\n\t\t\tTOUCH_ROTATE: 3,\n\t\t\tTOUCH_PAN: 4,\n\t\t\tTOUCH_DOLLY_PAN: 5,\n\t\t\tTOUCH_DOLLY_ROTATE: 6\n\t\t};\n\n\t\tlet state = STATE.NONE;\n\n\t\tconst EPS = 0.000001;\n\n\t\t// current position in spherical coordinates\n\t\tconst spherical = new Spherical();\n\t\tconst sphericalDelta = new Spherical();\n\n\t\tlet scale = 1;\n\t\tconst panOffset = new Vector3();\n\n\t\tconst rotateStart = new Vector2();\n\t\tconst rotateEnd = new Vector2();\n\t\tconst rotateDelta = new Vector2();\n\n\t\tconst panStart = new Vector2();\n\t\tconst panEnd = new Vector2();\n\t\tconst panDelta = new Vector2();\n\n\t\tconst dollyStart = new Vector2();\n\t\tconst dollyEnd = new Vector2();\n\t\tconst dollyDelta = new Vector2();\n\n\t\tconst dollyDirection = new Vector3();\n\t\tconst mouse = new Vector2();\n\t\tlet performCursorZoom = false;\n\n\t\tconst pointers = [];\n\t\tconst pointerPositions = {};\n\n\t\tlet controlActive = false;\n\n\t\tfunction getAutoRotationAngle( deltaTime ) {\n\n\t\t\tif ( deltaTime !== null ) {\n\n\t\t\t\treturn ( 2 * Math.PI / 60 * scope.autoRotateSpeed ) * deltaTime;\n\n\t\t\t} else {\n\n\t\t\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getZoomScale( delta ) {\n\n\t\t\tconst normalizedDelta = Math.abs( delta * 0.01 );\n\t\t\treturn Math.pow( 0.95, scope.zoomSpeed * normalizedDelta );\n\n\t\t}\n\n\t\tfunction rotateLeft( angle ) {\n\n\t\t\tsphericalDelta.theta -= angle;\n\n\t\t}\n\n\t\tfunction rotateUp( angle ) {\n\n\t\t\tsphericalDelta.phi -= angle;\n\n\t\t}\n\n\t\tconst panLeft = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\t\tv.multiplyScalar( - distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\tconst panUp = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t\t}\n\n\t\t\t\tv.multiplyScalar( distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\t// deltaX and deltaY are in pixels; right and down are positive\n\t\tconst pan = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\t\tconst element = scope.domElement;\n\n\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t// perspective\n\t\t\t\t\tconst position = scope.object.position;\n\t\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\t\tlet targetDistance = offset.length();\n\n\t\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\t// orthographic\n\t\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\t\tscope.enablePan = false;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}();\n\n\t\tfunction dollyOut( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscale /= dollyScale;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction dollyIn( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscale *= dollyScale;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction updateZoomParameters( x, y ) {\n\n\t\t\tif ( ! scope.zoomToCursor ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tperformCursorZoom = true;\n\n\t\t\tconst rect = scope.domElement.getBoundingClientRect();\n\t\t\tconst dx = x - rect.left;\n\t\t\tconst dy = y - rect.top;\n\t\t\tconst w = rect.width;\n\t\t\tconst h = rect.height;\n\n\t\t\tmouse.x = ( dx / w ) * 2 - 1;\n\t\t\tmouse.y = - ( dy / h ) * 2 + 1;\n\n\t\t\tdollyDirection.set( mouse.x, mouse.y, 1 ).unproject( scope.object ).sub( scope.object.position ).normalize();\n\n\t\t}\n\n\t\tfunction clampDistance( dist ) {\n\n\t\t\treturn Math.max( scope.minDistance, Math.min( scope.maxDistance, dist ) );\n\n\t\t}\n\n\t\t//\n\t\t// event callbacks - update the object state\n\t\t//\n\n\t\tfunction handleMouseDownRotate( event ) {\n\n\t\t\trotateStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownDolly( event ) {\n\n\t\t\tupdateZoomParameters( event.clientX, event.clientX );\n\t\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownPan( event ) {\n\n\t\t\tpanStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseMoveRotate( event ) {\n\n\t\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMoveDolly( event ) {\n\n\t\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale( dollyDelta.y ) );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale( dollyDelta.y ) );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMovePan( event ) {\n\n\t\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseWheel( event ) {\n\n\t\t\tupdateZoomParameters( event.clientX, event.clientY );\n\n\t\t\tif ( event.deltaY < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale( event.deltaY ) );\n\n\t\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale( event.deltaY ) );\n\n\t\t\t}\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleKeyDown( event ) {\n\n\t\t\tlet needsUpdate = false;\n\n\t\t\tswitch ( event.code ) {\n\n\t\t\t\tcase scope.keys.UP:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateUp( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( 0, scope.keyPanSpeed );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.BOTTOM:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateUp( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.LEFT:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateLeft( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.RIGHT:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\trotateLeft( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tscope.update();\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tfunction handleTouchStartRotate( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\trotateStart.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\trotateStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartPan( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanStart.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\tpanStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartDolly( event ) {\n\n\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\tconst dx = event.pageX - position.x;\n\t\t\tconst dy = event.pageY - position.y;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyStart.set( 0, distance );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveRotate( event ) {\n\n\t\t\tif ( pointers.length == 1 ) {\n\n\t\t\t\trotateEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\trotateEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMovePan( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\tpanEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDolly( event ) {\n\n\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\tconst dx = event.pageX - position.x;\n\t\t\tconst dy = event.pageY - position.y;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyEnd.set( 0, distance );\n\n\t\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\t\tdollyOut( dollyDelta.y );\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tconst centerX = ( event.pageX + position.x ) * 0.5;\n\t\t\tconst centerY = ( event.pageY + position.y ) * 0.5;\n\n\t\t\tupdateZoomParameters( centerX, centerY );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t\t}\n\n\t\t//\n\t\t// event handlers - FSM: listen for events and reset state\n\t\t//\n\n\t\tfunction onPointerDown( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( pointers.length === 0 ) {\n\n\t\t\t\tscope.domElement.setPointerCapture( event.pointerId );\n\n\t\t\t\tscope.domElement.addEventListener( 'pointermove', onPointerMove );\n\t\t\t\tscope.domElement.addEventListener( 'pointerup', onPointerUp );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\taddPointer( event );\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchStart( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseDown( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchMove( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseMove( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerUp( event ) {\n\n\t\t\tremovePointer( event );\n\n\t\t\tif ( pointers.length === 0 ) {\n\n\t\t\t\tscope.domElement.releasePointerCapture( event.pointerId );\n\n\t\t\t\tscope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t\t\tscope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\t\t\t}\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onMouseDown( event ) {\n\n\t\t\tlet mouseAction;\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase 0:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tmouseAction = - 1;\n\n\t\t\t}\n\n\t\t\tswitch ( mouseAction ) {\n\n\t\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.PAN:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseMove( event ) {\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseWheel( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\thandleMouseWheel( customWheelEvent( event ) );\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t}\n\n\t\tfunction customWheelEvent( event ) {\n\n\t\t\tconst mode = event.deltaMode;\n\n\t\t\t// minimal wheel event altered to meet delta-zoom demand\n\t\t\tconst newEvent = {\n\t\t\t\tclientX: event.clientX,\n\t\t\t\tclientY: event.clientY,\n\t\t\t\tdeltaY: event.deltaY,\n\t\t\t}\n\n\t\t\tswitch ( mode ) {\n\n\t\t\t\tcase 1: // LINE_MODE\n\t\t\t\t\tnewEvent.deltaY *= 16;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2: // PAGE_MODE\n\t\t\t\t\tnewEvent.deltaY *= 100;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\t// detect if event was triggered by pinching\n\t\t\tif ( event.ctrlKey && !controlActive ) {\n\n\t\t\t\tnewEvent.deltaY *= 10;\n\n\t\t\t}\n\n\t\t\treturn newEvent;\n\n\t\t}\n\n\t\tfunction interceptControlDown( event ) {\n\n\t\t\tif ( event.key === \"Control\" ) {\n\n\t\t\t\tcontrolActive = true;\n\t\t\t\t\n\t\t\t\tdocument.addEventListener('keyup', interceptControlUp, { passive: true, capture: true });\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction interceptControlUp( event ) {\n\n\t\t\tif ( event.key === \"Control\" ) {\n\n\t\t\t\tcontrolActive = false;\n\t\t\t\t\n\t\t\t\tdocument.removeEventListener('keyup', interceptControlUp, { passive: true, capture: true });\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enablePan === false ) return;\n\n\t\t\thandleKeyDown( event );\n\n\t\t}\n\n\t\tfunction onTouchStart( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( pointers.length ) {\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchMove( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onContextMenu( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t}\n\n\t\tfunction addPointer( event ) {\n\n\t\t\tpointers.push( event.pointerId );\n\n\t\t}\n\n\t\tfunction removePointer( event ) {\n\n\t\t\tdelete pointerPositions[ event.pointerId ];\n\n\t\t\tfor ( let i = 0; i < pointers.length; i ++ ) {\n\n\t\t\t\tif ( pointers[ i ] == event.pointerId ) {\n\n\t\t\t\t\tpointers.splice( i, 1 );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction trackPointer( event ) {\n\n\t\t\tlet position = pointerPositions[ event.pointerId ];\n\n\t\t\tif ( position === undefined ) {\n\n\t\t\t\tposition = new Vector2();\n\t\t\t\tpointerPositions[ event.pointerId ] = position;\n\n\t\t\t}\n\n\t\t\tposition.set( event.pageX, event.pageY );\n\n\t\t}\n\n\t\tfunction getSecondPointerPosition( event ) {\n\n\t\t\tconst pointerId = ( event.pointerId === pointers[ 0 ] ) ? pointers[ 1 ] : pointers[ 0 ];\n\n\t\t\treturn pointerPositions[ pointerId ];\n\n\t\t}\n\n\t\t//\n\n\t\tscope.domElement.addEventListener( 'contextmenu', onContextMenu );\n\n\t\tscope.domElement.addEventListener( 'pointerdown', onPointerDown );\n\t\tscope.domElement.addEventListener( 'pointercancel', onPointerUp );\n\t\tscope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } );\n\n\t\tdocument.addEventListener( 'keydown', interceptControlDown, { passive: true, capture: true } );\n\n\t\t// force an update at start\n\n\t\tthis.update();\n\n\t}\n\n}\n\nexport { OrbitControls };","import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent, CSSProperties } from 'react';\nimport * as THREE from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\nimport styles from './styles.module.css';\nimport type { GlitchComponentProps } from './types';\n\nconst BASE_LATTICE_SPAN = 24;\nconst DEFAULT_CAMERA_POSITION = new THREE.Vector3(20, 20, 20);\nconst DEFAULT_CAMERA_TARGET = new THREE.Vector3(0, 0, 0);\nconst RESET_DELAY_MS = 5000;\nconst SCENE_BACKGROUND = '#f2f0ea';\n\ninterface ComponentParams {\n gridSize?: number;\n majorRadius?: number;\n minorRadius?: number;\n}\n\ninterface FrameMetrics {\n layout: 'landscape' | 'portrait';\n width: number;\n height: number;\n}\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\n\nconst getParamNumber = (value: unknown, fallback: number, min: number, max: number, step = 1) => {\n if (typeof value !== 'number' || Number.isNaN(value)) return fallback;\n const stepped = Math.round(value / step) * step;\n return clamp(stepped, min, max);\n};\n\nfunction setupLights(targetScene: THREE.Scene) {\n const ambientLight = new THREE.AmbientLight(0xffffff, 0.65);\n targetScene.add(ambientLight);\n\n const directionalLight = new THREE.DirectionalLight(0xffffff, 1.1);\n directionalLight.position.set(20, 50, 20);\n directionalLight.castShadow = true;\n directionalLight.shadow.mapSize.width = 2048;\n directionalLight.shadow.mapSize.height = 2048;\n targetScene.add(directionalLight);\n\n const coolLight = new THREE.PointLight(0x3b82f6, 1.1, 50);\n coolLight.position.set(-10, 10, -10);\n targetScene.add(coolLight);\n\n const warmLight = new THREE.PointLight(0xff7a59, 0.9, 50);\n warmLight.position.set(10, -10, 10);\n targetScene.add(warmLight);\n}\n\nfunction disposeMaterial(material: THREE.Material | THREE.Material[]) {\n if (Array.isArray(material)) {\n material.forEach((item) => item.dispose());\n return;\n }\n\n material.dispose();\n}\n\nfunction disposeScene(scene: THREE.Scene) {\n scene.traverse((object) => {\n const mesh = object as THREE.Object3D & {\n geometry?: THREE.BufferGeometry;\n material?: THREE.Material | THREE.Material[];\n };\n\n if (mesh.geometry) {\n mesh.geometry.dispose();\n }\n\n if (mesh.material) {\n disposeMaterial(mesh.material);\n }\n });\n}\n\nexport default function Component({\n config,\n onComplete,\n onProgress,\n theme,\n className\n}: GlitchComponentProps) {\n const params = (config.params ?? {}) as ComponentParams;\n const gridSize = getParamNumber(params.gridSize, 24, 12, 80, 1);\n const majorRadius = getParamNumber(params.majorRadius, 8, 4, 10, 0.5);\n const minorRadius = getParamNumber(params.minorRadius, 3, 1, 5, 0.25);\n\n const [resolution, setResolution] = useState(gridSize);\n const [frame, setFrame] = useState({\n layout: 'landscape',\n width: 0,\n height: 0\n });\n\n const wrapperRef = useRef(null);\n const canvasContainerRef = useRef(null);\n const completedRef = useRef(false);\n\n useEffect(() => {\n const wrapperNode = wrapperRef.current;\n if (!wrapperNode) return;\n\n const updateFrame = () => {\n const availableWidth = wrapperNode.clientWidth;\n const availableHeight = wrapperNode.clientHeight;\n\n if (!availableWidth || !availableHeight) return;\n\n const layout = availableWidth >= availableHeight ? 'landscape' : 'portrait';\n let width = availableWidth;\n let height = availableHeight;\n\n if (layout === 'landscape') {\n height = Math.min(availableHeight, availableWidth * (9 / 16));\n width = height * (16 / 9);\n } else {\n width = Math.min(availableWidth, availableHeight / 2);\n height = width * 2;\n }\n\n setFrame({\n layout,\n width,\n height\n });\n };\n\n const resizeObserver = new ResizeObserver(updateFrame);\n resizeObserver.observe(wrapperNode);\n updateFrame();\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n setResolution(gridSize);\n completedRef.current = false;\n }, [config.id, gridSize, majorRadius, minorRadius]);\n\n const latticeSpan = useMemo(\n () => Math.max(BASE_LATTICE_SPAN, (majorRadius + minorRadius + 1.5) * 2),\n [majorRadius, minorRadius]\n );\n const voxelSize = useMemo(() => latticeSpan / resolution, [latticeSpan, resolution]);\n\n useEffect(() => {\n onProgress?.(resolution === gridSize ? 0 : 100);\n }, [gridSize, onProgress, resolution]);\n\n useEffect(() => {\n if (resolution === gridSize || completedRef.current) return;\n\n completedRef.current = true;\n onComplete({\n success: true,\n score: 100,\n data: {\n configId: config.id,\n completedAt: new Date().toISOString(),\n params: {\n gridSize: resolution,\n majorRadius,\n minorRadius\n }\n }\n });\n }, [config.id, gridSize, majorRadius, minorRadius, onComplete, resolution]);\n\n useEffect(() => {\n const mountNode = canvasContainerRef.current;\n if (!mountNode) return;\n\n const sceneContinuous = new THREE.Scene();\n const sceneDiscrete = new THREE.Scene();\n const backgroundColor = new THREE.Color(SCENE_BACKGROUND);\n\n sceneContinuous.background = backgroundColor;\n sceneContinuous.fog = new THREE.FogExp2(SCENE_BACKGROUND, 0.02);\n sceneDiscrete.background = backgroundColor;\n sceneDiscrete.fog = new THREE.FogExp2(SCENE_BACKGROUND, 0.02);\n\n setupLights(sceneContinuous);\n setupLights(sceneDiscrete);\n\n const camera = new THREE.PerspectiveCamera(45, 1, 0.1, 1000);\n camera.position.copy(DEFAULT_CAMERA_POSITION);\n\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = THREE.PCFSoftShadowMap;\n renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\n renderer.setScissorTest(true);\n mountNode.appendChild(renderer.domElement);\n\n const controls = new OrbitControls(camera, renderer.domElement);\n controls.enableDamping = true;\n controls.dampingFactor = 0.05;\n controls.minDistance = 5;\n controls.maxDistance = 100;\n controls.target.copy(DEFAULT_CAMERA_TARGET);\n\n const torusGeometry = new THREE.TorusGeometry(majorRadius, minorRadius, 64, 128);\n const torusMaterial = new THREE.MeshStandardMaterial({\n color: 0x3b82f6,\n roughness: 0.22,\n metalness: 0.1\n });\n const torusMesh = new THREE.Mesh(torusGeometry, torusMaterial);\n torusMesh.castShadow = true;\n torusMesh.receiveShadow = true;\n torusMesh.rotation.x = -Math.PI / 2;\n sceneContinuous.add(torusMesh);\n\n const voxelGap = voxelSize * 0.12;\n const voxelEdge = Math.max(voxelSize - voxelGap, voxelSize * 0.2);\n const voxelGeometry = new THREE.BoxGeometry(voxelEdge, voxelEdge, voxelEdge);\n const solidMaterial = new THREE.MeshStandardMaterial({\n color: 0x3b82f6,\n roughness: 0.22,\n metalness: 0.1\n });\n const emptyMaterial = new THREE.MeshBasicMaterial({\n color: 0x000000,\n transparent: true,\n opacity: 0.08,\n wireframe: true\n });\n\n const totalVoxels = Math.pow(resolution, 3);\n const solidMesh = new THREE.InstancedMesh(voxelGeometry, solidMaterial, totalVoxels);\n const emptyMesh = new THREE.InstancedMesh(voxelGeometry, emptyMaterial, totalVoxels);\n const voxelOffset = ((resolution - 1) * voxelSize) / 2;\n const dummy = new THREE.Object3D();\n\n solidMesh.castShadow = true;\n solidMesh.receiveShadow = true;\n sceneDiscrete.add(solidMesh);\n sceneDiscrete.add(emptyMesh);\n\n let solidCount = 0;\n let emptyCount = 0;\n\n for (let x = 0; x < resolution; x += 1) {\n for (let y = 0; y < resolution; y += 1) {\n for (let z = 0; z < resolution; z += 1) {\n const px = x * voxelSize - voxelOffset;\n const py = y * voxelSize - voxelOffset;\n const pz = z * voxelSize - voxelOffset;\n const distHorizontal = Math.sqrt(px * px + pz * pz) - majorRadius;\n const distSquared = distHorizontal * distHorizontal + py * py;\n const isSolid = distSquared < minorRadius * minorRadius;\n\n dummy.position.set(px, py, pz);\n dummy.updateMatrix();\n\n if (isSolid) {\n solidMesh.setMatrixAt(solidCount, dummy.matrix);\n const color = new THREE.Color();\n const hue = 0.52 + (py / Math.max(resolution, 1)) * 0.18;\n color.setHSL(hue, 0.78, 0.52);\n solidMesh.setColorAt(solidCount, color);\n solidCount += 1;\n continue;\n }\n\n emptyMesh.setMatrixAt(emptyCount, dummy.matrix);\n emptyCount += 1;\n }\n }\n }\n\n solidMesh.count = solidCount;\n emptyMesh.count = emptyCount;\n solidMesh.instanceMatrix.needsUpdate = true;\n emptyMesh.instanceMatrix.needsUpdate = true;\n if (solidMesh.instanceColor) {\n solidMesh.instanceColor.needsUpdate = true;\n }\n\n const targetCameraPosition = DEFAULT_CAMERA_POSITION.clone();\n const targetControlsPosition = DEFAULT_CAMERA_TARGET.clone();\n let animateCamera = false;\n let resetTimer: number | null = null;\n let width = 0;\n let height = 0;\n\n const resize = () => {\n width = mountNode.clientWidth;\n height = mountNode.clientHeight;\n\n if (!width || !height) return;\n\n camera.aspect = 1;\n camera.updateProjectionMatrix();\n renderer.setSize(width, height, false);\n };\n\n const resizeObserver = new ResizeObserver(resize);\n resizeObserver.observe(mountNode);\n resize();\n\n const handleControlsStart = () => {\n animateCamera = false;\n if (resetTimer !== null) {\n window.clearTimeout(resetTimer);\n resetTimer = null;\n }\n };\n\n const handleControlsEnd = () => {\n resetTimer = window.setTimeout(() => {\n animateCamera = true;\n }, RESET_DELAY_MS);\n };\n\n controls.addEventListener('start', handleControlsStart);\n controls.addEventListener('end', handleControlsEnd);\n\n let animationFrame = 0;\n\n const renderFrame = () => {\n animationFrame = window.requestAnimationFrame(renderFrame);\n\n if (animateCamera) {\n camera.position.lerp(targetCameraPosition, 0.05);\n controls.target.lerp(targetControlsPosition, 0.05);\n\n if (\n camera.position.distanceTo(targetCameraPosition) < 0.1 &&\n controls.target.distanceTo(targetControlsPosition) < 0.1\n ) {\n animateCamera = false;\n }\n }\n\n torusMesh.rotation.z += 0.002;\n solidMesh.rotation.y += 0.002;\n emptyMesh.rotation.y += 0.002;\n emptyMesh.visible = false;\n\n controls.update();\n\n if (!width || !height) return;\n\n const isLandscape = width >= height;\n const squareSize = isLandscape ? Math.min(width / 2, height) : Math.min(width, height / 2);\n const startX = isLandscape ? (width - squareSize * 2) / 2 : (width - squareSize) / 2;\n const startY = isLandscape ? (height - squareSize) / 2 : (height - squareSize * 2) / 2;\n\n const continuousX = startX;\n const continuousY = isLandscape ? startY : startY + squareSize;\n const discreteX = isLandscape ? startX + squareSize : startX;\n const discreteY = startY;\n\n renderer.setScissor(continuousX, continuousY, squareSize, squareSize);\n renderer.setViewport(continuousX, continuousY, squareSize, squareSize);\n renderer.render(sceneContinuous, camera);\n\n renderer.setScissor(discreteX, discreteY, squareSize, squareSize);\n renderer.setViewport(discreteX, discreteY, squareSize, squareSize);\n renderer.render(sceneDiscrete, camera);\n };\n\n renderFrame();\n\n return () => {\n window.cancelAnimationFrame(animationFrame);\n if (resetTimer !== null) {\n window.clearTimeout(resetTimer);\n }\n resizeObserver.disconnect();\n controls.removeEventListener('start', handleControlsStart);\n controls.removeEventListener('end', handleControlsEnd);\n controls.dispose();\n renderer.dispose();\n disposeScene(sceneContinuous);\n disposeScene(sceneDiscrete);\n mountNode.removeChild(renderer.domElement);\n };\n }, [majorRadius, minorRadius, resolution, voxelSize]);\n\n const cssVars = useMemo(\n () =>\n ({\n '--gc-primary': theme?.primary ?? 'var(--color-primary, #45c4b0)',\n '--gc-accent': theme?.accent ?? 'var(--color-accent, #ff7a59)',\n '--gc-bg': theme?.bg ?? 'var(--color-bg, #0d1117)',\n '--gc-bg-secondary': theme?.bgSecondary ?? 'var(--color-bg-secondary, #182237)',\n '--gc-text': theme?.text ?? 'var(--color-text, #f1f4ef)',\n '--gc-text-muted': theme?.textMuted ?? 'var(--color-text-muted, #b6c0d4)',\n '--gc-border': theme?.border ?? 'var(--color-border, #34516f)'\n }) as CSSProperties,\n [theme]\n );\n\n const handleResolutionChange = (event: ChangeEvent) => {\n setResolution(Number(event.target.value));\n };\n\n return (\n
\n \n
\n
\n
Continuous
\n
Discrete
\n
\n
\n \n
\n
\n
\n );\n}\n","import Component from './Component';\nimport type { GlitchComponentMetadata } from './types';\n\nexport default Component;\n\nexport const metadata: GlitchComponentMetadata = {\n name: 'voxel_universe',\n displayName: 'Voxel Universe',\n version: '1.0.0',\n paramSchema: {\n gridSize: {\n type: 'range',\n label: 'Voxel Resolution',\n description: 'How many voxels are used per axis. Higher values make each voxel smaller.',\n default: 24,\n min: 12,\n max: 80,\n step: 1\n },\n majorRadius: {\n type: 'range',\n label: 'Major Radius',\n description: 'Overall radius of the torus shape.',\n default: 8,\n min: 4,\n max: 10,\n step: 0.5\n },\n minorRadius: {\n type: 'range',\n label: 'Minor Radius',\n description: 'Thickness of the torus ring.',\n default: 3,\n min: 1,\n max: 5,\n step: 0.25\n }\n },\n defaultParams: {\n gridSize: 24,\n majorRadius: 8,\n minorRadius: 3\n }\n};\n\nexport type {\n GlitchComponentProps,\n GlitchComponentConfig,\n GlitchComponentResult,\n GlitchTheme,\n GlitchComponentMetadata\n} from './types';\n"],"names":["REVISION","MOUSE","TOUCH","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","ConstantColorFactor","OneMinusConstantColorFactor","ConstantAlphaFactor","OneMinusConstantAlphaFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","AgXToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedInt248Type","AlphaFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","RGB_BPTC_SIGNED_Format","RGB_BPTC_UNSIGNED_Format","RED_RGTC1_Format","SIGNED_RED_RGTC1_Format","RED_GREEN_RGTC2_Format","SIGNED_RED_GREEN_RGTC2_Format","LinearEncoding","sRGBEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","NoColorSpace","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","LinearTransfer","SRGBTransfer","Rec709Primaries","P3Primaries","KeepStencilOp","AlwaysStencilFunc","NeverCompare","LessCompare","EqualCompare","LessEqualCompare","GreaterCompare","NotEqualCompare","GreaterEqualCompare","AlwaysCompare","StaticDrawUsage","GLSL3","_SRGBAFormat","WebGLCoordinateSystem","WebGPUCoordinateSystem","EventDispatcher","type","listener","listeners","listenerArray","index","event","array","i","l","_lut","DEG2RAD","RAD2DEG","generateUUID","d0","d1","d2","d3","clamp","value","min","max","euclideanModulo","n","m","lerp","x","y","isPowerOfTwo","floorPowerOfTwo","denormalize","normalize","MathUtils","Vector2","scalar","v","s","a","b","e","minVal","maxVal","length","denominator","theta","dx","dy","alpha","v1","v2","offset","attribute","center","angle","c","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","xAxis","yAxis","zAxis","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","d","f","g","h","t11","t12","t13","det","detInv","tmp","matrix4","r","tx","ty","sx","sy","rotation","cx","cy","_m3","matrix","arrayNeedsUint32","createElementNS","name","createCanvasElement","canvas","_cache","warnOnce","message","LINEAR_SRGB_TO_LINEAR_DISPLAY_P3","LINEAR_DISPLAY_P3_TO_LINEAR_SRGB","COLOR_SPACES","color","SUPPORTED_WORKING_COLOR_SPACES","ColorManagement","colorSpace","sourceColorSpace","targetColorSpace","sourceToReference","targetFromReference","SRGBToLinear","LinearToSRGB","_canvas","ImageUtils","image","context","imageData","data","_sourceId","Source","meta","isRootObject","output","url","serializeImage","_textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","source","uv","encoding","Vector4","z","w","q","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","RenderTarget","width","height","options","depth","WebGLRenderTarget","DataArrayTexture","Data3DTexture","Quaternion","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","t","x0","y0","z0","w0","x1","y1","z1","w1","cos","dir","sqrSin","sin","len","tDir","quaternion","euler","update","order","c1","c2","c3","s1","s2","s3","axis","halfAngle","trace","vFrom","vTo","step","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","qa","u1","sqrt1u1","sqrtu1","u2","u3","callback","Vector3","_quaternion$4","vx","vy","vz","qx","qy","qz","qw","tz","camera","ax","ay","az","bx","by","bz","planeNormal","_vector$c","normal","dz","radius","phi","sinPhiRadius","sz","u","Box3","il","_vector$b","points","size","halfSize","object","precise","box","target","point","vector","geometry","positionAttribute","_box$4","children","sphere","plane","triangle","_center","_extents","_v0$2","_v1$7","_v2$4","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","_points","_testAxis","v0","extents","j","p0","p1","p2","_box$3","_v1$6","_v2$3","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","lengthSq","delta","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","directionDistance","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","b1","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","backfaceCulling","DdN","sign","DdQxE2","DdE1xQ","QdN","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","_zero","_one","eye","up","_z","_x","_y","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","position","scale","x2","y2","z2","wx","wy","wz","_m1$2","invSX","invSY","invSZ","left","right","top","bottom","near","far","coordinateSystem","p","zInv","_matrix$1","_quaternion$3","Euler","newOrder","Layers","channel","layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","onRotationChange","onQuaternionChange","distance","parent","id","result","force","child","updateParents","updateChildren","bound","serialize","library","element","parameters","shapes","shape","uuids","animation","geometries","extractFromCache","materials","textures","images","skeletons","animations","nodes","cache","values","key","recursive","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","warnedGetUV","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","p3","uv1","uv2","uv3","v3","i0","i1","i2","d4","vc","d5","d6","vb","va","_colorKeywords","_hslA","_hslB","hue2rgb","Color","hex","style","handleAlpha","string","components","_color","hue","saturation","lightness","color1","color2","_materialId","Material","newValue","currentValue","srcPlanes","dstPlanes","MeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","normalized","start","count","index1","index2","component","Uint16BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","_id$2","_m1","_obj","_offset","_box$2","_boxMorphTargets","_vector$8","BufferGeometry","materialIndex","normalMatrix","tangent","morphAttributesPosition","morphAttribute","morphTargetsRelative","jl","attributes","indices","positions","normals","uvs","nVertices","tangents","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","groups","group","tmp2","n2","handleVertex","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","convertBufferAttribute","array2","geometry2","newAttribute","morphAttributes","morphArray","hasMorphAttributes","attributeArray","boundingSphere","boundingBox","_inverseMatrix$3","_ray$3","_sphere$6","_sphereHitAt","_vA$1","_vB$1","_vC$1","_tempA","_morphA","_uvA$1","_uvB$1","_uvC$1","_normalA","_normalB","_normalC","_intersectionPoint","_intersectionPointWorld","Mesh","material","keys","ml","morphPosition","morphInfluences","influence","raycaster","intersects","matrixWorld","rayLocalSpace","intersection","drawRange","groupMaterial","end","checkGeometryIntersection","checkIntersection","intersect","face","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","iy","ix","cloneUniforms","src","property","mergeUniforms","uniforms","merged","cloneUniformsGroups","getUnlitUniformColorSpace","renderer","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","extensions","Camera","PerspectiveCamera","fov","aspect","focalLength","vExtentSlope","fullWidth","fullHeight","view","skew","CubeCamera","renderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","cameras","scene","activeMipmapLevel","currentRenderTarget","currentActiveCubeFace","currentActiveMipmapLevel","currentXrEnabled","generateMipmaps","CubeTexture","WebGLCubeRenderTarget","texture","shader","mesh","currentMinFilter","stencil","_vector1","_vector2","_normalMatrix","Plane","constant","inverseNormalLength","line","startSign","endSign","optionalNormalMatrix","referencePoint","_sphere$5","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","WebGLAttributes","gl","capabilities","isWebGL2","buffers","createBuffer","bufferType","usage","buffer","updateBuffer","updateRange","updateRanges","range","get","remove","cached","PlaneGeometry","width_half","height_half","segment_width","segment_height","alphahash_fragment","alphahash_pars_fragment","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","batching_pars_vertex","batching_vertex","begin_vertex","beginnormal_vertex","bsdfs","iridescence_fragment","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","colorspace_fragment","colorspace_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_fragment","lights_lambert_pars_fragment","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","iridescence_pars_fragment","opaque_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","worldpos_vertex","vertex$h","fragment$h","vertex$g","fragment$g","vertex$f","fragment$f","vertex$e","fragment$e","vertex$d","fragment$d","vertex$c","fragment$c","vertex$b","fragment$b","vertex$a","fragment$a","vertex$9","fragment$9","vertex$8","fragment$8","vertex$7","fragment$7","vertex$6","fragment$6","vertex$5","fragment$5","vertex$4","fragment$4","vertex$3","fragment$3","vertex$2","fragment$2","vertex$1","fragment$1","ShaderChunk","UniformsLib","ShaderLib","_rgb","WebGLBackground","cubemaps","cubeuvmaps","state","objects","premultipliedAlpha","clearColor","clearAlpha","planeMesh","boxMesh","currentBackground","currentBackgroundVersion","currentTonemapping","render","renderList","forceClear","background","setClear","environmentBlendMode","WebGLBindingStates","maxVertexAttributes","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","forceUpdate","setup","program","updateBuffers","getBindingState","bindVertexArrayObject","needsUpdate","saveCache","wireframe","setupVertexAttributes","createVertexArrayObject","vao","deleteVertexArrayObject","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","attributesNum","programAttributes","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","disableUnusedAttributes","vertexAttribPointer","stride","integer","materialDefaultAttributeValues","programAttribute","bytesPerElement","dispose","reset","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","info","mode","setMode","renderInstances","primcount","methodName","renderMultiDraw","starts","counts","drawCount","elementCount","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","getMaxPrecision","precision","maxPrecision","drawBuffers","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","properties","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","enableLocalClipping","enabled","projectPlanes","useCache","clipIntersection","clipShadows","materialProperties","resetGlobalState","nGlobal","lGlobal","dstArray","skipTransform","nPlanes","flatSize","viewMatrix","i4","WebGLCubeMaps","mapTextureMapping","cubemap","onTextureDispose","OrthographicCamera","scaleW","scaleH","LOD_MIN","EXTRA_LOD_SIGMA","MAX_SAMPLES","_flatCamera","_clearColor","_oldTarget","_oldActiveCubeFace","_oldActiveMipmapLevel","PHI","INV_PHI","_axisDirections","PMREMGenerator","sigma","cubeUVRenderTarget","equirectangular","_getCubemapMaterial","_getEquirectMaterial","cubeSize","outputTarget","_setViewport","params","_createRenderTarget","_lodMax","_createPlanes","_getBlurShader","tmpMesh","cubeCamera","upSign","forwardSign","originalAutoClear","toneMapping","backgroundMaterial","backgroundBox","useSolidColor","col","isCubeTexture","autoClear","poleAxis","lodIn","lodOut","pingPongRenderTarget","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","samples","weights","sum","weight","outputSize","lodMax","lodPlanes","sizeLods","sigmas","lod","totalLods","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","faceIndex","coordinates","fill","_getCommonVertexShader","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","isEquirectMap","isCubeMap","isCubeTextureComplete","cubemapUV","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","updateWireframeAttribute","geometryIndex","geometryPosition","version","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","setIndex","WebGLInfo","memory","instanceCount","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","morphTextures","morph","workInfluences","objectInfluences","morphTargetsCount","entry","disposeTexture","hasMorphPosition","hasMorphNormals","hasMorphColors","morphTargets","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","morphInfluencesSum","morphBaseInfluence","influences","WebGLObjects","updateMap","buffergeometry","onInstancedMeshDispose","skeleton","instancedMesh","DepthTexture","emptyTexture","emptyShadowTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","setValueV1f","setValueV2f","setValueV3f","setValueV4f","setValueM2","elements","setValueM3","setValueM4","setValueV1i","setValueV2i","setValueV3i","setValueV4i","setValueV1ui","setValueV2ui","setValueV3ui","setValueV4ui","setValueT1","unit","emptyTexture2D","setValueT3D1","setValueT6","setValueT2DArray1","getSingularSetter","setValueV1fArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","getPureArraySetter","SingleUniform","activeInfo","addr","PureArrayUniform","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","match","matchEnd","idIsIndex","subscript","next","WebGLUniforms","WebGLShader","COMPLETION_STATUS_KHR","programIdCount","handleSource","errorLine","lines","lines2","from","to","getEncodingComponents","workingPrimaries","encodingPrimaries","gamutMapping","getShaderErrors","status","errors","errorMatches","getTexelEncodingFunction","functionName","getToneMappingFunction","toneMappingName","generateExtensions","filterEmptyLine","generateVertexExtensions","generateDefines","defines","chunks","fetchAttributeLocations","locationSize","replaceLightNums","numSpotLightCoords","replaceClippingPlaneNums","includePattern","resolveIncludes","includeReplacer","shaderChunkMap","include","newInclude","unrollLoopPattern","unrollLoops","loopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","generateEnvMapTypeDefine","envMapTypeDefine","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","generateCubeUVSize","imageHeight","maxMip","texelHeight","WebGLProgram","cacheKey","vertexShader","fragmentShader","envMapCubeUVSize","customExtensions","customVertexExtensions","customDefines","prefixVertex","prefixFragment","versionString","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","onFirstUse","self","programLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","cachedUniforms","programReady","_id$1","WebGLShaderCache","vertexShaderStage","fragmentShaderStage","materialShaders","shaderStage","set","code","stage","WebGLShaderStage","WebGLPrograms","clipping","_programLayers","_customShaders","programs","IS_WEBGL2","SUPPORTS_VERTEX_TEXTURES","shaderIDs","getChannel","getParameters","lights","shadows","fog","environment","envMap","envMapCubeUVHeight","shaderID","morphTextureStride","customVertexShaderID","customFragmentShaderID","IS_INSTANCEDMESH","IS_BATCHEDMESH","HAS_MAP","HAS_MATCAP","HAS_ENVMAP","HAS_AOMAP","HAS_LIGHTMAP","HAS_BUMPMAP","HAS_NORMALMAP","HAS_DISPLACEMENTMAP","HAS_EMISSIVEMAP","HAS_METALNESSMAP","HAS_ROUGHNESSMAP","HAS_ANISOTROPY","HAS_CLEARCOAT","HAS_IRIDESCENCE","HAS_SHEEN","HAS_TRANSMISSION","HAS_ANISOTROPYMAP","HAS_CLEARCOATMAP","HAS_CLEARCOAT_NORMALMAP","HAS_CLEARCOAT_ROUGHNESSMAP","HAS_IRIDESCENCEMAP","HAS_IRIDESCENCE_THICKNESSMAP","HAS_SHEEN_COLORMAP","HAS_SHEEN_ROUGHNESSMAP","HAS_SPECULARMAP","HAS_SPECULAR_COLORMAP","HAS_SPECULAR_INTENSITYMAP","HAS_TRANSMISSIONMAP","HAS_THICKNESSMAP","HAS_GRADIENTMAP","HAS_ALPHAMAP","HAS_ALPHATEST","HAS_ALPHAHASH","HAS_EXTENSIONS","HAS_ATTRIBUTE_UV1","HAS_ATTRIBUTE_UV2","HAS_ATTRIBUTE_UV3","getProgramCacheKey","getProgramCacheKeyParameters","getProgramCacheKeyBooleans","getUniforms","acquireProgram","pl","preexistingProgram","releaseProgram","releaseShaderCache","WebGLProperties","map","painterSortStable","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transmissive","transparent","init","getNextRenderItem","groupOrder","renderItem","push","unshift","sort","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","renderCallDepth","listArray","list","UniformsCache","light","ShadowUniformsCache","nextVersion","shadowCastingAndTexturingLightsFirst","lightA","lightB","WebGLLights","shadowCache","vector3","matrix42","useLegacyLights","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","numSpotMaps","numSpotShadowsWithMaps","numLightProbes","scaleFactor","intensity","shadowMap","shadow","shadowUniforms","hash","setupView","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","setupLightsView","WebGLRenderStates","renderStates","renderStateArray","renderState","MeshDepthMaterial","MeshDistanceMaterial","vertex","fragment","WebGLShadowMap","_renderer","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","shadowSide","shadowMaterialVertical","shadowMaterialHorizontal","fullScreenTri","fullScreenMesh","_previousType","activeCubeFace","_state","toVSM","fromVSM","shadowFrameExtents","pars","viewportCount","vp","viewport","renderObject","VSMPass","getDepthMaterial","customMaterial","keyA","keyB","materialsForVariant","cachedMaterial","onMaterialDispose","shadowCamera","k","kl","depthMaterial","uuid","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthTest","enable","disable","depthMask","depthFunc","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","stencilFail","stencilZFail","stencilZPass","colorBuffer","depthBuffer","stencilBuffer","uboBindings","uboProgramMap","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentBlendColor","currentBlendAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","dimensions","emptyTextures","setFlipSided","setCullFace","setBlending","bindFramebuffer","framebuffer","useProgram","equationToGL","factorToGL","blending","blendEquation","blendSrc","blendDst","blendEquationAlpha","blendSrcAlpha","blendDstAlpha","blendColor","blendAlpha","setMaterial","frontFaceCW","flipSided","stencilWrite","setPolygonOffset","cullFace","setLineWidth","polygonOffset","factor","setScissorTest","scissorTest","activeTexture","webglSlot","bindTexture","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","error","compressedTexImage3D","texSubImage2D","texSubImage3D","compressedTexSubImage2D","compressedTexSubImage3D","texStorage2D","texStorage3D","texImage2D","texImage3D","scissor","updateUBOMapping","uniformsGroup","blockIndex","uniformBlockBinding","WebGLTextures","_gl","utils","multisampledRTTExt","supportsInvalidateFramebuffer","_videoTextures","_sources","useOffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","floor","isPowerOfTwo$1","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","getInternalFormat","internalFormatName","glFormat","glType","forceLinearTransfer","internalFormat","transfer","getMipLevels","filterFallback","deallocateTexture","onRenderTargetDispose","deallocateRenderTarget","textureProperties","webglTextures","deleteTexture","renderTargetProperties","level","attachmentProperties","textureUnits","resetTextureUnits","allocateTextureUnit","textureUnit","getTextureCacheKey","setTexture2D","slot","updateVideoTexture","uploadTexture","setTexture2DArray","setTexture3D","setTextureCube","uploadCubeTexture","wrappingToGL","filterToGL","compareToGL","setTextureParameters","textureType","initTexture","forceUpload","textureCacheKey","sourceProperties","texturePrimaries","unpackConversion","verifyColorSpace","glInternalFormat","mipmap","mipmaps","useTexStorage","allocateMemory","levels","isCompressed","isDataTexture","cubeImage","mipmapImage","setupFrameBufferTexture","attachment","textureTarget","useMultisampledRTT","getRenderTargetSamples","setupRenderBufferStorage","renderbuffer","isMultisample","depthTexture","setupDepthTexture","webglDepthTexture","setupDepthRenderbuffer","isCube","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","glTextureType","updateRenderTargetMipmap","updateMultisampleRenderTarget","mask","invalidationArray","depthStyle","ignoreDepthValues","WebGLUtils","convert","ArrayCamera","Group","_moveEvent","WebXRController","inputSource","hand","inputjoint","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","jointPose","joint","indexTip","thumbTip","distanceToPinch","threshold","WebXRManager","session","framebufferScaleFactor","referenceSpaceType","foveation","customReferenceSpace","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","initialRenderTarget","newRenderTarget","controllers","controllerInputSources","currentSize","currentPixelRatio","cameraL","cameraR","cameraXR","_currentDepthNear","_currentDepthFar","controller","onSessionEvent","controllerIndex","onSessionEnd","onInputSourcesChange","space","layerInit","depthFormat","depthType","glDepthFormat","projectionlayerInit","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","updateUserCamera","onAnimationFrameCallback","views","cameraXRNeedsUpdate","glSubImage","WebGLMaterials","refreshTransformUniform","refreshFogUniforms","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","refreshUniformsCommon","refreshUniformsToon","refreshUniformsPhong","refreshUniformsStandard","refreshUniformsPhysical","refreshUniformsMatcap","refreshUniformsDistance","refreshUniformsLine","refreshUniformsDash","refreshUniformsPoints","refreshUniformsSprites","WebGLUniformsGroups","updateList","allocatedBindingPoints","maxBindingPoints","bind","webglProgram","prepareUniformsGroup","onUniformsGroupsDispose","updateBufferData","bindingPointIndex","allocateBindingPointIndex","uniformArray","hasUniformChanged","arrayOffset","getUniformSize","indexArray","indexString","cachedObject","chunkSize","chunkOffsetUniform","chunkOffset","WebGLRenderer","antialias","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","_alpha","uintClearColor","intClearColor","currentRenderList","currentRenderState","renderListStack","renderStateStack","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_currentClearColor","_currentClearAlpha","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","getTargetPixelRatio","getContext","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","onContextCreationError","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","uniformsGroups","initGLContext","xr","updateStyle","boolean","method","bits","isIntegerFormat","targetFormat","targetType","isUnsignedType","onXRSessionStart","onXRSessionEnd","infoAutoReset","shadowMapEnabled","shadowMapAutoUpdate","shadowMapNeedsUpdate","shadowMapType","deallocateMaterial","releaseMaterialProgramReferences","setProgram","rangeFactor","drawStart","drawEnd","lineWidth","maxInstanceCount","prepareMaterial","getProgram","targetScene","material2","resolve","checkMaterialsReady","projectObject","camera2","renderScene","sortObjects","opaqueObjects","transmissiveObjects","transparentObjects","renderTransmissionPass","renderObjects","currentToneMapping","renderTargetNeedsUpdate","currentSide","overrideMaterial","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","materialNeedsLights","getUniformList","progUniforms","vertexAlphas","vertexTangents","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","markUniformsLightsNeedsUpdate","defaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","__webglFramebuffer","layer","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","levelScale","srcTexture","dstTexture","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","WebGL1Renderer","FogExp2","density","Scene","InstancedBufferAttribute","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_box3","_identity","_mesh$1","_sphere$3","InstancedMesh","raycastTimes","instanceId","TorusGeometry","tube","radialSegments","tubularSegments","arc","MeshStandardMaterial","Light","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","shadowMatrix","viewportIndex","_lightPositionWorld","_lookTarget","PointLightShadow","PointLight","decay","power","DirectionalLightShadow","DirectionalLight","AmbientLight","Spherical","other","_changeEvent","_startEvent","_endEvent","_ray","_plane","TILT_LIMIT","OrbitControls","domElement","spherical","onKeyDown","STATE","quat","quatInverse","lastPosition","lastQuaternion","lastTargetPosition","twoPI","deltaTime","rotateLeft","getAutoRotationAngle","sphericalDelta","panOffset","performCursorZoom","clampDistance","zoomChanged","newRadius","prevRadius","radiusDelta","dollyDirection","mouseBefore","mouse","mouseAfter","EPS","onContextMenu","onPointerDown","onPointerUp","onMouseWheel","onPointerMove","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","pointers","pointerPositions","controlActive","getZoomScale","normalizedDelta","rotateUp","panLeft","objectMatrix","panUp","pan","deltaX","deltaY","targetDistance","dollyOut","dollyScale","dollyIn","updateZoomParameters","rect","dist","handleMouseDownRotate","handleMouseDownDolly","handleMouseDownPan","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","handleMouseWheel","handleKeyDown","handleTouchStartRotate","getSecondPointerPosition","handleTouchStartPan","handleTouchStartDolly","handleTouchStartDollyPan","handleTouchStartDollyRotate","handleTouchMoveRotate","handleTouchMovePan","handleTouchMoveDolly","centerX","centerY","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","addPointer","onTouchStart","onMouseDown","onTouchMove","onMouseMove","removePointer","mouseAction","customWheelEvent","newEvent","interceptControlDown","interceptControlUp","trackPointer","pointerId","BASE_LATTICE_SPAN","DEFAULT_CAMERA_POSITION","THREE.Vector3","DEFAULT_CAMERA_TARGET","RESET_DELAY_MS","SCENE_BACKGROUND","getParamNumber","fallback","stepped","ambientLight","THREE.AmbientLight","directionalLight","THREE.DirectionalLight","coolLight","THREE.PointLight","warmLight","disposeMaterial","item","disposeScene","Component","config","onComplete","onProgress","theme","className","gridSize","majorRadius","minorRadius","resolution","setResolution","useState","setFrame","wrapperRef","useRef","canvasContainerRef","completedRef","useEffect","wrapperNode","updateFrame","availableWidth","availableHeight","layout","resizeObserver","latticeSpan","useMemo","voxelSize","mountNode","sceneContinuous","THREE.Scene","sceneDiscrete","backgroundColor","THREE.Color","THREE.FogExp2","THREE.PerspectiveCamera","THREE.WebGLRenderer","THREE.PCFSoftShadowMap","controls","torusGeometry","THREE.TorusGeometry","torusMaterial","THREE.MeshStandardMaterial","torusMesh","THREE.Mesh","voxelGap","voxelEdge","voxelGeometry","THREE.BoxGeometry","solidMaterial","emptyMaterial","THREE.MeshBasicMaterial","totalVoxels","solidMesh","THREE.InstancedMesh","emptyMesh","voxelOffset","dummy","THREE.Object3D","solidCount","emptyCount","px","py","pz","distHorizontal","isSolid","targetCameraPosition","targetControlsPosition","animateCamera","resetTimer","resize","handleControlsStart","handleControlsEnd","animationFrame","renderFrame","isLandscape","squareSize","startX","startY","continuousX","continuousY","discreteX","discreteY","cssVars","handleResolutionChange","styles","jsxs","jsx","metadata"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE3BC,KAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEhCC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAExBC,KAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEvBC,KAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,SAEtBC,KAAuB;AAAA;AAAA,SAEvBC,KAA4B;AAAA;AAAA;AAAA;AAAA,SAE5BC,KAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE1BC,KAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAErBC,KAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEfC,KAAoB;AAAA;AAAA,SAEpBC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAExBC,KAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE7BC,KAAwB;AAAA;AAAA;AAAA;AAAA,SAExBC,KAA6B;AAAA;AAAA,SAE7BC,KAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEpBC,KAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAErBC,KAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE1BC,KAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAErBC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oCAExBC,KAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEvBC,KAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEvBC,KAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAErBC,KAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEhBC,KAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE1BC,KAAkC;AAAA;AAAA,SAElCC,KAAiC;AAAA;AAAA;AAAA;AAAA,SAEjCC,KAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE1BC,KAA4B;AAAA;AAAA;AAAA;AAAA;AAAA,SAE5BC,KAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDAElBC,KAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEVC,KAA+B;AAAA;AAAA,SAE/BC,KAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+CAEjBC,KAAqB;AAAA;AAAA,SAErBC,KAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE1BC,KAAwB;AAAA;AAAA;AAAA;AAAA,SAExBC,KAA6B;AAAA;AAAA,SAE7BC,KAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE1BC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAExBC,KAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEnBC,KAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAE3BC,KAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,SAElBC,KAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEvBC,KAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAElBC,KAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEpBC,KAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEvBC,KAA4B;AAAA;AAAA,SAE5BC,KAAuB;AAAA;AAAA,SAEvBC,KAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yDAE5BC,KAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAExBC,KAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAE7BC,KAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEnBC,KAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEjBC,KAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAEZC,KAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEtB,MAAMC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEXC,KAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEbC,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/public/lectures/rethinking-econ-ep1.json b/public/lectures/rethinking-econ-ep1.json new file mode 100644 index 0000000..347646d --- /dev/null +++ b/public/lectures/rethinking-econ-ep1.json @@ -0,0 +1,309 @@ +{ + "id": "rethinking-econ-ep1", + "title": "Why economics feels fake, even when it's working", + "version": "0.4.2", + "durationSec": 24, + "segments": [ + { + "id": "seg-1", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 0, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1501004318641-b39e6451bec6?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-2", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 4, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1465146344425-f00d5f5c8f07?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-3", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 8, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1490750967868-88aa4486c946?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-4", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 12, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1493246507139-91e8fad9978e?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-5", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 16, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1520607162513-77705c0f0d4a?auto=format&fit=crop&w=800&q=80" + }, + { + "id": "seg-6", + "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", + "startTimeSec": 20, + "durationSec": 4, + "poster": "https://images.unsplash.com/photo-1529156069898-49953e39b3ac?auto=format&fit=crop&w=800&q=80" + } + ], + "slides": [ + { + "id": "slide-01-square-yellow", + "startTimeSec": 0, + "endTimeSec": 3.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-01-a", + "score": 0.86, + "componentKey": "SquareYellow", + "authorName": "Amina", + "orientation": "any", + "props": { + "header": "GROWTH LOOKS FINE", + "imageSrc": "https://images.unsplash.com/photo-1520607162513-77705c0f0d4a?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "Crowd moving through an urban square" + } + }, + { + "id": "slide-01-b", + "score": 0.62, + "componentKey": "SquareYellow", + "authorName": "Jonas", + "orientation": "any", + "props": { + "header": "LIFE FEELS TIGHT", + "imageSrc": "https://images.unsplash.com/photo-1529156069898-49953e39b3ac?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "Blurred commuters moving through a city crowd" + } + } + ] + }, + { + "id": "slide-02-fullscreen-split", + "startTimeSec": 3.2, + "endTimeSec": 4.8, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-02-a", + "score": 0.88, + "componentKey": "FullscreenSplit", + "authorName": "Editor Bot", + "orientation": "any", + "props": { + "eyebrow": "Seam mask", + "title": "Fullscreen hides the stitch.", + "body": "The talk keeps moving underneath.", + "imageSrc": "https://images.unsplash.com/photo-1552664730-d307ca884978?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "People collaborating around a table", + "imagePosition": "left" + } + } + ] + }, + { + "id": "slide-03-equation-focus", + "startTimeSec": 4.8, + "endTimeSec": 7.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-03-a", + "score": 0.82, + "componentKey": "EquationFocus", + "authorName": "Mira", + "latexString": "\\bar{x} = \\frac{1}{N}\\sum_{i=0}^{N} x_i", + "orientation": "any", + "props": { + "eyebrow": "Equation focus", + "title": "Definition of the mean", + "annotation": "Add values. Divide by count." + } + } + ] + }, + { + "id": "slide-04-quote-image", + "startTimeSec": 7.2, + "endTimeSec": 8.8, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-04-a", + "score": 0.8, + "componentKey": "QuoteImage", + "authorName": "Luca", + "orientation": "any", + "props": { + "eyebrow": "Narrative framing", + "quote": "People live inside stress, not averages.", + "attribution": "Draft note", + "imageSrc": "https://images.unsplash.com/photo-1516321497487-e288fb19713f?auto=format&fit=crop&w=1200&q=80", + "imageAlt": "Hands gesturing over a tablet", + "imagePosition": "right" + } + } + ] + }, + { + "id": "slide-05-chart-single", + "startTimeSec": 8.8, + "endTimeSec": 11.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-05-a", + "score": 0.78, + "componentKey": "ChartSingle", + "authorName": "Nora", + "orientation": "any", + "props": { + "eyebrow": "Chart single", + "title": "Three signals diverge", + "body": "Growth up. Calm down.", + "points": [ + { "label": "GDP", "value": 76, "color": "#111111" }, + { "label": "Trust", "value": 49, "color": "rgba(17,17,17,0.72)" }, + { "label": "Calm", "value": 33, "color": "rgba(17,17,17,0.48)" } + ] + } + }, + { + "id": "slide-05-b", + "score": 0.61, + "componentKey": "ChartSingle", + "authorName": "Kai", + "orientation": "any", + "props": { + "eyebrow": "Alternate framing", + "title": "Growth hides fragility", + "body": "Same chart. Sharper framing.", + "points": [ + { "label": "Output", "value": 72, "color": "#111111" }, + { "label": "Security", "value": 41, "color": "rgba(17,17,17,0.72)" }, + { "label": "Optimism", "value": 28, "color": "rgba(17,17,17,0.48)" } + ] + } + } + ] + }, + { + "id": "slide-06-process-flow", + "startTimeSec": 11.2, + "endTimeSec": 12.8, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-06-b", + "score": 0.84, + "componentKey": "GlitchComponentFrame", + "authorName": "Voxel Lab", + "orientation": "any", + "interactionMode": "interactive-3d", + "props": { + "header": "Interactive component", + "componentId": "voxel-universe", + "caption": "Rotate the voxel torus and inspect the geometry." + } + }, + { + "id": "slide-06-a", + "score": 0.79, + "componentKey": "ProcessFlow", + "authorName": "Sofia", + "orientation": "any", + "props": { + "eyebrow": "Pipeline", + "title": "How it becomes a Glitch talk", + "steps": [ + "Write the script", + "Record the talk", + "Align slide cues", + "Compare variants" + ] + } + } + ] + }, + { + "id": "slide-07-definition-card", + "startTimeSec": 12.8, + "endTimeSec": 14.4, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-07-a", + "score": 0.83, + "componentKey": "DefinitionCard", + "authorName": "Theo", + "orientation": "any", + "props": { + "eyebrow": "Definition", + "term": "CRYSTALLIZATION", + "definition": "An interactive talk becomes a fixed video.", + "example": "Same source. Cleaner final cut." + } + } + ] + }, + { + "id": "slide-08-square-video", + "startTimeSec": 14.4, + "endTimeSec": 17.2, + "displayMode": "square", + "glitchSlides": [ + { + "id": "slide-08-a", + "score": 0.88, + "componentKey": "SquareVideo", + "authorName": "Clip Forge", + "orientation": "any", + "props": { + "header": "SQUARE VIDEO TEST", + "videoSrc": "http://localhost:9000/glitch-university/assets/video/1774943368113-c61afb5d-17555904-hd_1080_1920_30fps.mp4" + } + } + ] + }, + { + "id": "slide-09-fullscreen-video", + "startTimeSec": 17.2, + "endTimeSec": 20, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-09-a", + "score": 0.9, + "componentKey": "FullscreenVideo", + "authorName": "Orbit Studio", + "orientation": "any", + "props": { + "header": "FULLSCREEN VIDEO TEST", + "videoSrc": "http://localhost:9000/glitch-university/assets/video/1774943368170-543f54fe-CGI_Animation_Of_Space.mp4", + "caption": "Fullscreen video test caption." + } + } + ] + }, + { + "id": "slide-10-fullscreen-video-center-caption", + "startTimeSec": 20, + "displayMode": "fullscreen", + "glitchSlides": [ + { + "id": "slide-10-a", + "score": 0.92, + "componentKey": "FullscreenVideoCenterCaption", + "authorName": "Orbit Studio", + "orientation": "any", + "props": { + "caption": "NO NEED TO BE DISCRETE", + "videoSrc": "http://localhost:9000/glitch-university/assets/video/1774943368170-543f54fe-CGI_Animation_Of_Space.mp4" + } + } + ] + } + ] +} diff --git a/scripts/deploy-vendor.mjs b/scripts/deploy-vendor.mjs new file mode 100644 index 0000000..e8bb908 --- /dev/null +++ b/scripts/deploy-vendor.mjs @@ -0,0 +1,96 @@ +import { copyFileSync, existsSync, mkdirSync } from "node:fs"; +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import { spawnSync } from "node:child_process"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const repoRoot = resolve(__dirname, ".."); + +const sourceDir = resolve(repoRoot, "dist/vendor"); +const sourceFiles = ["gnommoplayer.js", "gnommoplayer.css"]; + +const targets = { + editor: resolve(repoRoot, "../gnommoeditor/src/vendor/gnommoplayer"), + web: resolve(repoRoot, "../gnommoweb/src/vendor/gnommoplayer"), +}; + +function printUsage() { + console.log(`Usage: + node scripts/deploy-vendor.mjs [--skip-build] + +Examples: + node scripts/deploy-vendor.mjs editor + node scripts/deploy-vendor.mjs web + node scripts/deploy-vendor.mjs all + node scripts/deploy-vendor.mjs all --skip-build`); +} + +function ensureBuild() { + const result = spawnSync("npm", ["run", "build:lib"], { + cwd: repoRoot, + stdio: "inherit", + shell: process.platform === "win32", + }); + + if (result.status !== 0) { + process.exit(result.status ?? 1); + } +} + +function ensureArtifactsExist() { + for (const fileName of sourceFiles) { + const filePath = resolve(sourceDir, fileName); + if (!existsSync(filePath)) { + console.error(`Missing build artifact: ${filePath}`); + console.error("Run `npm run build:lib` first or omit `--skip-build`."); + process.exit(1); + } + } +} + +function deployTarget(targetName) { + const destinationDir = targets[targetName]; + + mkdirSync(destinationDir, { recursive: true }); + + for (const fileName of sourceFiles) { + copyFileSync(resolve(sourceDir, fileName), resolve(destinationDir, fileName)); + } + + console.log(`Deployed GlitchPlayer vendor bundle to ${targetName}:`); + console.log(` ${destinationDir}`); +} + +const args = process.argv.slice(2); +const shouldSkipBuild = args.includes("--skip-build"); +const filteredArgs = args.filter((arg) => arg !== "--skip-build"); +const requestedTarget = filteredArgs[0] ?? "all"; + +if (requestedTarget === "--help" || requestedTarget === "-h") { + printUsage(); + process.exit(0); +} + +const selectedTargets = + requestedTarget === "all" + ? Object.keys(targets) + : requestedTarget in targets + ? [requestedTarget] + : null; + +if (!selectedTargets) { + console.error(`Unknown deployment target: ${requestedTarget}`); + printUsage(); + process.exit(1); +} + +if (!shouldSkipBuild) { + ensureBuild(); +} + +ensureArtifactsExist(); + +for (const targetName of selectedTargets) { + deployTarget(targetName); +} diff --git a/slide-preview-integration.md b/slide-preview-integration.md new file mode 100644 index 0000000..1334ad0 --- /dev/null +++ b/slide-preview-integration.md @@ -0,0 +1,292 @@ +# Slide Preview Integration Guide + +This guide is for integrating an authoritative slide preview into another React + Vite UI, using the real `GlitchPlayer` runtime rather than a custom thumbnail or placeholder renderer. + +## Goal + +When the editor user selects a slide, the preview should be: + +- the real `GlitchPlayer` +- moved to the selected slide +- paused on that slide +- rendered with the same layout, video, timing, and slide runtime as the final presentation + +This is the correct preview surface when fidelity matters more than efficiency. + +## Use This, Not A Custom Thumbnail + +For the main preview panel: + +- use `GlitchPlayer` +- with `mode="slide-preview"` +- and `targetSlideId` + +Do not use: + +- `GlitchSlideThumbnail` +- `GlitchSlideRenderer` +- a hand-built editor preview + +Those are useful for slide lists and lightweight surfaces, but not for the authoritative preview. + +## Built Files To Consume + +If the integration agent is only allowed to fetch built artifacts from this repo, use: + +- [dist/vendor/gnommoplayer.js](/Users/jenstandstad/Projects/gnommoplayer/dist/vendor/gnommoplayer.js) +- [dist/vendor/gnommoplayer.css](/Users/jenstandstad/Projects/gnommoplayer/dist/vendor/gnommoplayer.css) + +Build them with: + +```bash +npm run build +``` + +That command now produces both the demo app build and the vendor bundle. + +## What To Import + +From `gnommoplayer.js`, the preview integration should import: + +- `GlitchPlayer` +- `defaultSlideRegistry` + +From `gnommoplayer.css`, import the player stylesheet once near the app root. + +Example: + +```tsx +import "../vendor/gnommoplayer/gnommoplayer.css"; +import { + GlitchPlayer, + defaultSlideRegistry, +} from "../vendor/gnommoplayer/gnommoplayer.js"; +``` + +## Required Data + +The preview must receive a full presentation object, not just one slide. + +That presentation should include: + +- `id` +- `title` +- `version` +- `durationSec` +- `segments` +- `slides` + +Why: + +- the player needs the full timeline +- the player needs the talking-head video segments +- the player derives the active slide from presentation timing +- the player must match the final runtime, not a simplified editor view + +## Preview Contract + +The preview panel should render the player like this: + +```tsx + +``` + +Behavior of this mode: + +- the player jumps to the targeted slide’s `startTimeSec` +- playback starts paused +- the real player UI and layout are used +- the talking-head video is still part of the runtime surface + +## Recommended Host Component + +The host app should wrap this in a dedicated preview component. + +Example: + +```tsx +import { useEffect, useState } from "react"; +import "../vendor/gnommoplayer/gnommoplayer.css"; +import { + GlitchPlayer, + defaultSlideRegistry, +} from "../vendor/gnommoplayer/gnommoplayer.js"; + +export function SlidePreviewPanel({ + presentationId, + selectedSlideId, +}: { + presentationId: string; + selectedSlideId: string | null; +}) { + const [presentation, setPresentation] = useState(null); + const [error, setError] = useState(null); + + useEffect(() => { + let cancelled = false; + + fetch(`/api/videos/${presentationId}/export`) + .then((response) => { + if (!response.ok) { + throw new Error(`Preview fetch failed: ${response.status}`); + } + + return response.json(); + }) + .then((data) => { + if (!cancelled) { + setPresentation(data); + setError(null); + } + }) + .catch((caughtError) => { + if (!cancelled) { + setError(String(caughtError)); + } + }); + + return () => { + cancelled = true; + }; + }, [presentationId]); + + if (error) { + return
Preview error: {error}
; + } + + if (!presentation || !selectedSlideId) { + return
Select a slide to preview.
; + } + + return ( +
+ +
+ ); +} +``` + +## How The Editor Should Drive It + +The editor should keep one piece of selection state: + +- `selectedSlideId` + +When the user clicks a slide in the editor: + +1. update `selectedSlideId` +2. keep the same `presentation` +3. re-render `GlitchPlayer` with the new `targetSlideId` + +That is enough for the player to move to the correct slide. + +## Important Implementation Notes + +### 1. Use The Full Presentation + +Do not try to construct a fake one-slide presentation for preview. + +That creates drift in: + +- timing +- fullscreen transitions +- video positioning +- segment masking +- variant behavior + +The preview should be the real timeline. + +### 2. It Is Fine If The Video Loads Again + +That is an acceptable tradeoff for now. + +The goal of the editor preview is correctness: + +- same player +- same slide runtime +- same layout + +Not maximum efficiency. + +### 3. Keep Thumbnails Separate + +This preview guide is only for the main preview panel. + +For slide list cards: + +- `GlitchSlideThumbnail` is still appropriate + +For the large “truth” preview: + +- use `GlitchPlayer` + +### 4. Prefer Stable Slide Ids + +The editor should pass a stable `selectedSlideId`, ideally the same id used in the exported presentation payload. + +The preview mechanism depends on exact id matching: + +```tsx +targetSlideId={selectedSlideId} +``` + +### 5. Do Not Replace The Player’s Internal Registry Logic + +Use: + +```tsx +slideRegistry={defaultSlideRegistry} +``` + +unless the host intentionally provides a superset registry. + +The preview should not invent its own runtime component resolution. + +## When To Use `GlitchSlideThumbnail` Instead + +Use `GlitchSlideThumbnail` only for: + +- slide list rows +- compact cards +- mini previews in inspector sidebars + +Do not use it as a substitute for the main preview panel. + +## Recommended Replacement Strategy + +If the current editor preview is “kind of not working,” replace it with this sequence: + +1. Keep the slide list as-is for now +2. Remove the custom preview widget +3. Add a dedicated preview panel component +4. Fetch the full exported presentation JSON +5. Render: + +```tsx + +``` + +That gives you a preview surface that is as close to final runtime as possible. + +## Short Handoff Note + +If you need the shortest possible instruction for the other agent, use this: + +Use the real player for slide preview, not the thumbnail renderer. Import `GlitchPlayer` and `defaultSlideRegistry` from `dist/vendor/gnommoplayer.js`, import `dist/vendor/gnommoplayer.css`, fetch the full presentation JSON, and render `GlitchPlayer` with `mode="slide-preview"` and `targetSlideId={selectedSlideId}`. diff --git a/slide-template-guidelines.md b/slide-template-guidelines.md new file mode 100644 index 0000000..6a73a0c --- /dev/null +++ b/slide-template-guidelines.md @@ -0,0 +1,247 @@ +# Slide Template Guidelines + +This note gives a short “when to use it” rule for each supported GlitchPlayer slide template. + +The purpose is to help: + +- human authors +- AI slide agents +- editor integrations + +pick the simplest effective template for a given explanation beat. + +## General Rule + +Slides should not repeat the script. + +A slide should do one job: + +- show a visual +- define a term +- highlight a contrast +- embed an interaction +- frame a quote +- focus attention on one equation + +If a slide is trying to do more than one of those at once, it is probably the wrong template. + +## Supported Templates + +## `SquareYellow` + +Use when: + +- one image does most of the work +- you need a short strong header +- the talking head should stay visible beside or below the slide + +Good for: + +- mood +- framing +- one clear visual metaphor + +Avoid when: + +- the idea needs more than one sentence +- the viewer needs to compare two things +- the slide is mainly about numbers or interaction + +## `FullscreenSplit` + +Use when: + +- one image and one short text block should share attention +- you want a clean fullscreen transition +- you need to conceal a segment seam under the slide + +Good for: + +- contrast +- one visual plus one claim +- scene-setting slides + +Avoid when: + +- the text starts turning into a paragraph +- the image is decorative rather than explanatory + +## `EquationFocus` + +Use when: + +- one equation is the main thing the viewer should understand +- the script is defining a formula or symbolic relationship + +Good for: + +- definitions +- identities +- simple derivation checkpoints + +Authoring rule: + +- keep the header short +- keep the title short +- use one LaTeX expression only +- annotation should explain the equation in plain language + +Avoid when: + +- you need to compare two equations +- the expression is too large or multi-step + +## `QuoteImage` + +Use when: + +- a quote is the slide +- the image is there to support emotional or contextual framing + +Good for: + +- rhetorical emphasis +- historical voice +- strong claims + +Avoid when: + +- the quote is longer than the viewer can absorb quickly +- the image is carrying a second unrelated message + +## `ChartSingle` + +Use when: + +- one compact chart tells the story +- you are comparing a few values +- the script needs one clean quantitative contrast + +Good for: + +- 3 to 5 bars +- one pattern +- one takeaway + +Authoring rule: + +- use a short header +- keep the title direct +- body is optional and should be brief +- label names should be short + +Avoid when: + +- the viewer needs to inspect lots of data +- the chart needs axes, legends, or technical notation to make sense + +## `ProcessFlow` + +Use when: + +- the script is describing a pipeline or mechanism +- the viewer needs sequence, not comparison + +Good for: + +- 3 to 5 steps +- causal flow +- product/process explanations + +Avoid when: + +- the steps are too wordy +- the process is branching or deeply conditional + +## `DefinitionCard` + +Use when: + +- the job of the slide is to define one concept +- the audience needs a crisp shared term before moving on + +Good for: + +- vocabulary +- named concepts +- framing a new abstraction + +Authoring rule: + +- header is context +- term is the anchor +- definition is plain language +- example is concrete + +Avoid when: + +- the concept needs a diagram more than text + +## `GlitchComponentFrame` + +Use when: + +- the explanation becomes clearer if the viewer can manipulate the model directly +- the slide should host a real interactive Glitch component +- the script benefits from 3D, simulation, or hands-on exploration + +Good for: + +- 3D scenes +- parameterized simulations +- interactive paradoxes +- exploratory visual models + +This template is intended for hosted Glitch components, not static images. + +Current contract: + +- `header` +- `componentId` +- `componentUrl` +- `caption` + +Current runtime model: + +- the slide embeds the component in an `iframe` +- the component is expected to be hosted independently +- if `componentUrl` is omitted, the player resolves a default path from: + - `VITE_GLITCH_COMPONENT_BASE_URL` + - the convention `glitch_${componentId.replace(/-/g, "_")}` + - and targets that component's `index.html` +- the player treats it as an interactive surface + +Guidelines: + +- use this only when interaction adds real explanatory value +- prefer a stable hosted URL or a stable `public/glitch/...` deployment path +- keep the header short +- caption should explain what the viewer should try or notice +- assume the component itself provides the deeper interaction + +Avoid when: + +- a static image would do the job +- the component is still too unstable to embed +- the interaction is not tied to the narrated idea + +## Choosing Between Static And Interactive + +Default to a static template first. + +Use `GlitchComponentFrame` only if at least one of these is true: + +- the viewer learns by manipulating parameters +- the shape, motion, or geometry matters +- the explanation is weaker as a static image +- the component can stand on its own as a small exploratory object + +If not, use: + +- `SquareYellow` +- `FullscreenSplit` +- `ChartSingle` +- `EquationFocus` +- `DefinitionCard` + +Those will usually produce a cleaner lecture. diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..687d2a5 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,113 @@ +import { useCallback, useEffect, useState } from "react"; +import { + fetchPresentationById, + getPlayerModeFromLocation, + getPresentationIdFromLocation, + getTargetSlideIdFromLocation +} from "./lib/presentationApi"; +import { + GlitchPlayer, + createSessionId, + defaultSlideRegistry +} from "./player"; +import { mockVoteApi } from "./lib/voteApi"; +import type { VoteRequest } from "./types/events"; +import type { PresentationDefinition } from "./types/lecture"; + +export default function App() { + const [presentationId] = useState(() => getPresentationIdFromLocation()); + const [playerMode] = useState(() => getPlayerModeFromLocation()); + const [targetSlideId] = useState(() => getTargetSlideIdFromLocation()); + const [presentation, setPresentation] = useState( + null + ); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + const [sessionId] = useState(() => createSessionId()); + + const handleVoteCommit = useCallback( + async (vote: VoteRequest) => { + if (!presentation) { + return; + } + + await mockVoteApi(presentation.id, vote); + }, + [presentation] + ); + + useEffect(() => { + let cancelled = false; + + fetchPresentationById(presentationId) + .then((loadedPresentation) => { + if (cancelled) { + return; + } + + setPresentation(loadedPresentation); + }) + .catch((caughtError: unknown) => { + if (cancelled) { + return; + } + + setError( + caughtError instanceof Error + ? caughtError.message + : "Could not load presentation fixture." + ); + }) + .finally(() => { + if (!cancelled) { + setLoading(false); + } + }); + + return () => { + cancelled = true; + }; + }, [presentationId]); + + if (loading) { + return ( +
+
+

Loading

+

Glitch Presentation Layer POC

+

+ Fetching presentation {presentationId} from the mock + API and warming the player shell. +

+
+
+ ); + } + + if (error || !presentation) { + return ( +
+
+

Load failure

+

Glitch Presentation Layer POC

+

{error ?? "Presentation data is unavailable."}

+
+
+ ); + } + + return ( +
+
+ +
+
+ ); +} diff --git a/src/components/EventLogPanel.tsx b/src/components/EventLogPanel.tsx new file mode 100644 index 0000000..3ca701b --- /dev/null +++ b/src/components/EventLogPanel.tsx @@ -0,0 +1,64 @@ +import type { ClientEvent, VoteRequest } from "../types/events"; + +interface EventLogPanelProps { + events: ClientEvent[]; + votes: VoteRequest[]; + sessionId: string; +} + +export function EventLogPanel({ + events, + votes, + sessionId +}: EventLogPanelProps) { + return ( +
+
+

Session

+

Runtime signals

+

{sessionId}

+
+ +
+

Recent events

+ {events.length === 0 ? ( +

+ Events will appear here as playback, slide changes, and pauses occur. +

+ ) : ( +
    + {events.map((event, index) => ( +
  • + {event.type} + {JSON.stringify(event)} +
  • + ))} +
+ )} +
+ +
+

Committed votes

+ {votes.length === 0 ? ( +

+ Resume after switching a candidate to record a vote. +

+ ) : ( +
    + {votes.map((vote) => ( +
  • + {vote.slideId} + + {vote.previousGlitchSlideId} -> {vote.selectedGlitchSlideId} + +
  • + ))} +
+ )} +
+
+ ); +} diff --git a/src/components/GlitchSlideCarousel.test.tsx b/src/components/GlitchSlideCarousel.test.tsx new file mode 100644 index 0000000..a60637a --- /dev/null +++ b/src/components/GlitchSlideCarousel.test.tsx @@ -0,0 +1,45 @@ +import { render, screen } from "@testing-library/react"; +import { GlitchSlideCarousel } from "./GlitchSlideCarousel"; +import type { GlitchSlide } from "../types/lecture"; + +const candidates: GlitchSlide[] = [ + { + id: "slide-a", + score: 0.9, + componentKey: "SquareYellow", + authorName: "Ada", + props: { + header: "A", + imageSrc: "/a.jpg", + imageAlt: "A" + } + }, + { + id: "slide-b", + score: 0.7, + componentKey: "SquareYellow", + authorName: "Ben", + props: { + header: "B", + imageSrc: "/b.jpg", + imageAlt: "B" + } + } +]; + +describe("GlitchSlideCarousel", () => { + it("shows the active candidate author in inspect mode", () => { + render( + + ); + + expect(screen.getByText("By Ben")).toBeInTheDocument(); + }); +}); diff --git a/src/components/GlitchSlideCarousel.tsx b/src/components/GlitchSlideCarousel.tsx new file mode 100644 index 0000000..855ca6e --- /dev/null +++ b/src/components/GlitchSlideCarousel.tsx @@ -0,0 +1,74 @@ +import { getBrowseAxis } from "../lib/gestureController"; +import type { GlitchSlide, Slide } from "../types/lecture"; +import type { ViewportMode } from "../types/player"; + +interface GlitchSlideCarouselProps { + candidates: GlitchSlide[]; + displayMode: Slide["displayMode"]; + activeGlitchSlide: GlitchSlide; + isInspecting: boolean; + isDragging: boolean; + viewportMode: ViewportMode; +} + +export function GlitchSlideCarousel({ + candidates, + displayMode, + activeGlitchSlide, + isInspecting, + isDragging, + viewportMode +}: GlitchSlideCarouselProps) { + if (candidates.length <= 1) { + return null; + } + + const activeIndex = candidates.findIndex( + (candidate) => candidate.id === activeGlitchSlide.id + ); + const browseAxis = getBrowseAxis(viewportMode); + + + return ( +
+ + +
+ {candidates.map((candidate, index) => ( + + {index + 1} + + ))} +
+ + {isInspecting ? ( +
+
+ {displayMode === "fullscreen" ? "Fullscreen" : "Square"} + {isDragging ? "Browsing alternates" : "Inspecting"} +
+ + {activeGlitchSlide.authorName ? ( +

By {activeGlitchSlide.authorName}

+ ) : null} + +
+ {activeGlitchSlide.id} + + {activeIndex + 1}/{candidates.length} + +
+
+ ) : null} +
+ ); +} diff --git a/src/components/GlitchSlideRenderer.test.tsx b/src/components/GlitchSlideRenderer.test.tsx new file mode 100644 index 0000000..8887e00 --- /dev/null +++ b/src/components/GlitchSlideRenderer.test.tsx @@ -0,0 +1,127 @@ +import { render, screen } from "@testing-library/react"; +import { GlitchSlideRenderer } from "./GlitchSlideRenderer"; +import { GlitchSlideThumbnail } from "./GlitchSlideThumbnail"; +import type { + Slide, + SlideRegistry, + SlideRuntimeProps +} from "../types/lecture"; + +const registry: SlideRegistry = { + EquationFocus: async () => ({ + default: function MockEquationSlide({ glitchSlideId }: SlideRuntimeProps) { + return
{glitchSlideId}
; + } + }), + SquareYellow: async () => ({ + default: function MockSquareSlide({ glitchSlideId }: SlideRuntimeProps) { + return
{glitchSlideId}
; + } + }) +}; + +describe("GlitchSlideRenderer", () => { + it("renders the viewport-compatible candidate for the requested mode", async () => { + const slide: Slide = { + id: "slide-1", + startTimeSec: 0, + displayMode: "fullscreen", + glitchSlides: [ + { + id: "slide-1-desktop", + score: 0.5, + componentKey: "EquationFocus", + props: { title: "Desktop" }, + orientation: "desktop" + }, + { + id: "slide-1-portrait", + score: 0.9, + componentKey: "EquationFocus", + props: { title: "Portrait" }, + orientation: "mobile-portrait" + } + ] + }; + + render( + + ); + + expect(await screen.findByText("slide-1-portrait")).toBeInTheDocument(); + }); + + it("respects a preferred glitch slide id when it is compatible", async () => { + const slide: Slide = { + id: "slide-2", + startTimeSec: 0, + displayMode: "fullscreen", + glitchSlides: [ + { + id: "slide-2-a", + score: 0.95, + componentKey: "EquationFocus", + props: { title: "A" }, + orientation: "desktop" + }, + { + id: "slide-2-b", + score: 0.1, + componentKey: "EquationFocus", + props: { title: "B" }, + orientation: "desktop" + } + ] + }; + + render( + + ); + + expect(await screen.findByText("slide-2-b")).toBeInTheDocument(); + }); +}); + +describe("GlitchSlideThumbnail", () => { + it("shows the square-slide header above the thumbnail surface", async () => { + const slide: Slide = { + id: "slide-3", + startTimeSec: 0, + displayMode: "square", + glitchSlides: [ + { + id: "slide-3-a", + score: 0.7, + componentKey: "SquareYellow", + props: { + header: "Mean", + imageSrc: "/mean.png", + imageAlt: "Mean" + } + } + ] + }; + + render( + + ); + + expect(screen.getByText("Mean")).toBeInTheDocument(); + expect(await screen.findByText("slide-3-a")).toBeInTheDocument(); + }); +}); diff --git a/src/components/GlitchSlideRenderer.tsx b/src/components/GlitchSlideRenderer.tsx new file mode 100644 index 0000000..9baafe7 --- /dev/null +++ b/src/components/GlitchSlideRenderer.tsx @@ -0,0 +1,74 @@ +import { LoadedGlitchSlide } from "./LoadedGlitchSlide"; +import { FallbackSlide } from "../slides/FallbackSlide"; +import { getActiveGlitchSlide, getCompatibleGlitchSlides } from "../lib/timeline"; +import type { SlideRegistry, Slide } from "../types/lecture"; +import type { ViewportMode } from "../types/player"; + +export interface GlitchSlideRendererProps { + presentationId: string; + slide: Slide; + slideRegistry: SlideRegistry; + viewportMode?: ViewportMode; + preferredGlitchSlideId?: string; + paused?: boolean; + className?: string; +} + +export function GlitchSlideRenderer({ + presentationId, + slide, + slideRegistry, + viewportMode = "desktop", + preferredGlitchSlideId, + paused = true, + className +}: GlitchSlideRendererProps) { + const compatibleGlitchSlides = getCompatibleGlitchSlides(slide, viewportMode); + const glitchSlide = getActiveGlitchSlide( + slide, + viewportMode, + preferredGlitchSlideId + ); + + if (!glitchSlide || compatibleGlitchSlides.length === 0) { + return ( +
+
+ +
+
+ ); + } + + return ( +
+
+ +
+
+ ); +} diff --git a/src/components/GlitchSlideThumbnail.tsx b/src/components/GlitchSlideThumbnail.tsx new file mode 100644 index 0000000..3d12da9 --- /dev/null +++ b/src/components/GlitchSlideThumbnail.tsx @@ -0,0 +1,64 @@ +import { GlitchSlideRenderer } from "./GlitchSlideRenderer"; +import { getActiveGlitchSlide } from "../lib/timeline"; +import type { Slide, SlideRegistry } from "../types/lecture"; +import type { ViewportMode } from "../types/player"; + +export interface GlitchSlideThumbnailProps { + presentationId: string; + slide: Slide; + slideRegistry: SlideRegistry; + viewportMode?: ViewportMode; + preferredGlitchSlideId?: string; + className?: string; + showSquareHeader?: boolean; +} + +export function GlitchSlideThumbnail({ + presentationId, + slide, + slideRegistry, + viewportMode = "desktop", + preferredGlitchSlideId, + className, + showSquareHeader = true +}: GlitchSlideThumbnailProps) { + const activeGlitchSlide = getActiveGlitchSlide( + slide, + viewportMode, + preferredGlitchSlideId + ); + const squareHeader = + showSquareHeader && + slide.displayMode === "square" && + activeGlitchSlide?.componentKey === "SquareYellow" && + typeof (activeGlitchSlide.props as { header?: unknown }).header === "string" + ? String((activeGlitchSlide.props as { header: string }).header) + : null; + + return ( +
+ {squareHeader ? ( +
{squareHeader}
+ ) : null} +
+ +
+
+ ); +} diff --git a/src/components/LecturePlayer.test.tsx b/src/components/LecturePlayer.test.tsx new file mode 100644 index 0000000..33bc9b6 --- /dev/null +++ b/src/components/LecturePlayer.test.tsx @@ -0,0 +1,328 @@ +import { fireEvent, render, screen } from "@testing-library/react"; +import { GlitchPlayer } from "./LecturePlayer"; +import type { + PresentationDefinition, + SlideRegistry, + SlideRuntimeProps +} from "../types/lecture"; + +const registry: SlideRegistry = { + SquareYellow: async () => ({ + default: function MockSlide({ glitchSlideId }: SlideRuntimeProps) { + return
{glitchSlideId}
; + } + }) +}; + +const presentationFixture: PresentationDefinition = { + id: "lecture-test", + title: "Lecture test", + version: "0.1.0", + durationSec: 4, + segments: [ + { id: "seg-1", src: "/seg-1.mp4", startTimeSec: 0, durationSec: 4 } + ], + slides: [ + { + id: "slide-1", + startTimeSec: 0, + displayMode: "fullscreen", + glitchSlides: [ + { + id: "slide-1-a", + score: 0.7, + componentKey: "SquareYellow", + props: { + header: "TEST", + imageSrc: "/test.png", + imageAlt: "Test" + } + } + ] + } + ] +}; + +const targetedPresentationFixture: PresentationDefinition = { + id: "presentation-target-test", + title: "Targeted slide preview", + version: "0.1.0", + durationSec: 6, + segments: [ + { id: "seg-1", src: "/seg-1.mp4", startTimeSec: 0, durationSec: 6 } + ], + slides: [ + { + id: "slide-1", + startTimeSec: 0, + endTimeSec: 2, + displayMode: "square", + glitchSlides: [ + { + id: "slide-1-a", + score: 0.7, + componentKey: "SquareYellow", + props: { + header: "TEST", + imageSrc: "/test.png", + imageAlt: "Test" + } + } + ] + }, + { + id: "slide-2", + startTimeSec: 2, + displayMode: "square", + glitchSlides: [ + { + id: "slide-2-a", + score: 0.9, + componentKey: "SquareYellow", + props: { + header: "TEST", + imageSrc: "/test.png", + imageAlt: "Test" + } + } + ] + } + ] +}; + +const boundaryPresentationFixture: PresentationDefinition = { + id: "presentation-boundary-test", + title: "Boundary marker test", + version: "0.1.0", + durationSec: 9.6, + segments: [ + { id: "seg-1", src: "/seg-1.mp4", startTimeSec: 0, durationSec: 9.6 } + ], + slides: [ + { + id: "slide-1", + startTimeSec: 0, + endTimeSec: 3.2, + displayMode: "square", + glitchSlides: [ + { + id: "slide-1-a", + score: 0.7, + componentKey: "SquareYellow", + props: { + header: "ONE", + imageSrc: "/one.png", + imageAlt: "One" + } + } + ] + }, + { + id: "slide-2", + startTimeSec: 3.2, + endTimeSec: 4.8, + displayMode: "fullscreen", + glitchSlides: [ + { + id: "slide-2-a", + score: 0.8, + componentKey: "SquareYellow", + props: { + header: "TWO", + imageSrc: "/two.png", + imageAlt: "Two" + } + } + ] + }, + { + id: "slide-3", + startTimeSec: 4.8, + endTimeSec: 7.2, + displayMode: "square", + glitchSlides: [ + { + id: "slide-3-a", + score: 0.9, + componentKey: "SquareYellow", + props: { + header: "THREE", + imageSrc: "/three.png", + imageAlt: "Three" + } + } + ] + } + ] +}; + +const untimedPresentationFixture: PresentationDefinition = { + id: "presentation-untimed-test", + title: "Untimed slide preview", + version: "0.1.0", + durationSec: 6, + segments: [ + { id: "seg-1", src: "/seg-1.mp4", startTimeSec: 0, durationSec: 6 } + ], + slides: [ + { + id: "slide-untimed-1", + startTimeSec: null, + displayMode: "square", + glitchSlides: [ + { + id: "slide-untimed-1-a", + score: 0.7, + componentKey: "SquareYellow", + props: { + header: "ONE", + imageSrc: "/one.png", + imageAlt: "One" + } + } + ] + }, + { + id: "slide-untimed-2", + startTimeSec: null, + displayMode: "fullscreen", + glitchSlides: [ + { + id: "slide-untimed-2-a", + score: 0.9, + componentKey: "SquareYellow", + props: { + header: "TWO", + imageSrc: "/two.png", + imageAlt: "Two" + } + } + ] + } + ] +}; + +describe("GlitchPlayer", () => { + it("renders fullscreen slide mode when the active slide requires it", async () => { + render( + + ); + + expect(await screen.findByTestId("slide-host-fullscreen")).toBeInTheDocument(); + }); + + it("opens vote overlay when tapping a fullscreen slide", async () => { + render( + + ); + + const slideHost = await screen.findByTestId("slide-host-fullscreen"); + const gestureLayer = slideHost.closest(".lecture-player__gesture-layer"); + + expect(gestureLayer).not.toBeNull(); + + fireEvent.pointerDown(gestureLayer as Element, { + pointerId: 1, + clientX: 40, + clientY: 40 + }); + fireEvent.pointerUp(gestureLayer as Element, { + pointerId: 1, + clientX: 40, + clientY: 40 + }); + + expect( + await screen.findByRole("dialog", { name: "Vote on slide" }) + ).toBeInTheDocument(); + }); + + it("can start in slide preview mode on a targeted slide", async () => { + render( + + ); + + expect(await screen.findByText("slide-2-a")).toBeInTheDocument(); + }); + + it("can start in slide preview mode on an untimed slide index", async () => { + render( + + ); + + expect(await screen.findByText("slide-untimed-2-a")).toBeInTheDocument(); + }); + + it("stays paused after timeline scrubbing ends", async () => { + render( + + ); + + const scrubber = await screen.findByLabelText("Lecture timeline"); + + fireEvent.pointerDown(scrubber, { pointerId: 1 }); + fireEvent.change(scrubber, { target: { value: "2" } }); + fireEvent.pointerUp(scrubber, { pointerId: 1 }); + + expect( + await screen.findByRole("button", { name: "Resume playback" }) + ).toBeInTheDocument(); + }); + + it("jumps to a slide when clicking its timeline marker", async () => { + render( + + ); + + fireEvent.click(await screen.findByRole("button", { name: "S2" })); + + expect(await screen.findByText("slide-2-a")).toBeInTheDocument(); + expect( + await screen.findByRole("button", { name: "Resume playback" }) + ).toBeInTheDocument(); + }); + + it("selects the later boundary slide immediately when clicking consecutive markers", async () => { + render( + + ); + + fireEvent.pointerDown(await screen.findByRole("button", { name: "S2" })); + expect(await screen.findByText("slide-2-a")).toBeInTheDocument(); + + fireEvent.pointerDown(await screen.findByRole("button", { name: "S3" })); + expect(await screen.findByText("slide-3-a")).toBeInTheDocument(); + }); +}); diff --git a/src/components/LecturePlayer.tsx b/src/components/LecturePlayer.tsx new file mode 100644 index 0000000..39e732c --- /dev/null +++ b/src/components/LecturePlayer.tsx @@ -0,0 +1,1121 @@ +import { useEffect, useRef, useState, type CSSProperties } from "react"; +import { GlitchSlideCarousel } from "./GlitchSlideCarousel"; +import { PlayResumeControl } from "./PlayResumeControl"; +import { SlideOverlayHost } from "./SlideOverlayHost"; +import { VideoSkeletonPlayer } from "./VideoSkeletonPlayer"; +import { + computeCandidateIndex, + getBrowseAxis, + hasSelectionChanged +} from "../lib/gestureController"; +import { emitClientEvent } from "../lib/eventLogger"; +import { preloadSlideModules } from "../lib/slideRegistry"; +import { + preloadVideoSegment, + preloadVideoSegments +} from "../lib/videoPreload"; +import { + clampGlobalTime, + getActiveGlitchSlide, + getActiveSegment, + getActiveSlide, + getCompatibleGlitchSlides, + getNextSegment, + getUpcomingSlides +} from "../lib/timeline"; +import { createDeviceContext } from "../lib/voteApi"; +import type { ClientEvent, VoteDirection, VoteRequest } from "../types/events"; +import type { PresentationDefinition, SlideRegistry } from "../types/lecture"; +import type { + GlitchPlayerMode, + PauseMode, + PendingVote, + ViewportMode +} from "../types/player"; + +export interface GlitchPlayerProps { + presentation: PresentationDefinition; + slideRegistry: SlideRegistry; + mode?: GlitchPlayerMode; + targetSlideId?: string; + targetSlideIndex?: number; + onEvent?: (event: ClientEvent) => void; + onVoteCommit?: (vote: VoteRequest) => Promise | void; + initialSessionId?: string; +} + +interface ScrubState { + isScrubbing: boolean; + previewTimeSec: number; + resumeWasManuallyPaused: boolean; +} + +interface InteractionState { + pointerId: number | null; + startX: number; + startY: number; + dragSpan: number; + dragOffsetPx: number; + isSettling: boolean; + resumeWasManuallyPaused: boolean; + baselineGlitchSlideId: string | null; + previewGlitchSlideId: string | null; +} + +const SETTLE_DURATION_MS = 220; +const CHROME_HIDE_DELAY_MS = 1600; + +function getOverrideKey(slideId: string, viewportMode: ViewportMode) { + return `${slideId}:${viewportMode}`; +} + +function getViewportMode(width: number, height: number): ViewportMode { + if (width <= 900) { + return height >= width ? "mobile-portrait" : "mobile-landscape"; + } + + return "desktop"; +} + +function formatClockTime(totalSeconds: number) { + const clamped = Math.max(0, Math.floor(totalSeconds)); + const minutes = Math.floor(clamped / 60); + const seconds = clamped % 60; + return `${minutes}:${seconds.toString().padStart(2, "0")}`; +} + +function getTargetSlideStartTime( + presentation: PresentationDefinition, + targetSlideId?: string, + targetSlideIndex?: number +) { + const targetSlide = getTargetSlide( + presentation, + targetSlideId, + targetSlideIndex + ); + + if (!targetSlide || targetSlide.startTimeSec == null) { + return 0; + } + + return targetSlide.startTimeSec; +} + +function getTargetSlide( + presentation: PresentationDefinition, + targetSlideId?: string, + targetSlideIndex?: number +) { + if (targetSlideId) { + return presentation.slides.find((slide) => slide.id === targetSlideId) ?? null; + } + + if ( + typeof targetSlideIndex === "number" && + targetSlideIndex >= 0 && + targetSlideIndex < presentation.slides.length + ) { + return presentation.slides[targetSlideIndex]; + } + + return null; +} + +export function GlitchPlayer({ + presentation, + slideRegistry, + mode = "playback", + targetSlideId, + targetSlideIndex, + onEvent, + onVoteCommit, + initialSessionId +}: GlitchPlayerProps) { + const lecture = presentation; + const [globalTimeSec, setGlobalTimeSec] = useState(() => + getTargetSlideStartTime(lecture, targetSlideId, targetSlideIndex) + ); + const [isManuallyPaused, setIsManuallyPaused] = useState( + mode === "slide-preview" + ); + const [sessionSlideOverrides, setSessionSlideOverrides] = useState< + Record + >({}); + const [pendingVote, setPendingVote] = useState(null); + const [isVoteOverlayVisible, setIsVoteOverlayVisible] = useState(false); + const [voteChoice, setVoteChoice] = useState(null); + const [isSubmittingVote, setIsSubmittingVote] = useState(false); + const [isDragging, setIsDragging] = useState(false); + const [isSlideMediaBlocking, setIsSlideMediaBlocking] = useState(false); + const [videoError, setVideoError] = useState(null); + const [viewportMode, setViewportMode] = useState(() => + typeof window === "undefined" || typeof document === "undefined" + ? "desktop" + : getViewportMode( + document.documentElement.clientWidth, + document.documentElement.clientHeight + ) + ); + const [sessionId] = useState( + () => initialSessionId ?? `sess-${Math.random().toString(36).slice(2, 10)}` + ); + const [scrubState, setScrubState] = useState({ + isScrubbing: false, + previewTimeSec: 0, + resumeWasManuallyPaused: false + }); + const [interactionState, setInteractionState] = useState({ + pointerId: null, + startX: 0, + startY: 0, + dragSpan: 320, + dragOffsetPx: 0, + isSettling: false, + resumeWasManuallyPaused: false, + baselineGlitchSlideId: null, + previewGlitchSlideId: null + }); + const [isChromeVisible, setIsChromeVisible] = useState(true); + + const rootRef = useRef(null); + const lastSegmentIdRef = useRef(null); + const lastSlideKeyRef = useRef(null); + const autoplayBlockedRef = useRef(false); + const settleTimerRef = useRef(null); + const chromeHideTimerRef = useRef(null); + + const activeSegment = getActiveSegment(lecture.segments, globalTimeSec); + const nextSegment = activeSegment + ? getNextSegment(lecture.segments, activeSegment.id) + : null; + const previewTargetSlide = + mode === "slide-preview" + ? getTargetSlide(lecture, targetSlideId, targetSlideIndex) + : null; + const activeSlide = + previewTargetSlide ?? + getActiveSlide(lecture.slides, globalTimeSec, lecture.durationSec); + const compatibleGlitchSlides = activeSlide + ? getCompatibleGlitchSlides(activeSlide, viewportMode) + : []; + const overrideGlitchSlideId = activeSlide + ? sessionSlideOverrides[getOverrideKey(activeSlide.id, viewportMode)] + : undefined; + const currentResolvedGlitchSlide = activeSlide + ? getActiveGlitchSlide(activeSlide, viewportMode, overrideGlitchSlideId) + : null; + const previewGlitchSlide = activeSlide + ? compatibleGlitchSlides.find( + (candidate) => candidate.id === interactionState.previewGlitchSlideId + ) ?? null + : null; + const activeGlitchSlide = previewGlitchSlide ?? currentResolvedGlitchSlide; + const pauseMode: PauseMode = isManuallyPaused + ? "full-paused" + : scrubState.isScrubbing || + isDragging || + interactionState.isSettling || + isSlideMediaBlocking + ? "soft-paused" + : "playing"; + const displayedTimeSec = scrubState.isScrubbing + ? scrubState.previewTimeSec + : globalTimeSec; + const highlightedSlide = getActiveSlide( + lecture.slides, + displayedTimeSec, + lecture.durationSec + ); + const isInspecting = + isDragging || interactionState.isSettling; + const isChromePinned = + isManuallyPaused || + scrubState.isScrubbing || + isDragging || + interactionState.isSettling; + const shouldShowScrubber = isChromePinned || isChromeVisible; + const isFullscreenSlide = activeSlide?.displayMode === "fullscreen"; + const squareSlideHeader = + activeSlide?.displayMode === "square" && + activeGlitchSlide && + (activeGlitchSlide.componentKey === "SquareYellow" || + activeGlitchSlide.componentKey === "SquareVideo") && + typeof (activeGlitchSlide.props as { header?: unknown }).header === "string" + ? (activeGlitchSlide.props as { header: string }).header + : null; + const userOverrodeCurrentSlide = Boolean( + activeSlide && sessionSlideOverrides[getOverrideKey(activeSlide.id, viewportMode)] + ); + + useEffect(() => { + const rootElement = rootRef.current; + + if (!rootElement || typeof ResizeObserver === "undefined") { + return; + } + + const observer = new ResizeObserver((entries) => { + const entry = entries[0]; + if (!entry) { + return; + } + + setViewportMode( + getViewportMode(entry.contentRect.width, entry.contentRect.height) + ); + }); + + observer.observe(rootElement); + + return () => { + observer.disconnect(); + }; + }, []); + + useEffect(() => { + const targetTimeSec = getTargetSlideStartTime( + lecture, + targetSlideId, + targetSlideIndex + ); + setGlobalTimeSec(targetTimeSec); + setIsManuallyPaused(mode === "slide-preview"); + setIsVoteOverlayVisible(false); + setVoteChoice(null); + setPendingVote(null); + setIsSlideMediaBlocking(false); + }, [lecture.id, lecture.slides, mode, targetSlideId, targetSlideIndex]); + + useEffect(() => { + setIsSlideMediaBlocking(false); + }, [activeSlide?.id, activeGlitchSlide?.id]); + + useEffect(() => { + emitClientEvent(onEvent, { + type: "lecture_loaded", + lectureId: lecture.id + }); + }, [lecture.id, onEvent]); + + useEffect(() => { + if (!activeSegment) { + return; + } + + preloadVideoSegment(activeSegment); + + if (nextSegment) { + preloadVideoSegment(nextSegment); + } + }, [activeSegment, nextSegment]); + + useEffect(() => { + preloadVideoSegments(lecture.segments.slice(0, 2)); + }, [lecture.segments]); + + useEffect(() => { + if (!activeSlide) { + return; + } + + void preloadSlideModules(slideRegistry, [activeSlide]); + + const upcomingSlides = getUpcomingSlides( + lecture.slides, + globalTimeSec, + lecture.durationSec, + 2 + ); + void preloadSlideModules(slideRegistry, upcomingSlides); + }, [activeSlide, globalTimeSec, lecture.durationSec, lecture.slides, slideRegistry]); + + useEffect(() => { + if (!activeSegment) { + lastSegmentIdRef.current = null; + return; + } + + if (lastSegmentIdRef.current !== activeSegment.id) { + lastSegmentIdRef.current = activeSegment.id; + emitClientEvent(onEvent, { + type: "segment_changed", + lectureId: lecture.id, + segmentId: activeSegment.id, + atSec: Number(globalTimeSec.toFixed(2)) + }); + } + }, [activeSegment, globalTimeSec, lecture.id, onEvent]); + + useEffect(() => { + const slideKey = + activeSlide && activeGlitchSlide + ? `${activeSlide.id}:${activeGlitchSlide.id}` + : null; + + if (!slideKey) { + lastSlideKeyRef.current = null; + return; + } + + if (lastSlideKeyRef.current !== slideKey) { + if (activeSlide && activeGlitchSlide) { + emitClientEvent(onEvent, { + type: "slide_activated", + lectureId: lecture.id, + slideId: activeSlide.id, + glitchSlideId: activeGlitchSlide.id, + atSec: Number(globalTimeSec.toFixed(2)) + }); + } + + lastSlideKeyRef.current = slideKey; + } + }, [activeGlitchSlide, activeSlide, globalTimeSec, lecture.id, onEvent]); + + useEffect(() => { + setInteractionState((currentState) => ({ + ...currentState, + dragOffsetPx: 0, + isSettling: false, + baselineGlitchSlideId: currentResolvedGlitchSlide?.id ?? null, + previewGlitchSlideId: null + })); + setIsDragging(false); + }, [activeSlide?.id]); + + useEffect(() => { + if ( + interactionState.pointerId !== null || + interactionState.isSettling || + isDragging + ) { + return; + } + + setInteractionState((currentState) => ({ + ...currentState, + baselineGlitchSlideId: currentResolvedGlitchSlide?.id ?? null, + previewGlitchSlideId: null + })); + }, [ + currentResolvedGlitchSlide?.id, + interactionState.pointerId, + interactionState.isSettling, + isDragging + ]); + + useEffect(() => { + const handleKeyDown = (event: KeyboardEvent) => { + if (event.key !== " " && event.key.toLowerCase() !== "k") { + return; + } + + const activeElement = document.activeElement as HTMLElement | null; + if ( + activeElement && + ["INPUT", "TEXTAREA", "BUTTON"].includes(activeElement.tagName) + ) { + return; + } + + event.preventDefault(); + + if (pauseMode === "playing") { + setIsManuallyPaused(true); + } else { + void handleResume(); + } + }; + + window.addEventListener("keydown", handleKeyDown); + + return () => { + window.removeEventListener("keydown", handleKeyDown); + }; + }, [pauseMode, pendingVote, activeSlide, activeGlitchSlide, globalTimeSec]); + + useEffect(() => { + return () => { + if (settleTimerRef.current !== null) { + window.clearTimeout(settleTimerRef.current); + } + if (chromeHideTimerRef.current !== null) { + window.clearTimeout(chromeHideTimerRef.current); + } + }; + }, []); + + function showChrome() { + setIsChromeVisible(true); + + if (chromeHideTimerRef.current !== null) { + window.clearTimeout(chromeHideTimerRef.current); + chromeHideTimerRef.current = null; + } + + if ( + isManuallyPaused || + scrubState.isScrubbing || + isDragging || + interactionState.isSettling + ) { + return; + } + + chromeHideTimerRef.current = window.setTimeout(() => { + setIsChromeVisible(false); + chromeHideTimerRef.current = null; + }, CHROME_HIDE_DELAY_MS); + } + + useEffect(() => { + showChrome(); + }, [isManuallyPaused, scrubState.isScrubbing, isDragging, interactionState.isSettling]); + + function updateTime(nextTime: number) { + setGlobalTimeSec(clampGlobalTime(nextTime, lecture.durationSec)); + } + + function handleScrubStart() { + showChrome(); + setIsVoteOverlayVisible(false); + setIsManuallyPaused(true); + setScrubState({ + isScrubbing: true, + previewTimeSec: globalTimeSec, + resumeWasManuallyPaused: isManuallyPaused + }); + } + + function handleScrubChange(nextValue: string) { + const nextTime = clampGlobalTime(Number(nextValue), lecture.durationSec); + setScrubState((currentState) => ({ + ...currentState, + previewTimeSec: nextTime + })); + updateTime(nextTime); + } + + function handleScrubEnd() { + setScrubState((currentState) => ({ + ...currentState, + isScrubbing: false + })); + } + + function handleMarkerJump(targetTimeSec: number) { + showChrome(); + setIsVoteOverlayVisible(false); + setIsManuallyPaused(true); + if (settleTimerRef.current !== null) { + window.clearTimeout(settleTimerRef.current); + settleTimerRef.current = null; + } + setIsDragging(false); + setScrubState((currentState) => ({ + ...currentState, + isScrubbing: false, + previewTimeSec: targetTimeSec + })); + setInteractionState((currentState) => ({ + ...currentState, + pointerId: null, + dragOffsetPx: 0, + isSettling: false, + previewGlitchSlideId: null + })); + updateTime(targetTimeSec); + } + + function resetInteractionState() { + if (settleTimerRef.current !== null) { + window.clearTimeout(settleTimerRef.current); + settleTimerRef.current = null; + } + setInteractionState((currentState) => ({ + ...currentState, + pointerId: null, + dragOffsetPx: 0, + isSettling: false, + previewGlitchSlideId: null + })); + setIsDragging(false); + } + + function settleTrack(targetOffsetPx: number, onComplete: () => void) { + if (settleTimerRef.current !== null) { + window.clearTimeout(settleTimerRef.current); + } + + setIsDragging(false); + setInteractionState((currentState) => ({ + ...currentState, + pointerId: null, + dragOffsetPx: targetOffsetPx, + isSettling: true + })); + + settleTimerRef.current = window.setTimeout(() => { + settleTimerRef.current = null; + onComplete(); + }, SETTLE_DURATION_MS); + } + + function handlePointerDown(event: React.PointerEvent) { + if (!activeSlide || !currentResolvedGlitchSlide) { + return; + } + + showChrome(); + setIsVoteOverlayVisible(false); + const bounds = event.currentTarget.getBoundingClientRect(); + if (typeof event.currentTarget.setPointerCapture === "function") { + event.currentTarget.setPointerCapture(event.pointerId); + } + const browseAxis = getBrowseAxis(viewportMode); + + setInteractionState({ + pointerId: event.pointerId, + startX: event.clientX, + startY: event.clientY, + dragSpan: + browseAxis === "horizontal" + ? Math.max(bounds.width, 240) + : Math.max(bounds.height, 240), + dragOffsetPx: 0, + isSettling: false, + resumeWasManuallyPaused: isManuallyPaused, + baselineGlitchSlideId: currentResolvedGlitchSlide.id, + previewGlitchSlideId: null + }); + } + + function handlePointerMove(event: React.PointerEvent) { + if (!activeSlide || interactionState.pointerId !== event.pointerId) { + return; + } + + const browseAxis = getBrowseAxis(viewportMode); + const deltaX = event.clientX - interactionState.startX; + const deltaY = event.clientY - interactionState.startY; + const primaryDelta = browseAxis === "horizontal" ? deltaX : deltaY; + + if (!isDragging && Math.abs(primaryDelta) < 24) { + return; + } + showChrome(); + + if (!isDragging) { + setIsDragging(true); + if (!interactionState.resumeWasManuallyPaused) { + emitClientEvent(onEvent, { + type: "soft_pause_started", + lectureId: lecture.id, + slideId: activeSlide.id, + atSec: Number(globalTimeSec.toFixed(2)) + }); + } + } + + const baselineIndex = compatibleGlitchSlides.findIndex( + (candidate) => candidate.id === interactionState.baselineGlitchSlideId + ); + const clampedPrimaryDelta = Math.min( + Math.max( + primaryDelta, + -((compatibleGlitchSlides.length - 1) - Math.max(baselineIndex, 0)) * + interactionState.dragSpan + ), + Math.max(baselineIndex, 0) * interactionState.dragSpan + ); + const nextIndex = computeCandidateIndex({ + baselineIndex: baselineIndex === -1 ? 0 : baselineIndex, + dragDistance: -clampedPrimaryDelta, + totalCandidates: compatibleGlitchSlides.length, + dragSpan: interactionState.dragSpan + }); + const nextCandidate = compatibleGlitchSlides[nextIndex]; + + if ( + nextCandidate && + nextCandidate.id !== interactionState.previewGlitchSlideId && + nextCandidate.id !== interactionState.baselineGlitchSlideId + ) { + emitClientEvent(onEvent, { + type: "glitch_slide_changed", + lectureId: lecture.id, + slideId: activeSlide.id, + from: + interactionState.previewGlitchSlideId ?? + interactionState.baselineGlitchSlideId ?? + nextCandidate.id, + to: nextCandidate.id, + atSec: Number(globalTimeSec.toFixed(2)) + }); + } + + setInteractionState((currentState) => ({ + ...currentState, + dragOffsetPx: clampedPrimaryDelta, + previewGlitchSlideId: nextCandidate?.id ?? null + })); + } + + function handlePointerEnd(pointerId: number) { + if (!activeSlide || interactionState.pointerId !== pointerId) { + resetInteractionState(); + return; + } + + const finalGlitchSlideId = + interactionState.previewGlitchSlideId ?? + interactionState.baselineGlitchSlideId ?? + currentResolvedGlitchSlide?.id ?? + null; + const baselineGlitchSlideId = + interactionState.baselineGlitchSlideId ?? currentResolvedGlitchSlide?.id ?? null; + const selectionChanged = hasSelectionChanged( + baselineGlitchSlideId, + finalGlitchSlideId + ); + + if (!isDragging) { + if (activeSlide.displayMode === "fullscreen") { + resetInteractionState(); + handleTogglePlayback(); + return; + } + + resetInteractionState(); + return; + } + + if (!selectionChanged) { + const resumeWasManuallyPaused = interactionState.resumeWasManuallyPaused; + settleTrack(0, () => { + if (!resumeWasManuallyPaused) { + emitClientEvent(onEvent, { + type: "soft_pause_ended", + lectureId: lecture.id, + slideId: activeSlide.id, + atSec: Number(globalTimeSec.toFixed(2)) + }); + } + + if (!resumeWasManuallyPaused) { + setPendingVote(null); + } + resetInteractionState(); + }); + return; + } + + if (baselineGlitchSlideId && finalGlitchSlideId) { + setSessionSlideOverrides((currentOverrides) => ({ + ...currentOverrides, + [getOverrideKey(activeSlide.id, viewportMode)]: finalGlitchSlideId + })); + + const baselineIndex = compatibleGlitchSlides.findIndex( + (candidate) => candidate.id === baselineGlitchSlideId + ); + const finalIndex = compatibleGlitchSlides.findIndex( + (candidate) => candidate.id === finalGlitchSlideId + ); + const settleOffsetPx = + baselineIndex === -1 || finalIndex === -1 + ? 0 + : (baselineIndex - finalIndex) * interactionState.dragSpan; + const resumeWasManuallyPaused = interactionState.resumeWasManuallyPaused; + + settleTrack(settleOffsetPx, () => { + if (!resumeWasManuallyPaused) { + emitClientEvent(onEvent, { + type: "soft_pause_ended", + lectureId: lecture.id, + slideId: activeSlide.id, + atSec: Number(globalTimeSec.toFixed(2)) + }); + } + + if (!resumeWasManuallyPaused) { + setPendingVote(null); + } + resetInteractionState(); + }); + } + } + + async function handleResume() { + setIsVoteOverlayVisible(false); + if (pendingVote) { + const vote: VoteRequest = { + lectureId: pendingVote.lectureId, + slideId: pendingVote.slideId, + previousGlitchSlideId: pendingVote.previousGlitchSlideId, + selectedGlitchSlideId: pendingVote.selectedGlitchSlideId, + sessionId, + timestamp: new Date().toISOString(), + deviceContext: createDeviceContext(viewportMode) + }; + + await onVoteCommit?.(vote); + emitClientEvent(onEvent, { + type: "vote_committed", + lectureId: vote.lectureId, + slideId: vote.slideId, + selectedGlitchSlideId: vote.selectedGlitchSlideId, + previousGlitchSlideId: vote.previousGlitchSlideId, + atSec: Number(globalTimeSec.toFixed(2)) + }); + setPendingVote(null); + } + + setIsManuallyPaused(false); + } + + async function handleSlideVote(voteDirection: VoteDirection) { + if (!activeSlide || !activeGlitchSlide || isSubmittingVote) { + return; + } + + setIsSubmittingVote(true); + setVoteChoice(voteDirection); + + const vote: VoteRequest = { + lectureId: lecture.id, + slideId: activeSlide.id, + previousGlitchSlideId: activeGlitchSlide.id, + selectedGlitchSlideId: activeGlitchSlide.id, + voteDirection, + sessionId, + timestamp: new Date().toISOString(), + deviceContext: createDeviceContext(viewportMode) + }; + + try { + await onVoteCommit?.(vote); + emitClientEvent(onEvent, { + type: "vote_committed", + lectureId: vote.lectureId, + slideId: vote.slideId, + selectedGlitchSlideId: vote.selectedGlitchSlideId, + previousGlitchSlideId: vote.previousGlitchSlideId, + voteDirection, + atSec: Number(globalTimeSec.toFixed(2)) + }); + } finally { + setIsSubmittingVote(false); + } + } + + function handleTogglePlayback() { + showChrome(); + + if (pauseMode === "playing") { + setIsManuallyPaused(true); + setVoteChoice(null); + setIsVoteOverlayVisible(true); + return; + } + + if (isManuallyPaused) { + void handleResume(); + } + } + + function renderVoteOverlay(displayMode: "square" | "fullscreen") { + if ( + !isVoteOverlayVisible || + !activeSlide || + !activeGlitchSlide || + activeSlide.displayMode !== displayMode + ) { + return null; + } + + return ( +
event.stopPropagation()} + > +
+

Rate This Slide

+
+ + +
+
+
+ ); + } + + function renderSlideLayer(displayMode: "square" | "fullscreen") { + if (!activeSlide || !activeGlitchSlide) { + if (displayMode === "fullscreen") { + return null; + } + + return ( +
+

No slide available

+

Enroll at glitch.university, and help make this slide!.

+
+ ); + } + + if (activeSlide.displayMode !== displayMode) { + if (displayMode === "fullscreen") { + return null; + } + + return ( +